public RtsClient(UnitySyncContext syncContext) { mSyncContext = syncContext; mWorkerCreationStateListener = new WorkerCreationStateListener(syncContext); mWorkerCreationStateListener.Created += (orders, info) => WorkerCreated?.Invoke(orders, info); mWorkerCreationStateListener.Destroyed += info => ObjectDestroyed?.Invoke(info); mBuildingTemplateCreationStateListener = new BuildingTemplateCreationStateListener(syncContext); mBuildingTemplateCreationStateListener.Created += (orders, info) => BuildingTemplateCreated?.Invoke(orders, info); mBuildingTemplateCreationStateListener.Destroyed += info => ObjectDestroyed?.Invoke(info); mCentralBuildingCreationStateListener = new CentralBuildingCreationListener(syncContext); mCentralBuildingCreationStateListener.Created += (orders, info) => CentralBuildingCreated?.Invoke(orders, info); mCentralBuildingCreationStateListener.Destroyed += info => ObjectDestroyed?.Invoke(info); mMiningCampCreationListener = new MiningCampCreationListener(syncContext); mMiningCampCreationListener.Created += (orders, info) => MiningCampCreated?.Invoke(orders, info); mMiningCampCreationListener.Destroyed += info => ObjectDestroyed?.Invoke(info); mBarrakCreationListener = new BarrakCreationListener(syncContext); mBarrakCreationListener.Created += (orders, info) => BarrakCreated?.Invoke(orders, info); mBarrakCreationListener.Destroyed += info => ObjectDestroyed?.Invoke(info); mRangedWarriorCreationStateListener = new RangedWarriorCreationStateListener(syncContext); mRangedWarriorCreationStateListener.Created += (orders, info) => RangedWarriorCreated?.Invoke(orders, info); mRangedWarriorCreationStateListener.Destroyed += info => ObjectDestroyed?.Invoke(info); mMeeleeWarriorCreationStateListener = new MeeleeWarriorCreationStateListener(syncContext); mMeeleeWarriorCreationStateListener.Created += (orders, info) => MeeleeWarriorCreated?.Invoke(orders, info); mMeeleeWarriorCreationStateListener.Destroyed += info => ObjectDestroyed?.Invoke(info); }
private void OnReceivedPacket(Packet packet) { // Record.Log($"Receiving packet: {packet.TypeCase}"); switch (packet.TypeCase) { case Packet.TypeOneofCase.UpdateObject: ObjectUpdated?.Invoke(packet.UpdateObject); break; case Packet.TypeOneofCase.UpdatePosition: ObjectMoved?.Invoke(packet.UpdatePosition); break; case Packet.TypeOneofCase.UpdateRotation: ObjectRotated?.Invoke(packet.UpdateRotation); break; case Packet.TypeOneofCase.DestroyObject: ObjectDestroyed?.Invoke(packet.DestroyObject); break; case Packet.TypeOneofCase.CreatePlayer: PlayerCreated?.Invoke(packet.CreatePlayer); Record.Log($"Creating player {packet.CreatePlayer}"); break; default: // TODO: https://docs.microsoft.com/en-us/dotnet/standard/exceptions/how-to-create-user-defined-exceptions Record.Log($"Unimplemented packet handler ! {packet.TypeCase}", LogLevel.Error); break; } }
private void DestroyInteractableObject() { ObjectDestroyed?.Invoke(this); Destroy(gameObject); }
public void OnObjectDestroyed(GameObject @object) => ObjectDestroyed?.Invoke(@object, EventArgs.Empty);
public static void NotifyObjectDestroyed(ICharacter character, IStaticWorldObject worldObject) { Api.SafeInvoke(() => ObjectDestroyed?.Invoke(character, worldObject)); }
public void DestroyView(ObjectDestroyed notification) { Panel.Dispatcher.Invoke(new Action(() => { if(Views.ContainsKey(notification.GameObject)) { var view = Views[notification.GameObject]; Panel.Children.Remove(view); Views.Remove(notification.GameObject); } })); }