home · contact · privacy
Server/py: Add skeleton for turn_over().
authorChristian Heller <c.heller@plomlompom.de>
Wed, 4 Mar 2015 12:46:07 +0000 (13:46 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 4 Mar 2015 12:46:07 +0000 (13:46 +0100)
confserver/world
plomrogue-server.py

index 1224fe45474d0b889250e1535c6e68e6f722a08d..ff53f7100259243b0c97bf54cb71bd04a9f60f35 100644 (file)
@@ -29,42 +29,42 @@ TT_NAME HUMAN
 TT_CONSUMABLE 0
 
 TT_ID 1
-TT_START_NUMBER 27
+TT_START_NUMBER 5
 TT_LIFEPOINTS 6
 TT_SYMBOL a
 TT_NAME ANT
 TT_CONSUMABLE 0
 
 TT_ID 2
-TT_START_NUMBER 9
+TT_START_NUMBER 0
 TT_LIFEPOINTS 18
 TT_SYMBOL z
 TT_NAME ZOMBIE
 TT_CONSUMABLE 0
 
 TT_ID 3
-TT_START_NUMBER 3
+TT_START_NUMBER 0
 TT_LIFEPOINTS 54
 TT_SYMBOL S
 TT_NAME SHOGGOTH
 TT_CONSUMABLE 0
 
 TT_ID 4
-TT_START_NUMBER 9
+TT_START_NUMBER 0
 TT_LIFEPOINTS 0
 TT_SYMBOL '#'
 TT_NAME DIRT
 TT_CONSUMABLE 0
 
 TT_ID 5
-TT_START_NUMBER 9
+TT_START_NUMBER 0
 TT_LIFEPOINTS 0
 TT_SYMBOL %
 TT_NAME SKELETON
 TT_CONSUMABLE 0
 
 TT_ID 6
-TT_START_NUMBER 1
+TT_START_NUMBER 0
 TT_LIFEPOINTS 0
 TT_SYMBOL m
 TT_NAME 'MAGIC MEAT'
index 010db5fae3d38ca16c83f9be91c5de7288046471..2121c75ad2cf15988c240544b10da159e37d0d0c 100755 (executable)
@@ -449,6 +449,47 @@ def build_fov_map(t):
     # DUMMY so far. Just builds an all-visible map.
 
 
+def turn_over():
+    """Run game world and its inhabitants until new player input expected."""
+    id = 0
+    print("turning over")
+    whilebreaker = False
+    while world_db["Things"][0]["T_LIFEPOINTS"]:
+        for id in [id for id in world_db["Things"]
+                      if not world_db["Things"][id]["carried"]
+                      if world_db["Things"][id]["T_LIFEPOINTS"]]:
+            print(str(id))
+            Thing = world_db["Things"][id]
+            if Thing["T_LIFEPOINTS"]:
+                print("  evaluating thing")
+                if not Thing["T_COMMAND"]:
+                    print("    thing needs new command")
+                    update_map_memory(Thing)
+                    if 0 == id:
+                        whilebreaker = True
+                        break
+                    # DUMMY: ai(thing)
+                    print("    run AI")
+                    Thing["T_COMMAND"] = 1
+                # DUMMY: try_healing
+                Thing["T_PROGRESS"] += 1
+                taid = [a for a in world_db["ThingActions"]
+                          if a == Thing["T_COMMAND"]][0]
+                ThingAction = world_db["ThingActions"][taid]
+                if Thing["T_PROGRESS"] == ThingAction["TA_EFFORT"]:
+                    print("  running thing action")
+                    # run_thing_action(action["TA_NAME"])
+                    Thing["T_COMMAND"] = 0
+                    Thing["T_PROGRESS"] = 0
+                # DUMMY: hunger
+            # DUMMY: thingproliferation
+        if whilebreaker:
+            break
+        print("  turn finished")
+        world_db["TURN"] += 1
+        print("  new turn " + str(world_db["TURN"]))
+
+
 def new_Thing(type):
     """Return Thing of type T_TYPE, with fovmap if alive and world active."""
     thing = {
@@ -546,7 +587,7 @@ def command_thingshere(str_y, str_x):
 
 
 def play_commander(action, args=False):
-    """Setter for player's T_COMMAND (to "action") and T_ARGUMENT.
+    """Setter for player's T_COMMAND and T_ARGUMENT, then calling turn_over().
 
     T_ARGUMENT is set to direction char if action=="wait",or 8-bit int if args.
     """
@@ -555,6 +596,7 @@ def play_commander(action, args=False):
         id = [x for x in world_db["ThingActions"]
                 if world_db["ThingActions"][x]["TA_NAME"] == action][0]
         world_db["Things"][0]["T_COMMAND"] = id
+        turn_over()
         # TODO: call turn_over()
 
     def set_command_and_argument_int(str_arg):