public override void OnCoreGameEventHandler(OnCoreGameEvent data) { base.OnCoreGameEventHandler(data); switch (data.EventCode) { case EventCode.MatchBegan: { CoreGameRoot.ExecuteRootMatchBegan(); break; } case EventCode.ShowCardAndTurnNext: { int current_cards_actor_id = Convert.ToInt32(Network.Client.CurrentRoom.CustomProperties ["current_cards_actor_id"]); PlayerViewModel currentCardsPlayer = CoreGameRoot.PlayerCollection.SingleOrDefault(vm => vm.ActorId == current_cards_actor_id); currentCardsPlayer.ExecuteShowCardsToPile(); CoreGameRoot.ExecuteRefreshCoreGame(); break; } case EventCode.PassAndTurnNext: { CoreGameRoot.ExecuteRefreshCoreGame(); break; } case EventCode.MatchOver: { CoreGameRoot.ExecuteRootMatchOver(); break; } case EventCode.ClearCardsInPile: { CoreGameRoot.Pile.Cards.Clear(); break; } default: break; } }
public void OnEvent(ExitGames.Client.Photon.EventData photonEvent) { switch (photonEvent.Code) { case EventCode.Join: { RoomPanelViewModel roomPanelVM = OutOfGameRoot.CanvasRoot.PanelCollection.ToList().Single(vm => vm is RoomPanelViewModel) as RoomPanelViewModel; roomPanelVM.ExecuteRefreshRoom(); CoreGameRoot.ExecutePlayerJoin(); break; } case EventCode.Leave: { RoomPanelViewModel roomPanelVM = OutOfGameRoot.CanvasRoot.PanelCollection.ToList().Single(vm => vm is RoomPanelViewModel) as RoomPanelViewModel; roomPanelVM.ExecuteRefreshRoom(); CoreGameRoot.ExecutePlayerLeave(); break; } case EventCode.PropertiesChanged: { RoomPanelViewModel roomPanelVM = OutOfGameRoot.CanvasRoot.PanelCollection.ToList().Single(vm => vm is RoomPanelViewModel) as RoomPanelViewModel; roomPanelVM.ExecuteRefreshRoomProperties(); roomPanelVM.ExecuteRefreshPlayerProperties(); CoreGameRoot.ExecuteRefreshCoreGame(); break; } default: { // photonEvent.Code == 245; custom raised event. object event_content = null; photonEvent.Parameters.TryGetValue(ParameterCode.CustomEventContent, out event_content); Publish(new OnCoreGameEvent() { EventCode = photonEvent.Code, EventContent = event_content }); break; } } }
public override void PlayerLeave(CoreGameRootViewModel viewModel) { base.PlayerLeave(viewModel); // 在 PlayerCollection 中查找 LBRoom 中没有的, 删除 List <PlayerViewModel> player_need_remove = new List <PlayerViewModel> (); viewModel.PlayerCollection.ToList().ForEach(vm => { if (Network.Client.CurrentRoom.Players.ToList().Exists(kv => kv.Value.ID == vm.ActorId) == false) { player_need_remove.Add(vm); } }); foreach (var vm in player_need_remove) { viewModel.PlayerCollection.Remove(vm); } viewModel.ExecuteCalcPosIdAndRepos(); viewModel.ExecuteRefreshCoreGame(); }
public override void PlayerJoin(CoreGameRootViewModel viewModel) { base.PlayerJoin(viewModel); // 在 LBRoom 中查找 PlayerCollection 中没有的, 加入 Network.Client.CurrentRoom.Players.OrderBy(_ => _.Key).ToList().ForEach(kv => { int actorId = kv.Key; Player player = kv.Value; if (viewModel.PlayerCollection.ToList().Exists(vm => vm.ActorId == actorId) == false) { PlayerViewModel playerVM = MVVMKernelExtensions.CreateViewModel <PlayerViewModel> (); playerVM.ActorId = player.ID; playerVM.PlayerName = player.Name; playerVM.IsSelf = player.IsLocal; playerVM.PlayerRoomIdentity = player.IsMasterClient ? RoomIdentity.RoomMaster : RoomIdentity.RoomGuest; playerVM.LBPlayer = player; viewModel.PlayerCollection.Add(playerVM); } }); viewModel.ExecuteCalcPosIdAndRepos(); viewModel.ExecuteRefreshCoreGame(); }