Advertisement
Heathcliff97

uiNewShop.py

Feb 24th, 2022 (edited)
805
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 31.16 KB | None | 0 0
  1. import os
  2. import app
  3. import dbg
  4. import item
  5. import chat
  6. import net
  7. import localeinfo
  8. import ime
  9. import time
  10. import ui
  11. import uiCommon
  12. import uiToolTip
  13. import colorInfo
  14. import player
  15. import snd
  16. import grp
  17. import mouseModule
  18. import shop
  19. import wndMgr
  20. import uiPrivateShopBuilder
  21. import constInfo
  22. import uiScriptLocale
  23. from uiUtils import Edit2 as Edit2
  24. c = colorInfo.CHAT_RGB_NOTICE
  25. titleColor = ui.GenerateColor(c[0],c[1],c[2])
  26. NEGATIVE_COLOR = grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0)
  27. POSITIVE_COLOR = grp.GenerateColor(0.6911, 0.8754, 0.7068, 1.0)
  28. ##Should be disabled becouse this is only for my client UI ##
  29. POSITION_FIX=False
  30. #############################################################
  31. import uiUtils
  32. class ShopDialogCreate(ui.ScriptWindow):
  33.     UI={}
  34.     def __init__(self):
  35.         ui.ScriptWindow.__init__(self)
  36.         self.tooltipItem = uiToolTip.ItemToolTip()
  37.         self.tooltipItem.Hide()
  38.         self.privateShopBuilder = uiPrivateShopBuilder.PrivateShopBuilder()
  39.         self.privateShopBuilder.Hide()
  40.         self.privateShopBuilder.SetItemToolTip(self.tooltipItem)
  41.         self.pop=None
  42.         self.__LoadQuestionDialog()
  43.  
  44.     def __del__(self):
  45.         ui.ScriptWindow.__del__(self)
  46.    
  47.     def __LoadQuestionDialog(self):
  48.         self.UI["board"] = ui.BoardWithTitleBar()
  49.         self.UI["board"].SetCenterPosition()
  50.         self.UI["board"].AddFlag("movable")
  51.         if POSITION_FIX:
  52.             self.UI["board"].SetSize(240, 170)
  53.         else:
  54.             self.UI["board"].SetSize(240, 180)
  55.         self.UI["board"].SetCenterPosition()
  56.         self.UI["board"].SetTop()
  57.         self.UI["board"].SetTitleName(uiScriptLocale.SHOP_WINDOW_CREATE)
  58.         self.UI["board"].Hide()
  59.        
  60.         self.UI["nameText"] = ui.MakeText(self.UI["board"], uiScriptLocale.SHOP_NAME, 95, 30, None)
  61.         self.UI["nameEdit"]=Edit2(self.UI["board"],"",10,45,150,25,FALSE,6,30)
  62.        
  63.        
  64.         self.UI["selectText"] = ui.TextLine()
  65.         self.UI["selectText"].SetParent(self.UI["board"])
  66.         self.UI["selectText"].SetPosition(15, 70)
  67.         self.UI["selectText"].SetFeather()
  68.         self.UI["selectText"].SetDefaultFontName()
  69.         self.UI["selectText"].SetOutline()
  70.         self.UI["selectText"].SetText(uiScriptLocale.SHOP_TIMEOUT)
  71.         self.UI["selectText"].Show()
  72.        
  73.         self.UI["create"] = ui.MakeButton(self.UI["board"], 30, 110 , "", "d:/ymir work/ui/public/", "xlarge_button_01.sub", "xlarge_button_02.sub", "xlarge_button_03.sub")
  74.         self.UI["create"].SetText(uiScriptLocale.SHOP_CREATE)
  75.         self.UI["create"].SetEvent(ui.__mem_func__(self.CreateShop))
  76.         self.UI["create"].Show()
  77.        
  78.         self.UI["cancel"] = ui.MakeButton(self.UI["board"], 30, 140 , "", "d:/ymir work/ui/public/", "xlarge_button_01.sub", "xlarge_button_02.sub", "xlarge_button_03.sub")
  79.         self.UI["cancel"].SetText(uiScriptLocale.CANCEL)
  80.         self.UI["cancel"].SetEvent(ui.__mem_func__(self.Close))
  81.         self.UI["cancel"].Show()
  82.        
  83.  
  84.    
  85.         self.UI["price"] = ui.MakeText(self.UI["board"], "", 15, 90, None)
  86.         self.UI["price"].SetFeather()
  87.         self.UI["price"].SetDefaultFontName()
  88.         self.UI["price"].SetOutline()
  89.         self.UI["price"].Show()
  90.         self.CreateList()
  91.     def Destroy(self):
  92.         self.UI={}
  93.         self.__OnClosePopupDialog()
  94.         self.UI["board"].Hide()
  95.         return TRUE
  96.         #self.ClearDictionary()
  97.     def CreateList(self):
  98.         if "select" in self.UI.keys():
  99.             self.UI["select"].Hide()
  100.             self.UI["select"].Destroy()
  101.         self.UI["select"] = None
  102.         self.UI["select"] = DropDown(self.UI["board"],"---")
  103.         self.UI["select"].SetPosition(110,70)
  104.         self.UI["select"].SetSize(120,20)
  105.         self.UI["select"].SetTop()
  106.         self.UI["select"].OnChange=self.Load
  107.         self.UI["select"].Show()
  108.     def OnPressEscapeKey(self):
  109.         self.Close()
  110.         return TRUE
  111.     def Close(self):
  112.         self.__OnClosePopupDialog()
  113.         self.UnLoad()
  114.         self.UI["board"].Hide()
  115.         self.Hide()
  116.     def CreateShop(self):
  117.         if len(self.UI["nameEdit"].GetText()) <=0:
  118.             self.PopupMessage(uiScriptLocale.SHOP_NAME_EMPTY)
  119.             return
  120.         id=int(self.UI["select"].DropList.GetSelectedItem().value)
  121.         if int(id) <=0:
  122.             self.PopupMessage(uiScriptLocale.SHOP_TIMEOUT_EMPTY)
  123.             return
  124.         item = constInfo.shop_cost[id-1]
  125.        
  126.         if int(item["id"]) <=0:
  127.             self.PopupMessage(uiScriptLocale.SHOP_TIMEOUT_EMPTY)
  128.             return
  129.         self.__OnClosePopupDialog()
  130.         self.privateShopBuilder.Open(self.UI["nameEdit"].GetText(),int(item["id"]))
  131.         self.Close()   
  132.     def __OnClosePopupDialog(self):
  133.         if self.pop != None:
  134.             if self.pop.IsShow():
  135.                 self.pop.Hide()
  136.         self.pop = None
  137.     def Hide(self):
  138.         if "board" in self.UI.keys():
  139.             self.UI["board"].Hide()
  140.             self.UI["price"].Hide()
  141.             self.UI["select"].dropped = 0
  142.             self.UI["select"].ClearItems()
  143.             self.UI["nameEdit"].SetText("")
  144.             self.Days=0
  145.         ui.ScriptWindow.Hide(self)
  146.        
  147.     def Show(self):
  148.         self.UI["board"].SetTop()
  149.         self.UI["board"].Show()
  150.         self.UnLoad()
  151.         self.CreateList()
  152.         for i in xrange(len(constInfo.shop_cost))
  153.             item=constInfo.shop_cost[i]
  154.             name=uiScriptLocale.SHOP_CREATE_NORMAL
  155.             if item["time"]>0:
  156.                 name=str(item["time"])+" "
  157.                 if item["time"] == 1:
  158.                     if item["time_val"]==3600:
  159.                         name+=uiScriptLocale.SHOP_CREATE_HOUR
  160.                     else:
  161.                         name+=uiScriptLocale.SHOP_CREATE_DAY
  162.                 else:
  163.                     if item["time_val"]==86400:
  164.                         name+=uiScriptLocale.SHOP_CREATE_DAYS
  165.                     else:
  166.                         name+=uiScriptLocale.SHOP_CREATE_HOURS
  167.            
  168.             self.UI["select"].AppendItem(name,i+1)
  169.        
  170.         ui.ScriptWindow.Show(self)
  171.         self.UI["board"].Show()
  172.     def Load(self):
  173.         id=self.UI["select"].DropList.GetSelectedItem().value
  174.         if int(id) == 0:
  175.             print "unload"
  176.             self.UnLoad()
  177.             return
  178.         item = constInfo.shop_cost[id-1]
  179.         if item["price"]>0:
  180.             self.UI["price"].SetText(uiScriptLocale.SHOP_CREATE_PRICE+localeinfo.NumberToMoneyString(item["price"]))
  181.             self.UI["price"].Show()
  182.         else:
  183.             self.UI["price"].Show()
  184.     def UnLoad(self):
  185.         self.UI["price"].Hide()
  186.         self.UI["select"].Clear()  
  187.     def Clear(self):
  188.         self.UI["select"].Clear()
  189.     def PopupMessage(self,text):
  190.         pop = uiCommon.PopupDialog()
  191.         pop.SetText(text)
  192.         pop.SetAcceptEvent(self.__OnClosePopupDialog)
  193.         pop.Open()
  194.         self.pop = pop
  195.         self.pop.SetTop()
  196.        
  197. class DropDown(ui.Window):
  198.     dropped  = 0
  199.     dropstat = 0
  200.     last = 0
  201.     lastS = 0
  202.     maxh = 95
  203.     tt = ""
  204.     OnChange = None
  205.     class Item(ui.ListBoxEx.Item):
  206.         def __init__(self,parent, text,value=0):
  207.             ui.ListBoxEx.Item.__init__(self)
  208.  
  209.             self.textBox=ui.TextLine()
  210.             self.textBox.SetParent(self)
  211.             self.textBox.SetText(text)
  212.             # self.textBox.SetLimitWidth(parent.GetWidth()-132)
  213.             self.textBox.Show()
  214.             self.value = value
  215.         def GetValue(self):
  216.             return self.value
  217.         def __del__(self):
  218.             ui.ListBoxEx.Item.__del__(self)
  219.            
  220.     def __init__(self,parent,tt = "",down=1):
  221.         ui.Window.__init__(self,"TOP_MOST")
  222.         self.tt=tt
  223.         self.down = down
  224.         self.SetParentProxy(parent)
  225.         self.bg = ui.Bar("TOP_MOST")
  226.         self.bg.SetParent(self)
  227.         self.bg.SetPosition(0,0)
  228.         self.bg.SetColor(0xc0000000)
  229.         self.bg.OnMouseOverIn = self.bgMouseIn
  230.         self.bg.OnMouseOverOut = self.bgMouseOut
  231.         self.bg.OnMouseLeftButtonDown = self.ExpandMe
  232.         self.bg.Show()
  233.         self.act = ui.TextLine()
  234.         self.act.SetParent(self.bg)
  235.         self.act.SetPosition(4,2)
  236.         self.act.SetText(self.tt)
  237.         self.act.Show()
  238.         self.GetText = self.act.GetText
  239.        
  240.         self.Drop = ui.Bar("TOP_MOST")
  241.         self.Drop.SetParent(self.GetParentProxy())
  242.         self.Drop.SetPosition(0,21)
  243.         # self.Drop.SetSize(150,95)
  244.         self.Drop.SetSize(150,0)
  245.         # self.Drop.SetColor(0xc00a0a0a)
  246.         self.Drop.SetColor(0xff0a0a0a)
  247.        
  248.        
  249.         self.ScrollBar = ui.ThinScrollBar()
  250.         self.ScrollBar.SetParent(self.Drop)
  251.         self.ScrollBar.SetPosition(132,0)
  252.         # self.ScrollBar.SetScrollBarSize(95)
  253.         self.ScrollBar.SetScrollBarSize(0)
  254.         # self.ScrollBar.Show()
  255.        
  256.         self.DropList = ui.ListBoxEx()
  257.         self.DropList.SetParent(self.Drop)
  258.         self.DropList.itemHeight = 12
  259.         self.DropList.itemStep = 13
  260.         self.DropList.SetPosition(0,0)
  261.         # self.DropList.SetSize(132,self.maxh)
  262.         self.DropList.SetSize(132,13)
  263.         self.DropList.SetScrollBar(self.ScrollBar)
  264.         self.DropList.SetSelectEvent(self.SetTitle)
  265.         self.DropList.SetViewItemCount(0)
  266.         self.DropList.Show()
  267.         if self.tt != "":
  268.             self.AppendItemAndSelect(self.tt)
  269.         self.selected = self.DropList.GetSelectedItem()
  270.        
  271.            
  272.         self.SetSize(120,20)
  273.     def __del__(self):
  274.         ui.Window.__del__(self)
  275.     c = 1
  276.     def AppendItem(self,text,value=0):
  277.         self.c+=1  
  278.         self.DropList.AppendItem(self.Item(self,text,value))
  279.         self.maxh = min(95,13*self.c)
  280.         if self.c > 7:
  281.             self.ScrollBar.Show()
  282.            
  283.        
  284.     def AppendItemAndSelect(self,text,value=0):
  285.         self.DropList.AppendItem(self.Item(self,text,value))
  286.         self.DropList.SelectIndex(len(self.DropList.itemList)-1)
  287.        
  288.        
  289.     def ClearItems(self):
  290.         self.DropList.RemoveAllItems()
  291.         self.AppendItemAndSelect(self.tt)
  292.         self.act.SetText(self.tt)
  293.     def Clear(self):
  294.         self.DropList.SelectIndex(0)
  295.     def SelectByAffectId(self,id):
  296.         for x in self.DropList.itemList:
  297.             if x.value == id:
  298.                 self.DropList.SelectItem(x)
  299.                 break
  300.                
  301.     def SetTitle(self,item):
  302.         self.act.SetText(str(item.textBox.GetText()))
  303.         self.last = self.DropList.basePos
  304.         self.lastS = self.ScrollBar.GetPos()
  305.         self.dropped = 0
  306.         self.selected = item
  307.         if self.OnChange:
  308.             self.OnChange()
  309.         # self.Drop.Hide()
  310.        
  311.     def SetPosition(self,w,h):
  312.         ui.Window.SetPosition(self,w,h)
  313.         if self.down == 1:
  314.             self.Drop.SetPosition(w,h+21)
  315.         else:
  316.             self.Drop.SetPosition(w,h-self.Drop.GetHeight())
  317.        
  318.     def SetSize(self,w,h):
  319.         ui.Window.SetSize(self,w,h)
  320.         self.bg.SetSize(w,h)
  321.         self.Drop.SetSize(w,0)
  322.         self.DropList.SetSize(w-18,self.maxh)
  323.         for x in self.DropList.itemList:
  324.             x.SetSize(w-18,12)
  325.         self.ScrollBar.SetPosition(w-18,0)
  326.        
  327.        
  328.     def ExpandMe(self):
  329.         if self.dropped == 1:
  330.             # self.Drop.Hide()
  331.             self.dropped = 0
  332.         else:
  333.             # self.Drop.Show()
  334.             self.dropped = 1
  335.            
  336.     def OnUpdate(self):
  337.         iter = 6
  338.         if self.Drop.GetHeight() < 50:
  339.             self.ScrollBar.Hide()
  340.         else:
  341.             self.ScrollBar.Show()
  342.            
  343.         if self.dropped == 0 and self.dropstat == 1:
  344.             if self.Drop.GetHeight() <=0:
  345.                 self.dropstat = 0
  346.                 self.Drop.SetSize(self.Drop.GetWidth(),0)
  347.                 self.ScrollBar.SetScrollBarSize(self.Drop.GetHeight())
  348.                 self.Drop.Hide()
  349.             else:
  350.                 if self.Drop.GetHeight()-iter < 0:
  351.                     self.Drop.SetSize(self.Drop.GetWidth(),0)
  352.                 else:
  353.                     self.Drop.SetSize(self.Drop.GetWidth(),self.Drop.GetHeight()-iter)
  354.                     (w,h) = self.GetLocalPosition()
  355.                     self.SetPosition(w,h)
  356.                        
  357.                    
  358.                 self.ScrollBar.SetScrollBarSize(self.Drop.GetHeight())
  359.             self.DropList.SetViewItemCount(int(self.Drop.GetHeight()/13))
  360.             self.DropList.SetBasePos(self.last+1)
  361.             self.DropList.SetBasePos(self.last)
  362.         elif self.dropped == 1 and self.dropstat == 0:
  363.             self.Drop.Show()
  364.             self.SetTop()
  365.             if self.Drop.GetHeight() >=self.maxh:
  366.                 self.Drop.SetSize(self.Drop.GetWidth(),self.maxh)
  367.                 self.ScrollBar.SetScrollBarSize(self.maxh)
  368.                 self.dropstat = 1
  369.                 self.DropList.SetViewItemCount(7)
  370.                 self.ScrollBar.SetPos(self.lastS)
  371.             else:
  372.                 self.ScrollBar.SetScrollBarSize(self.Drop.GetHeight()+iter)
  373.                 self.Drop.SetSize(self.Drop.GetWidth(),self.Drop.GetHeight()+iter)
  374.                 (w,h) = self.GetLocalPosition()
  375.                 self.SetPosition(w,h)
  376.             self.DropList.SetViewItemCount(int(self.Drop.GetHeight()/13))
  377.             self.DropList.SetBasePos(self.last+1)
  378.             self.DropList.SetBasePos(self.last)
  379.        
  380.     ## BG Hover
  381.     def bgMouseIn(self):
  382.         self.bg.SetColor(0xc00a0a0a)
  383.     def bgMouseOut(self):
  384.         self.bg.SetColor(0xc0000000)
  385.  
  386. class ShopEditWindow(ui.ScriptWindow):
  387.  
  388.     def __init__(self):
  389.         ui.ScriptWindow.__init__(self)
  390.         self.items={}
  391.         self.Edit={}
  392.         self.pop=None
  393.         self.id=0
  394.         self.lastUpdate=0
  395.         self.priceInputBoard=None
  396.         self.__Load()
  397.  
  398.         self.tooltipItem = uiToolTip.ItemToolTip()
  399.         self.tooltipItem.Hide()
  400.        
  401.     def __del__(self):
  402.         ui.ScriptWindow.__del__(self)
  403.         self.Close()
  404.  
  405.     def __Load_LoadScript(self, fileName):
  406.         try:
  407.             pyScriptLoader = ui.PythonScriptLoader()
  408.             pyScriptLoader.LoadScriptFile(self, fileName)
  409.         except:
  410.             import exception
  411.             exception.Abort("ShopEditWindow.__Load_LoadScript")
  412.  
  413.     def __Load_BindObject(self):
  414.         try:
  415.             self.titleBar = self.GetChild("TitleBar")
  416.             self.titleName = self.GetChild("TitleName")
  417.             self.ItemSlot = self.GetChild("ItemSlot")
  418.             try:
  419.                 for key in ["BuyButton","SellButton","MiddleTab1","MiddleTab2","MiddleTab2","SmallTab1","SmallTab2","SmallTab3"]:
  420.                     self.GetChild(key).Hide()
  421.             except Exception:
  422.                 pass
  423.             self.CloseButton = self.GetChild("CloseButton")
  424.         except:
  425.             import exception
  426.             exception.Abort("StoneDialog.__Load_BindObject")
  427.            
  428.         self.CloseButton.SetText(uiScriptLocale.SHOP_EDIT_SHOP_CANCEL)
  429.         self.CloseButton.SetEvent(ui.__mem_func__(self.Close))
  430.         self.titleName.SetText(uiScriptLocale.SHOP_EDIT_SHOP_WINDOW)
  431.         self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
  432.         self.ItemSlot.SAFE_SetButtonEvent("LEFT", "EMPTY", self.OnSelectEmptySlot)
  433.         self.ItemSlot.SAFE_SetButtonEvent("LEFT", "EXIST", self.OnSelectItemSlot)
  434.         self.ItemSlot.SAFE_SetButtonEvent("RIGHT", "EXIST", self.UnselectItemSlot)
  435.         self.ItemSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInItem))
  436.         self.ItemSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
  437.    
  438.         self.Edit["Board"] = ui.BoardWithTitleBar()
  439.         self.Edit["Board"].SetSize(150, 100)
  440.         self.Edit["Board"].AddFlag("movable")
  441.         self.Edit["Board"].SetPosition(0,0)
  442.         self.Edit["Board"].SetTitleName(uiScriptLocale.SHOP_SELECT)
  443.         self.Edit["Board"].SetCloseEvent(self.CloseEdit)
  444.         self.Edit["Board"].Show()
  445.        
  446.        
  447.  
  448.  
  449.         self.Edit["ChangePrice"] = ui.Button()
  450.         self.Edit["ChangePrice"].SetParent(self.Edit["Board"])
  451.         self.Edit["ChangePrice"].SetPosition(30,35)
  452.         self.Edit["ChangePrice"].SetUpVisual('d:/ymir work/ui/public/Large_button_01.sub')
  453.         self.Edit["ChangePrice"].SetOverVisual('d:/ymir work/ui/public/Large_button_02.sub')
  454.         self.Edit["ChangePrice"].SetDownVisual('d:/ymir work/ui/public/Large_button_03.sub')
  455.         self.Edit["ChangePrice"].SetText(uiScriptLocale.SHOP_CHANGE_PRICE)
  456.         self.Edit["ChangePrice"].Show()
  457.        
  458.         self.Edit["Remove"] = ui.Button()
  459.         self.Edit["Remove"].SetParent(self.Edit["Board"])
  460.         self.Edit["Remove"].SetPosition(30,65)
  461.         self.Edit["Remove"].SetUpVisual('d:/ymir work/ui/public/Large_button_01.sub')
  462.         self.Edit["Remove"].SetOverVisual('d:/ymir work/ui/public/Large_button_02.sub')
  463.         self.Edit["Remove"].SetDownVisual('d:/ymir work/ui/public/Large_button_03.sub')
  464.         self.Edit["Remove"].SetText(uiScriptLocale.SHOP_REMOVE_ITEM)
  465.         self.Edit["Remove"].Show()
  466.     def __Load(self):
  467.         self.__Load_LoadScript("UIScript/ShopDialog.py")
  468.         self.__Load_BindObject()
  469.     def CloseEdit(self):
  470.         self.Edit["Board"].Hide()
  471.     def Show(self,id):
  472.         if self.IsShow():
  473.             self.Close()
  474.         else:
  475.             ui.ScriptWindow.Show(self)
  476.             net.SendChatPacket("/refresh_shop_items "+id)
  477.             self.id=id
  478.         self.Refresh()
  479.            
  480.     def OnPressEscapeKey(self):
  481.         self.Close()
  482.         return TRUE
  483.     def __OnClosePopupDialog(self):
  484.         if self.pop != None:
  485.             if self.pop.IsShow():
  486.                 self.pop.Hide()
  487.         self.pop = None
  488.     def __GetRealIndex(self, i):
  489.         return shop.SHOP_SLOT_COUNT + i
  490.        
  491.     def Close(self):
  492.         if None != self.tooltipItem:
  493.             self.tooltipItem.HideToolTip()
  494.         self.CancelInputPrice()
  495.         self.__OnClosePopupDialog()
  496.         self.Edit["Board"].Hide()
  497.         self.Hide()
  498.         return TRUE
  499.     def Clear(self):
  500.         self.items={}
  501.         self.CancelInputPrice()
  502.         self.__OnClosePopupDialog()
  503.         self.Edit["Board"].Hide()
  504.         self.Refresh()
  505.     def GetItemCount(self,slot):
  506.         try:
  507.             return int(self.items[int(slot)]["count"])
  508.         except KeyError:
  509.             return 0
  510.        
  511.     def GetItemID(self,slot):
  512.         try:
  513.             return int(self.items[int(slot)]["vnum"])
  514.         except KeyError:
  515.             return 0
  516.        
  517.     def AddItem(self,slot,data):
  518.         self.items[int(slot)]=data
  519.         self.Refresh()
  520.     def Refresh(self):
  521.         self.CancelInputPrice()
  522.         self.__OnClosePopupDialog()
  523.         self.Edit["Board"].Hide()
  524.         setItemID=self.ItemSlot.SetItemSlot
  525.         for i in xrange(shop.SHOP_SLOT_COUNT):
  526.             vnum=self.GetItemID(i)
  527.             itemCount = self.GetItemCount(i)
  528.            
  529.             setItemID(i, vnum, itemCount)
  530.  
  531.         wndMgr.RefreshSlot(self.ItemSlot.GetWindowHandle())
  532.         self.ItemSlot.RefreshSlot()
  533.  
  534.     def __ShowToolTip(self, slot):
  535.         if self.tooltipItem:
  536.             self.tooltipItem.ClearToolTip()
  537.             if int(slot) in self.items.keys():
  538.                 it=self.items[int(slot)]
  539.                 if it.get("sourceSlot",-1)!=-1:
  540.                     self.tooltipItem.SetEditPrivateShopItem(int(it["sourceWindow"]),int(it["sourceSlot"]),it["price"])
  541.                 else:
  542.                     self.tooltipItem.AppendSellingPrice(it["price"])
  543.                     self.tooltipItem.AddItemData(int(it["vnum"]),it["sockets"],it["attrs"])
  544.             else:
  545.                 self.tooltipItem.HideToolTip()
  546.            
  547.     def OverInItem(self, slotIndex):
  548.         #slotIndex = self.__GetRealIndex(slotIndex)
  549.         self.ItemSlot.SetUsableItem(FALSE)
  550.         self.__ShowToolTip(slotIndex)
  551.  
  552.     def OverOutItem(self):
  553.         self.ItemSlot.SetUsableItem(FALSE)
  554.         if self.tooltipItem:
  555.             self.tooltipItem.HideToolTip()
  556.     def OnSelectEmptySlot(self, selectedSlotPos):
  557.  
  558.         isAttached = mouseModule.mouseController.isAttached()
  559.         if isAttached:
  560.             attachedSlotType = mouseModule.mouseController.GetAttachedType()
  561.             attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  562.             mouseModule.mouseController.DeattachObject()
  563.  
  564.             if player.SLOT_TYPE_INVENTORY != attachedSlotType and player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedSlotType:
  565.                 return
  566.             attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
  567.             count = player.GetItemCount(attachedInvenType, attachedSlotPos)
  568.                
  569.             itemVNum = player.GetItemIndex(attachedInvenType, attachedSlotPos)
  570.             item.SelectItem(itemVNum)
  571.  
  572.            
  573.            
  574.             # if item.IsAntiFlag(item.ANTIFLAG_GIVE) or item.IsAntiFlag(item.ANTIFLAG_MYSHOP):
  575.                 # chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.PRIVATE_SHOP_CANNOT_SELL_ITEM)
  576.                 # return
  577.            
  578.             priceInputBoard = uiCommon.MoneyInputDialog()
  579.             priceInputBoard.SetTitle(localeinfo.PRIVATE_SHOP_INPUT_PRICE_DIALOG_TITLE)
  580.             priceInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputPrice))
  581.             priceInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrice))
  582.             priceInputBoard.SetMaxLength(16)
  583.             priceInputBoard.Open()
  584.            
  585.             #self.ItemSlot.ActivateSlot(int(selectedSlotPos))
  586.            
  587.             self.priceInputBoard = priceInputBoard
  588.             self.priceInputBoard.itemVNum = itemVNum
  589.             self.priceInputBoard.sourceWindowType = attachedInvenType
  590.             self.priceInputBoard.sourceSlotPos = attachedSlotPos
  591.             self.priceInputBoard.targetSlotPos = selectedSlotPos
  592.     def UnselectItemSlot(self,selectedSlotPos):
  593.         self.Edit["Board"].Hide()
  594.         #self.ItemSlot.DeactivateSlot(int(selectedSlotPos))
  595.         self.CancelInputPrice()
  596.         self.__OnClosePopupDialog()
  597.     def OnSelectItemSlot(self, selectedSlotPos):
  598.         isAttached = mouseModule.mouseController.isAttached()
  599.         #selectedSlotPos = self.__GetRealIndex(selectedSlotPos)
  600.         if isAttached:
  601.             snd.PlaySound("sound/ui/loginfail.wav")
  602.             #self.ItemSlot.DeactivateSlot(int(selectedSlotPos))
  603.             mouseModule.mouseController.DeattachObject()
  604.             self.Edit["Board"].Hide()
  605.         else:
  606.             if not int(selectedSlotPos) in self.items.keys():
  607.                 self.Edit["Board"].Hide()
  608.                 return
  609.  
  610.             snd.PlaySound("sound/ui/drop.wav")
  611.             #self.ItemSlot.ActivateSlot(selectedSlotPos)
  612.             self.EditItem(selectedSlotPos)
  613.  
  614.     def AcceptInputPrice(self):
  615.  
  616.         if not self.priceInputBoard:
  617.             return True
  618.  
  619.         text = self.priceInputBoard.GetText()
  620.  
  621.         if not text:
  622.             return True
  623.  
  624.         if not text.isdigit():
  625.             return True
  626.  
  627.         if int(text) <= 0:
  628.             return True
  629.        
  630.         attachedInvenType = self.priceInputBoard.sourceWindowType
  631.         sourceSlotPos = self.priceInputBoard.sourceSlotPos
  632.         targetSlotPos = self.priceInputBoard.targetSlotPos
  633.         price = int(self.priceInputBoard.GetText())
  634.         count = player.GetItemCount(attachedInvenType, sourceSlotPos)
  635.         vnum = player.GetItemIndex(attachedInvenType, sourceSlotPos)
  636.         self.items[int(targetSlotPos)]={
  637.             "vnum":int(vnum),
  638.             "count":int(count),
  639.             "price":int(price),
  640.             "sourceSlot":sourceSlotPos,
  641.             "sourceWindow":attachedInvenType
  642.         }
  643.         snd.PlaySound("sound/ui/pick.wav")
  644.         #self.ItemSlot.DeactivateSlot(targetSlotPos)
  645.         net.SendChatPacket("/update_shop_item add|%d|%d|%d|%d|%s"%(int(self.id),int(targetSlotPos),int(sourceSlotPos),int(attachedInvenType),str(price)))
  646.         self.Refresh()     
  647.  
  648.         #####
  649.  
  650.         self.priceInputBoard = None
  651.         return True
  652.  
  653.     def CancelInputPrice(self):
  654.         self.priceInputBoard = None
  655.         return True
  656.     def EditItem(self,slot):
  657.         self.Edit["ChangePrice"].SetEvent(ui.__mem_func__(self.EditPrice),int(slot))
  658.         self.Edit["Remove"].SetEvent(ui.__mem_func__(self.RemoveItem),int(slot))
  659.         (w,h)=(170,328)
  660.         (x,y)=self.GetLocalPosition()
  661.         self.Edit["Board"].SetPosition((x-w),(y+(h/2)))
  662.         self.Edit["Board"].Show()
  663.     def EditPrice(self,slot):
  664.         self.priceInputBoard = uiCommon.MoneyInputDialog()
  665.         self.priceInputBoard.SetTitle(localeinfo.PRIVATE_SHOP_INPUT_PRICE_DIALOG_TITLE)
  666.         self.priceInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptEditPrice))
  667.         self.priceInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrice))
  668.         self.priceInputBoard.SetMaxLength(16)
  669.         self.priceInputBoard.Open()
  670.         self.priceInputBoard.targetSlotPos = int(slot)
  671.     def RemoveItem(self,slot):
  672.         self.pop = uiCommon.QuestionDialog()
  673.         self.pop.SetText(uiScriptLocale.SHOP_REMOVE_ITEM_QUEST)
  674.         self.pop.SetAcceptEvent(lambda arg1=str(slot): self.AcceptRemoveItem(arg1))
  675.         self.pop.SetCancelEvent(ui.__mem_func__(self.__OnClosePopupDialog))
  676.         self.pop.Open()
  677.     def AcceptRemoveItem(self,slot):
  678.         if int(slot) in self.items.keys():
  679.             snd.PlaySound("sound/ui/drop.wav")
  680.             net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)]["id"]))
  681.             #self.ItemSlot.DeactivateSlot(int(slot))
  682.             del self.items[int(slot)]
  683.         self.Refresh() 
  684.        
  685.         self.__OnClosePopupDialog()
  686.     def AcceptEditPrice(self):
  687.  
  688.         if not self.priceInputBoard:
  689.             return True
  690.  
  691.         text = self.priceInputBoard.GetText()
  692.  
  693.         if not text:
  694.             return True
  695.  
  696.         if not text.isdigit():
  697.             return True
  698.  
  699.         if int(text) <= 0:
  700.             return True
  701.        
  702.         targetSlotPos = self.priceInputBoard.targetSlotPos
  703.         price = int(self.priceInputBoard.GetText())
  704.         #self.ItemSlot.DeactivateSlot(int(targetSlotPos))
  705.         self.items[int(targetSlotPos)]["price"]=price
  706.         snd.PlaySound("sound/ui/drop.wav")
  707.         net.SendChatPacket("/update_shop_item price|"+str(self.id)+"|"+str(self.items[int(targetSlotPos)]["id"])+"|"+str(price))
  708.         self.Refresh() 
  709.         self.priceInputBoard = None
  710.         return True
  711.     # def OnUpdate(self):
  712.         # if self.lastUpdate < app.GetGlobalTime():
  713.             # self.lastUpdate=app.GetGlobalTime()+10000
  714.             # if int(self.id)>0:
  715.                 # net.SendChatPacket("/refresh_shop_items "+str(self.id))  
  716. class ShopDialog(ui.ScriptWindow):
  717.  
  718.     Edit={}
  719.     UI={}
  720.     pop=None
  721.     uiNewShopCreate = ShopDialogCreate()
  722.     uiNewShopCreate.Hide()
  723.     uiNewShopEdit = ShopEditWindow()
  724.     uiNewShopEdit.Close()
  725.     tooltip = uiToolTip.ToolTip(220)
  726.     tooltip.Hide() 
  727.     BoardHeight=40
  728.     CurrentEdit=0
  729.     EditBoardY=35
  730.     lastUpdate=0
  731.     def __init__(self):
  732.         ui.ScriptWindow.__init__(self)
  733.         self.LoadDialog()
  734.     def __del__(self):
  735.         ui.ScriptWindow.__del__(self)
  736.  
  737.     def LoadDialog(self):
  738.         self.UI["board"]=ui.BoardWithTitleBar()
  739.         self.UI["board"].SetParent(self)
  740.         self.UI["board"].SetSize(200, self.BoardHeight)
  741.         self.UI["board"].SetTitleName(uiScriptLocale.SHOP_WINDOW_NAME)
  742.         self.UI["board"].SetCloseEvent(self.Close)
  743.         self.UI["board"].Show()
  744.         self.UI["shops"]={}    
  745.        
  746.         self.Edit["Board"] = ui.BoardWithTitleBar()
  747.         self.Edit["Board"].SetParent(self)
  748.         self.Edit["Board"].SetSize(150, 100)
  749.         if POSITION_FIX:
  750.             self.Edit["Board"].SetPosition(250,0)
  751.         else:
  752.             self.Edit["Board"].SetPosition(220,0)
  753.         self.Edit["Board"].SetTitleName(uiScriptLocale.SHOP_SELECT)
  754.         self.Edit["Board"].SetCloseEvent(self.CloseEdit)
  755.         self.Edit["Board"].Hide()  
  756.  
  757.         self.SetCenterPosition()
  758.         self.AddFlag("movable")
  759.         self.UpdateSize()
  760.     def AddEditOption(self,name,text,func):
  761.         self.Edit[name] = ui.Button()
  762.         self.Edit[name].SetParent(self.Edit["Board"])
  763.         self.Edit[name].SetPosition(30,self.EditBoardY)
  764.         self.Edit[name].SetUpVisual('d:/ymir work/ui/public/Large_button_01.sub')
  765.         self.Edit[name].SetOverVisual('d:/ymir work/ui/public/Large_button_02.sub')
  766.         self.Edit[name].SetDownVisual('d:/ymir work/ui/public/Large_button_03.sub')
  767.         self.Edit[name].SetText(text)
  768.         self.Edit[name].Show()
  769.         self.EditBoardY+=30
  770.         self.Edit["Board"].SetSize(150, self.EditBoardY)
  771.         self.Edit[name].SetEvent(func)
  772.         self.UpdateSize()
  773.     def CloseEdit(self):
  774.         if "Board" in self.Edit.keys():
  775.             self.Edit["Board"].Hide()
  776.         self.CurrentEdit=0
  777.        
  778.     def Load(self,data):
  779.         title=data["name"]
  780.         if len(title) > 22:
  781.             title = title[:19] + "..."
  782.         gui={}
  783.         gui["nameTextImage"] = ui.MakeImageBox(self.UI["board"], "d:/ymir work/ui/public/Parameter_Slot_04.sub", 10, self.BoardHeight)
  784.         gui["nameTextImage"].SAFE_SetStringEvent("MOUSE_OVER_IN", lambda arg=data: self.__ShowToolTip(arg),TRUE)
  785.         gui["nameTextImage"].SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideItemToolTip)
  786.         gui["name"] = ui.MakeTextLine(gui["nameTextImage"])
  787.         gui["name"].SetWindowHorizontalAlignCenter()
  788.         gui["name"].SetHorizontalAlignCenter()
  789.         gui["name"].SetText(title) 
  790.        
  791.         gui["manage"] = ui.MakeButton(self.UI["board"],130, self.BoardHeight,"","d:/ymir work/ui/public/","middle_Button_01.sub","middle_Button_02.sub","middle_Button_03.sub")
  792.         gui["manage"].SetText(uiScriptLocale.SHOP_MANAGE)
  793.         gui["manage"].SetEvent(ui.__mem_func__(self.ManageShop),data)
  794.         gui["manage"].Show()
  795.         if self.CurrentEdit==data["id"]:
  796.             self.ManageShop(data,1)
  797.         gui["data"]=data
  798.         self.UI["shops"][str(data["id"])]=gui
  799.         self.BoardHeight+=30
  800.         self.UpdateSize()
  801.        
  802.     def __OnClosePopupDialog(self):
  803.         if self.pop != None:
  804.             if self.pop.IsShow():
  805.                 self.pop.Hide()
  806.         self.pop = None
  807.        
  808.     def ManageShop(self,data,force=0):
  809.         self.EditBoardY=35
  810.         self.AddEditOption("change_name",uiScriptLocale.SHOP_CHANGE_NAME,lambda arg1=data: self.OnChangeButtonClick(arg1))
  811.         self.AddEditOption("get_yang",uiScriptLocale.SHOP_GET_YANG,lambda arg1=data: self.GetShopYang(arg1))
  812.         self.AddEditOption("edit",uiScriptLocale.SHOP_EDIT,lambda arg1=data["id"]: self.OnEditButtonClick(arg1))
  813.         self.AddEditOption("close",uiScriptLocale.SHOP_CLOSE,lambda arg1=data: self.CloseShop(arg1))
  814.         if self.Edit["Board"].IsShow() and self.CurrentEdit==data["id"] and force==0:
  815.             self.Edit["Board"].Hide()
  816.             self.CurrentEdit=0
  817.         else:
  818.             title=data["name"]
  819.             if len(title) > 22:
  820.                 title = title[:19] + "..."
  821.             self.Edit["Board"].SetTitleName(title)
  822.             self.Edit["Board"].Show()
  823.             self.CurrentEdit=data["id"]
  824.  
  825.     def UpdateSize(self):
  826.         Y=25
  827.         if POSITION_FIX:
  828.             Y=45
  829.         self.UI["create_button"] = ui.MakeButton(self.UI["board"],10, self.UI["board"].GetHeight()-Y,"","d:/ymir work/ui/public/","Xlarge_Button_01.sub","Xlarge_Button_02.sub","Xlarge_Button_03.sub")
  830.         self.UI["create_button"].SetText(uiScriptLocale.SHOP_OPEN)
  831.         self.UI["create_button"].SetEvent(lambda : self.CreateShop())
  832.         self.UI["create_button"].Show()
  833.         if POSITION_FIX:
  834.             self.UI["board"].SetSize(200, self.BoardHeight+55)
  835.         else:
  836.             self.UI["board"].SetSize(200, self.BoardHeight+35)
  837.         if self.BoardHeight < self.EditBoardY:
  838.             self.SetSize(400, self.EditBoardY+50)
  839.         else:      
  840.             self.SetSize(400, self.BoardHeight+60) 
  841.        
  842.     def CreateShop(self):
  843.         self.Hide();
  844.         self.uiNewShopCreate.Show()
  845.        
  846.     def CloseShop(self,shop):
  847.         self.pop = uiCommon.QuestionDialog()
  848.         self.pop.SetText(uiScriptLocale.SHOP_CLOSE_QUEST%(shop["name"]))
  849.         self.pop.SetAcceptEvent(lambda arg1=str(shop["id"]): self.OnCloseShop(arg1))
  850.         self.pop.SetCancelEvent(ui.__mem_func__(self.__OnClosePopupDialog))
  851.         self.pop.Open()
  852.        
  853.     def OnCloseShop(self,id):
  854.         self.__OnClosePopupDialog()
  855.         net.SendChatPacket("/close_shop %d" %(int(id)))
  856.         if len(self.UI["shops"].keys())==1:
  857.             self.Close()
  858.        
  859.     def GetShopYang(self,shop):
  860.         if int(shop["gold"]) <=0:
  861.             self.PopupMessage(uiScriptLocale.SHOP_NOT_EARNED_YANG)
  862.             return
  863.         self.pop = uiCommon.QuestionDialog()
  864.         self.pop.SetText(uiScriptLocale.SHOP_YANG_QUEST%(localeinfo.NumberToMoneyString(shop["gold"]),shop["name"]))
  865.         self.pop.SetAcceptEvent(lambda arg1=str(shop["id"]): self.OnGetYang(arg1))
  866.         self.pop.SetCancelEvent(ui.__mem_func__(self.__OnClosePopupDialog))
  867.         self.pop.Open()
  868.     def AddItem(self,slot,data):
  869.         self.uiNewShopEdit.AddItem(slot,data)
  870.     def ClearItems(self):
  871.         self.uiNewShopEdit.Clear()
  872.     def OnGetYang(self,id):
  873.         self.__OnClosePopupDialog()
  874.         net.SendChatPacket("/shop_yang %d" %(int(id)))
  875.    
  876.     def OnChangeButtonClick(self,shop):
  877.         inputDialog = uiCommon.InputDialog()
  878.         inputDialog.SetTitle(uiScriptLocale.SHOP_ENTER_NEW_NAME)
  879.         inputDialog.SetMaxLength(32)
  880.         inputDialog.SetAcceptEvent(lambda arg1=str(shop["id"]): self.OnChangeName(arg1))
  881.         inputDialog.SetCancelEvent(ui.__mem_func__(self.CloseInputNameDialog))
  882.         inputDialog.Open()
  883.  
  884.         self.inputDialog = inputDialog
  885.  
  886.     def CloseInputNameDialog(self):
  887.         self.inputDialog = None
  888.  
  889.     def OnChangeName(self,id):
  890.         if not self.inputDialog:
  891.             return
  892.         name=self.inputDialog.GetText()
  893.         if not len(name):
  894.             return
  895.         name=name.replace(" ","\\")
  896.         net.SendChatPacket("/shop_name %d %s" %(int(id),name))
  897.         self.CloseInputNameDialog()
  898.  
  899.     def Destroy(self):
  900.         self.Hide()
  901.         self.__OnClosePopupDialog()
  902.         self.UI={}
  903.         self.wndPopupDialog = None
  904.         self.inputDialog = None
  905.         if self.uiNewShopEdit:
  906.             self.uiNewShopEdit.Close()
  907.         self.uiNewShopEdit = None
  908.     def OnPressEscapeKey(self):
  909.         self.Hide()
  910.     def Hide(self):
  911.         self.CloseEdit()
  912.         self.__OnClosePopupDialog()
  913.         if self.uiNewShopEdit:
  914.             self.uiNewShopEdit.Close()
  915.         self.__HideItemToolTip()
  916.         ui.ScriptWindow.Hide(self)
  917.     def Close(self):
  918.         self.Hide()
  919.        
  920.     def __ShowToolTip(self,shop):
  921.         if self.tooltip:
  922.             self.tooltip.ClearToolTip()
  923.             self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_INFORMATION+str(shop["name"]), titleColor)
  924.             self.tooltip.AppendSpace(5)
  925.             self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_EARNED_YANG+str(localeinfo.NumberToMoneyString((shop["gold"]))), POSITIVE_COLOR)   
  926.             self.tooltip.AppendSpace(5)
  927.             self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_REST_ITEMS+str(int(shop["sold"])), POSITIVE_COLOR) 
  928.             self.tooltip.AppendSpace(5)
  929.             self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_SOLD_ITEMS+str(shop["items"]), POSITIVE_COLOR) 
  930.             self.tooltip.AppendSpace(5)
  931.             self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_TIME_TO_CLOSE+str(localeinfo.SecondToDHM(int(shop["time"])-int(time.time()))), NEGATIVE_COLOR) 
  932.             self.tooltip.AppendSpace(5)
  933.             self.tooltip.ShowToolTip()
  934.        
  935.    
  936.     def __HideItemToolTip(self):
  937.         if self.tooltip:
  938.             self.tooltip.HideToolTip()
  939.            
  940.     def OnEditButtonClick(self,id):
  941.         if self.uiNewShopEdit.IsShow():
  942.             self.uiNewShopEdit.Close()
  943.         else:
  944.             self.uiNewShopEdit.Show(str(id))
  945.     def Show(self):
  946.         if len(self.UI["shops"].keys())==0:
  947.             self.CreateShop()
  948.         else:
  949.             ui.ScriptWindow.Show(self)
  950.     def HideAll(self):
  951.         self.BoardHeight=40
  952.         for key,item in self.UI["shops"].iteritems():      
  953.             for k,v in item.iteritems():
  954.                 if k !="data":
  955.                     v.Hide()
  956.             self.UI["shops"][key]["data"]={}
  957.         self.UI["shops"]={}
  958.     def PopupMessage(self, msg):
  959.         self.wndPopupDialog = uiCommon.PopupDialog()
  960.         self.wndPopupDialog.SetText(msg)
  961.         self.wndPopupDialog.Open()
  962.     def OnUpdate(self):
  963.         if self.lastUpdate < app.GetGlobalTime():
  964.             self.lastUpdate=app.GetGlobalTime()+900
  965.             if "shops" in self.UI.keys():
  966.                 if str(self.CurrentEdit) not in self.UI["shops"].keys():
  967.                     self.CloseEdit()
  968.         if "create_button" in self.UI.keys():
  969.             if POSITION_FIX:
  970.                 self.UI["create_button"].SetPosition(10, self.UI["board"].GetHeight()-45)
  971.             else:
  972.                 self.UI["create_button"].SetPosition(10, self.UI["board"].GetHeight()-40)
  973.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement