Initial commit: UI-Quellcode (root + uiscript)
Enthaelt die editierbaren Python-UI-Skripte (root/, uiscript/) des EterNexus-Clients, u.a. die Aenderungen fuer aktivierbare Items (constinfo.py: IS_ACTIVATABLE_ITEM/IS_MOUNT_SEAL, uiinventory.py: RefreshBagSlotWindow). Kompilierte Pack-Dateien (.epk/.eix) sowie Binaries/DLLs/Locale-Assets sind bewusst nicht Teil dieses Repos.
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
import dbg
|
||||
import player
|
||||
import item
|
||||
import net
|
||||
import snd
|
||||
import ui
|
||||
import uiToolTip
|
||||
import localeInfo
|
||||
|
||||
class AttachMetinDialog(ui.ScriptWindow):
|
||||
def __init__(self):
|
||||
ui.ScriptWindow.__init__(self)
|
||||
self.__LoadScript()
|
||||
|
||||
self.metinItemPos = 0
|
||||
self.targetItemPos = 0
|
||||
|
||||
def __LoadScript(self):
|
||||
try:
|
||||
pyScrLoader = ui.PythonScriptLoader()
|
||||
pyScrLoader.LoadScriptFile(self, "uiscript/attachstonedialog.py")
|
||||
|
||||
except:
|
||||
import exception
|
||||
exception.Abort("AttachStoneDialog.__LoadScript.LoadObject")
|
||||
|
||||
try:
|
||||
self.board = self.GetChild("Board")
|
||||
self.titleBar = self.GetChild("TitleBar")
|
||||
self.metinImage = self.GetChild("MetinImage")
|
||||
self.GetChild("AcceptButton").SetEvent(ui.__mem_func__(self.Accept))
|
||||
self.GetChild("CancelButton").SetEvent(ui.__mem_func__(self.Close))
|
||||
except:
|
||||
import exception
|
||||
exception.Abort("AttachStoneDialog.__LoadScript.BindObject")
|
||||
|
||||
oldToolTip = uiToolTip.ItemToolTip()
|
||||
oldToolTip.SetParent(self)
|
||||
oldToolTip.SetPosition(15, 38)
|
||||
oldToolTip.SetFollow(False)
|
||||
oldToolTip.Show()
|
||||
self.oldToolTip = oldToolTip
|
||||
|
||||
newToolTip = uiToolTip.ItemToolTip()
|
||||
newToolTip.SetParent(self)
|
||||
newToolTip.SetPosition(230 + 20, 38)
|
||||
newToolTip.SetFollow(False)
|
||||
newToolTip.Show()
|
||||
self.newToolTip = newToolTip
|
||||
|
||||
self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
|
||||
|
||||
def __del__(self):
|
||||
ui.ScriptWindow.__del__(self)
|
||||
|
||||
def Destroy(self):
|
||||
self.ClearDictionary()
|
||||
self.board = 0
|
||||
self.titleBar = 0
|
||||
self.metinImage = 0
|
||||
self.toolTip = 0
|
||||
|
||||
def CanAttachMetin(self, slot, metin):
|
||||
if item.METIN_NORMAL == metin:
|
||||
if player.METIN_SOCKET_TYPE_SILVER == slot or player.METIN_SOCKET_TYPE_GOLD == slot:
|
||||
return True
|
||||
|
||||
elif item.METIN_GOLD == metin:
|
||||
if player.METIN_SOCKET_TYPE_GOLD == slot:
|
||||
return True
|
||||
|
||||
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()
|
||||
|
||||
def UpdateDialog(self):
|
||||
newWidth = self.newToolTip.GetWidth() + 230 + 15 + 20
|
||||
newHeight = self.newToolTip.GetHeight() + 98
|
||||
|
||||
if localeInfo.IsARABIC():
|
||||
self.board.SetPosition( newWidth, 0 )
|
||||
|
||||
(x,y) = self.titleBar.GetLocalPosition()
|
||||
self.titleBar.SetPosition( newWidth - 15, y )
|
||||
|
||||
self.board.SetSize(newWidth, newHeight)
|
||||
self.titleBar.SetWidth(newWidth-15)
|
||||
self.SetSize(newWidth, newHeight)
|
||||
|
||||
(x, y) = self.GetLocalPosition()
|
||||
self.SetPosition(x, y)
|
||||
|
||||
def Accept(self):
|
||||
net.SendItemUseToItemPacket(self.metinItemPos, self.targetItemPos)
|
||||
snd.PlaySound("sound/ui/metinstone_insert.wav")
|
||||
self.Close()
|
||||
|
||||
def Close(self):
|
||||
self.Hide()
|
||||
Reference in New Issue
Block a user