update sapce shooter

pull/418/head
何冠峰 2024-12-24 18:49:14 +08:00
parent 4fc0d06908
commit 16117b67f1
3 changed files with 39 additions and 35 deletions

View File

@ -33,7 +33,6 @@ internal class FsmInitializePackage : IStateNode
{ {
var playMode = (EPlayMode)_machine.GetBlackboardValue("PlayMode"); var playMode = (EPlayMode)_machine.GetBlackboardValue("PlayMode");
var packageName = (string)_machine.GetBlackboardValue("PackageName"); var packageName = (string)_machine.GetBlackboardValue("PackageName");
var rawFileSystem = (bool)_machine.GetBlackboardValue("RawFileSystem");
// 创建资源包裹类 // 创建资源包裹类
var package = YooAssets.TryGetPackage(packageName); var package = YooAssets.TryGetPackage(packageName);
@ -56,10 +55,7 @@ internal class FsmInitializePackage : IStateNode
if (playMode == EPlayMode.OfflinePlayMode) if (playMode == EPlayMode.OfflinePlayMode)
{ {
var createParameters = new OfflinePlayModeParameters(); var createParameters = new OfflinePlayModeParameters();
if (rawFileSystem) createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinRawFileSystemParameters();
else
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
initializationOperation = package.InitializeAsync(createParameters); initializationOperation = package.InitializeAsync(createParameters);
} }
@ -70,16 +66,8 @@ internal class FsmInitializePackage : IStateNode
string fallbackHostServer = GetHostServerURL(); string fallbackHostServer = GetHostServerURL();
IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
var createParameters = new HostPlayModeParameters(); var createParameters = new HostPlayModeParameters();
if (rawFileSystem) createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
{ createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinRawFileSystemParameters();
createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheRawFileSystemParameters(remoteServices);
}
else
{
createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters();
createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices);
}
initializationOperation = package.InitializeAsync(createParameters); initializationOperation = package.InitializeAsync(createParameters);
} }
@ -174,22 +162,26 @@ internal class FsmInitializePackage : IStateNode
/// 同步方式获取解密的资源包对象 /// 同步方式获取解密的资源包对象
/// 注意:加载流对象在资源包对象释放的时候会自动释放 /// 注意:加载流对象在资源包对象释放的时候会自动释放
/// </summary> /// </summary>
AssetBundle IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo, out Stream managedStream) DecryptResult IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo)
{ {
BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read); BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read);
managedStream = bundleStream; DecryptResult decryptResult = new DecryptResult();
return AssetBundle.LoadFromStream(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); decryptResult.ManagedStream = bundleStream;
decryptResult.Result = AssetBundle.LoadFromStream(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize());
return decryptResult;
} }
/// <summary> /// <summary>
/// 异步方式获取解密的资源包对象 /// 异步方式获取解密的资源包对象
/// 注意:加载流对象在资源包对象释放的时候会自动释放 /// 注意:加载流对象在资源包对象释放的时候会自动释放
/// </summary> /// </summary>
AssetBundleCreateRequest IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo, out Stream managedStream) DecryptResult IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo)
{ {
BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read); BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read);
managedStream = bundleStream; DecryptResult decryptResult = new DecryptResult();
return AssetBundle.LoadFromStreamAsync(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); decryptResult.ManagedStream = bundleStream;
decryptResult.CreateRequest = AssetBundle.LoadFromStreamAsync(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize());
return decryptResult;
} }
/// <summary> /// <summary>
@ -223,20 +215,24 @@ internal class FsmInitializePackage : IStateNode
/// 同步方式获取解密的资源包对象 /// 同步方式获取解密的资源包对象
/// 注意:加载流对象在资源包对象释放的时候会自动释放 /// 注意:加载流对象在资源包对象释放的时候会自动释放
/// </summary> /// </summary>
AssetBundle IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo, out Stream managedStream) DecryptResult IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo)
{ {
managedStream = null; DecryptResult decryptResult = new DecryptResult();
return AssetBundle.LoadFromFile(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); decryptResult.ManagedStream = null;
decryptResult.Result = AssetBundle.LoadFromFile(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset());
return decryptResult;
} }
/// <summary> /// <summary>
/// 异步方式获取解密的资源包对象 /// 异步方式获取解密的资源包对象
/// 注意:加载流对象在资源包对象释放的时候会自动释放 /// 注意:加载流对象在资源包对象释放的时候会自动释放
/// </summary> /// </summary>
AssetBundleCreateRequest IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo, out Stream managedStream) DecryptResult IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo)
{ {
managedStream = null; DecryptResult decryptResult = new DecryptResult();
return AssetBundle.LoadFromFileAsync(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); decryptResult.ManagedStream = null;
decryptResult.CreateRequest = AssetBundle.LoadFromFileAsync(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset());
return decryptResult;
} }
/// <summary> /// <summary>

View File

@ -8,11 +8,15 @@ using UniFramework.Machine;
/// </summary> /// </summary>
internal class FsmUpdaterDone : IStateNode internal class FsmUpdaterDone : IStateNode
{ {
private PatchOperation _owner;
void IStateNode.OnCreate(StateMachine machine) void IStateNode.OnCreate(StateMachine machine)
{ {
_owner = machine.Owner as PatchOperation;
} }
void IStateNode.OnEnter() void IStateNode.OnEnter()
{ {
_owner.SetFinish();
} }
void IStateNode.OnUpdate() void IStateNode.OnUpdate()
{ {

View File

@ -17,10 +17,13 @@ public class PatchOperation : GameAsyncOperation
private readonly EventGroup _eventGroup = new EventGroup(); private readonly EventGroup _eventGroup = new EventGroup();
private readonly StateMachine _machine; private readonly StateMachine _machine;
private readonly string _packageName;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
public PatchOperation(string packageName, bool rawFileSystem, EPlayMode playMode) public PatchOperation(string packageName, EPlayMode playMode)
{ {
_packageName = packageName;
// 注册监听事件 // 注册监听事件
_eventGroup.AddListener<UserEventDefine.UserTryInitialize>(OnHandleEventMessage); _eventGroup.AddListener<UserEventDefine.UserTryInitialize>(OnHandleEventMessage);
_eventGroup.AddListener<UserEventDefine.UserBeginDownloadWebFiles>(OnHandleEventMessage); _eventGroup.AddListener<UserEventDefine.UserBeginDownloadWebFiles>(OnHandleEventMessage);
@ -41,7 +44,6 @@ public class PatchOperation : GameAsyncOperation
_machine.SetBlackboardValue("PackageName", packageName); _machine.SetBlackboardValue("PackageName", packageName);
_machine.SetBlackboardValue("PlayMode", playMode); _machine.SetBlackboardValue("PlayMode", playMode);
_machine.SetBlackboardValue("RawFileSystem", rawFileSystem);
} }
protected override void OnStart() protected override void OnStart()
{ {
@ -56,18 +58,20 @@ public class PatchOperation : GameAsyncOperation
if(_steps == ESteps.Update) if(_steps == ESteps.Update)
{ {
_machine.Update(); _machine.Update();
if(_machine.CurrentNode == typeof(FsmUpdaterDone).FullName)
{
_eventGroup.RemoveAllListener();
Status = EOperationStatus.Succeed;
_steps = ESteps.Done;
}
} }
} }
protected override void OnAbort() protected override void OnAbort()
{ {
} }
public void SetFinish()
{
_steps = ESteps.Done;
_eventGroup.RemoveAllListener();
Status = EOperationStatus.Succeed;
Debug.Log($"Package {_packageName} patch done !");
}
/// <summary> /// <summary>
/// 接收事件 /// 接收事件
/// </summary> /// </summary>