mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
59 lines
2.2 KiB
C#
59 lines
2.2 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
|
|
namespace GlitchyEngine.Core;
|
|
|
|
[EngineClass("GlitchyEngine.Scripting.ScriptGlue.EngineResult")]
|
|
internal enum EngineResult
|
|
{
|
|
Ok = 0, // Success, can mean True
|
|
False = 1, // Success, can mean False
|
|
Error = -1,
|
|
NotImplemented = -2,
|
|
ArgumentError = -3,
|
|
|
|
// Entity Errors:
|
|
EntityNotFound = -4, // The entity doesn't exist or was deleted.
|
|
EntityDoesntHaveComponent = -5, // The entity has no component of type {typeof(T)} or it was deleted.
|
|
AssetNotFound = -6, // No asset exists for AssetHandle \"{assetId}\".
|
|
CustomError = 1 << 31
|
|
}
|
|
|
|
public class EngineException(string message) : Exception(message);
|
|
|
|
public class EntityNotFoundException(string? message = null) : Exception(message);
|
|
|
|
public class ComponentNotFoundException(string? message = null) : Exception(message);
|
|
|
|
public class AssetNotFoundException(string? message = null) : Exception(message);
|
|
|
|
internal static class EngineErrors
|
|
{
|
|
public static void ThrowIfError(EngineResult result, [CallerMemberName]string callerName = "")
|
|
{
|
|
if (result >= 0)
|
|
return;
|
|
|
|
string engineMessage = ScriptGlue.GetLastExceptionMessage();
|
|
|
|
switch (result)
|
|
{
|
|
case EngineResult.Error:
|
|
throw new EngineException(engineMessage ?? $"Unspecified engine excepiton in {callerName}");
|
|
case EngineResult.NotImplemented:
|
|
throw new NotImplementedException(engineMessage ?? $"Function {callerName} is not implemented in the engine.");
|
|
case EngineResult.ArgumentError:
|
|
throw new ArgumentException(engineMessage ?? $"An argument passed to {callerName} is invalid.");
|
|
case EngineResult.EntityNotFound:
|
|
throw new EntityNotFoundException(engineMessage);
|
|
case EngineResult.EntityDoesntHaveComponent:
|
|
throw new ComponentNotFoundException(engineMessage);
|
|
case EngineResult.AssetNotFound:
|
|
throw new AssetNotFoundException(engineMessage);
|
|
default:
|
|
throw new EngineException(engineMessage ?? $"Unknown engine excepiton in {callerName}");
|
|
}
|
|
}
|
|
}
|