@@ -27,21 +27,56 @@ class Unit(object):
2727 def __init__ (self , unit_id , flags ):
2828 self .id = unit_id
2929 self .flags = flags
30- self .type = None
31- self .name = 'Unknown Unit'
30+ self ._type_class = None
3231 self .hallucinated = (flags & 2 == 2 )
3332
3433 def is_type (self , unit_type ):
3534 if isinstance (unit_type , int ):
36- if self .type :
37- return self .type .id == unit_type
38- else :
39- return unit_type == 0
35+ # Compare integer ids. Unknown units have id==0 and should be equal
36+ return self ._type_class .id if self ._type_class else unit_type == 0
4037 else :
41- return self .type == unit_type
38+ return self ._type_class == unit_type
4239
43- def get_race (self ):
44- return self .type .race if self .type else None
40+ @property
41+ def name (self ):
42+ return self ._type_class .name if self ._type_class else None
43+
44+ @property
45+ def title (self ):
46+ return self ._type_class .title if self ._type_class else None
47+
48+ @property
49+ def type (self ):
50+ """ For backwards compatibility this returns the int id instead of the actual class """
51+ return self ._type_class .id if self ._type_class else None
52+
53+ @property
54+ def race (self ):
55+ return self ._type_class .race if self ._type_class else None
56+
57+ @property
58+ def minerals (self ):
59+ return self ._type_class .minerals if self ._type_class else None
60+
61+ @property
62+ def vespene (self ):
63+ return self ._type_class .vespene if self ._type_class else None
64+
65+ @property
66+ def supply (self ):
67+ return self ._type_class .supply if self ._type_class else None
68+
69+ @property
70+ def is_worker (self ):
71+ return self ._type_class .is_worker if self ._type_class else False
72+
73+ @property
74+ def is_building (self ):
75+ return self ._type_class .is_building if self ._type_class else False
76+
77+ @property
78+ def is_army (self ):
79+ return self ._type_class .is_army if self ._type_class else False
4580
4681 def __str__ (self ):
4782 return "{0} [{1:X}]" .format (self .name , self .id )
@@ -74,8 +109,7 @@ def create_unit(self, unit_id, unit_type, unit_flags):
74109 def change_type (self , unit , new_type ):
75110 if new_type in self .units :
76111 reference_unit = self .units [new_type ]
77- unit .type = reference_unit
78- unit .name = reference_unit .name
112+ unit ._type_class = reference_unit
79113 else :
80114 self .logger .error ("Unable to change type of {0} to {1}; unit type not found in build {2}" .format (unit ,hex (new_type ),self .id ))
81115
0 commit comments