2022-12-06 15:50:17 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
|
|
namespace MinecraftClient.CommandHandler
|
|
|
|
|
|
{
|
|
|
|
|
|
public class CmdResult
|
|
|
|
|
|
{
|
|
|
|
|
|
public static readonly CmdResult Empty = new();
|
|
|
|
|
|
|
2022-12-11 16:30:45 +08:00
|
|
|
|
internal static McClient? currentHandler;
|
2022-12-06 15:50:17 +08:00
|
|
|
|
|
|
|
|
|
|
public enum Status
|
|
|
|
|
|
{
|
|
|
|
|
|
NotRun = int.MinValue,
|
|
|
|
|
|
FailChunkNotLoad = -4,
|
|
|
|
|
|
FailNeedEntity = -3,
|
|
|
|
|
|
FailNeedInventory = -2,
|
|
|
|
|
|
FailNeedTerrain = -1,
|
|
|
|
|
|
Fail = 0,
|
|
|
|
|
|
Done = 1,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public CmdResult()
|
|
|
|
|
|
{
|
|
|
|
|
|
this.status = Status.NotRun;
|
|
|
|
|
|
this.result = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Status status;
|
|
|
|
|
|
|
|
|
|
|
|
public string? result;
|
|
|
|
|
|
|
|
|
|
|
|
public int SetAndReturn(Status status)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.status = status;
|
|
|
|
|
|
this.result = status switch
|
|
|
|
|
|
{
|
|
|
|
|
|
#pragma warning disable format // @formatter:off
|
|
|
|
|
|
Status.NotRun => null,
|
|
|
|
|
|
Status.FailChunkNotLoad => null,
|
|
|
|
|
|
Status.FailNeedEntity => Translations.extra_entity_required,
|
|
|
|
|
|
Status.FailNeedInventory => Translations.extra_inventory_required,
|
|
|
|
|
|
Status.FailNeedTerrain => Translations.extra_terrainandmovement_required,
|
|
|
|
|
|
Status.Fail => Translations.general_fail,
|
|
|
|
|
|
Status.Done => null,
|
|
|
|
|
|
_ => null,
|
|
|
|
|
|
#pragma warning restore format // @formatter:on
|
|
|
|
|
|
};
|
|
|
|
|
|
return Convert.ToInt32(this.status);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public int SetAndReturn(Status status, string? result)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.status = status;
|
|
|
|
|
|
this.result = result;
|
|
|
|
|
|
return Convert.ToInt32(this.status);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public int SetAndReturn(int code, string? result)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.status = (Status)Enum.ToObject(typeof(Status), code);
|
|
|
|
|
|
if (!Enum.IsDefined(typeof(Status), status))
|
|
|
|
|
|
throw new InvalidOperationException($"{code} is not a legal return value.");
|
|
|
|
|
|
this.result = result;
|
|
|
|
|
|
return code;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public int SetAndReturn(bool result)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.status = result ? Status.Done : Status.Fail;
|
|
|
|
|
|
this.result = result ? Translations.general_done : Translations.general_fail;
|
|
|
|
|
|
return Convert.ToInt32(this.status);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public int SetAndReturn(string? result)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.status = Status.Done;
|
|
|
|
|
|
this.result = result;
|
|
|
|
|
|
return Convert.ToInt32(this.status);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public int SetAndReturn(string? resultstr, bool result)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.status = result ? Status.Done : Status.Fail;
|
|
|
|
|
|
this.result = resultstr;
|
|
|
|
|
|
return Convert.ToInt32(this.status);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override string ToString()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (result != null)
|
|
|
|
|
|
return result;
|
|
|
|
|
|
else
|
|
|
|
|
|
return status.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|