def ReloadClientInterface(type): def SendParseException(object, error, type): dbg.TraceError('Failed to load module: #{0}#'.format(object)) if (error): dbg.TraceError('Error: #{0}#'.format(error)) import exception exception.Abort(type) sysModuleDict = { app.CLIENT_FROM_LOGIN_MODULE: ['introLogin', 'localeInfo', 'uiScriptLocale'], app.CLIENT_FROM_GAME_MODULE: ['game', 'localeInfo', 'introLoading', 'uiScriptLocale', 'uiGameButton', 'uiMapNameShower', 'uiAffectShower', 'uiPlayerGauge', 'uiHelp'], app.CLIENT_FROM_INTERFACE_MODULE: ['localeInfo', 'uiScriptLocale', 'interfaceModule', 'uiToolTip'] } if (not sysModuleDict.has_key(type)): dbg.TraceError('Usage call syntax: ReloadClientInterface({0})'.format(sysModuleDict.keys())) return for (key, object) in enumerate(sysModuleDict[type]): if (sys.modules.has_key(object)): try: if (sys.modules[object] <> None): del sys.modules[object] sys.modules.pop(object) execfile(object, {}) __import__(object) dbg.TraceError('Succes reloading module: #{0}#'.format(object)) except IOError, err: SendParseException(object, err, 'IOError') except RuntimeError, err: SendParseException(object, err, 'RuntimeError') except:
def LoadDialog(self, skin): try: PythonScriptLoader = ui.PythonScriptLoader() PythonScriptLoader.LoadScriptFile(self, "uiscript/questdialog.py") except RuntimeError: dbg.TraceError("QuestDialog.LoadDialog") try: self.board = self.GetChild('board') except RuntimeError: dbg.TraceError("QuestDialog.BindObject") self.SetCenterPosition() if self.SKIN_CINEMA == skin: self.board.Hide()
class RestartDialog(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) def __del__(self): ui.ScriptWindow.__del__(self) def LoadDialog(self): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/restartdialog.py") except Exception, msg: import sys (type, msg, tb)=sys.exc_info() dbg.TraceError("RestartDialog.LoadDialog - %s:%s" % (type, msg)) app.Abort() return 0 try: self.restartHereButton=self.GetChild("restart_here_button") self.restartTownButton=self.GetChild("restart_town_button") except: import sys (type, msg, tb)=sys.exc_info() dbg.TraceError("RestartDialog.LoadDialog - %s:%s" % (type, msg)) app.Abort() return 0 self.restartHereButton.SetEvent(ui.__mem_func__(self.RestartHere)) self.restartTownButton.SetEvent(ui.__mem_func__(self.RestartTown)) return 1
def __SelectRefineEmptySlot(self, selectedSlotPos): try: if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1: return if selectedSlotPos >= self.refineSlotLockStartIndex: return if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemCount = mouseModule.mouseController.GetAttachedItemCount() attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex() mouseModule.mouseController.DeattachObject() if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP) return attachedInvenType = player.SlotTypeToInvenType(attachedSlotType) if player.INVENTORY == attachedInvenType and player.IsEquipmentSlot(attachedSlotPos): return if player.INVENTORY != attachedInvenType and player.DRAGON_SOUL_INVENTORY != attachedInvenType: return if TRUE == self.__SetItem((attachedInvenType, attachedSlotPos), selectedSlotPos, attachedItemCount): self.Refresh() except Exception, e: import dbg dbg.TraceError("Exception : __SelectRefineEmptySlot, %s" % e)
def __OnClickStatusMinusButton(self, statusKey): try: statusMinusCommand = self.statusMinusCommandDict[statusKey] net.SendChatPacket(statusMinusCommand) except KeyError, msg: dbg.TraceError( "CharacterWindow.__OnClickStatusMinusButton KeyError: %s", msg)
def __Refresh(self): self.lovePoint = max(0, self.lovePoint) self.lovePoint = min(100, self.lovePoint) if 0 == self.lovePoint: loveGrade = 0 else: loveGrade = self.lovePoint / 25 + 1 fileName = self.FILE_DICT.get(loveGrade, self.FILE_PATH + "00.dds") try: self.LoadImage(fileName) except: import dbg dbg.TraceError( "LovePointImage.SetLoverInfo(lovePoint=%d) - LoadError %s" % (self.lovePoint, fileName)) self.SetScale(0.7, 0.7) self.toolTip.ClearToolTip() self.toolTip.SetTitle(self.loverName) self.toolTip.AppendTextLine(localeInfo.AFF_LOVE_POINT % (self.lovePoint)) self.toolTip.ResizeToolTip()
def SelectEmptySlot(self, slotIndex): try: if (constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1): return if (mouseModule.mouseController.isAttached()): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() mouseModule.mouseController.DeattachObject() if (player.SLOT_TYPE_INVENTORY != attachedSlotType and player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedSlotType): return attachedInvenType = player.SlotTypeToInvenType(attachedSlotType) itemVnum = player.GetItemIndex(attachedInvenType, attachedSlotPos) item.SelectItem(itemVnum) if (item.IsAntiFlag(item.ANTIFLAG_GIVE) or item.IsAntiFlag(item.ANTIFLAG_MYSHOP)): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OFFLINE_SHOP_CANNOT_SELL_ITEM) return priceInputBoard = uiCommon.MoneyInputDialog() priceInputBoard.SetTitle(item.GetItemName() + "'s price") priceInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputPrice)) priceInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrice)) priceInputBoard.Open() self.priceInputBoard = priceInputBoard self.priceInputBoard.bDisplayPos = slotIndex self.priceInputBoard.bPos = attachedSlotPos except Exception, e: import dbg dbg.TraceError("Exception : SelectEmptySlot, %s" %(e))
def ChangeCursor(self, cursorNum): try: self.curCursorNum = cursorNum try: self.curCursorImage = self.cursorDict[cursorNum] except: self.curCursorImage = CursorImage( "D:/Ymir Work/UI/Cursor/cursor.sub") try: (self.cursorPosX, self.cursorPosY) = self.cursorPosDict[cursorNum] except: (self.cursorPosX, self.cursorPosY) = (0, 0) if FALSE == self.curCursorImage.IsImage(): self.curCursorNum = app.NORMAL self.curCursorImage = self.cursorDict[app.NORMAL] except KeyError: dbg.TraceError( "mouseModule.MouseController.SetCursor - 잘못된 커서 번호 [%d]" % cursorNum) self.curCursorName = app.NORMAL self.curCursorImage = self.cursorDict[app.NORMAL]
def __CreateDialog(self): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/shopinputdialog.py") getObject = self.GetChild self.board = getObject("Board") self.acceptButton = getObject("AcceptButton") self.cancelButton = getObject("CancelButton") self.inputSlot = getObject("InputSlot") self.inputValue = getObject("InputValue") self.colorDesc = getObject("ColorDesc") self.colorBG = getObject("ColorBG") for i in range(1, 7): self.tabList["colorTab%d" % i] = getObject("ColorTab%d" % i) self.tabList["colorTab%d" % i].SetEvent(ui.__mem_func__(self.CheckButtonStatus), i, "color") self.tabList["colorTab%d" % i].Hide() self.tabList["sizeTab%d" % i] = getObject("SizeTab%d" % i) self.tabList["sizeTab%d" % i].SetEvent(ui.__mem_func__(self.CheckButtonStatus), i, "size") self.tabList["typeTab%d" % i] = getObject("TypeTab%d" % i) self.tabList["typeTab%d" % i].SetEvent(ui.__mem_func__(self.CheckButtonStatus), i, "type") self.colorDesc.Hide() self.colorBG.Hide() except: import sys (type, msg, tb)=sys.exc_info() dbg.TraceError("ShopInputDialog.__CreateDialog - %s:%s" % (type, msg)) app.Abort() return 0
def OnUpdate(self): if len(self.loadStepList) > 0: (progress, runFunc) = self.loadStepList[0] try: runFunc() except: self.errMsg.Show() self.loadStepList = [] ## 이곳에서 syserr.txt 를 보낸다. import dbg dbg.TraceError(" !!! Failed to load game data : STEP [%d]" % (progress)) #import shutil #import os #shutil.copyfile("syserr.txt", "errorlog.txt") #os.system("errorlog.exe") app.Exit() return self.loadStepList.pop(0) self.__SetProgress(progress)
def OnTopImage(self, imgfile): imgfile = self.__GetQuestImageFileName(imgfile) bd = self.board bx, by = bd.GetLocalPosition() if not self.imgTop: self.imgTop = ui.ExpandedImageBox("TOP_MOST") self.imgTop.SetParent(self) bd.SetPosition(bx,190) self.imgTop.SetPosition(bx,10) try: self.imgTop.LoadImage(imgfile) h = self.imgTop.GetHeight() if h>170: # need adjust board size bd.SetPosition(bx,20+h) bd.SetSize(350,420-h) self.imgTop.SetSize(350,h) else: self.imgTop.SetSize(350,170) bd.SetPosition(bx,190) bd.SetSize(350,250) self.imgTop.SetOrigin(self.imgTop.GetWidth()/2,self.imgTop.GetHeight()/2) self.imgTop.Show() except RuntimeError: dbg.TraceError("QuestDialog.OnTopImage(%s)" % imgfile) self.imgTop.Hide()
def Open(self): #print "OPEN EMPIRE WINDOW ----------------------------------------------------------------------------" self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight()) self.SetWindowName("SelectEmpireWindow") self.Show() if not self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "New_SelectEmpireWindow.py"): dbg.TraceError("SelectEmpireWindow.Open - __LoadScript Error") return self.OnSelectEmpire(self.empireID) self.__CreateButtons() self.__CreateDescriptionBox() app.ShowCursor() if musicInfo.selectMusic != "": snd.SetMusicVolume(systemSetting.GetMusicVolume()) snd.FadeInMusic("BGM/" + musicInfo.selectMusic) self.toolTip = uiToolTip.ToolTip() self.toolTip.ClearToolTip() self.ShowToolTip = False
def __SelectRefineItemSlot(self, selectedSlotPos): if constInfo.GET_ITEM_DROP_QUESTION_DIALOG_STATUS() == 1: return try: if not selectedSlotPos in self.refineItemInfo: # 새로운 아이템을 강화창에 올리는 작업. if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedItemCount = mouseModule.mouseController.GetAttachedItemCount() attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex() mouseModule.mouseController.DeattachObject() if uiPrivateShopBuilder.IsBuildingPrivateShop(): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_ITEM_FAILURE_PRIVATE_SHOP) return attachedInvenType = player.SlotTypeToInvenType(attachedSlotType) if player.INVENTORY == attachedInvenType and player.IsEquipmentSlot(attachedSlotPos): return if player.INVENTORY != attachedInvenType and player.DRAGON_SOUL_INVENTORY != attachedInvenType: return self.AutoSetItem((attachedInvenType, attachedSlotPos), 1) return elif mouseModule.mouseController.isAttached(): return attachedInvenType, attachedSlotPos, attachedItemCount = self.refineItemInfo[selectedSlotPos] selectedItemVnum = player.GetItemIndex(attachedInvenType, attachedSlotPos) # 강화창에서 삭제 및 원래 인벤의 아이템 카운트 회복 invenType, invenPos, itemCount = self.refineItemInfo[selectedSlotPos] remainCount = player.GetItemCount(invenType, invenPos) player.SetItemCount(invenType, invenPos, remainCount + itemCount) del self.refineItemInfo[selectedSlotPos] # 강화창이 비었다면, 초기화 if not self.refineItemInfo: self.__Initialize() else: item.SelectItem(selectedItemVnum) # 없앤 아이템이 강화석이었다면 강화 레피시 초기화 if (item.ITEM_TYPE_MATERIAL == item.GetItemType() \ and (item.MATERIAL_DS_REFINE_NORMAL <= item.GetItemSubType() and item.GetItemSubType() <= item.MATERIAL_DS_REFINE_HOLLY)): self.currentRecipe = {} self.wndMoney.SetText(localeInfo.NumberToMoneyString(0)) # 용혼석이었다면, # strength강화가 아닌 경우, 강화창에 다른 용혼석이 남아있으므로, 레시피를 초기화하면 안됨. # strength강화의 경우, 강화 레시피는 강화석에 종속된 것이므로 다른 처리할 필요가 없음. else: pass except Exception, e: import dbg dbg.TraceError("Exception : __SelectRefineItemSlot, %s" % e)
def ShowImage(): if self.GetIsSearchedVnum(): item.SelectItem(self.main["rewards"]["vnum"]) try: self.main["elements"]["slot_image"].LoadImage(item.GetIconImageFileName()) self.main["elements"]["slot_image"].Show() except: dbg.TraceError("OxEventManager.LoadImage - Failed to find item data")
def BINARY_ServerCommand_Run(self, line): try: print " BINARY_ServerCommand_Reserve", line return self.serverCommander.Run(line) except RuntimeError, msg: import dbg dbg.TraceError(msg) return 0
def LoadImage(self, imageName): try: self.handle = grpImage.Generate(imageName) except: import sys dbg.TraceError("%s %s" % (sys.exc_info()[0], sys.exc_info()[1])) self.handle = 0
def AppendItem(self, newItem): if newItem.GetHeight() % self.stepSize != 0: import dbg dbg.TraceError("Invalid AppendItem height %d stepSize %d" % (newItem.GetHeight(), self.stepSize)) return self.maxSteps += newItem.GetHeight() / self.stepSize newItem.SetParent(self) self.itemList.append(newItem)
def LoadDialog(self): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "interfececolor.py") except Exception, msg: (type, msg, tb) = sys.exc_info() dbg.TraceError("kolorDialog.LoadDialog - %s:%s" % (type, msg)) app.Abort() return 0
def LoadDialog(self): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "uiscript/restartdialog.py") except Exception, msg: (type, msg, tb) = sys.exc_info() dbg.TraceError("RestartDialog.LoadDialog - %s:%s" % (type, msg)) app.Abort() return 0
def __LoadWindow(self, filename): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, filename) except Exception, msg: import dbg dbg.TraceError("GameButtonWindow.LoadScript - %s" % (msg)) app.Abort() return FALSE
def SetParent(self, parent): if not parent: dbg.TraceError( "Window.SetParent :: Tried to set 'None' as parent for window '%s'." % self.GetName()) return self.__parent = parent wndMgr.SetParent(self.GetWindowHandle(), self.__parent.GetWindowHandle())
class kolorDialog(ui.ScriptWindow): def __init__(self): ui.ScriptWindow.__init__(self) self.LoadDialog() def __del__(self): ui.ScriptWindow.__del__(self) def LoadDialog(self): try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self, "interfececolor.py") except Exception, msg: (type, msg, tb) = sys.exc_info() dbg.TraceError("kolorDialog.LoadDialog - %s:%s" % (type, msg)) app.Abort() return 0 try: self.zapiszn = self.GetChild("ok") self.domyslne = self.GetChild("no") except: import sys (type, msg, tb) = sys.exc_info() dbg.TraceError("RestartDialog.LoadDialog - %s:%s" % (type, msg)) app.Abort() return 0 self.interfacelist2 = ( self.GetChild("board").Corners[0], self.GetChild("board").Corners[1], self.GetChild("board").Corners[2], self.GetChild("board").Corners[3], self.GetChild("board").Lines[0], self.GetChild("board").Lines[1], self.GetChild("board").Lines[2], self.GetChild("board").Lines[3], self.GetChild("board").Base, self.GetChild("board").titleBar.imgLeft, self.GetChild("board").titleBar.imgCenter, self.GetChild("board").titleBar.imgRight, ) self.GetChild("board").SetCloseEvent(self.Close) self.zapiszn.SetEvent(ui.__mem_func__(self.ok)) self.domyslne.SetEvent(ui.__mem_func__(self.Restart)) z = open('lib/color').readlines() self.GetChild("r").SetSliderPos(float(z[0])) self.GetChild("g").SetSliderPos(float(z[1])) self.GetChild("b").SetSliderPos(float(z[2])) self.GetChild("a").SetSliderPos((float(z[3]) - 0.5) * 2) self.OnUpdate() return 1
def ShowWhisperDialog(self, btn): try: self.__MakeWhisperDialog(btn.name) dlgWhisper = self.whisperDialogDict[btn.name] dlgWhisper.OpenWithTarget(btn.name) dlgWhisper.Show() self.__CheckGameMaster(btn.name) except: import dbg dbg.TraceError("interface.ShowWhisperDialog - Failed to find key") ## 버튼 초기화 self.__DestroyWhisperButton(btn)
def Abort(excTitle): import dbg excText = GetExceptionString(excTitle) dbg.TraceError(excText) import app app.Abort() import sys sys.exit() return 0
def Open(self): print "OPEN EMPIRE WINDOW ----------------------------------------------------------------------------" self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight()) self.SetWindowName("SelectEmpireWindow") self.Show() if not self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "SelectEmpireWindow.py"): dbg.TraceError("SelectEmpireWindow.Open - __LoadScript Error") return self.OnSelectEmpire(self.empireID) self.__CreateButtons() self.__CreateDescriptionBox() app.ShowCursor()
def OnTitleImage(self, filename): img = ui.ImageBox("TOP_MOST") try: img.SetWindowHorizontalAlignCenter() img.LoadImage(filename) img.SetPosition(0, wndMgr.GetScreenHeight() - (75/2) - (32/2)) img.SetAlpha(0.0) img.Show() except RuntimeError: dbg.TraceError("QuestDialog.OnTitleImage(%s)" % filename) img.Hide() self.imgTitle = img self.titleState = self.TITLE_STATE_APPEAR self.titleShowTime = app.GetTime()
def ChangeCursor(self, cursorNum): try: self.curCursorNum = cursorNum self.curCursorImage = self.cursorDict[cursorNum] (self.cursorPosX, self.cursorPosY) = self.cursorPosDict[cursorNum] if False == self.curCursorImage.IsImage(): self.curCursorNum = app.NORMAL self.curCursorImage = self.cursorDict[app.NORMAL] except KeyError: dbg.TraceError( "mouseModule.MouseController.SetCursor - 잘못된 커서 번호 [%d]" % cursorNum) self.curCursorName = app.NORMAL self.curCursorImage = self.cursorDict[app.NORMAL]
def Open(self): if not self.__LoadBoardDialog(uiScriptLocale.LOCALE_UISCRIPT_PATH + "selectcharacterwindow.py"): import dbg dbg.TraceError("SelectCharacterWindow.Open - __LoadScript Error") return if not self.__LoadQuestionDialog("uiscript/questiondialog.py"): return playerSettingModule.LoadGameData("INIT") self.InitCharacterBoard() self.btnStart.Enable() self.btnCreate.Enable() self.btnDelete.Enable() self.btnExit.Enable() self.btnLeft.Enable() self.btnRight.Enable() self.dlgBoard.Show() self.SetWindowName("SelectCharacterWindow") self.Show() if self.slot >= 0: self.SelectSlot(self.slot) if musicInfo.selectMusic != "": snd.SetMusicVolume(systemSetting.GetMusicVolume()) snd.FadeInMusic("BGM/" + musicInfo.selectMusic) app.SetCenterPosition(0.0, 0.0, 0.0) app.SetCamera(1550.0, 15.0, 180.0, 95.0) self.isLoad = 1 self.Refresh() if self.stream.isAutoSelect: chrSlot = self.stream.GetCharacterSlot() self.SelectSlot(chrSlot) self.StartGame() self.HideAllFlag() self.SetEmpire(net.GetEmpireID()) app.ShowCursor()
def CloseWhisperDialog(self, name): if 0 == name: if self.dlgWhisperWithoutTarget: self.dlgWhisperWithoutTarget.Destroy() self.dlgWhisperWithoutTarget = None return try: dlgWhisper = self.whisperDialogDict[name] dlgWhisper.Destroy() del self.whisperDialogDict[name] except: import dbg dbg.TraceError("interface.CloseWhisperDialog - Failed to find key")
def Open(self, metinItemPos, targetItemPos): self.metinItemPos = metinItemPos self.targetItemPos = targetItemPos metinIndex = player.GetItemIndex(metinItemPos) itemIndex = player.GetItemIndex(targetItemPos) self.oldToolTip.ClearToolTip() self.newToolTip.ClearToolTip() item.SelectItem(metinIndex) ## Metin Image try: self.metinImage.LoadImage(item.GetIconImageFileName()) except: dbg.TraceError( "AttachMetinDialog.Open.LoadImage - Failed to find item data") ## Old Item ToolTip metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(player.GetItemMetinSocket(targetItemPos, i)) self.oldToolTip.AddItemData(itemIndex, metinSlot) ## New Item ToolTip item.SelectItem(metinIndex) metinSubType = item.GetItemSubType() metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(player.GetItemMetinSocket(targetItemPos, i)) for i in xrange(player.METIN_SOCKET_MAX_NUM): slotData = metinSlot[i] if self.CanAttachMetin(slotData, metinSubType): metinSlot[i] = metinIndex break self.newToolTip.AddItemData(itemIndex, metinSlot) self.UpdateDialog() self.SetTop() self.Show() if app.ENABLE_SLOT_MARKING_SYSTEM: self.SetCantMouseEventSlot(0, self.metinItemPos) self.SetCantMouseEventSlot(1, self.targetItemPos)