123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using GameFramework;
- using GameFramework.Event;
- using GameFramework.Resource;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityGameFramework.Runtime;
- using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
- namespace MetaClient
- {
- public class ProcedurePreload : ProcedureBase
- {
- public static readonly string[] DataTableNames = new string[]
- {
- "Aircraft",
- "Armor",
- "Asteroid",
- "Entity",
- "Music",
- "Scene",
- "Sound",
- "Thruster",
- "UIForm",
- "UISound",
- "Weapon",
- "CustomHairStyple",
- "CustomFaceStyple",
- "CustomBody"
- };
- private Dictionary<string, bool> m_LoadedFlag = new Dictionary<string, bool>();
- public override bool UseNativeDialog
- {
- get
- {
- return true;
- }
- }
- protected override void OnEnter(ProcedureOwner procedureOwner)
- {
- base.OnEnter(procedureOwner);
- GameEntry.Event.Subscribe(LoadConfigSuccessEventArgs.EventId, OnLoadConfigSuccess);
- GameEntry.Event.Subscribe(LoadConfigFailureEventArgs.EventId, OnLoadConfigFailure);
- GameEntry.Event.Subscribe(LoadDataTableSuccessEventArgs.EventId, OnLoadDataTableSuccess);
- GameEntry.Event.Subscribe(LoadDataTableFailureEventArgs.EventId, OnLoadDataTableFailure);
- GameEntry.Event.Subscribe(LoadDictionarySuccessEventArgs.EventId, OnLoadDictionarySuccess);
- GameEntry.Event.Subscribe(LoadDictionaryFailureEventArgs.EventId, OnLoadDictionaryFailure);
- m_LoadedFlag.Clear();
- PreloadResources();
- }
- protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
- {
- GameEntry.Event.Unsubscribe(LoadConfigSuccessEventArgs.EventId, OnLoadConfigSuccess);
- GameEntry.Event.Unsubscribe(LoadConfigFailureEventArgs.EventId, OnLoadConfigFailure);
- GameEntry.Event.Unsubscribe(LoadDataTableSuccessEventArgs.EventId, OnLoadDataTableSuccess);
- GameEntry.Event.Unsubscribe(LoadDataTableFailureEventArgs.EventId, OnLoadDataTableFailure);
- GameEntry.Event.Unsubscribe(LoadDictionarySuccessEventArgs.EventId, OnLoadDictionarySuccess);
- GameEntry.Event.Unsubscribe(LoadDictionaryFailureEventArgs.EventId, OnLoadDictionaryFailure);
- base.OnLeave(procedureOwner, isShutdown);
- }
- protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
- {
- base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
- foreach (KeyValuePair<string, bool> loadedFlag in m_LoadedFlag)
- {
- if (!loadedFlag.Value)
- {
- return;
- }
- }
- procedureOwner.SetData<VarInt32>("NextSceneId", GameEntry.Config.GetInt("Scene.CustomRole"));
- ChangeState<ProcedureChangeScene>(procedureOwner);
- }
- private void PreloadResources()
- {
- // Preload configs
- LoadConfig("DefaultConfig");
- // Preload data tables
- foreach (string dataTableName in DataTableNames)
- {
- LoadDataTable(dataTableName);
- }
- // Preload dictionaries
- LoadDictionary("Default");
- // Preload fonts
- LoadFont("MainFont");
- }
- private void LoadConfig(string configName)
- {
- string configAssetName = AssetUtility.GetConfigAsset(configName, false);
- m_LoadedFlag.Add(configAssetName, false);
- GameEntry.Config.ReadData(configAssetName, this);
- }
- private void LoadDataTable(string dataTableName)
- {
- string dataTableAssetName = AssetUtility.GetDataTableAsset(dataTableName, false);
- m_LoadedFlag.Add(dataTableAssetName, false);
- GameEntry.DataTable.LoadDataTable(dataTableName, dataTableAssetName, this);
- }
- private void LoadDictionary(string dictionaryName)
- {
- string dictionaryAssetName = AssetUtility.GetDictionaryAsset(dictionaryName, false);
- m_LoadedFlag.Add(dictionaryAssetName, false);
- GameEntry.Localization.ReadData(dictionaryAssetName, this);
- }
- private void LoadFont(string fontName)
- {
- m_LoadedFlag.Add(Utility.Text.Format("Font.{0}", fontName), false);
- GameEntry.Resource.LoadAsset(AssetUtility.GetFontAsset(fontName), Constant.AssetPriority.FontAsset, new LoadAssetCallbacks(
- (assetName, asset, duration, userData) =>
- {
- m_LoadedFlag[Utility.Text.Format("Font.{0}", fontName)] = true;
- UGuiForm.SetMainFont((Font)asset);
- Log.Info("Load font '{0}' OK.", fontName);
- },
- (assetName, status, errorMessage, userData) =>
- {
- Log.Error("Can not load font '{0}' from '{1}' with error message '{2}'.", fontName, assetName, errorMessage);
- }));
- }
- private void OnLoadConfigSuccess(object sender, GameEventArgs e)
- {
- LoadConfigSuccessEventArgs ne = (LoadConfigSuccessEventArgs)e;
- if (ne.UserData != this)
- {
- return;
- }
- m_LoadedFlag[ne.ConfigAssetName] = true;
- Log.Info("Load config '{0}' OK.", ne.ConfigAssetName);
- }
- private void OnLoadConfigFailure(object sender, GameEventArgs e)
- {
- LoadConfigFailureEventArgs ne = (LoadConfigFailureEventArgs)e;
- if (ne.UserData != this)
- {
- return;
- }
- Log.Error("Can not load config '{0}' from '{1}' with error message '{2}'.", ne.ConfigAssetName, ne.ConfigAssetName, ne.ErrorMessage);
- }
- private void OnLoadDataTableSuccess(object sender, GameEventArgs e)
- {
- LoadDataTableSuccessEventArgs ne = (LoadDataTableSuccessEventArgs)e;
- if (ne.UserData != this)
- {
- return;
- }
- m_LoadedFlag[ne.DataTableAssetName] = true;
- Log.Info("Load data table '{0}' OK.", ne.DataTableAssetName);
- }
- private void OnLoadDataTableFailure(object sender, GameEventArgs e)
- {
- LoadDataTableFailureEventArgs ne = (LoadDataTableFailureEventArgs)e;
- if (ne.UserData != this)
- {
- return;
- }
- Log.Error("Can not load data table '{0}' from '{1}' with error message '{2}'.", ne.DataTableAssetName, ne.DataTableAssetName, ne.ErrorMessage);
- }
- private void OnLoadDictionarySuccess(object sender, GameEventArgs e)
- {
- LoadDictionarySuccessEventArgs ne = (LoadDictionarySuccessEventArgs)e;
- if (ne.UserData != this)
- {
- return;
- }
- m_LoadedFlag[ne.DictionaryAssetName] = true;
- Log.Info("Load dictionary '{0}' OK.", ne.DictionaryAssetName);
- }
- private void OnLoadDictionaryFailure(object sender, GameEventArgs e)
- {
- LoadDictionaryFailureEventArgs ne = (LoadDictionaryFailureEventArgs)e;
- if (ne.UserData != this)
- {
- return;
- }
- Log.Error("Can not load dictionary '{0}' from '{1}' with error message '{2}'.", ne.DictionaryAssetName, ne.DictionaryAssetName, ne.ErrorMessage);
- }
- }
- }
|