[Release] Advanced Python Data Structures

11/29/2017 01:37 VegaS ♆#1
Code:
#@../root/ui.py
#@Search for:
def RegisterToolTipWindow(type, createToolTipWindow):
	createToolTipWindowDict[type]=createToolTipWindow
#@Add after:
#######################################
#### START OF REGISTER STRUCT CLASS ####
"""
    How To Use Ex:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	@E.g #1:
	class ZodiacTempleToolTipBoard(ui.ThinBoard):
		CONFIG = ui.RegisterStructClass('TOOLTIP_BASE_POS TOOLTIP_WIDTH TOOLTIP_HEIGHT TOOLTIP_DEFAULT_SIZE_DICT '
			'TOOLTIP_TOP_RANK_LIST TOOLTIP_ADD_STRING')(100, 450, 300, {'w': 400, 'h': 500}, [1, 2, 3], 'String')
	
		def __mem_func__(self):
			print (self.CONFIG.TOOLTIP_BASE_POS, self.CONFIG.TOOLTIP_WIDTH, self.CONFIG.TOOLTIP_HEIGHT, self.CONFIG.TOOLTIP_ADD_STRING)
			print (self.CONFIG.TOOLTIP_DEFAULT_SIZE_DICT.get('w'), self.CONFIG.TOOLTIP_DEFAULT_SIZE_DICT.get('h'))
			print self.CONFIG.TOOLTIP_TOP_RANK_LIST

	@E.g #2:
		self.Transfer(ui.RegisterStructClass('szName lX lY')(player.GetName(), player.GetX(), player.GetY())) # TPacketGGTransfer

		def Transfer(self, c_pData):
			print(c_pData.szName, c_pData.lX, c_pData.lY)
			
	@E.g #3:
		pack = ui.RegisterStructClass('a b c')(15, {}, [])
		pack.a += 50
		pack.b.update({0: 250}) 
		pack.c.append(100)
		print (pack.a, pack.b, pack.c)
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"""
def RegisterStructClass(obj):
	import exception

	if (not isinstance(obj, str)):
		exception.Abort('RegisterStructClass:: Objects {0} need to be as {1}.'.format(type(obj), type(str)))

	def register(self, * kwargs):
		args = obj.split()
		if (len(args) <> len(kwargs)):
			exception.Abort('RegisterStructClass:: Failed to read arguments.')
	
		[self.__dict__.setdefault(key, value) for (key, value) in zip(args, kwargs)]

	return type('__struct__', (object, ), {'__init__': register})

######################################
#### END OF REGISTER STRUCT CLASS ####
11/30/2017 22:05 fannan10#2
Nice release