Esempio n. 1
0
        public bool HandlePathing(ref WorldPathingRequest request, Func <bool> breakFunc = null, Action onDone = null, bool ignoreMount = false)
        {
            if (request != null)
            {
                if (!ignoreMount && !HandleMounting(Vector3.zero))
                {
                    return(true);
                }

                if ((breakFunc?.Invoke()).GetValueOrDefault())
                {
                    request = null;
                }
                else if (request.IsRunning)
                {
                    request.Continue();
                }
                else
                {
                    request = null;
                    onDone?.Invoke();
                }

                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        public bool HandlePathing(ref WorldPathingRequest request, Func <bool> breakFunc = null, Action onDone = null, bool ignoreMount = false)
        {
            if (request != null)
            {
                if (!ignoreMount && !HandleMounting(Vector3.zero))
                {
                    //iCore.Log("Handle mounting via handlepathing worldpathing request");
                    return(true);
                }
                if ((breakFunc?.Invoke()).GetValueOrDefault())
                {
                    request = null;
                }
                else if (request.IsRunning)
                {
                    //Core.Log("Continue via handlepathing worldpathing request");
                    request.Continue();
                }
                else
                {
                    request = null;
                    onDone?.Invoke();
                    //Core.Log("Other via handlepathing worldpathing request");
                }
                //Core.Log("Defaulting to true handlepathing worldpathing request");
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        public void Bank()
        {
            if (!_localPlayerCharacterView.IsMounted)
            {
                if (_localPlayerCharacterView.IsMounting())
                {
                    return;
                }

                _localPlayerCharacterView.MountOrDismount();
                return;
            }

            if (_localPlayerCharacterView.GetLoadPercent() <= CapacityForBanking)
            {
                _localPlayerCharacterView.CreateTextEffect("[Restart]");
                _state.Fire(Trigger.Restart);
                return;
            }

            if (_worldPathingRequest != null)
            {
                if (_worldPathingRequest.IsRunning)
                {
                    if (!HandleMounting(Vector3.zero))
                    {
                        return;
                    }

                    _worldPathingRequest.Continue();
                }
                else
                {
                    _worldPathingRequest = null;
                }
                return;
            }


            if (_bankPathingRequest != null)
            {
                if (_bankPathingRequest.IsRunning)
                {
                    if (!HandleMounting(Vector3.zero))
                    {
                        return;
                    }

                    _bankPathingRequest.Continue();
                }
                else
                {
                    _bankPathingRequest = null;
                }

                return;
            }

            Vector3 playerCenter = _localPlayerCharacterView.transform.position;

            var currentWorldCluster = _world.CurrentCluster;
            var _townCluster        = _world.GetCluster(SelectedTownCluster);

            var currentCluster = new Cluster(currentWorldCluster.Info);
            var townCluster    = new Cluster(_townCluster.Info);

            Core.Log(string.Format(
                         $"CurrentCluster: {currentCluster.InternalName} {currentCluster.InternalName} {currentCluster.InternalName}"));
            Core.Log(string.Format(
                         $"CurrentCluster: {townCluster.InternalName} {townCluster.InternalName} {townCluster.InternalName}"));



            if (currentCluster.Name == townCluster.Name)
            {
                var banks = _client.GetEntities <BankBuildingView>((x) => { return(true); });

                if (banks.Count == 0)
                {
                    return;
                }

                _currentTarget = banks.First();

                /* Begin moving closer the target. */
                var targetCenter = _currentTarget.transform.position;
                playerCenter = _localPlayerCharacterView.transform.position;

                var centerDistance  = (targetCenter - playerCenter).magnitude;
                var minimumDistance = _currentTarget.GetColliderExtents() +
                                      _localPlayerCharacterView.GetColliderExtents() + 1.5f;

                if (centerDistance >= minimumDistance)
                {
                    if (!HandleMounting(targetCenter))
                    {
                        return;
                    }

                    if (_localPlayerCharacterView.TryFindPath(new ClusterPathfinder(), targetCenter, (v) => false,
                                                              out List <Vector3> pathing))
                    {
                        _bankPathingRequest =
                            new ClusterPathingRequest(_localPlayerCharacterView, _currentTarget, pathing);
                    }

                    return;
                }
                //Fixes position, if is slightly invalid and opens UI

                if (_currentTarget is BankBuildingView resource)
                {
                    _localPlayerCharacterView.Interact(resource);
                    //Get inventory
                    var playerStorage = GameGui.Instance.CharacterInfoGui.InventoryItemStorage;
                    var vaultStorage  = GameGui.Instance.BankBuildingVaultGui.BankVault.InventoryStorage;

                    var ToDeposit = new List <UIItemSlot>();

                    //Get all items we need
                    foreach (var slot in playerStorage.ItemsSlotsRegistered)
                    {
                        if (slot != null && slot.ObservedItemView != null)
                        {
                            var name = slot.ObservedItemView.name;
                            //TODO: Move this as part of new filter to Config
                            if (!name.Contains("JOURNAL") && (name.Contains("_ROCK") || name.Contains("_ORE") ||
                                                              name.Contains("_HIDE") || name.Contains("_WOOD") ||
                                                              name.Contains("_FIBER")))
                            {
                                ToDeposit.Add(slot);
                            }
                        }
                    }

                    foreach (var item in ToDeposit)
                    {
                        GameGui.Instance.MoveItemToItemContainer(item, vaultStorage.ItemContainerProxy);
                    }
                }
            }
            else
            {
                var path        = new List <WorldmapCluster>();
                var pivotPoints = new List <WorldmapCluster>();

                var worldPathing = new WorldmapPathfinder();

                if (worldPathing.TryFindPath(currentWorldCluster, _townCluster, (cluster) => false, out path, out pivotPoints, true, false))
                {
                    _worldPathingRequest = new WorldPathingRequest(currentWorldCluster, _townCluster, path);
                }
            }
            //_state.Fire(Trigger.Restart);
            //_localPlayerCharacterView.RequestMove(playerCenter);


            // TODO: If not in town, get request to exit towards town.

            // TODO: Get current cluster, is it town?

            // TODO: Move to bank

            // TODO: Near the bank, bank is open?

            // TODO: Bank is open, move items
        }
Esempio n. 4
0
        public void Bank()
        {
            if (!_localPlayerCharacterView.IsMounted)
            {
                if (_localPlayerCharacterView.IsMounting())
                {
                    return;
                }

                _localPlayerCharacterView.MountOrDismount();
                return;
            }

            if (_localPlayerCharacterView.GetLoadPercent() <= CapacityForBanking)
            {
                _localPlayerCharacterView.CreateTextEffect("[Restart]");
                _state.Fire(Trigger.Restart);
                return;
            }

            if (_worldPathingRequest != null)
            {
                if (_worldPathingRequest.IsRunning)
                {
                    if (!HandleMounting(Vector3.zero))
                    {
                        return;
                    }

                    _worldPathingRequest.Continue();
                }
                else
                {
                    _worldPathingRequest = null;
                }

                return;
            }

            var currentCluster = _world.CurrentCluster;
            var townCluster    = _world.GetCluster("Fort Sterling");

            var path        = new List <WorldmapCluster>();
            var pivotPoints = new List <WorldmapCluster>();

            var worldPathing = new WorldmapPathfinder();

            if (worldPathing.TryFindPath(currentCluster, townCluster, (cluster) => false, out path, out pivotPoints, true, false))
            {
                _worldPathingRequest = new WorldPathingRequest(currentCluster, townCluster, path);
            }


            // TODO: If not in town, get request to exit towards town.

            // TODO: Get current cluster, is it town?

            // TODO: Move to bank

            // TODO: Near the bank, bank is open?

            // TODO: Bank is open, move items
        }