217 lines
6.4 KiB
Python
217 lines
6.4 KiB
Python
|
import player
|
||
|
import exchange
|
||
|
import net
|
||
|
import locale
|
||
|
import chat
|
||
|
import item
|
||
|
|
||
|
import ui
|
||
|
import mouseModule
|
||
|
import uiPickMoney
|
||
|
import wndMgr
|
||
|
|
||
|
###################################################################################################
|
||
|
## Exchange
|
||
|
class ExchangeDialog(ui.ScriptWindow):
|
||
|
|
||
|
def __init__(self):
|
||
|
ui.ScriptWindow.__init__(self)
|
||
|
self.TitleName = 0
|
||
|
self.tooltipItem = 0
|
||
|
self.xStart = 0
|
||
|
self.yStart = 0
|
||
|
|
||
|
def __del__(self):
|
||
|
ui.ScriptWindow.__del__(self)
|
||
|
|
||
|
def LoadDialog(self):
|
||
|
PythonScriptLoader = ui.PythonScriptLoader()
|
||
|
PythonScriptLoader.LoadScriptFile(self, "UIScript/exchangedialog.py")
|
||
|
|
||
|
## Owner
|
||
|
self.OwnerSlot = self.GetChild("Owner_Slot")
|
||
|
self.OwnerSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectOwnerEmptySlot))
|
||
|
self.OwnerSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectOwnerItemSlot))
|
||
|
self.OwnerSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInOwnerItem))
|
||
|
self.OwnerSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
|
||
|
self.OwnerMoney = self.GetChild("Owner_Money_Value")
|
||
|
self.OwnerAcceptLight = self.GetChild("Owner_Accept_Light")
|
||
|
self.OwnerAcceptLight.Disable()
|
||
|
self.OwnerMoneyButton = self.GetChild("Owner_Money")
|
||
|
self.OwnerMoneyButton.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))
|
||
|
|
||
|
## Target
|
||
|
self.TargetSlot = self.GetChild("Target_Slot")
|
||
|
self.TargetSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInTargetItem))
|
||
|
self.TargetSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
|
||
|
self.TargetMoney = self.GetChild("Target_Money_Value")
|
||
|
self.TargetAcceptLight = self.GetChild("Target_Accept_Light")
|
||
|
self.TargetAcceptLight.Disable()
|
||
|
|
||
|
## PickMoneyDialog
|
||
|
dlgPickMoney = uiPickMoney.PickMoneyDialog()
|
||
|
dlgPickMoney.LoadDialog()
|
||
|
dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
|
||
|
dlgPickMoney.SetTitleName(locale.EXCHANGE_MONEY)
|
||
|
dlgPickMoney.SetMax(7)
|
||
|
dlgPickMoney.Hide()
|
||
|
self.dlgPickMoney = dlgPickMoney
|
||
|
|
||
|
## Button
|
||
|
self.AcceptButton = self.GetChild("Owner_Accept_Button")
|
||
|
self.AcceptButton.SetToggleDownEvent(ui.__mem_func__(self.AcceptExchange))
|
||
|
|
||
|
self.TitleName = self.GetChild("TitleName")
|
||
|
self.GetChild("TitleBar").SetCloseEvent(net.SendExchangeExitPacket)
|
||
|
|
||
|
def Destroy(self):
|
||
|
print "---------------------------------------------------------------------------- DESTROY EXCHANGE"
|
||
|
self.ClearDictionary()
|
||
|
self.dlgPickMoney.Destroy()
|
||
|
self.dlgPickMoney = 0
|
||
|
self.OwnerSlot = 0
|
||
|
self.OwnerMoney = 0
|
||
|
self.OwnerAcceptLight = 0
|
||
|
self.OwnerMoneyButton = 0
|
||
|
self.TargetSlot = 0
|
||
|
self.TargetMoney = 0
|
||
|
self.TargetAcceptLight = 0
|
||
|
self.TitleName = 0
|
||
|
self.AcceptButton = 0
|
||
|
self.tooltipItem = 0
|
||
|
|
||
|
def OpenDialog(self):
|
||
|
self.TitleName.SetText(locale.EXCHANGE_TITLE % (exchange.GetNameFromTarget()))
|
||
|
self.AcceptButton.Enable()
|
||
|
self.AcceptButton.SetUp()
|
||
|
self.Show()
|
||
|
|
||
|
(self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
|
||
|
|
||
|
def CloseDialog(self):
|
||
|
wndMgr.OnceIgnoreMouseLeftButtonUpEvent()
|
||
|
|
||
|
if 0 != self.tooltipItem:
|
||
|
self.tooltipItem.HideToolTip()
|
||
|
|
||
|
self.dlgPickMoney.Close()
|
||
|
self.Hide()
|
||
|
|
||
|
def SetItemToolTip(self, tooltipItem):
|
||
|
self.tooltipItem = tooltipItem
|
||
|
|
||
|
def OpenPickMoneyDialog(self):
|
||
|
|
||
|
if exchange.GetElkFromSelf() > 0:
|
||
|
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.EXCHANGE_CANT_EDIT_MONEY)
|
||
|
return
|
||
|
|
||
|
self.dlgPickMoney.Open(player.GetElk())
|
||
|
|
||
|
def OnPickMoney(self, money):
|
||
|
net.SendExchangeElkAddPacket(money)
|
||
|
|
||
|
def AcceptExchange(self):
|
||
|
net.SendExchangeAcceptPacket()
|
||
|
self.AcceptButton.Disable()
|
||
|
|
||
|
def SelectOwnerEmptySlot(self, SlotIndex):
|
||
|
|
||
|
if FALSE == mouseModule.mouseController.isAttached():
|
||
|
return
|
||
|
|
||
|
if mouseModule.mouseController.IsAttachedMoney():
|
||
|
net.SendExchangeElkAddPacket(mouseModule.mouseController.GetAttachedMoneyAmount())
|
||
|
else:
|
||
|
attachedSlotType = mouseModule.mouseController.GetAttachedType()
|
||
|
if (player.SLOT_TYPE_INVENTORY == attachedSlotType
|
||
|
or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType):
|
||
|
|
||
|
attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
|
||
|
SrcSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
|
||
|
DstSlotNumber = SlotIndex
|
||
|
|
||
|
itemID = player.GetItemIndex(attachedInvenType, SrcSlotNumber)
|
||
|
item.SelectItem(itemID)
|
||
|
|
||
|
if item.IsAntiFlag(item.ANTIFLAG_GIVE):
|
||
|
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.EXCHANGE_CANNOT_GIVE)
|
||
|
mouseModule.mouseController.DeattachObject()
|
||
|
return
|
||
|
|
||
|
net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)
|
||
|
|
||
|
mouseModule.mouseController.DeattachObject()
|
||
|
|
||
|
def SelectOwnerItemSlot(self, SlotIndex):
|
||
|
|
||
|
if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():
|
||
|
|
||
|
money = mouseModule.mouseController.GetAttachedItemCount()
|
||
|
net.SendExchangeElkAddPacket(money)
|
||
|
|
||
|
def RefreshOwnerSlot(self):
|
||
|
for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
|
||
|
itemIndex = exchange.GetItemVnumFromSelf(i)
|
||
|
itemCount = exchange.GetItemCountFromSelf(i)
|
||
|
if 1 == itemCount:
|
||
|
itemCount = 0
|
||
|
self.OwnerSlot.SetItemSlot(i, itemIndex, itemCount)
|
||
|
self.OwnerSlot.RefreshSlot()
|
||
|
|
||
|
def RefreshTargetSlot(self):
|
||
|
for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
|
||
|
itemIndex = exchange.GetItemVnumFromTarget(i)
|
||
|
itemCount = exchange.GetItemCountFromTarget(i)
|
||
|
if 1 == itemCount:
|
||
|
itemCount = 0
|
||
|
self.TargetSlot.SetItemSlot(i, itemIndex, itemCount)
|
||
|
self.TargetSlot.RefreshSlot()
|
||
|
|
||
|
def Refresh(self):
|
||
|
|
||
|
self.RefreshOwnerSlot()
|
||
|
self.RefreshTargetSlot()
|
||
|
|
||
|
self.OwnerMoney.SetText(str(exchange.GetElkFromSelf()))
|
||
|
self.TargetMoney.SetText(str(exchange.GetElkFromTarget()))
|
||
|
|
||
|
if TRUE == exchange.GetAcceptFromSelf():
|
||
|
self.OwnerAcceptLight.Down()
|
||
|
else:
|
||
|
self.AcceptButton.Enable()
|
||
|
self.AcceptButton.SetUp()
|
||
|
self.OwnerAcceptLight.SetUp()
|
||
|
|
||
|
if TRUE == exchange.GetAcceptFromTarget():
|
||
|
self.TargetAcceptLight.Down()
|
||
|
else:
|
||
|
self.TargetAcceptLight.SetUp()
|
||
|
|
||
|
def OverInOwnerItem(self, slotIndex):
|
||
|
|
||
|
if 0 != self.tooltipItem:
|
||
|
self.tooltipItem.SetExchangeOwnerItem(slotIndex)
|
||
|
|
||
|
def OverInTargetItem(self, slotIndex):
|
||
|
|
||
|
if 0 != self.tooltipItem:
|
||
|
self.tooltipItem.SetExchangeTargetItem(slotIndex)
|
||
|
|
||
|
def OverOutItem(self):
|
||
|
|
||
|
if 0 != self.tooltipItem:
|
||
|
self.tooltipItem.HideToolTip()
|
||
|
|
||
|
def OnTop(self):
|
||
|
self.tooltipItem.SetTop()
|
||
|
|
||
|
def OnUpdate(self):
|
||
|
|
||
|
USE_EXCHANGE_LIMIT_RANGE = 1000
|
||
|
|
||
|
(x, y, z) = player.GetMainCharacterPosition()
|
||
|
if abs(x - self.xStart) > USE_EXCHANGE_LIMIT_RANGE or abs(y - self.yStart) > USE_EXCHANGE_LIMIT_RANGE:
|
||
|
(self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
|
||
|
net.SendExchangeExitPacket()
|