示例#1
0
 def get_data(self):
     data = super().get_data()
     data[1] = StringUtils.get_string("ID_ATTRIBUTE")
     data[2] = StringUtils.get_string(
         AttributeBlueprint.DATA_TYPE.get(
             self.get_blueprint().get_data_type()))
     data[3] = self.get_blueprint().get_value()
     return data
示例#2
0
 def to_string(cls, style):
     s = ""
     if style == Themes.DARK_KNIGHT:
         s = StringUtils.get_string("ID_DARK_KNIGHT")
     elif style == Themes.DAY_LIGHT:
         s = StringUtils.get_string("ID_DAY_LIGHT")
     elif style == Themes.PRINCESS:
         s = StringUtils.get_string("ID_PRINCESS")
     return s
 def draw_attribute_data(self, data, pos, font, banner, margin):
     self.blit(font, "{}:".format(StringUtils.get_string("ID_DATA_TYPE")),
               data.get(2),
               (int(self.get_rect().left + self.get_rect().width * .05),
                int(banner.bottom * 1.1 + pos * margin)))
     pos += 1
     self.blit(font, "{}:".format(StringUtils.get_string("ID_VALUE")),
               str(data.get(3)),
               (int(self.get_rect().left + self.get_rect().width * .05),
                int(banner.bottom * 1.1 + pos * margin)))
    def display_data(self, banner):
        if self.__bp is not None and self.__bp.focused:
            dt = self.__bp.get_data()
            pos = 2
            font = pg.font.Font(Themes.DEFAULT_THEME.get("text_font_style"),
                                int(self.get_rect().width * .05))
            margin = int(font.size("SOME_TEXT")[1] * .35) + font.size(
                dt.get(1))[1]
            # DRAW GENERIC BLUEPRINT DATA
            self.blit(font, "{}:".format(StringUtils.get_string("ID_NAME")),
                      dt.get(0),
                      (int(self.get_rect().left + self.get_rect().width * .05),
                       int(banner.bottom * 1.1)))
            self.blit(font, "{}:".format(StringUtils.get_string("ID_TYPE")),
                      dt.get(1),
                      (int(self.get_rect().left + self.get_rect().width * .05),
                       int(banner.bottom * 1.1 + margin)))

            if self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "ATTRIBUTE"):
                # ATTRIBUTE RELATED INFORMATION
                self.draw_attribute_data(dt, pos, font, banner, margin)
            elif self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "FUNCTION"):
                # FUNCTION RELATED INFORMATION
                self.draw_function_data(dt, pos, font, banner, margin)
            elif self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "CHARACTER"):
                # CHARACTER RELATED INFORMATION
                self.draw_character_data(dt, pos, font, banner, margin)
            elif self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "SPRITE"):
                # SPRITE RELATED INFORMATION
                self.draw_sprite_data(dt, pos, font, banner, margin)
            self.ta_populated = True
            if self.boarder_rect is not None:
                pg.draw.rect(self.display,
                             Themes.DEFAULT_THEME.get("selection_boarder"),
                             self.boarder_rect, 2)
            # DRAW ACTION RELATED WIDGETS
            if self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "ATTRIBUTE"):
                # DATA TYPE DROP DOWN
                if self.__bp.data_type_pressed[0]:
                    self.draw_attribute_data_type_selection()
            elif self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "FUNCTION"):
                pass
            elif self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "SPRITE"):
                pass
            elif self.__bp.get_blueprint().get_type() == Blueprint.TYPES.get(
                    "CHARACTER"):
                if self.__bp.state_pressed[0]:
                    self.draw_character_state_selection()
    def draw_sprite_data(self, data, pos, font, banner, margin):
        s = pos = pos + 1
        if len(self.__bp.get_blueprint().attributes) > 0:
            self.blit(font,
                      "{}".format(StringUtils.get_string("ID_ATTRIBUTES")),
                      None,
                      (int(self.get_rect().left + self.get_rect().width * .08),
                       int(banner.bottom * 1.1 + pos * margin)))
            pos += 1
            for bp in self.__bp.get_blueprint().attributes:
                if isinstance(bp, AB):
                    self.blit(font,
                              "{}  ::  {}".format(bp.get_data_type(),
                                                  bp.get_value()),
                              None, (int(self.get_rect().left +
                                         self.get_rect().width * .12),
                                     int(banner.bottom * 1.1 + pos * margin)),
                              header=False)
                    pos += 1

            r = pg.Rect(
                (int(self.get_rect().left + self.get_rect().width * .05),
                 int(banner.bottom * 1.1 + s * margin)),
                (int(self.get_rect().width * .90), int((pos - s) * margin)))
            pg.draw.rect(self.display,
                         Themes.DEFAULT_THEME.get("selection_boarder"), r, 1)
            s = pos = pos + 1
        if len(self.__bp.get_blueprint().functions) > 0:
            self.blit(font,
                      "{}".format(StringUtils.get_string("ID_FUNCTIONS")),
                      None,
                      (int(self.get_rect().left + self.get_rect().width * .08),
                       int(banner.bottom * 1.1 + pos * margin)))
            pos += 1
            for bp in self.__bp.get_blueprint().functions:
                if isinstance(bp, FB):
                    self.blit(font,
                              "{}()".format(bp.name),
                              None, (int(self.get_rect().left +
                                         self.get_rect().width * .12),
                                     int(banner.bottom * 1.1 + pos * margin)),
                              header=False)
                    pos += 1
            r = pg.Rect(
                (int(self.get_rect().left + self.get_rect().width * .05),
                 int(banner.bottom * 1.1 + s * margin)),
                (int(self.get_rect().width * .90), int((pos - s) * margin)))
            pg.draw.rect(self.display,
                         Themes.DEFAULT_THEME.get("selection_boarder"), r, 1)
示例#6
0
class GameApi(Utils):
    APIS = [["CAR_SIMULATOR_API", StringUtils.get_string("ID_CAR_SIMULATOR")]]
    DEFAULT_API = None

    @staticmethod
    def get_api(id):
        return GameApi.APIS[id]
示例#7
0
    def draw_form(self):
        super().draw_form()
        if self.visible:
            font = pg.font.Font(Themes.DEFAULT_THEME.get("banner_font_style"),
                                int(self.size[1] * .07))
            txt = font.render(StringUtils.get_string("ID_DISPLAY"), True,
                              Themes.DEFAULT_THEME.get("font"))
            rect_txt = txt.get_rect()
            rect_txt.topleft = (int(self.coords[0] * 1.05),
                                int(self.coords[1] * 1.05))
            self.display.blit(txt, rect_txt)

            self.size_select = pg.Rect(
                (0, int(rect_txt.bottom * 1.2)),
                (int(self.size[0] * .85), int(self.size[1] * .12)))
            self.size_select.centerx = self.get_rect().centerx
            img = Images.get_icon(Images.DROP_DOWN)
            img[1].midright = (int(self.size_select.right -
                                   DisplaySettings.get_size_by_key()[0] * .01),
                               int(self.size_select.center[1]))
            self.btn_drop_down = img[1]
            pg.draw.rect(self.display,
                         Themes.DEFAULT_THEME.get("text_area_background"),
                         self.size_select, 0)
            self.display.blit(img[0], img[1])

            font = pg.font.Font(Themes.DEFAULT_THEME.get("text_font_style"),
                                int(self.size_select.height * 0.6))
            txt = font.render(self.__size, True,
                              Themes.DEFAULT_THEME.get("text_area_text"))
            rect_txt = txt.get_rect()
            rect_txt.center = self.size_select.center
            self.display.blit(txt, rect_txt)
            self.draw_drop_down()
示例#8
0
 def __init__(self, type, name):
     self.__type = type
     if name is None:
         self.name = "{}_{}".format(StringUtils.get_string("ID_UNKNOWN"),
                                    Blueprint.NAME_COUNT)
         Blueprint.NAME_COUNT += 1
     else:
         self.name = name
 def validate_project_info(self):
     valid = True
     if (StringUtils.get_string("ID_SELECT")
             in self.__api) and (len(self.__project_name) < 5):
         valid = False
         self.__popup = Popup(Popup.POP_STATES.get("ERROR"),
                              "Incorrect project details")
     elif StringUtils.get_string("ID_SELECT") in self.__api:
         valid = False
         self.__popup = Popup(Popup.POP_STATES.get("ERROR"),
                              "API must be selected")
     elif len(self.__project_name) < 5:
         valid = False
         self.__popup = Popup(
             Popup.POP_STATES.get("ERROR"),
             "Project name should be greater than 5 chars")
     return valid
 def __init__(self, display, coords=None, size=None):
     Form.__init__(self, display, coords, size)
     self.lang_select = None
     self.btn_drop_down = None
     self.__logger = logger_utils.get_logger(__name__)
     self.__lang = StringUtils.get_string(StringUtils.DEFAULT_LANGUAGE)
     self.__lang_content = list()
     self.__lang_counter = 0
     self.__is_drop_down_pressed = False
     self.__selected = False
示例#11
0
 def set_data(self, index, data):
     if index == 2:
         for key, value in AttributeBlueprint.DATA_TYPE.items():
             if data == StringUtils.get_string(value):
                 self.get_blueprint().set_data_type(key)
     elif index == 3:
         self.get_blueprint().set_value(data)
     super().set_data(index, data)
     self.update_displayed_data(
         self.font.render(self.get_blueprint().name, True,
                          Themes.DEFAULT_THEME.get("font")))
示例#12
0
 def get_data(self):
     data = super().get_data()
     data[1] = StringUtils.get_string("ID_CHARACTER")
     data[2] = self.get_blueprint().pos[0]
     data[3] = self.get_blueprint().pos[1]
     data[4] = self.get_blueprint().size[0]
     data[5] = self.get_blueprint().size[1]
     data[6] = self.get_blueprint().alive
     data[7] = self.get_blueprint().attributes
     data[8] = self.get_blueprint().functions
     data[9] = self.get_blueprint().sprites
     return data
 def __attribute_events(self, event):
     if event.type == MOUSEBUTTONDOWN:
         if event.button == 1:
             for ls in self.__bp.data_type_selection:
                 if ls[0].collidepoint(event.pos) == 1:
                     self.__bp.set_data(2, ls[3])
                     self.__bp.reset_selection()
                     if self.__bp.get_blueprint().get_data_type() == 'none':
                         self.__bp.get_blueprint().set_value(
                             StringUtils.get_string("ID_NONE"))
                     else:
                         self.__bp.get_blueprint().set_value("")
                     break
示例#14
0
 def draw_scene(self):
     # PREPARE DATA FOR DISPLAY
     font = pg.font.Font(Themes.DEFAULT_THEME.get("banner_font_style"),
                         int(DisplaySettings.get_size_by_key()[1] * 0.09))
     header = font.render(StringUtils.get_string("ID_SAVED_PROJECTS"), True,
                          Themes.DEFAULT_THEME.get("font"))
     header_rect = header.get_rect()
     header_rect.topleft = (int(DisplaySettings.get_size_by_key()[0] * .02),
                            int(DisplaySettings.get_size_by_key()[1] * .05))
     # PUSH TO DISPLAY
     self.display.fill(Themes.DEFAULT_THEME.get("front_screen"))
     self.display.blit(header, header_rect)
     self.draw_container(header_rect)
     self.draw_buttons()
     self.check_button_hover()
     self.draw_selected_file_boarder()
     super().draw_scene()
    def __set_str(self, index, c):
        """Description: Method validates control panel input and sets data to
        the selected blueprint
        """
        def __write_str(data):
            if len(data) < 15:
                data += c
                self.__bp.set_data(index, data)

        dt = str(self.__bp.get_data().get(index))
        if dt is None:
            dt = ""
        if index == 3 and isinstance(self.__bp,
                                     AttributeBlueprint):  # value index
            if self.__bp.get_blueprint().get_data_type(
            ) == attribute_blueprint.NONE:
                self.__bp.set_data(index, StringUtils.get_string("ID_NONE"))
            elif self.__bp.get_blueprint().get_data_type(
            ) == attribute_blueprint.INT:
                dt += c
                if self.int_try_parse(dt)[0]:
                    self.__bp.set_data(index, int(dt))
                else:
                    self.__bp.set_data(index, "")
            elif self.__bp.get_blueprint().get_data_type(
            ) == attribute_blueprint.FLOAT:
                dt += c
                if self.float_try_parse(dt)[0]:
                    self.__bp.set_data(index, dt)
                else:
                    self.__bp.set_data(index, dt[:-1])
            elif self.__bp.get_blueprint().get_data_type(
            ) == attribute_blueprint.STRING:
                __write_str(dt)
            elif self.__bp.get_blueprint().get_data_type(
            ) == attribute_blueprint.CHAR:
                self.__bp.set_data(index, c)
        else:
            __write_str(dt)
    def draw_form(self):
        form_rect = self.get_rect()
        if (self.__bp is not None) and self.__bp.focused:
            pg.draw.rect(self.display,
                         Themes.DEFAULT_THEME.get("panel_background"),
                         form_rect, 0)
            pg.draw.rect(self.display,
                         Themes.DEFAULT_THEME.get("selection_background"),
                         form_rect, 2)
        else:
            pg.draw.rect(self.display,
                         Themes.DEFAULT_THEME.get("panel_disabled"), form_rect,
                         0)

        font = pg.font.Font(Themes.DEFAULT_THEME.get("text_font_style"),
                            int(form_rect.width * .08))
        txt = font.render(StringUtils.get_string("ID_CONTROL_PANEL"), True,
                          Themes.DEFAULT_THEME.get("font"))
        rect_txt = txt.get_rect()
        rect_txt.topleft = (int(form_rect.topleft[0] * 1.015),
                            int(form_rect.topleft[1] * 1.015))
        self.display.blit(txt, rect_txt)
        self.display_data(rect_txt)
 def draw_character_state_selection(self):
     self.__bp.state_selection.clear()
     pos = 1
     for t in CharacterBlueprint.STATES:
         r = pg.Rect((self.__bp.state_pressed[1].left,
                      int(self.__bp.state_pressed[1].top +
                          self.__bp.state_pressed[1].height * pos)),
                     self.__bp.state_pressed[1].size)
         font = pg.font.Font(Themes.DEFAULT_THEME.get("text_font_style"),
                             int(self.get_rect().width * .05))
         t = StringUtils.get_string(CharacterBlueprint.STATES.get(t))
         txt = font.render(t, True,
                           Themes.DEFAULT_THEME.get("text_area_text"))
         rt = txt.get_rect()
         rt.centery = r.centery
         rt.left = r.left * 1.1
         pos += 1
         self.__bp.state_selection.append([r, txt, rt, t])
     for s in self.__bp.state_selection:
         pg.draw.rect(self.display,
                      Themes.DEFAULT_THEME.get("text_area_background"),
                      s[0], 0)
         self.display.blit(s[1], s[2])
示例#18
0
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_NEW_PROJECT"), pos)
示例#19
0
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_EXIT"), pos)
    def draw_scene(self):
        # PREPARE DATA
        if self.__api == GameApi.DEFAULT_API:
            self.__api = " --- {} ---".format(
                StringUtils.get_string("ID_SELECT"))

        font = pg.font.Font(Themes.DEFAULT_THEME.get("banner_font_style"),
                            int(DisplaySettings.get_size_by_key()[0] * .05))
        txt_title = font.render(
            StringUtils.get_string("ID_TITLE") + ":", True,
            Themes.DEFAULT_THEME.get("font"))
        rect_title = txt_title.get_rect()
        rect_title.topleft = (int(DisplaySettings.get_size_by_key()[0] * .05),
                              int(DisplaySettings.get_size_by_key()[1] * .15))
        txt_api = font.render(
            StringUtils.get_string("ID_GAME_API") + ":", True,
            Themes.DEFAULT_THEME.get("font"))
        rect_api = txt_api.get_rect()
        rect_api.topleft = (int(int(DisplaySettings.get_size_by_key()[0] *
                                    .05)),
                            int(rect_title.top + rect_title.height +
                                DisplaySettings.get_size_by_key()[1] * .1))
        self.input = pg.Rect(
            (int(rect_api.right + DisplaySettings.get_size_by_key()[0] * .05),
             int(rect_title.top)),
            (int(DisplaySettings.get_size_by_key()[0] * 0.6),
             int(DisplaySettings.get_size_by_key()[0] * .05)))
        font = pg.font.Font(Themes.DEFAULT_THEME.get("text_font_style"),
                            int(DisplaySettings.get_size_by_key()[0] * .03))
        txt_input = font.render(self.__project_name, True,
                                Themes.DEFAULT_THEME.get("text_area_text"))
        rect_input = txt_input.get_rect()
        rect_input.center = self.input.center
        self.api_select = pg.Rect(
            (int(rect_api.right + DisplaySettings.get_size_by_key()[0] * .05),
             int(rect_api.top)),
            (int(DisplaySettings.get_size_by_key()[0] * 0.6),
             int(DisplaySettings.get_size_by_key()[0] * .05)))
        txt_select = font.render(self.__api, True,
                                 Themes.DEFAULT_THEME.get("text_area_text"))
        rect_select = txt_select.get_rect()
        rect_select.center = self.api_select.center
        # self.btn_drop_down = self.get_icon(self.api_select)
        img = Images.get_icon(Images.DROP_DOWN)
        img[1].midright = (int(self.api_select.right -
                               DisplaySettings.get_size_by_key()[0] * .01),
                           int(self.api_select.center[1]))
        self.btn_drop_down = img
        # DISPLAY
        self.display.fill(Themes.DEFAULT_THEME.get("front_screen"))
        self.display.blit(txt_title, rect_title)
        self.display.blit(txt_api, rect_api)
        pg.draw.rect(self.display,
                     Themes.DEFAULT_THEME.get("text_area_background"),
                     self.input, 0)
        self.display.blit(txt_input, rect_input)
        pg.draw.rect(self.display,
                     Themes.DEFAULT_THEME.get("text_area_background"),
                     self.api_select, 0)
        self.display.blit(self.btn_drop_down[0], self.btn_drop_down[1])
        self.display.blit(txt_select, rect_select)
        self.draw_buttons()
        self.draw_drop_down(font)
        self.check_button_hover()
        if self.__popup is not None:
            self.__popup.draw(self.display)
        super().draw_scene()
示例#21
0
 def update_button(self, color=Themes.DEFAULT_THEME.get("button")):
     super().update_button(StringUtils.get_string("ID_NEW_PROJECT"), color)
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_ADD_SPRITE"), pos)
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_ADD_FUNCTION"), pos)
示例#24
0
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_LANGUAGE"), pos)
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_ADD_CHARACTER"), pos)
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_CONFIGURATION"), pos)
 def update_button(self, color=Themes.DEFAULT_THEME.get("button")):
     super().update_button(StringUtils.get_string("ID_CONFIGURATION"), color)
示例#28
0
 def __init__(self, pos=0):
     Button.__init__(self, StringUtils.get_string("ID_DISPLAY"), pos)
示例#29
0
 def update_button(self,
                   text=None,
                   color=Themes.DEFAULT_THEME.get("button")):
     if text is None:
         text = StringUtils.get_string("ID_DISPLAY")
     super().update_button(text, color)
示例#30
0
 def get_data(self):
     data = super().get_data()
     data[1] = StringUtils.get_string("ID_SPRITE")
     return data