/// <summary> /// 返回键盘配置 /// </summary> /// <returns></returns> public KeyboardEntity GetPlayerKeyboardSetting(int playerId) { KeyboardEntity res = null; if (!keyboardEntities.TryGetValue(playerId, out res)) { Debug.LogError("can not find KeyboardEntity according this playerId : " + playerId); } return(res); }
/// <summary> /// 键盘配置 显示 初始化 /// </summary> /// <param name="data"></param> private void KeyboardConfigInit() { GameObject player2 = GetWidget("ControlPanel_Player2"); //玩家1设置 KeyboardEntity ke1 = InputController.Instance.GetPlayerKeyboardSetting(0); GetWidget <Text>("Text_Up").text = ke1.up; GetWidget <Text>("Text_Down").text = ke1.down; GetWidget <Text>("Text_Left").text = ke1.left; GetWidget <Text>("Text_Right").text = ke1.right; GetWidget <Text>("Text_Attack").text = ke1.attack; GetWidget <Text>("Text_Jump").text = ke1.jump; //玩家2设置 if (player2.activeSelf) { KeyboardEntity ke2 = InputController.Instance.GetPlayerKeyboardSetting(1); GetWidget <Text>("Text_Up_Player2").text = ke2.up; GetWidget <Text>("Text_Down_Player2").text = ke2.down; GetWidget <Text>("Text_Left_Player2").text = ke2.left; GetWidget <Text>("Text_Right_Player2").text = ke2.right; GetWidget <Text>("Text_Attack_Player2").text = ke2.attack; GetWidget <Text>("Text_Jump_Player2").text = ke2.jump; } //检查字体 CheckInputFieldFont(); //初始化颜色:白色 foreach (var t in inputFields) { GetInputFieldBg(t).color = Color.white; } //检测是否重复 for (int i = 0; i < inputFields.Count; i++) { Text t = inputFields[i]; if (t.text.Equals("")) { continue; } for (int j = i + 1; j < inputFields.Count; j++) { Text m = inputFields[j]; if (t.text.Equals(m.text)) { m.text = ""; break; } } } }
public void Initialize() { // 入力 KeyboardKeyHandlerList.Select(x => x.OnDownAsObservable()) .Merge() .Subscribe(Set) .AddTo(Disposable); // 送信 KeyboardSendButtonHandler.OnDownAsObservable() .Where(_ => !KeyboardEntity.IsEmpty()) .Subscribe(_ => { switch (MainStateEntity.State) { case MainState.Wait: Comment(); break; case MainState.StagePlay: SendChat(); break; } }) .AddTo(Disposable); // 削除 KeyboardDeleteButtonHandler.OnDownAsObservable() .Subscribe(_ => Delete()) .AddTo(Disposable); // Owenrの場合、徐々に文字が増えていく TimerEntity.OnUpdateTimerAsObservable() .Where(_ => PlayerEntity.IsOwner(PhotonNetwork.LocalPlayer)) .Where(_ => MainStateEntity.Check(MainState.StagePlay)) .Subscribe(time => { var unlockKey = UnlockKeyList.List.ElementAtOrDefault(KeyboardEntity.UnlockKeyIndex); if (unlockKey != null && time >= unlockKey.ThresholdTime) { foreach (var i in KeyboardEntity.EnableOwner(unlockKey.Count)) { KeyboardKeyRendererList[i].Enable(); } KeyboardEntity.IncreaseUnlockKeyIndex(); KeyboardListRenderer.PlayEnableSound(); InfoEntity.Set($"新しく {unlockKey.Count}文字 追加されました"); } }) .AddTo(Disposable); }
private void Setup() { // BGM変更 AudioPlayer.Play(StageEntity.StageCount >= Setting.RoomPlayerCount ? AudioType.Main3 : AudioType.Main2); // タイマー初期化 TimerEntity.Reset(); // チャット欄を削除しておく PhotonChatPrcRequester.Delete(); // Owner更新 PlayerEntity.SetPlayerOwnerIndex(StageEntity.StageCount - 1); // Masterが抽選をして答えをランダムにセットするように要求 if (PhotonNetwork.IsMasterClient) { StageReadyRpcRequester.Request(AnswerList.GetRandom()); } if (PlayerEntity.IsOwner(PhotonNetwork.LocalPlayer)) { // 出題者は限られた文字しか使えない KeyboardEntity.InitializeOwner(KeyboardKeyRendererList.Count); var disableIndexList = Enumerable .Range(0, KeyboardKeyRendererList.Count) .Except(KeyboardEntity.EnableOwner(Setting.InitialEnableKeyCount)); foreach (var index in disableIndexList) { KeyboardKeyRendererList[index].Disable(); } } else { foreach (var keyboardKeyRenderer in KeyboardKeyRendererList) { keyboardKeyRenderer.Enable(); } } }
/// <summary> /// 获得玩家id,指定键位上的键值 /// </summary> /// <param name="PlayerId"></param> /// <param name="target"></param> /// <returns></returns> public string GetGamekey(int PlayerId, GameKey target) { KeyboardEntity ke = null; if (!keyboardEntities.TryGetValue(PlayerId, out ke)) { Debug.LogError("player id can not match one keyboard entity"); } string res = null; switch (target) { case GameKey.Up: res = ke.up; break; case GameKey.Down: res = ke.down; break; case GameKey.Left: res = ke.left; break; case GameKey.Right: res = ke.right; break; case GameKey.Attack: res = ke.attack; break; case GameKey.Jump: res = ke.jump; break; } return(res); }
/// <summary> /// 设置游戏键位 /// </summary> /// <param name="playerId"></param> /// <param name="target"></param> /// <returns></returns> public void SetGameKey(int playerId, GameKey target, string keyValue) { KeyboardEntity ke = null; if (!keyboardEntities.TryGetValue(playerId, out ke)) { Debug.LogError("player id can not match one keyboard entity"); } switch (target) { case GameKey.Up: ke.up = keyValue; break; case GameKey.Down: ke.down = keyValue; break; case GameKey.Left: ke.left = keyValue; break; case GameKey.Right: ke.right = keyValue; break; case GameKey.Attack: ke.attack = keyValue; break; case GameKey.Jump: ke.jump = keyValue; break; } }
private void Delete() { KeyboardEntity.Delete(); KeyboardFormRenderer.Render(""); }
private void Set(string text) { KeyboardEntity.Add(text); KeyboardFormRenderer.Render(KeyboardEntity.Text); }