예제 #1
0
        public List <PeEntity> GetEntitiesFriendly(Vector3 pos, float radius, int playerID, int protoID, bool isDeath, PeEntity exclude = null)
        {
            m_Tmp.Clear();

            int n = m_Entities.Count;

            for (int i = 0; i < n; i++)
            {
                PeEntity entity = m_Entities[i];

                if (entity == null || (entity.Equals(exclude)) || entity.IsDeath() != isDeath)
                {
                    continue;
                }

                int pid1 = playerID;
                int pid2 = (int)entity.GetAttribute(AttribType.DefaultPlayerID);
                if (pid1 == pid2 && (pid1 != 4 || protoID == entity.ProtoID))
                {
                    if (PETools.PEUtil.SqrMagnitudeH(entity.position, pos) <= radius * radius)
                    {
                        m_Tmp.Add(m_Entities[i]);
                    }
                }
            }

            return(m_Tmp);
        }
예제 #2
0
        public bool NearEntityModel(Vector3 pos, float radius, int playerID, bool isDeath, PeEntity exclude = null)
        {
            int   n         = m_Entities.Count;
            float sqrRadius = radius * radius;

            for (int i = 0; i < n; i++)
            {
                PeEntity entity = m_Entities[i];
                if (entity == null || (entity.Equals(exclude)) || !entity.hasView || entity.IsDeath() != isDeath)
                {
                    continue;
                }

                if (NpcRobotDb.Instance != null && entity.Id == NpcRobotDb.Instance.mID)
                {
                    continue;
                }

                int pid = (int)entity.GetAttribute(AttribType.DefaultPlayerID);
                if (PETools.PEUtil.SqrMagnitudeH(entity.position, pos) <= sqrRadius && ForceSetting.Instance.AllyPlayer(playerID, pid))
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #3
0
        public List <PeEntity> GetEntities(Vector3 pos, float radius, int playerID, bool isDeath, PeEntity exclude = null)
        {
            m_Tmp.Clear();

            int n = m_Entities.Count;

            for (int i = 0; i < n; i++)
            {
                PeEntity entity = m_Entities[i];

                if (entity == null || (entity.Equals(exclude)) || entity.IsDeath() != isDeath)
                {
                    continue;
                }

                int pid = (int)entity.GetAttribute(AttribType.DefaultPlayerID);
                if ((PETools.PEUtil.SqrMagnitudeH(entity.position, pos) <= radius * radius && ForceSetting.Instance.AllyPlayer(playerID, pid)) ||
                    PETools.PEUtil.CanCordialReputation(playerID, pid)
                    )
                {
                    m_Tmp.Add(m_Entities[i]);
                }
            }

            return(m_Tmp);
        }
예제 #4
0
        bool Match(PeEntity entity, Vector3 pos, float radius, int playerID, bool isDeath, PeEntity exclude = null)
        {
            if (entity == null || (entity.Equals(exclude)) || entity.IsDeath() != isDeath)
            {
                return(false);
            }

            int pid = (int)entity.GetAttribute(AttribType.DefaultPlayerID);

            if (ForceSetting.Instance.AllyPlayer(playerID, pid) &&
                PETools.PEUtil.SqrMagnitudeH(entity.position, pos) <= radius * radius)
            {
                return(true);
            }

            return(false);
        }
예제 #5
0
        void OnFollowerEntityDestroy(SkillSystem.SkEntity entity)
        {
            if (entity == null || entity.Equals(null))
            {
                return;
            }

            PeEntity _peEntity = entity.GetComponent <PeEntity>();

            if (_peEntity == null || _peEntity.Equals(null) || _peEntity.NpcCmpt == null || _peEntity.NpcCmpt.Equals(null))
            {
                return;
            }

            if (ContainsServant(_peEntity.NpcCmpt))
            {
                RemoveServant(_peEntity.NpcCmpt);
            }
        }
예제 #6
0
        bool MatchFriendly(PeEntity entity, Vector3 pos, float radius, int playerID, int prototID, bool isDeath, PeEntity exclude = null)
        {
            if (entity == null || (entity.Equals(exclude)) || entity.IsDeath() != isDeath)
            {
                return(false);
            }

            int pid1 = playerID;
            int pid2 = (int)entity.GetAttribute(AttribType.DefaultPlayerID);

            if (pid1 == pid2 && (pid1 != 4 || prototID == entity.ProtoID))
            {
                if (PETools.PEUtil.SqrMagnitudeH(entity.position, pos) <= radius * radius)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #7
0
    private void Update()
    {
        if (!SteamManager.Initialized)
        {
            return;
        }

        if (!m_bRequestedStats)
        {
            // Is Steam Loaded? if no, can't get stats, done
            if (!SteamManager.Initialized)
            {
                m_bRequestedStats = true;
                return;
            }

            // If yes, request our stats
            bool bSuccess = SteamUserStats.RequestCurrentStats();

            // This function should only return false if we weren't logged in, and we already checked that.
            // But handle it being false again anyway, just ask again later.
            m_bRequestedStats = bSuccess;
        }

        if (!m_bStatsValid)
        {
            return;
        }

#if UNITY_EDITOR
        if (ResetAchivements)
        {
            ResetAllAchievements();
            ResetAllStats();
            ResetAchivements = false;
        }

        if (Test)
        {
            OnGameStateChange(AchivementType);
            Test = false;
        }
#endif

        //获取当前玩家entity
        if (Pathea.PeCreature.Instance != null && Pathea.PeCreature.Instance.mainPlayer != null)
        {
            if (!m_Maiplayer || !m_Maiplayer.Equals(Pathea.PeCreature.Instance.mainPlayer))
            {
                m_Maiplayer = Pathea.PeCreature.Instance.mainPlayer;
                m_playerPkg = (m_Maiplayer.packageCmpt as Pathea.PlayerPackageCmpt);

                if (m_playerPkg != null)
                {
                    m_playerPkg.package._playerPak.changeEventor.Subscribe(OnItemChange);
                }
            }
        }


        if (m_Maiplayer && Pathea.Money.Digital)
        {
            if (m_Maiplayer.packageCmpt != null && m_Maiplayer.packageCmpt.money != null && m_Maiplayer.packageCmpt.money.current >= 10000)
            {
                //完成成就:富可敌国
                OnGameStateChange(Eachievement.Richer);
            }
        }

        // Get info from sources

        // Evaluate achievements
        int achedNum = 0;
        for (int i = 0; i < m_Achievements.Length; i++)
        {
            if (m_Achievements[i].m_bAchieved)
            {
                achedNum++;
                continue;
            }

            if (m_Stats[(int)m_Achievements[i].m_eAchievementID].IsAccomplish())
            {
                UnlockAchievement(m_Achievements[i]);
            }
        }

        //全部成就完成
        if (achedNum == ((int)Eachievement.Max - 2))
        {
            if (!m_Achievements[(int)Eachievement.ALL].m_bAchieved)
            {
                UnlockAchievement(m_Achievements[(int)Eachievement.ALL]);
            }
        }

        //Store stats by self
        if (m_bStoreStats)
        {
            //保存更改
            bool bSuccess = false;//SteamUserStats.StoreStats();
            for (int i = 0; i < m_Achievements.Length; i++)
            {
                if (string.IsNullOrEmpty(m_StatNames[(int)m_Achievements[i].m_eStatID]))
                {
                    continue;
                }

                bSuccess = StatsUserPrefs.SaveIntValue(m_StatNames[(int)m_Achievements[i].m_eStatID], m_Stats[(int)m_Achievements[i].m_eAchievementID].m_StatValue);
            }
            SteamUserStats.StoreStats();
            // If this failed, we never sent anything to the server, try
            // again later.
            m_bStoreStats = !bSuccess;
        }
    }