Example #1
0
        public override int SetEntitas(IShipDockEntitas target)
        {
            int id = base.SetEntitas(target);

            if (id >= 0)
            {
                RoleCreated = target as ICommonRole;
                int        campID = RoleCreated.Camp;
                List <int> list;
                if (mCampRoles.IsContainsKey(campID))
                {
                    list = mCampRoles[campID];
                }
                else
                {
                    list = new List <int>();
                    mCampRoles[campID] = list;
                }
                list.Add(id);
                if (!mAllRoles.Contains(id))
                {
                    mAllRoles.Add(id);
                }
                mDataServer.Delive <IParamNotice <ICommonRole> >(AddCampRoleResovlerName, CampRoleCreatedAlias);
                RoleCreated = default;
            }
            return(id);
        }
Example #2
0
        public override void Execute(int time, ref IShipDockEntitas target)
        {
            base.Execute(time, ref target);

            mRoleCheckinging = target as ICommonRole;
            int id;
            int max = mAllRoles.Count;

            for (int i = 0; i < max; i++)
            {
                id          = mAllRoles[i];
                mRoleTarget = GetEntitas(id) as ICommonRole;

                if (WillWalkForRoleEnemyTarget())
                {
                    BeforeAITargetEnemyCheck();
                    if (WillCheckAIRoleEnemyTarget())
                    {
                        mRoleCheckinging.FindingPath    = true;
                        mRoleCheckinging.TargetTracking = mRoleTarget;
                        AfterAITargetEnemyCheck();
                        break;
                    }
                }
            }
            AfterAITargetEnemyCheck();
        }
Example #3
0
        /// <summary>
        /// 检测群聚
        /// </summary>
        private void CheckClustering(ref IShipDockEntitas target)
        {
            if ((mMovement != default) && IsWorldItemValid(ref mWorldItem))
            {
                int id = mWorldItem.worldItemID;

                mClusteringData = ClusteringComp.GetEntitasData(ref target);
                if ((id != int.MaxValue) && (mClusteringData != default))
                {
                    if (mClusteringData.IsGroupCached)
                    {
                        mClusteringData.ClusteringMag = mMovement.ClusteringDirection.magnitude;
                        "todo".Log("开发群聚功能");
                    }
                    else
                    {
                        if (!mGroupsMapper.ContainsKey(id))
                        {
                            mWorldItem.groupID            = id;
                            mClusteringData.IsGroupCached = true;
                            mGroupsMapper[id]             = mClusteringData;
                        }
                    }
                }
            }
        }
Example #4
0
        public void UpdateComponent(int time)
        {
            int id;
            int max = (mEntitasIDs != default) ? mEntitasIDs.Count : 0;

            for (int i = 0; i < max; i++)
            {
                id           = mEntitasIDs[i];
                mEntitasItem = GetEntitas(id);
                if (mEntitasItem != default)
                {
                    if (mEntitasItem.WillDestroy || mEntitasIDsRemoved.Contains(id))
                    {
                        if (!mEntitasIDsRelease.Contains(id))
                        {
                            mEntitasIDsRelease.Add(id);
                        }
                    }
                    else
                    {
                        Execute(time, ref mEntitasItem);
                    }
                }
                else
                {
                    if (!mEntitasIDsRemoved.Contains(id))
                    {
                        mEntitasIDsRelease.Add(id);
                    }
                }
            }
            mEntitasItem = default;
        }
Example #5
0
        public override void Execute(int time, ref IShipDockEntitas target)
        {
            base.Execute(time, ref target);

            mRole = target as ICommonRole;
#if LOG_TRY_CATCH_ROLE && UNITY_EDITOR
            try
            {
#endif
            mRoleInput = mRole.RoleInput;
#if LOG_TRY_CATCH_ROLE && UNITY_EDITOR
        }
        catch (System.Exception error)
        {
            Testers.Tester.Instance.Log(TesterRPG.Instance, TesterRPG.LOG, "error:".Append(error.Message));
        }
#endif

            if (mRoleInput == default)
            {
                return;
            }

            int phaseName = mRoleInput.RoleInputPhase;
            switch (phaseName)
            {
            default:
                int allowCalled = mAllowCalleds.ContainsKey(phaseName) ? mAllowCalleds[phaseName] : 0;
                mRoleInput.AdvancedInputPhase(phaseName, allowCalled);
                break;
            }
        }
Example #6
0
        public override int SetEntitas(IShipDockEntitas target)
        {
            int id = base.SetEntitas(target);

            FillEntitasData(ref target, CreateData());

            return(id);
        }
Example #7
0
 private void FinalUpdate(int time)
 {
     mQueueUpdateTime.Step(time);
     mQueueUpdateEntitas.Step(time);
     mQueueUpdateExecute.Step(time);
     mFinalUpdateEntitas = default;
     mFinalUpdateMethod  = default;
 }
Example #8
0
        public override void Execute(int time, ref IShipDockEntitas target)
        {
            base.Execute(time, ref target);

            mRoleItem = target as IFWRole;
            if (mRoleItem != default)
            {
            }
        }
        public override void Execute(int time, ref IShipDockEntitas target)
        {
            base.Execute(time, ref target);

            mRole = target as RoleEntitas;
            if (mRole.Gravity)
            {
                mRole.Gravity = true;
            }
        }
Example #10
0
 protected void ExecuteInFinal(int time, IShipDockEntitas entitas, Action <int, IShipDockEntitas> method)
 {
     if (ID == int.MaxValue)
     {
         return;
     }
     OnFinalUpdateForTime.Invoke(time);
     OnFinalUpdateForEntitas.Invoke(entitas);
     OnFinalUpdateForExecute(method);
 }
Example #11
0
        public virtual int SetEntitas(IShipDockEntitas target)
        {
            int id = mEntitas.Add(target, out int statu);

            if (statu == 0)
            {
                mEntitasIDs.Add(id);
            }
            return(id);
        }
Example #12
0
        protected override void FreeEntitas(int mid, ref IShipDockEntitas entitas, out int statu)
        {
            base.FreeEntitas(mid, ref entitas, out statu);

            mRoleItem = entitas as ICommonRole;

            RemoveSubgroupMap(ref mRigidbodySubgourp, ref mRoleItem);
            RemoveSubgroupMap(ref mRoleColliderSubgourp, ref mRoleItem);
            RemoveSubgroupMap(ref mAnimatorSubgourp, ref mRoleItem);
            RemoveSubgroupMap(ref mRoleColliderScanedSubgourp, ref mRoleItem);
        }
Example #13
0
        public virtual int SetEntitas(IShipDockEntitas target)
        {
            int aid = mEntitas.Add(target, out int statu);

            if (statu == 0)
            {
                mEntitasIDs.Add(aid);
                OnEntitasStretch?.Invoke(target, false);
            }
            return(aid);
        }
Example #14
0
 /// <summary>
 /// 组件中的实体数量发生变化的回调
 /// </summary>
 public virtual void ComponentEntitasStretch(IShipDockEntitas entitas, bool isRemove)
 {
     if (isRemove)
     {
         entitas.RemoveComponent(this);
     }
     else
     {
         entitas.AddComponent(this);
     }
 }
Example #15
0
        public override void Execute(int time, ref IShipDockEntitas target)
        {
            base.Execute(time, ref target);

            mRole = target as ICommonRole;

            if (mRole != default && mRole.PositionEnabled)
            {
                CheckEnemyLockDown();
            }
        }
Example #16
0
 public virtual int DropEntitas(IShipDockEntitas target, int entitasID)
 {
     if (mEntitasIDsRemoved.Contains(entitasID))
     {
         return(1);
     }
     else
     {
         mEntitasIDsRemoved.Add(entitasID);
     }
     return(0);
 }
Example #17
0
 /// <summary>
 /// 检测世界交换物体的缓存
 /// </summary>
 private void CheckWorldItemCaches(ref IShipDockEntitas target)
 {
     if (WorldComp.IsDataValid(ref target))
     {
         mWorldItem = WorldComp.GetEntitasData(ref target);
         if (ShouldAddToWorldItems())
         {
             mWorldItemMapper.Put(mWorldItem.worldItemID, mWorldItem);
             AfterWorldItemCached(ref target);
         }
     }
 }
Example #18
0
        private void CleanAllEntitas(ref List <int> list)
        {
            int id;
            int max = list.Count;

            for (int i = 0; i < max; i++)
            {
                id           = list[i];
                mEntitasItem = GetEntitas(id);
                mEntitasItem.RemoveComponent(this);
            }
        }
        public override void Execute(int time, ref IShipDockEntitas target)
        {
            base.Execute(time, ref target);

            int blockID;

            mRole = target as ICommonRole;

            bool isGetEnemy = false;

#if LOG_TRY_CATCH_TIRGGER && UNITY_EDITOR
            try
            {
#endif
            mRoleColliding = mRole.CollidingRoles;
#if LOG_TRY_CATCH_TIRGGER && UNITY_EDITOR
        }
        catch (System.Exception error)
        {
            Testers.Tester.Instance.Log(TesterRPG.Instance, TesterRPG.LOG, "error: role is null");
        }
#endif
            int max = mRoleColliding != default ? mRoleColliding.Count : 0;
            if (max > 0)
            {
                for (int i = 0; i < max; i++)
                {
                    if (i >= mRoleColliding.Count)
                    {
                        break;
                    }
                    blockID = mRoleColliding[i];
                    mRoleCollidingTarget = mRoleColliderMapper[blockID];
                    if (mRoleCollidingTarget != default)
                    {
                        if (mRoleCollidingTarget == mRole.TargetTracking)
                        {
                            isGetEnemy = true;
                        }
                    }
                }
                if (isGetEnemy)
                {
                    mRole.FindingPath = false;
                }
                //else
                //{
                //    mRole.EnemyMainLockDown = default;
                //    mRole.FindngPath = true;//TODO 锁定最近的敌人
                //    mRole.SpeedCurrent = mRole.Speed;
                //}
            }
        }
Example #20
0
 /// <summary>
 /// 删除实体
 /// </summary>
 public virtual int DropEntitas(IShipDockEntitas target, int entitasID)
 {
     if (mEntitasIDsRemoved.Contains(entitasID))
     {
         return(1);
     }
     else
     {
         OnEntitasStretch?.Invoke(target, true);
         mEntitasIDsRemoved.Add(entitasID);
     }
     return(0);
 }
Example #21
0
        public override int DropEntitas(IShipDockEntitas target, int entitasID)
        {
            mWorldItem = WorldComp.GetEntitasData(ref target);

            if ((mWorldItem != default) && (mWorldItem.worldItemID != int.MaxValue))
            {
                if (mWorldItemMapper.ContainsKey(mWorldItem.worldItemID))
                {
                    DropWorldItem(ref target);
                }
            }

            return(base.DropEntitas(target, entitasID));
        }
        protected override void FreeEntitas(int mid, ref IShipDockEntitas entitas, out int statu)
        {
            base.FreeEntitas(mid, ref entitas, out statu);

            if (statu == 0)
            {
                ICommonRole role       = entitas as ICommonRole;
                int         colliderID = role.RoleMustSubgroup.roleColliderID;
                mRoleColliderMapper.Remove(colliderID);

                colliderID = role.RoleMustSubgroup.roleScanedColliderID;
                mRoleColliderMapper.Remove(colliderID);
            }
        }
Example #23
0
        public override void Execute(int time, ref IShipDockEntitas target)
        {
            base.Execute(time, ref target);

            mMovement = GetMovmentData(ref target);

            CheckWorldItemCaches(ref target);
            if (ShouldWorldGroupable)
            {
                SetClusteringPosition(ref target);
                CheckClustering(ref target);
            }
            CheckAround(ref target);
            CheckWorldEvents();
        }
        public override int SetEntitas(IShipDockEntitas target)
        {
            int id = base.SetEntitas(target);

            if (id >= 0)
            {
                ICommonRole role       = target as ICommonRole;
                int         subgroupID = role.RoleMustSubgroup.roleColliderID;
                mRoleColliderMapper[subgroupID] = role;

                subgroupID = role.RoleMustSubgroup.roleScanedColliderID;
                mRoleColliderMapper[subgroupID] = role;
            }
            return(id);
        }
Example #25
0
        public virtual void Dispose()
        {
            CleanAllEntitas(ref mEntitasIDs);
            CleanAllEntitas(ref mEntitasIDsRelease);

            OnFinalUpdateForTime    = default;
            OnFinalUpdateForEntitas = default;
            OnFinalUpdateForExecute = default;

            mEntitasItem = default;
            Utils.Reclaim(ref mEntitasIDs);
            Utils.Reclaim(ref mEntitasIDsRelease);
            Utils.Reclaim(mEntitas);
            ID = int.MaxValue;
        }
Example #26
0
        public void SetSubgroup(IShipDockEntitas entitas, ICommonOverlayMapper commonCollider)
        {
            bool hasData = commonCollider.IsDataValid(ref entitas);

            if (hasData)
            {
                BehaviourIDs ids = commonCollider.GetEntitasData(ref entitas);
                SubgroupID = ids.gameItemID;

                mCommonColliderMapper = commonCollider;
                mCommonColliderMapper.PhysicsChecked(SubgroupID, true);
                mBridge = new ComponentBridge(OnInit);
                mBridge.Start();
            }
        }
Example #27
0
 public override int DropEntitas(IShipDockEntitas target, int entitasID)
 {
     if (mDatas.ContainsKey(target))
     {
         mDataKeys.Remove(target);
         int index = mDataKeys.IndexOf(target);
         if (index != -1)
         {
             mInvalidDatasIndex.Remove(index);
         }
         T data = mDatas.Remove(target);
         DropData(ref data);
     }
     return(base.DropEntitas(target, entitasID));
 }
Example #28
0
        public override int SetEntitas(IShipDockEntitas target)
        {
            int id = base.SetEntitas(target);

            if (id >= 0)
            {
                mRoleItem = target as ICommonRole;

                CommonRoleMustSubgroup subgroup = mRoleItem.RoleMustSubgroup;
                SetSubgroupMap(ref mRigidbodySubgourp, subgroup.rigidbodyID);
                SetSubgroupMap(ref mRoleColliderSubgourp, subgroup.roleColliderID);
                SetSubgroupMap(ref mAnimatorSubgourp, subgroup.animatorID);
                SetSubgroupMap(ref mRoleColliderScanedSubgourp, subgroup.roleScanedColliderID);
            }

            return(id);
        }
Example #29
0
        private void OnQueueUpdateExecute(int time, Action <int, IShipDockEntitas> current)
        {
            mFinalUpdateTime    = mQueueUpdateTime.Current;
            mFinalUpdateEntitas = mQueueUpdateEntitas.Current;
            mFinalUpdateMethod  = current;

            if (mFinalUpdateEntitas == default)
            {
                mFinalUpdateMethod.Invoke(mFinalUpdateTime, default);
            }
            else
            {
                if (!mFinalUpdateEntitas.WillDestroy && (mFinalUpdateEntitas.ID != int.MaxValue))
                {
                    mFinalUpdateMethod.Invoke(mFinalUpdateTime, mFinalUpdateEntitas);
                }
            }
        }
Example #30
0
        /// <summary>
        /// 检测组件中需要释放的实体
        /// </summary>
        public void FreeComponent(int time)
        {
            int id;
            int max = (mEntitasIDsRelease != default) ? mEntitasIDsRelease.Count : 0;

            for (int i = 0; i < max; i++)
            {
                id           = mEntitasIDsRelease[i];
                mEntitasItem = GetEntitas(id);
                if (mEntitasItem != default)
                {
                    FreeEntitas(id, ref mEntitasItem, out int statu);
                }
                mEntitasIDsRemoved.Remove(id);
            }
            mEntitasIDsRelease.Clear();
            mEntitasItem = default;
        }