Skip to content

Commit

Permalink
(station) Provide more detailed station names (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
ahyangyi authored Oct 13, 2024
1 parent 8a0feb8 commit 5e90118
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 10 deletions.
21 changes: 21 additions & 0 deletions agrf/strings/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,27 @@
import grf
from nml import grfstrings


class String:
def __init__(self, s, *args):
self.s = s
self.args = args

def __call__(self, *args):
if len(args) == 0:
return self
if isinstance(args[-1], grf.StringManager):
s = args[-1]
params = []
for x in self.args + args[:-1]:
if isinstance(x, str):
params.append(s[x])
else:
params.append(x(s))
return args[-1][self.s].eval(*params)
return String(self.s, *(self.args + args))


def get_translation(stringref, lang_id=0x7F):
stringref.manager.set_nml_globals()
ns = stringref.string_nmlexpr
Expand Down
11 changes: 9 additions & 2 deletions station/lang/chinese.lng
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,15 @@ STR_PARAM_SHELTER_SHELTER_2_DESC :选择是否启用雨棚风格2(
STR_PARAM_SHELTER_SHELTER_2_ENABLED :启用
STR_PARAM_SHELTER_SHELTER_2_DISABLED :禁用

STR_STATION_DEFAULT :站房
STR_STATION_UNTRAVERSABLE :站房(无轨道)
STR_PART_TRACK_TRUE :{PUSH_COLOUR}{GREEN}轨{POP_COLOUR}
STR_PART_TRACK_FALSE :{PUSH_COLOUR}{RED}轨{POP_COLOUR}
STR_PART_NPLAT_TRUE :{PUSH_COLOUR}{GREEN}北{POP_COLOUR}
STR_PART_NPLAT_FALSE :{PUSH_COLOUR}{RED}北{POP_COLOUR}
STR_PART_SPLAT_TRUE :{PUSH_COLOUR}{GREEN}南{POP_COLOUR}
STR_PART_SPLAT_FALSE :{PUSH_COLOUR}{RED}南{POP_COLOUR}

STR_STATION_TEMPLATE :站房({0:STRING}{1:STRING}{2:STRING})

STR_STATION_PLATFORM :站台
STR_STATION_PLATFORM_UNTRAVERSABLE :站台(无轨道)
STR_STATION_CONCOURSE :车站广场
Expand Down
11 changes: 9 additions & 2 deletions station/lang/english-uk.lng
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,15 @@ STR_PARAM_SHELTER_SHELTER_2_DESC :Whether or not to enable shelter st
STR_PARAM_SHELTER_SHELTER_2_ENABLED :Enabled
STR_PARAM_SHELTER_SHELTER_2_DISABLED :Disabled

STR_STATION_DEFAULT :Station Building
STR_STATION_UNTRAVERSABLE :Station Building (No Track)
STR_PART_TRACK_TRUE :{PUSH_COLOUR}{GREEN}Tra{POP_COLOUR}
STR_PART_TRACK_FALSE :{PUSH_COLOUR}{RED}Tra{POP_COLOUR}
STR_PART_NPLAT_TRUE :{PUSH_COLOUR}{GREEN}Nor{POP_COLOUR}
STR_PART_NPLAT_FALSE :{PUSH_COLOUR}{RED}Nor{POP_COLOUR}
STR_PART_SPLAT_TRUE :{PUSH_COLOUR}{GREEN}Sou{POP_COLOUR}
STR_PART_SPLAT_FALSE :{PUSH_COLOUR}{RED}Sou{POP_COLOUR}

STR_STATION_TEMPLATE :Station Building ({0:STRING}{1:STRING}{2:STRING})

STR_STATION_PLATFORM :Platform
STR_STATION_PLATFORM_UNTRAVERSABLE :Platform (No Track)
STR_STATION_CONCOURSE :Concourse
Expand Down
11 changes: 6 additions & 5 deletions station/lib/station.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@ def class_label_plain(self):

def get_sprites(self, g, sprites=None):
is_managed_by_metastation = sprites is not None
if isinstance(self.translation_name, str):
translated_name = g.strings[f"STR_STATION_{self.translation_name}"]
else:
translated_name = self.translation_name(g.strings)

extra_props = {
"station_name": g.strings.add(g.strings[f"STR_STATION_{self.translation_name}"]).get_persistent_id()
}
extra_props = {"station_name": g.strings.add(translated_name).get_persistent_id()}
if not self.is_waypoint:
extra_props["station_class_name"] = g.strings.add(
g.strings[f"STR_STATION_CLASS_{self.class_label_plain}"]
Expand Down Expand Up @@ -105,10 +107,9 @@ def get_sprites(self, g, sprites=None):
res.append(map_action)

if self.id < 0xFF:
name = g.strings[f"STR_STATION_{self.translation_name}"]
class_name = g.strings[f"STR_STATION_CLASS_{self.class_label_plain}"]
res.extend(class_name.get_actions(grf.STATION, 0xC400 + self.id, is_generic_offset=True))
res.extend(name.get_actions(grf.STATION, 0xC500 + self.id, is_generic_offset=True))
res.extend(translated_name.get_actions(grf.STATION, 0xC500 + self.id, is_generic_offset=True))

return res

Expand Down
60 changes: 59 additions & 1 deletion station/stations/dovemere_2018.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from .dovemere_2018_lib.flexible_stations.traversable import traversable_stations
from .dovemere_2018_lib.flexible_stations.side import side_stations
from .dovemere_2018_lib.flexible_stations.side_third import side_third_stations
from agrf.strings import String

modular_stations = []
for i, entry in enumerate(sorted(entries, key=lambda x: x.category)):
Expand All @@ -19,10 +20,66 @@
for shelter_class in ["shelter_1", "shelter_2"]:
if shelter_class in entry.notes:
enable_if.append(parameter_list.index(f"SHELTER_{shelter_class.upper()}"))

has_track = entry.traversable
far_platform = entry.category[-1] in {
0x81,
0x83,
0x85,
0x87,
0x92,
0x93,
0xA2,
0xA3,
0xA6,
0xA7,
0xAA,
0xAB,
0xAE,
0xAF,
0xB2,
0xB3,
0xB6,
0xB7,
0xC2,
0xC3,
0xC6,
0xC7,
}
near_platform = entry.category[-1] in {
0x89,
0x8B,
0x8D,
0x8F,
0x91,
0x93,
0xA1,
0xA3,
0xA5,
0xA7,
0xA9,
0xAB,
0xAD,
0xAF,
0xB1,
0xB3,
0xB5,
0xB7,
0xC1,
0xC3,
0xC5,
0xC7,
}
translation_name = String("STR_STATION_TEMPLATE")(
f"STR_PART_TRACK_{str(has_track).upper()}",
f"STR_PART_NPLAT_{str(far_platform).upper()}",
f"STR_PART_SPLAT_{str(near_platform).upper()}",
)

modular_stations.append(
AStation(
id=entry.id,
translation_name="DEFAULT" if entry.traversable else "UNTRAVERSABLE",
translation_name=translation_name,
layouts=[
entry,
entry.M,
Expand All @@ -43,6 +100,7 @@
)
)


the_stations = AMetaStation(
semitraversable_stations + traversable_stations + side_stations + side_third_stations + modular_stations,
b"\xe8\x8a\x9cA",
Expand Down

0 comments on commit 5e90118

Please sign in to comment.