コード例 #1
0
 def __init__(self, editor, pos, name):
     self.name = name
     self.buttons = {}
     self.buttons[name + '_label'] = button.DefaultButton(self,
                                                          None,
                                                          pos=(0, 0),
                                                          size=(100, 20),
                                                          text=name)
     self.buttons[name + '_increment'] = button.DefaultButton(
         self,
         change_object_value(editor, name, 1),
         pos=(0, 0),
         size=(30, 30),
         text="+")
     self.buttons[name + '_decrement'] = button.DefaultButton(
         self,
         change_object_value(editor, name, -1),
         pos=(0, 0),
         size=(30, 30),
         text="-")
     self.buttons[name + '_value'] = button.DefaultButton(self,
                                                          None,
                                                          pos=(0, 0),
                                                          size=(30, 30),
                                                          text="0")
     self.pos = pos
コード例 #2
0
ファイル: msg_box.py プロジェクト: ollie27/ghost-simulator
 def __init__(self,
              game,
              text,
              on_complete_fun=None,
              on_yes_fun=None,
              on_no_fun=None):
     super(QuestionBox, self).__init__(game, text, None)
     self.yes_button = button.DefaultButton(owner=self,
                                            function=self.yes,
                                            pos=(350, 220),
                                            text="Yes",
                                            size=(100, 60))
     self.no_button = button.DefaultButton(owner=self,
                                           function=self.no,
                                           pos=(550, 220),
                                           text="No",
                                           size=(100, 60))
     self.buttons.append(self.yes_button)
     self.buttons.append(self.no_button)
     if on_complete_fun is not None:
         self.on_complete = on_complete_fun
     if on_yes_fun is not None:
         self.on_yes = on_yes_fun
     if on_no_fun is not None:
         self.on_no = on_no_fun
コード例 #3
0
ファイル: msg_box.py プロジェクト: ollie27/ghost-simulator
 def __init__(self, game, text, on_hide_fun=None):
     super(InfoBox, self).__init__(game, text, on_hide_fun)
     self.ok_button = button.DefaultButton(owner=self,
                                           function=self.hide,
                                           pos=(500, 220),
                                           text="OK",
                                           size=(100, 60))
     self.buttons.append(self.ok_button)
コード例 #4
0
    def __init__(self,
                 owner=None,
                 items=None,
                 function=None,
                 color=(120, 0, 0),
                 border_color=(120, 50, 80),
                 border_width=2,
                 text=None,
                 font_size=10,
                 labels='dictkey',
                 order=(0, 0),
                 window=window,
                 **kwargs):
        super(DropDownList, self).__init__(window=window, **kwargs)
        self.color = color
        self.border_color = border_color
        self.border_width = border_width
        self.text = text
        self.font_size = font_size
        self.labels = labels
        self._open = False

        self._drop_group = pyglet.graphics.OrderedGroup(99, self._group)

        self.function = function

        self.order = order
        self.owner = owner  # container that created the button, allows for the button function to interact with its creator

        self.items = items
        self.selected_name = "<None>"
        self.selected = None
        self.main_button = button.DefaultButton(
            owner=self,
            function=self.main_button_click,
            pos=self.pos,
            size=self.size,
            font_size=font_size,
            visible=self.visible,
            text=u"<None>",
            border_color=self.border_color,
            border_width=self.border_width,
            color=self.color,
            batch=self._batch,
            group=self._group)
        self.drop_buttons = []

        self.first_time = True
        self.refresh()

        self.high_color = (0, 120, 0)
        self.high_border_color = (0, 200, 0)

        self.update_buttons()
コード例 #5
0
ファイル: msg_box.py プロジェクト: ollie27/ghost-simulator
 def __init__(self, game, text, on_hide_fun=None):
     self.game = game
     if on_hide_fun is not None:
         self.on_hide = on_hide_fun
     self.background = button.DefaultButton(owner=self,
                                            function=None,
                                            pos=(300, 200),
                                            text=text,
                                            size=(500, 400))
     self.buttons = []
     self.visible = False
コード例 #6
0
    def __init__(self,
                 game,
                 toggle_button_text,
                 pos=(0, 0),
                 toggle_pos=(0, 0),
                 toggle_order=None):
        """
        Set .pre = unique identifying sting to prevent name conflicts when combined into update list in .game

        Toggle button for the editor appears at toggle_pos.
        If toggle_order != None, then overrides toggle_pos. Then toggle button for this editor is aligned to the grid of owning editor.

        Append editors that stem from this editor in self.sub_editors.
            - sub_editors_pos is top-left of where it will appear when enabled

        Positions of buttons/lists are done on a grid basis, set with order=(y, x) in declaration.
             - top left of grid is self.pos
             - button size and spacing set with .size, .vert_spacing, .horizontal_spacing
        """
        self.game = game
        self.pre = ''  # button/list name prefix - prevents name conflicts when combined into update list in .game

        self.toggle_button_text = toggle_button_text
        self.toggle_button_name = self.toggle_button_text.lower()
        self.toggle_button_name = self.toggle_button_name.replace(' ', '_')
        self.toggle_button_name = 'toggle_' + self.toggle_button_name

        self.buttons = {}
        self.drop_lists = {}
        self.layouts = {}  # name: (layout, position/order, order=True/False)

        self.sub_editors = []
        self.sub_editors_pos = (0, 0)

        self.enabled = False

        self.size = (120, 20)
        self.vert_spacing = 5
        self.horizontal_spacing = 5

        self._pos = (0, 0)
        self.toggle_pos = toggle_pos
        self.toggle_order = toggle_order
        self.toggle_button = button.DefaultButton(self,
                                                  self.toggle_self,
                                                  text=toggle_button_text,
                                                  pos=toggle_pos)
        self.buttons[self.toggle_button_name] = self.toggle_button

        self.pos = pos
コード例 #7
0
    def create_elements(self):  # placeholder for auto-complete
        def main_label_up():
            x, y = self.buttons['main_label'].pos
            self.pos = (x, y - self.vert_spacing)

        def main_label_drag(dx, dy):
            x, y = self.buttons['main_label'].pos
            self.buttons['main_label'].pos = x + dx, y + dy

        self.buttons['main_label'] = button.DefaultButton(
            self, None, text=self.toggle_button_text, order=(-1, 0))
        self.buttons['main_label'].on_click_up = main_label_up
        self.buttons['main_label'].on_drag = main_label_drag
        self.buttons['main_label'].enabled = True
コード例 #8
0
    def create_elements(self):
        self.buttons = {}
        self.drop_lists = {}

        self.buttons['toggle_trigger_editor'] = button.DefaultButton(self, self.toggle_self, text="Trigger Editor", pos=(0, window.height - 40))

        db = button.DefaultButton

        dl = drop_down_list.DropDownList

        dls = drop_down_list.DropDownListSlider

        self.buttons['create_new_trigger'] = db(self, self.create_new_trigger, text="New Trigger", order=(0, 0))
        self.drop_lists['triggers'] = dls(self, self.game.map.triggers, self.select_trigger, max_display=4, order=(0, 1))
        self.buttons['delete_trigger'] = db(self, self.delete_selected_trigger, text="Delete Trigger", order=(0, 2))

        self.buttons['interaction_type_label'] = db(self, None, text="Interaction Type:", order=(1, 0))
        self.drop_lists['interaction_type'] = dl(self, object_interaction_types, self.set_interaction_type, order=(1, 1))

        self.buttons['pick_interactee'] = db(self, self.pick_interactee, text="Pick Interactee", order=(2, 0))
        self.drop_lists['interactees'] = dl(self, {}, self.select_interactee, order=(2, 1))
        self.buttons['delete_interactee'] = db(self, self.delete_interactee, text="Delete Interactee", order=(2, 2))

        self.buttons['new_zone'] = db(self, self.create_new_zone, text="New Zone", order=(3, 0))
        self.drop_lists['zones'] = dl(self, {}, self.select_zone, order=(3, 1))

        self.buttons['delete_zone'] = db(self, self.delete_selected_zone, text="Delete Zone", order=(4, 0))
        self.buttons['zone_bottomleft'] = db(self, self.zone_bottomleft, text="Select Bottom Left", order=(4, 1))
        self.buttons['zone_topright'] = db(self, self.zone_topright, text="Select Top Right", order=(4, 2))

        self.buttons['pick_target'] = db(self, self.pick_target, text="Pick Target", order=(5, 0))
        self.drop_lists['targets'] = dl(self, {}, self.select_target, order=(5, 1))
        self.buttons['delete_target'] = db(self, self.delete_target, text="Delete Target", order=(5, 2))

        self.buttons['pick_conditional'] = db(self, self.pick_conditional, text="Pick Conditional", order=(6, 0))
        self.drop_lists['conditionals'] = dl(self, {}, self.select_conditional, order=(6, 1))
        self.buttons['delete_conditional'] = db(self, self.delete_conditional, text="Delete Conditional", order=(6, 2))

        self.buttons['action_label'] = db(self, None, text="Action Edit:", order=(7, 0))
        self.drop_lists['new_action'] = dl(self, trigger_functions_dict, self.add_action, order=(7, 1))
        self.drop_lists['actions'] = dl(self, {}, self.select_action, order=(7, 2), labels='func_name')
        self.buttons['delete_action'] = db(self, self.delete_action, text="Delete Action", order=(7, 3))
        self.drop_lists['action_options'] = dl(self, {}, self.set_action_option, order=(7, 4), visible=False)


        self.update_element_positions()
        self.toggle_self(False)
コード例 #9
0
ファイル: cutscene.py プロジェクト: ollie27/ghost-simulator
    def select_cutscene_action(self):
        # remove old s***e
        if len(self.dyn_lists) > 0 or len(self.dyn_buttons) > 0:
            self.dyn_lists = []
            self.dyn_buttons = []

        # changed? upkeep...
        if self.selected_cutscene_action != self.cutscene_actions_list.selected:
            self.highlighted = []

        self.selected_cutscene_action = self.cutscene_actions_list.selected

        def add_control(x):
            # ALL the boilerplate!
            if isinstance(x, drop_down_list.DropDownList):
                self.dyn_lists.append(x)
            elif isinstance(x, button.Button):
                self.dyn_buttons.append(x)
            add_control.control_i += 1
            return x

        add_control.control_i = 0

        def int_dec_fun(ev, attr):
            dec = 1
            if self.game.key_controller.keys[
                    Pkey.LSHIFT] or self.game.key_controller.keys[Pkey.RSHIFT]:
                dec = 10
            if self.game.key_controller.keys[
                    Pkey.LCTRL] or self.game.key_controller.keys[Pkey.RCTRL]:
                dec = 50
            setattr(ev, attr, getattr(ev, attr) - dec)

        def int_inc_fun(ev, attr):
            inc = 1
            if self.game.key_controller.keys[
                    Pkey.LSHIFT] or self.game.key_controller.keys[Pkey.RSHIFT]:
                inc = 10
            if self.game.key_controller.keys[
                    Pkey.LCTRL] or self.game.key_controller.keys[Pkey.RCTRL]:
                inc = 50
            setattr(ev, attr, getattr(ev, attr) + inc)

        def bool_toggle_fun(ev, attr):
            setattr(ev, attr, not getattr(ev, attr))

        def obj_ref_sel_fun(ev, attr):
            def finish_obj_click(o_name):
                self.highlighted.remove(str(ev) + '-' + attr)
                setattr(ev, attr, o_name)
                self.select_cutscene_action()
                self.refresh_cutscene_actions()

            # are they actually unclicking the button?
            if (str(ev) + '-' + attr) in self.highlighted:
                self.highlighted.remove(str(ev) + '-' + attr)
            else:
                self.highlighted.append(str(ev) + '-' + attr)
                self.game.mouse_controller.pick_object(finish_obj_click)

        def pick_coords_fun(ev, attr):
            def finish_coords_click(pos):
                self.highlighted.remove(str(ev) + '-' + attr)
                dest = pos
                dest = (dest[0] - 12, dest[1])
                setattr(ev, attr, dest)
                self.select_cutscene_action()
                self.refresh_cutscene_actions()

            # unclicking?
            if (str(ev) + '-' + attr) in self.highlighted:
                self.highlighted.remove(str(ev) + '-' + attr)
            else:
                self.highlighted.append(str(ev) + '-' + attr)
                self.game.mouse_controller.pick_position(finish_coords_click)

        def drop_down_fun(ev, attr):
            # wow such hack
            s = getattr(self, self.hint).selected
            setattr(ev, attr, s)

        def drop_down_fun2(ev, attr):
            s = getattr(ev, 'drop_friend_' + attr).selected
            setattr(ev, attr, s)

        def incredifun(thing, attr, fun, hint=None):
            def clicky():
                self.hint = hint
                fun(thing, attr)
                self.select_cutscene_action()  # re-render controls
                self.refresh_cutscene_actions(
                )  # re-render action descriptions

            return clicky

        # new s***e?
        if self.selected_cutscene_action:
            ev = self.selected_cutscene_action

            def get_pos(add_x=20):
                get_pos.x_pos += add_x
                return 930 + get_pos.x_pos - add_x, 240 - get_pos.row * 20

            get_pos.row = 0
            get_pos.x_pos = 0

            for k, v in ev.get_editor().iteritems():
                add_control(
                    button.DefaultButton(self,
                                         None,
                                         get_pos(add_x=80),
                                         text=k,
                                         size=(80, 20)))
                if v == 'int':
                    add_control(
                        button.DefaultButton(self,
                                             incredifun(ev, k, int_dec_fun),
                                             get_pos(),
                                             text="-",
                                             size=(20, 20)))
                    add_control(
                        button.DefaultButton(self,
                                             None,
                                             get_pos(add_x=50),
                                             text=str(getattr(ev, k)),
                                             size=(50, 20)))
                    add_control(
                        button.DefaultButton(self,
                                             incredifun(ev, k, int_inc_fun),
                                             get_pos(),
                                             text="+",
                                             size=(20, 20)))
                elif v == 'string':
                    print('TODO string')
                elif v == 'obj_ref':
                    add_control(
                        button.DefaultButton(self,
                                             None,
                                             get_pos(add_x=100),
                                             text=getattr(ev, k),
                                             size=(100, 20)))

                    if not (str(ev) + '-' + k) in self.highlighted:
                        add_control(
                            button.DefaultButton(self,
                                                 incredifun(
                                                     ev, k, obj_ref_sel_fun),
                                                 get_pos(50),
                                                 text="Pick",
                                                 size=(50, 20)))
                    else:
                        add_control(
                            button.Button(self,
                                          incredifun(ev, k, obj_ref_sel_fun),
                                          get_pos(50),
                                          text="Pick",
                                          size=(50, 20),
                                          color=(0, 120, 0),
                                          border_color=(0, 200, 0),
                                          border_width=3))
                elif v == 'coords':
                    add_control(
                        button.DefaultButton(self,
                                             None,
                                             get_pos(add_x=100),
                                             text=str(getattr(ev, k)),
                                             size=(100, 20)))

                    if not (str(ev) + '-' + k) in self.highlighted:
                        add_control(
                            button.DefaultButton(self,
                                                 incredifun(
                                                     ev, k, pick_coords_fun),
                                                 get_pos(50),
                                                 text="Pick",
                                                 size=(50, 20)))
                    else:
                        add_control(
                            button.Button(self,
                                          incredifun(ev, k, pick_coords_fun),
                                          get_pos(50),
                                          text="Pick",
                                          size=(50, 20),
                                          color=(0, 120, 0),
                                          border_color=(0, 200, 0),
                                          border_width=3))
                elif v == 'bool':
                    if getattr(ev, k):
                        add_control(
                            button.Button(self,
                                          incredifun(ev, k, bool_toggle_fun),
                                          get_pos(50),
                                          text=u"\u2713",
                                          color=(0, 120, 0),
                                          border_color=(0, 200, 0),
                                          size=(50, 20),
                                          border_width=3))
                    else:
                        add_control(
                            button.DefaultButton(self,
                                                 incredifun(
                                                     ev, k, bool_toggle_fun),
                                                 get_pos(50),
                                                 text="x",
                                                 size=(50, 20)))
                elif v == 'dialogue_file':
                    files = os.listdir(constants.DIALOGUE_DIR)
                    fd = {}
                    for f in files:
                        fd[f] = f
                    # hack!
                    self.dfc = add_control(
                        drop_down_list.DropDownList(self,
                                                    fd,
                                                    None,
                                                    get_pos(250),
                                                    size=(250, 20)))
                    if getattr(ev, k) is not None:
                        try:
                            self.dfc.list_func(getattr(ev, k))()
                        except:
                            self.dfc.list_func(None)()
                            setattr(ev, k, None)
                    self.dfc.function = incredifun(ev, k, drop_down_fun, 'dfc')
                elif v == 'dialogue_heading':
                    # woo assumptions
                    dd = collections.OrderedDict()
                    try:
                        d = dialogue.load_dialogue(getattr(
                            ev, 'dialogue_file'))
                        for dk in d.keys():
                            dd[dk] = dk
                    except:
                        pass
                    # hack!
                    self.dhc = add_control(
                        drop_down_list.DropDownList(self,
                                                    dd,
                                                    None,
                                                    get_pos(250),
                                                    size=(250, 20)))
                    if getattr(ev, k) is not None:
                        try:
                            self.dhc.list_func(getattr(ev, k))()
                        except:
                            self.dhc.list_func(None)()
                            setattr(ev, k, None)
                    self.dhc.function = incredifun(ev, k, drop_down_fun, 'dhc')
                elif v == 'string_drop_down':
                    dd = collections.OrderedDict()
                    try:
                        l = ev.get_autocomplete(k)
                        for dkey in l:
                            dd[dkey] = dkey
                    except:
                        pass
                    ddl = add_control(
                        drop_down_list.DropDownList(self,
                                                    dd,
                                                    None,
                                                    get_pos(250),
                                                    size=(250, 20)))
                    setattr(ev, 'drop_friend_' + k, ddl)
                    if getattr(ev, k) is not None:
                        try:
                            ddl.set_to_value(getattr(ev, k))
                        except:
                            ddl.set_to_default()
                            setattr(ev, k, None)
                    ddl.function = incredifun(ev, k, drop_down_fun2)
                else:
                    print("!!! Cutscene action editor doesn't know what a '" +
                          v + "' is")

                get_pos.x_pos = 0
                get_pos.row += 1
コード例 #10
0
ファイル: cutscene.py プロジェクト: ollie27/ghost-simulator
    def __init__(self, game, main_editor):
        self.game = game
        self.main_editor = main_editor

        self.cutscenes = self.game.map.cutscenes.copy()
        self.cutscenes['New... (TODO)'] = None
        self.possible_cutscene_actions = cutscene.possible_actions

        self.static_buttons = []
        self.static_lists = []

        def pu(tine):
            if isinstance(tine, button.Button):
                self.static_buttons.append(tine)
            else:
                self.static_lists.append(tine)
            return tine

        # Misc
        self.toggle_button = pu(
            button.DefaultButton(self,
                                 self.toggle_visible,
                                 pos=(0, window.height - 20),
                                 size=(100, 20),
                                 text="Cutscenes"))
        self.toggle_button.enabled = True
        self.cutscene_list = pu(
            drop_down_list.DropDownList(self,
                                        self.cutscenes,
                                        self.select_cutscene,
                                        pos=(980, window.height - 55),
                                        size=(300, 20)))
        self.cutscene_status_button = pu(
            button.DefaultButton(self,
                                 None,
                                 pos=(1060, window.height - 75),
                                 size=(1280 - 1060, 20),
                                 text="No cutscene selected."))

        # Cutscene playback controls
        self.play_button = pu(
            button.DefaultButton(self,
                                 self.play_cutscene,
                                 pos=(980, window.height - 75),
                                 size=(20, 20),
                                 text=u"\u25B6"))
        self.play_and_run_button = pu(
            button.DefaultButton(self,
                                 self.play_cutscene_and_run,
                                 pos=(1000, window.height - 75),
                                 size=(40, 20),
                                 text=u"\u25B6 R"))
        self.stop_button = pu(
            button.DefaultButton(self,
                                 self.stop_cutscene,
                                 pos=(1040, window.height - 75),
                                 size=(20, 20),
                                 text=u"\u25A0"))

        # Controls to add new action
        self.cutscene_new_action_list = pu(
            drop_down_list.DropDownList(self,
                                        cutscene.possible_actions,
                                        None,
                                        pos=(980, window.height - 95),
                                        size=(280, 20)))
        pu(
            button.DefaultButton(self,
                                 self.add_cutscene_action,
                                 pos=(980 + 280, window.height - 95),
                                 size=(20, 20),
                                 text="+"))

        # Manipulate action order
        pu(
            button.DefaultButton(self,
                                 self.push_cutscene_action_up,
                                 pos=(880, window.height - 115),
                                 size=(50, 20),
                                 text="push ^"))
        pu(
            button.DefaultButton(self,
                                 self.push_cutscene_action_down,
                                 pos=(880, window.height - 135),
                                 size=(50, 20),
                                 text="push v"))
        pu(
            button.DefaultButton(self,
                                 self.delete_cutscene_action,
                                 pos=(880, window.height - 155),
                                 size=(50, 20),
                                 text="-"))
        pu(
            button.DefaultButton(self,
                                 self.scroll_cutscene_actions_up,
                                 pos=(880, window.height - 175),
                                 size=(50, 20),
                                 text="more ^"))
        pu(
            button.DefaultButton(self,
                                 self.scroll_cutscene_actions_down,
                                 pos=(880, window.height - 195),
                                 size=(50, 20),
                                 text="more v"))

        self.selected_cutscene = None
        self.selected_cutscene_action = None
        self.cutscene_actions_desc = collections.OrderedDict()

        self.cutscene_actions_list = pu(
            drop_down_list.DropDownList(self,
                                        self.cutscene_actions_desc,
                                        self.select_cutscene_action,
                                        pos=(930, window.height - 95),
                                        size=(350, 20)))

        self.dyn_buttons = []
        self.dyn_lists = []

        self.playing = False

        self.highlighted = []

        self.hint = None

        self.visible = False
        self._update_visible()
コード例 #11
0
    def __init__(self, game):
        self.game = game

        self.save_state = None  # to go back to when you re-open editor after testing your changes
        self.undo_states = []
        self.undo_index = 0

        self.text_sprites = {}
        self.font_size = 20

        self.buttons = {}
        self.drop_lists = {}

        ###################################################################
        # Place new object
        ###################################################################

        # self.possible_characters = character_objects.possible_characters
        # self.possible_characters = dict(self.possible_characters.items() + prop_objects.possible_props.items())
        self.possible_characters = {}

        self.buttons['place_object_label'] = button.DefaultButton(
            self, None, pos=(100, window.height - 20), text="Place Object")
        self.drop_lists['place_object'] = drop_down_list.DropDownList(
            self,
            self.possible_characters,
            self.update_object_prototype,
            pos=(200, window.height - 20),
            size=(100, 20))
        self.object_prototype = None
        self.get_possible_characters()

        ###################################################################
        # Trigger Editor
        ###################################################################

        self.trigger_editor = trigger_edit.TriggerEditor(self.game)
        self.buttons['toggle_trigger_editor'] = self.trigger_editor.buttons[
            'toggle_trigger_editor']

        self.buttons = dict(self.buttons.items() +
                            self.trigger_editor.buttons.items())
        self.drop_lists = dict(self.drop_lists.items() +
                               self.trigger_editor.drop_lists.items())

        ###################################################################
        # Character Template Editor
        ###################################################################

        self.character_template_editor = character_edit.CharacterTemplateEditor(
            self.game, self)
        self.buttons[
            'toggle_char_edit'] = self.character_template_editor.toggle_button

        # # add prefix to keys, then combine with main editor buttons
        # char_edit_buttons_prefixed = {}
        # for k, v in self.character_template_editor.buttons.iteritems():
        #     char_edit_buttons_prefixed[self.character_template_editor.pre + k] = v
        #
        #
        # char_edit_lists_prefixed = {}
        # for k, v in self.character_template_editor.drop_lists.iteritems():
        #     char_edit_lists_prefixed[self.character_template_editor.pre + k] = v
        #
        # self.buttons = dict(self.buttons.items() + char_edit_buttons_prefixed.items())
        # self.drop_lists = dict(self.drop_lists.items() + char_edit_lists_prefixed.items())

        ###################################################################
        # Edit object
        ###################################################################
        # self.object_edit_buttons = []
        # self.object_edit_lists = []
        self.object_to_edit = None
        self.object_to_edit_name = None
        # self.show_fears_checklist = False
        # self.show_scared_of_checklist = False

        self.color = (120, 0, 0)
        self.border_color = (120, 50, 80)
        self.high_color = (0, 120, 0)
        self.high_border_color = (0, 200, 0)

        # self.possible_fears = get_fears_from_file()
        # self.possible_fears.append(u'player')

        # self.int_edits = {}

        h_off = 10
        v_off = 400

        # self.create_checklist_buttons()
        # #fears/scared_by checklist show/hide
        # self.buttons['fears_checklist_toggle'] = button.DefaultButton(self, self.toggle_fears_checklist,
        #                                                               pos=(window.width - 100 - h_off, window.height - v_off - 70),
        #                                                               size=(100, 20), text="Fears")
        # self.buttons['scared_of_checklist_toggle'] = button.DefaultButton(self, self.toggle_scared_of_checklist,
        #                                                               pos=(window.width - 210 - h_off, window.height - v_off - 70),
        #                                                               size=(100, 20), text="Scared Of")
        #
        # # speed and weight edit button sets.
        # self.int_edits['normal_speed'] = IntEdit(self, (window.width - 210 - h_off, window.height - v_off - 35), 'normal_speed')
        # self.int_edits['feared_speed'] = IntEdit(self, (window.width - 100 - h_off, window.height - v_off - 35), 'feared_speed')
        # self.int_edits['collision_weight'] = IntEdit(self, (window.width - 320 - h_off, window.height - v_off - 35), 'collision_weight')
        #
        # for ie in self.int_edits.itervalues():
        #     self.buttons = dict(self.buttons.items() + ie.buttons.items())

        # name edit
        # age edit

        # v_ind = 0
        # # function edit
        # self.show_function_edit = False
        # self.function_edit_buttons = []
        # self.function_edit_lists = []
        # self.buttons['function_edit_toggle'] = button.DefaultButton(self, self.toggle_function_edit,
        #                                                               pos=(window.width - 320 - h_off, window.height - v_off - 70),
        #                                                               size=(100, 20), text="Function Edit", visible=False, enabled=False)
        # self.object_edit_buttons.append('function_edit_toggle')
        # for module, func_dict in character_functions.all_functions_dict.iteritems():
        #     #display button
        #     self.buttons[module] = button.DefaultButton(self, None,
        #                                                 pos=(100, window.height - 200 - v_ind * 40),
        #                                                 size=(200, 20), text=module, visible=False, enabled=False)
        #     self.function_edit_buttons.append(module)
        #     # drop list to choose funciton for each object event type
        #     self.drop_lists[module] = drop_down_list.DropDownList(self, func_dict,
        #                                                           set_function(self, module), pos=(300, window.height - 200 - v_ind * 40),
        #                                                           size=(200, 20), visible=False, enabled=False)
        #     self.function_edit_lists.append(module)
        #     v_ind += 1

        self.buttons['delete_selection'] = button.DefaultButton(
            self,
            self.delete_selected_object,
            pos=(window.width - 210 - h_off, window.height - v_off - 200),
            size=(100, 20),
            text="Delete Object",
            visible=True)
        #
        #
        # self.object_edit_buttons += ['fears_checklist_toggle', 'scared_of_checklist_toggle',
        #                             'normal_speed_label', 'normal_speed_increment', 'normal_speed_decrement', 'normal_speed_value',
        #                             'feared_speed_label', 'feared_speed_increment', 'feared_speed_decrement', 'feared_speed_value',
        #                             'collision_weight_label', 'collision_weight_increment', 'collision_weight_decrement', 'collision_weight_value',
        #                             'delete_selection']
        # for v in self.object_edit_buttons:
        #     self.buttons[v].visible = False
        #     self.buttons[v].enabled = False
        # for v in self.object_edit_lists:
        #     self.drop_lists[v].visible = False
        #     self.drop_lists[v].enabled = False

        ###################################################################
        # Cutscene editor
        ###################################################################
        self.cutscene_editor = cutscene.CutsceneEditor(self.game, self)

        ###################################################################
        # Other buttons
        ###################################################################
        self.buttons['save_map'] = button.DefaultButton(
            self,
            self.save_map,
            pos=(window.width - 100 - h_off, window.height - v_off - 200),
            size=(100, 20),
            text="Save Map",
            visible=True)

        self.buttons['undo'] = button.DefaultButton(
            self,
            self.undo,
            pos=(window.width - 210 - h_off, window.height - v_off - 170),
            size=(100, 20),
            text="Undo",
            visible=True)

        self.buttons['redo'] = button.DefaultButton(
            self,
            self.redo,
            pos=(window.width - 100 - h_off, window.height - v_off - 170),
            size=(100, 20),
            text="Redo",
            visible=True)

        self.stored_button_enabled_state = {
            'place_object_label': True,
            'toggle_trigger_editor': True,
            'delete_selection': True,
            'toggle_char_edit': True,
            'save_map': True,
            'undo': True,
            'redo': True
        }
        self.stored_list_enabled_state = {'place_object': True}
コード例 #12
0
    def refresh(self, new_items=None):  # call if the list changes
        if not new_items is None:
            self.items = new_items

        for b in self.drop_buttons:
            b.delete()

        self.drop_buttons = [
            button.DefaultButton(self,
                                 self.list_func(None),
                                 size=self.size,
                                 font_size=self.font_size,
                                 visible=False,
                                 text=u"<None>",
                                 border_color=self.border_color,
                                 border_width=self.border_width,
                                 color=self.color,
                                 batch=self._batch,
                                 group=self._drop_group)
        ]

        if isinstance(self.items, list):
            for i in self.items:
                if self.labels == 'func_name':
                    t = i.func_name
                elif self.labels == 'classname':
                    t = i.__class__.__name__
                else:
                    t = str(i)
                self.drop_buttons.append(
                    button.DefaultButton(self,
                                         self.list_func(i, t),
                                         size=self.size,
                                         font_size=self.font_size,
                                         visible=False,
                                         text=t,
                                         border_color=self.border_color,
                                         border_width=self.border_width,
                                         color=self.color,
                                         batch=self._batch,
                                         group=self._drop_group))
        else:
            for k, v in self.items.iteritems():
                if self.labels == 'classname':
                    t = v.__class__.__name__
                    t += ': '
                    t += unicode(k)
                else:
                    t = unicode(k)
                self.drop_buttons.append(
                    button.DefaultButton(self,
                                         self.list_func(k, t),
                                         size=self.size,
                                         font_size=self.font_size,
                                         visible=False,
                                         text=t,
                                         border_color=self.border_color,
                                         border_width=self.border_width,
                                         color=self.color,
                                         batch=self._batch,
                                         group=self._drop_group))

        if not self.first_time:  # prevent self.function() being run before the owner of this list is fully initialised
            self.set_to_default()
        else:
            self.first_time = False

        if self.open:
            self.update_buttons()