Skip to content

Commit c9ac13e

Browse files
committed
2 parents 988fc8b + 2db1c74 commit c9ac13e

File tree

1 file changed

+34
-50
lines changed
  • addons/source-python/packages/source-python/entities

1 file changed

+34
-50
lines changed

addons/source-python/packages/source-python/entities/classes.py

Lines changed: 34 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -159,57 +159,41 @@ def get_entity_server_classes(self, entity):
159159
entity_datamaps[datamap.class_name] = datamap
160160
datamap = datamap.base
161161

162-
# Find if there are ServerClasses that are not in the DataMaps
163-
difference = set(
164-
entity_server_classes).difference(set(entity_datamaps))
165-
166-
# Find if there are ServerClasses that are also in the DataMaps
167-
intersection = set(
168-
entity_server_classes).intersection(set(entity_datamaps))
169-
170-
# Take care of special cases
171-
if not intersection or (difference and intersection):
172-
173-
# Loop through all ServerClass names
174-
for class_name in entity_server_classes:
175-
176-
# Has the current ServerClass name already been added?
177-
if class_name in self:
178-
179-
# Add the instance to the classname's list
180-
self._entity_server_classes[entity.classname].append(
181-
self[class_name])
182-
183-
# No need to go further
184-
continue
185-
186-
# Retrieve all objects for the ServerClass and
187-
# add it to the classname's list
188-
self._entity_server_classes[
189-
entity.classname].append(self._get_server_class(
190-
class_name, entity_datamaps.get(class_name, {})))
191-
192-
# Take care of normal cases
193-
if not (difference and intersection):
194-
195-
# Loop through all DataMap names
196-
for class_name in entity_datamaps:
197-
198-
# Has the current DataMap name already been added?
199-
if class_name in self:
200-
201-
# Add the instance to the classname's list
202-
self._entity_server_classes[entity.classname].append(
203-
self[class_name])
204-
205-
# No need to go further
206-
continue
162+
# Find the differences
163+
server_no_data = set(entity_server_classes).difference(entity_datamaps)
164+
data_no_server = set(entity_datamaps).difference(entity_server_classes)
165+
166+
# Set the order for the classes to be stored/iterated
167+
if not data_no_server:
168+
order = entity_server_classes
169+
elif not server_no_data:
170+
order = entity_datamaps
171+
else:
172+
order = []
173+
for class_name in list(entity_datamaps):
174+
if class_name in entity_server_classes:
175+
index = entity_server_classes.index(class_name)
176+
order.extend(entity_server_classes[:index + 1])
177+
del entity_server_classes[:index + 1]
178+
else:
179+
order.append(class_name)
180+
order.extend(entity_server_classes)
181+
182+
for class_name in order:
183+
# Is the current class already known?
184+
if class_name in self:
185+
self._entity_server_classes[entity.classname].append(
186+
self[class_name]
187+
)
188+
continue
207189

208-
# Retrieve all objects for the ServerClass and
209-
# add it to the classname's list
210-
self._entity_server_classes[
211-
entity.classname].append(self._get_server_class(
212-
class_name, entity_datamaps[class_name]))
190+
# Add the class
191+
self._entity_server_classes[entity.classname].append(
192+
self._get_server_class(
193+
class_name=class_name,
194+
datamap=entity_datamaps.get(class_name, {}),
195+
)
196+
)
213197

214198
# Return the server classes
215199
return self._entity_server_classes[entity.classname]

0 commit comments

Comments
 (0)