Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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);
            }
        }