using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using System;
|
|
public class CreateRoleManager : Singleton<CreateRoleManager>
|
{
|
CreateRoleProcessor processor;
|
Dictionary<int, GameObject> jobModels = new Dictionary<int, GameObject>();
|
|
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<bool, UnityEngine.Object> _callBack)
|
{
|
if (jobModels.ContainsKey(job))
|
{
|
if (_callBack != null)
|
{
|
_callBack(true, jobModels[job]);
|
}
|
|
return;
|
}
|
|
Action<bool, UnityEngine.Object> 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);
|
}
|
}
|
|
}
|