Guest User

Untitled

a guest
Feb 9th, 2025
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.03 KB | None | 0 0
  1. import os
  2. import ui
  3. import player
  4. import nonplayer
  5. import renderTarget
  6. import mouseModule
  7. import net
  8. import app
  9. import snd
  10. import time
  11. import item
  12. import chat
  13. import grp
  14. import uiScriptLocale
  15. import localeInfo
  16. import constInfo
  17. import ime
  18. import wndMgr
  19. import uiToolTip
  20. import uiHuntingMapNames
  21.  
  22. from _weakref import proxy
  23.  
  24. IMG_PATH = "d:/ymir work/ui/public/huntsystem/"
  25.  
  26. MAX_MISSION_LEVEL = 90
  27.  
  28. TARGET_RENDER_INDEX_MAIN = 10
  29.  
  30. TARGET_RENDER_INDEX_SEL_1 = 11
  31. TARGET_RENDER_INDEX_SEL_2 = 12
  32.  
  33. RACE_IMAGES = {
  34. 0 : IMG_PATH + "face_warrior_m.sub",
  35. 1 : IMG_PATH + "face_assassine_w.sub",
  36. 2 : IMG_PATH + "face_sura_m.sub",
  37. 3 : IMG_PATH + "face_shaman_w.sub",
  38. 4 : IMG_PATH + "face_warrior_w.sub",
  39. 5 : IMG_PATH + "face_assassine_m.sub",
  40. 6 : IMG_PATH + "face_sura_w.sub",
  41. 7 : IMG_PATH + "face_shaman_m.sub",
  42. 8 : IMG_PATH + "face_wolfman.sub",
  43. }
  44.  
  45. class HuntingWindow(ui.ScriptWindow):
  46. def __init__(self):
  47. ui.ScriptWindow.__init__(self)
  48. self.level = 0
  49. self.info_type = 0
  50. self.dest_count = 0
  51. self.race_item = 0
  52. self.isMouseWheel = False
  53. self.ScrollBarStep = 0.2
  54. self.curScrollbarPos = 0.0
  55. self.destScrollbarPos = 0.0
  56. self.targetMonster = 0
  57. self.AniImageObjects = []
  58.  
  59. self.LoadWindow()
  60.  
  61. def __del__(self):
  62. ui.ScriptWindow.__del__(self)
  63. constInfo.HUNTING_MAIN_UI_SHOW = 0
  64. self.level = 0
  65. self.info_type = 0
  66. self.dest_count = 0
  67. self.race_item = 0
  68. self.isMouseWheel = False
  69. self.ScrollBarStep = 0.2
  70. self.curScrollbarPos = 0.0
  71. self.destScrollbarPos = 0.0
  72. self.AnimationImage = None
  73. self.AniImageObjects = []
  74.  
  75. def Show(self):
  76. ui.ScriptWindow.Show(self)
  77.  
  78. def OpenMain(self, level, monster, cur_count, dest_count, money_min, money_max, exp_min, exp_max, race_item, race_item_count):
  79. self.ResetBoard()
  80. self.level = level
  81. self.GetChild("board").SetTitleName(uiScriptLocale.HUNTING_SYSTEM_TITLE % level)
  82. if level > MAX_MISSION_LEVEL:
  83. self.SetCompledetAllMissionsInfo()
  84. self.info_type = 1
  85. if self.HuntingMiniUI:
  86. self.HuntingMiniUI.Hide()
  87. self.Show()
  88. return
  89.  
  90. if player.GetStatus(player.LEVEL) < level:
  91. self.SetOverLevelInfo(level)
  92. self.info_type = 2
  93. if self.HuntingMiniUI:
  94. self.HuntingMiniUI.Hide()
  95. self.Show()
  96. return
  97.  
  98. self.dest_count = dest_count
  99. self.SetRenderTarget(monster)
  100. self.SetInfo(level, monster, cur_count, dest_count, money_min, money_max, exp_min, exp_max)
  101. self.SetRaceItem(race_item, race_item_count)
  102. if self.HuntingMiniUI:
  103. self.HuntingMiniUI.SetInfo(level, monster, cur_count, dest_count)
  104. if constInfo.HUNTING_MINI_UI_SHOW == 1:
  105. self.GetChild("mini_ui_button").SetText(uiScriptLocale.HUNTING_SYSTEM_BUTTON_MINI_UI_OFF)
  106. self.HuntingMiniUI.Show()
  107.  
  108. constInfo.HUNTING_MAIN_UI_SHOW = 1
  109. self.info_type = 0
  110. self.Show()
  111.  
  112. def Close(self):
  113. constInfo.HUNTING_MAIN_UI_SHOW = 0
  114. if self.randomItemList:
  115. self.randomItemList.ClearList()
  116. self.Hide()
  117.  
  118. def OnPressEscapeKey(self):
  119. self.Close()
  120. return True
  121.  
  122. def CloseWithMini(self):
  123. self.GetChild("mini_ui_button").SetText(uiScriptLocale.HUNTING_SYSTEM_BUTTON_MINI_UI_ON)
  124. self.HuntingMiniUI.Hide()
  125. self.Close()
  126.  
  127. def Destroy(self):
  128. constInfo.HUNTING_MAIN_UI_SHOW = 0
  129. self.HuntingMiniUI.Hide()
  130. del self.HuntingMiniUI
  131. self.Hide()
  132.  
  133. def LoadWindow(self):
  134. try:
  135. pyScrLoader = ui.PythonScriptLoader()
  136. pyScrLoader.LoadScriptFile(self, "uiscript/hunting.py")
  137. except:
  138. import exception
  139. exception.Abort("HuntingWindow.LoadWindow.LoadObject")
  140.  
  141. try:
  142. self.randomItemList = ListBoxItems()
  143. self.randomItemList.SetParent(self.GetChild2("item_area"))
  144. self.randomItemList.SetGlobalParent(self)
  145. self.randomItemList.SetPosition(0, 0)
  146. self.randomItemList.SetSize(32, 154)
  147.  
  148. self.tooltip = uiToolTip.ToolTip()
  149. self.tooltip.Hide()
  150. self.tooltipItem = uiToolTip.ItemToolTip()
  151. self.tooltipItem.Hide()
  152.  
  153. self.GetChild("board").SetCloseEvent(self.Close)
  154.  
  155. self.GetChild("mini_ui_button").SetEvent(self.ButtonMiniUI)
  156. self.GetChild("close_button").SetEvent(self.Close)
  157. self.GetChild("reward_button").SetEvent(self.ButtonReciveReward)
  158.  
  159. self.ModelPreview = ui.RenderTarget()
  160. self.ModelPreview.SetParent(self.GetChild("thinboard"))
  161. self.ModelPreview.SetSize(140, 180)
  162. self.ModelPreview.SetPosition(5, 5)
  163. self.ModelPreview.SetRenderTarget(TARGET_RENDER_INDEX_MAIN)
  164.  
  165. self.HuntingMiniUI = HuntingMiniWindow()
  166. self.HuntingMiniUI.Hide()
  167.  
  168. self.scrollBar = ScrollBar()
  169. self.scrollBar.SetParent(self.GetChild("scrollbar_area"))
  170. self.scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
  171. self.scrollBar.SetTexture(IMG_PATH + "scrollbar.sub")
  172. self.scrollBar.SetMovementArea(0, 0, 4, 150)
  173. self.scrollBar.SetPosition(0, 0)
  174. self.scrollBar.Show()
  175.  
  176. race = net.GetMainActorRace()
  177. self.GetChild("face_icon").LoadImage(RACE_IMAGES[race])
  178. self.GetChild("face_icon").SetPosition(224, 27)
  179. self.GetChild("face_icon").SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRaceDesc,)
  180. self.GetChild("face_icon").SAFE_SetStringEvent("MOUSE_OVER_OUT",self.MouseOverOut)
  181. self.GetChild("face_icon").Show()
  182.  
  183. self.GetChild("reward_button").Disable()
  184.  
  185. except:
  186. import exception
  187. exception.Abort("HuntingWindow.LoadWindow.BindObject")
  188.  
  189. def ResetBoard(self):
  190. self.GetChild("info_layer").Hide()
  191. self.GetChild("mini_ui_button").Hide()
  192. self.GetChild("close_button").Hide()
  193. self.GetChild("reward_button").Hide()
  194. self.ModelPreview.Hide()
  195.  
  196. def SetCompledetAllMissionsInfo(self):
  197. self.GetChild("close_button").Show()
  198. self.GetChild("info_text_over_level").Hide()
  199. self.GetChild("info_text_complete_all").Show()
  200. self.GetChild("info_layer").Show()
  201.  
  202. def SetOverLevelInfo(self, level):
  203. self.GetChild("close_button").Show()
  204. self.GetChild("info_text_over_level").SetText(uiScriptLocale.HUNTING_SYSTEM_INFO_OVER_LEVEL % level)
  205. self.GetChild("info_text_over_level").Show()
  206. self.GetChild("info_text_complete_all").Hide()
  207. self.GetChild("info_layer").Show()
  208.  
  209. def SetRenderTarget(self, monster):
  210. renderTarget.SetBackground(TARGET_RENDER_INDEX_MAIN, "d:/ymir work/ui/game/myshop_deco/model_view_bg.sub")
  211. renderTarget.SetVisibility(TARGET_RENDER_INDEX_MAIN, True)
  212. if monster != 0:
  213. renderTarget.SelectModel(TARGET_RENDER_INDEX_MAIN, monster)
  214. self.ModelPreview.Show()
  215.  
  216. def SetInfo(self, level, monster, cur_count, dest_count, money_min, money_max, exp_min, exp_max):
  217. mob_name = str(nonplayer.GetMonsterName(monster))
  218. self.GetChild("mobname_text").SetText(mob_name)
  219. self.GetChild("dest_text").SetText(self.GetMapNameByMobVnum(monster))
  220. self.GetChild("amount_text").SetText(uiScriptLocale.HUNTING_SYSTEM_AMOUNT_TEXT % (cur_count, dest_count))
  221. self.GetChild("money_text").SetText("%s - %s" % (localeInfo.NumberWithPoint(money_min), localeInfo.NumberWithPoint(money_max)))
  222. self.GetChild("exp_text").SetText("%d%% - %d%%" % (exp_min, exp_max))
  223. self.GetChild("mini_ui_button").Show()
  224. self.GetChild("reward_button").Show()
  225. if cur_count >= dest_count:
  226. self.GetChild("gauge").LoadImage("d:/ymir work/ui/public/huntsystem/gauge_green.sub")
  227. self.GetChild("reward_button").Enable()
  228. self.GetChild("reward_button").EnableFlash()
  229. else:
  230. self.GetChild("gauge").LoadImage("d:/ymir work/ui/public/huntsystem/gauge_blue.sub")
  231. self.GetChild("reward_button").Disable()
  232. self.GetChild("gauge").SetPercentage(cur_count, dest_count)
  233.  
  234. def SetRaceItem(self, race_item, race_item_count):
  235. if race_item != 0:
  236. self.race_item = race_item
  237. item.SelectItem(race_item)
  238. self.GetChild("item_icon").LoadImage(item.GetIconImageFileName())
  239. self.GetChild("item_icon").SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRaceItem,)
  240. self.GetChild("item_icon").SAFE_SetStringEvent("MOUSE_OVER_OUT",self.MouseOverOut)
  241.  
  242. self.GetChild("item_icon").Show()
  243. for i in xrange(3):
  244. self.GetChild("empty_slot_%d" % i).Hide()
  245. else:
  246. self.current_race_item = 0
  247. self.GetChild("item_icon").Hide()
  248. for i in xrange(3):
  249. self.GetChild("empty_slot_%d" % i).Show()
  250.  
  251. def UpdateMission(self, count):
  252. self.GetChild("amount_text").SetText(uiScriptLocale.HUNTING_SYSTEM_AMOUNT_TEXT % (count, self.dest_count))
  253. self.GetChild("gauge").SetPercentage(count, self.dest_count)
  254. if count >= self.dest_count:
  255. self.GetChild("gauge").LoadImage("d:/ymir work/ui/public/huntsystem/gauge_green.sub")
  256. self.GetChild("reward_button").Enable()
  257. self.GetChild("reward_button").EnableFlash()
  258. if self.HuntingMiniUI:
  259. self.HuntingMiniUI.UpdateCount(count)
  260.  
  261. def SetRandomItemTable(self, item_vnum, item_count):
  262. self.randomItemList.AppendObject(item_vnum, item_count, 3)
  263. self.randomItemList.Show()
  264. if self.randomItemList.GetObjectCount() >= 5:
  265. self.scrollBar.Show()
  266. else:
  267. self.scrollBar.Hide()
  268.  
  269. def ButtonReciveReward(self):
  270. net.SendHuntingAction(3, 0)
  271.  
  272. def ButtonMiniUI(self):
  273. if constInfo.HUNTING_MINI_UI_SHOW == 0:
  274. constInfo.HUNTING_MINI_UI_SHOW = 1
  275. self.GetChild("mini_ui_button").SetText(uiScriptLocale.HUNTING_SYSTEM_BUTTON_MINI_UI_OFF)
  276. self.HuntingMiniUI.Show()
  277. elif constInfo.HUNTING_MINI_UI_SHOW == 1:
  278. constInfo.HUNTING_MINI_UI_SHOW = 0
  279. self.GetChild("mini_ui_button").SetText(uiScriptLocale.HUNTING_SYSTEM_BUTTON_MINI_UI_ON)
  280. self.HuntingMiniUI.Hide()
  281.  
  282. def GetMapNameByMobVnum(self, mobvnum):
  283. for key in uiHuntingMapNames.MAP_NAMES_FROM_MOB:
  284. for mob in uiHuntingMapNames.MAP_NAMES_FROM_MOB[key]:
  285. if mob == mobvnum:
  286. return str(key)
  287. return "Unknown Map"
  288.  
  289. def OnRunMouseWheel(self, nLen):
  290. if self.scrollBar.IsShow():
  291. if nLen > 0:
  292. pos = self.destScrollbarPos - self.ScrollBarStep
  293. else:
  294. pos = self.destScrollbarPos + self.ScrollBarStep
  295. pos = max(0.0, pos)
  296. pos = min(1.0, pos)
  297.  
  298. self.isMouseWheel = True
  299. self.destScrollbarPos = pos
  300.  
  301. def MouseOverInRaceDesc(self):
  302. if self.tooltip:
  303. self.tooltip.ClearToolTip()
  304. self.tooltip.AppendDescription(uiScriptLocale.HUNTING_SYSTEM_RACE_TOOLTIP, 40)
  305. self.tooltip.ShowToolTip()
  306.  
  307. def MouseOverInRaceItem(self):
  308. if self.tooltipItem and self.race_item != 0:
  309. self.tooltipItem.ClearToolTip()
  310. self.tooltipItem.AddItemData(self.race_item, metinSlot = [0 for i in xrange(player.METIN_SOCKET_MAX_NUM)])
  311. self.tooltipItem.ShowToolTip()
  312.  
  313. def MouseOverOut(self):
  314. if self.tooltip:
  315. self.tooltip.Hide()
  316. if self.tooltipItem:
  317. self.tooltipItem.Hide()
  318.  
  319. def OnUpdate(self):
  320. if self.info_type == 2 and player.GetStatus(player.LEVEL) >= self.level:
  321. net.SendHuntingAction(1, 0)
  322. self.info_type = 0
  323.  
  324. if self.isMouseWheel:
  325. self.curScrollbarPos += (self.destScrollbarPos - self.curScrollbarPos) / 10.0
  326. if abs(self.curScrollbarPos - self.destScrollbarPos) < 0.005:
  327. self.curScrollbarPos = self.destScrollbarPos
  328. self.isMouseWheel = False
  329. self.scrollBar.SetPos(self.curScrollbarPos)
  330. else:
  331. self.curScrollbarPos = self.scrollBar.GetPos()
  332.  
  333. def OnScroll(self):
  334. self.randomItemList.OnScroll(self.scrollBar.GetPos())
  335.  
  336. class HuntingSelectWindow(ui.ScriptWindow):
  337. def __init__(self):
  338. ui.ScriptWindow.__init__(self)
  339. self.RenderTargetList = []
  340. self.RaceItem = [[],[]]
  341. self.LoadWindow()
  342.  
  343. def __del__(self):
  344. ui.ScriptWindow.__del__(self)
  345.  
  346. def Show(self):
  347. ui.ScriptWindow.Show(self)
  348.  
  349. def OpenSelect(self, level, type, monster, count, money_min, money_max, exp_min, exp_max, race_item, race_item_count):
  350. if level != 0:
  351. self.RaceItem[type].append(race_item)
  352. self.RaceItem[type].append(race_item_count)
  353. self.SetRenderTargetModel(type, monster)
  354. self.SetInformation(level, type, monster, count, money_min, money_max, exp_min, exp_max)
  355. self.SetRaceItem(type, race_item, race_item_count)
  356. if type == 1:
  357. self.scrollBar1.SetPosition(0, 0)
  358. self.scrollBar2.SetPosition(0, 0)
  359. self.Show()
  360. else:
  361. chat.AppendChat(chat.CHAT_TYPE_INFO, "Failure to open Huntin Select Window" % type)
  362.  
  363. def Close(self):
  364. self.RaceItem = [[],[]]
  365. if self.randomItemList1:
  366. self.randomItemList1.ClearList()
  367. if self.randomItemList2:
  368. self.randomItemList2.ClearList()
  369. self.Hide()
  370.  
  371. def OnPressEscapeKey(self):
  372. self.Close()
  373. return True
  374.  
  375. def Destroy(self):
  376. self.Hide()
  377.  
  378. def LoadWindow(self):
  379. try:
  380. pyScrLoader = ui.PythonScriptLoader()
  381. pyScrLoader.LoadScriptFile(self, "uiscript/huntingselect.py")
  382. except:
  383. import exception
  384. exception.Abort("HuntingWindow.LoadWindow.LoadObject")
  385.  
  386. try:
  387. self.main_race = net.GetMainActorRace()
  388.  
  389. self.tooltip = uiToolTip.ToolTip()
  390. self.tooltip.Hide()
  391. self.tooltipItem = uiToolTip.ItemToolTip()
  392. self.tooltipItem.Hide()
  393.  
  394. self.board = self.GetChild("board")
  395. self.board.SetCloseEvent(self.Close)
  396.  
  397. self.randomItemList1 = ListBoxItems()
  398. self.randomItemList1.SetParent(self.GetChild("item_area_0"))
  399. self.randomItemList1.SetGlobalParent(self)
  400. self.randomItemList1.SetPosition(0, 0)
  401. self.randomItemList1.SetSize(32, 154)
  402.  
  403. self.randomItemList2 = ListBoxItems()
  404. self.randomItemList2.SetParent(self.GetChild("item_area_1"))
  405. self.randomItemList2.SetGlobalParent(self)
  406. self.randomItemList2.SetPosition(0, 0)
  407. self.randomItemList2.SetSize(32, 154)
  408.  
  409. self.scrollBar1 = ScrollBar()
  410. self.scrollBar1.SetParent(self.GetChild("scrollbar_area_0"))
  411. self.scrollBar1.SetScrollEvent(ui.__mem_func__(self.OnScrollList1))
  412. self.scrollBar1.SetTexture(IMG_PATH + "scrollbar.sub")
  413. self.scrollBar1.SetMovementArea(0, 0, 4, 150)
  414. self.scrollBar1.SetPosition(0, 0)
  415. self.scrollBar1.Show()
  416.  
  417. self.scrollBar2 = ScrollBar()
  418. self.scrollBar2.SetParent(self.GetChild("scrollbar_area_1"))
  419. self.scrollBar2.SetScrollEvent(ui.__mem_func__(self.OnScrollList2))
  420. self.scrollBar2.SetTexture(IMG_PATH + "scrollbar.sub")
  421. self.scrollBar2.SetMovementArea(0, 0, 4, 150)
  422. self.scrollBar2.SetPosition(0, 0)
  423. self.scrollBar2.Show()
  424.  
  425. self.GetChild("face_icon_0").LoadImage(RACE_IMAGES[self.main_race])
  426. self.GetChild("face_icon_0").SetPosition(224, 27)
  427. self.GetChild("face_icon_0").SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRaceDesc,)
  428. self.GetChild("face_icon_0").SAFE_SetStringEvent("MOUSE_OVER_OUT",self.MouseOverOut)
  429. self.GetChild("face_icon_0").Show()
  430.  
  431. self.GetChild("face_icon_1").LoadImage(RACE_IMAGES[self.main_race])
  432. self.GetChild("face_icon_1").SetPosition(224, 27)
  433. self.GetChild("face_icon_1").SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRaceDesc,)
  434. self.GetChild("face_icon_1").SAFE_SetStringEvent("MOUSE_OVER_OUT",self.MouseOverOut)
  435. self.GetChild("face_icon_1").Show()
  436.  
  437. self.GetChild("select_button_0").EnableFlash()
  438. self.GetChild("select_button_1").EnableFlash()
  439. self.GetChild("select_button_0").SetEvent(ui.__mem_func__(self.OnButtonSelect), 0)
  440. self.GetChild("select_button_1").SetEvent(ui.__mem_func__(self.OnButtonSelect), 1)
  441.  
  442. for i in xrange(2):
  443. if i == 0:
  444. index = TARGET_RENDER_INDEX_SEL_1
  445. else:
  446. index = TARGET_RENDER_INDEX_SEL_2
  447. self.ModelPreview = ui.RenderTarget()
  448. self.ModelPreview.SetParent(self.GetChild("board_%d" % i))
  449. self.ModelPreview.SetSize(140, 180)
  450. self.ModelPreview.SetPosition(5, 5)
  451. self.ModelPreview.SetRenderTarget(index)
  452. self.ModelPreview.Show()
  453. renderTarget.SetBackground(index, "d:/ymir work/ui/game/myshop_deco/model_view_bg.sub")
  454. renderTarget.SetVisibility(index, True)
  455. self.RenderTargetList.append(self.ModelPreview)
  456.  
  457. except:
  458. import exception
  459. exception.Abort("HuntingSelectWindow.LoadWindow.BindObject")
  460.  
  461. def SetRenderTargetModel(self, type, monster):
  462. index = TARGET_RENDER_INDEX_SEL_1
  463. if type == 1:
  464. index = TARGET_RENDER_INDEX_SEL_2
  465. renderTarget.SelectModel(index, monster)
  466.  
  467. def SetInformation(self, level, type, monster, count, money_min, money_max, exp_min, exp_max):
  468. self.board.SetTitleName(uiScriptLocale.HUNTING_SYSTEM_TITLE_SELECT % level)
  469. mob_name = str(nonplayer.GetMonsterName(monster))
  470. self.GetChild("mobname_text_%d" % type).SetText(mob_name)
  471. self.GetChild("dest_text_%d" % type).SetText(self.GetMapNameByMobVnum(monster))
  472. self.GetChild("amount_text_%d" % type).SetText("%d" % count)
  473. self.GetChild("money_text_%d" % type).SetText("%s - %s" % (localeInfo.NumberWithPoint(money_min), localeInfo.NumberWithPoint(money_max)))
  474. self.GetChild("exp_text_%d" % type).SetText("%d%% - %d%%" % (exp_min, exp_max))
  475.  
  476. def SetRaceItem(self, type, race_item, race_item_count):
  477. if race_item != 0:
  478. item.SelectItem(race_item)
  479. self.GetChild("item_icon_%d" % type).LoadImage(item.GetIconImageFileName())
  480. if type == 0:
  481. self.GetChild("item_icon_%d" % type).SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRaceItem1,)
  482. if type == 1:
  483. self.GetChild("item_icon_%d" % type).SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRaceItem2,)
  484. self.GetChild("item_icon_%d" % type).SAFE_SetStringEvent("MOUSE_OVER_OUT",self.MouseOverOut)
  485. self.GetChild("item_icon_%d" % type).Show()
  486. for i in xrange(3):
  487. self.GetChild("empty_slot_%d_%d" % (i, type)).Hide()
  488. else:
  489. self.GetChild("item_icon_%d" % type).Hide()
  490. for i in xrange(3):
  491. self.GetChild("empty_slot_%d_%d" % (i, type)).Show()
  492.  
  493. def SetRandomItemTable(self, item_vnum, item_count):
  494. self.randomItemList1.AppendObject(item_vnum, item_count, 3)
  495. self.randomItemList2.AppendObject(item_vnum, item_count, 3)
  496. self.randomItemList1.Show()
  497. self.randomItemList2.Show()
  498. if self.randomItemList1.GetObjectCount() >= 5:
  499. self.scrollBar1.Show()
  500. self.scrollBar2.Show()
  501. else:
  502. self.scrollBar1.Hide()
  503. self.scrollBar2.Hide()
  504.  
  505. def OnButtonSelect(self, type):
  506. net.SendHuntingAction(2, type)
  507. self.Close()
  508.  
  509. def GetMapNameByMobVnum(self, mobvnum):
  510. for key in uiHuntingMapNames.MAP_NAMES_FROM_MOB:
  511. for mob in uiHuntingMapNames.MAP_NAMES_FROM_MOB[key]:
  512. if mob == mobvnum:
  513. return str(key)
  514. return "Unknown Map"
  515.  
  516. def MouseOverInRaceDesc(self):
  517. if self.tooltip:
  518. self.tooltip.ClearToolTip()
  519. self.tooltip.AppendDescription(uiScriptLocale.HUNTING_SYSTEM_RACE_TOOLTIP, 40)
  520. self.tooltip.ShowToolTip()
  521.  
  522. def MouseOverInRaceItem1(self):
  523. if self.tooltipItem and self.RaceItem[0][0] != 0:
  524. self.tooltipItem.ClearToolTip()
  525. self.tooltipItem.AddItemData(self.RaceItem[0][0], metinSlot = [0 for i in xrange(player.METIN_SOCKET_MAX_NUM)])
  526. self.tooltipItem.ShowToolTip()
  527.  
  528. def MouseOverInRaceItem2(self):
  529. if self.tooltipItem and self.RaceItem[1][0] != 0:
  530. self.tooltipItem.ClearToolTip()
  531. self.tooltipItem.AddItemData(self.RaceItem[1][0], metinSlot = [0 for i in xrange(player.METIN_SOCKET_MAX_NUM)])
  532. self.tooltipItem.ShowToolTip()
  533.  
  534. def MouseOverOut(self):
  535. if self.tooltip:
  536. self.tooltip.Hide()
  537. if self.tooltipItem:
  538. self.tooltipItem.Hide()
  539.  
  540. def OnRunMouseWheel(self, nLen):
  541. return
  542.  
  543. def OnScrollList1(self):
  544. self.randomItemList1.OnScroll(self.scrollBar1.GetPos())
  545.  
  546. def OnScrollList2(self):
  547. self.randomItemList2.OnScroll(self.scrollBar2.GetPos())
  548.  
  549. class HuntingRewardWindow(ui.ScriptWindow):
  550. def __init__(self):
  551. ui.ScriptWindow.__init__(self)
  552. self.startetAni = 1
  553. self.startNextAni = 0
  554. self.startingAni = []
  555. self.cur = [0,0,0]
  556. self.dest = [0,0,0]
  557.  
  558. self.clickOpenButton = False
  559. self.showRandomItemName = False
  560.  
  561. self.LoadWindow()
  562.  
  563. def __del__(self):
  564. ui.ScriptWindow.__del__(self)
  565. self.startNextAni = 0
  566. self.startingAni = []
  567.  
  568. def Show(self, level = 0):
  569. ui.ScriptWindow.Show(self)
  570.  
  571. def OpenReward(self, level, reward, reward_count, rand_reward, rand_reward_count, money, exp):
  572. self.clickOpenButton = False
  573. self.showRandomItemName = False
  574. self.level = level
  575. self.reward = reward
  576. self.reward_count = reward_count
  577. self.rand_reward = rand_reward
  578. self.rand_reward_count = rand_reward_count
  579. self.money = money
  580. self.exp = exp
  581. self.dest = [rand_reward_count,money,exp]
  582.  
  583. # chat.AppendChat(chat.CHAT_TYPE_INFO, "Rand Reward %d" % rand_reward)
  584. self.startNextAni = 0
  585. self.startetAni = 1
  586.  
  587. for i in xrange(4):
  588. self.GetChild("empty_slot_%d" % i).Show()
  589. self.GetChild("ani_slot_%d" % i).Show()
  590.  
  591. self.GetChild("random_item_name").SetText("")
  592. self.GetChild("money_text").SetText("")
  593. self.GetChild("exp_text").SetText("")
  594.  
  595. self.clickOpenButton = False
  596. self.showRandomItemName = False
  597. self.cur = [0,0,0]
  598. self.GetChild("ButtonRecive").SetText(uiScriptLocale.HUNTING_SYSTEM_RE_REWAR)
  599.  
  600. self.GetChild("board").SetTitleName(uiScriptLocale.HUNTING_SYSTEM_TITLE_REWARD % self.level)
  601. self.GetChild("ButtonRecive").EnableFlash()
  602.  
  603. self.CreateBrokeAnimation()
  604.  
  605. ui.ScriptWindow.Show(self)
  606.  
  607. def Close(self):
  608. if self.clickOpenButton == False:
  609. chat.AppendChat(chat.CHAT_TYPE_INFO, uiScriptLocale.HUNTING_SYSTEM_RE_REWAR_RECIBE)
  610. return
  611. else:
  612. self.GetChild("item_icon").Hide()
  613. self.GetChild("item_icon_random").Hide()
  614. net.SendHuntingAction(1, 0)
  615. self.Hide()
  616.  
  617. def OnPressEscapeKey(self):
  618. self.Close()
  619. return True
  620.  
  621. def Destroy(self):
  622. self.Hide()
  623.  
  624. def LoadWindow(self):
  625. try:
  626. pyScrLoader = ui.PythonScriptLoader()
  627. pyScrLoader.LoadScriptFile(self, "uiscript/huntingreward.py")
  628. except:
  629. import exception
  630. exception.Abort("HuntingWindow.LoadWindow.LoadObject")
  631.  
  632. try:
  633. self.tooltipItem = uiToolTip.ItemToolTip()
  634. self.tooltipItem.Hide()
  635.  
  636. self.GetChild("board").SetCloseEvent(self.Close)
  637. self.GetChild("ButtonRecive").SetEvent(self.ButtonReciveReward)
  638.  
  639. except:
  640. import exception
  641. exception.Abort("HuntingWindow.LoadWindow.BindObject")
  642.  
  643. def CreateBrokeAnimation(self):
  644. FRAMES_COUNT = 29
  645. self.AniImageObjects = []
  646. self.startingAni = []
  647. if self.reward != 0:
  648. item.SelectItem(self.reward)
  649. self.GetChild("item_icon").LoadImage(item.GetIconImageFileName())
  650. self.GetChild("item_icon").SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRaceItem,)
  651. self.GetChild("item_icon").SAFE_SetStringEvent("MOUSE_OVER_OUT",self.MouseOverOut)
  652.  
  653. self.GetChild("item_icon").Show()
  654. for i in xrange(3):
  655. # self.GetChild("empty_slot_%d" % i).Hide()
  656. self.startingAni.append([0,0])
  657. self.AnimationImage = ui.AniImageBox()
  658. self.AnimationImage.SetParent(self.GetChild("ani_slot_%d" % i))
  659. self.AnimationImage.SetDelay(4)
  660. self.AnimationImage.SetEndFrameEvent(ui.__mem_func__(self.HideBrokeSlotAni), i)
  661. for s in xrange(FRAMES_COUNT+1):
  662. self.AnimationImage.AppendImage("d:/ymir work/ui/effect/slot_broke_key/frame_%d.sub" % (s))
  663. self.AnimationImage.Show()
  664. self.AnimationImage.SetPosition(-24, -24)
  665. self.AnimationImage.ResetFrame()
  666. self.AnimationImage.Hide()
  667. self.AniImageObjects.append(self.AnimationImage)
  668. else:
  669. for i in xrange(3):
  670. self.GetChild("empty_slot_%d" % i).LoadImage("d:/ymir work/ui/pet/skill_button/skill_enable_button.sub")
  671. self.GetChild("ani_slot_%d" % i).Hide()
  672.  
  673. for obj in xrange(len(self.AniImageObjects)):
  674. self.AniImageObjects[obj].Hide()
  675.  
  676. if self.rand_reward != 0:
  677. item.SelectItem(self.rand_reward)
  678. self.GetChild("item_icon_random").LoadImage(item.GetIconImageFileName())
  679. self.GetChild("item_icon_random").SAFE_SetStringEvent("MOUSE_OVER_IN",self.MouseOverInRandomItem,)
  680. self.GetChild("item_icon_random").SAFE_SetStringEvent("MOUSE_OVER_OUT",self.MouseOverOut)
  681.  
  682. self.GetChild("item_icon_random").Show()
  683.  
  684. # self.GetChild("empty_slot_3").Hide()
  685. self.AnimationImage = ui.AniImageBox()
  686. self.AnimationImage.SetParent(self.GetChild("ani_slot_3"))
  687. self.AnimationImage.SetDelay(4)
  688. self.AnimationImage.SetEndFrameEvent(ui.__mem_func__(self.HideBrokeSlotAni), 3)
  689. for x in xrange(FRAMES_COUNT+1):
  690. self.AnimationImage.AppendImage("d:/ymir work/ui/effect/slot_broke_key/frame_%d.sub" % (x))
  691. self.AnimationImage.Show()
  692. self.AnimationImage.SetPosition(-24, -24)
  693. self.AnimationImage.ResetFrame()
  694. self.AnimationImage.Hide()
  695. self.AniImageObjects.append(self.AnimationImage)
  696. self.startingAni.append([0,0])
  697. else:
  698. self.GetChild("empty_slot_3").LoadImage("d:/ymir work/ui/pet/skill_button/skill_enable_button.sub")
  699. self.GetChild("ani_slot_3").Hide()
  700.  
  701. def ShowBrokeSlotAni(self, object = 0):
  702. if len(self.startingAni) != 0:
  703. self.startingAni[0][0] = 1
  704. self.startetAni = 1
  705. self.startNextAni = time.clock() + 0.3
  706.  
  707. def HideBrokeSlotAni(self, object):
  708. if len(self.startingAni) == 1:
  709. self.AniImageObjects[0].Hide()
  710. self.GetChild("empty_slot_3").Hide()
  711. self.GetChild("ani_slot_3").Hide()
  712. else:
  713. self.AniImageObjects[object].Hide()
  714. self.GetChild("empty_slot_%d" % object).Hide()
  715. self.GetChild("ani_slot_%d" % object).Hide()
  716.  
  717. def ButtonReciveReward(self):
  718. if self.clickOpenButton == False:
  719. self.clickOpenButton = True
  720. self.ShowBrokeSlotAni()
  721. self.GetChild("ButtonRecive").SetText(uiScriptLocale.HUNTING_SYSTEM_CLOSE)
  722. self.GetChild("ButtonRecive").DisableFlash()
  723. net.SendHuntingAction(4, 0)
  724.  
  725. # item.SelectItem(self.rand_reward)
  726. # self.GetChild("random_item_name").SetText("%dx %s" %(self.rand_reward_count, item.GetItemName()))
  727. else:
  728. self.Close()
  729.  
  730. def MouseOverInRaceItem(self):
  731. if self.tooltipItem and self.reward != 0:
  732. self.tooltipItem.ClearToolTip()
  733. self.tooltipItem.AddItemData(self.reward, metinSlot = [0 for i in xrange(player.METIN_SOCKET_MAX_NUM)])
  734. self.tooltipItem.ShowToolTip()
  735.  
  736. def MouseOverInRandomItem(self):
  737. if self.tooltipItem and self.rand_reward != 0:
  738. self.tooltipItem.ClearToolTip()
  739. self.tooltipItem.AddItemData(self.rand_reward, metinSlot = [0 for i in xrange(player.METIN_SOCKET_MAX_NUM)])
  740. self.tooltipItem.ShowToolTip()
  741.  
  742. def MouseOverOut(self):
  743. if self.tooltipItem:
  744. self.tooltipItem.Hide()
  745.  
  746. def OnUpdate(self):
  747. if len(self.startingAni) == 1:
  748. if self.startNextAni != 0 and self.startNextAni < time.clock() and self.startingAni[0][1] == 0:
  749. self.startingAni[0][1] = 1
  750. self.AniImageObjects[0].ResetFrame()
  751. self.AniImageObjects[0].Show()
  752. self.GetChild("empty_slot_3").Hide()
  753. snd.PlaySound("sound/ui/broken_glass.wav")
  754. self.showRandomItemName = True
  755. else:
  756. if self.startetAni < len(self.startingAni):
  757. if self.startNextAni != 0 and self.startNextAni < time.clock() and self.startingAni[self.startetAni][1] == 0:
  758. self.startNextAni = time.clock() + 0.3
  759. self.startingAni[self.startetAni][0] = 1
  760. self.startetAni += 1
  761.  
  762. if self.startetAni-1 < 4 and self.startingAni[self.startetAni-1][0] == 1 and self.startingAni[self.startetAni-1][1] == 0:
  763. self.startingAni[self.startetAni-1][1] = 1
  764. self.AniImageObjects[self.startetAni-1].ResetFrame()
  765. self.AniImageObjects[self.startetAni-1].Show()
  766. self.GetChild("empty_slot_%d" % int(self.startetAni-1)).Hide()
  767. snd.PlaySound("sound/ui/broken_glass.wav")
  768. if self.startetAni-1 == 3:
  769. self.showRandomItemName = True
  770.  
  771. if self.clickOpenButton == True:
  772. if self.showRandomItemName == True:
  773. self.cur[0] += (self.dest[0] - self.cur[0]) / 50.0
  774. if abs(self.cur[0] - self.dest[0]) < 0.5:
  775. self.cur[0] = self.dest[0]
  776. item.SelectItem(self.rand_reward)
  777. self.GetChild("random_item_name").SetText("%dx %s" %(self.cur[0], item.GetItemName()))
  778.  
  779. self.cur[1] += (self.dest[1] - self.cur[1]) / 15.0
  780. if abs(self.cur[1] - self.dest[1]) < 0.8:
  781. self.cur[1] = self.dest[1]
  782. self.GetChild("money_text").SetText("%s" % (localeInfo.NumberWithPoint(int(self.cur[1]))))
  783.  
  784. self.cur[2] += (self.dest[2] - self.cur[2]) / 50.0
  785. if abs(self.cur[2] - self.dest[2]) < 0.5:
  786. self.cur[2] = self.dest[2]
  787. self.GetChild("exp_text").SetText("%d%%" %(self.cur[2]))
  788.  
  789. class HuntingMiniWindow(ui.Window):
  790. def __init__(self):
  791. ui.Window.__init__(self)
  792. self.level = 0
  793. self.mob = 0
  794. self.cur_count = 0
  795. self.dest_count = 0
  796.  
  797. self.LoadWindow()
  798.  
  799. def __del__(self):
  800. self.level = 0
  801. self.mob = 0
  802. self.cur_count = 0
  803. self.dest_count = 0
  804. ui.Window.__del__(self)
  805.  
  806. def Show(self):
  807. ui.Window.Show(self)
  808.  
  809. def Close(self):
  810. constInfo.HUNTING_MINI_UI_SHOW = 0
  811. self.Hide()
  812.  
  813. def OnPressEscapeKey(self):
  814. self.Close()
  815. return True
  816.  
  817. def Destroy(self):
  818. self.Hide()
  819.  
  820. def LoadWindow(self):
  821. try:
  822. self.AddFlag("movable")
  823. self.AddFlag("float")
  824. self.SetSize(152, 62)
  825. self.SetPosition(200, wndMgr.GetScreenHeight() - self.GetHeight() - 110)
  826.  
  827. self.background_image = ui.MakeExpandedImageBox(self, "d:/ymir work/ui/public/huntsystem/mini_ui_board.tga", 0, 0, "attach")
  828. self.background_image.SetParent(self)
  829. self.background_image.Show()
  830.  
  831. self.close_button = ui.Button()
  832. self.close_button.SetParent(self.background_image)
  833. self.close_button.SetUpVisual("d:/ymir work/ui/public/huntsystem/mini_button_close_normal.sub")
  834. self.close_button.SetOverVisual("d:/ymir work/ui/public/huntsystem/mini_button_close_hover.sub")
  835. self.close_button.SetDownVisual("d:/ymir work/ui/public/huntsystem/mini_button_close_down.sub")
  836. self.close_button.SetEvent(self.Close)
  837. self.close_button.SetPosition(136, 8)
  838. self.close_button.Show()
  839.  
  840. self.title_text = ui.TextLine()
  841. self.title_text.SetParent(self.background_image)
  842. self.title_text.SetWindowHorizontalAlignCenter()
  843. self.title_text.SetHorizontalAlignCenter()
  844. self.title_text.SetFontName(localeInfo.UI_DEF_FONT_LARGE)
  845. self.title_text.SetPosition(0, 8)
  846. self.title_text.SetOutline()
  847. self.title_text.SetText("Jagdmission - Lv.10")
  848. self.title_text.Show()
  849.  
  850. self.mob_text = ui.TextLine()
  851. self.mob_text.SetParent(self.background_image)
  852. self.mob_text.SetWindowHorizontalAlignCenter()
  853. self.mob_text.SetHorizontalAlignCenter()
  854. self.mob_text.SetPosition(0, 26)
  855. self.mob_text.SetOutline()
  856. self.mob_text.SetText("Weißer-Eid Kommandantin")
  857. self.mob_text.Show()
  858.  
  859. self.count_text = ui.TextLine()
  860. self.count_text.SetParent(self.background_image)
  861. self.count_text.SetHorizontalAlignCenter()
  862. self.count_text.SetPosition(32, 39)
  863. self.count_text.SetOutline()
  864. self.count_text.SetText("17 / 45")
  865. self.count_text.Show()
  866.  
  867. self.gauge_image = ui.MakeExpandedImageBox(self, "d:/ymir work/ui/public/huntsystem/mini_gauge_blue.sub", 56, 44, "not_pick")
  868. self.gauge_image.SetParent(self.background_image)
  869. self.gauge_image.Show()
  870.  
  871. except:
  872. import exception
  873. exception.Abort("HuntingMiniWindow.LoadWindow.BindObject")
  874.  
  875. def SetInfo(self, level, monster, cur_count, dest_count):
  876. self.level = level
  877. self.mob = monster
  878. self.dest_count = dest_count
  879. self.UpdateCount(cur_count)
  880. self.title_text.SetText(uiScriptLocale.HUNTING_SYSTEM_TITLE % self.level)
  881. mob_name = str(nonplayer.GetMonsterName(monster))
  882. self.mob_text.SetText(mob_name)
  883.  
  884. def UpdateCount(self, count):
  885. self.cur_count = count
  886. self.count_text.SetText("%d / %d" % (self.cur_count, self.dest_count))
  887. if self.cur_count >= self.dest_count:
  888. self.gauge_image.LoadImage("d:/ymir work/ui/public/huntsystem/mini_gauge_green.sub")
  889. else:
  890. self.gauge_image.LoadImage("d:/ymir work/ui/public/huntsystem/mini_gauge_blue.sub")
  891. self.gauge_image.SetPercentage(self.cur_count, self.dest_count)
  892.  
  893. class ListBoxItems(ui.Window):
  894. class Item(ui.Window):
  895. def __init__(self, parent, index, vnum, count):
  896. ui.Window.__init__(self)
  897. ui.Window.SetParent(self, parent)
  898.  
  899. self.tooltipItem = uiToolTip.ItemToolTip()
  900. self.tooltipItem.Hide()
  901.  
  902. self.parent = proxy(parent)
  903. self.SetWindowName("ListBox_Item")
  904. self.xBase, self.yBase = 0, 0
  905.  
  906. self.index = index
  907. self.vnum = vnum
  908. self.count = count
  909.  
  910. self.background_image = ui.MakeExpandedImageBox(self, "d:/ymir work/ui/public/slot_base.sub", 0, 0, "not_pick")
  911. self.background_image.SetParent(self)
  912. self.background_image.Show()
  913.  
  914. item.SelectItem(self.vnum)
  915. self.item_image = ui.MakeExpandedImageBox(self, item.GetIconImageFileName(), 0, 0)
  916. # self.item_image.SetParent(self.background_image)
  917.  
  918. self.item_image.SAFE_SetStringEvent("MOUSE_OVER_IN",self.OverInItem,)
  919. self.item_image.SAFE_SetStringEvent("MOUSE_OVER_OUT",self.OverOutItem)
  920.  
  921. self.item_image.Show()
  922.  
  923. self.item_count = ui.NumberLine()
  924. self.item_count.SetParent(self.item_image)
  925. self.item_count.SetWindowName("itemCount")
  926. self.item_count.SetHorizontalAlignRight()
  927. self.item_count.SetNumber(str(self.count))
  928. self.item_count.SetPosition(32 - 4, 32 - 10)
  929. self.item_count.Show()
  930.  
  931. def __del__(self):
  932. ui.Window.__del__(self)
  933. self.xBase, self.yBase = 0, 0
  934. self.index = 0
  935. self.vnum = 0
  936. self.count = 0
  937. self.background_image = None
  938. self.item_image = None
  939. self.item_count = None
  940.  
  941. def SetBasePosition(self, x, y):
  942. self.xBase = x
  943. self.yBase = y
  944.  
  945. def GetBasePosition(self):
  946. return (self.xBase, self.yBase)
  947.  
  948. def OverInItem(self):
  949. if self.tooltipItem:
  950. self.tooltipItem.ClearToolTip()
  951. self.tooltipItem.AddItemData(self.vnum, metinSlot = [0 for i in xrange(player.METIN_SOCKET_MAX_NUM)])
  952. self.tooltipItem.ShowToolTip()
  953.  
  954. def OverOutItem(self):
  955. if self.tooltipItem:
  956. self.tooltipItem.HideToolTip()
  957.  
  958. def GetIndex(self):
  959. return self.index
  960.  
  961. def Show(self):
  962. ui.Window.Show(self)
  963.  
  964. def OnRender(self):
  965. xList, yList = self.parent.GetGlobalPosition()
  966.  
  967. if self.background_image:
  968. self.background_image.SetClipRect(xList, yList, xList + self.parent.GetWidth(), yList + self.parent.GetHeight())
  969. self.item_image.SetClipRect(xList, yList, xList + self.parent.GetWidth(), yList + self.parent.GetHeight())
  970.  
  971. if self.item_count:
  972. xText, yText = self.item_count.GetGlobalPosition()
  973. wText, hText = self.item_count.GetWidth(), 7
  974.  
  975. if yText < yList or (yText + hText > yList + self.parent.GetHeight()):
  976. self.item_count.Hide()
  977. else:
  978. self.item_count.Show()
  979.  
  980. def __init__(self):
  981. ui.Window.__init__(self)
  982. self.SetWindowName("ListBox")
  983. self.globalParent = None
  984. self.index_list = 0
  985. self.object_list = []
  986.  
  987. def __del__(self):
  988. ui.Window.__del__(self)
  989. self.globalParent = None
  990. self.index_list = 0
  991. self.object_list = []
  992.  
  993. def GetObjectCount(self):
  994. count = 0
  995. for i in xrange(len(self.object_list)):
  996. count += 1
  997. return count
  998.  
  999. def SetGlobalParent(self, parent):
  1000. self.globalParent = proxy(parent)
  1001.  
  1002. def OnScroll(self, scrollPos):
  1003. totalHeight = 0
  1004. for item in self.object_list:
  1005. totalHeight += item.GetHeight()
  1006.  
  1007. totalHeight -= self.GetHeight()
  1008.  
  1009. for i in xrange(len(self.object_list)):
  1010. x, y = self.object_list[i].GetLocalPosition()
  1011. xB, yB = self.object_list[i].GetBasePosition()
  1012. setPos = yB - int(scrollPos * totalHeight)
  1013. self.object_list[i].SetPosition(xB, setPos)
  1014.  
  1015. def AppendObject(self, item_vnum, item_count, space_y):
  1016. self.index_list += 1
  1017. item = self.Item(self, self.index_list, item_vnum, item_count)
  1018. item.SetSize(32, 32 + space_y)
  1019.  
  1020. if len(self.object_list) == 0:
  1021. item.SetPosition(0, 0)
  1022. item.SetBasePosition(0, 0)
  1023. else:
  1024. x, y = self.object_list[-1].GetLocalPosition()
  1025. item.SetPosition(0, y + self.object_list[-1].GetHeight())
  1026. item.SetBasePosition(0, y + self.object_list[-1].GetHeight())
  1027.  
  1028. item.Show()
  1029. self.object_list.append(item)
  1030.  
  1031. def ClearList(self):
  1032. self.index_list = 0
  1033. self.object_list = []
  1034.  
  1035. class ScrollBar(ui.DragButton):
  1036. def __init__(self):
  1037. ui.DragButton.__init__(self)
  1038. self.AddFlag("float")
  1039. self.AddFlag("movable")
  1040. self.AddFlag("restrict_x")
  1041.  
  1042. self.eventScroll = lambda *arg: None
  1043. self.movearea = 0
  1044. self.currentPos = 0.0
  1045.  
  1046. def __del__(self):
  1047. ui.DragButton.__del__(self)
  1048. self.movearea = 0
  1049. self.currentPos = 0.0
  1050. self.eventScroll = lambda *arg: None
  1051.  
  1052. def SetMovementArea(self, x, y, width, height):
  1053. self.movearea = height - y - self.GetHeight()
  1054. self.SetRestrictMovementArea(x, y, width, height)
  1055.  
  1056. def SetTexture(self, image):
  1057. self.SetUpVisual(image)
  1058. self.SetOverVisual(image)
  1059. self.SetDownVisual(image)
  1060.  
  1061. def SetScrollEvent(self, event):
  1062. self.eventScroll = event
  1063.  
  1064. def SetPos(self, pos):
  1065. pos = max(0.0, pos)
  1066. pos = min(1.0, pos)
  1067.  
  1068. yPos = float(pos * self.movearea)
  1069.  
  1070. self.SetPosition(12, yPos)
  1071. self.OnMove()
  1072.  
  1073. def GetPos(self):
  1074. return self.currentPos
  1075.  
  1076. def OnMove(self):
  1077. (xLocal, yLocal) = self.GetLocalPosition()
  1078. self.currentPos = float(yLocal) / float(self.movearea)
  1079.  
  1080. self.eventScroll()
Advertisement
Add Comment
Please, Sign In to add comment