Skip to content

Commit 759b944

Browse files
committed
convert: Use new switch gate for command branching.
1 parent 0d3cfdc commit 759b944

File tree

2 files changed

+106
-49
lines changed

2 files changed

+106
-49
lines changed

openage/convert/processor/conversion/aoc/pregen_processor.py

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,13 @@ def generate_activities(
9393
ability_parent = "engine.util.activity.node.type.Ability"
9494
xor_parent = "engine.util.activity.node.type.XORGate"
9595
xor_event_parent = "engine.util.activity.node.type.XOREventGate"
96+
xor_switch_parent = "engine.util.activity.node.type.XORSwitchGate"
9697

9798
# Condition types
9899
condition_parent = "engine.util.activity.condition.Condition"
99100
condition_queue_parent = "engine.util.activity.condition.type.CommandInQueue"
100-
condition_next_move_parent = "engine.util.activity.condition.type.NextCommandMove"
101-
condition_next_apply_parent = (
102-
"engine.util.activity.condition.type.NextCommandApplyEffect"
101+
condition_next_command_parent = (
102+
"engine.util.activity.switch_condition.type.NextCommand"
103103
)
104104

105105
# =======================================================================
@@ -277,36 +277,40 @@ def generate_activities(
277277
branch_raw_api_object = RawAPIObject(branch_ref_in_modpack,
278278
"BranchCommand", api_objects)
279279
branch_raw_api_object.set_location(unit_forward_ref)
280-
branch_raw_api_object.add_raw_parent(xor_parent)
281-
282-
condition1_forward_ref = ForwardRef(pregen_converter_group,
283-
"util.activity.types.Unit.NextCommandMove")
284-
condition2_forward_ref = ForwardRef(pregen_converter_group,
285-
"util.activity.types.Unit.NextCommandApplyEffect")
286-
branch_raw_api_object.add_raw_member("next",
287-
[condition1_forward_ref, condition2_forward_ref],
288-
xor_parent)
280+
branch_raw_api_object.add_raw_parent(xor_switch_parent)
281+
282+
switch_forward_ref = ForwardRef(pregen_converter_group,
283+
"util.activity.types.Unit.NextCommandSwitch")
284+
branch_raw_api_object.add_raw_member("switch",
285+
switch_forward_ref,
286+
xor_switch_parent)
289287
idle_forward_ref = ForwardRef(pregen_converter_group,
290288
"util.activity.types.Unit.Idle")
291289
branch_raw_api_object.add_raw_member("default",
292290
idle_forward_ref,
293-
xor_parent)
291+
xor_switch_parent)
294292

295293
pregen_converter_group.add_raw_api_object(branch_raw_api_object)
296294
pregen_nyan_objects.update({branch_ref_in_modpack: branch_raw_api_object})
297295

298-
# condition for branching to apply effect
299-
condition_ref_in_modpack = "util.activity.types.Unit.NextCommandApplyEffect"
296+
# condition for branching based on command
297+
condition_ref_in_modpack = "util.activity.types.Unit.NextCommandSwitch"
300298
condition_raw_api_object = RawAPIObject(condition_ref_in_modpack,
301-
"NextCommandApplyEffect", api_objects)
299+
"NextCommandSwitch", api_objects)
302300
condition_raw_api_object.set_location(branch_forward_ref)
303-
condition_raw_api_object.add_raw_parent(condition_next_apply_parent)
301+
condition_raw_api_object.add_raw_parent(condition_next_command_parent)
304302

305303
apply_effect_forward_ref = ForwardRef(pregen_converter_group,
306304
"util.activity.types.Unit.ApplyEffect")
305+
move_forward_ref = ForwardRef(pregen_converter_group,
306+
"util.activity.types.Unit.Move")
307+
next_nodes_lookup = {
308+
api_objects["engine.util.command.type.ApplyEffect"]: apply_effect_forward_ref,
309+
api_objects["engine.util.command.type.Move"]: move_forward_ref,
310+
}
307311
condition_raw_api_object.add_raw_member("next",
308-
apply_effect_forward_ref,
309-
condition_parent)
312+
next_nodes_lookup,
313+
condition_next_command_parent)
310314

311315
pregen_converter_group.add_raw_api_object(condition_raw_api_object)
312316
pregen_nyan_objects.update({condition_ref_in_modpack: condition_raw_api_object})
@@ -329,22 +333,6 @@ def generate_activities(
329333
pregen_converter_group.add_raw_api_object(apply_effect_raw_api_object)
330334
pregen_nyan_objects.update({apply_effect_ref_in_modpack: apply_effect_raw_api_object})
331335

332-
# condition for branching to move
333-
condition_ref_in_modpack = "util.activity.types.Unit.NextCommandMove"
334-
condition_raw_api_object = RawAPIObject(condition_ref_in_modpack,
335-
"NextCommandMove", api_objects)
336-
condition_raw_api_object.set_location(branch_forward_ref)
337-
condition_raw_api_object.add_raw_parent(condition_next_move_parent)
338-
339-
move_forward_ref = ForwardRef(pregen_converter_group,
340-
"util.activity.types.Unit.Move")
341-
condition_raw_api_object.add_raw_member("next",
342-
move_forward_ref,
343-
condition_parent)
344-
345-
pregen_converter_group.add_raw_api_object(condition_raw_api_object)
346-
pregen_nyan_objects.update({condition_ref_in_modpack: condition_raw_api_object})
347-
348336
# Move
349337
move_ref_in_modpack = "util.activity.types.Unit.Move"
350338
move_raw_api_object = RawAPIObject(move_ref_in_modpack,
@@ -394,7 +382,7 @@ def generate_activities(
394382
pregen_converter_group.add_raw_api_object(end_raw_api_object)
395383
pregen_nyan_objects.update({end_ref_in_modpack: end_raw_api_object})
396384

397-
@staticmethod
385+
@ staticmethod
398386
def generate_attributes(
399387
full_data_set: GenieObjectContainer,
400388
pregen_converter_group: ConverterObjectGroup
@@ -507,7 +495,7 @@ def generate_attributes(
507495
pregen_converter_group.add_raw_api_object(faith_abbrv_value)
508496
pregen_nyan_objects.update({faith_abbrv_ref_in_modpack: faith_abbrv_value})
509497

510-
@staticmethod
498+
@ staticmethod
511499
def generate_diplomatic_stances(
512500
full_data_set: GenieObjectContainer,
513501
pregen_converter_group: ConverterObjectGroup
@@ -582,7 +570,7 @@ def generate_diplomatic_stances(
582570
pregen_converter_group.add_raw_api_object(gaia_raw_api_object)
583571
pregen_nyan_objects.update({gaia_ref_in_modpack: gaia_raw_api_object})
584572

585-
@staticmethod
573+
@ staticmethod
586574
def generate_team_property(
587575
full_data_set: GenieObjectContainer,
588576
pregen_converter_group: ConverterObjectGroup
@@ -621,7 +609,7 @@ def generate_team_property(
621609
stances,
622610
"engine.util.patch.property.type.Diplomatic")
623611

624-
@staticmethod
612+
@ staticmethod
625613
def generate_entity_types(
626614
full_data_set: GenieObjectContainer,
627615
pregen_converter_group: ConverterObjectGroup
@@ -748,7 +736,7 @@ def generate_entity_types(
748736
pregen_converter_group.add_raw_api_object(new_game_entity_type)
749737
pregen_nyan_objects.update({class_obj_name: new_game_entity_type})
750738

751-
@staticmethod
739+
@ staticmethod
752740
def generate_effect_types(
753741
full_data_set: GenieObjectContainer,
754742
pregen_converter_group: ConverterObjectGroup
@@ -894,7 +882,7 @@ def generate_effect_types(
894882
pregen_converter_group.add_raw_api_object(type_raw_api_object)
895883
pregen_nyan_objects.update({type_ref_in_modpack: type_raw_api_object})
896884

897-
@staticmethod
885+
@ staticmethod
898886
def generate_exchange_objects(
899887
full_data_set: GenieObjectContainer,
900888
pregen_converter_group: ConverterObjectGroup
@@ -1187,7 +1175,7 @@ def generate_exchange_objects(
11871175
pregen_converter_group.add_raw_api_object(price_mode_raw_api_object)
11881176
pregen_nyan_objects.update({price_mode_ref_in_modpack: price_mode_raw_api_object})
11891177

1190-
@staticmethod
1178+
@ staticmethod
11911179
def generate_formation_types(
11921180
full_data_set: GenieObjectContainer,
11931181
pregen_converter_group: ConverterObjectGroup
@@ -1400,7 +1388,7 @@ def generate_formation_types(
14001388
pregen_converter_group.add_raw_api_object(subformation_raw_api_object)
14011389
pregen_nyan_objects.update({subformation_ref_in_modpack: subformation_raw_api_object})
14021390

1403-
@staticmethod
1391+
@ staticmethod
14041392
def generate_language_objects(
14051393
full_data_set: GenieObjectContainer,
14061394
pregen_converter_group: ConverterObjectGroup
@@ -1441,7 +1429,7 @@ def generate_language_objects(
14411429
pregen_converter_group.add_raw_api_object(language_raw_api_object)
14421430
pregen_nyan_objects.update({language_ref_in_modpack: language_raw_api_object})
14431431

1444-
@staticmethod
1432+
@ staticmethod
14451433
def generate_misc_effect_objects(
14461434
full_data_set: GenieObjectContainer,
14471435
pregen_converter_group: ConverterObjectGroup
@@ -1763,7 +1751,7 @@ def generate_misc_effect_objects(
17631751
calc_forward_ref,
17641752
"engine.resistance.property.type.Stacked")
17651753

1766-
@staticmethod
1754+
@ staticmethod
17671755
def generate_modifiers(
17681756
full_data_set: GenieObjectContainer,
17691757
pregen_converter_group: ConverterObjectGroup
@@ -1919,7 +1907,7 @@ def generate_modifiers(
19191907
properties,
19201908
modifier_parent)
19211909

1922-
@staticmethod
1910+
@ staticmethod
19231911
def generate_terrain_types(
19241912
full_data_set: GenieObjectContainer,
19251913
pregen_converter_group: ConverterObjectGroup
@@ -1959,7 +1947,7 @@ def generate_terrain_types(
19591947
pregen_converter_group.add_raw_api_object(type_raw_api_object)
19601948
pregen_nyan_objects.update({type_ref_in_modpack: type_raw_api_object})
19611949

1962-
@staticmethod
1950+
@ staticmethod
19631951
def generate_path_types(
19641952
full_data_set: GenieObjectContainer,
19651953
pregen_converter_group: ConverterObjectGroup
@@ -2024,7 +2012,7 @@ def generate_path_types(
20242012
pregen_converter_group.add_raw_api_object(path_type_raw_api_object)
20252013
pregen_nyan_objects.update({path_type_ref_in_modpack: path_type_raw_api_object})
20262014

2027-
@staticmethod
2015+
@ staticmethod
20282016
def generate_resources(
20292017
full_data_set: GenieObjectContainer,
20302018
pregen_converter_group: ConverterObjectGroup
@@ -2224,7 +2212,7 @@ def generate_resources(
22242212
pregen_converter_group.add_raw_api_object(pop_name_value)
22252213
pregen_nyan_objects.update({pop_name_ref_in_modpack: pop_name_value})
22262214

2227-
@staticmethod
2215+
@ staticmethod
22282216
def generate_death_condition(
22292217
full_data_set: GenieObjectContainer,
22302218
pregen_converter_group: ConverterObjectGroup

openage/convert/service/read/nyan_api_loader.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,27 @@ def _create_objects(api_objects: dict[str, NyanObject]) -> None:
637637
nyan_object.set_fqon(fqon)
638638
api_objects.update({fqon: nyan_object})
639639

640+
# engine.util.activity.node.type.XORSwitchGate
641+
parents = [api_objects["engine.util.activity.node.Node"]]
642+
nyan_object = NyanObject("XORSwitchGate", parents)
643+
fqon = "engine.util.activity.node.type.XORSwitchGate"
644+
nyan_object.set_fqon(fqon)
645+
api_objects.update({fqon: nyan_object})
646+
647+
# engine.util.activity.switch_condition.SwitchCondition
648+
parents = [api_objects["engine.root.Object"]]
649+
nyan_object = NyanObject("SwitchCondition", parents)
650+
fqon = "engine.util.activity.switch_condition.SwitchCondition"
651+
nyan_object.set_fqon(fqon)
652+
api_objects.update({fqon: nyan_object})
653+
654+
# engine.util.activity.switch_condition.type.NextCommand
655+
parents = [api_objects["engine.util.activity.switch_condition.SwitchCondition"]]
656+
nyan_object = NyanObject("NextCommand", parents)
657+
fqon = "engine.util.activity.switch_condition.type.NextCommand"
658+
nyan_object.set_fqon(fqon)
659+
api_objects.update({fqon: nyan_object})
660+
640661
# engine.util.animation_override.AnimationOverride
641662
parents = [api_objects["engine.root.Object"]]
642663
nyan_object = NyanObject("AnimationOverride", parents)
@@ -735,6 +756,34 @@ def _create_objects(api_objects: dict[str, NyanObject]) -> None:
735756
nyan_object.set_fqon(fqon)
736757
api_objects.update({fqon: nyan_object})
737758

759+
# engine.util.command.Command
760+
parents = [api_objects["engine.root.Object"]]
761+
nyan_object = NyanObject("Command", parents)
762+
fqon = "engine.util.command.Command"
763+
nyan_object.set_fqon(fqon)
764+
api_objects.update({fqon: nyan_object})
765+
766+
# engine.util.command.type.ApplyEffect
767+
parents = [api_objects["engine.util.command.Command"]]
768+
nyan_object = NyanObject("ApplyEffect", parents)
769+
fqon = "engine.util.command.type.ApplyEffect"
770+
nyan_object.set_fqon(fqon)
771+
api_objects.update({fqon: nyan_object})
772+
773+
# engine.util.command.type.Idle
774+
parents = [api_objects["engine.util.command.Command"]]
775+
nyan_object = NyanObject("Idle", parents)
776+
fqon = "engine.util.command.type.Idle"
777+
nyan_object.set_fqon(fqon)
778+
api_objects.update({fqon: nyan_object})
779+
780+
# engine.util.command.type.Move
781+
parents = [api_objects["engine.util.command.Command"]]
782+
nyan_object = NyanObject("Move", parents)
783+
fqon = "engine.util.command.type.Move"
784+
nyan_object.set_fqon(fqon)
785+
api_objects.update({fqon: nyan_object})
786+
738787
# engine.util.container_type.SendToContainerType
739788
parents = [api_objects["engine.root.Object"]]
740789
nyan_object = NyanObject("SendToContainerType", parents)
@@ -3331,6 +3380,26 @@ def _insert_members(api_objects: dict[str, NyanObject]) -> None:
33313380
member = NyanMember("default", member_type, None, None, 0)
33323381
api_object.add_member(member)
33333382

3383+
# engine.util.activity.node.type.XORSwitchGate
3384+
api_object = api_objects["engine.util.activity.node.type.XORSwitchGate"]
3385+
3386+
member_type = NyanMemberType(api_objects["engine.util.activity.switch_condition.SwitchCondition"])
3387+
member = NyanMember("switch", member_type, None, None, 0)
3388+
api_object.add_member(member)
3389+
member_type = NyanMemberType(api_objects["engine.util.activity.node.Node"])
3390+
member = NyanMember("default", member_type, None, None, 0)
3391+
api_object.add_member(member)
3392+
3393+
# engine.util.activity.switch_condition.type.NextCommand
3394+
api_object = api_objects["engine.util.activity.switch_condition.type.NextCommand"]
3395+
3396+
subtype = NyanMemberType(api_objects["engine.util.command.Command"])
3397+
key_type = NyanMemberType(MemberType.CHILDREN, (subtype,))
3398+
value_type = NyanMemberType(api_objects["engine.util.activity.node.Node"])
3399+
member_type = NyanMemberType(MemberType.DICT, (key_type, value_type))
3400+
member = NyanMember("next", member_type, None, None, 0)
3401+
api_object.add_member(member)
3402+
33343403
# engine.util.animation_override.AnimationOverride
33353404
api_object = api_objects["engine.util.animation_override.AnimationOverride"]
33363405

0 commit comments

Comments
 (0)