51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using Newtonsoft.Json;
|
||
using Newtonsoft.Json.Linq;
|
||
|
||
namespace H5MotaUpdate.ViewModels.Utils
|
||
{
|
||
internal static class MotaEventParser
|
||
{
|
||
public static void parseOneMotaEvent(JObject motaEvent)
|
||
{
|
||
// 如果type为openShop,添加一个open:true的键
|
||
if (motaEvent["type"] is JValue typeValue && typeValue.Value is string typeString && typeString == "openShop")
|
||
{
|
||
motaEvent["open"] = true;
|
||
}
|
||
}
|
||
|
||
static void parseMotaEventArr(JArray motaEventArr)
|
||
{
|
||
foreach (JToken motaEventToken in motaEventArr)
|
||
{
|
||
// 只处理对象事件 字符串不计
|
||
if (motaEventToken.Type == JTokenType.Object)
|
||
{
|
||
JObject motaEvent = (JObject)motaEventToken;
|
||
parseOneMotaEvent(motaEvent);
|
||
}
|
||
}
|
||
}
|
||
|
||
public static void parseMotaEvent(JToken motaEvent)
|
||
{
|
||
if (motaEvent is JArray motaEventArr)
|
||
{
|
||
parseMotaEventArr(motaEventArr);
|
||
}
|
||
else if (motaEvent is JObject motaEventObj)
|
||
{ // 说明有覆盖触发器等,data中才是真正的事件
|
||
if (motaEvent["data"] is JArray dataArr)
|
||
{
|
||
parseMotaEventArr(dataArr);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|