Browse Source

Reference core.config instead of passing config as a parameter

Frans Bergman 7 years ago
parent
commit
44e12be5a2
3 changed files with 14 additions and 15 deletions
  1. 4 4
      citybuilder/core.py
  2. 5 4
      citybuilder/player.py
  3. 5 7
      citybuilder/server.py

+ 4 - 4
citybuilder/core.py

@@ -3,19 +3,19 @@ import _thread
 from . import server
 import time
 
+config = yaml.load(open("config/game.yaml"))['game']
+
 def main_loop():
     for player in list(server.players.values()):
-        player.update(config, time.time() - main_loop.last_tick)
+        player.update(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)
+        server.run_server()
         print("Websocket thread terminated.")
     _thread.start_new_thread(run, ())
 

+ 5 - 4
citybuilder/player.py

@@ -1,6 +1,7 @@
 from passlib.hash import pbkdf2_sha256
 import time
 import json
+from citybuilder import core
 
 
 class Unit:
@@ -26,11 +27,11 @@ class Job:
 
 
 class Player:
-    def __init__(self, username, password, config):
+    def __init__(self, username, password):
         self.username = username
         self.set_password(password)
         self.jobs = list()
-        self.buildings = { key: 0 for key in config['building'] }
+        self.buildings = { key: 0 for key in core.config['building'] }
         self.units = list()
         self.resources = {
             'gold': 100,
@@ -54,11 +55,11 @@ class Player:
     def add_job(self, product):
         self.jobs.append(Job(self, product))
 
-    def update(self, config, tick_length):
+    def update(self, 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]
+            spec = core.config['building'][building]
             if 'production' in spec:
                 self.resources[spec['production']] += spec['levels'][self.buildings[building] - 1]['rate'] * tick_length
         

+ 5 - 7
citybuilder/server.py

@@ -2,6 +2,7 @@ from SimpleWebSocketServer import SimpleWebSocketServer, WebSocket
 import json
 from citybuilder.messagehandler import MessageHandler
 from citybuilder.player import Player
+from citybuilder import core
 
 connections = {}
 players = {}
@@ -9,7 +10,6 @@ players = {}
 class MainServerSocket(WebSocket):
 
     def handleMessage(self):
-        global config
         try:
             print("Message received: " + self.data)
             message = json.loads(self.data)
@@ -25,7 +25,7 @@ class MainServerSocket(WebSocket):
                 elif message['type'] == "register":
                     if message['username'] not in players:
                         connections[message['username']] = self
-                        players[message['username']] = Player(message['username'], message['password'], config)
+                        players[message['username']] = Player(message['username'], message['password'])
                         self.player = players[message['username']]
                         self.player.login(self)
                     else:
@@ -47,10 +47,8 @@ class MainServerSocket(WebSocket):
     def handleClose(self):
         print(self.address, 'closed')
 
-def run_server(configuration):
+def run_server():
     global messagehandler
-    global config
-    config = configuration
-    messagehandler = MessageHandler(config)
-    server = SimpleWebSocketServer('', config['server']['port'], MainServerSocket)
+    messagehandler = MessageHandler(core.config)
+    server = SimpleWebSocketServer('', core.config['server']['port'], MainServerSocket)
     server.serveforever()