Pārlūkot izejas kodu

Add resource generation

Frans Bergman 7 gadi atpakaļ
vecāks
revīzija
6d7f356f05
4 mainītis faili ar 22 papildinājumiem un 3 dzēšanām
  1. 5 1
      citybuilder/core.py
  2. 0 1
      citybuilder/messagehandler.py
  3. 7 1
      citybuilder/player.py
  4. 10 0
      config/game.yaml

+ 5 - 1
citybuilder/core.py

@@ -5,10 +5,14 @@ import time
 
 def main_loop():
     for player in list(server.players.values()):
-        player.update()
+        player.update(config, time.time() - main_loop.last_tick)
+    main_loop.last_tick = time.time()
     time.sleep(1)
 
+main_loop.last_tick = time.time()
+
 if __name__ == '__main__':
+    global config
     config = yaml.load(open("config/game.yaml"))['game']
     def run(*args):
         server.run_server(config)

+ 0 - 1
citybuilder/messagehandler.py

@@ -61,6 +61,5 @@ class MessageHandler:
                 result = {'result': 0}
             result['context'] = message
             connection.send_json(result)
-            player.update()
         else:
              connection.send_json({'result': 404})

+ 7 - 1
citybuilder/player.py

@@ -54,8 +54,14 @@ class Player:
     def add_job(self, product):
         self.jobs.append(Job(self, product))
 
-    def update(self):
+    def update(self, config, tick_length):
         self.jobs = [job for job in self.jobs if not job.check_finish()]
+        # Resource generation
+        for building in self.buildings.keys():
+            spec = config['building'][building]
+            if 'production' in spec:
+                self.resources[spec['production']] += spec['levels'][self.buildings[building] - 1]['rate'] * tick_length
+        
         self.ws.send_json({
             'username': self.username,
             'jobs': [{ 'product': job.product, 'finish_time': job.finish_time } for job in self.jobs],

+ 10 - 0
config/game.yaml

@@ -25,6 +25,16 @@ game:
             gold: 50
             wood: 200
             time: 300
+    goldmine:
+      name: Gold Mine
+      production: gold
+      levels:
+        -
+          rate: 1 # Resources / second
+          cost:
+            gold: 20
+            wood: 100
+            time: 10
     library:
       name: Library
       levels: