using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class CreateRoleManager : Singleton { CreateRoleProcessor processor; Dictionary jobModels = new Dictionary(); public readonly LogicInt selectedJob = new LogicInt(); public void RandomJob() { var random = UnityEngine.Random.Range(0, 100); selectedJob.value = random < GeneralDefine.RandomJobs[0] ? 1 : 2; } public void View(int job, bool immediately) { if (processor == null) { processor = new CreateRoleProcessor(); processor.LoadNecessaryResources(); } selectedJob.value = job; switch (job) { case 1: processor.SwitchToWarrior(immediately); break; case 2: processor.SwitchToMagic(immediately); break; } } public void Dispose() { processor.Dispose(); processor = null; jobModels.Clear(); if (!AssetSource.mobFromEditor) { AssetBundleUtility.Instance.UnloadAssetBundle("gmodels/createrole", true, false); } } public void LoadModel(int job, Action _callBack) { if (jobModels.ContainsKey(job)) { if (_callBack != null) { _callBack(true, jobModels[job]); } return; } Action assetCallBack = (bool _ok, UnityEngine.Object _asset) => { GameObject instance = null; if (_ok) { instance = GameObject.Instantiate(_asset) as GameObject; if (instance != null) { jobModels[job] = instance; } } if (_callBack != null) { _callBack(_ok && instance != null, instance); } }; InstanceResourcesLoader.LoadCreateRole(job, assetCallBack); } public void ReleaseModel(int job) { if (jobModels.ContainsKey(job)) { jobModels[job].SetActive(false); } } }