public void EndTurn()
    {
        foreach (var region in _Regions)
        {
            region.HandleTurnEnd();
        }
        foreach (var army in _Armies)
        {
            army.HandleTurnEnd();
        }

        if (Player.Instance.SelectedArmy != null)
        {
            Player.Instance.SelectedArmy.DisplayRange();
        }

        TownMenuBuildingLoader.Reload();
        TownMenuRecruitmentLoader.Reload();
        TownMenuArmyLoader.Reload();
        RegionMenuBuildingSceneLoader.Reload();
    }
Beispiel #2
0
    void Update()
    {
        if (Input.GetButtonDown("LMClick"))
        {
            _IsMouseDown = true;
            var pointerEventData = new PointerEventData(_EventSystem);
            pointerEventData.position = Input.mousePosition;

            var results = new List <RaycastResult>();
            _EventSystem.RaycastAll(pointerEventData, results);
            bool unitIsCommander   = false;
            bool somethingHappened = false;

            foreach (var result in results)
            {
                var obj = result.gameObject;
                if (obj.CompareTag("TownMenuArmyMovable"))
                {
                    _SelectedUnit         = obj.GetComponent <TownMenuArmyDivUnit>().ConnectedUnit;
                    _CurrentGrabbedObject = Instantiate(UnitTemplate, _Canvas);
                    _CurrentGrabbedObject.transform.Find("Name").GetComponent <Text>().text = _SelectedUnit.Name;
                    somethingHappened = true;

                    if (!Player.Instance.IsUnitStatsScreenOpen)
                    {
                        SceneManager.LoadScene("GC_UnitStats", LoadSceneMode.Additive);
                        Player.Instance.IsUnitStatsScreenOpen = true;
                    }
                    UnitStatsLoader.UnitToLoad = _SelectedUnit;
                    UnitStatsLoader.Reload();
                }
                if (obj.CompareTag("TownMenuArmyCommander"))
                {
                    unitIsCommander       = true;
                    _SelectedUnit         = obj.GetComponent <TownMenuArmyDivUnit>().ConnectedUnit;
                    _CurrentGrabbedObject = Instantiate(UnitTemplate, _Canvas);
                    _CurrentGrabbedObject.transform.Find("Name").GetComponent <Text>().text = _SelectedUnit.Name;
                    somethingHappened = true;

                    if (!Player.Instance.IsUnitStatsScreenOpen)
                    {
                        SceneManager.LoadScene("GC_UnitStats", LoadSceneMode.Additive);
                        Player.Instance.IsUnitStatsScreenOpen = true;
                    }
                    UnitStatsLoader.UnitToLoad = _SelectedUnit;
                    UnitStatsLoader.Reload();
                }
                if (obj.CompareTag("TownMenuArmyGeneral"))
                {
                    if (!Player.Instance.IsUnitStatsScreenOpen)
                    {
                        SceneManager.LoadScene("GC_UnitStats", LoadSceneMode.Additive);
                        Player.Instance.IsUnitStatsScreenOpen = true;
                    }
                    UnitStatsLoader.UnitToLoad = _CurrentArmy.GetGeneral();
                    UnitStatsLoader.Reload();
                }
            }
            foreach (var result in results)
            {
                var obj = result.gameObject;
                if (obj.CompareTag("TownMenuArmyInteract"))
                {
                    var div = obj.GetComponent <TownMenuArmyDivision>().ConnectedDivision;
                    if (!unitIsCommander)
                    {
                        div.RemoveUnit(_SelectedUnit);
                    }
                    else
                    {
                        div.RemoveCaptain();
                    }

                    if (div.GetCaptain() != null)
                    {
                        _DefaultDiv = div;
                    }
                    somethingHappened = true;
                }
            }
            if (somethingHappened)
            {
                TownMenuArmyLoader.Reload();
            }
        }
        if (Input.GetButtonUp("LMClick") && _IsMouseDown)
        {
            _IsMouseDown = false;

            if (_CurrentGrabbedObject)
            {
                var pointerEventData = new PointerEventData(_EventSystem);
                pointerEventData.position = Input.mousePosition;

                var results = new List <RaycastResult>();
                _EventSystem.RaycastAll(pointerEventData, results);
                bool hitBackground = false;

                foreach (var result in results)
                {
                    var obj = result.gameObject;
                    if (obj.CompareTag("TownMenuArmyInteract"))
                    {
                        obj.GetComponent <TownMenuArmyDivision>().ConnectedDivision.AddUnit(_SelectedUnit);
                        _SelectedUnit = null;
                        _DefaultDiv   = null;
                        Destroy(_CurrentGrabbedObject);
                        TownMenuArmyLoader.Reload();

                        return;
                    }
                    if (obj.CompareTag("TownMenuArmyGeneral"))
                    {
                        if (_CurrentArmy.GetGeneral() != null)
                        {
                            var div = new GC_Division();
                            div.AddUnit(_CurrentArmy.GetGeneral());
                            _CurrentArmy.AddDivision(div);
                        }
                        _CurrentArmy.SetGeneral(_SelectedUnit);
                        _SelectedUnit = null;
                        _DefaultDiv   = null;
                        Destroy(_CurrentGrabbedObject);
                        TownMenuArmyLoader.Reload();

                        return;
                    }
                    if (obj.CompareTag("TownMenuArmyCommander"))
                    {
                        var div = obj.GetComponent <TownMenuArmyDivUnit>().ConnectedUnit.Division;
                        div.AddUnit(_SelectedUnit);
                        div.SetCaptain(_SelectedUnit);

                        _SelectedUnit = null;
                        _DefaultDiv   = null;
                        Destroy(_CurrentGrabbedObject);
                        TownMenuArmyLoader.Reload();

                        return;
                    }
                    if (obj.CompareTag("Background"))
                    {
                        var div = new GC_Division();
                        div.AddUnit(_SelectedUnit);
                        _CurrentArmy.AddDivision(div);
                        hitBackground = true;
                    }
                }

                if (!hitBackground)
                {
                    if (_DefaultDiv != null)
                    {
                        _DefaultDiv.AddUnit(_SelectedUnit);
                    }
                    else
                    {
                        var div = new GC_Division();
                        div.AddUnit(_SelectedUnit);
                        _CurrentArmy.AddDivision(div);
                    }
                }

                Destroy(_CurrentGrabbedObject);
                _SelectedUnit = null;
                _DefaultDiv   = null;
                TownMenuArmyLoader.Reload();
            }
        }

        if (_IsMouseDown && _CurrentGrabbedObject)
        {
            _CurrentGrabbedObject.transform.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
        }
    }
Beispiel #3
0
 private void Start()
 {
     Load();
     _Instance = this;
 }
Beispiel #4
0
 public void ClearGarrison()
 {
     _Garrison          = new GC_Army();
     _Garrison.Position = transform.position;
     TownMenuArmyLoader.Reload();
 }