88from __future__ import annotations
99import typing
1010
11- from ....entity_object .conversion .converter_object import RawAPIObject
12- from ....service .conversion import internal_name_lookups
13- from ....value_object .conversion .forward_ref import ForwardRef
1411from ..aoc .civ_subprocessor import AoCCivSubprocessor
1512from .tech_subprocessor import SWGBCCTechSubprocessor
1613
14+ from .civ .modifiers import get_modifiers
15+ from .civ .starting_resources import get_starting_resources
16+
1717if typing .TYPE_CHECKING :
18- from openage . convert . entity_object . conversion . aoc . genie_civ import GenieCivilizationGroup
19- from openage . convert . entity_object .conversion .aoc .genie_unit import GenieGameEntityGroup
18+ from .... value_object . conversion . forward_ref import ForwardRef
19+ from .... entity_object .conversion .aoc .genie_civ import GenieCivilizationGroup
2020
2121
2222class SWGBCCCivSubprocessor :
@@ -42,141 +42,5 @@ def get_civ_setup(cls, civ_group: GenieCivilizationGroup) -> list[ForwardRef]:
4242
4343 return patches
4444
45- @classmethod
46- def get_modifiers (cls , civ_group : GenieCivilizationGroup ) -> list [ForwardRef ]:
47- """
48- Returns global modifiers of a civ.
49- """
50- modifiers = []
51-
52- for civ_bonus in civ_group .civ_boni .values ():
53- if civ_bonus .replaces_researchable_tech ():
54- # TODO: instant tech research modifier
55- pass
56-
57- return modifiers
58-
59- @staticmethod
60- def get_starting_resources (civ_group : GenieCivilizationGroup ) -> list [ForwardRef ]:
61- """
62- Returns the starting resources of a civ.
63- """
64- resource_amounts = []
65-
66- civ_id = civ_group .get_id ()
67- dataset = civ_group .data
68-
69- civ_lookup_dict = internal_name_lookups .get_civ_lookups (dataset .game_version )
70-
71- civ_name = civ_lookup_dict [civ_id ][0 ]
72-
73- # Find starting resource amounts
74- food_amount = civ_group .civ ["resources" ][91 ].value
75- carbon_amount = civ_group .civ ["resources" ][92 ].value
76- nova_amount = civ_group .civ ["resources" ][93 ].value
77- ore_amount = civ_group .civ ["resources" ][94 ].value
78-
79- # Find civ unique starting resources
80- tech_tree = civ_group .get_tech_tree_effects ()
81- for effect in tech_tree :
82- type_id = effect .get_type ()
83-
84- if type_id != 1 :
85- continue
86-
87- resource_id = effect ["attr_a" ].value
88- amount = effect ["attr_d" ].value
89- if resource_id == 91 :
90- food_amount += amount
91-
92- elif resource_id == 92 :
93- carbon_amount += amount
94-
95- elif resource_id == 93 :
96- nova_amount += amount
97-
98- elif resource_id == 94 :
99- ore_amount += amount
100-
101- food_ref = f"{ civ_name } .FoodStartingAmount"
102- food_raw_api_object = RawAPIObject (food_ref , "FoodStartingAmount" ,
103- dataset .nyan_api_objects )
104- food_raw_api_object .add_raw_parent ("engine.util.resource.ResourceAmount" )
105- civ_location = ForwardRef (civ_group , civ_lookup_dict [civ_group .get_id ()][0 ])
106- food_raw_api_object .set_location (civ_location )
107-
108- resource = dataset .pregen_nyan_objects ["util.resource.types.Food" ].get_nyan_object ()
109- food_raw_api_object .add_raw_member ("type" ,
110- resource ,
111- "engine.util.resource.ResourceAmount" )
112-
113- food_raw_api_object .add_raw_member ("amount" ,
114- food_amount ,
115- "engine.util.resource.ResourceAmount" )
116-
117- food_forward_ref = ForwardRef (civ_group , food_ref )
118- resource_amounts .append (food_forward_ref )
119-
120- carbon_ref = f"{ civ_name } .CarbonStartingAmount"
121- carbon_raw_api_object = RawAPIObject (carbon_ref , "CarbonStartingAmount" ,
122- dataset .nyan_api_objects )
123- carbon_raw_api_object .add_raw_parent ("engine.util.resource.ResourceAmount" )
124- civ_location = ForwardRef (civ_group , civ_lookup_dict [civ_group .get_id ()][0 ])
125- carbon_raw_api_object .set_location (civ_location )
126-
127- resource = dataset .pregen_nyan_objects ["util.resource.types.Carbon" ].get_nyan_object ()
128- carbon_raw_api_object .add_raw_member ("type" ,
129- resource ,
130- "engine.util.resource.ResourceAmount" )
131-
132- carbon_raw_api_object .add_raw_member ("amount" ,
133- carbon_amount ,
134- "engine.util.resource.ResourceAmount" )
135-
136- carbon_forward_ref = ForwardRef (civ_group , carbon_ref )
137- resource_amounts .append (carbon_forward_ref )
138-
139- nova_ref = f"{ civ_name } .NovaStartingAmount"
140- nova_raw_api_object = RawAPIObject (nova_ref , "NovaStartingAmount" ,
141- dataset .nyan_api_objects )
142- nova_raw_api_object .add_raw_parent ("engine.util.resource.ResourceAmount" )
143- civ_location = ForwardRef (civ_group , civ_lookup_dict [civ_group .get_id ()][0 ])
144- nova_raw_api_object .set_location (civ_location )
145-
146- resource = dataset .pregen_nyan_objects ["util.resource.types.Nova" ].get_nyan_object ()
147- nova_raw_api_object .add_raw_member ("type" ,
148- resource ,
149- "engine.util.resource.ResourceAmount" )
150-
151- nova_raw_api_object .add_raw_member ("amount" ,
152- nova_amount ,
153- "engine.util.resource.ResourceAmount" )
154-
155- nova_forward_ref = ForwardRef (civ_group , nova_ref )
156- resource_amounts .append (nova_forward_ref )
157-
158- ore_ref = f"{ civ_name } .OreStartingAmount"
159- ore_raw_api_object = RawAPIObject (ore_ref , "OreStartingAmount" ,
160- dataset .nyan_api_objects )
161- ore_raw_api_object .add_raw_parent ("engine.util.resource.ResourceAmount" )
162- civ_location = ForwardRef (civ_group , civ_lookup_dict [civ_group .get_id ()][0 ])
163- ore_raw_api_object .set_location (civ_location )
164-
165- resource = dataset .pregen_nyan_objects ["util.resource.types.Ore" ].get_nyan_object ()
166- ore_raw_api_object .add_raw_member ("type" ,
167- resource ,
168- "engine.util.resource.ResourceAmount" )
169-
170- ore_raw_api_object .add_raw_member ("amount" ,
171- ore_amount ,
172- "engine.util.resource.ResourceAmount" )
173-
174- ore_forward_ref = ForwardRef (civ_group , ore_ref )
175- resource_amounts .append (ore_forward_ref )
176-
177- civ_group .add_raw_api_object (food_raw_api_object )
178- civ_group .add_raw_api_object (carbon_raw_api_object )
179- civ_group .add_raw_api_object (nova_raw_api_object )
180- civ_group .add_raw_api_object (ore_raw_api_object )
181-
182- return resource_amounts
45+ get_modifiers = staticmethod (get_modifiers )
46+ get_starting_resources = staticmethod (get_starting_resources )
0 commit comments