@@ -11,6 +11,20 @@ class Prototype:
1111 type : UwPrototypeTypeEnum = UwPrototypeTypeEnum .Nothing
1212 name : str = ""
1313 data : Dict [str , Any ] = field (default_factory = dict )
14+ tags : List [int ] = field (default_factory = list )
15+ tagsNames : List [str ] = field (default_factory = list )
16+ json : str = ""
17+
18+ def tagged (self , tag : int ) -> bool :
19+ return tag in self .tags
20+
21+ def _load (self ) -> None :
22+ self .type = uw_interop .uwPrototypeType (self .id )
23+ self .json = uw_interop .uwPrototypeJson (self .id )
24+ self .data = json .loads (self .json )
25+ self .name = self .data .get ("name" , "" )
26+ self .tags = self .data .get ("tags" , [])
27+ self .tagsNames = self .data .get ("tagsNames" , [])
1428
1529
1630class Prototypes :
@@ -33,15 +47,33 @@ def type(self, id: int) -> UwPrototypeTypeEnum:
3347 return p .type
3448 return UwPrototypeTypeEnum .Nothing
3549
50+ def name (self , id : int ) -> str :
51+ p = self ._all .get (id , None )
52+ return p .name if p is not None else ""
53+
54+ def json (self , id : int ) -> str :
55+ p = self ._all .get (id , None )
56+ return p .json if p is not None else ""
57+
58+ def definitions (self ) -> Dict [str , Any ]:
59+ return self ._definitions
60+
61+ def hashString (self , name : str ) -> int :
62+ return uw_interop .uwHashString (name )
63+
64+ def tagId (self , name : str ) -> int :
65+ try :
66+ return self ._definitions ["tagsNames" ].index (name )
67+ except ValueError :
68+ raise KeyError (f"tag name '{ name } ' not found" )
69+
3670 def _load (self ) -> None :
3771 uw_interop .uwLog (UwSeverityEnum .Info , "loading prototypes" )
38- self ._all : Dict [ int , Prototype ] = {}
39- self ._definitions : Dict [ str , Any ] = {}
72+ self ._all . clear ()
73+ self ._definitions . clear ()
4074 for id in uw_interop .uwAllPrototypes ().ids :
4175 p = Prototype (id )
42- p .type = uw_interop .uwPrototypeType (id )
43- p .data = json .loads (uw_interop .uwPrototypeJson (id ))
44- p .name = p .data ["name" ]
76+ p ._load ()
4577 self ._all [id ] = p
4678 self ._definitions = json .loads (uw_interop .uwDefinitionsJson ())
4779 uw_interop .uwLog (UwSeverityEnum .Info , "prototypes loaded" )
0 commit comments