Beispiel #1
0
    /// <summary>
    /// Select the specified unit, which will display all the tiles that it can move to
    /// </summary>
    /// <param name="pUnit">The specific unit that should be selected</param>
    public void SelectUnit(Unit pUnit)
    {
        if ((selectedUnit == null || !selectedUnit.IsMoving()) && !pUnit.GetSelected())
        {
            if (pUnit != null && pUnit != selectedUnit)
            {
                DeselectUnit();
            }

            canDeselect = false;

            pUnit.BecomeSelected();

            UnitSelectMessage message;
            message.unitID   = pUnit.GetID();
            message.selected = '1';

            ChampNetManager.SendUnitSelectMessage(message.unitID, message.selected);

            selectedUnit = pUnit;
            GridManagerScript.instance.DisplayWalkableTiles(pUnit.Tile, pUnit.GetMovesLeft(), pUnit.endedOnDiagonal);

            StartCoroutine(DeflagDeselect());
        }
    }
    /// <summary>
    ///Sets up a server and starts the game
    /// </summary>
    public void HostServer()
    {
        ChampNetManager.InitHost(userName.text);

        PersistentData.SetUserName(userName.text);
        PersistentData.SetHosting(true);

        NextScene();
    }
Beispiel #3
0
    /// <summary>
    /// Connects the player to the server based on the given IP address.
    /// </summary>
    public void JoinServer()
    {
        ChampNetManager.InitClient(userName.text, serverIP.text);

        PersistentData.SetUserName(userName.text);
        PersistentData.SetHosting(false);

        NextScene();
    }
Beispiel #4
0
    /// <summary>
    /// Move the selected unit to the secified node
    /// </summary>
    /// <param name="targetNode">The specific node that the unit should move to.</param>
    public void MoveUnit(Node targetNode)
    {
        if (selectedUnit != null && !selectedUnit.IsMoving())
        {
            EndShooting();

            ChampNetManager.SendMoveMessage(selectedUnit.GetID(), targetNode.parentTile.xLoc, targetNode.parentTile.zLoc);

            selectedUnit.MoveToNode(targetNode);
        }
    }
    public void SendTypedMessage()
    {
        if (!(inputField.text == ""))
        {
            AddMessage(PersistentData.GetUserName(), inputField.text);

            ChampNetManager.SendChatMessage(inputField.text);

            inputField.text = "";
        }

        ActivateInput();
    }
Beispiel #6
0
    /// <summary>
    /// Deals damage to the Unit based on the Selected Unit's damage value.
    /// </summary>
    /// <param name="pUnit">Unit to take damage.</param>
    public void Shoot(Unit pUnit)
    {
        if (isShooting && pUnit.GetShootable())
        {
            pUnit.TakeDamage(selectedUnit.GetDamage());

            selectedUnit.SetShot();

            ChampNetManager.SendDamageMessage(pUnit.GetID(), selectedUnit.GetID(), selectedUnit.GetDamage());
        }

        EndShooting();
    }
Beispiel #7
0
    /// <summary>
    /// Deselect the selected unit, which will stop displaying it's walkable tiles.
    /// </summary>
    public void DeselectUnit()
    {
        if (canDeselect && selectedUnit && !selectedUnit.IsMoving())
        {
            UnitSelectMessage message;
            message.unitID   = selectedUnit.GetID();
            message.selected = '0';

            ChampNetManager.SendUnitSelectMessage(message.unitID, message.selected);

            selectedUnit.DeselectUnit();
            selectedUnit = null;
            GridManagerScript.instance.ClearDisplayedTiles();

            EndShooting();
        }
    }
Beispiel #8
0
    private void Start()
    {
        JSONReadManager.LoadFile("mapFile");
        JSONReadManager.LoadFile("personalityFile");

        gridInstance      = GridManagerScript.instance;
        playerUnitManager = PlayerUnitManager.instance;
        enemyUnitManager  = EnemyUnitManager.instance;

        gridInstance.Initialize();

        display = GetComponent <StatDisplay>();
        display.Initialize();
        DisableText();

        chat.InitializeChatBox();
        chat.ShowAndHide(false);
        showingChat = false;

        AddMessageToChat("HOST", "Left click controls Units.");
        AddMessageToChat("HOST", "Right click deselects Units.");
        AddMessageToChat("HOST", "Press E to Prepare to Shoot.");
        AddMessageToChat("HOST", "Left click to shoot enemies.");
        AddMessageToChat("HOST", "WASD moves camera.");
        AddMessageToChat("HOST", "Middle Mouse rotates camera.");

        localTurnOver     = false;
        networkedTurnOver = false;

        localStartTurn     = false;
        networkedStartTurn = false;

        if (PersistentData.GetHosting())
        {
            randomSeed = (int)System.DateTime.Now.Ticks;

            ChampNetManager.SendSeedMessage(randomSeed);

            InitUnitManagers(randomSeed);
        }
    }
Beispiel #9
0
 public void CheckEnd()
 {
     if (playerUnitManager.GetUnitList().Count == 0)
     {
         //Players lose
         //Stop Networking
         ChampNetManager.StopNetworkConnection();
         PersistentData.SetPlayerHasWon(true);
         PersistentData.SetIsEndScene(true);
         SceneManager.LoadScene("EndScene");
     }
     else if (enemyUnitManager.GetUnitList().Count == 0)
     {
         //Enemies lose
         //Stop networking
         ChampNetManager.StopNetworkConnection();
         PersistentData.SetPlayerHasWon(false);
         PersistentData.SetIsEndScene(true);
         SceneManager.LoadScene("EndScene");
     }
 }
    void Update()
    {
        // Updates score each frame
        scoreText.text = score.ToString();

        // Handles timer for events
        timer += Time.deltaTime;

        if (timer >= waitTime)
        {
            timer = 0f;

            ChangeTip();
        }

        int clientNum = ChampNetManager.GetClientNum();

        if (clientNum == 2)
        {
            GoToGame();
        }
    }
Beispiel #11
0
    private void HandleNetworking()
    {
        int messageType = ChampNetManager.GetMessageType();

        if (messageType != -1)
        {
            switch (messageType)
            {
            case (int)CHAMPNET_MESSAGE_ID.ID_UNIT_SELECT_DATA:
            {
                UnitSelectMessage message = ChampNetManager.GetUnitSelectMessage();

                if (TurnManager.instance.GetCurrentManager() == playerUnitManager)
                {
                    if (message.selected == '1')
                    {
                        playerUnitManager.AlternateSelectUnit(message.unitID);
                    }
                    else if (message.selected == '0')
                    {
                        playerUnitManager.AlternateDeselect(message.unitID);
                    }
                    else
                    {
                        Debug.LogError("INVALID MESSAGE");
                    }
                }
                // Handle an enemy being selected
                else
                {
                }
            }
            break;

            case (int)CHAMPNET_MESSAGE_ID.ID_MESSAGE_DATA:
            {
                ChatMessage message = ChampNetManager.GetChatMessage();

                AddMessageToChat(message.userName, message.message);
            }
            break;

            case (int)CHAMPNET_MESSAGE_ID.ID_SEED_DATA:
            {
                InitUnitManagers(ChampNetManager.GetSeedMessage());
            }
            break;

            case (int)CHAMPNET_MESSAGE_ID.ID_UNIT_MOVE_DATA:
            {
                UnitMoveMessage message = ChampNetManager.GetMoveMessage();

                if (TurnManager.instance.GetCurrentManager() != playerUnitManager)
                {
                    return;
                }

                playerUnitManager.PrepareMoveUnit(message.gridPos);
            }
            break;

            case (int)CHAMPNET_MESSAGE_ID.ID_UNIT_DAMAGE_DATA:
            {
                UnitDamageMessage message = ChampNetManager.GetDamageMessage();

                if (TurnManager.instance.GetCurrentManager() != playerUnitManager)
                {
                    return;
                }

                enemyUnitManager.NetworkShoot(message.unitID, message.damageDealt);

                playerUnitManager.FindUnit(message.shooterID).SetShot();
            }
            break;

            case (int)CHAMPNET_MESSAGE_ID.ID_FINALIZE_TURN_DATA:
            {
                ChampNetManager.PopMessage();

                NetworkTurnOver();
            }
            break;

            case (int)CHAMPNET_MESSAGE_ID.ID_START_TURN_DATA:
            {
                ChampNetManager.PopMessage();

                NetworkTurnStart();
            }
            break;
            }
        }
    }
Beispiel #12
0
 private void OnApplicationQuit()
 {
     ChampNetManager.StopNetworkConnection();
 }