mirror of
https://github.com/Ragora/T2-EngineScraper.git
synced 2026-01-19 19:14:45 +00:00
Update inheritance diagram generator
This commit is contained in:
parent
a587d317af
commit
1e4fbbb53f
113
scraper.py
113
scraper.py
|
|
@ -199,57 +199,65 @@ class Scraper(object):
|
|||
|
||||
# Dictionary containing type name to inheritance list mappings
|
||||
type_name_inheritance = {
|
||||
"HTTPObject": ["HTTPObject", "TCPObject", "SimObject"],
|
||||
"FileObject": ["FileObject", "SimObject"],
|
||||
"Item": ["Item", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"SceneObject": ["SceneObject", "NetObject", "SimObject"],
|
||||
"Player": ["Player", "Player", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"DebugView": ["DebugView", "GuiTextCtrl", "GuiControl", "SimGroup", "SimSet", "SimObject"],
|
||||
"GameBase": ["GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"SimpleNetObject": ["SimpleNetObject", "SimObject"],
|
||||
"SimObject": ["SimObject"],
|
||||
"Canvas": ["Canvas", "GuiCanvas", "GuiControl", "SimGroup", "SimSet", "SimObject"],
|
||||
"GuiCanvas": ["GuiCanvas", "GuiControl", "SimGroup", "SimSet", "SimObject"],
|
||||
"AIObjectiveQ": ["AIObjectiveQ", "SimSet", "SimObject"],
|
||||
"ForceFieldBare": ["ForceFieldBare", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"PhysicalZone": ["PhysicalZone", "SceneObject", "NetObject", "SimObject" ],
|
||||
"AIConnection": ["AIConnection", "GameConnection", "GameConnection", "GameConnection", "NetConnection", "SimGroup", "SimSet", "SimObject"],
|
||||
"Turret": ["Turret", "StaticShape", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject" ],
|
||||
"TerrainBlock": ["TerrainBlock", "SceneObject", "NetObject", "SimObject"],
|
||||
"PlayerData": ["PlayerData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"InheriorInstance": ["InteriorInstance", "SceneObject", "NetObject", "SimObject"],
|
||||
"StaticShape": ["StaticShape", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"Trigger": ["Trigger", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"WaterBlock": ["WaterBlock", "SceneObject", "NetObject", "SimObject"],
|
||||
"FireballAtmosphere": ["FireballAtmosphere", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"MissionArea": ["MissionArea", "NetObject", "SimObject"],
|
||||
"TSStatic": ["TSStatic", "SceneObject", "NetObject", "SimObject"],
|
||||
|
||||
"HTTPObject": "TCPObject",
|
||||
"TCPObject": "SimObject",
|
||||
"FileObject": "SimObject",
|
||||
"Item": "ShapeBase",
|
||||
"ShapeBase": "GameBase",
|
||||
"GameBase": "SceneObject",
|
||||
"SceneObject": "NetObject",
|
||||
"NetObject": "SimObject",
|
||||
"Player": "ShapeBase",
|
||||
"DebugView": "GuiTextCtrl",
|
||||
"GuiTextCtrl": "GuiControl",
|
||||
"GuiControl": "SimGroup",
|
||||
"SimGroup": "SimSet",
|
||||
"SimSet": "SimObject",
|
||||
"Canvas": "GuiCanvas",
|
||||
"GuiCanvas": "GuiControl",
|
||||
"SimpleNetObject": "SimObject",
|
||||
"AIObjectiveQ": "SimSet",
|
||||
"ForceFieldBare": "GameBase",
|
||||
"AIConnection": "GameConnection",
|
||||
"GameConnection": "NetConnection",
|
||||
"NetConnection": "SimGroup",
|
||||
"Turret": "StaticShape",
|
||||
"StaticShape": "ShapeBase",
|
||||
"TerrainBlock": "SceneObject",
|
||||
"InteriorInstance": "SceneObject",
|
||||
"StaticShape": "ShapeBase",
|
||||
"Trigger": "GameBase",
|
||||
"WaterBlock": "SceneObject",
|
||||
"FireballAtmosphere": "GameBase",
|
||||
"MissionArea": "NetObject",
|
||||
"TSStatic": "SceneObject",
|
||||
# Projectile Types
|
||||
"LinearProjectile": ["LinearProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"EnergyProjectile": ["EnergyProjectile", "GrenadeProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"GrenadeProjectile": ["GrenadeProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"TargetProjectile": ["TargetProjectile", "Projectile", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
|
||||
"LinearProjectile": "Projectile",
|
||||
"Projectile": "GameBase",
|
||||
"EnergyProjectile": "GrenadeProjectile",
|
||||
"GrenadeProjectile": "Projectile",
|
||||
"TargetProjectile": "Projectile",
|
||||
# Vehicle Types
|
||||
"HoverVehicle": ["HoverVehicle", "Vehicle", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"FlyingVehicle": ["FlyingVehicle", "Vehicle", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
"WheeledVehicle": ["WheeledVehicle", "Vehicle", "ShapeBase", "GameBase", "SceneObject", "NetObject", "SimObject"],
|
||||
|
||||
"HoverVehicle": "Vehicle",
|
||||
"Vehicle": "ShapeBase",
|
||||
"FlyingVehicle": "Vehicle",
|
||||
"WheeledVehicle": "Vehicle",
|
||||
# Datablock Types
|
||||
"HoverVehicleData": ["HoverVehicleData", "VehicleData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"FlyingVehicleData": ["FlyingVehicleData", "VehicleData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"WheeledVehicleData": ["WheeledVehicleData", "VehicleData", "ShapeBaseData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"ForceFieldBareData": ["ForceFieldBareData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"LinearProjectileData": ["LinearProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"EnergyProjectileData": ["EnergyProjectileData", "GrenadeProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"GrenadeProjectileData": ["GrenadeProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"FireballAtmosphereData": ["FireballAtmosphereData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
"TargetProjectileData": ["TargetProjectileData", "ProjectileData", "GameBaseData", "SimDataBlock", "SimObject"],
|
||||
}
|
||||
"""
|
||||
FIXME: This is a huge pile of filth used for generating the inheritance hierarchy for all the various object types.
|
||||
"""
|
||||
"HoverVehicleData": "VehicleData",
|
||||
"VehicleData": "ShapeBaseData",
|
||||
"FlyingVehicleData": "VehicleData",
|
||||
"WheeledVehicleData": "VehicleData",
|
||||
"ForceFieldBareData": "GameBaseData",
|
||||
"LinearProjectileData": "ProjectileData",
|
||||
"EnergyProjectileData": "GrenadeProjectileData",
|
||||
"GrenadeProjectileData": "ProjectileData",
|
||||
"FireballAtmosphereData": "GameBaseData",
|
||||
"TargetProjectileData": "ProjectileData",
|
||||
"PlayerData": "ShapeBaseData",
|
||||
"ShapeBaseData": "GameBaseData",
|
||||
"GameBaseData": "SimDataBlock",
|
||||
"SimDataBlock": "SimObject",
|
||||
}
|
||||
|
||||
# Outputs
|
||||
global_functions = None
|
||||
|
|
@ -416,6 +424,15 @@ class Scraper(object):
|
|||
current_datablock = self.datablocks[datablock_type]
|
||||
current_datablock.properties[datablock_property_name] = Datablock.Property(datablock_property_name, datablock_property_address, "Bla")
|
||||
|
||||
def build_inheritance_tree(self, typename):
|
||||
result = [ typename ]
|
||||
|
||||
while (typename in self.type_name_inheritance.keys()):
|
||||
typename = self.type_name_inheritance[typename]
|
||||
result.append(typename)
|
||||
|
||||
return result
|
||||
|
||||
# Helper Functions
|
||||
def _extract_description(self, source):
|
||||
desc_end = source.rfind("\"")
|
||||
|
|
|
|||
27
t2src.py
27
t2src.py
|
|
@ -16,19 +16,6 @@ import string
|
|||
|
||||
import scraper
|
||||
|
||||
def build_inheritance_tree(inheritance_list, type_names):
|
||||
inheritance_tree = ""
|
||||
|
||||
for tree_element in inheritance_list:
|
||||
if (tree_element in type_names):
|
||||
inheritance_tree += "[[#%s]] -> " % tree_element
|
||||
else:
|
||||
inheritance_tree += "%s -> " % tree_element
|
||||
|
||||
inheritance_tree = inheritance_tree.rstrip(" -> ")
|
||||
|
||||
return inheritance_tree
|
||||
|
||||
# Main App
|
||||
class Application(object):
|
||||
global_method_heading = "===== Global Methods (%u total) =====\r\n"
|
||||
|
|
@ -102,7 +89,8 @@ class Application(object):
|
|||
for type_name in scrape.type_methods.keys():
|
||||
inheritance_tree = "<Unknown>"
|
||||
if (type_name in scrape.type_name_inheritance.keys()):
|
||||
inheritance_tree = build_inheritance_tree(scrape.type_name_inheritance[type_name], scrape.type_methods.keys())
|
||||
inheritance_tree = self.build_inheritance_tree(scrape.build_inheritance_tree(type_name))
|
||||
|
||||
handle.write(self.type_name_template % (type_name, len(scrape.type_methods[type_name]), inheritance_tree))
|
||||
|
||||
# Native Methods First
|
||||
|
|
@ -129,7 +117,7 @@ class Application(object):
|
|||
for datablock_type in scrape.datablocks.keys():
|
||||
inheritance_tree = "<Unknown>"
|
||||
if (datablock_type in scrape.type_name_inheritance.keys()):
|
||||
inheritance_tree = build_inheritance_tree(scrape.type_name_inheritance[datablock_type], scrape.type_name_inheritance[datablock_type])
|
||||
inheritance_tree = self.build_inheritance_tree(scrape.build_inheritance_tree(datablock_type))
|
||||
|
||||
datablock = scrape.datablocks[datablock_type]
|
||||
handle.write(self.datablock_heading % (datablock.name, len(datablock.properties.keys()), inheritance_tree))
|
||||
|
|
@ -139,6 +127,15 @@ class Application(object):
|
|||
|
||||
handle.write(self.datablock_property_template % (datablock_property.name, datablock_property.address, datablock_property.type_name))
|
||||
|
||||
def build_inheritance_tree(self, tree):
|
||||
result = ""
|
||||
|
||||
for tree_element in tree:
|
||||
result += "[[#%s]] -> " % tree_element
|
||||
|
||||
result = result.rstrip(" -> ")
|
||||
return result
|
||||
|
||||
if __name__ == "__main__":
|
||||
time_before = time.time()
|
||||
Application().main()
|
||||
|
|
|
|||
Loading…
Reference in a new issue