Advertisement
deadx2

Untitled

Aug 7th, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 34.49 KB | None | 0 0
  1. import uimg, grp, nonplayer, math, constInfo, time, item, uiToolTip, uiCommon, event, chat
  2.  
  3. pos_x = [52, (52+110), (52+(110*2)), (52+(110*3)), (52+(110*4)), 52, (52+110), (52+110*2)]
  4. pos_y = [90, 90, 90, 90, 90, 120, 120, 120]
  5.  
  6. class AchievementWindow(uimg.ScriptWindow):
  7.    
  8.     def __init__(self):
  9.         uimg.ScriptWindow.__init__(self)
  10.         self.isLoaded = False
  11.         self.__LoadWindow()
  12.        
  13.     def __LoadWindow(self):
  14.         try:
  15.             pyScrLoader = uimg.PythonScriptLoader()
  16.             pyScrLoader.LoadScriptFile(self, "UIScript/Achievement.py")
  17.         except:
  18.             import exception
  19.             exception.Abort("AchievementWindow.LoadWindow.LoadObject")
  20.            
  21.         self.categorys = [
  22.             ["|cffe6d0a2Poziom", 1],
  23.             ["|cffe6d0a2Twoja Droga", 2],
  24.             ["|cffe6d0a2Biolog", 3],
  25.             ["|cffe6d0a2Pupile", 4],
  26.             ["|cffe6d0a2Wyzwania", 5],
  27.             ["|cffe6d0a2Zabójstwa", 6],
  28.             ["|cffe6d0a2Inne", 7],
  29.         ]
  30.  
  31.         self.categorysName = [
  32.             ["|cffe6d0a2Podsumowanie", 0],
  33.             ["|cffe6d0a2Poziom", 1],
  34.             ["|cffe6d0a2Twoja Droga", 2],
  35.             ["|cffe6d0a2Biolog", 3],
  36.             ["|cffe6d0a2Pupile", 4],
  37.             ["|cffe6d0a2Wyzwania", 5],
  38.             ["|cffe6d0a2Zabójstwa", 6],
  39.             ["|cffe6d0a2Inne", 7],
  40.         ]
  41.        
  42.  
  43.         self.category = 0
  44.         self.categoryName = "|cffe6d0a2Podsumowanie"
  45.         self.type = 0
  46.         self.achievementsPos = 0
  47.         self.progress = {}
  48.        
  49.         self.BindObjects()
  50.         self.BindEvents()
  51.         self.isLoaded = True
  52.    
  53.     def BindObjects(self):
  54.         self.board = self.GetChild("board")
  55.        
  56.         self.PokazJebaneSkille = uimg.Button()
  57.         self.PokazJebaneSkille.SetParent(self.board)
  58.         self.PokazJebaneSkille.SetPosition(250, 40)
  59.         self.PokazJebaneSkille.SetUpVisual("illumina/skill_system/btn_skile_01.tga")
  60.         self.PokazJebaneSkille.SetOverVisual("illumina/skill_system/btn_skile_02.tga")
  61.         self.PokazJebaneSkille.SetDownVisual("illumina/skill_system/btn_skile_03.tga")
  62.     #   self.PokazJebaneSkille.SetText("Umiejetnosci")
  63.         self.PokazJebaneSkille.SetEvent(self.PokazTeSkille)
  64.         self.PokazJebaneSkille.Show()
  65.        
  66.         self.elements = {
  67.             'windows' : {'home' : self.GetChild("HomeWindow"), 'achievements' : self.GetChild("AchievementsWindow")},
  68.             'objects' : {
  69.                 'shopButton' : self.GetChild("AchievementshopButton"),
  70.         #       'leftArrow' : self.GetChild("LeftArrow"), 'rightArrow' : self.GetChild("RightArrow"),
  71.                 'home' : {
  72.                     'box_0' : AchievementBox(), 'box_1' : AchievementBox(), 'box_2' : AchievementBox(), 'box_3' : AchievementBox(),
  73.                     'last_box_0' : AchievementLastFinished(), 'last_box_1' : AchievementLastFinished(), 'last_box_2' : AchievementLastFinished(), 'last_box_3' : AchievementLastFinished(), 'last_box_4' : AchievementLastFinished(), 'last_box_5' : AchievementLastFinished(), 'last_box_6' : AchievementLastFinished(), #'last_box_7' : AchievementLastFinished(),
  74.                     'last_window' : self.GetChild("bgLastAchievements"),
  75.                     'upArrow' : self.GetChild("UpArrow"), 'downArrow' : self.GetChild("DownArrow"),
  76.                     'upArrowLast' : self.GetChild("LastUpArrow"), 'downArrowLast' : self.GetChild("LastDownArrow"),
  77.                 },
  78.                 'achievements' : {
  79.                     'scrollbar' : self.GetChild("ScrollBar"),
  80.                     'box_0' : AchievementBox(), 'box_1' : AchievementBox(), 'box_2' : AchievementBox(), 'box_3' : AchievementBox(), 'box_4' : AchievementBox(),
  81.                     'btn_type_0' : self.GetChild("Type0Button"), 'btn_type_1' : self.GetChild("Type1Button"), 'btn_type_2' : self.GetChild("Type2Button"),
  82.                     'type_1' : [], 'type_2' : [],
  83.                 },
  84.             }
  85.         }
  86.         self.arrows = {'categorys' : 0, 'global_achievements' : 0, 'last_achievements' : 0}
  87.        
  88.     def ThinBoard(self, parent, moveable, x, y, width, heigh, center):
  89.         thin = uimg.ThinBoard()
  90.         if parent != None:
  91.             thin.SetParent(parent)
  92.         if moveable == TRUE:
  93.             thin.AddFlag('movable')
  94.             thin.AddFlag('float')
  95.         thin.SetSize(width, heigh)
  96.         thin.SetPosition(x, y)
  97.         if center == TRUE:
  98.             thin.SetCenterPosition()
  99.         thin.Show()
  100.         return thin
  101.    
  102.     def BindEvents(self):
  103.         self.globalProgress = AchievementProgressBar()
  104.         #self.globalProgress = uimg.ThinBoard()
  105.         self.globalProgress.SetParent(self.board)
  106.         self.globalProgress.SetSize(440, 30)
  107.         self.globalProgress.SetPosition(0, 46+9)
  108.         self.globalProgress.SetWindowHorizontalAlignCenter()
  109.         self.globalProgress.SetText('|cffa08784Całość wykonanych osiągnięć ')
  110.         self.globalProgress.SetProgress(10, 155)
  111.         self.globalProgress.Show()
  112.        
  113.         self.board.SetCloseEvent(uimg.__mem_func__(self.Close))
  114.         self.shopButton = AchievementShopWindow()
  115.         self.elements['objects']['shopButton'].SetEvent(uimg.__mem_func__(self.shopButton.Open))
  116.        
  117.     #   self.elements['objects']['leftArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'CATEGORY_LEFT')
  118.     #   self.elements['objects']['rightArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'CATEGORY_RIGHT')
  119.        
  120.         self.elements['objects']['home']['upArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'GLOBAL_UP')
  121.         self.elements['objects']['home']['downArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'GLOBAL_DOWN')
  122.        
  123.         self.elements['objects']['home']['upArrowLast'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'LAST_UP')
  124.         self.elements['objects']['home']['downArrowLast'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'LAST_DOWN')
  125.        
  126.         self.elements['objects']['achievements']['scrollbar'].SetScrollEvent(uimg.__mem_func__(self.__OnScroll))
  127.        
  128.         self.elements['objects']['achievements']['box_0'].Open(self.elements['windows']['achievements'], -10, 40)
  129.         self.elements['objects']['achievements']['box_1'].Open(self.elements['windows']['achievements'], -10, 40+40+20)
  130.         self.elements['objects']['achievements']['box_2'].Open(self.elements['windows']['achievements'], -10, 40+(40+20)*2)
  131.         self.elements['objects']['achievements']['box_3'].Open(self.elements['windows']['achievements'], -10, 40+(40+20)*3)
  132.         self.elements['objects']['achievements']['box_4'].Open(self.elements['windows']['achievements'], -10, 40+(40+20)*4)
  133.        
  134.         self.elements['objects']['home']['box_0'].Open(self.elements['windows']['home'], -120, 40)
  135.         self.elements['objects']['home']['box_1'].Open(self.elements['windows']['home'], -120, 40+58+14)
  136.         self.elements['objects']['home']['box_2'].Open(self.elements['windows']['home'], -120, 40+(58+14)*2)
  137.         self.elements['objects']['home']['box_3'].Open(self.elements['windows']['home'], -120, 40+(58+14)*3)
  138.        
  139.         self.elements['objects']['home']['last_box_0'].Open(self.elements['objects']['home']['last_window'], 0, 42)
  140.         self.elements['objects']['home']['last_box_1'].Open(self.elements['objects']['home']['last_window'], 0, 42+30+7)
  141.         self.elements['objects']['home']['last_box_2'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*2)
  142.         self.elements['objects']['home']['last_box_3'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*3)
  143.         self.elements['objects']['home']['last_box_4'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*4)
  144.         self.elements['objects']['home']['last_box_5'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*5)
  145.         self.elements['objects']['home']['last_box_6'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*6)
  146.     #   self.elements['objects']['home']['last_box_7'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*7)
  147.        
  148.         for i in xrange(3):
  149.             self.elements['objects']['achievements']['btn_type_%d' % i].SetEvent(uimg.__mem_func__(self.SetType), i)
  150.  
  151.     def __del__(self):
  152.         uimg.ScriptWindow.__del__(self)
  153.        
  154.     def SetCategory(self, category):
  155.         self.achievementsPos = 0
  156.         self.category = category
  157.         self.categoryName = self.categorysName[category][0]
  158.         self.RefreshCategorys()
  159.         if self.category == 0:
  160.             self.elements['windows']['achievements'].Hide()
  161.             self.elements['windows']['home'].Show()
  162.             self.arrows['global_achievements'] = 0
  163.             self.RefreshGlobalProgress()
  164.             self.RefreshLastFinished()
  165.         else:
  166.             self.CreateTypes()
  167.             self.elements['windows']['home'].Hide()
  168.             self.elements['windows']['achievements'].Show()
  169.             self.SetType(0)
  170.            
  171.     def CreateTypes(self):
  172.         self.elements['objects']['achievements']['type_1'] = []
  173.         self.elements['objects']['achievements']['type_2'] = []
  174.         try:
  175.             for i in xrange(len(constInfo.Achievements["achievements"][self.category])):
  176.                 if constInfo.Achievements["achievements"][self.category][i][0] < constInfo.Achievements["achievements"][self.category][i][1]:
  177.                     self.elements['objects']['achievements']['type_1'].append(constInfo.Achievements["achievements"][self.category][i])
  178.                 elif constInfo.Achievements["achievements"][self.category][i][0] >= constInfo.Achievements["achievements"][self.category][i][1]:
  179.                     self.elements['objects']['achievements']['type_2'].append(constInfo.Achievements["achievements"][self.category][i])
  180.         except:
  181.             pass
  182.  
  183.     def __OnClickArrow(self, arrow):
  184.         if arrow == 'CATEGORY_LEFT':
  185.             self.arrows['categorys'] -= 1
  186.             self.RefreshCategorys()
  187.         elif arrow == 'CATEGORY_RIGHT':
  188.             self.arrows['categorys'] += 1
  189.             self.RefreshCategorys()
  190.         elif arrow == 'GLOBAL_UP':
  191.             self.arrows['global_achievements'] -= 1
  192.             self.RefreshGlobalProgress()
  193.         elif arrow == 'GLOBAL_DOWN':
  194.             self.arrows['global_achievements'] += 1
  195.             self.RefreshGlobalProgress()
  196.         elif arrow == 'LAST_UP':
  197.             self.arrows['last_achievements'] -= 1
  198.             self.RefreshLastFinished()
  199.         elif arrow == 'LAST_DOWN':
  200.             self.arrows['last_achievements'] += 1
  201.             self.RefreshLastFinished()
  202.            
  203.     def PokazTeSkille(self):
  204.         event.QuestButtonClick(constInfo.Okienko)
  205.            
  206.  
  207.     def SetType(self, type):
  208.         for i in xrange(3):
  209.             self.elements['objects']['achievements']['btn_type_%d' % i].SetUp()
  210.         self.elements['objects']['achievements']['btn_type_%d' % type].Down()
  211.         self.type = type
  212.         self.achievementsPos = 0
  213.         self.elements['objects']['achievements']['scrollbar'].SetPos(0)
  214.         self.RefreshAchievements()
  215.        
  216.     def RefreshGlobalProgress(self):
  217.         self.SetGlobalProgress()
  218.         try:
  219.             for i in xrange(4):
  220.                 self.elements['objects']['home']['box_%d' % i].Hide()
  221.         except:
  222.             pass
  223.         try:
  224.             for i in xrange(min(4, len(self.categorys))):
  225.                 curCategory = self.categorys[self.arrows['global_achievements'] + i][1]
  226.                 self.elements['objects']['home']['box_%d' % i].SetContent(0, self.progress['current_category_%d' % curCategory], self.progress['max_category_%d' % curCategory], 0)
  227.                 self.elements['objects']['home']['box_%d' % i].SetTitle(self.categorys[curCategory-1][0])
  228.                 self.elements['objects']['home']['box_%d' % i].Show()
  229.         except:
  230.             pass
  231.        
  232.         if (self.categorys > 4):
  233.             if (self.arrows['global_achievements'] <= 0):
  234.                 self.elements['objects']['home']['downArrow'].Show()
  235.                 self.elements['objects']['home']['upArrow'].Hide()
  236.             elif (self.arrows['global_achievements']+4 < len(self.categorys)):
  237.                 self.elements['objects']['home']['downArrow'].Show()
  238.                 self.elements['objects']['home']['upArrow'].Show()
  239.             elif (self.arrows['global_achievements']+4 >= len(self.categorys)):
  240.                 self.elements['objects']['home']['downArrow'].Hide()
  241.                 self.elements['objects']['home']['upArrow'].Show()
  242.         else:
  243.             self.elements['objects']['home']['upArrow'].Hide()
  244.             self.elements['objects']['home']['downArrow'].Hide()
  245.            
  246.     def RefreshLastFinished(self):
  247.         for i in xrange(7):
  248.             self.elements['objects']['home']['last_box_%d' % i].Hide()
  249.  
  250.         try:
  251.             for i in xrange(min(7, len(constInfo.Achievements['last_achievements']))):
  252.                 curAchievement = constInfo.Achievements['last_achievements'][(len(constInfo.Achievements['last_achievements'])-1) - (self.arrows['last_achievements'] + i)]
  253.                 if curAchievement[0] == 2 or curAchievement[0] == 3 or curAchievement[0] == 4:
  254.                     self.elements['objects']['home']['last_box_%d' % i].SetText(self.GetDescByCat(curAchievement[0]) % (curAchievement[1], nonplayer.GetMonsterName(curAchievement[3])))
  255.                 else:
  256.                     self.elements['objects']['home']['last_box_%d' % i].SetText(self.GetDescByCat(curAchievement[0]) % curAchievement[1])
  257.                 self.elements['objects']['home']['last_box_%d' % i].SetPoints(curAchievement[2])
  258.                 self.elements['objects']['home']['last_box_%d' % i].Show()
  259.         except:
  260.             pass
  261.            
  262.         if (len(constInfo.Achievements['last_achievements']) > 7):
  263.             if (self.arrows['last_achievements'] <= 0):
  264.                 self.elements['objects']['home']['downArrowLast'].Show()
  265.                 self.elements['objects']['home']['upArrowLast'].Hide()
  266.             elif (self.arrows['last_achievements']+7 < len(constInfo.Achievements['last_achievements'])):
  267.                 self.elements['objects']['home']['downArrowLast'].Show()
  268.                 self.elements['objects']['home']['upArrowLast'].Show()
  269.             elif (self.arrows['last_achievements']+7 >= len(constInfo.Achievements['last_achievements'])):
  270.                 self.elements['objects']['home']['downArrowLast'].Hide()
  271.                 self.elements['objects']['home']['upArrowLast'].Show()
  272.         else:
  273.             self.elements['objects']['home']['upArrowLast'].Hide()
  274.             self.elements['objects']['home']['downArrowLast'].Hide()
  275.        
  276.     def RefreshCategorys(self):
  277.         try:
  278.             for i in xrange(8):
  279.                 self.elements['objects']['category_%d' % i].Hide()
  280.         except:
  281.             pass
  282.         try:
  283.             tmpCategorys = [["|cffe6d0a2Podsumowanie", 0]]
  284.             tmpCategorys += self.categorys
  285.             for i in xrange(min(8, len(tmpCategorys))):
  286.                 scrolledId = i + self.arrows['categorys']
  287.             #   self.elements['objects']['category_%d' % i] = self.CreateCategoryButton(self.board, 35+18+111*i, 94, tmpCategorys[scrolledId][0], self.SetCategory, tmpCategorys[scrolledId][1])
  288.                 self.elements['objects']['category_%d' % i] = self.CreateCategoryButton(self.board, pos_x[i], pos_y[i], tmpCategorys[scrolledId][0], self.SetCategory, tmpCategorys[scrolledId][1])
  289.                 self.elements['objects']['category_%d' % i].Show()
  290.             #   if self.categoryName == tmpCategorys[scrolledId][0]:
  291.             #       self.elements['objects']['category_%d' % i].Down()
  292.             #   self.elements['objects']['category_%d' % i].Show()
  293.         except:
  294.             pass
  295.         '''
  296.         if (len(tmpCategorys) > 5):
  297.             if (self.arrows['categorys'] <= 0):
  298.                 self.elements['objects']['rightArrow'].Show()
  299.                 self.elements['objects']['leftArrow'].Hide()
  300.             elif (self.arrows['categorys']+5 < len(tmpCategorys)):
  301.                 self.elements['objects']['leftArrow'].Show()
  302.                 self.elements['objects']['rightArrow'].Show()
  303.             elif (self.arrows['categorys']+5 >= len(tmpCategorys)):
  304.                 self.elements['objects']['rightArrow'].Hide()
  305.                 self.elements['objects']['leftArrow'].Show()
  306.         else:
  307.             self.elements['objects']['leftArrow'].Hide()
  308.             self.elements['objects']['rightArrow'].Hide()
  309.         '''
  310.     def RefreshAchievements(self):
  311.         self.CreateTypes()
  312.         for i in xrange(5):
  313.             self.elements['objects']['achievements']['box_%d' % i].Hide()
  314.  
  315.         try:
  316.             if self.type == 0:
  317.                 achievements = constInfo.Achievements["achievements"][self.category]
  318.             elif self.type == 1:
  319.                 achievements = self.elements['objects']['achievements']['type_1']
  320.             elif self.type == 2:
  321.                 achievements = self.elements['objects']['achievements']['type_2']
  322.                
  323.             for i in xrange(5):
  324.                 curAchievement = achievements[self.achievementsPos + i]
  325.                 self.elements['objects']['achievements']['box_%d' % i].SetContent(self.category, curAchievement[0], curAchievement[1], curAchievement[2], curAchievement[3])
  326.                 self.elements['objects']['achievements']['box_%d' % i].Show()
  327.         except:
  328.             self.elements['objects']['achievements']['scrollbar'].Hide()
  329.             return
  330.            
  331.         if len(achievements) <= 5:
  332.             self.elements['objects']['achievements']['scrollbar'].Hide()
  333.         else:
  334.             self.elements['objects']['achievements']['scrollbar'].SetMiddleBarSize(float(5)/float(len(achievements)))
  335.             self.elements['objects']['achievements']['scrollbar'].Show()
  336.            
  337.     def __OnScroll(self):
  338.         try:
  339.             if self.type == 0:
  340.                 achievementslen = len(constInfo.Achievements["achievements"][self.category])
  341.             elif self.type == 1:
  342.                 achievementslen = len(self.elements['objects']['achievements']['type_1'])
  343.             elif self.type == 2:
  344.                 achievementslen = len(self.elements['objects']['achievements']['type_2'])
  345.             self.achievementsPos = int(self.elements['objects']['achievements']['scrollbar'].GetPos() * (achievementslen-5))
  346.         except:
  347.             pass
  348.         self.RefreshAchievements()
  349.        
  350.     def SetGlobalProgress(self):
  351.         Finished,inProgress = 0,0
  352.         for i in xrange(len(self.categorys)):
  353.             self.progress['current_category_%d' % self.categorys[i][1]] = 0
  354.             self.progress['max_category_%d' % self.categorys[i][1]] = 0
  355.         for cat in constInfo.Achievements["achievements"]:
  356.             for i in xrange(len(constInfo.Achievements["achievements"][cat])):
  357.                 inProgress += 1
  358.                 if constInfo.Achievements["achievements"][cat][i][0] >= constInfo.Achievements["achievements"][cat][i][1]:
  359.                     self.progress['current_category_%d' % cat] += 1
  360.                     Finished += 1
  361.             self.progress['max_category_%d' % cat] = len(constInfo.Achievements["achievements"][cat])
  362.         self.globalProgress.SetProgress(Finished, inProgress)
  363.        
  364.     def SetAchievementFinisehd(self, category, valueReached, points, mobVnum):
  365.         firstLine = 'Has alcanzado un logro:'
  366.         if category == 2 or category == 3 or category == 4:
  367.             secondLine = self.GetDescByCat(category) % (valueReached, nonplayer.GetMonsterName(mobVnum))
  368.         else:
  369.             secondLine = self.GetDescByCat(category) % valueReached
  370.         thirdLine = '|cffa08784Punkty: %d' % points
  371.         self.finishedAchievement = FinishedAchievementDialog()
  372.         self.finishedAchievement.SetFirstLineText(firstLine)
  373.         self.finishedAchievement.SetSecondLineText(secondLine)
  374.         self.finishedAchievement.SetThirdLineText(thirdLine)
  375.         self.finishedAchievement.Open(10)
  376.        
  377.     def GetDescByCat(self, category):
  378.         return ("Subir al nivel %d","Matar a %dx %s","Matar a %dx %s","Romper %dx %s","|cffa08784Jugar |cffa07970%d |cffa08784minutos","Matar %dx jugadores")[category-1]
  379.        
  380.     def CreateCategoryButton(self, parent, x, y, text, func, arg):
  381.         Button = uimg.RadioButton()
  382.         Button.SetParent(parent)
  383.         Button.SetUpVisual("illumina/inne/btn_kod2_long_01.tga")
  384.         Button.SetOverVisual("illumina/inne/btn_kod2_long_02.tga")
  385.         Button.SetDownVisual("illumina/inne/btn_kod2_long_03.tga")
  386.         Button.SetText(text)
  387.  
  388.         Button.SetEvent(uimg.__mem_func__(func), arg)
  389.         Button.SetPosition(x, y)
  390.         #Button.Down()
  391.         Button.Show()
  392.         return Button
  393.        
  394.     def Destroy(self):
  395.         self.Close()
  396.         self.ClearDictionary()
  397.        
  398.     def Open(self):
  399.         if not self.isLoaded:
  400.             self.__LoadWindow()
  401.        
  402.         self.SetCategory(0)
  403.         self.SetCenterPosition()
  404.         self.SetTop()
  405.         self.Show()
  406.        
  407.     def Close(self):
  408.         self.Hide()
  409.         return TRUE
  410.        
  411.     def OnPressEscapeKey(self):
  412.         self.Close()
  413.         return TRUE
  414.        
  415.     def OnPressExitKey(self):
  416.         self.Close()
  417.         return TRUE
  418.  
  419. class AchievementBox(uimg.ScriptWindow):
  420.    
  421.     def __init__(self):
  422.         uimg.ScriptWindow.__init__(self)
  423.         self.data = [0,0]
  424.         self.isLoaded = False
  425.        
  426.     def LoadWindow(self):
  427.         try:
  428.             pyScrLoader = uimg.PythonScriptLoader()
  429.             pyScrLoader.LoadScriptFile(self, "UIScript/achievement_box.py")
  430.         except:
  431.             import exception
  432.             exception.Abort("AchievementBox.LoadWindow.LoadObject")
  433.            
  434.         try:
  435.             self.board = self.GetChild("board")
  436.             self.achievementTitle = self.GetChild("AchievementTitle")
  437.             self.achievementTitle.Hide()
  438.             self.achievementPoints = self.GetChild("AchievementPoints")
  439.            
  440.             self.achievementProgess = AchievementProgressBar()
  441.             self.achievementProgess.SetParent(self)
  442.             self.achievementProgess.SetSize(400, 27)
  443.             self.achievementProgess.SetPosition(15, 27-13)
  444.             self.achievementProgess.SetProgress(15, 50)
  445.             self.achievementProgess.Show()
  446.         except:
  447.             import exception
  448.             exception.Abort("AchievementBox.LoadWindow.LoadObject")
  449.  
  450.         self.isLoaded = True
  451.        
  452.     def SetContent(self, category, curValue, maxValue, points, mobVnum = 0):
  453.         self.data = [curValue, maxValue]
  454.         self.achievementProgess.SetProgress(curValue, maxValue)
  455.         if points == 0:
  456.             self.achievementPoints.Hide()
  457.         else:
  458.             self.achievementPoints.SetText('|cffa07970%d' % points)
  459.             self.achievementPoints.Show()
  460.         if category == 0:
  461.             return
  462.         if category == 2 or category == 3 or category == 4:
  463.             self.achievementProgess.SetText(self.GetDescByCat(category) % (maxValue, nonplayer.GetMonsterName(mobVnum)))
  464.         else:  
  465.             self.achievementProgess.SetText(self.GetDescByCat(category) % maxValue)
  466.            
  467.     def SetTitle(self, title):
  468.         self.achievementTitle.SetText(title)
  469.         self.achievementTitle.Show()
  470.         self.achievementProgess.SetSize(250, 27)
  471.         self.achievementProgess.SetPosition(115, 11+3)
  472.         self.achievementProgess.SetProgress(self.data[0], self.data[1])
  473.         self.achievementProgess.SetProgressPosition(125/4)
  474.         self.board.SetSize(380, 56)
  475.         self.SetSize(380, 56)
  476.        
  477.     def GetDescByCat(self, category):
  478.         return ("Subir al nivel %d","Matar a %dx %s","Matar a %dx %s","Romper %dx %s","|cffa08784Jugar |cffa07970%d |cffa08784minutos","Matar %dx jugadores")[category-1]
  479.        
  480.     def __del__(self):
  481.         uimg.ScriptWindow.__del__(self)
  482.        
  483.     def Open(self, parent, x, y):
  484.         if not self.isLoaded:
  485.             self.LoadWindow()
  486.            
  487.         self.SetParent(parent)
  488.         self.SetPosition(x, y)
  489.         self.SetWindowHorizontalAlignCenter()
  490.         self.Show()
  491.  
  492. class AchievementProgressBar(uimg.Window):
  493.  
  494.     BACKGROUND_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 1.0)
  495.     DARK_COLOR = grp.GenerateColor(0.4, 0.4, 0.4, 1.0)
  496.    
  497.     PROGRESS_COLOR = grp.GenerateColor(1.0, 0.0, 0.0, 0.2)
  498.     FINISHED_COLOR = grp.GenerateColor(0.0, 1.0, 0.0, 0.2)
  499.    
  500.     def __init__(self, layer = "UI"):
  501.         uimg.Window.__init__(self, layer)
  502.  
  503.         self.width = 0
  504.         self.height = 0    
  505.         self.progress = 0
  506.         self.isFinished = False
  507.        
  508.         self.textLine = None
  509.         self.textLineExtra = None
  510.        
  511.     def __del__(self):
  512.         uimg.Window.__del__(self)
  513.  
  514.     def SetSize(self, width, height):
  515.         uimg.Window.SetSize(self, width, height)
  516.         self.width = width
  517.         self.height = height
  518.  
  519.     def SetProgress(self, current, max):
  520.         try:
  521.             self.progress = min(math.ceil((float(current)/float(max))*100.00), 100)
  522.         except:
  523.             self.progress = 0
  524.         if self.progress == 100:
  525.             self.isFinished = True
  526.         else:
  527.             self.isFinished = False
  528.        
  529.         if not self.textLine:      
  530.             textLine = uimg.TextLine()
  531.             textLine.SetParent(self)
  532.             textLine.SetOutline()
  533.             textLine.Show()
  534.             self.textLine = textLine
  535.        
  536.         if current > max:
  537.             self.textLine.SetText('|cffa07970%d/%d' % (max, max))
  538.         else:
  539.             self.textLine.SetText('|cffa07970%d/%d' % (current, max))
  540.         self.textLine.SetPosition(150, self.GetHeight()/2)
  541.         self.textLine.SetHorizontalAlignCenter()
  542.         self.textLine.SetWindowHorizontalAlignCenter()
  543.         self.textLine.SetVerticalAlignCenter()
  544.        
  545.     def SetText(self, text):
  546.         if not self.textLineExtra:     
  547.             textLineExtra = uimg.TextLine()
  548.             textLineExtra.SetParent(self)
  549.             textLineExtra.SetPosition(12, self.GetHeight()/2)
  550.             textLineExtra.SetVerticalAlignCenter()
  551.             textLineExtra.SetOutline()
  552.             textLineExtra.Show()
  553.             self.textLineExtra = textLineExtra
  554.        
  555.         self.textLineExtra.SetText('|cffa08784%s' % text)
  556.        
  557.     def SetProgressPosition(self, x):
  558.         self.textLine.SetPosition(x, self.GetHeight()/2)
  559.  
  560.     def OnRender(self):
  561.         xRender, yRender = self.GetGlobalPosition()
  562.        
  563.         widthRender = self.width
  564.         heightRender = self.height
  565.         grp.SetColor(self.BACKGROUND_COLOR)
  566.         grp.RenderBar(xRender, yRender, widthRender, heightRender)
  567.         grp.SetColor(self.DARK_COLOR)
  568.         grp.RenderLine(xRender, yRender, widthRender, 0)
  569.         grp.RenderLine(xRender, yRender, 0, heightRender)
  570.         grp.RenderLine(xRender, yRender+heightRender, widthRender+1, 0)
  571.         grp.RenderLine(xRender+widthRender, yRender, 0, heightRender)
  572.  
  573.         if self.isFinished:
  574.             grp.SetColor(self.FINISHED_COLOR)
  575.         else:
  576.             grp.SetColor(self.PROGRESS_COLOR)
  577.         grp.RenderBar(xRender + 2, yRender + 2, (self.width - 3) * self.progress / 100, heightRender - 3)      
  578.  
  579. class AchievementLastFinished(uimg.Window):
  580.  
  581.     BOARD_WIDTH = 175-38
  582.     BOARD_HEIGHT = 30
  583.    
  584.     def __init__(self):
  585.         uimg.Window.__init__(self)
  586.        
  587.         bg = uimg.ResizableTextValue()
  588.         bg.SetParent(self)
  589.         bg.SetPosition(0, 0)
  590.         bg.SetSize(self.BOARD_WIDTH, self.BOARD_HEIGHT)
  591.         bg.SetLine('top')
  592.         bg.SetLine('bottom')
  593.         bg.SetLine('left')
  594.         bg.SetLine('right')
  595.         bg.Show()
  596.         self.Background = bg
  597.        
  598.         points_bg = uimg.ResizableTextValue()
  599.         points_bg.SetParent(self.Background)
  600.         points_bg.SetPosition(self.BOARD_WIDTH, 0)
  601.         points_bg.SetSize(38, self.BOARD_HEIGHT)
  602.         points_bg.SetLine('top')
  603.         points_bg.SetLine('bottom')
  604.         points_bg.SetLine('left')
  605.         points_bg.SetLine('right')
  606.         points_bg.Show()
  607.         self.Points = points_bg
  608.        
  609.         self.SetSize(self.BOARD_WIDTH+38, self.BOARD_HEIGHT)
  610.        
  611.     def SetText(self, text):
  612.         tmpText = text
  613.     #   if len(text) > 22:
  614.     #       tmpText = '|cffa08784%s...' % text[:22]        
  615.         self.Background.SetToolTipText(text)
  616.         self.Background.SetText(tmpText)
  617.        
  618.     def SetPoints(self, points):           
  619.         self.Points.SetText('|cffa07970+%d' % points)
  620.        
  621.     def __del__(self):
  622.         uimg.Window.__del__(self)
  623.        
  624.     def Open(self, parent, x, y):
  625.         self.SetParent(parent)
  626.         self.SetPosition(x, y)
  627.         self.SetWindowHorizontalAlignCenter()
  628.         self.Show()
  629.    
  630. class FinishedAchievementDialog(uimg.ScriptWindow):
  631.    
  632.     def __init__(self):
  633.         uimg.ScriptWindow.__init__(self)
  634.         self.__LoadDialog()
  635.  
  636.     def __del__(self):
  637.         uimg.ScriptWindow.__del__(self)
  638.  
  639.     def __LoadDialog(self):
  640.         try:
  641.             PythonScriptLoader = uimg.PythonScriptLoader()
  642.             PythonScriptLoader.LoadScriptFile(self, "UIScript/Achievement_finished_dialog.py")
  643.  
  644.         except:
  645.             import exception
  646.             exception.Abort("FinishedAchievementDialog.LoadDialog.BindObject")
  647.            
  648.         try:
  649.             self.firstLine = self.GetChild("FirstLine")
  650.             self.secondLine = self.GetChild("SecondLine")
  651.             self.thirdLine = self.GetChild("ThirdLine")
  652.         except:
  653.             import exception
  654.             exception.Abort("FinishedAchievementDialog.LoadDialog.BindObject")
  655.            
  656.     def SetFirstLineText(self, text):
  657.         self.firstLine.SetText(text)
  658.        
  659.     def SetSecondLineText(self, text):
  660.         if len(text) > 22:
  661.             text = '|cffa08784%s...' % text[:22]
  662.         self.secondLine.SetText(text)
  663.        
  664.     def SetThirdLineText(self, text):
  665.         self.thirdLine.SetText(text)
  666.  
  667.     def Open(self, waitTime):
  668.         self.endTime = time.clock() + waitTime
  669.         self.Show()    
  670.  
  671.     def Close(self):
  672.         self.Hide()
  673.  
  674.     def Destroy(self):
  675.         self.Hide()
  676.        
  677.     def OnUpdate(self):
  678.         lastTime = max(0, self.endTime - time.clock())
  679.         if 0 == lastTime:
  680.             self.Close()
  681.        
  682. #   def OnPressExitKey(self):
  683. #       self.Close()
  684. #       return TRUE
  685.        
  686. class AchievementShopWindow(uimg.ScriptWindow):
  687.  
  688.     def __init__(self):
  689.         uimg.ScriptWindow.__init__(self)
  690.         self.isLoaded = False
  691.        
  692.     def __LoadWindow(self):
  693.         try:
  694.             PythonScriptLoader = uimg.PythonScriptLoader()
  695.             PythonScriptLoader.LoadScriptFile(self, "UIScript/AchievementShop.py")
  696.  
  697.         except:
  698.             import exception
  699.             exception.Abort("AchievementShopWindow.LoadDialog.BindObject")
  700.            
  701.         self.categorys = [
  702.             ["|cffe6d0a2Bronie", 1],
  703.             ["|cffe6d0a2Zbroje", 2],
  704.             ["|cffe6d0a2Inne", 3],
  705.         ]
  706.    
  707.         self.arrows = {
  708.             'items' : 1,
  709.             'categorys' : 0,
  710.         }
  711.        
  712.         self.category = 0
  713.    
  714.         self.BindObjects()
  715.         self.BindEvents()
  716.         self.isLoaded = True
  717.        
  718.     def BindObjects(self):
  719.         self.board = self.GetChild("board")
  720.         self.elements = {
  721.             'items' : {
  722.                 'bg' : self.GetChild("bgItems"),
  723.                 'rightArrow' : self.GetChild("ItemsRightArrow"),
  724.                 'leftArrow' : self.GetChild("ItemsLeftArrow"),
  725.                 'pageNr' : self.GetChild("PageNumber"),
  726.                 'box_0' : ItemBox(),
  727.                 'box_1' : ItemBox(),
  728.                 'box_2' : ItemBox(),
  729.                 'box_3' : ItemBox(),
  730.                 'box_4' : ItemBox(),
  731.                 'box_5' : ItemBox(),
  732.                 'box_6' : ItemBox(),
  733.                 'box_7' : ItemBox(),
  734.                 'box_8' : ItemBox(),
  735.             },
  736.             'categorys' : {
  737.                 'bg' : self.GetChild("bgCategorys"),
  738.                 'upArrow' : self.GetChild("CategorysUpArrow"),
  739.                 'downArrow' : self.GetChild("CategorysDownArrow"),
  740.             },
  741.             'achievementPoints' : self.GetChild("APSlot"),
  742.         }
  743.        
  744.     def BindEvents(self):
  745.         self.board.SetCloseEvent(uimg.__mem_func__(self.Close))
  746.        
  747.         self.elements['items']['box_0'].Open(self.elements['items']['bg'], 3+10, 18)
  748.         self.elements['items']['box_1'].Open(self.elements['items']['bg'], 3+10+200+10, 18)
  749.         self.elements['items']['box_2'].Open(self.elements['items']['bg'], 3+10+(200+10)*2, 18)
  750.         self.elements['items']['box_3'].Open(self.elements['items']['bg'], 3+10, 18+122)
  751.         self.elements['items']['box_4'].Open(self.elements['items']['bg'], 3+10+200+10, 18+122)
  752.         self.elements['items']['box_5'].Open(self.elements['items']['bg'], 3+10+(200+10)*2, 18+122)
  753.         self.elements['items']['box_6'].Open(self.elements['items']['bg'], 3+10, 18+122*2)
  754.         self.elements['items']['box_7'].Open(self.elements['items']['bg'], 3+10+200+10, 18+122*2)
  755.         self.elements['items']['box_8'].Open(self.elements['items']['bg'], 3+10+(200+10)*2, 18+122*2)
  756.        
  757.         self.elements['categorys']['upArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrowButton), 'CATEGORY_UP')
  758.         self.elements['categorys']['downArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrowButton), 'CATEGORY_DOWN')
  759.         self.elements['items']['rightArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrowButton), 'ITEMS_RIGHT')
  760.         self.elements['items']['leftArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrowButton), 'ITEMS_LEFT')
  761.        
  762.     def __OnClickArrowButton(self, arrow):
  763.         if arrow == 'CATEGORY_UP':
  764.             self.arrows['categorys'] -= 1
  765.             self.RefreshCategorys()
  766.         elif arrow == 'CATEGORY_DOWN':
  767.             self.arrows['categorys'] += 1
  768.             self.RefreshCategorys()
  769.         elif arrow == 'ITEMS_LEFT':
  770.             self.arrows['items'] -= 1
  771.             self.RefreshItems()
  772.         elif arrow == 'ITEMS_RIGHT':
  773.             self.arrows['items'] += 1
  774.             self.RefreshItems()
  775.        
  776.     def RefreshCategorys(self):
  777.         try:
  778.             for i in xrange(12):
  779.                 self.elements['categorys']['category_%d' % i].Hide()
  780.         except:
  781.             pass
  782.         try:
  783.             for i in xrange(min(12, len(self.categorys))):
  784.                 scrolledId = i + self.arrows['categorys']
  785.                 self.elements['categorys']['category_%d' % i] = self.CreateCategoryButton(self.elements['categorys']['bg'], 0, 35+30*i, self.categorys[scrolledId][0], self.SetCategory, self.categorys[scrolledId][1])
  786.                 self.elements['categorys']['category_%d' % i].SetWindowHorizontalAlignCenter()
  787.                 if (self.category - 1) == i:
  788.                     self.elements['categorys']['category_%d' % i].Down()
  789.                 self.elements['categorys']['category_%d' % i].Show()
  790.         except:
  791.             pass
  792.            
  793.         if (len(self.categorys) > 12):
  794.             if (self.arrows['categorys'] <= 0):
  795.                 self.elements['categorys']['downArrow'].Show()
  796.                 self.elements['categorys']['upArrow'].Hide()
  797.             elif (self.arrows['categorys']+12 < len(self.categorys)):
  798.                 self.elements['categorys']['upArrow'].Show()
  799.                 self.elements['categorys']['downArrow'].Show()
  800.             elif (self.arrows['categorys']+12 >= len(self.categorys)):
  801.                 self.elements['categorys']['downArrow'].Hide()
  802.                 self.elements['categorys']['upArrow'].Show()
  803.         else:
  804.             self.elements['categorys']['upArrow'].Hide()
  805.             self.elements['categorys']['downArrow'].Hide()
  806.            
  807.     def CreateCategoryButton(self, parent, x, y, text, func, arg):
  808.         button = uimg.RadioButton()
  809.         button.SetParent(parent)
  810.         button.SetUpVisual("illumina/inne/btn_kod2_long_01.tga")
  811.         button.SetOverVisual("illumina/inne/btn_kod2_long_02.tga")
  812.         button.SetDownVisual("illumina/inne/btn_kod2_long_03.tga")
  813.         button.SetText(text)
  814.         button.SetEvent(uimg.__mem_func__(func), arg)
  815.         button.SetPosition(x, y)
  816.         button.Show()
  817.         return button
  818.  
  819.     def SetCategory(self, cat):
  820.         self.category = cat
  821.         self.arrows['items'] = 1
  822.         self.RefreshItems()
  823.         self.RefreshCategorys()
  824.        
  825.     def RefreshItems(self):
  826.         currentPage = self.arrows['items']
  827.         for i in xrange(9):
  828.             self.elements['items']['box_%d' % i].Hide()
  829.  
  830.         try:
  831.             for i in xrange(min(9, len(constInfo.Achievements['achievementshop'][self.category])-currentPage*9+9)):
  832.                 curItem = constInfo.Achievements['achievementshop'][self.category][i+(currentPage-1)*9]
  833.                 self.elements['items']['box_%d' % i].SetContent(curItem[0], curItem[1], curItem[2])
  834.                 self.elements['items']['box_%d' % i].Show()
  835.         except:
  836.             self.elements['items']['rightArrow'].Hide()
  837.             self.elements['items']['leftArrow'].Hide()
  838.             self.elements['items']['pageNr'].Hide()
  839.             return
  840.            
  841.         maxPage = math.ceil(float(len(constInfo.Achievements['achievementshop'][self.category]))/float(9))
  842.         if maxPage >= 1:
  843.             self.elements['items']['pageNr'].SetText('|cffa07970%d/%d' % (currentPage, maxPage))
  844.             self.elements['items']['pageNr'].Show()
  845.         else:
  846.             self.elements['items']['pageNr'].Hide()
  847.        
  848.         if currentPage * 9 >= len(constInfo.Achievements['achievementshop'][self.category]):
  849.             self.elements['items']['rightArrow'].Hide()
  850.         else:
  851.             self.elements['items']['rightArrow'].Show()
  852.  
  853.         if currentPage > 1:
  854.             self.elements['items']['leftArrow'].Show()
  855.         else:
  856.             self.elements['items']['leftArrow'].Hide()
  857.    
  858.     def OnUpdate(self):
  859.         self.elements['achievementPoints'].SetText("|cfff8d090%d Punkt?w" % constInfo.Achievements['POINTS'])
  860.        
  861.     def OnPressEscapeKey(self):
  862.         self.Close()
  863.         return TRUE
  864.    
  865.     def __del__(self):
  866.         uimg.ScriptWindow.__del__(self)
  867.        
  868.     def Close(self):
  869.         self.Hide()
  870.        
  871.     def Open(self):
  872.         if not self.isLoaded:
  873.             self.__LoadWindow()
  874.  
  875.         self.SetCategory(1)
  876.         self.RefreshCategorys()
  877.         self.SetCenterPosition()
  878.         self.SetTop()
  879.         self.Show()
  880.  
  881. class ItemBox(uimg.ScriptWindow):
  882.    
  883.     def __init__(self):
  884.         uimg.ScriptWindow.__init__(self)
  885.         self.id = 0
  886.         self.data = [0, 0]
  887.         self.isLoaded = False
  888.        
  889.     def __LoadWindow(self):
  890.         try:
  891.             PythonScriptLoader = uimg.PythonScriptLoader()
  892.             PythonScriptLoader.LoadScriptFile(self, "UIScript/AchievementShop_ItemBox.py")
  893.  
  894.         except:
  895.             import exception
  896.             exception.Abort("AchievementShop_ItemBox.LoadDialog.BindObject")
  897.            
  898.         self.itemName = self.GetChild("ItemName")
  899.         self.itemIcon = self.GetChild("ItemIcon")
  900.         self.itemPrice = self.GetChild("ItemPrice")
  901.         self.itemAmount = self.GetChild("ItemAmount")
  902.         self.buyButton = self.GetChild("BuyButton")
  903.         self.toolTip = uiToolTip.ItemToolTip()
  904.         self.toolTip.HideToolTip()
  905.        
  906.         self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_IN", self.toolTip.ShowToolTip)
  907.         self.itemIcon.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.toolTip.HideToolTip)
  908.        
  909.         self.BuyQuestion = uiCommon.QuestionDialog()
  910.         self.BuyQuestion.SetAcceptEvent(lambda arg = TRUE: self.AnswerBuyItem(arg))
  911.         self.BuyQuestion.SetCancelEvent(lambda arg = FALSE: self.AnswerBuyItem(arg))
  912.        
  913.         self.buyButton.SetEvent(uimg.__mem_func__(self.__OnClickBuyButton))
  914.         self.isLoaded = True
  915.        
  916.     def SetContent(self, id, vnum, price):
  917.         self.id = id
  918.         self.data = [vnum, price]
  919.         item.SelectItem(vnum)
  920.        
  921.         self.itemName.SetText("|cffa07970" + item.GetItemName())
  922.         self.itemIcon.LoadImage(item.GetIconImageFileName())
  923.         self.itemIcon.SetPosition(35, (46,32,25)[item.GetItemSize()[1]-1])
  924.         self.itemIcon.SetScale(1, (1,1,0.8)[item.GetItemSize()[1]-1])
  925.         self.itemPrice.SetText('|cffa08784Kosztuje: |cffa07970%d %s' % (price, "|cffa08784Pkt"))
  926.         self.itemAmount.KillFocus()
  927.        
  928.         if item.IsFlag(4) == 1:
  929.             self.GetChild("ItemAmountSlot").Show()
  930.         else:
  931.             self.GetChild("ItemAmountSlot").Hide()
  932.        
  933.         self.toolTip.ClearToolTip()
  934.         self.toolTip.AddItemData(vnum, [0,0,0])
  935.         self.toolTip.HideToolTip()
  936.        
  937.     def __OnClickBuyButton(self):
  938.         self.itemAmount.KillFocus()
  939.         amount = self.itemAmount.GetText()[10]
  940.    
  941.  
  942.         if amount == '1':
  943.             self.BuyQuestion.SetText("|cffa08784Czy chcesz kupi? %s |cffa08784za |cffa07970%d %s?" % (self.itemName.GetText(), self.data[1], "|cffa08784Punkt?w"))
  944.         else:
  945.             self.BuyQuestion.SetText("|cffa08784Czy chcesz kupi? %sx %s |cffa08784za |cffa07970%d %s?" % (amount, self.itemName.GetText(), self.data[1]*int(amount), "|cffa08784Punkt?w"))
  946.         self.BuyQuestion.Open()
  947.        
  948.     def AnswerBuyItem(self, arg):
  949.         if arg:
  950.             constInfo.Achievements['QCMD'] = 'BUY_ITEM#%d#%s' % (self.id, self.itemAmount.GetText())
  951.             event.QuestButtonClick(constInfo.Achievements['QID'])
  952.         self.BuyQuestion.Close()
  953.        
  954.     def OnUpdate(self):
  955.         if not self.itemAmount.IsFocus() and (self.itemAmount.GetText() == '' or self.itemAmount.GetText() == '0'):
  956.             self.itemAmount.SetText('1')
  957.        
  958.     def __del__(self):
  959.         uimg.ScriptWindow.__del__(self)
  960.  
  961.     def Open(self, parent, x, y):
  962.         if not self.isLoaded:
  963.             self.__LoadWindow()
  964.            
  965.         self.SetParent(parent)
  966.         self.SetPosition(x, y)
  967.         self.SetTop()
  968.         self.Show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement