Пример #1
0
        public bool ValidateMob(MobView mob)
        {
            if (mob.IsDead())
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        public bool ValidateMob(MobView mob)
        {
            if (mob.IsDead())
            {
                return(false);
            }

            var mobAttackTarget = mob.GetAttackTarget();

            if (mobAttackTarget != null && mobAttackTarget != _localPlayerCharacterView)
            {
                return(false);
            }

            if (_blacklist.ContainsKey(mob))
            {
                return(false);
            }

            return(true);
        }
Пример #3
0
        public static ResourceType?GetResourceType(this MobView instance)
        {
            //First we try to get a known value for the MobType
            var resourceMobType = instance.MobType();

            if (_knownResourceTypes.ContainsKey(resourceMobType))
            {
                return(_knownResourceTypes[resourceMobType]);
            }

            //Second we try to get a known value for the MobName
            var resourceMobName = instance.name;

            if (_knownResourceTypes.ContainsKey(resourceMobName))
            {
                return(_knownResourceTypes[resourceMobName]);
            }

            //Third we try to get a value for the MobType (we do that first, cause in more cases this is filled)
            var resourceTypeByMobType = GetResouceTypeFromString(resourceMobType, 2);

            if (resourceTypeByMobType.HasValue)
            {
                _knownResourceTypes.Add(resourceMobType, resourceTypeByMobType.Value);
                return(resourceTypeByMobType.Value);
            }

            //Fourth we try to get a value for the MobName
            var resourceTypeByMobName = GetResouceTypeFromString(resourceMobName, 1);

            if (resourceTypeByMobName.HasValue)
            {
                _knownResourceTypes.Add(resourceMobName, resourceTypeByMobName.Value);
                return(resourceTypeByMobName.Value);
            }

            //Well, no luck. Next time :)
            return(null);
        }
Пример #4
0
    void Awake()
    {
#if UNITY_EDITOR
        Log.level = Log.LogLevel.DEBUG;
#else
        Log.level = Log.LogLevel.INFO;
#endif
        Debug.Log("---------------  Awake ------------------------");
        Transform facadeContainer = this.transform.Find("facades");
        facades = new UIFacade[facadeContainer.childCount];
        for (int i = 0; i < facadeContainer.childCount; i++)
        {
            Transform child = facadeContainer.GetChild(i);
            facades[i] = child.GetComponent <UIFacade>();
            facades[i].Register();
        }

        initialize();

        playerModel_ = new PlayerModel();
        PlayerView       playerView       = new PlayerView();
        PlayerController playerController = new PlayerController();
        framework.modelCenter.Register(PlayerModel.NAME, playerModel_);
        framework.viewCenter.Register(PlayerView.NAME, playerView);
        framework.controllerCenter.Register(PlayerController.NAME, playerController);

        mobModel_ = new MobModel();
        MobView       mobView       = new MobView();
        MobController mobController = new MobController();
        framework.modelCenter.Register(MobModel.NAME, mobModel_);
        framework.viewCenter.Register(MobView.NAME, mobView);
        framework.controllerCenter.Register(MobController.NAME, mobController);

        inputController_ = new InputController();
        framework.controllerCenter.Register(InputController.NAME, inputController_);
    }
Пример #5
0
 public static int GetRareState(this MobView instance)
 {
     return(instance.Mob.td());
 }
Пример #6
0
 public static int GetTier(this MobView instance)
 {
     return(instance.Mob.ta().dg());
 }
Пример #7
0
        public void HarvestMob(MobView mob)
        {
            Vector3 targetCenter = _currentTarget.transform.position;
            Vector3 playerCenter = _localPlayerCharacterView.transform.position;

            //Skip if target is inside a kepper pack
            if (_skipKeeperPacks && (ContainKeepers(_currentTarget.transform.position)))
            {
                Core.Log("[Blacklisted - Inside Kepper Pack Range]");
                Blacklist(mob, TimeSpan.FromMinutes(5));
                _state.Fire(Trigger.DepletedResource);
                return;
            }

            float centerDistance = (targetCenter - playerCenter).magnitude;

            var weaponItem    = _localPlayerCharacterView.LocalPlayerCharacter.th().o();
            var isMeleeWeapon = weaponItem == null || weaponItem.bu() == Albion.Common.GameData.AttackType.Melee;
            var attackRange   = _localPlayerCharacterView.LocalPlayerCharacter.jz() + mob.Mob.x1().f9();

            var minimumAttackRange = isMeleeWeapon ? MELEE_ATTACK_RANGE : attackRange;
            var isInLoS            = _localPlayerCharacterView.IsInLineOfSight(mob);

            if (HandlePathing(ref _harvestPathingRequest, () => centerDistance <= minimumAttackRange && isInLoS))
            {
                return;
            }

            if (centerDistance >= minimumAttackRange || !isInLoS)
            {
                if (_localPlayerCharacterView.TryFindPath(new ClusterPathfinder(), targetCenter, IsBlockedGathering, out List <Vector3> pathing))
                {
                    Core.Log("Path found, begin travel to Mob");
                    Core.lineRenderer.positionCount = pathing.Count;
                    Core.lineRenderer.SetPositions(pathing.ToArray());
                    _harvestPathingRequest = new ClusterPathingRequest(_localPlayerCharacterView, _currentTarget, pathing);
                }
                else
                {
                    Core.Log("Path not found");
                    _state.Fire(Trigger.DepletedResource);
                }
                return;
            }

            if (_localPlayerCharacterView.IsAttacking())
            {
                Core.Log("Currently Attacking Mob. Wait until done.");
                return;
            }

            if (mob.IsDead() && mob.DeadAnimationFinished)
            {
                Core.Log("[Mob Dead]");

                _state.Fire(Trigger.DepletedResource);
                return;
            }

            Core.Log("[Attacking]");
            if (_localPlayerCharacterView.IsMounted)
            {
                _localPlayerCharacterView.MountOrDismount();
            }

            _localPlayerCharacterView.SetSelectedObject(mob);
            _localPlayerCharacterView.AttackSelectedObject();
        }