protected override void OnLoadStart()
 {
     playerInventoryModel = PlayerInventoryModel.First <PlayerInventoryModel>();
     settingModel         = Model.First <SettingModel>();
     playerStatusModel    = PlayerStatusModel.First <PlayerStatusModel>();
     StartCoroutine(LoadInitialData());
 }
Пример #2
0
 private void OnPlayerStatusChanged(PlayerStatusModel playerStatus)
 {
     if (PlayerStatusChanged != null)
     {
         PlayerStatusChanged(playerStatus);
     }
 }
Пример #3
0
    // all controlers that inherit from this will have
    // the models that are injected into its constructor
    public void Init(GameModel model, PlayerStatusModel psModel, InventoryVM ivm)
    {
        gameModel         = model;
        playerStatusModel = psModel;
        inventoryVM       = ivm;

        OnInitComplete();
    }
Пример #4
0
 private void PlayerStatusChanged(PlayerStatusModel playerStatusModel)
 {
     if (playerStatusModel.Status == PlayerStatus.Playing)
     {
         _logger.Info($"'{playerStatusModel.Name}' is now playing - '{playerStatusModel.PlayerProfileUrl}'");
         _alertSoundPlayer.Play();
         this.Activate(true);
     }
 }
Пример #5
0
 protected override void OnLoadStart()
 {
     optionModel          = Model.First <MobileOptionModel>();
     cash_Table           = TableManager.Instance.GetTableClass <Cash_Table>();
     character_Table      = TableManager.Instance.GetTableClass <Character_Table>();
     skin_Table           = TableManager.Instance.GetTableClass <Skin_Table>();
     playerInventoryModel = Model.First <PlayerInventoryModel>();
     playerStatusModel    = Model.First <PlayerStatusModel>();
     SetLoadComplete();
 }
Пример #6
0
 public ResultModel()
 {
     PlayerStatus = new PlayerStatusModel
     {
         Status = WiningStatus.InGame
     };
     DealerStatus = new PlayerStatusModel
     {
         Status = WiningStatus.InGame
     };
     GameStatus = GameStatus.OnPlay;
 }
Пример #7
0
        private void MonitorServicePlayerStatusChanged(PlayerStatusModel playerStatusModel)
        {
            if (PlayerStatusChanged != null)
            {
                PlayerStatusChanged(playerStatusModel);
            }

            var updatedPlayer = PlayerStatusList.First(x => x.Name == playerStatusModel.Name);

            updatedPlayer.Status           = playerStatusModel.Status;
            updatedPlayer.PlayerProfileUrl = playerStatusModel.PlayerProfileUrl;
        }
Пример #8
0
        //Coroutine btnEvent;

        #region Contents Load
        protected override void OnLoadStart()
        {
            scheduleModel        = Model.First <ScheduleModel>();
            playerInventoryModel = Model.First <PlayerInventoryModel>();
            playerStatusModel    = Model.First <PlayerStatusModel>();
            settingModel         = Model.First <SettingModel>();
            optionModel          = Model.First <MobileOptionModel>();

            skill_Table = TableManager.Instance.GetTableClass <Skill_Table>();
            buff_Table  = TableManager.Instance.GetTableClass <Buff_Table>();

            StartCoroutine(LoadInitialData());
        }
Пример #9
0
        protected override void OnLoadStart()
        {
            //AndroidTrasferMgr.Instance.ShowToast("로딩 시작");

            scheduleModel        = Model.First <ScheduleModel>();
            playerInventoryModel = Model.First <PlayerInventoryModel>();
            playerStatusModel    = Model.First <PlayerStatusModel>();
            settingModel         = Model.First <SettingModel>();

            skill_Table = TableManager.Instance.GetTableClass <Skill_Table>();
            buff_Table  = TableManager.Instance.GetTableClass <Buff_Table>();

            StartCoroutine(LoadInitialData());
        }
        public void PlayerStatusResult_Enums_And_Bools_Serialize_Ok()
        {
            var sourceModel = new PlayerStatusModel {
                CanSeek     = true,
                RepeatMode  = RepeatMode.Playlist,
                ShuffleMode = ShuffleMode.All,
                PlayerMode  = PlayerMode.Playing
            };
            var serialized   = JsonConvert.SerializeObject(sourceModel);
            var deserialized = JsonConvert.DeserializeObject <PlayerStatusModel> (serialized);

            Assert.IsTrue(deserialized.CanSeek);
            Assert.IsTrue(deserialized.RepeatMode == RepeatMode.Playlist);
            Assert.IsTrue(deserialized.ShuffleMode == ShuffleMode.All);
            Assert.IsTrue(deserialized.PlayerMode == PlayerMode.Playing);
        }
Пример #11
0
        public async Task Execute(PlayerStatusModel model)
        {
            int playerId = model.PlayerId;
            var player   = await _playerDomainService.Get(playerId);

            if (player == null)
            {
                _logger.LogDebug($"player == null");
                return;
            }

            var online = await _mudOnlineProvider.GetPlayerOnline(playerId);

            if (online == null)
            {
                //玩家离线后,从队列删除,并且修改状态为空闲
                await _recurringQueue.Remove <PlayerStatusModel>(playerId);

                if (player.Status != PlayerStatusEnum.空闲)
                {
                    player.Status = PlayerStatusEnum.空闲;
                    await _playerDomainService.Update(player);

                    await _bus.RaiseEvent(new PlayerStatusChangedEvent(player)).ConfigureAwait(false);
                }
                return;
            }

            if (player.Status != model.Status)
            {
                await _recurringQueue.Remove <PlayerStatusModel>(playerId);

                return;
            }


            //TODO
            switch (model.Status)
            {
            case PlayerStatusEnum.伐木:

                break;
            }

            await _mudProvider.ShowMessage(playerId, $"你正在{model.Status}。。。");
        }
Пример #12
0
        public void SaveAndLoadTest()
        {
            PlayerStatusModel playerStatusModel = new PlayerStatusModel();

            playerStatusModel.DataPath = Application.dataPath + "/Editor/Tests/TestData/player_status.xml";

            // fill the player status model with some data
            playerStatusModel.Level = "2";
            playerStatusModel.Step  = "1";


            List <string> items = new List <string>();

            items.Add("1");
            items.Add("1");
            items.Add("1");
            items.Add("2");
            items.Add("2");

            // add the list with the 5 items to the player status model
            playerStatusModel.Items = items;

            // save player status into an xml file
            playerStatusModel.Save();

            // clear all player data
            playerStatusModel.Clear();

            // assert that all players data is empty
            Assert.That(playerStatusModel.Level == "");
            Assert.That(playerStatusModel.Step == "");
            Assert.That(playerStatusModel.Items.Count == 0);

            // now load the saved data into the model
            playerStatusModel.Load();

            // Assert that the players data is now equal to the data that is saved
            // into the XML file
            Assert.That(playerStatusModel.Level == "2");
            Assert.That(playerStatusModel.Step == "1");
            Assert.That(playerStatusModel.Items.Count == 5);
        }
Пример #13
0
        protected override void OnLoadStart()
        {
            gameSchedule          = new GameSchedule();
            listAlongGameSchedule = new List <AloneGameSchedule>();
            dicSchedule           = new Dictionary <int, AloneGameSchedule>();
            playerStatus          = new PlayerStatus();
            playerInventory       = new PlayerInventory();
            holostarSetting       = new HoloStarSetting();
            calanderEvent         = new CalanderEvent();

            scheduleModel        = Model.First <ScheduleModel>();
            playerStatusModel    = Model.First <PlayerStatusModel>();
            playerInventoryModel = Model.First <PlayerInventoryModel>();
            settingModel         = Model.First <SettingModel>();
            holostarSettingModel = Model.First <HolostarSettingModel>();
            calendarModel        = Model.First <CalendarModel>();

            CheckFile("PlayerInventory");
            CheckFile("HoloStarSetting");
            CheckFile("Calendar");
            SetLoadComplete();
        }
Пример #14
0
        protected override void OnLoadStart()
        {
            gameSchedule          = new GameSchedule();
            listAlongGameSchedule = new List <AloneGameSchedule>();
            dicSchedule           = new Dictionary <int, AloneGameSchedule>();
            playerStatus          = new PlayerStatus();
            playerInventory       = new PlayerInventory();
            holostarSetting       = new HoloStarSetting();
            mobileOption          = new MobileOption();

            scheduleModel        = Model.First <ScheduleModel>();
            playerStatusModel    = Model.First <PlayerStatusModel>();
            playerInventoryModel = Model.First <PlayerInventoryModel>();
            settingModel         = Model.First <SettingModel>();
            holostarSettingModel = Model.First <HolostarSettingModel>();
            mobileOptionModel    = Model.First <MobileOptionModel>();

            CheckFile("Schedule");
            CheckFile("PlayerStatus");
            CheckFile("PlayerInventory");
            CheckFile("HoloStarSetting");
            CheckFile("MobileOption");
            SetLoadComplete();
        }
Пример #15
0
    IEnumerator LoadGameData()
    {
        // get the game model
        gameModel = new GameModel();

        // set the gamedata.xml file path
        gameModel.DataPath = Application.streamingAssetsPath + "/Data/gamedata.xml";
        // load the game data into the model
        gameModel.Load();

        // get the player status model
        playerStatusModel          = new PlayerStatusModel();
        playerStatusModel.DataPath = Application.streamingAssetsPath + "/Data/player_status.xml";
        playerStatusModel.Clear();

        // init the inventory VM
        inventoryVM = new InventoryVM();
        inventoryVM.AvailableItems = gameModel.AvailableItems;

        yield return(null);

        // the game data should be ready at this point.
        OnGameDataReady();
    }
Пример #16
0
        public async Task Execute(PlayerStatusModel model)
        {
            int playerId = model.PlayerId;
            var player   = await _playerDomainService.Get(playerId);

            if (player == null)
            {
                _logger.LogDebug($"player == null");
                return;
            }

            var online = await _mudOnlineProvider.GetPlayerOnline(playerId);

            if (online == null)
            {
                //玩家离线后,从队列删除,并且修改状态为空闲
                await _recurringQueue.Remove <PlayerStatusModel>(playerId);

                if (player.Status != PlayerStatusEnum.空闲)
                {
                    player.Status = PlayerStatusEnum.空闲;
                    await _playerDomainService.Update(player);

                    await _bus.RaiseEvent(new PlayerStatusChangedEvent(player)).ConfigureAwait(false);
                }
                return;
            }

            if (player.Status != model.Status)
            {
                await _recurringQueue.Remove <PlayerStatusModel>(playerId);

                return;
            }


            //TODO
            switch (model.Status)
            {
            case PlayerStatusEnum.伐木:
            case PlayerStatusEnum.挖矿:
            case PlayerStatusEnum.打猎:
            case PlayerStatusEnum.采药:
            case PlayerStatusEnum.钓鱼:
            case PlayerStatusEnum.打工:

                await DoWork(player);

                break;

            case PlayerStatusEnum.疗伤:
                await Heal(player);

                break;

            case PlayerStatusEnum.打坐:
                await Muse(player);

                break;

            case PlayerStatusEnum.战斗:
                await Fighting(player, model.TargetId);

                break;
            }
        }
Пример #17
0
        private async Task <bool> BeginChangeStatus(PlayerStatusModel playerStatusModel)
        {
            var playerId   = playerStatusModel.PlayerId;
            var newStatus  = playerStatusModel.Status;
            var targetId   = playerStatusModel.TargetId;
            var targetType = playerStatusModel.TargetType;

            var player = await _playerDomainService.Get(playerId);

            if (player == null)
            {
                await _bus.RaiseEvent(new DomainNotification($"角色不存在!"));

                return(false);
            }
            var status = player.Status;

            if (status == newStatus)
            {
                return(false);
            }


            if (player.Status != PlayerStatusEnum.空闲)
            {
                await _bus.RaiseEvent(new DomainNotification($"你正在{player.Status}中,请先停下!"));

                return(false);
            }

            var workTimes = await _redisDb.StringGet <int>(string.Format(RedisKey.WorkTimes, playerId, newStatus));

            int minDelay = 5000;
            int maxDelay = 15000;

            switch (newStatus)
            {
            case PlayerStatusEnum.打猎:
                await _mudProvider.ShowMessage(playerId, "你开始在丛林中寻找猎物的踪影。");

                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次打猎));
                }
                break;

            case PlayerStatusEnum.伐木:
                await _mudProvider.ShowMessage(playerId, "你拿起斧头,对着一棵大树嘿呦嘿呦得砍了起来。");

                //新手任务
                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次伐木));
                }
                break;

            case PlayerStatusEnum.采药:
                await _mudProvider.ShowMessage(playerId, "你开始在草丛中搜寻草药的踪影。");

                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次采药));
                }
                break;

            case PlayerStatusEnum.挖矿:
                await _mudProvider.ShowMessage(playerId, "你挥动铁锹,开始挖矿。");

                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次挖矿));
                }
                break;

            case PlayerStatusEnum.钓鱼:
                await _mudProvider.ShowMessage(playerId, "你把鱼竿一甩,开始等待鱼儿上钩。");

                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次钓鱼));
                }
                break;

            case PlayerStatusEnum.疗伤:
                if (player.Hp >= player.MaxHp)
                {
                    await _mudProvider.ShowMessage(playerId, "你没有受伤,无需治疗。");

                    return(false);
                }
                await _mudProvider.ShowMessage(playerId, "你盘膝坐下,开始运功疗伤。");

                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次疗伤));
                }
                break;

            case PlayerStatusEnum.打坐:
                if (player.Mp >= player.MaxMp)
                {
                    await _mudProvider.ShowMessage(playerId, "你内力充沛,无需打坐。");

                    return(false);
                }
                await _mudProvider.ShowMessage(playerId, "你盘膝坐下,开始打坐。");

                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次打坐));
                }
                break;

            case PlayerStatusEnum.修练:
                if (player.Pot <= 0)
                {
                    await _mudProvider.ShowMessage(playerId, "你的潜能不够,无法修练。");

                    return(false);
                }
                if (targetId <= 0)
                {
                    return(false);
                }

                await _mudProvider.ShowMessage(playerId, "你开始修练。。。");

                if (workTimes <= 0)
                {
                    await _queueHandler.SendQueueMessage(new CompleteQuestNewbieQuestQueue(playerId, NewbieQuestEnum.第一次修练));
                }

                break;


            case PlayerStatusEnum.切磋:

                minDelay = player.Speed;
                maxDelay = minDelay + 1000;

                break;

            default:
                await _mudProvider.ShowMessage(playerId, $"你开始{newStatus}。。。");

                break;
            }


            player.Status = newStatus;
            await _playerDomainService.Update(player);

            //新手任务
            workTimes++;
            await _redisDb.StringSet(string.Format(RedisKey.ChatTimes, playerId), workTimes);


            await _recurringQueue.Publish($"player_{playerId}", new PlayerStatusModel
            {
                PlayerId   = player.Id,
                Status     = newStatus,
                TargetType = targetType,
                TargetId   = targetId
            }, minDelay, maxDelay);

            if (await Commit())
            {
                await _bus.RaiseEvent(new PlayerStatusChangedEvent(player)).ConfigureAwait(false);
            }

            return(true);
        }
Пример #18
0
 public PlayerStatusQueue(PlayerStatusModel status)
 {
     Status = status;
 }