ya2 · news · projects · code · about

refactoring of functional tests
[pmachines.git] / lib / engine / engine.py
1 from sys import path
2 from os.path import dirname, realpath
3 path.append(dirname(realpath(__file__)) + '/../thirdparty')
4
5 from lib.lib.builder import LibBuilder
6 from lib.engine.pause import PauseMgr
7 from lib.engine.profiler import AbsProfiler
8 from lib.engine.shader import ShaderMgr
9 from lib.engine.log import LogMgr
10 from lib.engine.font import FontMgr
11 from lib.engine.phys import PhysMgr
12 from lib.engine.gfx import EngineGfx
13 from lib.engine.network.server import Server
14 from lib.engine.network.client import Client
15 from lib.engine.gui.gui import EngineGui
16 from lib.engine.logic import EngineLogic
17 from lib.engine.event import EngineEvent
18 from lib.engine.audio import EngineAudio
19 from lib.engine.lang import LangMgr
20 from lib.gameobject import GameObject, Colleague
21 from lib.engine.enginefacade import EngineFacade
22 from lib.engine.configuration import Cfg
23 from lib.engine.cbmux import CallbackMux
24 from lib.engine.clock import Clock
25
26
27 class Engine(GameObject, EngineFacade):
28
29 network_priority = -39
30
31 def __init__(self, cfg=None, end_cb=None, client_cls=None):
32 self.lib = LibBuilder.build()
33 self.lib.configure()
34 self.lib.init(end_cb=end_cb)
35 Colleague.eng = GameObject.eng = self
36 cfg = cfg or Cfg() # use a default conf if not provided
37 self.shader_mgr = ShaderMgr(cfg.dev_cfg.shaders_dev, cfg.dev_cfg.gamma)
38 self.profiler = AbsProfiler.build(cfg.profiling_cfg.pyprof_percall)
39 self.font_mgr = FontMgr()
40 self.server = Server(cfg.dev_cfg.port)
41 client_cls = client_cls or Client
42 self.client = client_cls(cfg.dev_cfg.port, cfg.dev_cfg.server)
43 self.cb_mux = CallbackMux()
44 self.logic = EngineLogic(self, cfg)
45 self.log_mgr = LogMgr.init_cls()(self)
46 self.gfx = EngineGfx(self, cfg.dev_cfg.model_path,
47 cfg.gui_cfg.antialiasing,
48 cfg.gui_cfg.shaders,
49 cfg.gui_cfg.fixed_fps,
50 cfg.dev_cfg.srgb)
51 self.phys_mgr = PhysMgr(self)
52 self.event = EngineEvent(self, cfg.dev_cfg.menu_joypad,
53 cfg.dev_cfg.functional_test)
54 self.gui = EngineGui.init_cls()(self)
55 self.audio = EngineAudio(self, cfg.gui_cfg.volume)
56 self.pause = PauseMgr(self)
57 self.lang_mgr = LangMgr(cfg.lang_cfg.lang,
58 cfg.lang_cfg.lang_domain,
59 cfg.lang_cfg.lang_path)
60 GameObject.__init__(self)
61 self.clock = Clock(self.pause)
62
63 def destroy(self):
64 GameObject.destroy(self)
65 self.lib.destroy()
66 self.shader_mgr.destroy()
67 self.profiler.destroy()
68 self.font_mgr.destroy()
69 self.server.destroy()
70 self.client.destroy()
71 # self.xmpp.destroy()
72 self.logic.destroy()
73 self.log_mgr.destroy()
74 self.gfx.destroy()
75 self.phys_mgr.destroy()
76 self.event.destroy()
77 self.gui.destroy()
78 self.audio.destroy()
79 self.pause.destroy()
80 self.lang_mgr.destroy()
81 self.lib = self.shader_mgr = self.profiler = self.font_mgr = \
82 self.server = self.client = None
83 base.destroy()