VegaS1234

Advanced Python Data Structures

Nov 28th, 2017
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.02 KB | None | 0 0
  1. #@../root/ui.py
  2. #@Search for:
  3. def RegisterToolTipWindow(type, createToolTipWindow):
  4.     createToolTipWindowDict[type]=createToolTipWindow
  5. #@Add after:
  6. #######################################
  7. #### START OF REGISTER STRUCT CLASS ####
  8. """
  9.    How To Use Ex:
  10.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  11.    @E.g #1:
  12.    class ZodiacTempleToolTipBoard(ui.ThinBoard):
  13.        CONFIG = ui.RegisterStructClass('TOOLTIP_BASE_POS TOOLTIP_WIDTH TOOLTIP_HEIGHT TOOLTIP_DEFAULT_SIZE_DICT '
  14.            'TOOLTIP_TOP_RANK_LIST TOOLTIP_ADD_STRING')(100, 450, 300, {'w': 400, 'h': 500}, [1, 2, 3], 'String')
  15.    
  16.        def __mem_func__(self):
  17.            print (self.CONFIG.TOOLTIP_BASE_POS, self.CONFIG.TOOLTIP_WIDTH, self.CONFIG.TOOLTIP_HEIGHT, self.CONFIG.TOOLTIP_ADD_STRING)
  18.            print (self.CONFIG.TOOLTIP_DEFAULT_SIZE_DICT.get('w'), self.CONFIG.TOOLTIP_DEFAULT_SIZE_DICT.get('h'))
  19.            print self.CONFIG.TOOLTIP_TOP_RANK_LIST
  20.  
  21.    @E.g #2:
  22.        self.Transfer(ui.RegisterStructClass('szName lX lY')(player.GetName(), player.GetX(), player.GetY())) # TPacketGGTransfer
  23.  
  24.        def Transfer(self, c_pData):
  25.            print(c_pData.szName, c_pData.lX, c_pData.lY)
  26.            
  27.    @E.g #3:
  28.        pack = ui.RegisterStructClass('a b c')(15, {}, [])
  29.        pack.a += 50
  30.        pack.b.update({0: 250})
  31.        pack.c.append(100)
  32.        print (pack.a, pack.b, pack.c)
  33.    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  34. """
  35. def RegisterStructClass(obj):
  36.     import exception
  37.  
  38.     if (not isinstance(obj, str)):
  39.         exception.Abort('RegisterStructClass:: Objects {0} need to be as {1}.'.format(type(obj), type(str)))
  40.  
  41.     def register(self, * kwargs):
  42.         args = obj.split()
  43.         if (len(args) <> len(kwargs)):
  44.             exception.Abort('RegisterStructClass:: Failed to read arguments.')
  45.    
  46.         [self.__dict__.setdefault(key, value) for (key, value) in zip(args, kwargs)]
  47.  
  48.     return type('__struct__', (object, ), {'__init__': register})
  49.  
  50. ######################################
  51. #### END OF REGISTER STRUCT CLASS ####
Advertisement
Add Comment
Please, Sign In to add comment