super().__init__()
self.__items = items
self.__json = json
- self.__json_name = json_name
+ if not json_name:
+ self.__json = json = {
+ 'name': '',
+ 'instructions': '',
+ 'version': '',
+ 'items': [],
+ 'start_items': [],
+ 'test_items': {
+ 'pixel_space': [],
+ 'world_space': []}}
self.__inspector = None
self.__context = context
self.__add_item = add_item
'assets/audio/sfx/rollover.ogg'),
'clickSound': loader.load_sfx(
'assets/audio/sfx/click.ogg')}
- w, h, tw, l = 1.8, .9, 30, .36
+ w, h, tw, l = 1.8, 1, 30, .36
self._frm = DirectFrame(frameColor=(.4, .4, .4, .06),
frameSize=(0, w, 0, h),
parent=base.a2dBottomCenter,
pos=(-w/2, 0, 0))
OnscreenText(
- _('Name'), pos=(l - .03, h - .1), parent=self._frm,
+ _('Filename'), pos=(l - .03, h - .1), parent=self._frm,
font=self._common['text_font'],
scale=self._common['scale'],
fg=self._common['text_fg'],
align=TextNode.A_right)
- self.__name_entry = DirectEntry(
+ self.__filenamename_entry = DirectEntry(
scale=self._common['scale'],
pos=(l, 1, h - .1),
entryFont=self._font,
width=tw,
frameColor=self._common['frameColor'],
+ initialText=json_name,
+ parent=self._frm,
+ text_fg=self._common['text_fg'])
+ OnscreenText(
+ _('Name'), pos=(l - .03, h - .2), parent=self._frm,
+ font=self._common['text_font'],
+ scale=self._common['scale'],
+ fg=self._common['text_fg'],
+ align=TextNode.A_right)
+ self.__name_entry = DirectEntry(
+ scale=self._common['scale'],
+ pos=(l, 1, h - .2),
+ entryFont=self._font,
+ width=tw,
+ frameColor=self._common['frameColor'],
initialText=json['name'],
parent=self._frm,
text_fg=self._common['text_fg'])
OnscreenText(
- _('Description'), pos=(l - .03, h - .2), parent=self._frm,
+ _('Description'), pos=(l - .03, h - .3), parent=self._frm,
font=self._common['text_font'],
scale=self._common['scale'],
fg=self._common['text_fg'],
entry['focus']=1
self.__instructions_entry = DirectEntry(
scale=self._common['scale'],
- pos=(l, 1, h - .2),
+ pos=(l, 1, h - .3),
entryFont=self._font,
width=tw,
numLines=12,
item_text_font=self._font, item_text_fg=(.9, .9, .9, 1),
rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
+ DirectButton(
+ image=load_images_btn('plus', 'gray'), scale=.05,
+ pos=(.06, 1, .58),
+ parent=self._frm, command=self.__on_new_scene, state=NORMAL, relief=FLAT,
+ frameColor=fcols[0],
+ rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
+ clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
messenger.send('editor-start')
self.accept('editor-item-click', self.__on_item_click)
self.accept('editor-inspector-destroy', self.__on_inspector_destroy)
def __actually_close(self, arg):
if arg:
- self._frm.destroy()
+ self.destroy()
messenger.send('editor-stop')
self.__dialog.cleanup()
self.__json['name'] = self.__name_entry.get()
self.__json['instructions'] = self.__instructions_entry.get()
self.__json['version'] = self.__compute_hash()
- with open('assets/scenes/%s.json' % self.__json_name, 'w') as f:
+ json_name = self.__filenamename_entry.get()
+ with open('assets/scenes/%s.json' % json_name, 'w') as f:
f.write(dumps(self.__json, indent=2, sort_keys=True))
def __on_scene_list(self):
def __on_inspector_destroy(self):
self.__inspector = None
+
+ def __on_new_scene(self):
+ self.destroy()
+ messenger.send('editor-stop')
+ messenger.send('new_scene')
+
+ def destroy(self):
+ self._frm.destroy()
+ if self.__inspector:
+ self.__inspector.destroy()
+ self.ignore('editor-item-click')
+ self.ignore('editor-inspector-destroy')