瀏覽代碼

Implement research

Tankernn 7 年之前
父節點
當前提交
2ac82368ca
共有 3 個文件被更改,包括 28 次插入4 次删除
  1. 12 0
      citybuilder/messagehandler.py
  2. 3 4
      citybuilder/player.py
  3. 13 0
      config/game.yaml

+ 12 - 0
citybuilder/messagehandler.py

@@ -8,6 +8,7 @@ class MessageHandler:
             "build": self.build,
             "train": self.train,
             "mission": self.mission,
+            "research": self.research,
         }
         self.config = config
 
@@ -47,6 +48,17 @@ class MessageHandler:
             'units': units,
         }, {}, mission['cost'])
 
+    def research(self, player, message):
+        spec = self.config['research'][message['name']]
+        level_index = player.research.get(message['name'], 0)
+        requirements = spec['levels'][level_index]['requirements']
+        cost = spec['levels'][level_index]['cost']
+        return player.add_job({
+            'type': "research",
+            'time': cost['time'],
+            'name': message['name'],
+        }, requirements, cost)
+
     def handle_message(self, connection, player, message):
         handler = self.handlers[message['type']]
         if handler:

+ 3 - 4
citybuilder/player.py

@@ -21,6 +21,8 @@ class Job:
         if time.time() > self.finish_time or core.config['debug']:
             if self.product['type'] == "building":
                 self.player.buildings[self.product['name']] += 1
+            elif self.product['type'] == "research":
+                self.player.research[self.product['name']] += 1
             elif self.product['type'] == "unit":
                 self.player.units.append(Unit(self.product['name'], self.product['level']))
             elif self.product['type'] == "mission":
@@ -42,10 +44,7 @@ class Player:
         self.buildings = { key: 0 for key in core.config['building'] }
         self.units = [ Unit(unit['type'], unit['level']) for unit in core.config['general']['start']['units'] ]
         self.resources = { resource: core.config['general']['start'].get(resource, 0) for resource in core.config['general']['resources'] }
-        self.research = {
-            'footman': 1,
-            'archer': 0,
-        }
+        self.research = { key: 0 for key in core.config['research'] }
         self.missions = list()
 
     def login(self, ws):

+ 13 - 0
config/game.yaml

@@ -125,6 +125,19 @@ game:
           requirements:
             buildings:
               barracks: 1
+            research:
+              archery: 1
+  research:
+    archery:
+      name: Archery
+      levels:
+        -
+          cost:
+            time: 10
+            gold: 100
+          requirements:
+            buildings:
+              library: 1
   missions:
     -
       name: Got wood?