X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=plomrogue-server.py;h=204c131282d512fc20459c78ed32b21dde70a67c;hb=455db0213bfd97aff1a6309c9c53f6701c3fce84;hp=9d4b0994a5710c050318d5ca4760695666ba8f2f;hpb=c89e7df6e7b6b64037b5b964e10a63ad38f86eb5;p=plomrogue
diff --git a/plomrogue-server.py b/plomrogue-server.py
index 9d4b099..204c131 100755
--- a/plomrogue-server.py
+++ b/plomrogue-server.py
@@ -36,30 +36,7 @@ def prep_library():
raise SystemExit("No library " + libpath +
", run ./compile-server.sh first?")
libpr = ctypes.cdll.LoadLibrary(libpath)
- libpr.seed_rrand.argtypes = [ctypes.c_uint8, ctypes.c_uint32]
libpr.seed_rrand.restype = ctypes.c_uint32
- libpr.rrand.argtypes = []
- libpr.rrand.restype = ctypes.c_uint16
- libpr.set_maplength.argtypes = [ctypes.c_uint16]
- libpr.mv_yx_in_dir_legal_wrap.argtypes = [ctypes.c_char, ctypes.c_uint8,
- ctypes.c_uint8]
- libpr.mv_yx_in_dir_legal_wrap.restype = ctypes.c_uint8
- libpr.result_y.restype = ctypes.c_uint8
- libpr.result_x.restype = ctypes.c_uint8
- libpr.set_maplength(world_db["MAP_LENGTH"])
- libpr.build_fov_map.argtypes = [ctypes.c_uint8, ctypes.c_uint8,
- ctypes.c_char_p, ctypes.c_char_p]
- libpr.build_fov_map.restype = ctypes.c_uint8
- libpr.init_score_map.restype = ctypes.c_uint8
- libpr.set_map_score.argtypes = [ctypes.c_uint16, ctypes.c_uint16]
- libpr.set_map_score.restype = ctypes.c_uint8
- libpr.get_map_score.argtypes = [ctypes.c_uint16]
- libpr.get_map_score.restype = ctypes.c_int32
- libpr.get_neighbor_score.argtypes = [ctypes.c_uint8]
- libpr.get_neighbor_score.restype = ctypes.c_uint16
- libpr.ready_neighbor_scores.argtpes = [ctypes.c_uint16]
- libpr.ready_neighbor_scores.restype = ctypes.c_uint8
- libpr.dijkstra_map.restype = ctypes.c_uint8
return libpr
@@ -503,13 +480,10 @@ def update_map_memory(t, age_map=True):
if ord_space == t["T_MEMMAP"][pos]:
t["T_MEMMAP"][pos] = world_db["MAP"][pos]
if age_map:
- for pos in [pos for pos in range(world_db["MAP_LENGTH"] ** 2)
- if not ord_v == t["fovmap"][pos]
- if ord_0 <= t["T_MEMDEPTHMAP"][pos]
- if ord_9 > t["T_MEMDEPTHMAP"][pos]
- if not rand.next() % (2 **
- (t["T_MEMDEPTHMAP"][pos] - 48))]:
- t["T_MEMDEPTHMAP"][pos] += 1
+ maptype = ctypes.c_char * len(t["T_MEMDEPTHMAP"])
+ memdepthmap = maptype.from_buffer(t["T_MEMDEPTHMAP"])
+ fovmap = maptype.from_buffer(t["fovmap"])
+ libpr.age_some_memdepthmap_on_nonfov_cells(memdepthmap, fovmap)
for mt in [mt for mt in t["T_MEMTHING"]
if "v" == chr(t["fovmap"][(mt[1] * world_db["MAP_LENGTH"])
+ mt[2]])]:
@@ -804,6 +778,14 @@ def get_dir_to_target(t, filter):
"s": memory map cell with greatest-reachable degree of unexploredness
"""
+ def zero_score_map_where_char_on_memdepthmap(c):
+ maptype = ctypes.c_char * len(t["T_MEMDEPTHMAP"])
+ map = maptype.from_buffer(t["T_MEMDEPTHMAP"])
+ test = libpr.zero_score_map_where_char_on_memdepthmap(c, map)
+ if test:
+ raise RuntimeError("No score map allocated for "
+ "zero_score_map_where_char_on_memdepthmap().")
+
def set_map_score(pos, score):
test = libpr.set_map_score(pos, score)
if test:
@@ -880,9 +862,7 @@ def get_dir_to_target(t, filter):
if world_db["ThingTypes"][mt[0]]["TT_CONSUMABLE"]]:
set_map_score(mt[1] * world_db["MAP_LENGTH"] + mt[2], 0)
elif "s" == filter:
- for i in [i for i in range(world_db["MAP_LENGTH"] ** 2)
- if t["T_MEMDEPTHMAP"][i] == mem_depth_c[0]]:
- set_map_score(i, 0)
+ zero_score_map_where_char_on_memdepthmap(mem_depth_c[0])
def rand_target_dir(neighbors, cmp, dirs):
candidates = []