private void Update() { if (Input.GetKeyDown(KeyCode.LeftArrow)) { OnTurn?.Invoke(-1); } if (Input.GetKeyDown(KeyCode.RightArrow)) { OnTurn?.Invoke(1); } }
private void SwitchState(TurnState newState) { if (!_isGameRunning) { return; } currenTurnState = newState; switch (currenTurnState) { case TurnState.Player: aIUnitsController.Exit(); playerUnitsController.Enter(); break; case TurnState.AI: playerUnitsController.Exit(); aIUnitsController.Enter(); break; } if (onTurnStateChangedEvent != null) { onTurnStateChangedEvent.Invoke(newState); } }
private void Btn_Click(object sender, EventArgs e) { Button btn = sender as Button; if (brain.stIndex < brain.st.Length - 1) { brain.Process(btn.Name); } else { if (!brain.Process2(btn.Name)) { tDelegate.Invoke(); } } }
private void Btn_Click(object sender, EventArgs e) { Button btn = sender as Button; Random rnd = new Random(Guid.NewGuid().GetHashCode()); if (brain.stIndex < brain.st.Length - 1) { brain.PlaceShips(btn.Name, dir); } else { if (!brain.Shoot(btn.Name)) { tDelegate.Invoke(); } } }
private void Btn_Click(object sender, EventArgs e) { Button btn = sender as Button; if (brain.stIndex < brain.st.Length - 1) { brain.Process(btn.Name); } /*if (brain.HaveAllPlaced == true) * { * brain.Process2(btn.Name); * }*/ else { if (!brain.Process2(btn.Name)) { tDelegate.Invoke(); } } }
private void Btn_Click(object sender, EventArgs e) { Button btn = sender as Button; if (brain.stIndex < brain.st.Length - 1) { brain.Process(btn.Name); } else { if (!brain.Process2(btn.Name)) { tDelegate.Invoke(); } } if (playerType == PlayerType.Bot) { if (brain.k == 0) { winner = "You won, congratulations!"; MessageBox.Show(winner); } } if (playerType == PlayerType.Human) { if (brain.k == 0) { winner = "Bot won, game over!"; MessageBox.Show(winner); } } if (brain.stIndex == brain.st.Length - 1) { enDelegate.Invoke(); } }
/// <summary> /// 地图上设置兵种 /// </summary> private void Build() { if (Input.GetMouseButtonDown(0)) { if (!EventSystem.current.IsPointerOverGameObject()) { //没有点在UI上 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; /*bool hasArmy = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("MyArmy")); * Queue<Collider> colliders = new Queue<Collider>(); * while (hasArmy) * { * Collider collider = hit.collider.GetComponent<Collider>(); * collider.enabled = false; * colliders.Enqueue(collider); * hasArmy = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("MapPoint")); * }*/ bool isCollider = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("MapPoint")); if (isCollider) { turnDelegate.Invoke(ref TurnCount);//获取回合数 MapPointCtrl mapPointCtrl = hit.collider.GetComponent <MapPointCtrl>(); if (selectArmyCard != null && armyPrefab != null) { if (selectArmyCard.Class == ArmyClassType.Hero && hit.collider.tag != "BossStart") { //如果是英雄单位只能箭头处 Dispatch(AreoCode.UI, UIEvent.PROMPT_PANEL_EVENTCODE, "英雄单位只能箭头处"); return; } else if (selectArmyCard.Class != ArmyClassType.Hero && hit.collider.tag == "BossStart") { Dispatch(AreoCode.UI, UIEvent.PROMPT_PANEL_EVENTCODE, "非英雄单位不能箭头处"); return; } if (TurnCount <= 1) { if (hit.collider.tag != "StartAreo" && hit.collider.tag != "Winline" && hit.collider.tag != "BossStart") { //如果第一回合不在屯兵区放置 Dispatch(AreoCode.UI, UIEvent.PROMPT_PANEL_EVENTCODE, "初始阶段只能后三排"); return; } } else { if (hit.collider.tag != "StartAreo" && hit.collider.tag != "Winline" && hit.collider.tag != "BossStart" && hit.collider.tag != "FeatureArea") { Dispatch(AreoCode.UI, UIEvent.PROMPT_PANEL_EVENTCODE, "只能放置在后五排"); return; } } switch (selectArmyCard.MoveType) { case ArmyMoveType.LAND: //陆地单位 if (mapPointCtrl.HasLandArmy()) { Dispatch(AreoCode.UI, UIEvent.PROMPT_PANEL_EVENTCODE, "此处已有陆地单位"); return; } //放置陆地单位 GameObject army; army = mapPointCtrl.SetLandArmy(armyPrefab, true); mapPointCtrl.LandArmyRace = selectArmyCard.Race; mapPointCtrl.LandArmyName = selectArmyCard.Name; //向我的兵种控制器集合添加兵种管理器 ArmyCtrl armyctrl = army.GetComponent <ArmyCtrl>(); armyctrl.Init(selectArmyCard, mapPointCtrl, army); armyctrl.armyState.MoveType = (ushort)selectArmyCard.MoveType; //更新地图点控制器 mapPointCtrl.UpdateLandArmy(army); myArmyCtrls.Add(armyctrl); //向发送发送出牌消息,让其他人消除卡牌 socketMsg.Change(OpCode.FIGHT, FightCode.DEAL_ARMYCARD_CREQ, selectArmyCard); Dispatch(AreoCode.NET, NetEvent.SENDMSG, socketMsg); //移除卡牌 Dispatch(AreoCode.CHARACTER, CharacterEvent.REMOVE_MY_CARDS, selectArmyCard); //向服务器发送消息 pointDto.Change(mapPointCtrl.mapPoint, mapPointCtrl.LandArmyRace, mapPointCtrl.LandArmyName, mapPointCtrl.SkyArmyRace, mapPointCtrl.SkyArmyName); socketMsg.Change(OpCode.FIGHT, FightCode.MAP_SET_ARMY_CREQ, pointDto); Dispatch(AreoCode.NET, NetEvent.SENDMSG, socketMsg); //向发送发送出牌消息,让其他人消除卡牌 //socketMsg.Change(OpCode.FIGHT, FightCode.DEAL_CARD_CREQ, "出牌请求"); //socketMsg.Change(OpCode.FIGHT, FightCode.DEAL_ARMYCARD_CREQ, selectArmyCard); //Dispatch(AreoCode.NET, NetEvent.SENDMSG, socketMsg); break; case ArmyMoveType.SKY: if (mapPointCtrl.HasSkyArmy()) { Dispatch(AreoCode.UI, UIEvent.PROMPT_PANEL_EVENTCODE, "此处已有飞行单位"); return; } //放置飞行单位 army = mapPointCtrl.SetSkyArmy(armyPrefab, true); //mapPointCtrl.SkyArmyCard = selectArmyCard; mapPointCtrl.SkyArmyRace = selectArmyCard.Race; mapPointCtrl.SkyArmyName = selectArmyCard.Name; //向我的兵种控制器集合添加兵种管理器 armyctrl = army.GetComponent <ArmyCtrl>(); armyctrl.Init(selectArmyCard, mapPointCtrl, army); armyctrl.armyState.MoveType = (ushort)selectArmyCard.MoveType; //更新地图点控制器 mapPointCtrl.UpdateSkyArmy(army); myArmyCtrls.Add(armyctrl); //向发送发送出牌消息,让其他人消除卡牌 socketMsg.Change(OpCode.FIGHT, FightCode.DEAL_ARMYCARD_CREQ, selectArmyCard); Dispatch(AreoCode.NET, NetEvent.SENDMSG, socketMsg); //移除卡牌 Dispatch(AreoCode.CHARACTER, CharacterEvent.REMOVE_MY_CARDS, selectArmyCard); //向服务器发送消息 pointDto.Change(mapPointCtrl.mapPoint, mapPointCtrl.LandArmyRace, mapPointCtrl.LandArmyName, mapPointCtrl.SkyArmyRace, mapPointCtrl.SkyArmyName); socketMsg.Change(OpCode.FIGHT, FightCode.MAP_SET_ARMY_CREQ, pointDto); Dispatch(AreoCode.NET, NetEvent.SENDMSG, socketMsg); /*//向发送发送出牌消息,让其他人消除卡牌 * socketMsg.Change(OpCode.FIGHT, FightCode.DEAL_ARMYCARD_CREQ, selectArmyCard); * Dispatch(AreoCode.NET, NetEvent.SENDMSG, socketMsg);*/ break; } /*while(colliders.Count != 0) * { * colliders.Dequeue().enabled = true; * }*/ foreach (var item in MyArmyCtrlManager.Instance.CardCtrllist) { item.canBeSeletced = true;//所有单位可交互 } } } } } }