X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=sidebyside;f=server%2Fmake_world.py;h=424bd1a9c627f7e78fa29f8cebb43ce78666d312;hb=10152e3ef6bac7e1fbc381cc986c45eebccbcc32;hp=ad1a84d89033d16878aaf395704600f5a46ef659;hpb=f6a1bf0aa76165c104d74fe8dfaf674d3e63b52d;p=plomrogue
diff --git a/server/make_world.py b/server/make_world.py
index ad1a84d..424bd1a 100644
--- a/server/make_world.py
+++ b/server/make_world.py
@@ -3,6 +3,15 @@
# see the file NOTICE in the root directory of the PlomRogue source package.
+from server.config.world_data import world_db, symbols_passable
+from server.config.make_world_helpers import make_map, world_makable, pos_test
+from server.config.io import io_db
+from server.utils import rand, libpr, id_setter
+from server.new_thing import new_Thing
+from server.io import strong_write
+from server.update_map_memory import update_map_memory
+
+
def make_world(seed):
"""(Re-)build game world, i.e. map, things, to a new turn 1 from seed.
@@ -14,15 +23,7 @@ def make_world(seed):
of ID = world["PLAYER_TYPE"]. Place Things randomly, and actors not on each
other. Init player's memory map. Write "NEW_WORLD" line to out file.
"""
- from server.config.world_data import world_db, symbols_passable
- from server.config.misc import make_map_func
- from server.config.io import io_db
- from server.utils import rand, libpr, id_setter
- from server.new_thing import new_Thing
- from server.io import strong_write
- from server.update_map_memory import update_map_memory
-
- def free_pos():
+ def free_pos(type):
i = 0
while 1:
err = "Space to put thing on too hard to find. Map too small?"
@@ -30,7 +31,7 @@ def make_world(seed):
y = rand.next() % world_db["MAP_LENGTH"]
x = rand.next() % world_db["MAP_LENGTH"]
if chr(world_db["MAP"][y * world_db["MAP_LENGTH"] + x]) in \
- symbols_passable:
+ symbols_passable and pos_test(type, y, x):
break
i += 1
if i == 65535:
@@ -44,36 +45,18 @@ def make_world(seed):
break
return (y, x)
- rand.seed = seed
- if world_db["MAP_LENGTH"] < 1:
- print("Ignoring: No map length >= 1 defined.")
+ playertype = world_makable()
+ if playertype < 0:
return
+ rand.seed = seed
libpr.set_maplength(world_db["MAP_LENGTH"])
- player_will_be_generated = False
- playertype = world_db["PLAYER_TYPE"]
- for ThingType in world_db["ThingTypes"]:
- if playertype == ThingType:
- if 0 < world_db["ThingTypes"][ThingType]["TT_START_NUMBER"]:
- player_will_be_generated = True
- break
- if not player_will_be_generated:
- print("Ignoring: No player type with start number >0 defined.")
- return
- wait_action = False
- for ThingAction in world_db["ThingActions"]:
- if "wait" == world_db["ThingActions"][ThingAction]["TA_NAME"]:
- wait_action = True
- if not wait_action:
- print("Ignoring beyond SEED_MAP: " +
- "No thing action with name 'wait' defined.")
- return
world_db["Things"] = {}
- make_map_func()
+ make_map()
world_db["WORLD_ACTIVE"] = 1
world_db["TURN"] = 1
for i in range(world_db["ThingTypes"][playertype]["TT_START_NUMBER"]):
id = id_setter(-1, "Things")
- world_db["Things"][id] = new_Thing(playertype, free_pos())
+ world_db["Things"][id] = new_Thing(playertype, free_pos(playertype))
if not world_db["Things"][0]["fovmap"]:
empty_fovmap = bytearray(b" " * world_db["MAP_LENGTH"] ** 2)
world_db["Things"][0]["fovmap"] = empty_fovmap
@@ -82,5 +65,5 @@ def make_world(seed):
for i in range(world_db["ThingTypes"][type]["TT_START_NUMBER"]):
if type != playertype:
id = id_setter(-1, "Things")
- world_db["Things"][id] = new_Thing(type, free_pos())
+ world_db["Things"][id] = new_Thing(type, free_pos(type))
strong_write(io_db["file_out"], "NEW_WORLD\n")