Пример #1
0
        /// <summary>
        /// 读取存档用
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public FollowingRole CreateFollowingRoleFromSaver(RoleData data)
        {
            if (data == null)
            {
                return(null);
            }

            if (m_FollowingRoles.ContainsKey(data.guid))
            {
                Debug.LogErrorFormat(
                    "RoleModel -> Create FollowingRole from saver ERROR. GUID {0} is exist.",
                    data.guid);
                return(null);
            }

            FollowingRole role = new FollowingRole(data.guid);

            if (!role.Load(data))
            {
                return(null);
            }

            if (data.guid >= nextRoleGUID)
            {
                nextRoleGUID = data.guid + 1UL;
            }

            m_FollowingRoles.Add(role.guid, role);
            return(role);
        }
Пример #2
0
 /// <summary>
 /// 获取或创建角色
 /// 独有角色:characterId
 /// 部下杂兵角色:classId
 /// </summary>
 /// <param name="characterId"></param>
 /// <returns></returns>
 public Role GetOrCreateRole(int id, RoleType roleType)
 {
     if (roleType == RoleType.Unique)
     {
         UniqueRole role;
         if (!m_UniqueRoles.TryGetValue(id, out role))
         {
             role = CreateUniqueRole(id);
             if (role != null)
             {
                 m_UniqueRoles.Add(role.characterId, role);
             }
         }
         return(role);
     }
     else
     {
         FollowingRole role = CreateFollowingRole(id);
         if (role != null)
         {
             m_FollowingRoles.Add(role.guid, role);
         }
         return(role);
     }
 }
Пример #3
0
        /// <summary>
        /// 创建部下角色
        /// </summary>
        /// <param name="classId"></param>
        /// <returns></returns>
        private FollowingRole CreateFollowingRole(int classId)
        {
            FollowingRole role     = new FollowingRole(nextRoleGUID++);
            RoleData      template = GetOrCreateFollowingTemplate(classId);

            if (!role.Load(template))
            {
                return(null);
            }
            return(role);
        }
Пример #4
0
 public bool TryGetFollowingRole(ulong guid, out FollowingRole role)
 {
     return(m_FollowingRoles.TryGetValue(guid, out role));
 }