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
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)
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]
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()
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
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")))
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
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])
def __init__(self, pos=0): Button.__init__(self, StringUtils.get_string("ID_NEW_PROJECT"), pos)
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()
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)
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)
def __init__(self, pos=0): Button.__init__(self, StringUtils.get_string("ID_DISPLAY"), pos)
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)
def get_data(self): data = super().get_data() data[1] = StringUtils.get_string("ID_SPRITE") return data