Browse Source

Move resource checking to Player class

Tankernn 7 years ago
parent
commit
a5d65d87fe
2 changed files with 14 additions and 12 deletions
  1. 3 12
      citybuilder/messagehandler.py
  2. 11 0
      citybuilder/player.py

+ 3 - 12
citybuilder/messagehandler.py

@@ -11,20 +11,11 @@ class MessageHandler:
         }
         self.config = config
 
-    def resource_check(self, player, cost):
-        cost = { k: cost[k] for k in cost.keys() if k != "time" }
-        for resource, required in cost.items():
-            if player.resources[resource] < required:
-                return False
-        for resource, required in cost.items():
-            player.resources[resource] -= required
-        return True
-
     def build(self, player, message):
         spec = self.config['building'][message['name']]
         level_index = player.buildings[message['name']]
         cost = spec['levels'][level_index]['cost']
-        if not self.resource_check(player, cost):
+        if not player.resource_check(cost):
             return {
                 'result': 1
             }
@@ -42,7 +33,7 @@ class MessageHandler:
             }
         level_index = message['level'] - 1
         cost = spec['levels'][level_index]['cost']
-        if not self.resource_check(player, cost):
+        if not player.resource_check(cost):
             return {
                 'result': 1
             }
@@ -55,7 +46,7 @@ class MessageHandler:
 
     def mission(self, player, message):
         mission = player.missions[message['index']]
-        if not self.resource_check(player, mission['cost']):
+        if not player.resource_check(mission['cost']):
             return {
                 'result': 1
             }

+ 11 - 0
citybuilder/player.py

@@ -72,6 +72,17 @@ class Player:
         self.resources[resource] += amount
         self.resources[resource] = min(self.get_storage_space(resource), self.resources[resource])
 
+    def resource_check(self, cost):
+        """Checks if the resources are available,
+        and takes them if that is the case."""
+        cost = { k: cost[k] for k in cost.keys() if k != "time" }
+        for resource, required in cost.items():
+            if self.resources[resource] < required:
+                return False
+        for resource, required in cost.items():
+            self.resources[resource] -= required
+        return True
+
     def update(self, tick_length):
         while len(self.missions) < self.buildings['palace'] + 1:
             random_index = randrange(0, len(core.config['missions']))