// Update is called once per frame
    private void Update()
    {
        this.OnMiddleButtonScroll();

        if (Input.GetKeyDown(KeyCode.M))
        {
            NavMeshSurfacesManager.BuildNavMesh();
        }

        if (Input.GetKeyDown(KeyCode.P))
        {
            Debug.Break();
        }

        // On left mouse clicked
        if (Input.GetMouseButtonDown(0))
        {
            this.OnLeftMouseClicked();
        }
        // On right mouse clicked
        else if (Input.GetMouseButtonDown(1))
        {
            this.OnRightMouseClicked();
        }

        // On left mouse button up
        if (Input.GetMouseButtonUp(0))
        {
            this.OnLeftMouseUp();
        }
    }
    /**
     * <summary>
     * Instantiate and eventually place the building
     * </summary>
     *
     * <param name="position"/>
     *
     * <returns>
     * void
     * </returns>
     */
    public virtual void Place(Vector3 position)
    {
        foreach (GameObject selectedUnit in UnitsManagerBehaviour.SelectedUnits)
        {
            if (selectedUnit.GetComponent <BuilderBehaviour>())
            {
                GameObject building = MonoBehaviour.Instantiate(
                    Resources.Load(this.structurePath) as GameObject
                    );

                // Substract / reduce resources
                foreach (ResourceRequirement resourceRequirement in this.resourceRequirements)
                {
                    ResourceType resourceRequirementType = resourceRequirement.GetType();
                    float        value = ResourcesManagerBehaviour.Wood.GetValue() - resourceRequirement.GetAmount();

                    ResourcesManagerBehaviour.SetResource(resourceRequirementType, value);
                }

                building.transform.position = position;

                BuilderBehaviour builderBehaviour = selectedUnit.GetComponent <BuilderBehaviour>();
                builderBehaviour.StartConstruction(building);
            }
        }

        // Hide the requirement UI
        this.HideRequirementsUI();

        // Rebuild navmesh navigations
        NavMeshSurfacesManager.BuildNavMesh();
    }
    public void OnPointerClick(PointerEventData pointerEventData)
    {
        if (pointerEventData.button == PointerEventData.InputButton.Left)
        {
            GameObject selectedObject = BuildingsManagerBehaviour.SelectedBuilding;

            BuildingsManagerBehaviour.UnselectBuilding();
            MonoBehaviour.Destroy(selectedObject);

            NavMeshSurfacesManager.BuildNavMesh();
        }
    }
Example #4
0
    /**
     * <summary>
     * On game object destroyed
     * </summary>
     *
     * <returns>
     * void
     * </returns>
     */
    private void OnDestroy()
    {
        if (NavMeshSurfacesManager.IsInitialized())
        {
            NavMeshSurfacesManager.BuildNavMesh();
        }

        if (!this && ResourcesManagerBehaviour.SelectedResource == this.gameObject)
        {
            ResourcesManagerBehaviour.UnselectResource();
        }

        // On destroy removes the resource from visible list.
        ResourcesManagerBehaviour.Visibles.RemoveAll(active => active.GetInstanceID() == this.gameObject.GetInstanceID());
        ResourcesManagerBehaviour.Resources.RemoveAll(active => active.GetInstanceID() == this.gameObject.GetInstanceID());
    }
 private void Awake()
 {
     Self = this;
 }
 /**
  * <summary>
  * Build navmesh
  * </summary>
  *
  * <returns>
  * void
  * </returns>
  */
 public static void BuildNavMesh()
 {
     Self.StartCoroutine(NavMeshSurfacesManager.Build());
 }