from json import loads
from collections import namedtuple
from panda3d.core import AmbientLight, Texture, TextPropertiesManager, \
- TextNode, Spotlight, PerspectiveLens, BitMask32, NodePath
+ TextNode, Spotlight, PerspectiveLens, BitMask32
from panda3d.bullet import BulletPlaneShape, BulletGhostNode
from direct.gui.OnscreenImage import OnscreenImage
from direct.gui.OnscreenText import OnscreenText
from pmachines.items.teetertooter import TeeterTooter
from pmachines.editor.scene import SceneEditor
from ya2.utils.cursor import MouseCursor
-from ya2.p3d.gfx import P3dGfxMgr
-from ya2.p3d.p3d import LibP3d
+from ya2.utils.gfx import GfxTools, DirectGuiMixin
+from ya2.utils.gui import GuiTools
class Scene(DirectObject):
frameColor=fcols[0] if binfo[2] == NORMAL else fcols[1],
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
+ btn.__class__ = type('DirectButtonMixed', (DirectButton, DirectGuiMixin), {})
btn.set_transparency(True)
- self._pos_mgr.register(binfo[0], LibP3d.wdg_pos(btn))
+ self._pos_mgr.register(binfo[0], btn.pos_pixel())
btns += [btn]
if self.__editor:
self.__home_btn, self.__info_btn, self.__editor_btn, self.__right_btn = btns
def _unset_gui(self):
btns = [
- self.__home_btn, self.__info_btn, self.__right_btn,
+ self.__home_btn, self.__info_btn, self.__right_btn
#self.__next_btn, self.__prev_btn, self.__rewind_btn
]
+ if self.__editor: btns += [self.__editor_btn]
[btn.destroy() for btn in btns]
if self._dbg_items:
self._info_txt.destroy()
def _get_hits(self):
if not base.mouseWatcherNode.has_mouse(): return []
- p_from, p_to = P3dGfxMgr.world_from_to(base.mouseWatcherNode.get_mouse())
+ p_from, p_to = GuiTools.get_mouse().from_to_points()
return self._world.ray_test_all(p_from, p_to).get_hits()
def _update_info(self, item):
self._start_evt_time = None
self._set_win() if self._enforce_res == 'win' else self._set_fail()
if any(itm._overlapping for itm in self.items):
- self._cursor.cursor_img.img.set_color(.9, .1, .1, 1)
+ self._cursor.cursor_img.set_color(.9, .1, .1, 1)
else:
- self._cursor.cursor_img.img.set_color(.9, .9, .9, 1)
+ self._cursor.cursor_img.set_color(.9, .9, .9, 1)
return task.cont
def cb_inst(self, item):
relief=FLAT, frameColor=(.6, .6, .6, .08),
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
+ btn.__class__ = type('DirectButtonMixed', (DirectButton, DirectGuiMixin), {})
btn.set_transparency(True)
- self._pos_mgr.register('close_instructions', LibP3d.wdg_pos(btn))
+ self._pos_mgr.register('close_instructions', btn.pos_pixel())
def _set_win(self):
self.__persistent.save_scene(self.__json_name, self.version(self.__json_name))
relief=FLAT, frameColor=(.6, .6, .6, .08),
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
+ btn.__class__ = type('DirectButtonMixed', (DirectButton, DirectGuiMixin), {})
btn.set_transparency(True)
- self._pos_mgr.register('home_win', LibP3d.wdg_pos(btn))
+ self._pos_mgr.register('home_win', btn.pos_pixel())
imgs = [self.__load_img_btn('rewind', col) for col in colors]
btn = DirectButton(
image=imgs, scale=btn_scale,
relief=FLAT, frameColor=(.6, .6, .6, .08),
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
- self._pos_mgr.register('replay', LibP3d.wdg_pos(btn))
+ btn.__class__ = type('DirectButtonMixed', (DirectButton, DirectGuiMixin), {})
+ self._pos_mgr.register('replay', btn.pos_pixel())
btn.set_transparency(True)
if self.__json_name:
enabled = self._scenes.index(self.__json_name) < len(self._scenes) - 1
frameColor=(.6, .6, .6, .08),
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
+ btn.__class__ = type('DirectButtonMixed', (DirectButton, DirectGuiMixin), {})
btn['state'] = NORMAL if enabled else DISABLED
- self._pos_mgr.register('next', LibP3d.wdg_pos(btn))
+ self._pos_mgr.register('next', btn.pos_pixel())
btn.set_transparency(True)
def _set_fail(self):
relief=FLAT, frameColor=(.6, .6, .6, .08),
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
- self._pos_mgr.register('home_win', LibP3d.wdg_pos(btn))
+ btn.__class__ = type('DirectButtonMixed', (DirectButton, DirectGuiMixin), {})
+ self._pos_mgr.register('home_win', btn.pos_pixel())
btn.set_transparency(True)
imgs = [self.__load_img_btn('rewind', col) for col in colors]
btn = DirectButton(
relief=FLAT, frameColor=(.6, .6, .6, .08),
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
- self._pos_mgr.register('replay', LibP3d.wdg_pos(btn))
+ btn.__class__ = type('DirectButtonMixed', (DirectButton, DirectGuiMixin), {})
+ self._pos_mgr.register('replay', btn.pos_pixel())
btn.set_transparency(True)
def _on_restart(self, frm):
self.__home_btn, self.__info_btn, self.__right_btn,
#self.__next_btn, self.__prev_btn, self.__rewind_btn
]
+ if self.__editor: btns += [self.__editor_btn]
self.__btn_state = [btn['state'] for btn in btns]
for btn in btns:
btn['state'] = DISABLED
self.__home_btn, self.__info_btn, self.__right_btn,
#self.__next_btn, self.__prev_btn, self.__rewind_btn
]
+ if self.__editor: btns += [self.__editor_btn]
for btn, state in zip(btns, self.__btn_state):
btn['state'] = state
[itm.restore_state() for itm in self.__items]
def frame_after(task):
self._define_test_items()
for itm in self._test_items:
- self._pos_mgr.register(itm.name, P3dGfxMgr.pos2d_p2d(itm))
+ self._pos_mgr.register(itm.name, itm.pos2d_pixel())
taskMgr.doMethodLater(1.4, frame_after, 'frame after') # after the intro sequence
def _define_test_items(self):
self._set_test_item(item['id'], tuple(item['position']))
def _set_test_item(self, name, pos):
- self._test_items += [NodePath(name)]
+ self._test_items += [GfxTools.build_empty_node(name)]
self._test_items[-1].set_pos(pos[0], 0, pos[1])
def add_item(self, item):