ya2 · news · projects · code · about

refactoring of functional tests
[pmachines.git] / lib / engine / engine.py
CommitLineData
8ee66edd
FC
1from sys import path
2from os.path import dirname, realpath
3path.append(dirname(realpath(__file__)) + '/../thirdparty')
4
5from lib.lib.builder import LibBuilder
6from lib.engine.pause import PauseMgr
7from lib.engine.profiler import AbsProfiler
8from lib.engine.shader import ShaderMgr
9from lib.engine.log import LogMgr
10from lib.engine.font import FontMgr
11from lib.engine.phys import PhysMgr
12from lib.engine.gfx import EngineGfx
13from lib.engine.network.server import Server
14from lib.engine.network.client import Client
15from lib.engine.gui.gui import EngineGui
16from lib.engine.logic import EngineLogic
17from lib.engine.event import EngineEvent
18from lib.engine.audio import EngineAudio
19from lib.engine.lang import LangMgr
20from lib.gameobject import GameObject, Colleague
21from lib.engine.enginefacade import EngineFacade
22from lib.engine.configuration import Cfg
23from lib.engine.cbmux import CallbackMux
24from lib.engine.clock import Clock
25
26
27class 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()