void PlayerAction() { Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); mousePosition.z = -1; RaycastHit hit; if (Physics.Raycast(mousePosition, Vector3.forward, out hit, Mathf.Infinity, cardLayer)) { ChangeMyCard(hit); m_MyActionPhase = m_Action.Wait; } if (Physics.Raycast(mousePosition, Vector3.forward, out hit, Mathf.Infinity, targetLayer)) { if (hit.collider.gameObject.GetComponent <CellData>().CanPlantBomb&& m_MyBomb != Bomb.Nothing) { foreach (var item in m_Neighbours) { item.GetComponent <CellData>().ShowTile(gameObject.name); item.GetComponent <CellData>().CanPlantBomb = false; } hit.collider.gameObject.GetComponent <CellData>().PlantBomb(m_MyBomb, gameObject.name); SendDropMine(m_MyBomb, hit.collider.gameObject.transform.parent.name); m_MyBomb = Bomb.Nothing; SendActionDone(); } } }
/// <summary> /// This method checks if the chest who you're looking for is in the 8 tiles around you. /// <remarks> /// This method is called during the action phase. /// </remarks> /// </summary> public void CheckIsNearChest() { if (m_MyBomb != Bomb.Nothing) { foreach (var item in m_Neighbours) { item.GetComponent <CellData>().ShowTile(gameObject.name); item.GetComponent <CellData>().CanPlantBomb = false; } } bool result = false; Debug.Log(m_Neighbours.Count); foreach (GameObject item in m_Neighbours) { if (item.GetComponent <CellData>().isTreasure) { //call l'affichage d'un message result = true; break; } result = false; } Debug.Log("is CheckIsNearChest =" + result); StartCoroutine(m_Canvas.ShowInformation(result, false)); if (view.IsMine) { m_MyActionPhase = m_Action.Wait; SendActionDone(); } }
void LaunchGame() { m_Canvas.StartGameUI(); GestionCartes deck = gameDeck.GetComponent <GestionCartes>(); terrain = GameObject.FindObjectOfType <GridGen>(); Instantiate(handGO).transform.parent = GameObject.Find("GamePanel").transform; m_MyActionPhase = m_Action.Mouvement; m_Canvas.UpdateInterface(m_MyActionPhase, hand); }
/// <summary> /// This method sends a message to other players that she/he can change his action phase. /// </summary> void SendChangeTurn() { m_MyActionPhase = m_Action.Wait; m_Canvas.UpdateInterface(m_MyActionPhase, hand); byte evCode = 8; // Custom Event 1: Used as "MoveUnitsToTargetPosition" event object[] content = new object[] { transform.GetChild(0).transform.position, FOV, "Je sais pas encore", name, PlayerID }; // Array contains the target position and the IDs of the selected units RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); //raiseEventOptions.CachingOption = EventCaching.AddToRoomCacheGlobal; raiseEventOptions.Receivers = ReceiverGroup.All; SendOptions sendOptions = new SendOptions(); sendOptions.DeliveryMode = DeliveryMode.Reliable; PhotonNetwork.RaiseEvent(evCode, content, raiseEventOptions, sendOptions); }
/// <summary> /// This method sends a message to other players that he's/she's waiting to be on action phase . /// </summary> void SendMouvementDone() { m_MyActionPhase = m_Action.Wait; m_Canvas.UpdateInterface(m_MyActionPhase, hand); byte evCode = 4; // Custom Event 1: Used as "MoveUnitsToTargetPosition" event object[] content = new object[] { gameObject.name, 2 }; // Array contains the target position and the IDs of the selected units RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); //raiseEventOptions.CachingOption = EventCaching.AddToRoomCacheGlobal; raiseEventOptions.Receivers = ReceiverGroup.Others; SendOptions sendOptions = new SendOptions(); sendOptions.DeliveryMode = DeliveryMode.Reliable; PhotonNetwork.RaiseEvent(evCode, content, raiseEventOptions, sendOptions); }
/// <summary> /// This method is call when a player don't want to make an action during the action phase /// </summary> public void PassTurn() { if (m_MyBomb != Bomb.Nothing) { foreach (var item in m_Neighbours) { item.GetComponent <CellData>().ShowTile(gameObject.name); item.GetComponent <CellData>().CanPlantBomb = false; } } Debug.Log("Je passe"); if (view.IsMine) { m_MyActionPhase = m_Action.Wait; SendActionDone(); } }
public void SendDeckHasChange(Carte drop, Carte get) { m_MyActionPhase = m_Action.Wait; m_Canvas.UpdateInterface(m_MyActionPhase, hand); Debug.Log("A player have draw"); byte evCode = 3; // Custom Event 1: Used as "MoveUnitsToTargetPosition" event object[] content = new object[] { drop.cardId, get.cardId }; // Array contains the target position and the IDs of the selected units RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); //raiseEventOptions.CachingOption = EventCaching.AddToRoomCacheGlobal; raiseEventOptions.Receivers = ReceiverGroup.Others; SendOptions sendOptions = new SendOptions(); sendOptions.DeliveryMode = DeliveryMode.Reliable; PhotonNetwork.RaiseEvent(evCode, content, raiseEventOptions, sendOptions); }
/// <summary> /// This method checks if the time where you contain the chest who you're looking for /// <remarks> /// This method is called during the action phase. /// </remarks> /// </summary> public void CheckIsChest() { if (m_MyBomb != Bomb.Nothing) { foreach (var item in m_Neighbours) { item.GetComponent <CellData>().ShowTile(gameObject.name); item.GetComponent <CellData>().CanPlantBomb = false; } } RaycastHit hit; Physics.Raycast(transform.position + offset, Vector3.forward * 2, out hit, Mathf.Infinity); Color color = hit.collider.gameObject != null ? Color.green : Color.red; Debug.DrawRay(transform.position + offset, Vector3.forward * 2, color); bool result = hit.collider.gameObject.GetComponent <CellData>().isTreasure; Debug.Log(hit.collider.gameObject.name); Debug.Log("is CheckIsChest =" + result); StartCoroutine(m_Canvas.ShowInformation(result, true)); if (view.IsMine) { if (!result) { m_MyActionPhase = m_Action.Wait; SendActionDone(); } else { SendPlayerGetTreasure(); } } }
public void OnEvent(EventData photonEvent) { byte eventCode = photonEvent.Code; object[] data; switch (eventCode) { case 0: data = (object[])photonEvent.CustomData; string playerName = (string)data[0]; int playerID = (int)data[1]; SetId(playerName, playerID); break; case 1: data = (object[])photonEvent.CustomData; LaunchGame(); break; case 2: data = (object[])photonEvent.CustomData; playerID = (int)data[0]; string handID = (string)data[1]; int nbCardInHand = (int)data[2]; ModifDeck(handID); if (PlayerID == playerID + 1 && nbCardInHand == 2) { MakeHand(); } break; case 3: data = (object[])photonEvent.CustomData; int carteToDeckId = (int)data[0]; int carteToHandId = (int)data[1]; UpdateDeck(carteToDeckId, carteToHandId); break; case 4: data = (object[])photonEvent.CustomData; playerName = (string)data[0]; int phase = (int)data[1]; Debug.Log("mouvement " + playerName); ChangePhase(playerName, phase, true); break; case 5: data = (object[])photonEvent.CustomData; playerName = (string)data[0]; /*if(view.IsMine) * SendActionDone();*/ Debug.Log("reçu 5 de la part de +" + playerName); m_MyActionPhase = m_Action.Action; m_Canvas.UpdateInterface(m_MyActionPhase, hand); break; case 6: //ChangeTurn(); data = (object[])photonEvent.CustomData; playerName = (string)data[3]; ChangePhase(playerName, 2, false); break; case 7: data = (object[])photonEvent.CustomData; int typeofMine = (int)data[0]; string tileName = (string)data[1]; string ownerName = (string)data[2]; switch (typeofMine) { case 0: GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.RED, ownerName); break; case 1: GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.BLACK, ownerName); break; case 2: GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.WHITE, ownerName); break; case 3: GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.Nothing, ownerName); break; default: GameObject.Find(tileName).transform.GetChild(0).GetComponent <CellData>().UpdateBombState(Bomb.Nothing, ownerName); break; } ChangeTurn(); break; case 8: data = (object[])photonEvent.CustomData; Vector3 pos = (Vector3)data[0]; float radius = (float)data[1]; string tag = (string)data[2]; playerName = (string)data[3]; int playerId = (int)data[4]; if (playerId != this.PlayerID) { UpdateBoard(pos, radius, tag); } if (m_MyActionPhase == m_Action.Wait) { SendChangeTurn(); } m_MyActionPhase = m_Action.Mouvement; m_Canvas.UpdateInterface(m_MyActionPhase, hand); break; case 9: data = (object[])photonEvent.CustomData; int typeOfMine = (int)data[0]; tileName = (string)data[1]; ownerName = (string)data[2]; Debug.LogWarning(tileName + " " + ownerName + " " + typeOfMine); GameObject tileGO = GameObject.Find(tileName).transform.GetChild(0).gameObject; if (ownerName == this.name) { Debug.Log("trigger"); BombTrigger(tileGO.GetComponent <CellData>()); } //tileGO.GetComponent<CellData>().ResetTile(); break; case 10: data = (object[])photonEvent.CustomData; string cardName = (string)data[0]; foreach (Carte card in gameDeck.GetComponent <GestionCartes>().allCardsInPlayerHand) { if (card.cardName == cardName) { card.CanTurnCard = true; } } break; case 11: data = (object[])photonEvent.CustomData; playerName = (string)data[0]; m_MyActionPhase = m_Action.End; m_Canvas.UpdateInterface(m_MyActionPhase, hand); m_Canvas.ShowWinner(playerName); break; } }