2022-11-20 23:11:54 +02:00
|
|
|
import ui
|
|
|
|
import mouseModule
|
|
|
|
import player
|
|
|
|
import net
|
|
|
|
import snd
|
|
|
|
import safebox
|
|
|
|
import chat
|
|
|
|
import app
|
|
|
|
import localeInfo
|
|
|
|
import uiScriptLocale
|
|
|
|
|
|
|
|
class PasswordDialog(ui.ScriptWindow):
|
|
|
|
def __init__(self):
|
|
|
|
ui.ScriptWindow.__init__(self)
|
|
|
|
self.__LoadDialog()
|
|
|
|
|
|
|
|
self.sendMessage = "/safebox_password "
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
ui.ScriptWindow.__del__(self)
|
|
|
|
|
|
|
|
def __LoadDialog(self):
|
|
|
|
try:
|
|
|
|
pyScrLoader = ui.PythonScriptLoader()
|
|
|
|
# if localeInfo.IsEUROPE()and app.GetLocalePath() != "locale/ca"and app.GetLocalePath() != "locale/sg" :
|
|
|
|
pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "passworddialog.py")
|
|
|
|
# else:
|
|
|
|
# pyScrLoader.LoadScriptFile(self, "uiscript/passworddialog.py")
|
|
|
|
except:
|
|
|
|
import exception
|
|
|
|
exception.Abort("PasswordDialog.__LoadDialog.LoadObject")
|
|
|
|
|
|
|
|
try:
|
|
|
|
self.passwordValue = self.GetChild("password_value")
|
|
|
|
self.acceptButton = self.GetChild("accept_button")
|
|
|
|
self.cancelButton = self.GetChild("cancel_button")
|
|
|
|
self.titleName = self.GetChild("TitleName")
|
|
|
|
self.GetChild("titlebar").SetCloseEvent(ui.__mem_func__(self.CloseDialog))
|
|
|
|
except:
|
|
|
|
import exception
|
|
|
|
exception.Abort("PasswordDialog.__LoadDialog.BindObject")
|
|
|
|
|
|
|
|
self.passwordValue.OnIMEReturn = self.OnAccept
|
|
|
|
self.passwordValue.OnPressEscapeKey = self.OnCancel
|
|
|
|
self.acceptButton.SetEvent(ui.__mem_func__(self.OnAccept))
|
|
|
|
self.cancelButton.SetEvent(ui.__mem_func__(self.OnCancel))
|
|
|
|
|
|
|
|
def Destroy(self):
|
|
|
|
self.ClearDictionary()
|
|
|
|
self.passwordValue = None
|
|
|
|
self.acceptButton = None
|
|
|
|
self.cancelButton = None
|
|
|
|
self.titleName = None
|
|
|
|
|
|
|
|
def SetTitle(self, title):
|
|
|
|
self.titleName.SetText(title)
|
|
|
|
|
|
|
|
def SetSendMessage(self, msg):
|
|
|
|
self.sendMessage = msg
|
|
|
|
|
|
|
|
def ShowDialog(self):
|
|
|
|
self.passwordValue.SetText("")
|
|
|
|
self.passwordValue.SetFocus()
|
|
|
|
self.SetCenterPosition()
|
|
|
|
self.Show()
|
|
|
|
|
|
|
|
def CloseDialog(self):
|
|
|
|
self.passwordValue.KillFocus()
|
|
|
|
self.Hide()
|
|
|
|
|
|
|
|
def OnAccept(self):
|
|
|
|
net.SendChatPacket(self.sendMessage + self.passwordValue.GetText())
|
|
|
|
self.CloseDialog()
|
2023-07-21 21:55:58 +03:00
|
|
|
return True
|
2022-11-20 23:11:54 +02:00
|
|
|
|
|
|
|
def OnCancel(self):
|
|
|
|
self.CloseDialog()
|
2023-07-21 21:55:58 +03:00
|
|
|
return True
|
2022-11-20 23:11:54 +02:00
|
|
|
|
|
|
|
class ChangePasswordDialog(ui.ScriptWindow):
|
|
|
|
def __init__(self):
|
|
|
|
ui.ScriptWindow.__init__(self)
|
|
|
|
self.__LoadDialog()
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
ui.ScriptWindow.__del__(self)
|
|
|
|
|
|
|
|
def __LoadDialog(self):
|
|
|
|
self.dlgMessage = ui.ScriptWindow()
|
|
|
|
try:
|
|
|
|
pyScrLoader = ui.PythonScriptLoader()
|
|
|
|
pyScrLoader.LoadScriptFile(self.dlgMessage, "uiscript/popupdialog.py")
|
|
|
|
self.dlgMessage.GetChild("message").SetText(localeInfo.SAFEBOX_WRONG_PASSWORD)
|
|
|
|
self.dlgMessage.GetChild("accept").SetEvent(ui.__mem_func__(self.OnCloseMessageDialog))
|
|
|
|
except:
|
|
|
|
import exception
|
|
|
|
exception.Abort("SafeboxWindow.__LoadDialog.LoadObject")
|
|
|
|
|
|
|
|
def LoadDialog(self):
|
|
|
|
try:
|
|
|
|
pyScrLoader = ui.PythonScriptLoader()
|
|
|
|
pyScrLoader.LoadScriptFile(self, "uiscript/changepassworddialog.py")
|
|
|
|
|
|
|
|
except:
|
|
|
|
import exception
|
|
|
|
exception.Abort("ChangePasswordDialog.LoadDialog.LoadObject")
|
|
|
|
|
|
|
|
try:
|
|
|
|
self.GetChild("accept_button").SetEvent(ui.__mem_func__(self.OnAccept))
|
|
|
|
self.GetChild("cancel_button").SetEvent(ui.__mem_func__(self.OnCancel))
|
|
|
|
self.GetChild("titlebar").SetCloseEvent(ui.__mem_func__(self.OnCancel))
|
|
|
|
oldPassword = self.GetChild("old_password_value")
|
|
|
|
newPassword = self.GetChild("new_password_value")
|
|
|
|
newPasswordCheck = self.GetChild("new_password_check_value")
|
|
|
|
except:
|
|
|
|
import exception
|
|
|
|
exception.Abort("ChangePasswordDialog.LoadDialog.BindObject")
|
|
|
|
|
|
|
|
oldPassword.SetTabEvent(lambda arg=1: self.OnNextFocus(arg))
|
|
|
|
newPassword.SetTabEvent(lambda arg=2: self.OnNextFocus(arg))
|
|
|
|
newPasswordCheck.SetTabEvent(lambda arg=3: self.OnNextFocus(arg))
|
|
|
|
oldPassword.SetReturnEvent(lambda arg=1: self.OnNextFocus(arg))
|
|
|
|
newPassword.SetReturnEvent(lambda arg=2: self.OnNextFocus(arg))
|
|
|
|
newPasswordCheck.SetReturnEvent(ui.__mem_func__(self.OnAccept))
|
|
|
|
oldPassword.OnPressEscapeKey = self.OnCancel
|
|
|
|
newPassword.OnPressEscapeKey = self.OnCancel
|
|
|
|
newPasswordCheck.OnPressEscapeKey = self.OnCancel
|
|
|
|
|
|
|
|
self.oldPassword = oldPassword
|
|
|
|
self.newPassword = newPassword
|
|
|
|
self.newPasswordCheck = newPasswordCheck
|
|
|
|
|
|
|
|
def OnNextFocus(self, arg):
|
|
|
|
if 1 == arg:
|
|
|
|
self.oldPassword.KillFocus()
|
|
|
|
self.newPassword.SetFocus()
|
|
|
|
elif 2 == arg:
|
|
|
|
self.newPassword.KillFocus()
|
|
|
|
self.newPasswordCheck.SetFocus()
|
|
|
|
elif 3 == arg:
|
|
|
|
self.newPasswordCheck.KillFocus()
|
|
|
|
self.oldPassword.SetFocus()
|
|
|
|
|
|
|
|
def Destroy(self):
|
|
|
|
self.ClearDictionary()
|
|
|
|
self.dlgMessage.ClearDictionary()
|
|
|
|
self.oldPassword = None
|
|
|
|
self.newPassword = None
|
|
|
|
self.newPasswordCheck = None
|
|
|
|
|
|
|
|
def Open(self):
|
|
|
|
self.oldPassword.SetText("")
|
|
|
|
self.newPassword.SetText("")
|
|
|
|
self.newPasswordCheck.SetText("")
|
|
|
|
self.oldPassword.SetFocus()
|
|
|
|
self.SetCenterPosition()
|
|
|
|
self.SetTop()
|
|
|
|
self.Show()
|
|
|
|
|
|
|
|
def Close(self):
|
|
|
|
self.oldPassword.SetText("")
|
|
|
|
self.newPassword.SetText("")
|
|
|
|
self.newPasswordCheck.SetText("")
|
|
|
|
self.oldPassword.KillFocus()
|
|
|
|
self.newPassword.KillFocus()
|
|
|
|
self.newPasswordCheck.KillFocus()
|
|
|
|
self.Hide()
|
|
|
|
|
|
|
|
def OnAccept(self):
|
|
|
|
oldPasswordText = self.oldPassword.GetText()
|
|
|
|
newPasswordText = self.newPassword.GetText()
|
|
|
|
newPasswordCheckText = self.newPasswordCheck.GetText()
|
|
|
|
if newPasswordText != newPasswordCheckText:
|
|
|
|
self.dlgMessage.SetCenterPosition()
|
|
|
|
self.dlgMessage.SetTop()
|
|
|
|
self.dlgMessage.Show()
|
2023-07-21 21:55:58 +03:00
|
|
|
return True
|
2022-11-20 23:11:54 +02:00
|
|
|
net.SendChatPacket("/safebox_change_password %s %s" % (oldPasswordText, newPasswordText))
|
|
|
|
self.Close()
|
2023-07-21 21:55:58 +03:00
|
|
|
return True
|
2022-11-20 23:11:54 +02:00
|
|
|
|
|
|
|
def OnCancel(self):
|
|
|
|
self.Close()
|
2023-07-21 21:55:58 +03:00
|
|
|
return True
|
2022-11-20 23:11:54 +02:00
|
|
|
|
|
|
|
def OnCloseMessageDialog(self):
|
|
|
|
self.newPassword.SetText("")
|
|
|
|
self.newPasswordCheck.SetText("")
|
|
|
|
self.newPassword.SetFocus()
|
|
|
|
self.dlgMessage.Hide()
|
|
|
|
|
|
|
|
class SafeboxWindow(ui.ScriptWindow):
|
|
|
|
|
|
|
|
BOX_WIDTH = 176
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
ui.ScriptWindow.__init__(self)
|
|
|
|
self.tooltipItem = None
|
|
|
|
self.sellingSlotNumber = -1
|
|
|
|
self.pageButtonList = []
|
|
|
|
self.curPageIndex = 0
|
|
|
|
self.isLoaded = 0
|
|
|
|
self.xSafeBoxStart = 0
|
|
|
|
self.ySafeBoxStart = 0
|
|
|
|
|
|
|
|
self.__LoadWindow()
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
ui.ScriptWindow.__del__(self)
|
|
|
|
|
|
|
|
def Show(self):
|
|
|
|
self.__LoadWindow()
|
|
|
|
|
|
|
|
ui.ScriptWindow.Show(self)
|
|
|
|
|
|
|
|
def Destroy(self):
|
|
|
|
self.ClearDictionary()
|
|
|
|
|
|
|
|
self.dlgPickMoney.Destroy()
|
|
|
|
self.dlgPickMoney = None
|
|
|
|
self.dlgChangePassword.Destroy()
|
|
|
|
self.dlgChangePassword = None
|
|
|
|
|
|
|
|
self.tooltipItem = None
|
|
|
|
self.wndMoneySlot = None
|
|
|
|
self.wndMoney = None
|
|
|
|
self.wndBoard = None
|
|
|
|
self.wndItem = None
|
|
|
|
|
|
|
|
self.pageButtonList = []
|
|
|
|
|
|
|
|
def __LoadWindow(self):
|
|
|
|
if self.isLoaded == 1:
|
|
|
|
return
|
|
|
|
|
|
|
|
self.isLoaded = 1
|
|
|
|
|
|
|
|
pyScrLoader = ui.PythonScriptLoader()
|
|
|
|
pyScrLoader.LoadScriptFile(self, "UIScript/SafeboxWindow.py")
|
|
|
|
|
|
|
|
from _weakref import proxy
|
|
|
|
|
|
|
|
## Item
|
|
|
|
wndItem = ui.GridSlotWindow()
|
|
|
|
wndItem.SetParent(self)
|
|
|
|
wndItem.SetPosition(8, 35)
|
|
|
|
wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
|
|
|
|
wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
|
|
|
|
wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
|
|
|
|
wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
|
|
|
|
wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
|
|
|
|
wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
|
|
|
|
wndItem.Show()
|
|
|
|
|
|
|
|
## PickMoneyDialog
|
|
|
|
import uiPickMoney
|
|
|
|
dlgPickMoney = uiPickMoney.PickMoneyDialog()
|
|
|
|
dlgPickMoney.LoadDialog()
|
|
|
|
dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
|
|
|
|
dlgPickMoney.Hide()
|
|
|
|
|
|
|
|
## ChangePasswrod
|
|
|
|
dlgChangePassword = ChangePasswordDialog()
|
|
|
|
dlgChangePassword.LoadDialog()
|
|
|
|
dlgChangePassword.Hide()
|
|
|
|
|
|
|
|
## Close Button
|
|
|
|
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
|
|
|
|
self.GetChild("ChangePasswordButton").SetEvent(ui.__mem_func__(self.OnChangePassword))
|
|
|
|
self.GetChild("ExitButton").SetEvent(ui.__mem_func__(self.Close))
|
|
|
|
|
|
|
|
self.wndItem = wndItem
|
|
|
|
self.dlgPickMoney = dlgPickMoney
|
|
|
|
self.dlgChangePassword = dlgChangePassword
|
|
|
|
self.wndBoard = self.GetChild("board")
|
|
|
|
#self.wndMoney = self.GetChild("Money")
|
|
|
|
#self.wndMoneySlot = self.GetChild("Money_Slot")
|
|
|
|
#self.wndMoneySlot.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
|
|
|
|
|
|
|
|
## Initialize
|
|
|
|
self.SetTableSize(3)
|
|
|
|
self.RefreshSafeboxMoney()
|
|
|
|
|
|
|
|
def OpenPickMoneyDialog(self):
|
|
|
|
|
|
|
|
if mouseModule.mouseController.isAttached():
|
|
|
|
|
|
|
|
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
|
|
|
|
if player.SLOT_TYPE_INVENTORY == mouseModule.mouseController.GetAttachedType():
|
|
|
|
|
|
|
|
if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
|
|
|
|
net.SendSafeboxSaveMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
|
|
|
|
snd.PlaySound("sound/ui/money.wav")
|
|
|
|
|
|
|
|
mouseModule.mouseController.DeattachObject()
|
|
|
|
|
|
|
|
else:
|
|
|
|
curMoney = safebox.GetMoney()
|
|
|
|
|
|
|
|
if curMoney <= 0:
|
|
|
|
return
|
|
|
|
|
|
|
|
self.dlgPickMoney.Open(curMoney)
|
|
|
|
|
|
|
|
def ShowWindow(self, size):
|
|
|
|
|
|
|
|
(self.xSafeBoxStart, self.ySafeBoxStart, z) = player.GetMainCharacterPosition()
|
|
|
|
|
|
|
|
self.SetTableSize(size)
|
|
|
|
self.Show()
|
|
|
|
|
|
|
|
def __MakePageButton(self, pageCount):
|
|
|
|
|
|
|
|
self.curPageIndex = 0
|
|
|
|
self.pageButtonList = []
|
|
|
|
|
|
|
|
text = "I"
|
|
|
|
pos = -int(float(pageCount-1)/2 * 52)
|
|
|
|
for i in xrange(pageCount):
|
|
|
|
button = ui.RadioButton()
|
|
|
|
button.SetParent(self)
|
|
|
|
button.SetUpVisual("d:/ymir work/ui/game/windows/tab_button_middle_01.sub")
|
|
|
|
button.SetOverVisual("d:/ymir work/ui/game/windows/tab_button_middle_02.sub")
|
|
|
|
button.SetDownVisual("d:/ymir work/ui/game/windows/tab_button_middle_03.sub")
|
|
|
|
button.SetWindowHorizontalAlignCenter()
|
|
|
|
button.SetWindowVerticalAlignBottom()
|
|
|
|
button.SetPosition(pos, 85)
|
|
|
|
button.SetText(text)
|
|
|
|
button.SetEvent(lambda arg=i: self.SelectPage(arg))
|
|
|
|
button.Show()
|
|
|
|
self.pageButtonList.append(button)
|
|
|
|
|
|
|
|
pos += 52
|
|
|
|
text += "I"
|
|
|
|
|
|
|
|
self.pageButtonList[0].Down()
|
|
|
|
|
|
|
|
def SelectPage(self, index):
|
|
|
|
|
|
|
|
self.curPageIndex = index
|
|
|
|
|
|
|
|
for btn in self.pageButtonList:
|
|
|
|
btn.SetUp()
|
|
|
|
|
|
|
|
self.pageButtonList[index].Down()
|
|
|
|
self.RefreshSafebox()
|
|
|
|
|
|
|
|
def __LocalPosToGlobalPos(self, local):
|
|
|
|
return self.curPageIndex*safebox.SAFEBOX_PAGE_SIZE + local
|
|
|
|
|
|
|
|
def SetTableSize(self, size):
|
|
|
|
|
|
|
|
pageCount = max(1, size / safebox.SAFEBOX_SLOT_Y_COUNT)
|
|
|
|
pageCount = min(3, pageCount)
|
|
|
|
size = safebox.SAFEBOX_SLOT_Y_COUNT
|
|
|
|
|
|
|
|
self.__MakePageButton(pageCount)
|
|
|
|
|
|
|
|
self.wndItem.ArrangeSlot(0, safebox.SAFEBOX_SLOT_X_COUNT, size, 32, 32, 0, 0)
|
|
|
|
self.wndItem.RefreshSlot()
|
|
|
|
self.wndItem.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0)
|
|
|
|
|
|
|
|
wnd_height = 130 + 32 * size
|
|
|
|
self.wndBoard.SetSize(self.BOX_WIDTH, wnd_height)
|
|
|
|
self.SetSize(self.BOX_WIDTH, wnd_height)
|
|
|
|
self.UpdateRect()
|
|
|
|
|
|
|
|
def RefreshSafebox(self):
|
|
|
|
getItemID=safebox.GetItemID
|
|
|
|
getItemCount=safebox.GetItemCount
|
|
|
|
setItemID=self.wndItem.SetItemSlot
|
|
|
|
|
|
|
|
for i in xrange(safebox.SAFEBOX_PAGE_SIZE):
|
|
|
|
slotIndex = self.__LocalPosToGlobalPos(i)
|
|
|
|
itemCount = getItemCount(slotIndex)
|
|
|
|
if itemCount <= 1:
|
|
|
|
itemCount = 0
|
|
|
|
setItemID(i, getItemID(slotIndex), itemCount)
|
|
|
|
|
|
|
|
self.wndItem.RefreshSlot()
|
|
|
|
|
|
|
|
def RefreshSafeboxMoney(self):
|
|
|
|
pass
|
|
|
|
#self.wndMoney.SetText(str(safebox.GetMoney()))
|
|
|
|
|
|
|
|
def SetItemToolTip(self, tooltip):
|
|
|
|
self.tooltipItem = tooltip
|
|
|
|
|
|
|
|
def Close(self):
|
|
|
|
net.SendChatPacket("/safebox_close")
|
|
|
|
|
|
|
|
def CommandCloseSafebox(self):
|
|
|
|
if self.tooltipItem:
|
|
|
|
self.tooltipItem.HideToolTip()
|
|
|
|
|
|
|
|
self.dlgPickMoney.Close()
|
|
|
|
self.dlgChangePassword.Close()
|
|
|
|
self.Hide()
|
|
|
|
|
|
|
|
## Slot Event
|
|
|
|
def SelectEmptySlot(self, selectedSlotPos):
|
|
|
|
|
|
|
|
selectedSlotPos = self.__LocalPosToGlobalPos(selectedSlotPos)
|
|
|
|
|
|
|
|
if mouseModule.mouseController.isAttached():
|
|
|
|
|
|
|
|
attachedSlotType = mouseModule.mouseController.GetAttachedType()
|
|
|
|
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
|
|
|
|
|
|
|
|
if player.SLOT_TYPE_SAFEBOX == attachedSlotType:
|
|
|
|
|
|
|
|
net.SendSafeboxItemMovePacket(attachedSlotPos, selectedSlotPos, 0)
|
|
|
|
#snd.PlaySound("sound/ui/drop.wav")
|
|
|
|
else:
|
|
|
|
attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
|
|
|
|
if player.RESERVED_WINDOW == attachedInvenType:
|
|
|
|
return
|
|
|
|
|
|
|
|
if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
|
|
|
|
net.SendSafeboxSaveMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
|
|
|
|
snd.PlaySound("sound/ui/money.wav")
|
|
|
|
|
|
|
|
else:
|
|
|
|
net.SendSafeboxCheckinPacket(attachedInvenType, attachedSlotPos, selectedSlotPos)
|
|
|
|
#snd.PlaySound("sound/ui/drop.wav")
|
|
|
|
|
|
|
|
mouseModule.mouseController.DeattachObject()
|
|
|
|
|
|
|
|
def SelectItemSlot(self, selectedSlotPos):
|
|
|
|
|
|
|
|
selectedSlotPos = self.__LocalPosToGlobalPos(selectedSlotPos)
|
|
|
|
|
|
|
|
if mouseModule.mouseController.isAttached():
|
|
|
|
|
|
|
|
attachedSlotType = mouseModule.mouseController.GetAttachedType()
|
|
|
|
|
|
|
|
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
|
|
|
|
|
|
|
|
if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
|
|
|
|
net.SendSafeboxSaveMoneyPacket(mouseModule.mouseController.GetAttachedItemCount())
|
|
|
|
snd.PlaySound("sound/ui/money.wav")
|
|
|
|
|
|
|
|
else:
|
|
|
|
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
|
|
|
|
#net.SendSafeboxCheckinPacket(attachedSlotPos, selectedSlotPos)
|
|
|
|
#snd.PlaySound("sound/ui/drop.wav")
|
|
|
|
|
|
|
|
mouseModule.mouseController.DeattachObject()
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
curCursorNum = app.GetCursor()
|
|
|
|
if app.SELL == curCursorNum:
|
|
|
|
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SAFEBOX_SELL_DISABLE_SAFEITEM)
|
|
|
|
|
|
|
|
elif app.BUY == curCursorNum:
|
|
|
|
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SHOP_BUY_INFO)
|
|
|
|
|
|
|
|
else:
|
|
|
|
selectedItemID = safebox.GetItemID(selectedSlotPos)
|
|
|
|
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_SAFEBOX, selectedSlotPos, selectedItemID)
|
|
|
|
snd.PlaySound("sound/ui/pick.wav")
|
|
|
|
|
|
|
|
def UseItemSlot(self, slotIndex):
|
|
|
|
mouseModule.mouseController.DeattachObject()
|
|
|
|
|
|
|
|
def __ShowToolTip(self, slotIndex):
|
|
|
|
if self.tooltipItem:
|
|
|
|
self.tooltipItem.SetSafeBoxItem(slotIndex)
|
|
|
|
|
|
|
|
def OverInItem(self, slotIndex):
|
|
|
|
slotIndex = self.__LocalPosToGlobalPos(slotIndex)
|
2023-07-21 21:55:58 +03:00
|
|
|
self.wndItem.SetUsableItem(False)
|
2022-11-20 23:11:54 +02:00
|
|
|
self.__ShowToolTip(slotIndex)
|
|
|
|
|
|
|
|
def OverOutItem(self):
|
2023-07-21 21:55:58 +03:00
|
|
|
self.wndItem.SetUsableItem(False)
|
2022-11-20 23:11:54 +02:00
|
|
|
if self.tooltipItem:
|
|
|
|
self.tooltipItem.HideToolTip()
|
|
|
|
|
|
|
|
def OnPickMoney(self, money):
|
|
|
|
mouseModule.mouseController.AttachMoney(self, player.SLOT_TYPE_SAFEBOX, money)
|
|
|
|
|
|
|
|
def OnChangePassword(self):
|
|
|
|
self.dlgChangePassword.Open()
|
|
|
|
|
|
|
|
def OnPressEscapeKey(self):
|
|
|
|
self.Close()
|
2023-07-21 21:55:58 +03:00
|
|
|
return True
|
2022-11-20 23:11:54 +02:00
|
|
|
|
|
|
|
def OnUpdate(self):
|
|
|
|
|
|
|
|
USE_SAFEBOX_LIMIT_RANGE = 1000
|
|
|
|
|
|
|
|
(x, y, z) = player.GetMainCharacterPosition()
|
|
|
|
if abs(x - self.xSafeBoxStart) > USE_SAFEBOX_LIMIT_RANGE or abs(y - self.ySafeBoxStart) > USE_SAFEBOX_LIMIT_RANGE:
|
|
|
|
self.Close()
|
|
|
|
|
|
|
|
class MallWindow(ui.ScriptWindow):
|
|
|
|
|
|
|
|
BOX_WIDTH = 176
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
ui.ScriptWindow.__init__(self)
|
|
|
|
self.tooltipItem = None
|
|
|
|
self.sellingSlotNumber = -1
|
|
|
|
self.pageButtonList = []
|
|
|
|
self.curPageIndex = 0
|
|
|
|
self.isLoaded = 0
|
|
|
|
self.xSafeBoxStart = 0
|
|
|
|
self.ySafeBoxStart = 0
|
|
|
|
|
|
|
|
self.__LoadWindow()
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
ui.ScriptWindow.__del__(self)
|
|
|
|
|
|
|
|
def Show(self):
|
|
|
|
self.__LoadWindow()
|
|
|
|
|
|
|
|
ui.ScriptWindow.Show(self)
|
|
|
|
|
|
|
|
def Destroy(self):
|
|
|
|
self.ClearDictionary()
|
|
|
|
|
|
|
|
self.tooltipItem = None
|
|
|
|
self.wndBoard = None
|
|
|
|
self.wndItem = None
|
|
|
|
|
|
|
|
self.pageButtonList = []
|
|
|
|
|
|
|
|
def __LoadWindow(self):
|
|
|
|
if self.isLoaded == 1:
|
|
|
|
return
|
|
|
|
|
|
|
|
self.isLoaded = 1
|
|
|
|
|
|
|
|
pyScrLoader = ui.PythonScriptLoader()
|
|
|
|
pyScrLoader.LoadScriptFile(self, "UIScript/MallWindow.py")
|
|
|
|
|
|
|
|
from _weakref import proxy
|
|
|
|
|
|
|
|
## Item
|
|
|
|
wndItem = ui.GridSlotWindow()
|
|
|
|
wndItem.SetParent(self)
|
|
|
|
wndItem.SetPosition(8, 35)
|
|
|
|
wndItem.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectEmptySlot))
|
|
|
|
wndItem.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectItemSlot))
|
|
|
|
wndItem.SetUnselectItemSlotEvent(ui.__mem_func__(self.UseItemSlot))
|
|
|
|
wndItem.SetUseSlotEvent(ui.__mem_func__(self.UseItemSlot))
|
|
|
|
wndItem.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
|
|
|
|
wndItem.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
|
|
|
|
wndItem.Show()
|
|
|
|
|
|
|
|
## Close Button
|
|
|
|
self.GetChild("TitleBar").SetCloseEvent(ui.__mem_func__(self.Close))
|
|
|
|
self.GetChild("ExitButton").SetEvent(ui.__mem_func__(self.Close))
|
|
|
|
|
|
|
|
self.wndItem = wndItem
|
|
|
|
self.wndBoard = self.GetChild("board")
|
|
|
|
|
|
|
|
## Initialize
|
|
|
|
self.SetTableSize(3)
|
|
|
|
|
|
|
|
def ShowWindow(self, size):
|
|
|
|
|
|
|
|
(self.xSafeBoxStart, self.ySafeBoxStart, z) = player.GetMainCharacterPosition()
|
|
|
|
|
|
|
|
self.SetTableSize(size)
|
|
|
|
self.Show()
|
|
|
|
|
|
|
|
def SetTableSize(self, size):
|
|
|
|
|
|
|
|
pageCount = max(1, size / safebox.SAFEBOX_SLOT_Y_COUNT)
|
|
|
|
pageCount = min(3, pageCount)
|
|
|
|
size = safebox.SAFEBOX_SLOT_Y_COUNT
|
|
|
|
|
|
|
|
self.wndItem.ArrangeSlot(0, safebox.SAFEBOX_SLOT_X_COUNT, size, 32, 32, 0, 0)
|
|
|
|
self.wndItem.RefreshSlot()
|
|
|
|
self.wndItem.SetSlotBaseImage("d:/ymir work/ui/public/Slot_Base.sub", 1.0, 1.0, 1.0, 1.0)
|
|
|
|
|
|
|
|
self.wndBoard.SetSize(self.BOX_WIDTH, 82 + 32*size)
|
|
|
|
self.SetSize(self.BOX_WIDTH, 85 + 32*size)
|
|
|
|
self.UpdateRect()
|
|
|
|
|
|
|
|
def RefreshMall(self):
|
|
|
|
getItemID=safebox.GetMallItemID
|
|
|
|
getItemCount=safebox.GetMallItemCount
|
|
|
|
setItemID=self.wndItem.SetItemSlot
|
|
|
|
|
|
|
|
for i in xrange(safebox.GetMallSize()):
|
|
|
|
itemID = getItemID(i)
|
|
|
|
itemCount = getItemCount(i)
|
|
|
|
if itemCount <= 1:
|
|
|
|
itemCount = 0
|
|
|
|
setItemID(i, itemID, itemCount)
|
|
|
|
|
|
|
|
self.wndItem.RefreshSlot()
|
|
|
|
|
|
|
|
def SetItemToolTip(self, tooltip):
|
|
|
|
self.tooltipItem = tooltip
|
|
|
|
|
|
|
|
def Close(self):
|
|
|
|
net.SendChatPacket("/mall_close")
|
|
|
|
|
|
|
|
def CommandCloseMall(self):
|
|
|
|
if self.tooltipItem:
|
|
|
|
self.tooltipItem.HideToolTip()
|
|
|
|
|
|
|
|
self.Hide()
|
|
|
|
|
|
|
|
## Slot Event
|
|
|
|
def SelectEmptySlot(self, selectedSlotPos):
|
|
|
|
|
|
|
|
if mouseModule.mouseController.isAttached():
|
|
|
|
|
|
|
|
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MALL_CANNOT_INSERT)
|
|
|
|
mouseModule.mouseController.DeattachObject()
|
|
|
|
|
|
|
|
def SelectItemSlot(self, selectedSlotPos):
|
|
|
|
|
|
|
|
if mouseModule.mouseController.isAttached():
|
|
|
|
|
|
|
|
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MALL_CANNOT_INSERT)
|
|
|
|
mouseModule.mouseController.DeattachObject()
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
curCursorNum = app.GetCursor()
|
|
|
|
selectedItemID = safebox.GetMallItemID(selectedSlotPos)
|
|
|
|
mouseModule.mouseController.AttachObject(self, player.SLOT_TYPE_MALL, selectedSlotPos, selectedItemID)
|
|
|
|
snd.PlaySound("sound/ui/pick.wav")
|
|
|
|
|
|
|
|
def UseItemSlot(self, slotIndex):
|
|
|
|
mouseModule.mouseController.DeattachObject()
|
|
|
|
|
|
|
|
def __ShowToolTip(self, slotIndex):
|
|
|
|
if self.tooltipItem:
|
|
|
|
self.tooltipItem.SetMallItem(slotIndex)
|
|
|
|
|
|
|
|
def OverInItem(self, slotIndex):
|
|
|
|
self.__ShowToolTip(slotIndex)
|
|
|
|
|
|
|
|
def OverOutItem(self):
|
2023-07-21 21:55:58 +03:00
|
|
|
self.wndItem.SetUsableItem(False)
|
2022-11-20 23:11:54 +02:00
|
|
|
if self.tooltipItem:
|
|
|
|
self.tooltipItem.HideToolTip()
|
|
|
|
|
|
|
|
def OnPressEscapeKey(self):
|
|
|
|
self.Close()
|
2023-07-21 21:55:58 +03:00
|
|
|
return True
|
2022-11-20 23:11:54 +02:00
|
|
|
|
|
|
|
def OnUpdate(self):
|
|
|
|
|
|
|
|
USE_SAFEBOX_LIMIT_RANGE = 1000
|
|
|
|
|
|
|
|
(x, y, z) = player.GetMainCharacterPosition()
|
|
|
|
if abs(x - self.xSafeBoxStart) > USE_SAFEBOX_LIMIT_RANGE or abs(y - self.ySafeBoxStart) > USE_SAFEBOX_LIMIT_RANGE:
|
|
|
|
self.Close()
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
|
|
import app
|
|
|
|
import wndMgr
|
|
|
|
import systemSetting
|
|
|
|
import mouseModule
|
|
|
|
import grp
|
|
|
|
import ui
|
|
|
|
import chr
|
|
|
|
import background
|
|
|
|
import player
|
|
|
|
|
2023-07-21 21:55:58 +03:00
|
|
|
#wndMgr.SetOutlineFlag(True)
|
2022-11-20 23:11:54 +02:00
|
|
|
|
|
|
|
app.SetMouseHandler(mouseModule.mouseController)
|
2023-07-21 21:55:58 +03:00
|
|
|
app.SetHairColorEnable(True)
|
2022-11-20 23:11:54 +02:00
|
|
|
wndMgr.SetMouseHandler(mouseModule.mouseController)
|
|
|
|
wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight())
|
|
|
|
app.Create("METIN2 CLOSED BETA", systemSetting.GetWidth(), systemSetting.GetHeight(), 1)
|
|
|
|
mouseModule.mouseController.Create()
|
|
|
|
|
|
|
|
|
|
|
|
wnd = SafeboxWindow()
|
|
|
|
wnd.ShowWindow(1)
|
|
|
|
|
|
|
|
app.Loop()
|