Exemplo n.º 1
0
    public bool SetCell(Player owner, GameCellState state)
    {
        bool result = (this.state != state);

        SetOwner(owner);
        prevState  = this.state;
        this.state = state;

        return(result);
    }
        public void SetState(GameCellState state)
        {
            switch (state)
            {
            case GameCellState.Cloaked:
            {
                Btn.IsEnabled  = true;
                Btn.Background = Brushes.Black;
                Btn.Content    = "";
                State          = state;
            } break;

            case GameCellState.Uncloaked:
            {
                //Btn.IsEnabled = false;
                Btn.Background = Brushes.AntiqueWhite;
                Btn.Content    = "";
                State          = state;
                cellClicked    = null;
            }
            break;

            case GameCellState.Occupied:
            {
                //Btn.IsEnabled = false;
                Btn.Background = Brushes.Blue;
                State          = state;
                cellClicked    = null;
            }
            break;

            case GameCellState.Hit:
            {
                //Btn.IsEnabled = false;
                Btn.Background = Brushes.DarkBlue;
                Btn.Content    = "X";
                State          = state;
                cellClicked    = null;
            }
            break;

            case GameCellState.Sinked:
            {
                //Btn.IsEnabled = false;
                Btn.Background = Brushes.IndianRed;
                Btn.Content    = "X";
                State          = state;
                cellClicked    = null;
            }
            break;
            }
        }
Exemplo n.º 3
0
 public void Revert()
 {
     state     = prevState;
     ownerSeat = prevSeat;
     owner     = prevOwner;
 }
Exemplo n.º 4
0
 public bool SetCell(Player owner, GameCellState state, bool hasShip, NetworkInstanceId associatedShip)
 {
     this.hasShip        = hasShip;
     this.associatedShip = associatedShip;
     return(SetCell(owner, state));
 }
Exemplo n.º 5
0
    // Update is called once per frame
    void Update()
    {
        //Live
        if (Application.isPlaying)
        {
            Material cellMaterial = prefabHex.GetComponent <Renderer>().material;

            if (owner == Player.localPlayer.netId && selected && !hexOutline.activeInHierarchy)
            {
                //selectedParticles.gameObject.SetActive(true);
                hexOutline.SetActive(true);
            }
            else if (!selected && hexOutline.activeInHierarchy)
            {
                //selectedParticles.gameObject.SetActive(false);
                hexOutline.SetActive(false);
            }

            if (owner == Player.localPlayer.netId && hasShip && !shipParticles.gameObject.activeInHierarchy)
            {
                shipParticles.gameObject.SetActive(true);
            }
            else if (!hasShip && shipParticles.gameObject.activeInHierarchy)
            {
                shipParticles.gameObject.SetActive(false);
            }

            if (owner != NetworkInstanceId.Invalid)
            {
                if (state == GameCellState.Base && !cellMaterial.name.Contains(BaseMaterial.name))
                {
                    SetCellMaterial(ClientScene.FindLocalObject(owner).GetComponent <Player>().color, BaseMaterial);
                }
                else if (owner == Player.localPlayer.netId && state == GameCellState.ShipBuildArea && !cellMaterial.name.Contains(BaseAreaMaterial.name))
                {
                    SetCellMaterial(ClientScene.FindLocalObject(owner).GetComponent <Player>().color, BaseAreaMaterial);
                }
                else if (owner == Player.localPlayer.netId && state == GameCellState.MovementArea && !cellMaterial.name.Contains(MovementAreaMaterial.name))
                {
                    SetCellMaterial(MovementAreaMaterial.color, MovementAreaMaterial);
                }
                else if (owner == Player.localPlayer.netId && state == GameCellState.DepotBuildArea && !cellMaterial.name.Contains(DepotBuildAreaMaterial.name))
                {
                    SetCellMaterial(DepotBuildAreaMaterial.color, DepotBuildAreaMaterial);
                }
                else if (state == GameCellState.Depot && !cellMaterial.name.Contains(Empty.name))
                {
                    SetCellMaterial(Empty.color, Empty);
                }
            }

            if (state == GameCellState.Empty && !cellMaterial.name.Contains(Empty.name))
            {
                SetCellMaterial(Color.clear, Empty);
            }
            else if (state == GameCellState.NoMovement && !cellMaterial.name.Contains(Empty.name))
            {
                SetCellMaterial(Color.clear, Empty);
            }
            else if (state == GameCellState.TempusSpace && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus1 && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus2 && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus3 && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus4 && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus5 && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus6 && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus && !cellMaterial.name.Contains(TempusSpaceMaterial.name))
            {
                SetCellMaterial(Color.clear, TempusSpaceMaterial);
            }
            else if (state == GameCellState.Resource && !cellMaterial.name.Contains(ResourceMaterial.name))
            {
                SetCellMaterial(Color.clear, ResourceMaterial);
            }

            if (cellColorTarget != Color.clear && animatingColor && cellAnimationTime / cellAnimationSpeed < .9f)
            {
                prefabHex.GetComponent <Renderer>().material.color = Color.Lerp(cellMaterial.color, cellColorTarget, cellAnimationSpeed * Time.deltaTime);

                cellAnimationTime += Time.deltaTime;
            }
            else if (cellColorTarget != Color.clear && cellAnimationTime < cellAnimationSpeed)
            {
                prefabHex.GetComponent <Renderer>().material.color = cellColorTarget;

                cellAnimationTime = 0;
                animatingColor    = false;
            }
        }
        else
        {
            //Design Time
            if (resourceType != ResourceType.None)
            {
                state = GameCellState.Resource;
            }
            else if (state == GameCellState.Resource)
            {
                state = GameCellState.Empty;
            }
            if (state == GameCellState.Empty)
            {
                resourceType = ResourceType.None;
            }

            if (state == GameCellState.Base)
            {
                cellColorTarget = Color.blue;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(BaseMaterial);
            }
            else if (state == GameCellState.ShipBuildArea)
            {
                cellColorTarget = Color.blue;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(BaseAreaMaterial);
            }
            else if (state == GameCellState.Resource)
            {
                cellColorTarget = Resource.GetColor(resourceType);
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(ResourceMaterial);
            }
            else if (state == GameCellState.Empty)
            {
                cellColorTarget = Color.black;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(Empty);
            }
            else if (state == GameCellState.NoMovement)
            {
                cellColorTarget = Color.clear;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(NoMovementMaterial);
            }
            else if (state == GameCellState.TempusSpace)
            {
                cellColorTarget = Color.gray;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus1)
            {
                cellColorTarget = Color.cyan;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus2)
            {
                cellColorTarget = Color.cyan;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus3)
            {
                cellColorTarget = Color.cyan;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus4)
            {
                cellColorTarget = Color.cyan;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus5)
            {
                cellColorTarget = Color.cyan;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus6)
            {
                cellColorTarget = Color.cyan;
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(TempusSpaceMaterial);
            }
            else if (state == GameCellState.Tempus)
            {
                cellColorTarget = new Color(1, .5f, 0);
                prefabHex.GetComponent <Renderer>().sharedMaterial = new Material(Empty);
            }
            prefabHex.GetComponent <Renderer>().sharedMaterial.color = cellColorTarget;
        }
    }