public void MessageReceived(Message message) { switch (message.MessageType) { case SyncUserListMessage.MESSAGE_TYPE: { var msg = (SyncUserListMessage)message; for (int i = 0; i < msg.usersID.Length; ++i) { int userID = IdentificationConverter.GetID(msg.usersID[i]); int characterID = IdentificationConverter.GetID(msg.charactersID[i]); var user = new User(userID, msg.usersInfo[i], characterID); _users.Add(user); } int clientUserID = IdentificationConverter.GetID(msg.clientUserID); _self = _users[clientUserID]; } break; case UserOnlineMessage.MESSAGE_TYPE: { } break; case UserOfflineMessage.MESSAGE_TYPE: { } break; case UserLoadingMessage.MESSAGE_TYPE: { } break; case UserLoadCompleteMessage.MESSAGE_TYPE: { } break; case ReloadAssetsMessage.MESSAGE_TYPE: { } break; } }
public override void MessageReceived(Message message) { try { switch (message.MessageType) { case StorySceneResetMessage.MESSAGE_TYPE: { _investigating = false; _talker1 = _talker2 = null; _controller.DisableTextInput(); _controller.HideSelections(); _controller.ClearDialog(); _controller.FinishNonRepeatAnimations(); _controller.FinishRepeatAnimations(); _controller.ClearObjectTouchListeners(); _controller.ClearObjects(); _controller.DisableInvestigationView(); } break; case StorySceneCreateObjectMessage.MESSAGE_TYPE: { var msg = (StorySceneCreateObjectMessage)message; var character = CharacterManager.Instance.FindCharacter(IdentificationConverter.GetID(msg.objID)); int id = IdentificationConverter.GetID(msg.objID); var sceneObj = new SceneObject(id, character, msg.portrait); _objectList.Add(sceneObj); _controller.AddObject(id, msg.portrait.sprites); } break; case StorySceneDestroyObjectMessage.MESSAGE_TYPE: { var msg = (StorySceneDestroyObjectMessage)message; int id = IdentificationConverter.GetID(msg.objID); _objectList.Remove(id); _controller.RemoveObject(id); } break; case StorySceneUpdateObjectDataMessage.MESSAGE_TYPE: { var msg = (StorySceneUpdateObjectDataMessage)message; int id = IdentificationConverter.GetID(msg.objID); _objectList[id].Interactable = msg.interactable; if (_investigating) { if (msg.interactable) { _controller.SetObjectTouchListener(id, this.InteractWithObject); } else { _controller.SetObjectTouchListener(id, null); } } } break; case StorySceneExecuteAnimCommandsMessage.MESSAGE_TYPE: { var msg = (StorySceneExecuteAnimCommandsMessage)message; var idList = new List <int>(); var animList = new List <Animation>(); int cameraAnimIdx = -1; for (int i = 0; i < msg.objectsID.Length; ++i) { int id = IdentificationConverter.GetID(msg.objectsID[i]); if (id == -1) { cameraAnimIdx = i; } else { idList.Add(id); animList.Add(msg.animations[i]); } } int[] ids = idList.ToArray(); Animation[] animations = animList.ToArray(); if (cameraAnimIdx != -1) { _controller.ExecuteAnimations(msg.animations[cameraAnimIdx], ids, animations); } else { _controller.ExecuteAnimations(ids, animations); } } break; case StorySceneFinishNonRepeatAnimsMessage.MESSAGE_TYPE: { _controller.FinishNonRepeatAnimations(); } break; case StorySceneFinishRepeatAnimsMessage.MESSAGE_TYPE: { _controller.FinishRepeatAnimations(); } break; case StorySceneEnterStoryModeMessage.MESSAGE_TYPE: { _investigating = false; _talker1 = null; _talker2 = null; _controller.DisableInvestigationView(); _controller.DisableTextInput(); _controller.ClearObjectTouchListeners(); } break; case StorySceneEnterTalkModeMessage.MESSAGE_TYPE: { var msg = (StorySceneEnterTalkModeMessage)message; _talker1 = CharacterManager.Instance.FindCharacter(IdentificationConverter.GetID(msg.talkCharacter1)); _talker2 = CharacterManager.Instance.FindCharacter(IdentificationConverter.GetID(msg.talkCharacter2)); _isTalker1Talking = msg.chara1Start; _controller.DisableInvestigationView(); if ((_isTalker1Talking && _talker1.Controller == GameServerProxy.Instance.Self) || (!_isTalker1Talking && _talker2.Controller == GameServerProxy.Instance.Self)) { _controller.EnabledTextInput(); } else { _controller.DisableTextInput(); } _controller.ClearObjectTouchListeners(); } break; case StorySceneTurnTalkMessage.MESSAGE_TYPE: { _isTalker1Talking = !_isTalker1Talking; if ((_isTalker1Talking && _talker1.Controller == GameServerProxy.Instance.Self) || (!_isTalker1Talking && _talker2.Controller == GameServerProxy.Instance.Self)) { _controller.EnabledTextInput(); } else { _controller.DisableTextInput(); } } break; case StorySceneEnterInvestigationModeMessage.MESSAGE_TYPE: { var msg = (StorySceneEnterInvestigationModeMessage)message; var userID = IdentificationConverter.GetID(msg.investigatingPlayer); if (userID == GameServerProxy.Instance.Self.ID) { _investigating = true; _controller.EnabledInvestigationView(); } else { _investigating = false; _controller.DisableInvestigationView(); } foreach (var obj in _objectList) { if (obj.Interactable) { _controller.SetObjectTouchListener(obj.ID, this.InteractWithObject); } } } break; case StorySceneShowSelectionsMessage.MESSAGE_TYPE: { var msg = (StorySceneShowSelectionsMessage)message; _selectionShowed = true; _controller.ShowSelections(msg.selections); } break; case StorySceneHideSelectionsMessage.MESSAGE_TYPE: { _selectionShowed = false; _controller.HideSelections(); } break; case StorySceneShowSelectionVoterMessage.MESSAGE_TYPE: { var msg = (StorySceneShowSelectionVoterMessage)message; var voter = GameServerProxy.Instance.FindUser(IdentificationConverter.GetID(msg.voterID)); _controller.SetSelectionVoter(msg.selectionIndex, voter); } break; case StorySceneUpdateDialogMessage.MESSAGE_TYPE: { var msg = (StorySceneUpdateDialogMessage)message; int objID = IdentificationConverter.GetID(msg.portraitObjectID); _controller.SetDialogPortrait(objID); _controller.SetDialogText(msg.text, msg.isPrivate ? new Vec3(0.6f, 0.6f, 0.6f) : new Vec3(1.0f, 1.0f, 1.0f)); } break; } } catch (System.Exception e) { Logger.WriteLine(e.Message); } }