public override void ApplyEvent(GameWorldController gameWorldController, OnEventCompleteDelegate onComplete) { base.ApplyEvent(gameWorldController, onComplete); CharacterData character = gameWorldController.Model.GetCharacterData(CharacterID); // Update the room key and position on the character that changed rooms character.room_x = ToRoomKey.x; character.room_y = ToRoomKey.y; character.room_z = ToRoomKey.z; character.x = ToPosition.x; character.y = ToPosition.y; character.z = ToPosition.z; // Character is the current game character if (CharacterID == gameWorldController.Model.CurrentCharacterID) { // Request the static room data for the room the character is portal-ing to // event application won't advance while waiting on room data to load from the server. // Once we get the new room data we rebuild everything. gameWorldController.Model.RequestRoomData(ToRoomKey, onComplete); } // Character is some other game character else { // Get the character entity for the character id, if any exists CharacterEntity entity = gameWorldController.Model.GetCharacterEntity(CharacterID); // Character portal-ed to the current room. // Make sure the character exists and is at the correct location. if (gameWorldController.Model.CurrentGame.CurrentRoomKey.Equals(ToRoomKey)) { if (entity == null) { entity = new CharacterEntity(CharacterID); entity.AddToGameWorld(gameWorldController); } entity.SnapTo(ToPosition, ToAngle); } // Character left the current room. // Make sure the character entity is cleaned up. else { if (entity != null) { entity.RemoveFromGameWorld(gameWorldController); } } if (onComplete != null) { onComplete(); } } }
public override void ApplyEvent(GameWorldController gameWorldController, OnEventCompleteDelegate onComplete) { base.ApplyEvent(gameWorldController, onComplete); CharacterEntity entity = gameWorldController.Model.GetCharacterEntity(CharacterID); if (onComplete != null) { entity.RequestMoveTo(ToPosition, ToAngle, (PathComputer.eResult resultCode) => { if (resultCode != PathComputer.eResult.success) { Debug.Log("GameEvent_CharacterMoved:apply_event - Failed to compute path to event target, ResultCode=" + resultCode); entity.SnapTo(ToPosition, ToAngle); } onComplete(); }); } else { entity.SnapTo(ToPosition, ToAngle); } }
public override void ApplyEvent(GameWorldController gameWorldController, OnEventCompleteDelegate onComplete) { base.ApplyEvent(gameWorldController, onComplete); MobEntity entity = gameWorldController.Model.GetMobEntity(MobID); if (onComplete != null) { entity.RequestMoveTo(ToPosition, ToAngle, (PathComputer.eResult resultCode) => { if (resultCode != PathComputer.eResult.success) { Debug.Log("GameEvent_CharacterMoved:apply_event - Failed to compute path to event target, ResultCode=" + resultCode); entity.SnapTo(ToPosition, ToAngle); } onComplete(); }); } else { entity.SnapTo(ToPosition, ToAngle); } }
public virtual void ApplyEvent(GameWorldController gameWorldController, OnEventCompleteDelegate onComplete) { // Nothing to do in the base class }