// Use this for initialization void Start() { activeMenu = FindObjectOfType <NetworkedGridMenu>(); if (isLocalPlayer) { CmdFindGameManager(); } if (gameManager == null && isLocalPlayer) { CmdFindGameManager(); } if (hasAuthority && !onLocalMulti) { NetworkedPlayer[] otherPlayers = FindObjectsOfType <NetworkedPlayer>(); foreach (NetworkedPlayer player in otherPlayers) { if (player != this && player.hasAuthority) { onLocalMulti = true; player.onLocalMulti = true; break; } } } grid = FindObjectOfType <NetworkedGridMenu>(); }
public void Cancel() { if (prevMenu.GetComponent <NetworkedMenu>() is NetworkedGridMenu) { NetworkedGridMenu gm = prevMenu.GetComponent <NetworkedGridMenu>(); gm.activeGO = null; gm.SetElementColor(gm.selectedGO, selectedColor, defaultColor); HideContextMenu(); } }
// TO-DO - MAKE MENU HANDLE THINGS BEING LOCKED private void OnEnable() { if (alreadyDone) { return; } gridMenu = FindObjectOfType <NetworkedGridMenu>(); if (buttonType != ButtonTypeEnum.None) { gameObject.GetComponent <Button>().onClick.RemoveAllListeners(); } switch (buttonType) { case ButtonTypeEnum.SpawnUnit: gameObject.GetComponent <Button>().onClick.AddListener(delegate { gridMenu.PlaceUnit("unit"); }); break; case ButtonTypeEnum.SpawnPusher: gameObject.GetComponent <Button>().onClick.AddListener(delegate { gridMenu.PlaceUnit("pusher"); }); break; case ButtonTypeEnum.SpawnPuller: gameObject.GetComponent <Button>().onClick.AddListener(delegate { gridMenu.PlaceUnit("puller"); }); break; case ButtonTypeEnum.SpawnTwister: gameObject.GetComponent <Button>().onClick.AddListener(delegate { gridMenu.PlaceUnit("twister"); }); break; case ButtonTypeEnum.SpawnPortalPlacer: gameObject.GetComponent <Button>().onClick.AddListener(delegate { gridMenu.PlaceUnit("portalPlacer"); }); break; case ButtonTypeEnum.Move: gameObject.GetComponent <Button>().onClick.AddListener(delegate { GetComponentInParent <NetworkedUnit>().DisplayMoveGrid(); }); break; case ButtonTypeEnum.Push: gameObject.GetComponent <Button>().onClick.AddListener(delegate { GetComponentInParent <NetworkedPusher>().DisplayActionGrid(); }); break; case ButtonTypeEnum.Pull: gameObject.GetComponent <Button>().onClick.AddListener(delegate { GetComponentInParent <NetworkedPuller>().DisplayActionGrid(); }); break; case ButtonTypeEnum.Twist: gameObject.GetComponent <Button>().onClick.AddListener(delegate { GetComponentInParent <NetworkedTwister>().DisplayActionGrid(); }); break; } alreadyDone = true; }
public GameObject flag; // a reference to the flag; only used if this unit has the flag // Use this for initialization protected virtual void OnEnable() { if (!initialized) { grid = FindObjectOfType <NetworkedGridMenu>(); unitType = UnitType.Unit; owner = transform.root.gameObject; initialized = true; } if (!grid) { grid = FindObjectOfType <NetworkedGridMenu>(); } }
public void SetLocation(GameObject newLoc) { transform.position = newLoc.transform.TransformPoint(Vector3.zero) + Vector3.forward * gameObject.transform.position.z; if (flag) { flag.transform.position = newLoc.transform.TransformPoint(Vector3.zero) + Vector3.forward * flag.transform.position.z; flag.GetComponent <NetworkedGamePiece>().gridElement = newLoc.GetComponent <NetworkedGridElement>(); if (newLoc.GetComponent <NetworkedGridElement>().goal) { owner.GetComponent <NetworkedPlayer>().CmdEndLevel(owner.GetComponent <NetworkedPlayer>().identity); //grid.gameMan.EndLevel(owner.GetComponent<NetworkedPlayer>().identity); } } // Check if gridElement has been assigned (this is for spawning) if (!gridElement) { if (!FindGridElement()) { Debug.Log(gridElement.piece); } } // Handle Collisions; We're assuming newLoc always has a GridElement NetworkedGridElement otherGE = newLoc.GetComponent <NetworkedGridElement>(); if (otherGE && otherGE.piece && otherGE.piece != gameObject) { //Debug.Log("Collided with: " + otherGE.piece.name); // Check to make sure we're working with a unit if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedUnit) { NetworkedUnit otherUnit = otherGE.piece.GetComponent <NetworkedUnit>(); otherUnit.owner.GetComponent <NetworkedPlayer>().CmdReturnUnit(otherGE.piece); if (otherUnit.unitType == UnitType.Portalist) { otherUnit.GetComponent <NetworkedPortalPlacer>().PlacePortal(otherGE); } otherGE.piece = null; // check to see if the other piece has the flag if (otherUnit.flag) { otherGE.piece = otherUnit.flag; flag = null; } // make sure you don't have the flag if (flag) { otherGE.piece = flag; flag.GetComponent <NetworkedGamePiece>().gridElement = otherGE; flag = null; } // Don't forget to kill yourself owner.GetComponent <NetworkedPlayer>().CmdReturnUnit(gameObject); if (unitType == UnitType.Portalist) { GetComponent <NetworkedPortalPlacer>().PlacePortal(otherGE); } gridElement.piece = null; return; } else { // Check for flag if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedFlag) { flag = otherGE.piece; canAct = false; remainingMoves = 0; } else if (otherGE.piece.GetComponent <NetworkedGamePiece>() is NetworkedTrap) { if (unitType == UnitType.Portalist) { this.GetComponent <NetworkedPortalPlacer>().PlacePortal(otherGE); } if (gridElement.piece == gameObject) { gridElement.piece = null; } if (!grid) { grid = FindObjectOfType <NetworkedGridMenu>(); } owner.GetComponent <NetworkedPlayer>().CmdReturnUnit(gameObject); if (flag) // flags will destroy traps; currently no piece can destroy traps, // so if a flag lands on one, it must either destroy the trap or the game is unwinnable // it may be better to have traps pull/pushable, while the flag remains aloof. This would // prevent the need to destroy the trap { Destroy(otherGE.piece); otherGE.piece = flag; flag.GetComponent <NetworkedGamePiece>().gridElement = otherGE; flag = null; } return; } } } gridElement.piece = null; gridElement = newLoc.GetComponent <NetworkedGridElement>(); gridElement.piece = gameObject; if (flag) { flag.GetComponent <NetworkedGamePiece>().gridElement = gridElement; if (gridElement.goal) { // Player has moved the flag into the goal! // Someone should probably contact the gamemanager owner.GetComponent <NetworkedPlayer>().CmdEndLevel(owner.GetComponent <NetworkedPlayer>().identity); //grid.gameMan.EndLevel(); } } if (grid == null) { grid = FindObjectOfType <NetworkedGridMenu>(); } grid.UpdateDescription(); }
public static void UpdateWallSprite(GameObject GO) { NetworkedGridMenu grid = FindObjectOfType <NetworkedGridMenu>(); NetworkedGridElement element = GO.GetComponent <NetworkedGridElement>(); if (element.northWall && element.eastWall && element.southWall && element.westWall) { GO.GetComponent <Image>().sprite = grid.FourWalls; } else if (element.northWall && element.eastWall && element.southWall) { GO.GetComponent <Image>().sprite = grid.ThreeWalls; GO.transform.rotation = Quaternion.Euler(0, 0, -90); } else if (element.northWall && element.eastWall && element.westWall) { GO.GetComponent <Image>().sprite = grid.ThreeWalls; } else if (element.northWall && element.southWall && element.westWall) { GO.GetComponent <Image>().sprite = grid.ThreeWalls; GO.transform.rotation = Quaternion.Euler(0, 0, 90); } else if (element.eastWall && element.southWall && element.westWall) { GO.GetComponent <Image>().sprite = grid.ThreeWalls; GO.transform.rotation = Quaternion.Euler(0, 0, 180); } else if (element.northWall && element.eastWall) { GO.GetComponent <Image>().sprite = grid.TwoWallsL; GO.transform.rotation = Quaternion.Euler(0, 0, -90); } else if (element.northWall && element.southWall) { GO.GetComponent <Image>().sprite = grid.TwoWallsHall; GO.transform.rotation = Quaternion.Euler(0, 0, 90); } else if (element.northWall && element.westWall) { GO.GetComponent <Image>().sprite = grid.TwoWallsL; } else if (element.eastWall && element.southWall) { GO.GetComponent <Image>().sprite = grid.TwoWallsL; GO.transform.rotation = Quaternion.Euler(0, 0, 180); } else if (element.eastWall && element.westWall) { GO.GetComponent <Image>().sprite = grid.TwoWallsHall; } else if (element.southWall && element.westWall) { GO.GetComponent <Image>().sprite = grid.TwoWallsL; GO.transform.rotation = Quaternion.Euler(0, 0, 90); } else if (element.northWall) { GO.GetComponent <Image>().sprite = grid.OneWall; GO.transform.rotation = Quaternion.Euler(0, 0, -90); } else if (element.eastWall) { GO.GetComponent <Image>().sprite = grid.OneWall; GO.transform.rotation = Quaternion.Euler(0, 0, 180); } else if (element.southWall) { GO.GetComponent <Image>().sprite = grid.OneWall; GO.transform.rotation = Quaternion.Euler(0, 0, 90); } else if (element.westWall) { GO.GetComponent <Image>().sprite = grid.OneWall; } else { GO.GetComponent <Image>().sprite = grid.NoWalls; GO.transform.rotation = Quaternion.identity; } }
public void RpcRequestUnit(UnitType type, GameObject _unit) { switch (type) { case UnitType.Unit: unitPiece = _unit; unitPiece.SetActive(false); switch (identity) { case PlayerEnum.Player1: unitPiece.GetComponent <SpriteRenderer>().sprite = gameManager.unitSprites[0]; break; case PlayerEnum.Player2: unitPiece.GetComponent <SpriteRenderer>().sprite = gameManager.unitSprites[1]; break; } ; break; case UnitType.Pusher: pusherPiece = _unit; pusherPiece.SetActive(false); switch (identity) { case PlayerEnum.Player1: pusherPiece.GetComponent <SpriteRenderer>().sprite = gameManager.pusherSprites[0]; break; case PlayerEnum.Player2: pusherPiece.GetComponent <SpriteRenderer>().sprite = gameManager.pusherSprites[1]; break; } ; break; case UnitType.Puller: pullerPiece = _unit; pullerPiece.SetActive(false); switch (identity) { case PlayerEnum.Player1: pullerPiece.GetComponent <SpriteRenderer>().sprite = gameManager.pullerSprites[0]; break; case PlayerEnum.Player2: pullerPiece.GetComponent <SpriteRenderer>().sprite = gameManager.pullerSprites[1]; break; } ; break; case UnitType.Twister: twisterPiece = _unit; twisterPiece.SetActive(false); switch (identity) { case PlayerEnum.Player1: twisterPiece.GetComponent <SpriteRenderer>().sprite = gameManager.twisterSprites[0]; break; case PlayerEnum.Player2: twisterPiece.GetComponent <SpriteRenderer>().sprite = gameManager.twisterSprites[1]; break; } ; break; case UnitType.Portalist: portalPlacerPiece = _unit; portalPlacerPiece.SetActive(false); switch (identity) { case PlayerEnum.Player1: portalPlacerPiece.GetComponent <SpriteRenderer>().sprite = gameManager.portalPlacerSprites[0]; break; case PlayerEnum.Player2: portalPlacerPiece.GetComponent <SpriteRenderer>().sprite = gameManager.portalPlacerSprites[1]; break; } ; break; } if (grid == null) { grid = FindObjectOfType <NetworkedGridMenu>(); } grid.UpdateDescription(); }