summary refs log tree commit diff stats
path: root/apworld/player_logic.py
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-08-12 16:55:17 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-08-12 16:55:17 -0400
commit4c8a38dfc0121343396d2a0d734cf1445d05b60c (patch)
treeccaf6dd1dc6fee60ced5ae19c5d0bb5db1217fcb /apworld/player_logic.py
parent447a222b57e498f7904033c59e68d21d6a246abd (diff)
downloadlingo2-archipelago-4c8a38dfc0121343396d2a0d734cf1445d05b60c.tar.gz
lingo2-archipelago-4c8a38dfc0121343396d2a0d734cf1445d05b60c.tar.bz2
lingo2-archipelago-4c8a38dfc0121343396d2a0d734cf1445d05b60c.zip
Converted to proto2
This will let us use an older version of protobuf in Python, and allows
us to use the Godot protobuf implementation at all. Scalar fields with
custom defaults in data.proto were changed to not have a default,
because Godot doesn't handle it properly. The equivalent fields in
human.proto still have the defaults, and datapacker copies the default
value in if necessary. The Panel message in data.proto was also renamed
to PanelData because otherwise it conflicts with the native Godot class
named Panel. The double field in Letter was renamed to level2, because
Godot couldn't handle it well. Finally, common.proto was removed and
its contents were moved into data.proto, which allows us to generate
code for Python without needing to edit it.

NOTE: I had to slightly modify the Godot protobuf code generator. I'll
need to upload that somewhere.
Diffstat (limited to 'apworld/player_logic.py')
-rw-r--r--apworld/player_logic.py8
1 files changed, 4 insertions, 4 deletions
diff --git a/apworld/player_logic.py b/apworld/player_logic.py index 958abc5..8b240b5 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py
@@ -1,4 +1,4 @@
1from .generated import common_pb2 as common_pb2 1from .generated import data_pb2 as data_pb2
2from typing import TYPE_CHECKING, NamedTuple 2from typing import TYPE_CHECKING, NamedTuple
3 3
4if TYPE_CHECKING: 4if TYPE_CHECKING:
@@ -79,11 +79,11 @@ class Lingo2PlayerLogic:
79 self.real_items = list() 79 self.real_items = list()
80 80
81 for door in world.static_logic.objects.doors: 81 for door in world.static_logic.objects.doors:
82 if door.type in [common_pb2.DoorType.STANDARD, common_pb2.DoorType.LOCATION_ONLY]: 82 if door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.LOCATION_ONLY]:
83 self.locations_by_room.setdefault(door.room_id, []).append(PlayerLocation(door.ap_id, 83 self.locations_by_room.setdefault(door.room_id, []).append(PlayerLocation(door.ap_id,
84 self.get_door_reqs(door.id))) 84 self.get_door_reqs(door.id)))
85 85
86 if door.type in [common_pb2.DoorType.STANDARD, common_pb2.DoorType.ITEM_ONLY] and self.world.options.shuffle_doors: 86 if door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.ITEM_ONLY] and self.world.options.shuffle_doors:
87 self.real_items.append(self.world.static_logic.get_door_item_name(door.id)) 87 self.real_items.append(self.world.static_logic.get_door_item_name(door.id))
88 88
89 for letter in world.static_logic.objects.letters: 89 for letter in world.static_logic.objects.letters:
@@ -146,7 +146,7 @@ class Lingo2PlayerLogic:
146 reqs = AccessRequirements() 146 reqs = AccessRequirements()
147 147
148 use_item = False 148 use_item = False
149 if door.type in [common_pb2.DoorType.STANDARD, common_pb2.DoorType.ITEM_ONLY] and self.world.options.shuffle_doors: 149 if door.type in [data_pb2.DoorType.STANDARD, data_pb2.DoorType.ITEM_ONLY] and self.world.options.shuffle_doors:
150 use_item = True 150 use_item = True
151 151
152 if use_item: 152 if use_item: