public void ResetValues(bool physicalMovement, GameObject marble, GameObject position) { if (physicalMovement) { NewTileScript fromPos = marble.GetComponent <MarbleScript>().myPosition.GetComponent <NewTileScript>(); NewTileScript toPos = position.GetComponent <NewTileScript>(); fromPos.taken = false; fromPos.myMarble = null; toPos.taken = true; toPos.myMarble = marble; toPos.moveHere = false; toPos.jumpPosition = false; } switch (playerState) { case (PlayerState.Player): if (neighbours != null) { foreach (GameObject pos in possibleMoves) { pos.GetComponent <NewTileScript>().taken = false; pos.GetComponent <NewTileScript>().myMarble = null; pos.GetComponent <NewTileScript>().moveHere = false; pos.GetComponent <NewTileScript>().jumpPosition = false; Behaviour halo = (Behaviour)pos.GetComponent("Halo"); halo.enabled = false; } possibleMoves.Clear(); StartCoroutine(SwitchCurrentPlayer()); } return; case (PlayerState.Npc): case (PlayerState.NpcMinimax): if (neighbours != null) { foreach (GameObject pos in possibleMoves) { pos.GetComponent <NewTileScript>().taken = false; pos.GetComponent <NewTileScript>().myMarble = null; pos.GetComponent <NewTileScript>().moveHere = false; pos.GetComponent <NewTileScript>().jumpPosition = false; } possibleMoves.Clear(); if (playerState == PlayerState.Npc) { StartCoroutine(SwitchCurrentPlayer()); } else { GameObject.FindGameObjectWithTag(currentPlayer + "Player").GetComponent <NpcBehaviour>().WaitForMoves(); } } return; } }
public Minimax(NpcBehaviour npc, MarbleScript marble, NewTileScript tileToMoveTo, GameManager gameManager, List <NewTileScript> previousTiles, bool jump) { this.bestNode = this; score = -Mathf.Infinity; this.npc = npc; this.jump = jump; this.marble = marble; this.tileToMoveTo = tileToMoveTo; this.gameManager = gameManager; this.previousTiles = previousTiles; gameManager.MoveMarbleScript(marble.gameObject, tileToMoveTo.gameObject); previousTiles.Add(tileToMoveTo); if (jump && gameManager.playerList[(gameManager.playerList.IndexOf(marble.Player.PlayerColor) + 1) % gameManager.playerList.Count] + "Player" != gameManager.CurrentPlayer) { gameManager.MarblePicked(marble.gameObject, tileToMoveTo.gameObject, true, this, npc); } else { bestNode = this; } gameManager.StartMinimax(this); }
public PossibleMove(MarbleScript marble, NewTileScript tile) { this.marble = marble; this.tile = tile; }