Advertisement
xabugaspt

Untitled

Jun 19th, 2018
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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. wndMgr.RefreshSlot(self.ItemSlot.GetWindowHandle())
  531. self.ItemSlot.RefreshSlot()
  532.  
  533. def __ShowToolTip(self, slot):
  534. if self.tooltipItem:
  535. self.tooltipItem.ClearToolTip()
  536. if int(slot) in self.items.keys():
  537. it=self.items[int(slot)]
  538. if it.get("sourceSlot",-1)!=-1:
  539. self.tooltipItem.SetEditPrivateShopItem(int(it["sourceWindow"]),int(it["sourceSlot"]),it["price"])
  540. else:
  541. self.tooltipItem.AppendSellingPrice(it["price"])
  542. self.tooltipItem.AddItemData(int(it["vnum"]),it["sockets"],it["attrs"])
  543. else:
  544. self.tooltipItem.HideToolTip()
  545.  
  546. def OverInItem(self, slotIndex):
  547. #slotIndex = self.__GetRealIndex(slotIndex)
  548. self.ItemSlot.SetUsableItem(FALSE)
  549. self.__ShowToolTip(slotIndex)
  550.  
  551. def OverOutItem(self):
  552. self.ItemSlot.SetUsableItem(FALSE)
  553. if self.tooltipItem:
  554. self.tooltipItem.HideToolTip()
  555. def OnSelectEmptySlot(self, selectedSlotPos):
  556.  
  557. isAttached = mouseModule.mouseController.isAttached()
  558. if isAttached:
  559. attachedSlotType = mouseModule.mouseController.GetAttachedType()
  560. attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
  561. mouseModule.mouseController.DeattachObject()
  562.  
  563. if player.SLOT_TYPE_INVENTORY != attachedSlotType and player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedSlotType:
  564. return
  565. attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
  566. count = player.GetItemCount(attachedInvenType, attachedSlotPos)
  567.  
  568. itemVNum = player.GetItemIndex(attachedInvenType, attachedSlotPos)
  569. item.SelectItem(itemVNum)
  570.  
  571.  
  572.  
  573. if item.IsAntiFlag(item.ANTIFLAG_GIVE) or item.IsAntiFlag(item.ANTIFLAG_MYSHOP):
  574. chat.AppendChat(chat.CHAT_TYPE_INFO, localeinfo.PRIVATE_SHOP_CANNOT_SELL_ITEM)
  575. return
  576.  
  577. priceInputBoard = uiCommon.MoneyInputDialog()
  578. priceInputBoard.SetTitle(localeinfo.PRIVATE_SHOP_INPUT_PRICE_DIALOG_TITLE)
  579. priceInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputPrice))
  580. priceInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrice))
  581. priceInputBoard.SetMaxLength(16)
  582. priceInputBoard.Open()
  583.  
  584. #self.ItemSlot.ActivateSlot(int(selectedSlotPos))
  585.  
  586. self.priceInputBoard = priceInputBoard
  587. self.priceInputBoard.itemVNum = itemVNum
  588. self.priceInputBoard.sourceWindowType = attachedInvenType
  589. self.priceInputBoard.sourceSlotPos = attachedSlotPos
  590. self.priceInputBoard.targetSlotPos = selectedSlotPos
  591. def UnselectItemSlot(self,selectedSlotPos):
  592. self.Edit["Board"].Hide()
  593. #self.ItemSlot.DeactivateSlot(int(selectedSlotPos))
  594. self.CancelInputPrice()
  595. self.__OnClosePopupDialog()
  596. def OnSelectItemSlot(self, selectedSlotPos):
  597. isAttached = mouseModule.mouseController.isAttached()
  598. #selectedSlotPos = self.__GetRealIndex(selectedSlotPos)
  599. if isAttached:
  600. snd.PlaySound("sound/ui/loginfail.wav")
  601. #self.ItemSlot.DeactivateSlot(int(selectedSlotPos))
  602. mouseModule.mouseController.DeattachObject()
  603. self.Edit["Board"].Hide()
  604. else:
  605. if not int(selectedSlotPos) in self.items.keys():
  606. self.Edit["Board"].Hide()
  607. return
  608.  
  609. snd.PlaySound("sound/ui/drop.wav")
  610. #self.ItemSlot.ActivateSlot(selectedSlotPos)
  611. self.EditItem(selectedSlotPos)
  612.  
  613. def AcceptInputPrice(self):
  614.  
  615. if not self.priceInputBoard:
  616. return True
  617.  
  618. text = self.priceInputBoard.GetText()
  619.  
  620. if not text:
  621. return True
  622.  
  623. if not text.isdigit():
  624. return True
  625.  
  626. if int(text) <= 0:
  627. return True
  628.  
  629. attachedInvenType = self.priceInputBoard.sourceWindowType
  630. sourceSlotPos = self.priceInputBoard.sourceSlotPos
  631. targetSlotPos = self.priceInputBoard.targetSlotPos
  632. price = int(self.priceInputBoard.GetText())
  633. count = player.GetItemCount(attachedInvenType, sourceSlotPos)
  634. vnum = player.GetItemIndex(attachedInvenType, sourceSlotPos)
  635. self.items[int(targetSlotPos)]={
  636. "vnum":int(vnum),
  637. "count":int(count),
  638. "price":int(price),
  639. "sourceSlot":sourceSlotPos,
  640. "sourceWindow":attachedInvenType
  641. }
  642. snd.PlaySound("sound/ui/pick.wav")
  643. #self.ItemSlot.DeactivateSlot(targetSlotPos)
  644. net.SendChatPacket("/update_shop_item add|%d|%d|%d|%d|%s"%(int(self.id),int(targetSlotPos),int(sourceSlotPos),int(attachedInvenType),str(price)))
  645. self.Refresh()
  646.  
  647. #####
  648.  
  649. self.priceInputBoard = None
  650. return True
  651.  
  652. def CancelInputPrice(self):
  653. self.priceInputBoard = None
  654. return True
  655. def EditItem(self,slot):
  656. self.Edit["ChangePrice"].SetEvent(ui.__mem_func__(self.EditPrice),int(slot))
  657. self.Edit["Remove"].SetEvent(ui.__mem_func__(self.RemoveItem),int(slot))
  658. (w,h)=(170,328)
  659. (x,y)=self.GetLocalPosition()
  660. self.Edit["Board"].SetPosition((x-w),(y+(h/2)))
  661. self.Edit["Board"].Show()
  662. def EditPrice(self,slot):
  663. self.priceInputBoard = uiCommon.MoneyInputDialog()
  664. self.priceInputBoard.SetTitle(localeinfo.PRIVATE_SHOP_INPUT_PRICE_DIALOG_TITLE)
  665. self.priceInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptEditPrice))
  666. self.priceInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrice))
  667. self.priceInputBoard.SetMaxLength(16)
  668. self.priceInputBoard.Open()
  669. self.priceInputBoard.targetSlotPos = int(slot)
  670. def RemoveItem(self,slot):
  671. self.pop = uiCommon.QuestionDialog()
  672. self.pop.SetText(uiScriptLocale.SHOP_REMOVE_ITEM_QUEST)
  673. self.pop.SetAcceptEvent(lambda arg1=str(slot): self.AcceptRemoveItem(arg1))
  674. self.pop.SetCancelEvent(ui.__mem_func__(self.__OnClosePopupDialog))
  675. self.pop.Open()
  676. def AcceptRemoveItem(self,slot):
  677. if int(slot) in self.items.keys():
  678. snd.PlaySound("sound/ui/drop.wav")
  679. net.SendChatPacket("/update_shop_item remove|"+str(self.id)+"|"+str(self.items[int(slot)]["id"]))
  680. #self.ItemSlot.DeactivateSlot(int(slot))
  681. del self.items[int(slot)]
  682. self.Refresh()
  683.  
  684. self.__OnClosePopupDialog()
  685. def AcceptEditPrice(self):
  686.  
  687. if not self.priceInputBoard:
  688. return True
  689.  
  690. text = self.priceInputBoard.GetText()
  691.  
  692. if not text:
  693. return True
  694.  
  695. if not text.isdigit():
  696. return True
  697.  
  698. if int(text) <= 0:
  699. return True
  700.  
  701. targetSlotPos = self.priceInputBoard.targetSlotPos
  702. price = int(self.priceInputBoard.GetText())
  703. #self.ItemSlot.DeactivateSlot(int(targetSlotPos))
  704. self.items[int(targetSlotPos)]["price"]=price
  705. snd.PlaySound("sound/ui/drop.wav")
  706. net.SendChatPacket("/update_shop_item price|"+str(self.id)+"|"+str(self.items[int(targetSlotPos)]["id"])+"|"+str(price))
  707. self.Refresh()
  708. self.priceInputBoard = None
  709. return True
  710. # def OnUpdate(self):
  711. # if self.lastUpdate < app.GetGlobalTime():
  712. # self.lastUpdate=app.GetGlobalTime()+10000
  713. # if int(self.id)>0:
  714. # net.SendChatPacket("/refresh_shop_items "+str(self.id))
  715. class ShopDialog(ui.ScriptWindow):
  716.  
  717. Edit={}
  718. UI={}
  719. pop=None
  720. uiNewShopCreate = ShopDialogCreate()
  721. uiNewShopCreate.Hide()
  722. uiNewShopEdit = ShopEditWindow()
  723. uiNewShopEdit.Close()
  724. tooltip = uiToolTip.ToolTip(220)
  725. tooltip.Hide()
  726. BoardHeight=40
  727. CurrentEdit=0
  728. EditBoardY=35
  729. lastUpdate=0
  730. def __init__(self):
  731. ui.ScriptWindow.__init__(self)
  732. self.LoadDialog()
  733. def __del__(self):
  734. ui.ScriptWindow.__del__(self)
  735.  
  736. def LoadDialog(self):
  737. self.UI["board"]=ui.BoardWithTitleBar()
  738. self.UI["board"].SetParent(self)
  739. self.UI["board"].SetSize(200, self.BoardHeight)
  740. self.UI["board"].SetTitleName(uiScriptLocale.SHOP_WINDOW_NAME)
  741. self.UI["board"].SetCloseEvent(self.Close)
  742. self.UI["board"].Show()
  743. self.UI["shops"]={}
  744.  
  745. self.Edit["Board"] = ui.BoardWithTitleBar()
  746. self.Edit["Board"].SetParent(self)
  747. self.Edit["Board"].SetSize(150, 100)
  748. if POSITION_FIX:
  749. self.Edit["Board"].SetPosition(250,0)
  750. else:
  751. self.Edit["Board"].SetPosition(220,0)
  752. self.Edit["Board"].SetTitleName(uiScriptLocale.SHOP_SELECT)
  753. self.Edit["Board"].SetCloseEvent(self.CloseEdit)
  754. self.Edit["Board"].Hide()
  755.  
  756. self.SetCenterPosition()
  757. self.AddFlag("movable")
  758. self.UpdateSize()
  759. def AddEditOption(self,name,text,func):
  760. self.Edit[name] = ui.Button()
  761. self.Edit[name].SetParent(self.Edit["Board"])
  762. self.Edit[name].SetPosition(30,self.EditBoardY)
  763. self.Edit[name].SetUpVisual('d:/ymir work/ui/public/Large_button_01.sub')
  764. self.Edit[name].SetOverVisual('d:/ymir work/ui/public/Large_button_02.sub')
  765. self.Edit[name].SetDownVisual('d:/ymir work/ui/public/Large_button_03.sub')
  766. self.Edit[name].SetText(text)
  767. self.Edit[name].Show()
  768. self.EditBoardY+=30
  769. self.Edit["Board"].SetSize(150, self.EditBoardY)
  770. self.Edit[name].SetEvent(func)
  771. self.UpdateSize()
  772. def CloseEdit(self):
  773. if "Board" in self.Edit.keys():
  774. self.Edit["Board"].Hide()
  775. self.CurrentEdit=0
  776.  
  777. def Load(self,data):
  778. title=data["name"]
  779. if len(title) > 22:
  780. title = title[:19] + "..."
  781. gui={}
  782. gui["nameTextImage"] = ui.MakeImageBox(self.UI["board"], "d:/ymir work/ui/public/Parameter_Slot_04.sub", 10, self.BoardHeight)
  783. gui["nameTextImage"].SAFE_SetStringEvent("MOUSE_OVER_IN", lambda arg=data: self.__ShowToolTip(arg),TRUE)
  784. gui["nameTextImage"].SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideItemToolTip)
  785. gui["name"] = ui.MakeTextLine(gui["nameTextImage"])
  786. gui["name"].SetWindowHorizontalAlignCenter()
  787. gui["name"].SetHorizontalAlignCenter()
  788. gui["name"].SetText(title)
  789.  
  790. 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")
  791. gui["manage"].SetText(uiScriptLocale.SHOP_MANAGE)
  792. gui["manage"].SetEvent(ui.__mem_func__(self.ManageShop),data)
  793. gui["manage"].Show()
  794. if self.CurrentEdit==data["id"]:
  795. self.ManageShop(data,1)
  796. gui["data"]=data
  797. self.UI["shops"][str(data["id"])]=gui
  798. self.BoardHeight+=30
  799. self.UpdateSize()
  800.  
  801. def __OnClosePopupDialog(self):
  802. if self.pop != None:
  803. if self.pop.IsShow():
  804. self.pop.Hide()
  805. self.pop = None
  806.  
  807. def ManageShop(self,data,force=0):
  808. self.EditBoardY=35
  809. self.AddEditOption("change_name",uiScriptLocale.SHOP_CHANGE_NAME,lambda arg1=data: self.OnChangeButtonClick(arg1))
  810. self.AddEditOption("get_yang",uiScriptLocale.SHOP_GET_YANG,lambda arg1=data: self.GetShopYang(arg1))
  811. self.AddEditOption("edit",uiScriptLocale.SHOP_EDIT,lambda arg1=data["id"]: self.OnEditButtonClick(arg1))
  812. self.AddEditOption("close",uiScriptLocale.SHOP_CLOSE,lambda arg1=data: self.CloseShop(arg1))
  813. if self.Edit["Board"].IsShow() and self.CurrentEdit==data["id"] and force==0:
  814. self.Edit["Board"].Hide()
  815. self.CurrentEdit=0
  816. else:
  817. title=data["name"]
  818. if len(title) > 22:
  819. title = title[:19] + "..."
  820. self.Edit["Board"].SetTitleName(title)
  821. self.Edit["Board"].Show()
  822. self.CurrentEdit=data["id"]
  823.  
  824. def UpdateSize(self):
  825. Y=25
  826. if POSITION_FIX:
  827. Y=45
  828. 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")
  829. self.UI["create_button"].SetText(uiScriptLocale.SHOP_OPEN)
  830. self.UI["create_button"].SetEvent(lambda : self.CreateShop())
  831. self.UI["create_button"].Show()
  832. if POSITION_FIX:
  833. self.UI["board"].SetSize(200, self.BoardHeight+55)
  834. else:
  835. self.UI["board"].SetSize(200, self.BoardHeight+35)
  836. if self.BoardHeight < self.EditBoardY:
  837. self.SetSize(400, self.EditBoardY+50)
  838. else:
  839. self.SetSize(400, self.BoardHeight+60)
  840.  
  841. def CreateShop(self):
  842. self.Hide();
  843. self.uiNewShopCreate.Show()
  844.  
  845. def CloseShop(self,shop):
  846. self.pop = uiCommon.QuestionDialog()
  847. self.pop.SetText(uiScriptLocale.SHOP_CLOSE_QUEST%(shop["name"]))
  848. self.pop.SetAcceptEvent(lambda arg1=str(shop["id"]): self.OnCloseShop(arg1))
  849. self.pop.SetCancelEvent(ui.__mem_func__(self.__OnClosePopupDialog))
  850. self.pop.Open()
  851.  
  852. def OnCloseShop(self,id):
  853. self.__OnClosePopupDialog()
  854. net.SendChatPacket("/close_shop %d" %(int(id)))
  855. if len(self.UI["shops"].keys())==1:
  856. self.Close()
  857.  
  858. def GetShopYang(self,shop):
  859. if int(shop["gold"]) <=0:
  860. self.PopupMessage(uiScriptLocale.SHOP_NOT_EARNED_YANG)
  861. return
  862. self.pop = uiCommon.QuestionDialog()
  863. self.pop.SetText(uiScriptLocale.SHOP_YANG_QUEST%(localeinfo.NumberToMoneyString(shop["gold"]),shop["name"]))
  864. self.pop.SetAcceptEvent(lambda arg1=str(shop["id"]): self.OnGetYang(arg1))
  865. self.pop.SetCancelEvent(ui.__mem_func__(self.__OnClosePopupDialog))
  866. self.pop.Open()
  867. def AddItem(self,slot,data):
  868. self.uiNewShopEdit.AddItem(slot,data)
  869. def ClearItems(self):
  870. self.uiNewShopEdit.Clear()
  871. def OnGetYang(self,id):
  872. self.__OnClosePopupDialog()
  873. net.SendChatPacket("/shop_yang %d" %(int(id)))
  874.  
  875. def OnChangeButtonClick(self,shop):
  876. inputDialog = uiCommon.InputDialog()
  877. inputDialog.SetTitle(uiScriptLocale.SHOP_ENTER_NEW_NAME)
  878. inputDialog.SetMaxLength(32)
  879. inputDialog.SetAcceptEvent(lambda arg1=str(shop["id"]): self.OnChangeName(arg1))
  880. inputDialog.SetCancelEvent(ui.__mem_func__(self.CloseInputNameDialog))
  881. inputDialog.Open()
  882.  
  883. self.inputDialog = inputDialog
  884.  
  885. def CloseInputNameDialog(self):
  886. self.inputDialog = None
  887.  
  888. def OnChangeName(self,id):
  889. if not self.inputDialog:
  890. return
  891. name=self.inputDialog.GetText()
  892. if not len(name):
  893. return
  894. name=name.replace(" ","\\")
  895. net.SendChatPacket("/shop_name %d %s" %(int(id),name))
  896. self.CloseInputNameDialog()
  897.  
  898. def Destroy(self):
  899. self.Hide()
  900. self.__OnClosePopupDialog()
  901. self.UI={}
  902. self.wndPopupDialog = None
  903. self.inputDialog = None
  904. if self.uiNewShopEdit:
  905. self.uiNewShopEdit.Close()
  906. self.uiNewShopEdit = None
  907. def OnPressEscapeKey(self):
  908. self.Hide()
  909. def Hide(self):
  910. self.CloseEdit()
  911. self.__OnClosePopupDialog()
  912. if self.uiNewShopEdit:
  913. self.uiNewShopEdit.Close()
  914. self.__HideItemToolTip()
  915. ui.ScriptWindow.Hide(self)
  916. def Close(self):
  917. self.Hide()
  918.  
  919. def __ShowToolTip(self,shop):
  920. if self.tooltip:
  921. self.tooltip.ClearToolTip()
  922. self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_INFORMATION+str(shop["name"]), titleColor)
  923. self.tooltip.AppendSpace(5)
  924. self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_EARNED_YANG+str(localeinfo.NumberToMoneyString((shop["gold"]))), POSITIVE_COLOR)
  925. self.tooltip.AppendSpace(5)
  926. self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_REST_ITEMS+str(int(shop["sold"])), POSITIVE_COLOR)
  927. self.tooltip.AppendSpace(5)
  928. self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_SOLD_ITEMS+str(shop["items"]), POSITIVE_COLOR)
  929. self.tooltip.AppendSpace(5)
  930. self.tooltip.AutoAppendTextLine(uiScriptLocale.SHOP_TIME_TO_CLOSE+str(localeinfo.SecondToDHM(int(shop["time"])-int(time.time()+int(4820)))), NEGATIVE_COLOR)
  931. self.tooltip.AppendSpace(5)
  932. self.tooltip.ShowToolTip()
  933.  
  934.  
  935. def __HideItemToolTip(self):
  936. if self.tooltip:
  937. self.tooltip.HideToolTip()
  938.  
  939. def OnEditButtonClick(self,id):
  940. if self.uiNewShopEdit.IsShow():
  941. self.uiNewShopEdit.Close()
  942. else:
  943. self.uiNewShopEdit.Show(str(id))
  944. def Show(self):
  945. if len(self.UI["shops"].keys())==0:
  946. self.CreateShop()
  947. else:
  948. ui.ScriptWindow.Show(self)
  949. def HideAll(self):
  950. self.BoardHeight=40
  951. for key,item in self.UI["shops"].iteritems():
  952. for k,v in item.iteritems():
  953. if k !="data":
  954. v.Hide()
  955. self.UI["shops"][key]["data"]={}
  956. self.UI["shops"]={}
  957. def PopupMessage(self, msg):
  958. self.wndPopupDialog = uiCommon.PopupDialog()
  959. self.wndPopupDialog.SetText(msg)
  960. self.wndPopupDialog.Open()
  961. def OnUpdate(self):
  962. if self.lastUpdate < app.GetGlobalTime():
  963. self.lastUpdate=app.GetGlobalTime()+900
  964. if "shops" in self.UI.keys():
  965. if str(self.CurrentEdit) not in self.UI["shops"].keys():
  966. self.CloseEdit()
  967. if "create_button" in self.UI.keys():
  968. if POSITION_FIX:
  969. self.UI["create_button"].SetPosition(10, self.UI["board"].GetHeight()-45)
  970. else:
  971. self.UI["create_button"].SetPosition(10, self.UI["board"].GetHeight()-40)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement