Ejemplo n.º 1
0
    /// <summary>
    /// Left mouse click. Checking hit points of collider, is soldier or building?
    /// </summary>
    /// <param name="mousePos">Mouse position on grid map</param>
    private void LeftMouseClick(Vector2 mousePos)
    {
        if (MouseInBounds())
        {
            GameObject hitObject = FindHitObject(mousePos);
            Vector3    hitPoint  = FindHitPoint(mousePos);
            if (takingOrderSoldiers != null && takingOrderSoldiers.Count > 0)
            {
                for (int i = 0; i < takingOrderSoldiers.Count; i++)
                {
                    takingOrderSoldiers[i].GetComponentInChildren <SpriteRenderer>().material = defaultMaterial;
                }
            }

            takingOrderSoldiers = null;
            if (hitObject && hitPoint != InvalidPosition && hitObject.CompareTag("Soldier"))
            {
                MovementSoldier soldierMovement = hitObject.GetComponent <MovementSoldier>();
                if (soldierMovement)
                {
                    if (takingOrderSoldiers == null)
                    {
                        takingOrderSoldiers = new List <MovementSoldier>();
                    }
                    takingOrderSoldiers.Add(soldierMovement);
                    soldierMovement.GetComponentInChildren <SpriteRenderer>().material = selectionMaterial;
                }
            }
            else if (hitObject && hitPoint != InvalidPosition && hitObject.CompareTag("Building"))
            {
                selectedBuilding = hitObject.transform;
                UIManager.instance.ShowSelectedBuildingProduce(selectedBuilding.GetComponent <Entity>());
                return;
            }

            foreGroundTM.ClearAllTiles();
            UIManager.instance.ShowBuildings();
            selectedBuilding = null;
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Creating soldiers on selected barrack.
    /// </summary>
    /// <param name="soldier">Soldier gameobject.</param>
    public void CreateSoldier(GameObject soldier)
    {
        Vector3Int buildingPos = grid.WorldToCell(selectedBuilding.position);
        Vector3    flagTarget  = selectedBuilding.GetComponent <Barrack>().spawnTarget;

        Node node = new Node(false, buildingPos.x, buildingPos.y);

        gridMap.GetValidNeighbour(ref node);
        buildingPos = new Vector3Int(node.gridX, node.gridY, 0);

        gridMap.nodes[buildingPos.x, buildingPos.y].isWalkable = false;
        tilemap.SetTile(buildingPos, redGround);

        GameObject obj = ObjectPooler.Instance.GetPooledObject(soldier.name);

        obj.transform.position = buildingPos;
        obj.SetActive(true);
        MovementSoldier movementSoldier = obj.GetComponent <MovementSoldier>();

        movementSoldier.target = flagTarget;
        movementSoldier.StartMovement();
    }