Editing Modding Tutorials/Linking XML and C
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 31: | Line 31: | ||
===Example=== | ===Example=== | ||
− | |||
− | |||
<source lang ="xml"> | <source lang ="xml"> | ||
<!-- Generate faction base --> | <!-- Generate faction base --> | ||
Line 54: | Line 52: | ||
One benefit of this over the annotation method above (the "Classy" pattern) is that the added control and restriction of scope is increased compatibility with over mods. It's theoretically also easier to further subclass the AlienRace def by annotation. | One benefit of this over the annotation method above (the "Classy" pattern) is that the added control and restriction of scope is increased compatibility with over mods. It's theoretically also easier to further subclass the AlienRace def by annotation. | ||
+ | |||
+ | While most implementations have limited themselves to Defs, there is no known technical reason to believe this pattern can't be applied to fields directly. | ||
===Example=== | ===Example=== | ||
Line 114: | Line 114: | ||
** If there's an error in your code (like a typo in the defName, or a missing Def), it will detect that as soon as the game starts, rather than when it's trying to use it. | ** If there's an error in your code (like a typo in the defName, or a missing Def), it will detect that as soon as the game starts, rather than when it's trying to use it. | ||
− | '''Disadvantages''': | + | '''Disadvantages''': |
− | |||
− | |||
* DefOfs don't get their fields filled until after the game is done loading Defs. | * DefOfs don't get their fields filled until after the game is done loading Defs. | ||
** This means using a DefOf before it is properly initialised gets you ''null'' - which the DefOf class is supposed to prevent. | ** This means using a DefOf before it is properly initialised gets you ''null'' - which the DefOf class is supposed to prevent. | ||
Line 151: | Line 149: | ||
'''Disadvantages''': | '''Disadvantages''': | ||
* Is allowed to return null. If you're not prepared for it to return null, Bad Things Happen. | * Is allowed to return null. If you're not prepared for it to return null, Bad Things Happen. | ||
− | * Slower than a DefOf. | + | * Slower than a DefOf. |
* Prone to typos. | * Prone to typos. | ||