com.guru.unity.applit/Runtime/Framework/Core/AppLitFramework.cs

140 lines
3.4 KiB
C#

namespace Guru
{
using System;
using UnityEngine;
/// <summary>
/// 屏幕方向
/// </summary>
public enum ScreenOrientation
{
Portrait = 0,
Landscape,
}
public interface IDisposable
{
void Dispose();
}
public interface IContext
{
//--------- Components -----------------
bool RegisterResManager<T>(T manager, string name = "") where T : IResManager, new();
T GetResManager<T>(string name = "") where T : IResManager, new();
bool RegisterModel<T>(T model, string name = "") where T : IModel, new();
T GetModel<T>(string name = "") where T : IModel, new();
bool RegisterController<T>(T controller, string name = "") where T : IController, new();
T GetController<T>(string name = "") where T : IController, new();
bool RegisterHelper<T>(T controller, string name = "") where T : IHelper, new();
T GetHelper<T>(string name = "") where T : IHelper, new();
void RegisterUpdater(IUpdater updater);
void UnregisterUpdater(IUpdater updater);
}
/// <summary>
/// 消息管线
/// </summary>
public interface IEventPipeline
{
//--------- Event Bus ------------------
public void Subscribe<T>(Action<T> onReceiveMessage) where T : struct;
public void Unsubscribe<T>(Action<T> onReceiveMessage) where T : struct;
public void Send<T>(T message) where T : struct;
}
/// <summary>
/// 控制器接口
/// </summary>
public interface IController
{
string Name { get;}
Context Context { get; set;}
void Init();
}
public interface IModel
{
string Name { get;}
void Update(); // 数据刷新
}
public interface IView
{
string Name { get;}
void Refresh(); // UI 刷新
}
public interface IHelper
{
string Name { get;}
Context Context { get; set;}
}
public interface IResManager
{
string Name { get;}
Context Context { get; set;}
void Init();
T Load<T>(string resUri) where T : UnityEngine.Object;
void LoadAsync(string resUri, Action<ResLoadInfo> onLoaded);
}
/// <summary>
/// 资源加载器
/// </summary>
public interface IResLoader
{
void LoadAsync(string resUri, Action<ResLoadInfo> onLoaded);
}
/// <summary>
/// 更新器
/// </summary>
public interface IUpdater
{
void OnUpdate();
bool IsStopped { get; set; }
}
/// <summary>
/// 资源加载信息
/// </summary>
public class ResLoadInfo
{
public string uri = "";
public bool success = false; // 加载是否成功
public string bundleName = ""; // bundle包的名称
public object target = null;
public ResLoadInfo()
{
}
public ResLoadInfo(string uri)
{
this.uri = uri;
}
public GameObject AsGameObject() => target as GameObject;
public Texture AsTexture() => target as Texture;
public T AsObject<T>() where T : UnityEngine.Object => (T)target;
public string AsString() => (target as TextAsset)?.text ?? "";
public byte[] AsBinary() => (byte[])target;
}
}