Add events onCarSpawn, onCarEdited

This commit is contained in:
Maxim Khomutov 2023-07-19 22:59:30 +03:00
parent f6ff018b03
commit a5a7a5dfc9
2 changed files with 41 additions and 22 deletions

View File

@ -386,7 +386,12 @@ class Client:
self.log.debug(f"Invalid car_json: Error: {e}; Data: {car_data}")
# allow = True
over_spawn = False
# TODO: Call event onCarSpawn
ev_data = ev.call_event("onCarSpawn", car=car_json, car_id=car_id, player=self)
d2 = await ev.call_async_event("onCarSpawn", car=car_json, car_id=car_id, player=self)
ev_data.extend(d2)
for d in ev_data:
# TODO: handle event onCarSpawn
pass
pkt = f"Os:{self.roles}:{self.nick}:{self.cid}-{car_id}:{car_data}"
unicycle = car_json.get("jbm") == "unicycle"
# FIXME: unicycle
@ -423,29 +428,39 @@ class Client:
self.log.debug(f"Unknown car: car_id={car_id}")
case "c": # Edit car
self.log.debug("Trying to edit car")
allow = True
# TODO: Call event onCarEdited
cid, car_id = self._get_cid_vid(dta)
if car_id != -1 and cid == self.cid:
try:
car = self.cars[car_id]
if car['unicycle']:
self._cars.pop(car_id)
await self._send(f"Od:{self.cid}-{car_id}", to_all=True, to_self=True)
elif allow:
await self._send(dta, to_all=True, to_self=False)
if car['json_ok']:
old_car_json = car['json']
client = self.__Core.get_client(cid=cid)
if client:
car = client.cars[car_id]
new_car_json = {}
try:
new_car_json = json.loads(data[data.find("{"):])
old_car_json.update(new_car_json)
car['json'] = new_car_json
self.log.debug(f"Updated car: car_id={car_id}")
except Exception as e:
self.log.debug(f"Invalid new_car_json: Error: {e}; Data: {data}")
allow = False
ev_data = ev.call_event("onCarEdited", car=new_car_json, car_id=car_id, player=self)
d2 = await ev.call_async_event("onCarEdited", car=new_car_json, car_id=car_id, player=self)
ev_data.extend(d2)
for d in ev_data:
# TODO: handle event onCarEdited
pass
if car_id != -1 and cid == self.cid or allow:
if car['unicycle']:
self._cars.pop(car_id)
await self._send(f"Od:{cid}-{car_id}", to_all=True, to_self=True)
else:
await self._send(dta, to_all=True, to_self=False)
if car['json_ok']:
old_car_json = car['json']
old_car_json.update(new_car_json)
car['json'] = old_car_json
self.log.debug(f"Updated car: car_id={car_id}")
except IndexError:
self.log.debug(f"Unknown car: car_id={car_id}")
case "r": # Reset car
self.log.debug("Trying to reset car")
cid, car_id = self._get_cid_vid(dta)

View File

@ -27,12 +27,16 @@ class EventsSystem:
"onPlayerAuthenticated": [], # Only sync
"onPlayerJoin": [],
"onChatReceive": [],
"onCarSpawn": [],
"onCarEdited": [],
"onServerStopped": [],
}
self.__async_events = {
"onServerStarted": [],
"onPlayerJoin": [],
"onChatReceive": [],
"onCarSpawn": [],
"onCarEdited": [],
"onServerStopped": []
}