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
return libpr
def build_fov_map(t):
"""Build Thing's FOV map."""
t["fovmap"] = bytearray(b'v' * (world_db["MAP_LENGTH"] ** 2))
- # DUMMY so far. Just builds an all-visible map.
+ maptype = ctypes.c_char * len(world_db["MAP"])
+ test = libpr.build_fov_map(t["T_POSY"], t["T_POSX"],
+ maptype.from_buffer(t["fovmap"]),
+ maptype.from_buffer(world_db["MAP"]))
+ if test:
+ raise SystemExit("Malloc error in build_fov_Map().")
def decrement_lifepoints(t):
if world_db["Things"][id]["T_POSY"] == libpr.result_y()
if world_db["Things"][id]["T_POSX"] == libpr.result_x()]
if len(hitted):
- hitted = hitted[0]
- decrement_lifepoints(world_db["Things"][hitted])
+ hit_id = hitted[0]
hitter_name = world_db["ThingTypes"][t["T_TYPE"]]["TT_NAME"]
hitter = "You" if t == world_db["Things"][0] else hitter_name
- hitted_type = world_db["Things"][hitted]["T_TYPE"]
+ hitted_type = world_db["Things"][hit_id]["T_TYPE"]
hitted_name = world_db["ThingTypes"][hitted_type]["TT_NAME"]
- hitted = "you" if hitted == world_db["Things"][0] else hitted_name
+ hitted = "you" if hit_id == 0 else hitted_name
verb = " wound " if hitter == "You" else " wounds "
strong_write(io_db["file_out"], "LOG " + hitter + verb + hitted + \
".\n")
+ decrement_lifepoints(world_db["Things"][hit_id])
return
dir = [dir for dir in directions_db
if directions_db[dir] == t["T_ARGUMENT"]][0]