Exemple #1
0
        private void CreateMineral(EditorMineral editorMineral)
        {
            GameObject mineralObj = new GameObject();

            mineralObj.transform.SetParent(transform);
            mineralObj.transform.localRotation = Quaternion.identity;
            mineralObj.transform.position      = editorMineral.mineralPos.ToVector3();
            mineralObj.name = editorMineral.name;
            Mineral mineral = mineralObj.AddComponent <Mineral>();

            mineral.Init(editorMineral.mineralNpcId, editorMineral.mineralGroupId);
        }
Exemple #2
0
        /// <summary>
        /// 创建矿节点
        /// </summary>
        /// <param name="mark"></param>
        private void CreateMineral(SemaphoreMark mark)
        {
            GameObject treasureObj = new GameObject();

            treasureObj.transform.SetParent(transform);
            treasureObj.transform.localRotation = Quaternion.identity;
            treasureObj.transform.position      = mark.transform.position;
            treasureObj.name = mark.name;
            Mineral mineral = treasureObj.AddComponent <Mineral>();

            mineral.Init(mark.m_NpcId, mark.m_GroupId);
        }
Exemple #3
0
        public bool Exists(uint groupId, uint npcId, string name)
        {
            if (m_MineralCache == null || m_MineralCache.Count <= 0)
            {
                return(false);
            }

            for (int iMineral = 0; iMineral < m_MineralCache.Count; iMineral++)
            {
                Mineral mineral = m_MineralCache[iMineral];
                if (mineral != null && mineral.m_MineralNpcId == npcId &&
                    mineral.m_MineralGroupId == groupId && mineral.name.Equals(name))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #4
0
 public void Remove(SemaphoreMark mark)
 {
     RefreshMineralCache();
     if (Exists(mark))
     {
         if (m_MineralCache != null && m_MineralCache.Count > 0)
         {
             for (int iMineral = m_MineralCache.Count - 1; iMineral >= 0; iMineral--)
             {
                 Mineral mineral = m_MineralCache[iMineral];
                 if (mineral.name == mark.name && mineral.m_MineralNpcId == mark.m_NpcId &&
                     mineral.m_MineralGroupId == mark.m_GroupId)
                 {
                     mineral.Release(true);
                 }
             }
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// 同步信息
        /// </summary>
        public void SyncInfo()
        {
            if (m_MineralCache == null || m_MineralCache.Count <= 0)
            {
                return;
            }

            if (m_GamingMapArea != null)
            {
                MineralRootMark treasureRoot = null;
                Area[]          areas        = FindObjectsOfType <Area>();
                if (areas != null && areas.Length > 0)
                {
                    for (int iArea = 0; iArea < areas.Length; iArea++)
                    {
                        Area area = areas[iArea];
                        if (area.Uid == m_GamingMapArea.m_AreaId)
                        {
                            treasureRoot = area.m_MineralRoot;
                        }
                    }
                }

                if (treasureRoot == null)
                {
                    EditorUtility.DisplayDialog("提示", string.Format("同步失败!未找到{0}", m_GamingMapArea.m_AreaId), "OK");
                    return;
                }

                List <SemaphoreMark> semaphores = treasureRoot.m_SemaphorMarkCache;
                if (m_MineralCache != null && m_MineralCache.Count > 0)
                {
                    List <Mineral> needRelease = new List <Mineral>();
                    for (int iMineral = m_MineralCache.Count - 1; iMineral >= 0; iMineral--)
                    {
                        Mineral mineral  = m_MineralCache[iMineral];
                        bool    hasAlive = false;
                        for (int iSem = 0; iSem < semaphores.Count; iSem++)
                        {
                            SemaphoreMark mark = semaphores[iSem];
                            if (mineral.name == mark.name && mineral.m_MineralNpcId == mark.m_NpcId &&
                                mineral.m_MineralGroupId == mark.m_GroupId)
                            {
                                mineral.Sync(mark);
                                hasAlive = true;
                                break;
                            }
                        }
                        if (!hasAlive)
                        {
                            needRelease.Add(mineral);
                        }
                    }
                    if (needRelease != null && needRelease.Count > 0)
                    {
                        for (int iNeed = 0; iNeed < needRelease.Count; iNeed++)
                        {
                            needRelease[iNeed].Release(true);
                        }
                        needRelease.Clear();
                    }
                }
            }
        }