Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pEQxF5FeyAG8NnBBx7fB as app
- import YEakbeqssJ5Pcg4Vg5NZ as net
- import cK89yFxpVW7hKAFe5t68 as chr
- import BEdUvHtApaSvnv3E63cu as chrmgr
- import tfL4qLeMqxZA5P4Pw5YA as player
- import work as ui
- import uiScriptLocale
- import dbg
- #import snd
- import mouseModule
- import wndMgr
- import skill
- import playereffectrun as playerSettingModule
- import quest
- import localeInfo
- import uiToolTip
- import constInfo
- import emotion
- import chat
- import grp
- import item
- import uiemojitranslate
- import uicharacterdetails
- if app.ENABLE_SKILL_COLOR_SYSTEM:
- import uiSkillColor
- if app.ENABLE_QUEST_RENEWAL:
- import math, uiQuest
- SHOW_LIMIT_SUPPORT_SKILL_LIST = [122,121, 124, 126, 127,]
- FACE_IMAGE_DICT = {
- playerSettingModule.RACE_WARRIOR_M : "icon/face/warrior_m.tga",
- playerSettingModule.RACE_WARRIOR_W : "icon/face/warrior_w.tga",
- playerSettingModule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga",
- playerSettingModule.RACE_ASSASSIN_W : "icon/face/assassin_w.tga",
- playerSettingModule.RACE_SURA_M : "icon/face/sura_m.tga",
- playerSettingModule.RACE_SURA_W : "icon/face/sura_w.tga",
- playerSettingModule.RACE_SHAMAN_M : "icon/face/shaman_m.tga",
- playerSettingModule.RACE_SHAMAN_W : "icon/face/shaman_w.tga",
- }
- def unsigned32(n):
- return n & 0xFFFFFFFFL
- if app.ENABLE_QUEST_RENEWAL:
- quest_slot_listbar = {
- "name" : "Quest_Slot",
- "type" : "listbar",
- "x" : 0,
- "y" : 0,
- "width" : 210,
- "height" : 20,
- "text" : "Quest title",
- "align" : "left",
- "horizontal_align" : "left",
- "vertical_align" : "left",
- "text_horizontal_align" : "left",
- "all_align" : "left",
- "text_height": 40
- }
- quest_lable_expend_img_path_dict = {
- 0: "d:/ymir work/ui/quest_re/tabcolor_1_main.tga",
- 1: "d:/ymir work/ui/quest_re/tabcolor_2_sub.tga",
- 2: "d:/ymir work/ui/quest_re/tabcolor_3_levelup.tga",
- 3: "d:/ymir work/ui/quest_re/tabcolor_4_event.tga",
- 4: "d:/ymir work/ui/quest_re/tabcolor_5_collection.tga",
- 5: "d:/ymir work/ui/quest_re/tabcolor_6_system.tga",
- 6: "d:/ymir work/ui/quest_re/tabcolor_7_scroll.tga",
- 7: "d:/ymir work/ui/quest_re/tabcolor_8_daily.tga",
- 8: "d:/ymir work/ui/quest_re/tabcolor_8_daily.tga"
- }
- quest_label_dict = {
- 0 : localeInfo.QUEST_CATEGORY_00,
- 1 : localeInfo.QUEST_CATEGORY_01,
- 2 : localeInfo.QUEST_CATEGORY_02,
- 3 : localeInfo.QUEST_CATEGORY_03,
- 4 : localeInfo.QUEST_CATEGORY_04,
- 5 : localeInfo.QUEST_CATEGORY_05,
- 6 : localeInfo.QUEST_CATEGORY_06,
- 7 : localeInfo.QUEST_CATEGORY_07,
- 8 : "GM Panel",
- }
- class CharacterPageCreateBonus(ui.ScriptWindow):
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.__Initialize()
- self.__LoadWindow()
- def __Initialize(self):
- self.base_pos = (0, 0)
- self.bonus_name = None
- self.bonus_value = None
- self.apply_value = None
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def __LoadWindow(self):
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, "UIScript/characterwindowbonusstruct.py")
- self.bonus_name = self.GetChild("bonus_name")
- self.bonus_value = self.GetChild("bonus_value")
- return self
- def SetBasePosition(self, x, y):
- self.base_pos = (x, y)
- self.SetPosition(x, y)
- def GetBasePosition(self):
- return self.base_pos
- def SetName(self, name):
- self.bonus_name.SetText(str(name))
- def SetApplyValue(self, value):
- self.apply_value = value
- def RefreshApplyValue(self):
- if self.apply_value != None:
- value = 0
- if self.apply_value == -1:
- value = player.GetStatus(player.POINT_BLUE_PLAYER_KILLED) + player.GetStatus(player.POINT_YELLOW_PLAYER_KILLED) + player.GetStatus(player.POINT_RED_PLAYER_KILLED)
- else:
- value = player.GetStatus(self.apply_value)
- self.bonus_value.SetText("{}".format(value))
- class CharacterWindow(ui.ScriptWindow):
- if app.ENABLE_SKILLS_LEVEL_OVER_P:
- SKILL_GRADE_SLOT_COUNT = 3
- POSITIVE_COLOR = grp.GenerateColor(0.5411, 0.7254, 0.5568, 1.0)
- ACTIVE_PAGE_SLOT_COUNT = 8
- SUPPORT_PAGE_SLOT_COUNT = 18
- HORSE_SLOT_COUNT = 6
- PAGE_SLOT_COUNT = 18
- PAGE_HORSE = 2
- SKILL_GROUP_NAME_DICT = {
- playerSettingModule.JOB_WARRIOR : { 1 : localeInfo.SKILL_GROUP_WARRIOR_1, 2 : localeInfo.SKILL_GROUP_WARRIOR_2, },
- playerSettingModule.JOB_ASSASSIN : { 1 : localeInfo.SKILL_GROUP_ASSASSIN_1, 2 : localeInfo.SKILL_GROUP_ASSASSIN_2, },
- playerSettingModule.JOB_SURA : { 1 : localeInfo.SKILL_GROUP_SURA_1, 2 : localeInfo.SKILL_GROUP_SURA_2, },
- playerSettingModule.JOB_SHAMAN : { 1 : localeInfo.SKILL_GROUP_SHAMAN_1, 2 : localeInfo.SKILL_GROUP_SHAMAN_2, },
- }
- STAT_DESCRIPTION = {
- "HTH" : localeInfo.STAT_TOOLTIP_CON,
- "INT" : localeInfo.STAT_TOOLTIP_INT,
- "STR" : localeInfo.STAT_TOOLTIP_STR,
- "DEX" : localeInfo.STAT_TOOLTIP_DEX,
- }
- STAT_MINUS_DESCRIPTION = localeInfo.STAT_MINUS_DESCRIPTION
- if app.ENABLE_QUEST_RENEWAL:
- MAX_QUEST_PAGE_HEIGHT = 336.5
- def __init__(self):
- if app.ENABLE_QUEST_RENEWAL:
- self.isQuestCategoryLoad = False
- if app.ENABLE_SKILL_COLOR_SYSTEM:
- self.skillColorWnd = None
- self.skillColorButton = []
- ui.ScriptWindow.__init__(self)
- self.state = "STATUS"
- self.isLoaded = 0
- self.toolTipSkill = 0
- self.character_actual_page = 0
- self.__Initialize()
- self.__LoadWindow()
- self.statusPlusCommandDict={
- "HTH" : "/stat_val ht ",
- "INT" : "/stat_val iq ",
- "STR" : "/stat_val st ",
- "DEX" : "/stat_val dx ",
- }
- self.statusMinusCommandDict={
- "HTH-" : "/stat- ht",
- "INT-" : "/stat- iq",
- "STR-" : "/stat- st",
- "DEX-" : "/stat- dx",
- }
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def __Initialize(self):
- self.refreshToolTip = 0
- self.curSelectedSkillGroup = 0
- self.canUseHorseSkill = -1
- self.toolTip = None
- self.toolTipJob = None
- self.toolTipJobPartyBonus = None
- self.toolTipAlignment = None
- self.toolTipSkill = None
- self.faceImage = None
- self.statusPlusLabel = None
- self.statusPlusValue = None
- self.activeSlot = None
- self.tabDict = None
- self.tabButtonDict = None
- self.tabCharacterPageDict = None
- self.pageDict = None
- self.titleBarDict = None
- self.statusPlusButtonDict = None
- self.statusMinusButtonDict = None
- self.statusImageDic = None
- self.skillPageDict = None
- if app.ENABLE_QUEST_RENEWAL:
- self.questScrollBar = None
- self.questLastScrollPosition = 0
- self.questPage = None
- self.questTitleBar = None
- self.questSlotList = []
- self.questCategory = {}
- self.questCategoryList = []
- self.questColorList = {
- "green" : 0xFF83C055,
- "blue": 0xFF45678D,
- "golden": 0xFFCAB62F,
- "default_title": 0xFFCEC6B5
- }
- self.questOpenedCategories = []
- self.questMaxOpenedCategories = 1
- self.questClicked = []
- self.questIndexMap = {}
- self.questCounterList = []
- self.questClockList = []
- self.questSeparatorList = []
- self.displayY = 0
- self.baseCutY = 0
- self.questCategoryRenderPos = []
- self.questSlideWnd = {}
- self.questSlideWndNewKey = 0
- else:
- self.questShowingStartIndex = 0
- self.questScrollBar = None
- self.questSlot = None
- self.questNameList = None
- self.questLastTimeList = None
- self.questLastCountList = None
- self.skillGroupButton = ()
- self.bonusPageItemsInfo = {}
- self.bonusPageObjectManage = {}
- self.bonusPageCategoryList = []
- self.bonusPageCategoryBasePos = []
- self.bonusPageObjectList = []
- self.bonusPageSelectedCategory = -1
- self.infoSpecialPageItemsInfo = {}
- self.infoSpecialPageObjectManage = {}
- self.infoSpecialPageCategoryList = []
- self.infoSpecialPageCategoryBasePos = []
- self.infoSpecialPageObjectList = []
- self.infoSpecialPageSelectedCategory = -1
- self.activeSlot = None
- self.activeSkillPointValue = None
- self.supportSkillPointValue = None
- self.horseSkillPointValue = None
- self.skillGroupButton1 = None
- self.skillGroupButton2 = None
- self.activeSkillGroupName = None
- self.guildNameSlot = None
- self.guildNameValue = None
- self.characterNameSlot = None
- self.characterNameValue = None
- self.emotionToolTip = None
- self.soloEmotionSlot = None
- self.dualEmotionSlot = None
- self.specialEmotionSlot = None
- self.specialEmotionSlot2 = None
- self.prevButton = None
- self.nextButton = None
- self.currentPageBack = None
- self.currentPageText = None
- self.currentPage = 1
- self.wndCharacterDetails = None
- self.wndCharacterDetailsButton = None
- self.interface = None
- if app.ENABLE_WINDOW_SLIDE_EFFECT:
- self.EnableSlidingEffect()
- def Show(self):
- self.__LoadWindow()
- ui.ScriptWindow.Show(self)
- def __LoadScript(self, fileName):
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, fileName)
- def __BindObject(self):
- self.toolTip = uiToolTip.ToolTip()
- self.toolTipJob = uiToolTip.ToolTip()
- self.toolTipJobPartyBonus = uiToolTip.ToolTip()
- self.toolTipAlignment = uiToolTip.ToolTip(130)
- self.faceImage = self.GetChild("Face_Image")
- faceSlot=self.GetChild("Face_Slot")
- self.statusPlusLabel = self.GetChild("Status_Plus_Label")
- self.statusPlusValue = self.GetChild("Status_Plus_Value")
- self.characterNameSlot = self.GetChild("Character_Name_Slot")
- self.characterNameValue = self.GetChild("Character_Name")
- self.guildNameSlot = self.GetChild("Guild_Name_Slot")
- self.guildNameValue = self.GetChild("Guild_Name")
- self.characterNameSlot.SAFE_SetEvent(self.__ShowAlignmentToolTip, "MOUSE_OVER_IN")
- self.characterNameSlot.SAFE_SetEvent(self.__HideAlignmentToolTip, "MOUSE_OVER_OUT")
- self.activeSlot = self.GetChild("Skill_Active_Slot")
- self.activeSkillPointValue = self.GetChild("Active_Skill_Point_Value")
- self.supportSkillPointValue = self.GetChild("Support_Skill_Point_Value")
- self.horseSkillPointValue = self.GetChild("horse_Skill_Point_Value")
- self.skillGroupButton1 = self.GetChild("Skill_Group_Button_1")
- self.skillGroupButton2 = self.GetChild("Skill_Group_Button_2")
- self.activeSkillGroupName = self.GetChild("Active_Skill_Group_Name")
- if app.ENABLE_QUEST_RENEWAL:
- self.questScrollBar = self.GetChild("Quest_ScrollBar")
- self.questPage = self.GetChild("Quest_Page")
- self.questTitleBar = self.GetChild("Quest_TitleBar")
- self.quest_page_board_window = self.GetChild("quest_page_board_window")
- self.quest_object_board_window = self.GetChild("quest_object_board_window")
- self.tabDict = {
- "STATUS" : self.GetChild("Tab_01"),
- "SKILL" : self.GetChild("Tab_02"),
- "EMOTICON" : self.GetChild("Tab_03"),
- "QUEST" : self.GetChild("Tab_04"),
- }
- self.tabButtonDict = {
- "STATUS" : self.GetChild("Tab_Button_01"),
- "SKILL" : self.GetChild("Tab_Button_02"),
- "EMOTICON" : self.GetChild("Tab_Button_03"),
- "QUEST" : self.GetChild("Tab_Button_04"),
- }
- self.tabCharacterPageDict = {
- 0 : self.GetChild("change_status_button"),
- 1 : self.GetChild("change_bonus_button"),
- 2 : self.GetChild("change_other_button"),
- }
- self.pageDict = {
- "STATUS" : self.GetChild("Character_Page"),
- "SKILL" : self.GetChild("Skill_Page"),
- "EMOTICON" : self.GetChild("Emoticon_Page"),
- "QUEST" : self.GetChild("Quest_Page")
- }
- self.titleBarDict = {
- "STATUS" : self.GetChild("Character_TitleBar"),
- "SKILL" : self.GetChild("Skill_TitleBar"),
- "EMOTICON" : self.GetChild("Emoticon_TitleBar"),
- "QUEST" : self.GetChild("Quest_TitleBar")
- }
- self.statusPlusButtonDict = {
- "HTH" : self.GetChild("HTH_Plus"),
- "INT" : self.GetChild("INT_Plus"),
- "STR" : self.GetChild("STR_Plus"),
- "DEX" : self.GetChild("DEX_Plus"),
- }
- self.statusMinusButtonDict = {
- "HTH-" : self.GetChild("HTH_Minus"),
- "INT-" : self.GetChild("INT_Minus"),
- "STR-" : self.GetChild("STR_Minus"),
- "DEX-" : self.GetChild("DEX_Minus"),
- }
- self.skillPageDict = {
- "ACTIVE" : self.GetChild("Skill_Active_Slot"),
- "SUPPORT" : self.GetChild("Skill_ETC_Slot"),
- "HORSE" : self.GetChild("Skill_HORSE_Slot"),
- }
- self.skillPageStatDict = {
- "SUPPORT" : player.SKILL_SUPPORT,
- "ACTIVE" : player.SKILL_ACTIVE,
- "HORSE" : player.SKILL_HORSE,
- }
- self.labelPageStatDict = {
- "SUPPORT" : self.GetChild("Support_Skill_Point_Label"),
- "ACTIVE" : self.GetChild("Active_Skill_Point_Label"),
- "HORSE" : self.GetChild("horse_Skill_Point_Label"),
- }
- self.skillGroupButton = (
- self.GetChild("Skill_Group_Button_1"),
- self.GetChild("Skill_Group_Button_2"),
- )
- self.wndCharacterDetailsButton = ui.MakeButtonNew(self, self.GetWidth()-13, (self.GetHeight()-108)/2, "", \
- "d:/ymir work/ui/game/belt_inventory/", \
- "btn_minimize_normal.tga", \
- "btn_minimize_over.tga", \
- "btn_minimize_down.tga")
- self.wndCharacterDetailsButton.SetEvent(ui.__mem_func__(self.ToggleCharacterDetails))
- self.wndCharacterDetails = uicharacterdetails.CharacterDetailsUI()
- self.statusImageDic = {
- #status lado esquerod
- "HTH" : (self.GetChild("HTH_IMG"), 0),
- "INT" : (self.GetChild("INT_IMG"), 0),
- "STR" : (self.GetChild("STR_IMG"), 0),
- "DEX" : (self.GetChild("DEX_IMG"), 0),
- #status do lado direito
- "VIDA" : (self.GetChild("HEL_IMG"), 1),
- "MANA" : (self.GetChild("SP_IMG"), 1),
- "VATAQUE" : (self.GetChild("ATT_IMG"), 1),
- "DEFESA" : (self.GetChild("DEF_IMG"), 1),
- #status de baixo
- "MSPD" : (self.GetChild("MSPD_IMG"), 2),
- "ASPD" : (self.GetChild("ASPD_IMG"), 2),
- "CSPD" : (self.GetChild("CSPD_IMG"), 2),
- "MATT" : (self.GetChild("MATT_IMG"), 2),
- "MDEF" : (self.GetChild("MDEF_IMG"), 2),
- "ER" : (self.GetChild("ER_IMG"), 2),
- #outros
- "STAT_TITLE" : (self.GetChild("Char_Info_Status_img"), 3),
- "AVAIBLE_STAT_POINT" : (self.GetChild("Status_Plus_Label"), 3),
- #skills page
- "ACTIVE_SKILL_POINTS" : (self.GetChild("Active_Skill_Point_Label"), 4),
- "HORSE_SKILL_TOOLTIP" : (self.GetChild("horse_skill_tooltip"), 4),
- "HORSE_SKILL_POINTS" : (self.GetChild("horse_Skill_Point_Label"), 4),
- #emoticon page
- "NORMAL_EMOTION " : (self.GetChild("Action_Bar_Img"), 5),
- "DUO_EMOTION " : (self.GetChild("Reaction_Bar_Img"), 5),
- "SPECIAL_EMOTION " : (self.GetChild("Special_Action_Bar_Img"), 5),
- #others page
- "BONUS_PAGE " : (self.GetChild("bonus_base_tooltip_image"), 6),
- "OTHER_PAGE " : (self.GetChild("special_base_tooltip_image"), 6),
- }
- self.characterPageDict = {
- 0 : self.GetChild("status_window"),
- 1 : self.GetChild("bonus_window"),
- 2 : self.GetChild("special_other_window")
- }
- self.bonusPageItemsInfo = {
- 0 : {
- "B�nus de Dano" :
- [
- (localeInfo.DETAILS_1, item.GetApplyPoint(item.APPLY_ATTBONUS_HUMAN)),
- (localeInfo.DETAILS_3, item.GetApplyPoint(item.APPLY_ATTBONUS_ORC)),
- (localeInfo.DETAILS_4, item.GetApplyPoint(item.APPLY_ATTBONUS_UNDEAD)),
- (localeInfo.DETAILS_5, item.GetApplyPoint(item.APPLY_ATTBONUS_MONSTER)),
- (localeInfo.DETAILS_7, item.GetApplyPoint(item.APPLY_ATTBONUS_ANIMAL)),
- (localeInfo.DETAILS_8, item.GetApplyPoint(item.APPLY_ATTBONUS_MILGYO)),
- (localeInfo.DETAILS_9, item.GetApplyPoint(item.APPLY_ATTBONUS_DEVIL)),
- # (localeInfo.DETAILS_95, item.GetApplyPoint(item.APPLY_ATTBONUS_INSECT)),
- (localeInfo.DETAILS_10, item.GetApplyPoint(item.APPLY_ATTBONUS_BOSS)),
- (localeInfo.DETAILS_11, item.GetApplyPoint(item.APPLY_ATTBONUS_METIN)),
- (localeInfo.DETAILS_12, item.GetApplyPoint(item.APPLY_ATT_GRADE_BONUS)),
- (localeInfo.DETAILS_14, item.GetApplyPoint(item.APPLY_NORMAL_HIT_DAMAGE_BONUS)),
- (localeInfo.DETAILS_16, item.GetApplyPoint(item.APPLY_SKILL_DAMAGE_BONUS)),
- (localeInfo.DETAILS_18, item.GetApplyPoint(item.APPLY_MELEE_MAGIC_ATTBONUS_PER)),
- (localeInfo.DETAILS_19, item.GetApplyPoint(item.APPLY_MAGIC_ATTBONUS_PER)),
- (localeInfo.DETAILS_20, item.GetApplyPoint(item.APPLY_CRITICAL_PCT)),
- (localeInfo.DETAILS_21, item.GetApplyPoint(item.APPLY_PENETRATE_PCT)),
- # (localeInfo.DETAILS_91, item.GetApplyPoint(item.APPLY_CRITICAL_PVM_PCT)),
- # (localeInfo.DETAILS_92, item.GetApplyPoint(item.APPLY_PENETRATE_PVM_PCT)),
- # (localeInfo.DETAILS_77, item.GetApplyPoint(item.APPLY_PENETRATE_MAGIC_PCT)),
- (localeInfo.DETAILS_78, item.GetApplyPoint(item.APPLY_ATTBONUS_ELEC)),
- (localeInfo.DETAILS_79, item.GetApplyPoint(item.APPLY_ATTBONUS_ICE)),
- (localeInfo.DETAILS_80, item.GetApplyPoint(item.APPLY_ATTBONUS_DARK)),
- (localeInfo.DETAILS_81, item.GetApplyPoint(item.APPLY_ATTBONUS_FIRE)),
- (localeInfo.DETAILS_82, item.GetApplyPoint(item.APPLY_ATTBONUS_WIND)),
- (localeInfo.DETAILS_83, item.GetApplyPoint(item.APPLY_ATTBONUS_EARTH)),
- (localeInfo.DETAILS_36, item.GetApplyPoint(item.APPLY_ATTBONUS_WARRIOR)),
- (localeInfo.DETAILS_37, item.GetApplyPoint(item.APPLY_ATTBONUS_ASSASSIN)),
- (localeInfo.DETAILS_38, item.GetApplyPoint(item.APPLY_ATTBONUS_SURA)),
- (localeInfo.DETAILS_39, item.GetApplyPoint(item.APPLY_ATTBONUS_SHAMAN)),
- ],
- },
- 1 : {
- "B�nus de Defesa" :
- [
- (localeInfo.DETAILS_13, item.GetApplyPoint(item.APPLY_DEF_GRADE_BONUS)),
- (localeInfo.DETAILS_15, item.GetApplyPoint(item.APPLY_NORMAL_HIT_DEFEND_BONUS)),
- (localeInfo.DETAILS_17, item.GetApplyPoint(item.APPLY_SKILL_DEFEND_BONUS)),
- # (localeInfo.DETAILS_22, item.GetApplyPoint(item.APPLY_RESIST_CRITIAL_HITS)),
- # (localeInfo.DETAILS_23, item.GetApplyPoint(item.APPLY_RESIST_PENETRATE_HITS)),
- # (localeInfo.DETAILS_96, item.GetApplyPoint(item.APPLY_RESIST_BOSSES)),
- (localeInfo.DETAILS_76, item.GetApplyPoint(item.APPLY_RESIST_MAGIC)),
- (localeInfo.DETAILS_24, item.GetApplyPoint(item.APPLY_RESIST_ELEC)),
- (localeInfo.DETAILS_25, item.GetApplyPoint(item.APPLY_RESIST_ICE)),
- (localeInfo.DETAILS_26, item.GetApplyPoint(item.APPLY_RESIST_DARK)),
- (localeInfo.DETAILS_27, item.GetApplyPoint(item.APPLY_RESIST_FIRE)),
- (localeInfo.DETAILS_28, item.GetApplyPoint(item.APPLY_RESIST_WIND)),
- (localeInfo.DETAILS_29, item.GetApplyPoint(item.APPLY_RESIST_EARTH)),
- (localeInfo.DETAILS_41, item.GetApplyPoint(item.APPLY_RESIST_WARRIOR)),
- (localeInfo.DETAILS_42, item.GetApplyPoint(item.APPLY_RESIST_ASSASSIN)),
- (localeInfo.DETAILS_43, item.GetApplyPoint(item.APPLY_RESIST_SURA)),
- (localeInfo.DETAILS_44, item.GetApplyPoint(item.APPLY_RESIST_SHAMAN)),
- (localeInfo.DETAILS_90, item.GetApplyPoint(item.APPLY_RESIST_HUMAN)),
- (localeInfo.DETAILS_46, item.GetApplyPoint(item.APPLY_RESIST_SWORD)),
- (localeInfo.DETAILS_48, item.GetApplyPoint(item.APPLY_RESIST_TWOHAND)),
- (localeInfo.DETAILS_47, item.GetApplyPoint(item.APPLY_RESIST_DAGGER)),
- (localeInfo.DETAILS_50, item.GetApplyPoint(item.APPLY_RESIST_BELL)),
- (localeInfo.DETAILS_51, item.GetApplyPoint(item.APPLY_RESIST_FAN)),
- (localeInfo.DETAILS_52, item.GetApplyPoint(item.APPLY_RESIST_BOW)),
- ],
- },
- 2 : {
- "Outros B�nus" :
- [
- (localeInfo.DETAILS_53, item.GetApplyPoint(item.APPLY_STUN_PCT)),
- (localeInfo.DETAILS_54, item.GetApplyPoint(item.APPLY_SLOW_PCT)),
- (localeInfo.DETAILS_55, item.GetApplyPoint(item.APPLY_POISON_PCT)),
- (localeInfo.DETAILS_56, item.GetApplyPoint(item.APPLY_POISON_REDUCE)),
- (localeInfo.DETAILS_59, item.GetApplyPoint(item.APPLY_STEAL_HP)),
- (localeInfo.DETAILS_60, item.GetApplyPoint(item.APPLY_STEAL_SP)),
- (localeInfo.DETAILS_61, item.GetApplyPoint(item.APPLY_HP_REGEN)),
- (localeInfo.DETAILS_62, item.GetApplyPoint(item.APPLY_SP_REGEN)),
- (localeInfo.DETAILS_63, item.GetApplyPoint(item.APPLY_BLOCK)),
- (localeInfo.DETAILS_64, item.GetApplyPoint(item.APPLY_DODGE)),
- # (localeInfo.DETAILS_93, item.GetApplyPoint(item.APPLY_RUPTURE_BLOCK)),
- # (localeInfo.DETAILS_94, item.GetApplyPoint(item.APPLY_RUPTURE_DODGE)),
- (localeInfo.DETAILS_65, item.GetApplyPoint(item.APPLY_REFLECT_MELEE)),
- (localeInfo.DETAILS_66, item.GetApplyPoint(item.APPLY_KILL_HP_RECOVER)),
- (localeInfo.DETAILS_67, item.GetApplyPoint(item.APPLY_KILL_SP_RECOVER)),
- (localeInfo.DETAILS_68, item.GetApplyPoint(item.APPLY_EXP_DOUBLE_BONUS)),
- (localeInfo.DETAILS_69, item.GetApplyPoint(item.APPLY_GOLD_DOUBLE_BONUS)),
- (localeInfo.DETAILS_70, item.GetApplyPoint(item.APPLY_ITEM_DROP_BONUS)),
- ],
- },
- 3 : {
- "B�nus Percentuais" :
- [
- (localeInfo.DETAILS_71, item.GetApplyPoint(item.APPLY_MALL_ATTBONUS)),
- (localeInfo.DETAILS_72, item.GetApplyPoint(item.APPLY_MALL_DEFBONUS)),
- (localeInfo.DETAILS_73, item.GetApplyPoint(item.APPLY_MALL_EXPBONUS)),
- (localeInfo.DETAILS_74, item.GetApplyPoint(item.APPLY_MALL_ITEMBONUS)),
- (localeInfo.DETAILS_75, item.GetApplyPoint(item.APPLY_MALL_GOLDBONUS)),
- ],
- },
- 4 : {
- "Rupturas Ofensivas" :
- [
- (localeInfo.DETAILS_71, item.GetApplyPoint(item.APPLY_MALL_ATTBONUS)),
- (localeInfo.DETAILS_72, item.GetApplyPoint(item.APPLY_MALL_DEFBONUS)),
- (localeInfo.DETAILS_73, item.GetApplyPoint(item.APPLY_MALL_EXPBONUS)),
- (localeInfo.DETAILS_74, item.GetApplyPoint(item.APPLY_MALL_ITEMBONUS)),
- (localeInfo.DETAILS_75, item.GetApplyPoint(item.APPLY_MALL_GOLDBONUS)),
- ],
- },
- }
- self.infoSpecialPageItemsInfo = {
- 0 : {
- "Estat�sticas PvM" :
- [
- (localeInfo.DETAILS_71, item.GetApplyPoint(item.APPLY_MALL_ATTBONUS)),
- (localeInfo.DETAILS_72, item.GetApplyPoint(item.APPLY_MALL_DEFBONUS)),
- (localeInfo.DETAILS_73, item.GetApplyPoint(item.APPLY_MALL_EXPBONUS)),
- (localeInfo.DETAILS_74, item.GetApplyPoint(item.APPLY_MALL_ITEMBONUS)),
- (localeInfo.DETAILS_75, item.GetApplyPoint(item.APPLY_MALL_GOLDBONUS)),
- ],
- },
- 1 : {
- "Estat�sticas PvP" :
- [
- (localeInfo.DETAILS_71, item.GetApplyPoint(item.APPLY_MALL_ATTBONUS)),
- (localeInfo.DETAILS_72, item.GetApplyPoint(item.APPLY_MALL_DEFBONUS)),
- (localeInfo.DETAILS_73, item.GetApplyPoint(item.APPLY_MALL_EXPBONUS)),
- (localeInfo.DETAILS_74, item.GetApplyPoint(item.APPLY_MALL_ITEMBONUS)),
- (localeInfo.DETAILS_75, item.GetApplyPoint(item.APPLY_MALL_GOLDBONUS)),
- ],
- },
- }
- self.bonusPageObjectManage = {
- "label" : self.GetChild("bonus_base_image"),
- "scrollbar" : self.GetChild("bonus_scrollbar"),
- "max_height" : 213,
- "scroll_distance" : 0,
- }
- self.bonusPageObjectManage["scrollbar"].Hide()
- self.infoSpecialPageObjectManage = {
- "label" : self.GetChild("special_base_image"),
- "scrollbar" : self.GetChild("special_scrollbar"),
- "max_height" : 213,
- "scroll_distance" : 0,
- }
- self.infoSpecialPageObjectManage["scrollbar"].Hide()
- for _, label in self.labelPageStatDict.items():
- label.Hide()
- self.GetChild("Support_Skill_Point_Label").Hide()
- self.soloEmotionSlot = self.GetChild("SoloEmotionSlot")
- self.dualEmotionSlot = self.GetChild("DualEmotionSlot")
- self.specialEmotionSlot = self.GetChild("SpecialEmotionSlot")
- self.specialEmotionSlot2 = self.GetChild("SpecialEmotionSlot2")
- self.prevButton = self.GetChild("prev_button")
- self.nextButton = self.GetChild("next_button")
- self.currentPageBack = self.GetChild("CurrentPageBack")
- self.currentPageText = self.GetChild("CurrentPage")
- self.__SetEmotionSlot()
- self.RefreshEmotionPage()
- if app.ENABLE_QUEST_RENEWAL:
- self.questScrollBar.SetParent(self.quest_page_board_window)
- for i in xrange(quest.QUEST_CATEGORY_MAX_NUM):
- self.questCategory = ui.SubTitleBar()
- self.questCategory.SetParent(self.questPage)
- self.questCategory.MakeSubTitleBar(210, "red")
- self.questCategory.SetText(quest_label_dict[i])
- self.questCategory.SetSize(210, 16)
- self.questCategory.SetPosition(13, 0)
- self.questCategoryList.append(self.questCategory)
- self.questCategoryRenderPos.append(0)
- self.questScrollBar.SetParent(self.questPage)
- self.RearrangeQuestCategories(xrange(quest.QUEST_CATEGORY_MAX_NUM))
- else:
- self.questShowingStartIndex = 0
- self.questScrollBar = self.GetChild("Quest_ScrollBar")
- self.questScrollBar.SetScrollEvent(ui.__mem_func__(self.OnQuestScroll))
- self.questSlot = self.GetChild("Quest_Slot")
- for i in xrange(quest.QUEST_MAX_NUM):
- self.questSlot.HideSlotBaseImage(i)
- self.questSlot.SetCoverButton(i,\
- "d:/ymir work/ui/game/quest/slot_button_01.sub",\
- "d:/ymir work/ui/game/quest/slot_button_02.sub",\
- "d:/ymir work/ui/game/quest/slot_button_03.sub",\
- "d:/ymir work/ui/game/quest/slot_button_03.sub", True)
- self.questNameList = []
- self.questLastTimeList = []
- self.questLastCountList = []
- for i in xrange(quest.QUEST_MAX_NUM):
- self.questNameList.append(self.GetChild("Quest_Name_0" + str(i)))
- self.questLastTimeList.append(self.GetChild("Quest_LastTime_0" + str(i)))
- self.questLastCountList.append(self.GetChild("Quest_LastCount_0" + str(i)))
- def ToggleCharacterDetails(self):
- if self.wndCharacterDetails.IsShow():
- self.wndCharacterDetails.Close()
- self.wndCharacterDetailsButton.SetUpVisual("d:/ymir work/ui/game/belt_inventory/btn_minimize_normal.tga")
- self.wndCharacterDetailsButton.SetOverVisual("d:/ymir work/ui/game/belt_inventory/btn_minimize_over.tga")
- self.wndCharacterDetailsButton.SetDownVisual("d:/ymir work/ui/game/belt_inventory/btn_minimize_down.tga")
- else:
- self.wndCharacterDetails.Show()
- self.wndCharacterDetailsButton.SetUpVisual("d:/ymir work/ui/game/belt_inventory/btn_expand_normal.tga")
- self.wndCharacterDetailsButton.SetOverVisual("d:/ymir work/ui/game/belt_inventory/btn_expand_over.tga")
- self.wndCharacterDetailsButton.SetDownVisual("d:/ymir work/ui/game/belt_inventory/btn_expand_down.tga")
- def OnMoveWindow(self, x, y):
- self.chWndPos = x, y
- if app.ENABLE_QUEST_RENEWAL:
- if self.questSlideWndNewKey-1 >= 0:
- if self.questSlideWnd[self.questSlideWndNewKey-1] is not None:
- self.questSlideWnd[self.questSlideWndNewKey-1].AdjustPositionAndSize()
- def __SetSkillSlotEvent(self):
- for skillPageValue in self.skillPageDict.itervalues():
- skillPageValue.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
- skillPageValue.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectSkill))
- skillPageValue.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
- skillPageValue.SetUnselectItemSlotEvent(ui.__mem_func__(self.ClickSkillSlot))
- skillPageValue.SetUseSlotEvent(ui.__mem_func__(self.ClickSkillSlot))
- skillPageValue.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
- skillPageValue.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- skillPageValue.SetPressedSlotButtonEvent(ui.__mem_func__(self.OnPressedSlotButton))
- skillPageValue.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_down.sub")
- def OnClickPrevPage(self):
- if self.currentPage == 2:
- self.currentPage = self.currentPage - 1
- self.currentPageText.SetText(str(self.currentPage))
- self.RefreshEmotionPage()
- def OnClickNextPage(self):
- if self.currentPage == 1:
- self.currentPage = self.currentPage + 1
- self.currentPageText.SetText(str(self.currentPage))
- self.RefreshEmotionPage()
- def RefreshEmotionPage(self):
- if self.currentPage == 1:
- self.specialEmotionSlot.Show()
- self.specialEmotionSlot2.Hide()
- else:
- self.specialEmotionSlot.Hide()
- self.specialEmotionSlot2.Show()
- def __SetEmotionSlot(self):
- self.prevButton.SetEvent(ui.__mem_func__(self.OnClickPrevPage))
- self.nextButton.SetEvent(ui.__mem_func__(self.OnClickNextPage))
- self.currentPageText.SetText(str(self.currentPage))
- self.emotionToolTip = uiToolTip.ToolTip()
- for slot in (self.soloEmotionSlot, self.dualEmotionSlot, self.specialEmotionSlot, self.specialEmotionSlot2):
- slot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
- slot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectEmotion))
- slot.SetUnselectItemSlotEvent(ui.__mem_func__(self.__ClickEmotionSlot))
- slot.SetUseSlotEvent(ui.__mem_func__(self.__ClickEmotionSlot))
- slot.SetOverInItemEvent(ui.__mem_func__(self.__OverInEmotion))
- slot.SetOverOutItemEvent(ui.__mem_func__(self.__OverOutEmotion))
- slot.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_down.sub")
- for slotIdx, datadict in emotion.EMOTION_DICT.items():
- emotionIdx = slotIdx
- slot = self.soloEmotionSlot
- if slotIdx > 50 and slotIdx <= 60:
- slot = self.dualEmotionSlot
- if slotIdx > 60 and slotIdx <= 72:
- slot = self.specialEmotionSlot
- if slotIdx > 72:
- slot = self.specialEmotionSlot2
- slot.SetEmotionSlot(slotIdx, emotionIdx)
- slot.SetCoverButton(slotIdx)
- if app.ENABLE_PREMIUM_SYSTEM:
- if not player.IsPremium() and slotIdx > 60:
- slot.SetCoverButton(slotIdx, "d:/ymir work/ui/pet/skill_button/skill_enable_button.sub", "d:/ymir work/ui/pet/skill_button/skill_enable_button.sub", "d:/ymir work/ui/pet/skill_button/skill_enable_button.sub")
- self.soloEmotionSlot.SetSlot(24, 2, 32, 32, skill.GetEmptySkill())
- for i in xrange(3):
- self.dualEmotionSlot.SetSlot(54+i, 2, 32, 32, skill.GetEmptySkill())
- for i in xrange(3):
- self.specialEmotionSlot2.SetSlot(82+i, 2, 32, 32, skill.GetEmptySkill())
- def __SelectEmotion(self, slotIndex):
- if not slotIndex in emotion.EMOTION_DICT:
- return
- if app.IsPressed(app.DIK_LCONTROL):
- player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_EMOTION, slotIndex)
- return
- mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_EMOTION, slotIndex, slotIndex)
- def __ClickEmotionSlot(self, slotIndex):
- if not slotIndex in emotion.EMOTION_DICT:
- return
- if player.IsActingEmotion():
- return
- command = emotion.EMOTION_DICT[slotIndex]["command"]
- if slotIndex > 50 and slotIndex <= 60:
- vid = player.GetTargetVID()
- if 0 == vid or vid == player.GetMainCharacterIndex() or chr.IsNPC(vid) or chr.IsEnemy(vid):
- chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EMOTION_CHOOSE_ONE)
- return
- command += " " + chr.GetNameByVID(vid)
- net.SendChatPacket(command)
- def ActEmotion(self, emotionIndex):
- self.__ClickEmotionSlot(emotionIndex)
- def __OverInEmotion(self, slotIndex):
- if self.emotionToolTip:
- if not slotIndex in emotion.EMOTION_DICT:
- return
- self.emotionToolTip.ClearToolTip()
- self.emotionToolTip.SetTitle(emotion.EMOTION_DICT[slotIndex]["name"])
- self.emotionToolTip.AlignHorizonalCenter()
- self.emotionToolTip.ShowToolTip()
- def __OverOutEmotion(self):
- if self.emotionToolTip:
- self.emotionToolTip.HideToolTip()
- def __BindEvent(self):
- for i in xrange(len(self.skillGroupButton)):
- self.skillGroupButton[i].SetEvent(ui.__mem_func__(self.__SelectSkillGroup),i)
- self.RefreshQuest()
- self.__HideJobToolTip()
- for (tabKey, tabButton) in self.tabButtonDict.items():
- tabButton.SetEvent(ui.__mem_func__(self.__OnClickTabButton), tabKey)
- for (tabCharacterKey, tabCharacterButton) in self.tabCharacterPageDict.items():
- tabCharacterButton.SetEvent(ui.__mem_func__(self.SetStatusPage), tabCharacterKey)
- tabCharacterButton.ShowToolTip = lambda arg=tabCharacterKey: self.__OverInCharacterButton(arg)
- tabCharacterButton.HideToolTip = lambda arg=tabCharacterKey: self.__OverOutCharacterButton()
- if tabCharacterKey == 1 or tabCharacterKey == 2:
- tabCharacterButton.Hide()
- for (statusPlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
- statusPlusButton.SAFE_SetEvent(self.__OnClickStatusPlusButton, statusPlusKey)
- statusPlusButton.SetShowToolTipEvent(ui.__mem_func__(self.__OverInStatButton), statusPlusKey)
- statusPlusButton.SetHideToolTipEvent(ui.__mem_func__(self.__OverOutStatButton), statusPlusKey)
- for (statusMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
- statusMinusButton.SAFE_SetEvent(self.__OnClickStatusMinusButton, statusMinusKey)
- statusMinusButton.SetShowToolTipEvent(ui.__mem_func__(self.__OverInStatMinusButton), statusMinusKey)
- statusMinusButton.SetHideToolTipEvent(ui.__mem_func__(self.__OverOutStatMinusButton), statusMinusKey)
- for titleBarValue in self.titleBarDict.itervalues():
- titleBarValue.SetCloseEvent(ui.__mem_func__(self.Close))
- for statusImageKey in self.statusImageDic.keys():
- statusImageButton, statusImageDescKey = self.statusImageDic[statusImageKey]
- statusImageButton.SAFE_SetEvent(self.__OverInStatusImage, "MOUSE_OVER_IN", statusImageKey, statusImageDescKey)
- statusImageButton.SAFE_SetEvent(self.__OverOutStatusImage, "MOUSE_OVER_OUT")
- if app.ENABLE_QUEST_RENEWAL:
- self.questTitleBar.SetCloseEvent(ui.__mem_func__(self.Close))
- self.questScrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScrollQuest))
- for i in xrange(quest.QUEST_CATEGORY_MAX_NUM):
- self.questCategoryList[i].SetEvent(ui.__mem_func__(self.__OnClickQuestCategoryButton), i)
- else:
- self.questSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.__SelectQuest))
- self.bonusPageObjectManage["scrollbar"].SetScrollEvent(ui.__mem_func__(self.__OnScrollBonusPage))
- self.infoSpecialPageObjectManage["scrollbar"].SetScrollEvent(ui.__mem_func__(self.__OnScrollSpecialPage))
- def __LoadWindow(self):
- if self.isLoaded == 1:
- return
- self.isLoaded = 1
- try:
- self.__LoadScript("UIScript/CharacterWindow.py")
- self.__BindObject()
- self.__BindEvent()
- except:
- import exception
- exception.Abort("CharacterWindow.__LoadWindow")
- self.SetState("STATUS")
- self.SetStatusPage(self.character_actual_page)
- self.__LoadBonusPagesCategory()
- self.__LoadStaticInfoPagesCategory()
- x, y = self.GetGlobalPosition()
- #if self.interface and self.interface.wndPartyBonusWindow:
- self.SelectSkill(0, True)
- def Destroy(self):
- self.ClearDictionary()
- if app.ENABLE_PARTY_RENEW_SELECTION:
- if self.interface.wndPartyBonusWindow:
- self.interface.wndPartyBonusWindow.Close()
- self.wndCharacterDetails.Close()
- self.wndCharacterDetails.Destroy()
- self.__Initialize()
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- OBJECT_PARM_HEIGHT = 20
- def __LoadBonusPagesCategory(self): #Cria as categorias e armazena-as numa lista
- for (index, info) in self.bonusPageItemsInfo.items():
- name = list(info.keys())[0]
- bonus = info[name]
- separator = ui.SubTitleBar()
- separator.SetParent(self.bonusPageObjectManage["label"])
- separator.MakeSubTitleBar(210, "red")
- separator.SetSize(210, 16)
- separator.SetPosition(3, 3+(18 * index) + (2 * index))
- separator.SetTextAlignLeft(name)
- separator.SetQuestLabel(quest_lable_expend_img_path_dict[index], len(bonus))
- separator.SetMiniImageNorm("d:/ymir work/ui/game/windows/red_icon_bonus.sub")
- separator.SetMiniImageOpen("d:/ymir work/ui/game/windows/red_icon_bonus.sub")
- separator.SetEvent(ui.__mem_func__(self.__OnClickBonusPageSeparator), index, bonus)
- separator.Show()
- self.bonusPageCategoryList.append((separator, bonus))
- def GetBonusBoardEndPosition(self): #Retorna a posi��o do fim da board dos b�nus
- #s� d� return � altura da board devido �s posi��es serem trabalhadas localmente
- return self.bonusPageObjectManage["max_height"]
- def GetFirstBonusPageObjectPosition(self): #Retorna a posi��o do primeiro objeto da p�gina
- return (self.bonusPageCategoryList[0][0].GetLocalPosition()[1])
- def GetLastBonusPageObjectPosition(self): #Retorna a posi��o do �ltimo elemento da p�gina
- #se estiver aberta a �ltima p�gina, o �ltimo elemento � o �ltimo quadro de b�nus
- if (self.bonusPageSelectedCategory +1) == len(self.bonusPageCategoryList):
- return (self.bonusPageObjectList[-1].GetLocalPosition()[1] + self.OBJECT_PARM_HEIGHT)
- #se n�o estiver retorna a posi�ao da �ltima categoria
- return (self.bonusPageCategoryList[-1][0].GetLocalPosition()[1] + self.bonusPageCategoryList[-1][0].GetHeight())
- def GetOpenedCategorySize(self): #Retorna o tamanho da categoria aberta (A CONTAR DO PRIMEIRO AO �LTIMO OBJETO)
- return (self.bonusPageObjectList[-1].GetLocalPosition()[1] + self.OBJECT_PARM_HEIGHT) - self.bonusPageObjectList[0].GetLocalPosition()[1]
- def RefreshCategoryBasePosition(self): #Atualiza as posi��es bases das categorias
- self.bonusPageCategoryBasePos = [] #Elimina todas as antigas posi��es
- for (label, _) in self.bonusPageCategoryList: #Descobre e armazena a posi��o base das categorias
- self.bonusPageCategoryBasePos.append(label.GetLocalPosition())
- def RefreshScrollDistance(self): #Atualiza a dist�ncia entre o �ltimo objeto e o fim da board
- distance = self.GetLastBonusPageObjectPosition() - self.GetBonusBoardEndPosition()
- self.bonusPageObjectManage["scroll_distance"] = distance
- def RefreshScrollBarState(self): #Atualiza o estado da scrollbar
- self.bonusPageObjectManage["scrollbar"].SetPos(0) #Inicializa a posi��o da scroll
- canShowScroll = bool(self.GetLastBonusPageObjectPosition() > self.GetBonusBoardEndPosition())
- self.bonusPageObjectManage["scrollbar"].Show() if canShowScroll else self.bonusPageObjectManage["scrollbar"].Hide()
- def RefreshBonusPageItemInfo(self): #Usado para dar reload aos b�nus (chamado pela interfaceModule)
- for bonusObject in self.bonusPageObjectList:
- bonusObject.RefreshApplyValue()
- def CloseAllBonusPageCat(self): #Reseta a p�gina dos b�nus
- for object in self.bonusPageObjectList: object.Hide() #Esconde todos os objetos tempor�rios
- for ((label, _), index) in zip(self.bonusPageCategoryList, xrange(len(self.bonusPageCategoryList))):
- label.SetPosition(3, 3+(18 * index) + (2 * index)) #Retorna as categorias �s suas posi��es inicias
- label.Show()
- label.SetTop()
- self.bonusPageObjectList = [] #Elimina os objetos tempor�rios
- def SetBonusPageCategory(self, category): #Atribui a categoria atual
- self.bonusPageSelectedCategory = category
- #Quando se clica num separador (catIndex - index da categoria na lista, bonus - array com os bonus)
- def __OnClickBonusPageSeparator(self, catIndex, bonus):
- #Fecha a categoria e reseta a p�gina de b�nus caso o jogador tenha presionado numa categoria j� aberta
- if self.bonusPageSelectedCategory == catIndex:
- self.SetBonusPageCategory(-1)
- self.CloseAllBonusPageCat()
- self.bonusPageObjectManage["scrollbar"].Hide()
- return
- self.CloseAllBonusPageCat() #Reseta a p�gina e atribui a nova categoria
- self.SetBonusPageCategory(catIndex)
- catLabel = self.bonusPageCategoryList[catIndex][0] #Retorna o objeto da categoria escolhida
- catLabel_x, catLabel_y = catLabel.GetLocalPosition() #Retorna a posi��o da categoria escolhida
- for (bonus_info, index) in zip(bonus, xrange(len(bonus))): #Cria os objetos (bonus)
- tmpCreatedObject = CharacterPageCreateBonus()
- tmpCreatedObject.SetParent(self.bonusPageObjectManage["label"])
- tmpCreatedObject.SetBasePosition(catLabel_x, catLabel_y + 25 + (self.OBJECT_PARM_HEIGHT* index) + (3 * index))
- bonusDesc, bonusType = bonus_info
- tmpCreatedObject.SetName(bonusDesc)
- tmpCreatedObject.SetApplyValue(bonusType)
- tmpCreatedObject.RefreshApplyValue()
- tmpCreatedObject.Show()
- tmpCreatedObject.SetTop()
- self.bonusPageObjectList.append(tmpCreatedObject)
- categorySize = self.GetOpenedCategorySize() #Retorna o tamanho da categoria aberta
- for ((label, _), labelKey) in zip(self.bonusPageCategoryList, xrange(len(self.bonusPageCategoryList))):
- if labelKey <= catIndex: continue #S� interessa categorias que estejam abaixo da categoria aberta
- label_x, label_y = label.GetLocalPosition()
- #incrementa (self.OBJECT_PARM_HEIGHT/2) para o �ltimo objeto n�o ficar "colado" � pr�xima categoria
- label.SetPosition(label_x, label_y + categorySize + (self.OBJECT_PARM_HEIGHT/2))
- self.RefreshCategoryBasePosition() #D� refresh �s posi��es base das categorias
- self.RefreshScrollDistance() #D� refresh � dist�ncia entre o �ltimo objeto e o fim da board
- self.RefreshScrollBarState() #D� refresh ao estado da scrollbar
- self.CheckBonusPageRect() #Atualiza o ret�ngulo de renderiza��o da p�gina
- def __OnScrollBonusPage(self):
- scrollDistance = self.bonusPageObjectManage["scroll_distance"] #Retorna a dist�ncia entre o ultimo elemento e a board
- scrollPos = self.bonusPageObjectManage["scrollbar"].GetPos() #Retorna a posi��o da scrol (0.0-1.0)
- #Dist�ncia que os objetos se mexem, calcula a porpo��o da dist�ncia relativamente � posi��o da scrollbar
- heightDistance = scrollPos * scrollDistance
- for bonusObject in self.bonusPageObjectList:
- bonusObject_x, bonusObject_y = bonusObject.GetBasePosition() #Retorna a posi��o base dos objetos
- bonusObject.SetPosition(bonusObject_x, bonusObject_y - heightDistance)
- for categoryKey in xrange(len(self.bonusPageCategoryList)):
- catObject = self.bonusPageCategoryList[categoryKey][0] #Retorna a label
- category_x, category_y = self.bonusPageCategoryBasePos[categoryKey] #Retorna a posi��o base das categorias
- catObject.SetPosition(category_x, category_y - heightDistance)
- self.CheckBonusPageRect() #Atualiza o ret�ngulo de renderiza��o da p�gina
- def CheckBonusPageRect(self): #Atualiza o ret�ngulo de renderiza��o da p�gina
- def CanShow(posY, height):
- if posY < 1 or posY + height > self.GetBonusBoardEndPosition():
- return False
- return True
- for bonusObject in self.bonusPageObjectList:
- bonusObject_x, bonusObject_y = bonusObject.GetLocalPosition()
- bonusObject_height = bonusObject.GetHeight()
- bonusObject.Show() if CanShow(bonusObject_y, bonusObject_height) else bonusObject.Hide()
- for (label, _) in self.bonusPageCategoryList:
- blabel_x, label_y = label.GetLocalPosition()
- label_height = label.GetHeight()
- label.Show() if CanShow(label_y, label_height) else label.Hide()
- def __LoadStaticInfoPagesCategory(self): #Cria as categorias e armazena-as numa lista
- for (index, info) in self.infoSpecialPageItemsInfo.items():
- name = list(info.keys())[0]
- bonus = info[name]
- separator = ui.SubTitleBar()
- separator.SetParent(self.infoSpecialPageObjectManage["label"])
- separator.MakeSubTitleBar(210, "red")
- separator.SetSize(210, 16)
- separator.SetPosition(3, 3+(18 * index) + (2 * index))
- separator.SetTextAlignLeft(name)
- separator.SetQuestLabel(quest_lable_expend_img_path_dict[index], len(bonus))
- separator.SetMiniImageNorm("d:/ymir work/ui/game/windows/blue_incon_bonus.sub")
- separator.SetMiniImageOpen("d:/ymir work/ui/game/windows/blue_incon_bonus.sub")
- separator.SetEvent(ui.__mem_func__(self.__OnClickSpecialPageSeparator), index, bonus)
- separator.Show()
- self.infoSpecialPageCategoryList.append((separator, bonus))
- def GetSpecialBoardEndPosition(self): #Retorna a posi��o do fim da board dos b�nus
- #s� d� return � altura da board devido �s posi��es serem trabalhadas localmente
- return self.infoSpecialPageObjectManage["max_height"]
- def GetFirstSpecialPageObjectPosition(self): #Retorna a posi��o do primeiro objeto da p�gina
- return (self.infoSpecialPageCategoryList[0][0].GetLocalPosition()[1])
- def GetLastSpecialPageObjectPosition(self): #Retorna a posi��o do �ltimo elemento da p�gina
- #se estiver aberta a �ltima p�gina, o �ltimo elemento � o �ltimo quadro de b�nus
- if (self.infoSpecialPageSelectedCategory +1) == len(self.infoSpecialPageCategoryList):
- return (self.infoSpecialPageObjectList[-1].GetLocalPosition()[1] + self.OBJECT_PARM_HEIGHT)
- #se n�o estiver retorna a posi�ao da �ltima categoria
- return (self.infoSpecialPageCategoryList[-1][0].GetLocalPosition()[1] + self.infoSpecialPageCategoryList[-1][0].GetHeight())
- def GetOpenedSpecialCategorySize(self): #Retorna o tamanho da categoria aberta (A CONTAR DO PRIMEIRO AO �LTIMO OBJETO)
- return (self.infoSpecialPageObjectList[-1].GetLocalPosition()[1] + self.OBJECT_PARM_HEIGHT) - self.infoSpecialPageObjectList[0].GetLocalPosition()[1]
- def RefreshSpecialCategoryBasePosition(self): #Atualiza as posi��es bases das categorias
- self.infoSpecialPageCategoryBasePos = [] #Elimina todas as antigas posi��es
- for (label, _) in self.infoSpecialPageCategoryList: #Descobre e armazena a posi��o base das categorias
- self.infoSpecialPageCategoryBasePos.append(label.GetLocalPosition())
- def RefreshSpecialScrollDistance(self): #Atualiza a dist�ncia entre o �ltimo objeto e o fim da board
- distance = self.GetLastSpecialPageObjectPosition() - self.GetSpecialBoardEndPosition()
- self.infoSpecialPageObjectManage["scroll_distance"] = distance
- def RefreshSpecialScrollBarState(self): #Atualiza o estado da scrollbar
- self.infoSpecialPageObjectManage["scrollbar"].SetPos(0) #Inicializa a posi��o da scroll
- canShowScroll = bool(self.GetLastSpecialPageObjectPosition() > self.GetSpecialBoardEndPosition())
- self.infoSpecialPageObjectManage["scrollbar"].Show() if canShowScroll else self.infoSpecialPageObjectManage["scrollbar"].Hide()
- def RefreshSpecialPageItemInfo(self): #Usado para dar reload aos b�nus (chamado pela interfaceModule)
- for bonusObject in self.infoSpecialPageObjectList:
- bonusObject.RefreshApplyValue()
- def CloseAllSpecialPageCat(self): #Reseta a p�gina dos b�nus
- for object in self.infoSpecialPageObjectList: object.Hide() #Esconde todos os objetos tempor�rios
- for ((label, _), index) in zip(self.infoSpecialPageCategoryList, xrange(len(self.infoSpecialPageCategoryList))):
- label.SetPosition(3, 3+(18 * index) + (2 * index)) #Retorna as categorias �s suas posi��es inicias
- label.Show()
- label.SetTop()
- self.infoSpecialPageObjectList = [] #Elimina os objetos tempor�rios
- def SetSpecialPageCategory(self, category): #Atribui a categoria atual
- self.infoSpecialPageSelectedCategory = category
- #Quando se clica num separador (catIndex - index da categoria na lista, bonus - array com os bonus)
- def __OnClickSpecialPageSeparator(self, catIndex, bonus):
- #Fecha a categoria e reseta a p�gina de b�nus caso o jogador tenha presionado numa categoria j� aberta
- if self.infoSpecialPageSelectedCategory == catIndex:
- self.SetSpecialPageCategory(-1)
- self.CloseAllSpecialPageCat()
- self.infoSpecialPageObjectManage["scrollbar"].Hide()
- return
- self.CloseAllSpecialPageCat() #Reseta a p�gina e atribui a nova categoria
- self.SetSpecialPageCategory(catIndex)
- catLabel = self.infoSpecialPageCategoryList[catIndex][0] #Retorna o objeto da categoria escolhida
- catLabel_x, catLabel_y = catLabel.GetLocalPosition() #Retorna a posi��o da categoria escolhida
- for (bonus_info, index) in zip(bonus, xrange(len(bonus))): #Cria os objetos (bonus)
- tmpCreatedObject = CharacterPageCreateBonus()
- tmpCreatedObject.SetParent(self.infoSpecialPageObjectManage["label"])
- tmpCreatedObject.SetBasePosition(catLabel_x, catLabel_y + 25 + (self.OBJECT_PARM_HEIGHT* index) + (3 * index))
- bonusDesc, bonusType = bonus_info
- tmpCreatedObject.SetName(bonusDesc)
- tmpCreatedObject.SetApplyValue(bonusType)
- tmpCreatedObject.RefreshApplyValue()
- tmpCreatedObject.Show()
- tmpCreatedObject.SetTop()
- self.infoSpecialPageObjectList.append(tmpCreatedObject)
- categorySize = self.GetOpenedSpecialCategorySize() #Retorna o tamanho da categoria aberta
- for ((label, _), labelKey) in zip(self.infoSpecialPageCategoryList, xrange(len(self.infoSpecialPageCategoryList))):
- if labelKey <= catIndex: continue #S� interessa categorias que estejam abaixo da categoria aberta
- label_x, label_y = label.GetLocalPosition()
- #incrementa (self.OBJECT_PARM_HEIGHT/2) para o �ltimo objeto n�o ficar "colado" � pr�xima categoria
- label.SetPosition(label_x, label_y + categorySize + (self.OBJECT_PARM_HEIGHT/2))
- self.RefreshSpecialCategoryBasePosition() #D� refresh �s posi��es base das categorias
- self.RefreshSpecialScrollDistance() #D� refresh � dist�ncia entre o �ltimo objeto e o fim da board
- self.RefreshSpecialScrollBarState() #D� refresh ao estado da scrollbar
- self.CheckSpecialPageRect() #Atualiza o ret�ngulo de renderiza��o da p�gina
- def __OnScrollSpecialPage(self):
- scrollDistance = self.infoSpecialPageObjectManage["scroll_distance"] #Retorna a dist�ncia entre o ultimo elemento e a board
- scrollPos = self.infoSpecialPageObjectManage["scrollbar"].GetPos() #Retorna a posi��o da scrol (0.0-1.0)
- #Dist�ncia que os objetos se mexem, calcula a porpo��o da dist�ncia relativamente � posi��o da scrollbar
- heightDistance = scrollPos * scrollDistance
- for bonusObject in self.infoSpecialPageObjectList:
- bonusObject_x, bonusObject_y = bonusObject.GetBasePosition() #Retorna a posi��o base dos objetos
- bonusObject.SetPosition(bonusObject_x, bonusObject_y - heightDistance)
- for categoryKey in xrange(len(self.infoSpecialPageCategoryList)):
- catObject = self.infoSpecialPageCategoryList[categoryKey][0] #Retorna a label
- category_x, category_y = self.infoSpecialPageCategoryBasePos[categoryKey] #Retorna a posi��o base das categorias
- catObject.SetPosition(category_x, category_y - heightDistance)
- self.CheckSpecialPageRect() #Atualiza o ret�ngulo de renderiza��o da p�gina
- def CheckSpecialPageRect(self): #Atualiza o ret�ngulo de renderiza��o da p�gina
- def CanShow(posY, height):
- if posY < 1 or posY + height > self.GetSpecialBoardEndPosition():
- return False
- return True
- for bonusObject in self.infoSpecialPageObjectList:
- bonusObject_x, bonusObject_y = bonusObject.GetLocalPosition()
- bonusObject_height = bonusObject.GetHeight()
- bonusObject.Show() if CanShow(bonusObject_y, bonusObject_height) else bonusObject.Hide()
- for (label, _) in self.infoSpecialPageCategoryList:
- blabel_x, label_y = label.GetLocalPosition()
- label_height = label.GetHeight()
- label.Show() if CanShow(label_y, label_height) else label.Hide()
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- ########################################
- def Close(self):
- if self.toolTipSkill:
- self.toolTipSkill.Hide()
- if app.ENABLE_PARTY_RENEW_SELECTION:
- if self.interface.wndPartyBonusWindow:
- if self.interface.wndPartyBonusWindow.IsShow():
- self.interface.wndPartyBonusWindow.Close()
- if self.wndCharacterDetails.IsShow():
- self.ToggleCharacterDetails()
- if app.ENABLE_QUEST_RENEWAL:
- if self.questSlideWndNewKey > 0:
- if self.questSlideWnd[self.questSlideWndNewKey-1] is not None:
- self.questSlideWnd[self.questSlideWndNewKey-1].CloseSelf()
- if app.ENABLE_SKILL_COLOR_SYSTEM:
- if self.skillColorWnd and self.skillColorWnd.IsShow():
- self.skillColorWnd.Hide()
- self.Hide()
- def BindInterfaceClass(self, interface):
- self.interface = interface
- def SetSkillToolTip(self, toolTipSkill):
- self.toolTipSkill = toolTipSkill
- def __OnClickStatusPlusButton(self, statusKey):
- cmd = self.statusPlusCommandDict[statusKey]
- if app.IsPressed(app.DIK_LCONTROL):
- cmd = cmd + "10"
- else:
- cmd = cmd + "1"
- net.SendChatPacket(cmd)
- def __OnClickStatusMinusButton(self, statusKey):
- try:
- statusMinusCommand=self.statusMinusCommandDict[statusKey]
- net.SendChatPacket(statusMinusCommand)
- except KeyError, msg:
- dbg.TraceError("CharacterWindow.__OnClickStatusMinusButton KeyError: %s", msg)
- def __OnClickTabButton(self, stateKey):
- self.SetState(stateKey)
- def GetStatusPage(self):
- return self.character_actual_page
- def SetStatusPage(self, statusPage):
- if self.state != "STATUS":
- return
- self.character_actual_page = statusPage
- for key, label in self.characterPageDict.items():
- label.Show() if key == statusPage else label.Hide()
- for key_b, button in self.tabCharacterPageDict.items():
- button.SetUp() if key_b != statusPage else button.Down()
- def SetState(self, stateKey):
- self.state = stateKey
- # if app.ENABLE_PARTY_RENEW_SELECTION:
- # if stateKey != "SKILL":
- # if self.interface:
- # self.interface.TogglePartyBonusWindow(True)
- self.SelectSkill(0, True)
- if app.ENABLE_QUEST_RENEWAL:
- if stateKey != "QUEST":
- self.questPage.Hide()
- if self.questSlideWndNewKey > 0:
- if self.questSlideWnd[self.questSlideWndNewKey-1] is not None:
- self.questSlideWnd[self.questSlideWndNewKey-1].CloseSelf()
- else:
- self.__LoadQuestCategory()
- for (tabKey, tabButton) in self.tabButtonDict.items():
- if stateKey!=tabKey:
- tabButton.SetUp()
- for tabValue in self.tabDict.itervalues():
- tabValue.Hide()
- for pageValue in self.pageDict.itervalues():
- pageValue.Hide()
- for titleBarValue in self.titleBarDict.itervalues():
- titleBarValue.Hide()
- if stateKey == "STATUS":
- self.SetStatusPage(0)
- self.titleBarDict[stateKey].Show()
- self.tabDict[stateKey].Show()
- self.pageDict[stateKey].Show()
- def GetState(self):
- return self.state
- def __GetTotalAtkText(self):
- minAtk=player.GetStatus(player.ATT_MIN)
- maxAtk=player.GetStatus(player.ATT_MAX)
- atkBonus=player.GetStatus(player.ATT_BONUS)
- attackerBonus=player.GetStatus(player.ATTACKER_BONUS)
- min = int(minAtk+atkBonus)
- max = int(maxAtk+atkBonus)
- attack = int(attackerBonus)
- groupbonusattack = self.GetChild("ATT_Slot")
- if attack != 0:
- groupbonusattack.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowJobToolTipBonus)
- groupbonusattack.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideJobToolTipBonus)
- else:
- groupbonusattack.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__HideJobToolTipBonus)
- if minAtk == maxAtk:
- if attack == 0:
- return "%s" % (min)
- else:
- return "%s |cff00ff00|h+ (%s)" % (min, attack)
- else:
- if attack == 0:
- return "%s - %s" % (min, max)
- else:
- return "%s - %s |cff00ff00|h+ (%s)" % (min, max, attack)
- def __ShowJobToolTipBonus(self):
- self.toolTipJobPartyBonus.ClearToolTip()
- self.toolTipJobPartyBonus.AppendTextLine("Party bonus: Attack value", self.POSITIVE_COLOR)
- self.toolTipJobPartyBonus.ShowToolTip()
- def __HideJobToolTipBonus(self):
- self.toolTipJobPartyBonus.HideToolTip()
- def __GetTotalMagAtkText(self):
- minMagAtk=player.GetStatus(player.MAG_ATT)+player.GetStatus(player.MIN_MAGIC_WEP)
- maxMagAtk=player.GetStatus(player.MAG_ATT)+player.GetStatus(player.MAX_MAGIC_WEP)
- if minMagAtk==maxMagAtk:
- return "%s" % (localeInfo.AddPointToNumberString(minMagAtk))
- else:
- return "%s-%s" % (localeInfo.AddPointToNumberString(minMagAtk), localeInfo.AddPointToNumberString(maxMagAtk))
- def __GetTotalDefText(self):
- defValue=player.GetStatus(player.DEF_GRADE)
- if constInfo.ADD_DEF_BONUS_ENABLE:
- defValue+=player.GetStatus(player.DEF_BONUS)
- return "%s" % (localeInfo.AddPointToNumberString(defValue))
- def RefreshStatus(self):
- if self.isLoaded==0:
- return
- try:
- # self.GetChild("Level_Value").SetFontName(localeInfo.UI_BOLD_FONT)
- self.GetChild("Level_Value").SetText(str(player.GetStatus(player.LEVEL)))
- # self.GetChild("Exp_Value").SetFontName(localeInfo.UI_BOLD_FONT)
- self.GetChild("Exp_Value").SetText(localeInfo.AddPointToNumberString(unsigned32(player.GetEXP())))
- # self.GetChild("RestExp_Value").SetFontName(localeInfo.UI_BOLD_FONT)
- self.GetChild("RestExp_Value").SetText(localeInfo.AddPointToNumberString(unsigned32(player.GetStatus(player.NEXT_EXP)) - unsigned32(player.GetStatus(player.EXP))))
- self.GetChild("HP_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.HP)) + '/' + localeInfo.AddPointToNumberString(player.GetStatus(player.MAX_HP)))
- self.GetChild("SP_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.SP)) + '/' + localeInfo.AddPointToNumberString(player.GetStatus(player.MAX_SP)))
- self.GetChild("STR_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.ST)))
- self.GetChild("DEX_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.DX)))
- self.GetChild("HTH_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.HT)))
- self.GetChild("INT_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.IQ)))
- self.GetChild("ATT_Value").SetText(self.__GetTotalAtkText())
- self.GetChild("DEF_Value").SetText(self.__GetTotalDefText())
- self.GetChild("MATT_Value").SetText(self.__GetTotalMagAtkText())
- self.GetChild("MDEF_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.MAG_DEF)))
- self.GetChild("ASPD_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.ATT_SPEED)))
- self.GetChild("MSPD_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.MOVING_SPEED)))
- self.GetChild("CSPD_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.CASTING_SPEED)))
- self.GetChild("ER_Value").SetText(localeInfo.AddPointToNumberString(player.GetStatus(player.EVADE_RATE)))
- except:
- pass
- self.__RefreshStatusPlusButtonList()
- self.__RefreshStatusMinusButtonList()
- self.RefreshAlignment()
- self.wndCharacterDetails.RefreshBonuses()
- if self.refreshToolTip:
- self.refreshToolTip()
- self.RefreshBonusPageItemInfo()
- self.RefreshSpecialPageItemInfo()
- def __RefreshStatusPlusButtonList(self):
- if self.isLoaded==0:
- return
- statusPlusPoint=player.GetStatus(player.STAT)
- if statusPlusPoint>0:
- self.statusPlusValue.SetText(str(statusPlusPoint))
- self.statusPlusLabel.Show()
- self.ShowStatusPlusButtonList()
- else:
- self.statusPlusValue.SetText(str(0))
- self.statusPlusLabel.Hide()
- self.HideStatusPlusButtonList()
- def __RefreshStatusMinusButtonList(self):
- if self.isLoaded==0:
- return
- statusMinusPoint=self.__GetStatMinusPoint()
- if statusMinusPoint>0:
- self.__ShowStatusMinusButtonList()
- else:
- self.__HideStatusMinusButtonList()
- def RefreshAlignment(self):
- point, grade = player.GetAlignmentData()
- import colorInfo
- COLOR_DICT = { 0 : colorInfo.TITLE_RGB_GOOD_4,
- 1 : colorInfo.TITLE_RGB_GOOD_3,
- 2 : colorInfo.TITLE_RGB_GOOD_2,
- 3 : colorInfo.TITLE_RGB_GOOD_1,
- 4 : colorInfo.TITLE_RGB_NORMAL,
- 5 : colorInfo.TITLE_RGB_EVIL_1,
- 6 : colorInfo.TITLE_RGB_EVIL_2,
- 7 : colorInfo.TITLE_RGB_EVIL_3,
- 8 : colorInfo.TITLE_RGB_EVIL_4, }
- colorList = COLOR_DICT.get(grade, colorInfo.TITLE_RGB_NORMAL)
- gradeColor = ui.GenerateColor(colorList[0], colorList[1], colorList[2])
- self.toolTipAlignment.ClearToolTip()
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.TITLE_NAME_LIST[grade], gradeColor)
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_NAME + str(point))
- NORMAL_COLOR = 0xFF37CDD2
- if point >= 1000 and point <= 3999:
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_1, NORMAL_COLOR)
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_2, NORMAL_COLOR)
- elif point >= 4000 and point <= 7999:
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_3, NORMAL_COLOR)
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_4, NORMAL_COLOR)
- elif point >= 8000 and point <= 11999:
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_5, NORMAL_COLOR)
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_6, NORMAL_COLOR)
- elif point >= 12000:
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_7, NORMAL_COLOR)
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_8, NORMAL_COLOR)
- else:
- self.toolTipAlignment.AutoAppendTextLine(localeInfo.ALIGNMENT_BONUS_0, NORMAL_COLOR)
- #endif
- self.toolTipAlignment.AlignHorizonalCenter()
- def __ShowStatusMinusButtonList(self):
- for (stateMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
- statusMinusButton.Show()
- def __HideStatusMinusButtonList(self):
- for (stateMinusKey, statusMinusButton) in self.statusMinusButtonDict.items():
- statusMinusButton.Hide()
- def ShowStatusPlusButtonList(self):
- for (statePlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
- statusPlusButton.Show()
- def HideStatusPlusButtonList(self):
- for (statePlusKey, statusPlusButton) in self.statusPlusButtonDict.items():
- statusPlusButton.Hide()
- def SelectSkill(self, skillSlotIndex, isForce = False):
- if app.ENABLE_PARTY_RENEW_SELECTION:
- if skillSlotIndex == 0 and isForce:
- x, y = self.GetGlobalPosition()
- if self.interface:
- if self.interface.wndPartyBonusWindow.IsShow():
- return
- self.interface.TogglePartyBonusWindow()
- self.interface.wndPartyBonusWindow.AdjustPosition(x, y + 410)
- return
- mouseController = mouseModule.mouseController
- if False == mouseController.isAttached():
- srcSlotIndex = self.__RealSkillSlotToSourceSlot(skillSlotIndex)
- selectedSkillIndex = player.GetSkillIndex(srcSlotIndex)
- if skill.CanUseSkill(selectedSkillIndex):
- if app.IsPressed(app.DIK_LCONTROL):
- player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_SKILL, srcSlotIndex)
- return
- mouseController.AttachObject(self, player.SLOT_TYPE_SKILL, srcSlotIndex, selectedSkillIndex)
- else:
- mouseController.DeattachObject()
- def SelectEmptySlot(self, SlotIndex):
- mouseModule.mouseController.DeattachObject()
- def OverInItem(self, slotNumber):
- if mouseModule.mouseController.isAttached():
- return
- if not self.toolTipSkill:
- return
- srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotNumber)
- skillIndex = player.GetSkillIndex(srcSlotIndex)
- skillLevel = player.GetSkillLevel(srcSlotIndex)
- skillGrade = player.GetSkillGrade(srcSlotIndex)
- skillType = skill.GetSkillType(skillIndex)
- if skill.SKILL_TYPE_ACTIVE == skillType:
- overInSkillGrade = self.__GetSkillGradeFromSlot(slotNumber)
- if overInSkillGrade == skill.SKILL_GRADE_COUNT-1 and skillGrade == skill.SKILL_GRADE_COUNT:
- self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
- elif overInSkillGrade == skillGrade:
- if app.ENABLE_SKILLS_LEVEL_OVER_P and skillGrade == 2:
- self.toolTipSkill.SetSkillOnlyName(srcSlotIndex, skillIndex, overInSkillGrade + 1)
- else:
- self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, overInSkillGrade, skillLevel)
- elif app.ENABLE_SKILLS_LEVEL_OVER_P and overInSkillGrade == skill.SKILL_GRADE_COUNT-2 and skillGrade >= skill.SKILL_GRADE_COUNT-1:
- self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
- else:
- if app.ENABLE_SKILLS_LEVEL_OVER_P and overInSkillGrade == 1 and skillGrade == 2:
- self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, overInSkillGrade + 1, skillLevel)
- elif app.ENABLE_SKILLS_LEVEL_OVER_P and overInSkillGrade == 2 and skillGrade < 3:
- self.toolTipSkill.SetSkillOnlyName(srcSlotIndex, skillIndex, overInSkillGrade + 1)
- else:
- self.toolTipSkill.SetSkillOnlyName(srcSlotIndex, skillIndex, overInSkillGrade)
- else:
- self.toolTipSkill.SetSkillNew(srcSlotIndex, skillIndex, skillGrade, skillLevel)
- def OverOutItem(self):
- if 0 != self.toolTipSkill:
- self.toolTipSkill.HideToolTip()
- ## Quest
- def __SelectQuest(self, slotIndex):
- if app.ENABLE_QUEST_RENEWAL:
- questIndex = self.questIndexMap[slotIndex]
- if not questIndex in self.questClicked:
- self.questClicked.append(questIndex)
- else:
- questIndex = quest.GetQuestIndex(self.questShowingStartIndex + slotIndex)
- import event
- event.QuestButtonClick(-2147483648 + questIndex)
- def RefreshQuest(self):
- if app.ENABLE_QUEST_RENEWAL:
- if self.isLoaded == 0 or self.state != "QUEST":
- return
- for cat in self.questOpenedCategories:
- self.RefreshQuestCategory(cat)
- self.RefreshQuestCategoriesCount()
- else:
- if self.isLoaded==0:
- return
- self.OnQuestScroll()
- questCount = quest.GetQuestCount()
- questRange = range(quest.QUEST_MAX_NUM)
- if questCount > quest.QUEST_MAX_NUM:
- self.questScrollBar.Show()
- else:
- self.questScrollBar.Hide()
- for i in questRange[:questCount]:
- (questName, questIcon, questCounterName, questCounterValue) = quest.GetQuestData(self.questShowingStartIndex + i)
- if questName[0] == "*":
- questName = questName[1:]
- self.questNameList[i].SetText(questName)
- self.questNameList[i].Show()
- self.questLastCountList[i].Show()
- self.questLastTimeList[i].Show()
- if len(questCounterName) > 0:
- self.questLastCountList[i].SetText("%s : %d" % (questCounterName, questCounterValue))
- else:
- self.questLastCountList[i].SetText("")
- ## Icon
- self.questSlot.SetSlot(i, i, 1, 1, questIcon)
- for i in questRange[questCount:]:
- self.questNameList[i].Hide()
- self.questLastTimeList[i].Hide()
- self.questLastCountList[i].Hide()
- self.questSlot.ClearSlot(i)
- self.questSlot.HideSlotBaseImage(i)
- self.__UpdateQuestClock()
- if app.ENABLE_SCROLL_MOUSE:
- def OnRunMouseWheel(self, nLen):
- if self.state == "STATUS" and self.GetStatusPage() == 1:
- if self.bonusPageObjectManage["scrollbar"].IsShow():
- self.bonusPageObjectManage["scrollbar"].RunMouseWheel(nLen)
- elif self.state == "STATUS" and self.GetStatusPage() == 2:
- if self.infoSpecialPageObjectManage["scrollbar"].IsShow():
- self.infoSpecialPageObjectManage["scrollbar"].RunMouseWheel(nLen)
- elif self.state == "QUEST":
- if self.questScrollBar.IsShow():
- self.questScrollBar.RunMouseWheel(nLen)
- return True
- def __UpdateQuestClock(self):
- if "QUEST" == self.state:
- if app.ENABLE_QUEST_RENEWAL:
- for clock in self.questClockList:
- clockText = localeInfo.QUEST_UNLIMITED_TIME
- if clock.GetProperty("idx"):
- (lastName, lastTime) = quest.GetQuestLastTime(clock.GetProperty("idx"))
- if len(lastName) > 0:
- if lastTime <= 0:
- clockText = localeInfo.QUEST_TIMEOVER
- else:
- questLastMinute = lastTime / 60
- questLastSecond = lastTime % 60
- clockText = lastName + " : "
- if questLastMinute > 0:
- clockText += str(questLastMinute) + localeInfo.QUEST_MIN
- if questLastSecond > 0:
- clockText += " "
- if questLastSecond > 0:
- clockText += str(questLastSecond) + localeInfo.QUEST_SEC
- clock.SetText(clockText)
- else:
- # QUEST_LIMIT_COUNT_BUG_FIX
- for i in xrange(min(quest.GetQuestCount(), quest.QUEST_MAX_NUM)):
- # END_OF_QUEST_LIMIT_COUNT_BUG_FIX
- (lastName, lastTime) = quest.GetQuestLastTime(i + self.questShowingStartIndex)
- clockText = localeInfo.QUEST_UNLIMITED_TIME
- if len(lastName) > 0:
- if lastTime <= 0:
- clockText = localeInfo.QUEST_TIMEOVER
- else:
- questLastMinute = lastTime / 60
- questLastSecond = lastTime % 60
- clockText = lastName + " : "
- if questLastMinute > 0:
- clockText += str(questLastMinute) + localeInfo.QUEST_MIN
- if questLastSecond > 0:
- clockText += " "
- if questLastSecond > 0:
- clockText += str(questLastSecond) + localeInfo.QUEST_SEC
- self.questLastTimeList[i].SetText(clockText)
- def __GetStatMinusPoint(self):
- POINT_STAT_RESET_COUNT = 112
- return player.GetStatus(POINT_STAT_RESET_COUNT)
- def __OverInStatMinusButton(self, stat):
- try:
- self.__ShowStatToolTip(self.STAT_MINUS_DESCRIPTION[stat] % self.__GetStatMinusPoint())
- except KeyError:
- pass
- self.refreshToolTip = lambda arg=stat: self.__OverInStatMinusButton(arg)
- def __OverOutStatMinusButton(self):
- self.__HideStatToolTip()
- self.refreshToolTip = 0
- def __OverInStatButton(self, stat):
- try:
- self.__ShowStatToolTip(self.STAT_DESCRIPTION[stat], uiemojitranslate.EMOJI_CHARACTER_STATS_ADD % ("|Eemoji/key_ctrl|e", "|Eemoji/key_lclick|e"), True)
- except KeyError:
- pass
- def __OverOutStatButton(self):
- self.__HideStatToolTip()
- def __OverInCharacterButton(self, stat):
- m_text_tooltip = [localeInfo.STATUS_PAGE_TOOLTIP, localeInfo.BONUS_PAGE_TOOLTIP, localeInfo.OTHER_PAGE_TOOLTIP]
- self.toolTip.ClearToolTip()
- self.toolTip.AutoAppendNewTextLine(m_text_tooltip[stat])
- self.toolTip.Show()
- def __OverOutCharacterButton(self):
- self.toolTip.Hide()
- def __ShowStatToolTip(self, statDesc, statDesc2 = False, arg2 = False):
- self.toolTip.ClearToolTip()
- self.toolTip.AppendTextLine(statDesc)
- if arg2 == True:
- self.toolTip.AppendTextLine(statDesc2)
- self.toolTip.Show()
- def __HideStatToolTip(self):
- self.toolTip.Hide()
- def __OverInStatusImage(self, event, stat, statType):
- try:
- manage_desc = []
- if statType == 0:
- manage_desc = localeInfo.STAT_IMAGE_DESCRIPTION
- elif statType == 1:
- manage_desc = localeInfo.STAT_IMAGE_MAIN_DESCRIPTION
- elif statType == 2:
- manage_desc = localeInfo.STAT_IMAGE_OTHER_DESCRIPTION
- elif statType == 3:
- manage_desc = localeInfo.STATE_IMAGE_OTHER_INFO_DESC
- elif statType == 4:
- manage_desc = localeInfo.SKILL_PAGE_IMAGE_INFO_DESC
- elif statType == 5:
- manage_desc = localeInfo.EMOTICON_PAGE_IMAGE_INFO_DESC
- elif statType == 6:
- manage_desc = localeInfo.INFO_CHARACTER_PAGE_DESC
- self.__ShowStateImageTooltip(manage_desc[stat])
- except KeyError:
- pass
- def __OverOutStatusImage(self):
- self.__HideStatImageToolTip()
- def __ShowStateImageTooltip(self, statDesc):
- self.toolTip.ClearToolTip()
- self.toolTip.AutoAppendNewTextLine(statDesc)
- self.toolTip.Show()
- def __HideStatImageToolTip(self):
- self.toolTip.Hide()
- def OnPressEscapeKey(self):
- if app.ENABLE_QUEST_RENEWAL:
- if self.questSlideWndNewKey > 0:
- if self.questSlideWnd[self.questSlideWndNewKey-1] is not None:
- self.questSlideWnd[self.questSlideWndNewKey-1].OnPressEscapeKey()
- self.Close()
- return True
- def OnUpdate(self):
- self.__UpdateQuestClock()
- if app.ENABLE_SKILL_COLOR_SYSTEM:
- if self.skillColorWnd:
- self.__UpdateSkillColorPosition()
- def RefreshNormalSkillCoolTime(self, skillPage, slotCount):
- startSlotIndex = skillPage.GetStartIndex()
- getSkillType=skill.GetSkillType
- getSkillIndex=player.GetSkillIndex
- getSkillGrade=player.GetSkillGrade
- getSkillLevel=player.GetSkillLevel
- for i in xrange(slotCount+1):
- slotIndex = i + startSlotIndex
- skillIndex = getSkillIndex(slotIndex)
- if 0 == skillIndex:
- continue
- skillGrade = getSkillGrade(slotIndex)
- skillLevel = getSkillLevel(slotIndex)
- skillType = getSkillType(skillIndex)
- slot_index_old = None
- for j in xrange(skill.SKILL_GRADE_COUNT):
- realSlotIndex = self.__GetRealSkillSlot(j, slotIndex)
- if(skillGrade != j):
- slot_index_old = realSlotIndex
- else:
- # if slot_index_old:
- # skillPage.UpdateSlotCoolTime(skillType, realSlotIndex, slot_index_old)
- break
- self.__RestoreSlotCoolTime(skillPage)
- ## Skill Process
- def __RefreshSkillPage(self, name, slotCount):
- global SHOW_LIMIT_SUPPORT_SKILL_LIST
- skillPage = self.skillPageDict[name]
- startSlotIndex = skillPage.GetStartIndex()
- getSkillType = skill.GetSkillType
- getSkillIndex = player.GetSkillIndex
- getSkillGrade = player.GetSkillGrade
- getSkillLevel = player.GetSkillLevel
- getSkillMaxLevel = skill.GetSkillMaxLevel
- getSkillLevelUpPoint = skill.GetSkillLevelUpPoint
- if app.ENABLE_SKILLS_LEVEL_OVER_P:
- refresh = 0
- for i in xrange(slotCount + 1):
- slotIndex = i + startSlotIndex
- skillIndex = getSkillIndex(slotIndex)
- if not app.ENABLE_SKILLS_LEVEL_OVER_P:
- for j in xrange(skill.SKILL_GRADE_COUNT):
- skillPage.ClearSlot(self.__GetRealSkillSlot(j, i))
- else:
- if not refresh and skillIndex >= 137 and skillIndex <= 140:
- for w in xrange(slotCount + 1):
- for q in xrange(skill.SKILL_GRADE_COUNT):
- skillPage.ClearSlot(self.__GetRealSkillSlot(q, w))
- refresh = 1
- if app.ENABLE_SKILLS_LEVEL_OVER_P:
- if slotIndex == 7 or slotIndex == 8:
- for j in xrange(skill.SKILL_GRADE_COUNT):
- skillPage.ClearSlot(self.__GetRealSkillSlot(j, slotIndex))
- if not skillIndex:
- continue
- skillType = getSkillType(skillIndex)
- skillGrade = getSkillGrade(slotIndex)
- skillLevel = getSkillLevel(slotIndex)
- if skillIndex == player.SKILL_INDEX_RIDING:
- if app.ENABLE_SKILLS_LEVEL_OVER_P:
- skGrade = 0
- if skillLevel >= 11 and skillLevel < 20:
- skGrade = 1
- elif skillGrade == 1:
- skGrade = 2
- if skillGrade == 1:
- skillLevel += 19
- elif skillGrade == 2:
- skillLevel += 29
- elif skillGrade == 3:
- skillLevel = 40
- skGr = max(skillLevel - 1, 0)
- if app.ENABLE_SKILLS_LEVEL_OVER_P:
- skGr = skGrade
- skillPage.SetSkillSlotNew(slotIndex, skillIndex, skGr, skillLevel)
- skillPage.SetSlotCount(slotIndex, skillLevel)
- elif skill.SKILL_TYPE_ACTIVE==skillType:
- for j in xrange(self.SKILL_GRADE_SLOT_COUNT):
- realSlotIndex = self.__GetRealSkillSlot(j, slotIndex)
- if (skillGrade >= self.SKILL_GRADE_SLOT_COUNT) and j == (self.SKILL_GRADE_SLOT_COUNT-1):
- skillPage.SetSkillSlotNew(realSlotIndex, skillIndex, skillGrade, skillLevel)
- skillPage.SetCoverButton(realSlotIndex)
- skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
- else:
- skillPage.SetSkillSlotNew(realSlotIndex, skillIndex, j, skillLevel)
- skillPage.SetCoverButton(realSlotIndex)
- if (not self.__CanUseSkillNow()) or (skillGrade != j):
- skillPage.SetSlotCount(realSlotIndex, 0)
- skillPage.DisableCoverButton(realSlotIndex)
- else:
- skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
- else:
- if not SHOW_LIMIT_SUPPORT_SKILL_LIST or skillIndex in SHOW_LIMIT_SUPPORT_SKILL_LIST:
- realSlotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
- skillPage.SetSkillSlot(realSlotIndex, skillIndex, skillLevel)
- skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel)
- if skill.CanUseSkill(skillIndex):
- skillPage.SetCoverButton(realSlotIndex)
- skillPage.RefreshSlot()
- self.__RestoreSlotCoolTime(skillPage)
- if app.ENABLE_SKILL_COLOR_SYSTEM:
- if "ACTIVE" == name:
- self.__CreateSkillColorButton(skillPage)
- def __RestoreSlotCoolTime(self, skillPage):
- skillPage.RestoreSlotCoolTime(skill.SKILL_TYPE_ACTIVE)
- skillPage.RestoreSlotCoolTime(skill.SKILL_TYPE_HORSE)
- def RefreshSkill(self):
- if self.isLoaded==0:
- return
- if self.__IsChangedHorseRidingSkillLevel():
- self.RefreshCharacter()
- return
- self.__RefreshSkillPage("ACTIVE", self.ACTIVE_PAGE_SLOT_COUNT)
- self.__RefreshSkillPage("HORSE", self.HORSE_SLOT_COUNT)
- self.__RefreshSkillPage("SUPPORT", self.SUPPORT_PAGE_SLOT_COUNT)
- self.RefreshSkillPlusButtonList()
- def CanShowPlusButton(self, skillIndex, skillLevel, curStatPoint):
- if 0 == skillIndex:
- return False
- if not skill.CanLevelUpSkill(skillIndex, skillLevel):
- return False
- return True
- def __RefreshSkillPlusButton(self, name):
- if "SUPPORT" == name:
- return
- slotWindow = self.skillPageDict[name]
- slotWindow.HideAllSlotButton()
- labelWindow = self.labelPageStatDict[name]
- slotStatType = self.skillPageStatDict[name]
- if 0 == slotStatType:
- return
- statPoint = player.GetStatus(slotStatType)
- startSlotIndex = slotWindow.GetStartIndex()
- if "HORSE" == name:
- startSlotIndex += self.ACTIVE_PAGE_SLOT_COUNT
- if statPoint > 0:
- labelWindow.Show()
- for i in xrange(self.PAGE_SLOT_COUNT):
- slotIndex = i + startSlotIndex
- skillIndex = player.GetSkillIndex(slotIndex)
- skillGrade = player.GetSkillGrade(slotIndex)
- skillLevel = player.GetSkillLevel(slotIndex)
- if skillIndex == 0:
- continue
- if skillGrade != 0:
- continue
- if name == "HORSE":
- if player.GetStatus(player.LEVEL) >= skill.GetSkillLevelLimit(skillIndex):
- if skillLevel < 20:
- slotWindow.ShowSlotButton(self.__GetETCSkillRealSlotIndex(slotIndex))
- else:
- if "SUPPORT" == name:
- if not SHOW_LIMIT_SUPPORT_SKILL_LIST or skillIndex in SHOW_LIMIT_SUPPORT_SKILL_LIST:
- if self.CanShowPlusButton(skillIndex, skillLevel, statPoint):
- slotWindow.ShowSlotButton(slotIndex)
- else:
- if self.CanShowPlusButton(skillIndex, skillLevel, statPoint):
- slotWindow.ShowSlotButton(slotIndex)
- else:
- labelWindow.Hide()
- if app.ENABLE_SKILL_COLOR_SYSTEM:
- def __CreateSkillColorButton(self, parent):
- self.skillColorButton = []
- xPos, yPos = 0, 0
- for idx in xrange(self.PAGE_SLOT_COUNT):
- skillSlot = idx
- if skillSlot < 6:
- if (skillSlot % 2) == 0:
- xPos = 75
- yPos = 4 + (skillSlot / 2 * 36)
- else:
- xPos = 187
- yPos = 4 + (skillSlot / 2 * 36)
- skillIndex = player.GetSkillIndex(skillSlot + 1)
- skillMaxGrade = 3
- if len(self.skillColorButton) == skillSlot:
- self.skillColorButton.append([])
- self.skillColorButton[skillSlot] = ui.Button()
- self.skillColorButton[skillSlot].SetParent(parent)
- self.skillColorButton[skillSlot].SetUpVisual("d:/ymir work/ui/skillcolor/skill_color_button_default.tga")
- self.skillColorButton[skillSlot].SetOverVisual("d:/ymir work/ui/skillcolor/skill_color_button_over.tga")
- self.skillColorButton[skillSlot].SetDownVisual("d:/ymir work/ui/skillcolor/skill_color_button_down.tga")
- self.skillColorButton[skillSlot].SetPosition(xPos, yPos)
- self.skillColorButton[skillSlot].SetEvent(lambda arg = skillSlot, arg2 = skillIndex: self.__OnPressSkillColorButton(arg, arg2))
- if player.GetSkillGrade(skillSlot + 1) >= skillMaxGrade:
- self.skillColorButton[skillSlot].Show()
- else:
- self.skillColorButton[skillSlot].Hide()
- else:
- self.skillColorButton[skillSlot].SetPosition(xPos, yPos)
- def __UpdateSkillColorPosition(self):
- x, y = self.GetGlobalPosition()
- self.skillColorWnd.SetPosition(x + 250, y)
- def __OnPressSkillColorButton(self, skillSlot, skillIndex):
- self.skillColorWnd = uiSkillColor.SkillColorWindow(skillSlot, skillIndex)
- if self.skillColorWnd and not self.skillColorWnd.IsShow():
- self.skillColorWnd.Show()
- def RefreshSkillPlusButtonList(self):
- if self.isLoaded==0:
- return
- self.RefreshSkillPlusPointLabel()
- if not self.__CanUseSkillNow():
- return
- try:
- self.__RefreshSkillPlusButton("HORSE")
- self.__RefreshSkillPlusButton("ACTIVE")
- self.__RefreshSkillPlusButton("SUPPORT")
- except:
- import exception
- exception.Abort("CharacterWindow.RefreshSkillPlusButtonList.BindObject")
- def RefreshSkillPlusPointLabel(self):
- if self.isLoaded==0:
- return
- activeStatPoint = player.GetStatus(player.SKILL_ACTIVE)
- self.activeSkillPointValue.SetText(str(activeStatPoint))
- horseStatPoint = player.GetStatus(player.SKILL_HORSE)
- self.horseSkillPointValue.SetText(str(horseStatPoint))
- supportStatPoint = max(0, player.GetStatus(player.SKILL_SUPPORT))
- self.supportSkillPointValue.SetText(str(supportStatPoint))
- def OnPressedSlotButton(self, slotNumber):
- srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotNumber)
- skillIndex = player.GetSkillIndex(srcSlotIndex)
- curLevel = player.GetSkillLevel(srcSlotIndex)
- maxLevel = skill.GetSkillMaxLevel(skillIndex)
- net.SendChatPacket("/skillup " + str(skillIndex))
- def ClickSkillSlot(self, slotIndex):
- srcSlotIndex = self.__RealSkillSlotToSourceSlot(slotIndex)
- skillIndex = player.GetSkillIndex(srcSlotIndex)
- if 0 == skillIndex:
- return
- skillType = skill.GetSkillType(skillIndex)
- if not self.__CanUseSkillNow():
- if skill.SKILL_TYPE_ACTIVE == skillType:
- return
- for slotWindow in self.skillPageDict.values():
- if slotWindow.HasSlot(slotIndex):
- if skill.CanUseSkill(skillIndex):
- player.ClickSkillSlot(srcSlotIndex)
- return
- mouseModule.mouseController.DeattachObject()
- def OnUseSkill(self, slotIndex, coolTime):
- skillIndex = player.GetSkillIndex(slotIndex)
- if 0 == skillIndex:
- return
- skillType = skill.GetSkillType(skillIndex)
- if skill.SKILL_TYPE_ACTIVE == skillType:
- skillGrade = player.GetSkillGrade(slotIndex)
- slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
- else:
- slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)
- for slotWindow in self.skillPageDict.values():
- if slotWindow.HasSlot(slotIndex):
- slotWindow.StoreSlotCoolTime(skillType, slotIndex, coolTime)
- self.__RestoreSlotCoolTime(slotWindow)
- return
- def OnActivateSkill(self, slotIndex):
- skillGrade = player.GetSkillGrade(slotIndex)
- slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
- for slotWindow in self.skillPageDict.values():
- if slotWindow.HasSlot(slotIndex):
- slotWindow.ActivateSlot(slotIndex)
- return
- self.RefreshSkill()
- def OnDeactivateSkill(self, slotIndex):
- skillGrade = player.GetSkillGrade(slotIndex)
- slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
- for slotWindow in self.skillPageDict.values():
- if slotWindow.HasSlot(slotIndex):
- slotWindow.DeactivateSlot(slotIndex)
- return
- self.RefreshSkill()
- def __ShowJobToolTip(self):
- self.toolTipJob.ShowToolTip()
- def __HideJobToolTip(self):
- self.toolTipJob.HideToolTip()
- def __SetJobText(self, mainJob, subJob):
- if player.GetStatus(player.LEVEL) < 5:
- subJob=0
- def __ShowAlignmentToolTip(self):
- self.toolTipAlignment.ShowToolTip()
- def __HideAlignmentToolTip(self):
- self.toolTipAlignment.HideToolTip()
- def RefreshCharacter(self):
- if self.isLoaded==0:
- return
- try:
- characterName = player.GetName()
- guildName = player.GetGuildName()
- self.characterNameValue.SetText(characterName)
- self.guildNameValue.SetText(guildName)
- if not guildName:
- self.characterNameSlot.SetPosition(109, 34)
- self.guildNameSlot.Hide()
- else:
- self.characterNameSlot.SetPosition(153, 34)
- self.guildNameSlot.Show()
- except:
- import exception
- exception.Abort("CharacterWindow.RefreshCharacter.BindObject")
- race = net.GetMainActorRace()
- group = net.GetMainActorSkillGroup()
- empire = net.GetMainActorEmpire()
- job = chr.RaceToJob(race)
- self.__SetJobText(job, group)
- try:
- faceImageName = FACE_IMAGE_DICT[race]
- try:
- self.faceImage.LoadImage(faceImageName)
- except:
- self.faceImage.Hide()
- except KeyError:
- self.faceImage.Hide()
- self.__SetSkillGroupName(race, group)
- if 0 == group:
- self.__SelectSkillGroup(0)
- else:
- self.__SetSkillSlotData(race, group, empire)
- def __SetSkillGroupName(self, race, group):
- job = chr.RaceToJob(race)
- if not self.SKILL_GROUP_NAME_DICT.has_key(job):
- return
- nameList = self.SKILL_GROUP_NAME_DICT[job]
- if 0 == group:
- self.skillGroupButton1.SetText(nameList[1])
- self.skillGroupButton2.SetText(nameList[2])
- self.skillGroupButton1.Show()
- self.skillGroupButton2.Show()
- self.activeSkillGroupName.Hide()
- else:
- self.activeSkillGroupName.SetText(nameList.get(group, "Noname"))
- self.activeSkillGroupName.Show()
- self.skillGroupButton1.Hide()
- self.skillGroupButton2.Hide()
- def __SetSkillSlotData(self, race, group, empire=0):
- playerSettingModule.RegisterSkill(race, group, empire)
- self.__SetSkillSlotEvent()
- self.RefreshSkill()
- def __SelectSkillGroup(self, index):
- for btn in self.skillGroupButton:
- btn.SetUp()
- self.skillGroupButton[index].Down()
- self.curSelectedSkillGroup = index
- self.__SetSkillSlotData(net.GetMainActorRace(), index+1, net.GetMainActorEmpire())
- def __CanUseSkillNow(self):
- if 0 == net.GetMainActorSkillGroup():
- return False
- return True
- def __CanUseHorseSkill(self):
- slotIndex = player.GetSkillSlotIndex(player.SKILL_INDEX_RIDING)
- if not slotIndex:
- return False
- grade = player.GetSkillGrade(slotIndex)
- level = player.GetSkillLevel(slotIndex)
- if level < 0:
- level *= -1
- if grade >= 1 and level >= 1:
- return True
- return False
- def __IsChangedHorseRidingSkillLevel(self):
- ret = False
- if -1 == self.canUseHorseSkill:
- self.canUseHorseSkill = self.__CanUseHorseSkill()
- if self.canUseHorseSkill != self.__CanUseHorseSkill():
- ret = True
- self.canUseHorseSkill = self.__CanUseHorseSkill()
- return ret
- if app.ENABLE_SKILLS_LEVEL_OVER_P:
- def __GetRealSkillSlot(self, skillGrade, skillSlot):
- return skillSlot + min(self.SKILL_GRADE_SLOT_COUNT-1, skillGrade)*skill.SKILL_GRADE_STEP_COUNT
- else:
- def __GetRealSkillSlot(self, skillGrade, skillSlot):
- # _min = skill.SKILL_GRADE_COUNT - 1
- # if app.ENABLE_SKILLS_LEVEL_OVER_P:
- # _min -= 1
- # if skillGrade == 2:
- # skillGrade -= 1
- # __calc = skillSlot + min(_min, skillGrade) * skill.SKILL_GRADE_STEP_COUNT
- # return __calc
- return skillSlot + min(skill.SKILL_GRADE_COUNT-1, skillGrade)*skill.SKILL_GRADE_STEP_COUNT
- def __GetETCSkillRealSlotIndex(self, skillSlot):
- if skillSlot > 100:
- return skillSlot
- return skillSlot % self.ACTIVE_PAGE_SLOT_COUNT
- def __RealSkillSlotToSourceSlot(self, realSkillSlot):
- if realSkillSlot > 100:
- return realSkillSlot
- return realSkillSlot % skill.SKILL_GRADE_STEP_COUNT
- def __GetSkillGradeFromSlot(self, skillSlot):
- return int(skillSlot / skill.SKILL_GRADE_STEP_COUNT)
- def SelectSkillGroup(self, index):
- self.__SelectSkillGroup(index)
- def OnQuestScroll(self):
- questCount = quest.GetQuestCount()
- scrollLineCount = max(0, questCount - quest.QUEST_MAX_NUM)
- startIndex = int(scrollLineCount * self.questScrollBar.GetPos())
- if startIndex != self.questShowingStartIndex:
- self.questShowingStartIndex = startIndex
- self.RefreshQuest()
- if app.ENABLE_QUEST_RENEWAL:
- def __OnScrollQuest(self):
- if self.state != "QUEST":
- return
- curPos = self.questScrollBar.GetPos()
- if math.fabs(curPos - self.questLastScrollPosition) >= 0.001:
- self.RerenderQuestPage()
- self.questLastScrollPosition = curPos
- def ResetQuestScroll(self):
- self.questScrollBar.Hide()
- if self.questScrollBar.GetPos() != 0:
- self.questScrollBar.SetPos(0)
- def RerenderQuestPage(self):
- overflowingY = self.displayY - self.MAX_QUEST_PAGE_HEIGHT
- if overflowingY < 0:
- overflowingY = 0
- self.baseCutY = math.ceil(overflowingY * self.questScrollBar.GetPos())
- self.displayY = 0
- self.RearrangeQuestCategories(xrange(quest.QUEST_CATEGORY_MAX_NUM))
- self.RefreshQuestCategory()
- if overflowingY > 0:
- if (len(self.questOpenedCategories)) == 0:
- self.ResetQuestScroll()
- else:
- self.questScrollBar.Show()
- else:
- self.ResetQuestScroll()
- def __LoadQuestCategory(self):
- self.questPage.Show()
- if self.isLoaded == 0:
- return
- for i in xrange(quest.QUEST_CATEGORY_MAX_NUM):
- category = self.questCategoryList[i]
- categoryName = category.GetProperty("name")
- if not categoryName:
- category.SetProperty("name", category.GetText())
- categoryName = category.GetText()
- questCount = self.GetQuestCountInCategory(i)
- self.questCategoryList[i].SetTextAlignLeft(categoryName + " (" + str(questCount) + ")")
- self.questCategoryList[i].SetTextColor(self.GetQuestCategoryColor(i))
- self.questCategoryList[i].SetQuestLabel(quest_lable_expend_img_path_dict[i], self.GetQuestCountInCategory(i))
- self.questCategoryList[i].Show()
- self.RefreshQuestCategory()
- if self.isQuestCategoryLoad == False:
- self.questScrollBar.Hide()
- else:
- self.RerenderQuestPage()
- self.isQuestCategoryLoad = True
- def GetQuestCategoryColor(self, category):
- return self.questColorList["default_title"]
- def GetQuestProperties(self, questName):
- findString = {
- "*" : "blue",
- "&" : "green",
- "~" : "golden"
- }
- if questName[0] in findString:
- return (questName[1:], findString[questName[0]])
- return (questName, None)
- def IsQuestCategoryOpen(self, category):
- return (category in self.questOpenedCategories)
- def ToggleCategory(self, category):
- if self.IsQuestCategoryOpen(category):
- self.CloseQuestCategory(category)
- else:
- self.OpenQuestCategory(category)
- def RearrangeQuestCategories(self, categoryRange):
- i = 0
- for i in categoryRange:
- if (self.displayY - self.baseCutY) >= 0 and (self.displayY - self.baseCutY) < self.MAX_QUEST_PAGE_HEIGHT - 20:
- self.questCategoryList[i].SetPosition(13, (self.displayY - self.baseCutY) + 10)
- self.questCategoryList[i].Show()
- else:
- self.questCategoryList[i].Hide()
- self.displayY += 20
- self.questCategoryRenderPos[i] = self.displayY
- def CloseQuestCategory(self, category):
- self.questCategoryList[category].CloseCategory(self.GetQuestCountInCategory(category))
- if category in self.questOpenedCategories:
- self.questOpenedCategories.remove(category)
- for currentSlot in self.questSlotList:
- if currentSlot.GetProperty("category") == category:
- currentSlot.Hide()
- self.displayY -= currentSlot.GetHeight()
- self.RerenderQuestPage()
- def OpenQuestCategory(self, category):
- if self.GetQuestCountInCategory(category) == 0:
- return
- while len(self.questOpenedCategories) >= self.questMaxOpenedCategories:
- openedCategories = self.questOpenedCategories.pop()
- self.CloseQuestCategory(openedCategories)
- self.questCategoryList[category].OpenCategory(self.GetQuestCountInCategory(category))
- self.questOpenedCategories.append(category)
- self.RefreshQuestCategory(category)
- self.RerenderQuestPage()
- def RefreshQuestCategory(self, category = -1):
- if self.isLoaded == 0 or self.state != "QUEST":
- return
- categories = []
- if category == -1:
- categories = self.questOpenedCategories
- elif not category in self.questOpenedCategories:
- self.OpenQuestCategory(category)
- return
- else:
- categories.append(category)
- for currentCategory in categories:
- self.displayY = self.questCategoryRenderPos[currentCategory]
- self.LoadCategory(currentCategory)
- self.RearrangeQuestCategories(xrange(currentCategory + 1, quest.QUEST_CATEGORY_MAX_NUM))
- def RefreshQuestCategoriesCount(self):
- for category in xrange(quest.QUEST_CATEGORY_MAX_NUM):
- categoryName = self.questCategoryList[category].GetProperty("name")
- questCount = self.GetQuestCountInCategory(category)
- self.questCategoryList[category].SetTextAlignLeft(categoryName + " (" + str(questCount) + ")")
- #self.questCategoryList[category].SetQuestLabel(quest_lable_expend_img_path_dict[category], questCount)
- # if questCount <= 0:
- # self.CloseQuestCategory(category)
- def RefreshQuest(self):
- if self.isLoaded == 0 or self.state != "QUEST":
- return
- for category in self.questOpenedCategories:
- self.RefreshQuestCategory(category)
- self.RefreshQuestCategoriesCount()
- def CreateQuestSlot(self, name):
- for questSlot in self.questSlotList:
- if questSlot.GetWindowName() == name:
- return questSlot
- pyScrLoader = ui.PythonScriptLoader()
- slot = ui.ListBar()
- pyScrLoader.LoadElementListBar(slot, quest_slot_listbar, self.questPage)
- slot.SetParent(self.quest_page_board_window)
- slot.SetWindowName(name)
- slot.Hide()
- self.questSlotList.append(slot)
- return slot
- def SetQuest(self, slot, questID, questName, questCounterName, questCounterValue):
- (name, color) = self.GetQuestProperties(questName)
- slot.SetTextAlignLeft(name, 20)
- if color:
- slot.SetTextColor(self.questColorList[color])
- slot.SetEvent(ui.__mem_func__(self.__SelectQuest), questID)
- slot.SetWindowHorizontalAlignLeft()
- slot.Show()
- def LoadCategory(self, category):
- self.questIndexMap = {}
- self.questCounterList = []
- self.questClockList = []
- self.questSeparatorList = []
- for questSlot in self.questSlotList:
- questSlot.Hide()
- questCount = 0
- for questIdx in self.GetQuestsInCategory(category):
- questCount += 1
- (questID, questIndex, questName, questCategory, _, questCounterName, questCounterValue) = questIdx
- (lastName, lastTime) = quest.GetQuestLastTime(questID)
- slot = self.CreateQuestSlot("QuestSlotList_" + str(questCategory) + "_" + str(questID))
- slot.SetPosition(0, (self.displayY - self.baseCutY))
- slot.SetParent(self.quest_page_board_window)
- baseDisplayY = self.displayY
- ## -- Quest Counter
- hasCounter = False
- if questCounterName != "":
- self.displayY += 15
- counter = ui.TextLine()
- counter.SetParent(slot)
- counter.SetPosition(20, 20 - 2.5)
- counter.SetText(questCounterName + ": " + str(questCounterValue))
- counter.Show()
- self.questCounterList.append(counter)
- hasCounter = True
- ## -- Quest Counter
- ## -- Quest Clock
- self.displayY += 15
- clockText = localeInfo.QUEST_UNLIMITED_TIME
- if len(lastName) > 0:
- if lastTime <= 0:
- clockText = localeInfo.QUEST_TIMEOVER
- else:
- questLastMinute = lastTime / 60
- questLastSecond = lastTime % 60
- clockText = lastName + " : "
- if questLastMinute > 0:
- clockText += str(questLastMinute) + localeInfo.QUEST_MIN
- if questLastSecond > 0:
- clockText += " "
- if questLastSecond > 0:
- clockText += str(questLastSecond) + localeInfo.QUEST_SEC
- clock = ui.TextLine()
- clock.SetParent(slot)
- clock.SetPosition(20, 20 + (int(hasCounter) * 14) - 2.5)
- clock.SetText(clockText)
- clock.SetProperty("idx", questID)
- self.questClockList.append(clock)
- clock.Show()
- ## -- Quest Clock
- ## -- Quest Separator
- self.displayY += 5
- if questCount < self.GetQuestCountInCategory(category):
- seperator = ui.ImageBox()
- seperator.SetParent(slot)
- seperator.SetPosition(4, 20 + (int(hasCounter) * 14 - 2.5) + 15)
- seperator.LoadImage("d:/ymir work/ui/quest_re/quest_list_line_01.tga")
- seperator.Show()
- self.questSeparatorList.append(seperator)
- ## -- Quest Separator
- slot.SetProperty("category", questCategory)
- if questIndex in self.questClicked:
- slot.OnClickEvent()
- if (baseDisplayY - self.baseCutY) + 2 >= 0 and (baseDisplayY - self.baseCutY) + 2 < self.MAX_QUEST_PAGE_HEIGHT - 30:
- self.questIndexMap[questID] = questIndex
- self.SetQuest(slot, questID, questName, questCounterName, questCounterValue)
- self.displayY += 15
- newList = []
- for questSlot in self.questSlotList:
- if questSlot.IsShow():
- newList.append(questSlot)
- self.questSlotList = newList
- def __OnClickQuestCategoryButton(self, category):
- self.ToggleCategory(category)
- def GetQuestsInCategory(self, category, retCount = False):
- questList = []
- count = 0
- for i in xrange(quest.GetQuestCount()):
- (questIndex, questName, questCategory, questIcon, questCounterName, questCounterValue) = quest.GetQuestData(i)
- if questCategory == category:
- count += 1
- questList.append((i, questIndex, questName, questCategory, questIcon, questCounterName, questCounterValue))
- if retCount:
- return count
- return questList
- def GetQuestCountInCategory(self, category):
- return self.GetQuestsInCategory(category, True)
- def OnMoveWindow(self, x, y):
- if app.ENABLE_PARTY_RENEW_SELECTION:
- if self.interface:
- if self.interface.wndPartyBonusWindow:
- x, y = self.GetGlobalPosition()
- self.interface.wndPartyBonusWindow.AdjustPosition(x, y + 410)
- if self.wndCharacterDetails:
- x, y = self.GetGlobalPosition()
- self.wndCharacterDetails.AdjustPosition(x+250,y)
Advertisement
Add Comment
Please, Sign In to add comment