Commit | Line | Data |
---|---|---|
8ee66edd FC |
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() |