fix compiling logic, no more errors

This commit is contained in:
Demur Rumed 2025-07-19 02:43:28 +00:00
commit e72c42e342
3 changed files with 22 additions and 11 deletions

View file

@ -7,10 +7,13 @@ if len(argv) < 1:
exit() exit()
class RR: class RR:
__slots__ = "name", "scene", "events", "checks", "exits" __slots__ = "name", "scene", "timepass", "areas", "ui_name", "events", "checks", "exits"
def __init__(self, name, scene): def __init__(self, name, scene, timepass, *areas):
self.name = name self.name = name
self.scene = scene self.scene = scene
self.timepass = timepass == "true"
self.areas = areas
self.ui_name = ""
self.events = [] self.events = []
self.checks = [] self.checks = []
self.exits = [] self.exits = []
@ -100,7 +103,7 @@ class RR:
elif f in RANDO: elif f in RANDO:
output(f"Rando::{f}") output(f"Rando::{f}")
elif f == "Here": elif f == "Here":
output("Here(f{self.name}, []{return f{self.to_cpp(ast[1])};})") output(f"Here({self.name}, []{{return {self.to_cpp(ast[1])};}})")
elif f != "--": elif f != "--":
if len(ast) != 1: if len(ast) != 1:
print("expected atom, got tree", ast) print("expected atom, got tree", ast)
@ -119,6 +122,7 @@ LOGIC = {
"AtNight", "AtNight",
"LoweredWaterInBotw", "LoweredWaterInBotw",
"BigPoes", "BigPoes",
"IsFireLoopLocked",
} }
RANDO = { RANDO = {
@ -156,6 +160,7 @@ logicFUNC = {
"HasFireSourceWithTorch", "HasFireSourceWithTorch",
"CanUse", "CanUse",
"CanPassEnemy", "CanPassEnemy",
"CanAvoidEnemy",
"CanKillEnemy", "CanKillEnemy",
"CanGetEnemyDrop", "CanGetEnemyDrop",
"CanGetDekuBabaSticks", "CanGetDekuBabaSticks",
@ -169,6 +174,7 @@ logicFUNC = {
"CanSpawnSoilSkull", "CanSpawnSoilSkull",
"CanGetNightTimeGS", "CanGetNightTimeGS",
"CanOpenUnderwaterChest", "CanOpenUnderwaterChest",
"CanOpenOverworldDoor",
"CanHitSwitch", "CanHitSwitch",
"CanHitEyeTargets", "CanHitEyeTargets",
"CanDetonateUprightBombFlower", "CanDetonateUprightBombFlower",
@ -188,6 +194,8 @@ logicFUNC = {
"TradeQuestStep", "TradeQuestStep",
"GetGSCount", "GetGSCount",
"BlastOrSmash", "BlastOrSmash",
"CanOpenBombGrotto",
"CanOpenStormsGrotto",
"HookshotOrBoomerang", "HookshotOrBoomerang",
"TakeDamage", "TakeDamage",
"CanAttack", "CanAttack",
@ -196,6 +204,7 @@ logicFUNC = {
"CanJumpslash", "CanJumpslash",
"CanJumpslashExceptHammer", "CanJumpslashExceptHammer",
"HasBottle", "HasBottle",
"ScarecrowsSong",
"SmallKeys", "SmallKeys",
"OcarinaButtons", "OcarinaButtons",
"Hearts", "Hearts",
@ -219,15 +228,17 @@ open_count = close_count = 0
for line in open(argv[1]): for line in open(argv[1]):
if line.startswith("def "): if line.startswith("def "):
if open_count != close_count: if open_count != close_count:
print("error parsing:", name) print("error parsing", line)
defline = line.split() defline = line.split()
name = defline[1] active_rr = RR(*defline[1:])
active_rr = RR(name, defline[2])
RRs.append(active_rr) RRs.append(active_rr)
buf = "" buf = ""
open_count = close_count = 0 open_count = close_count = 0
continue continue
if line.startswith("--"): if active_rr and not active_rr.ui_name:
active_rr.ui_name = line.strip()
continue
if not active_rr or line.startswith("--"):
continue continue
open_count += line.count('(') open_count += line.count('(')
close_count += line.count(')') close_count += line.count(')')
@ -254,7 +265,7 @@ for line in open(argv[1]):
result = [] result = []
output = result.append output = result.append
for rr in RRs: for rr in RRs:
output(f"areaTable[{rr.name}] = Region(\"...\", {rr.scene}, {{") output(f"areaTable[{rr.name}] = Region(\"{rr.ui_name}\", {rr.scene}, {'true' if rr.timepass else 'false'}, {{','.join(rr.areas)}}, {{")
if rr.events: if rr.events:
output("\n") output("\n")
for name, code in rr.events: for name, code in rr.events:
@ -269,7 +280,7 @@ for rr in RRs:
if rr.exits: if rr.exits:
output("\n") output("\n")
for name, code in rr.events: for name, code in rr.exits:
output(f"\tEntrance({name}, []{{return {rr.gen(code)};}}),\n") output(f"\tEntrance({name}, []{{return {rr.gen(code)};}}),\n")
output("});\n") output("});\n")

View file

@ -336,7 +336,7 @@ void Rando::StaticData::RegisterCrateLocations() {
locationTable[RC_GF_SOUTHMOST_CENTER_CRATE] = Location::Crate(RC_GF_SOUTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1534), "Southmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTHMOST_CENTER_CRATE)); locationTable[RC_GF_SOUTHMOST_CENTER_CRATE] = Location::Crate(RC_GF_SOUTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1534), "Southmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTHMOST_CENTER_CRATE));
locationTable[RC_GF_MID_SOUTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_SOUTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1594), "Middle South Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_SOUTH_CENTER_CRATE)); locationTable[RC_GF_MID_SOUTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_SOUTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(315, -1594), "Middle South Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_SOUTH_CENTER_CRATE));
locationTable[RC_GF_MID_NORTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_NORTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1782), "Middle North Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_NORTH_CENTER_CRATE)); locationTable[RC_GF_MID_NORTH_CENTER_CRATE] = Location::Crate(RC_GF_MID_NORTH_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1782), "Middle North Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_MID_NORTH_CENTER_CRATE));
locationTable[RR_GF_NORTHMOST_CENTER_CRATE] = Location::Crate(RR_GF_NORTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1842), "Northmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTHMOST_CENTER_CRATE)); locationTable[RC_GF_NORTHMOST_CENTER_CRATE] = Location::Crate(RC_GF_NORTHMOST_CENTER_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(310, -1842), "Northmost Center Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTHMOST_CENTER_CRATE));
locationTable[RC_GF_OUTSKIRTS_NE_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NE_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-60, -2210), "Outskirts Northeast Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NE_CRATE)); locationTable[RC_GF_OUTSKIRTS_NE_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NE_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-60, -2210), "Outskirts Northeast Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NE_CRATE));
locationTable[RC_GF_OUTSKIRTS_NW_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NW_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-120, -2210), "Outskirts Northwest Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NW_CRATE)); locationTable[RC_GF_OUTSKIRTS_NW_CRATE] = Location::Crate(RC_GF_OUTSKIRTS_NW_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(-120, -2210), "Outskirts Northwest Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_OUTSKIRTS_NW_CRATE));
locationTable[RC_GF_HBA_RANGE_CRATE_2] = Location::Crate(RC_GF_HBA_RANGE_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -1780), "Horseback Archery Range Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_2)); locationTable[RC_GF_HBA_RANGE_CRATE_2] = Location::Crate(RC_GF_HBA_RANGE_CRATE_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(4090, -1780), "Horseback Archery Range Crate 2", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_HBA_RANGE_CRATE_2));

View file

@ -2330,7 +2330,7 @@ std::map<RandomizerCheck, RandomizerInf> rcToRandomizerInf = {
RAND_INF_GF_MID_NORTH_CENTER_CRATE, RAND_INF_GF_MID_NORTH_CENTER_CRATE,
}, },
{ {
RR_GF_NORTHMOST_CENTER_CRATE, RC_GF_NORTHMOST_CENTER_CRATE,
RAND_INF_GF_NORTHMOST_CENTER_CRATE, RAND_INF_GF_NORTHMOST_CENTER_CRATE,
}, },
{ {