Ejemplo n.º 1
0
    public static List <SkinPreLoadInfo> PreLoadPlayerSkin(SkinPreLoadInfo skinInfo)
    {
        List <SkinPreLoadInfo> pushedSkinID = new List <SkinPreLoadInfo>();

        // 加载主皮肤
        SkinManager.PushCacheSkinID(skinInfo);
        pushedSkinID.Add(skinInfo);

        // 加载关联皮肤
        int[] nRelateSkinID = ASpeedGame.Data.PreLoadSkinLayout.PreLoadSkinLayout.Instance.GetRelateSkinID(skinInfo.skinID);
        if (nRelateSkinID != null)
        {
            for (int j = 0; j < nRelateSkinID.Length; ++j)
            {
                if (nRelateSkinID[j] > 0)
                {
                    SkinPreLoadInfo instance = new SkinPreLoadInfo();
                    instance.skinID = nRelateSkinID[j];
                    instance.nMask  = skinInfo.nMask;
                    SkinManager.PushCacheSkinID(instance);

                    pushedSkinID.Add(instance);
                }
            }
        }

        return(pushedSkinID);
    }
Ejemplo n.º 2
0
 public void PushPreWarm(SkinPreLoadInfo info)
 {
     if (CacheSkinIDCountTable.ContainsKey(info.skinID))
     {
         CacheSkinIDCountTable[info.skinID]++;
     }
     else
     {
         CacheSkinIDCountTable.Add(info.skinID, 1);
     }
 }
Ejemplo n.º 3
0
 public static void PushCacheSkinID(SkinPreLoadInfo info)
 {
     if ((info.nMask & (int)CachePriority.PRIORITY_VERY_HIGH) != 0)
     {
         FirstPart.PushPreWarm(info);
     }
     else if ((info.nMask & (int)CachePriority.PRIORITY_HIGH) != 0)
     {
         SecondPart.PushPreWarm(info);
     }
     else if ((info.nMask & (int)CachePriority.PRIORITY_MEDIUM) != 0)
     {
         ThirdPart.PushPreWarm(info);
     }
     else
     {
         FourPart.PushPreWarm(info);
     }
 }
Ejemplo n.º 4
0
    public static List <SkinPreLoadInfo> PreLoadMonsterSkin(int MapID)
    {
        List <SkinPreLoadInfo> pushedSkinID = new List <SkinPreLoadInfo>();


        // 加载关联皮肤
        int[] nRelateSkinID = ASpeedGame.Data.PreloadMonsterRes.PreloadMonsterRes.Instance.GetSkinIDs(MapID);
        if (nRelateSkinID != null)
        {
            for (int j = 0; j < nRelateSkinID.Length; ++j)
            {
                if (nRelateSkinID[j] > 0)
                {
                    SkinPreLoadInfo instance = new SkinPreLoadInfo();
                    instance.skinID = nRelateSkinID[j];
                    instance.nMask  = (int)CachePriority.PRIORITY_LOW;
                    SkinManager.PushCacheSkinID(instance);
                    pushedSkinID.Add(instance);
                }
            }
        }

        return(pushedSkinID);
    }
Ejemplo n.º 5
0
        // 战场初始化数据
        public void InitLoadingPlayerFrameInfo(IntPtr ptrParam, int nLen)
        {
            IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nLen);

            cmd_Camp_Count cmdCount = helper.get <cmd_Camp_Count>();

            int nMatchType = cmdCount.nMatchType;
            int nMapId     = cmdCount.nMapID;
            int nSelfCamp  = 0;

            // 自己皮肤列表
            List <int> self_hero_skin_list = new List <int>();
            // 友方皮肤列表
            List <int> friend_hero_skin_list = new List <int>();
            // 敌方皮肤列表
            List <int> enemy_hero_skin_list = new List <int>();
            // XP技能列表
            List <int> hero_xp_list = new List <int>();

            // 有效玩家数据列表,吃鸡地图只加载右方信息
            List <cmd_match_load_scene_playerinfo> player_info_list = new List <cmd_match_load_scene_playerinfo>();

            foreach (int nCampCount in cmdCount.vCampCount)
            {
                for (int i = 0; i < nCampCount; ++i)
                {
                    cmd_match_load_scene_playerinfo data = helper.get <cmd_match_load_scene_playerinfo>();
                    // 有效的英雄ID,有效皮肤ID
                    if (data.nHeroID <= 0 || data.nSkinID <= 0)
                    {
                        continue;
                    }

                    // 自己皮肤
                    if (data.nSelfInfo == 1)
                    {
                        self_hero_skin_list.Add(data.nSkinID);
                        nSelfCamp = data.nSelfCamp;
                    }
                    // 友方
                    else if (data.nSelfCamp == data.nCamp)
                    {
                        friend_hero_skin_list.Add(data.nSkinID);
                    }
                    // 敌方
                    else
                    {
                        enemy_hero_skin_list.Add(data.nSkinID);
                    }

                    // 有效XP
                    if (data.nXPSkillID > 0)
                    {
                        hero_xp_list.Add(data.nXPSkillID);
                    }

                    // 吃鸡模式只加右方,其他模式全加
                    if (nMatchType == (int)EMMatchType.MatchType_MultiCampMatch)
                    {
                        if (data.nSelfCamp == data.nCamp)
                        {
                            player_info_list.Add(data);
                        }
                    }
                    else
                    {
                        player_info_list.Add(data);
                    }
                }
            }

            // 设置显示数据
            m_wndView.SetData(nMatchType, nMapId, nSelfCamp, cmdCount.vCampCount, player_info_list);

            List <SkinPreLoadInfo> skins        = new List <SkinPreLoadInfo>();
            List <int>             self_skins   = new List <int>();
            List <int>             friend_skins = new List <int>();
            List <int>             enemy_skins  = new List <int>();

            // 预加载皮肤
            foreach (int nSkinID in self_hero_skin_list)
            {
                SkinPreLoadInfo info = new SkinPreLoadInfo();
                info.skinID = nSkinID;
                info.nMask |= (int)CachePriority.PRIORITY_VERY_HIGH;
                List <SkinPreLoadInfo> relateSkinList = SkinHelper.PreLoadPlayerSkin(info);
                skins.AddRange(relateSkinList);

                foreach (SkinPreLoadInfo peri in relateSkinList)
                {
                    self_skins.Add(peri.skinID);
                }
            }
            foreach (int nSkinID in friend_hero_skin_list)
            {
                SkinPreLoadInfo info = new SkinPreLoadInfo();
                info.skinID = nSkinID;
                info.nMask |= (int)CachePriority.PRIORITY_HIGH;
                List <SkinPreLoadInfo> relateSkinList = SkinHelper.PreLoadPlayerSkin(info);
                skins.AddRange(relateSkinList);

                foreach (SkinPreLoadInfo peri in relateSkinList)
                {
                    friend_skins.Add(peri.skinID);
                }
            }
            foreach (int nSkinID in enemy_hero_skin_list)
            {
                SkinPreLoadInfo info = new SkinPreLoadInfo();
                info.skinID = nSkinID;
                info.nMask |= (int)CachePriority.PRIORITY_MEDIUM;
                List <SkinPreLoadInfo> relateSkinList = SkinHelper.PreLoadPlayerSkin(info);
                skins.AddRange(relateSkinList);

                foreach (SkinPreLoadInfo peri in relateSkinList)
                {
                    enemy_skins.Add(peri.skinID);
                }
            }

            SkinHelper.PreLoadMonsterSkin(nMapId);

            LightingEffectFactory.Instance.AcitvieLoadingSceneQueue();

            // 预加载皮肤对应的光效
            EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.ActorSkin, self_skins, CachePriority.PRIORITY_VERY_HIGH);
            EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.ActorSkin, friend_skins, CachePriority.PRIORITY_HIGH);
            EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.ActorSkin, enemy_skins, CachePriority.PRIORITY_MEDIUM);

            // 预加载XP技能对应的光效
            EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.XP, hero_xp_list, CachePriority.PRIORITY_LOW);

            LightingEffectFactory.Instance.UnAcitvieLoadingSceneQueue();
        }