Example #1
0
 // 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>();
 }
Example #2
0
 public void Cancel()
 {
     if (prevMenu.GetComponent <NetworkedMenu>() is NetworkedGridMenu)
     {
         NetworkedGridMenu gm = prevMenu.GetComponent <NetworkedGridMenu>();
         gm.activeGO = null;
         gm.SetElementColor(gm.selectedGO, selectedColor, defaultColor);
         HideContextMenu();
     }
 }
Example #3
0
    // 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;
    }
Example #4
0
    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>();
        }
    }
Example #5
0
    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();
    }
Example #6
0
    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;
        }
    }
Example #7
0
    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();
    }