26.04.17 작업 진행 사항
This commit is contained in:
@@ -564,6 +564,73 @@ static Task<SceneValidationProbeResult> ValidateSceneOperationsAsync(SceneValida
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.Equals(operation.Method, "SetVisible", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
handler.ResetVisibleTask();
|
||||
sceneObject.SetVisible(operation.Visible ? 1 : 0);
|
||||
if (!WaitForTaskWithMessagePump(handler.VisibleTask, options.Connection.Timeout))
|
||||
{
|
||||
results.Add(new SceneOperationValidationResult(
|
||||
operation.ObjectName,
|
||||
operation.Method,
|
||||
DescribeOperationPayload(operation),
|
||||
"TIMEOUT",
|
||||
"OnSetVisible timed out."));
|
||||
continue;
|
||||
}
|
||||
|
||||
var callbackResult = handler.VisibleTask.Result;
|
||||
results.Add(new SceneOperationValidationResult(
|
||||
operation.ObjectName,
|
||||
operation.Method,
|
||||
DescribeOperationPayload(operation),
|
||||
callbackResult.ToString(),
|
||||
string.Empty));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.Equals(operation.Method, "SetStyleColor", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (sceneObject is not IKAStyle style)
|
||||
{
|
||||
results.Add(new SceneOperationValidationResult(
|
||||
operation.ObjectName,
|
||||
operation.Method,
|
||||
DescribeOperationPayload(operation),
|
||||
"NOT_A_STYLE_OBJECT",
|
||||
"Object does not implement IKAStyle."));
|
||||
continue;
|
||||
}
|
||||
|
||||
handler.ResetStyleColorTask();
|
||||
style.SetStyleColor(
|
||||
ParseStyleType(operation.StyleType),
|
||||
operation.Order,
|
||||
operation.R,
|
||||
operation.G,
|
||||
operation.B,
|
||||
operation.A);
|
||||
if (!WaitForTaskWithMessagePump(handler.StyleColorTask, options.Connection.Timeout))
|
||||
{
|
||||
results.Add(new SceneOperationValidationResult(
|
||||
operation.ObjectName,
|
||||
operation.Method,
|
||||
DescribeOperationPayload(operation),
|
||||
"TIMEOUT",
|
||||
"OnSetStyleColor timed out."));
|
||||
continue;
|
||||
}
|
||||
|
||||
var callbackResult = handler.StyleColorTask.Result;
|
||||
results.Add(new SceneOperationValidationResult(
|
||||
operation.ObjectName,
|
||||
operation.Method,
|
||||
DescribeOperationPayload(operation),
|
||||
callbackResult.ToString(),
|
||||
string.Empty));
|
||||
continue;
|
||||
}
|
||||
|
||||
handler.ResetSetValueTask();
|
||||
sceneObject.SetValue(operation.Value ?? string.Empty);
|
||||
if (!WaitForTaskWithMessagePump(handler.SetValueTask, options.Connection.Timeout))
|
||||
@@ -1023,11 +1090,34 @@ static List<SceneValidationOperation> LoadValidationOperations(SceneValidationOp
|
||||
|
||||
static string DescribeOperationPayload(SceneValidationOperation operation)
|
||||
{
|
||||
if (string.Equals(operation.Method, "SetVisible", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return $"visible={operation.Visible}";
|
||||
}
|
||||
|
||||
if (string.Equals(operation.Method, "SetStyleColor", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return $"styleType={operation.StyleType}, order={operation.Order}, rgba=({operation.R}, {operation.G}, {operation.B}, {operation.A})";
|
||||
}
|
||||
|
||||
return string.Equals(operation.Method, "SetCounterNumberKey", StringComparison.OrdinalIgnoreCase)
|
||||
? $"keyIndex={operation.KeyIndex}, number={operation.Number:0.###}"
|
||||
: operation.Value ?? string.Empty;
|
||||
}
|
||||
|
||||
static eKStyleType ParseStyleType(string? value)
|
||||
{
|
||||
return (value ?? string.Empty).Trim().ToLowerInvariant() switch
|
||||
{
|
||||
"face" => eKStyleType.STYLE_TYPE_FACE,
|
||||
"edge" => eKStyleType.STYLE_TYPE_EDGE,
|
||||
"shadow" => eKStyleType.STYLE_TYPE_SHADOW,
|
||||
"underline" => eKStyleType.STYLE_TYPE_UNDERLINE,
|
||||
"frame" => eKStyleType.STYLE_TYPE_FRAME,
|
||||
_ => throw new ArgumentException($"Unsupported style type: {value}")
|
||||
};
|
||||
}
|
||||
|
||||
static void WriteSceneValidationMarkdown(SceneValidationOptions options, IReadOnlyList<SceneOperationValidationResult> results)
|
||||
{
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(options.OutputPath)!);
|
||||
@@ -1477,6 +1567,20 @@ internal sealed class SceneValidationOperation
|
||||
public int KeyIndex { get; set; }
|
||||
|
||||
public double Number { get; set; }
|
||||
|
||||
public string? StyleType { get; set; }
|
||||
|
||||
public int Order { get; set; }
|
||||
|
||||
public int R { get; set; }
|
||||
|
||||
public int G { get; set; }
|
||||
|
||||
public int B { get; set; }
|
||||
|
||||
public int A { get; set; } = 255;
|
||||
|
||||
public bool Visible { get; set; }
|
||||
}
|
||||
|
||||
internal sealed record SceneOperationValidationResult(string ObjectName, string Method, string Payload, string Result, string Detail);
|
||||
@@ -1490,6 +1594,8 @@ internal sealed class ProbeEventHandler : KAEventHandler
|
||||
private TaskCompletionSource<eKResult> _loadSceneTask = new(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
private TaskCompletionSource<eKResult> _unloadSceneTask = new(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
private TaskCompletionSource<eKResult> _counterNumberKeyTask = new(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
private TaskCompletionSource<eKResult> _styleColorTask = new(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
private TaskCompletionSource<eKResult> _visibleTask = new(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
private TaskCompletionSource<eKResult> _setValueTask = new(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
private TaskCompletionSource<ObjectInfosProbeResult> _objectInfosTask = new(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
private IKAScene? _sceneToQueryOnLoad;
|
||||
@@ -1504,6 +1610,10 @@ internal sealed class ProbeEventHandler : KAEventHandler
|
||||
|
||||
public Task<eKResult> CounterNumberKeyTask => _counterNumberKeyTask.Task;
|
||||
|
||||
public Task<eKResult> StyleColorTask => _styleColorTask.Task;
|
||||
|
||||
public Task<eKResult> VisibleTask => _visibleTask.Task;
|
||||
|
||||
public Task<eKResult> SetValueTask => _setValueTask.Task;
|
||||
|
||||
public Task<ObjectInfosProbeResult> ObjectInfosTask => _objectInfosTask.Task;
|
||||
@@ -1514,6 +1624,10 @@ internal sealed class ProbeEventHandler : KAEventHandler
|
||||
|
||||
public void ResetCounterNumberKeyTask() => _counterNumberKeyTask = new TaskCompletionSource<eKResult>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
|
||||
public void ResetStyleColorTask() => _styleColorTask = new TaskCompletionSource<eKResult>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
|
||||
public void ResetVisibleTask() => _visibleTask = new TaskCompletionSource<eKResult>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
|
||||
public void ResetSetValueTask() => _setValueTask = new TaskCompletionSource<eKResult>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
|
||||
public void ResetObjectInfosTask() => _objectInfosTask = new TaskCompletionSource<ObjectInfosProbeResult>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
@@ -1657,12 +1771,28 @@ internal sealed class ProbeEventHandler : KAEventHandler
|
||||
public void OnQuerySceneEffectType(eKResult Result, string SceneName, int bInEffect, eKEffectType EffectType, int Duration) { }
|
||||
public void OnQueryDuration(eKResult Result, string SceneName, string AnimationName, int Duration) { }
|
||||
public void OnQueryContentsOfTextObjects(eKResult Result, string SceneName, KAStrings pTexts) { }
|
||||
public void OnSetStyleColor(eKResult Result, string SceneName, string ObjectName) { }
|
||||
public void OnSetStyleColor(eKResult Result, string SceneName, string ObjectName)
|
||||
{
|
||||
if (Result != eKResult.RESULT_ERROR_NO_VARIABLE_OBJECT)
|
||||
{
|
||||
Console.WriteLine($"[SDK] OnSetStyleColor result={Result} scene={SceneName} object={ObjectName}");
|
||||
}
|
||||
|
||||
_styleColorTask.TrySetResult(Result);
|
||||
}
|
||||
public void OnSetStyleTexture(eKResult Result, string SceneName, string ObjectName) { }
|
||||
public void OnSetFaceTextColor(eKResult Result, string SceneName, string ObjectName) { }
|
||||
public void OnSetEdgeTextColor(eKResult Result, string SceneName, string ObjectName) { }
|
||||
public void OnSetShadowTextColor(eKResult Result, string SceneName, string ObjectName) { }
|
||||
public void OnSetVisible(eKResult Result, string SceneName, string ObjectName) { }
|
||||
public void OnSetVisible(eKResult Result, string SceneName, string ObjectName)
|
||||
{
|
||||
if (Result != eKResult.RESULT_ERROR_NO_VARIABLE_OBJECT)
|
||||
{
|
||||
Console.WriteLine($"[SDK] OnSetVisible result={Result} scene={SceneName} object={ObjectName}");
|
||||
}
|
||||
|
||||
_visibleTask.TrySetResult(Result);
|
||||
}
|
||||
public void OnSetValue(eKResult Result, string SceneName, string ObjectName)
|
||||
{
|
||||
if (Result != eKResult.RESULT_ERROR_NO_VARIABLE_OBJECT)
|
||||
|
||||
Reference in New Issue
Block a user