fix:修复迁移商店时的一些小问题;修复装备数值未正确迁移的问题

This commit is contained in:
ShakeFlower 2025-07-08 21:27:33 +08:00
parent a96b7ad67e
commit 98693412f1
5 changed files with 89 additions and 4 deletions

View File

@ -192,7 +192,9 @@ namespace H5MotaUpdate.ViewModels
shopId = shop["id"].ToString(), shopId = shop["id"].ToString(),
flagName_Time = "flag:" + shopId + "_times"; // 新设的购买次数变量flag:xxx flagName_Time = "flag:" + shopId + "_times"; // 新设的购买次数变量flag:xxx
string priceStr = shopNeed.Replace("times", flagName_Time); //商店价格字符串用新变量名取代times string priceStr = shopNeed.Replace("times", flagName_Time); //商店价格字符串用新变量名取代times
shop["text"] = StringUtils.ReplaceInBetweenCurlyBraces(shopText, "times", flagName_Time); shop["text"] = StringUtils.ReplaceInBetweenCurlyBraces(shopText, "times", flagName_Time);
shop["text"] = StringUtils.ReplaceInBetweenCurlyBraces(shopText, "need", priceStr);
shop["disablePreview"] = false; shop["disablePreview"] = false;
if (use == "experience") if (use == "experience")

View File

@ -1,4 +1,5 @@
using Newtonsoft.Json.Linq; using H5MotaUpdate.ViewModels.Utils;
using Newtonsoft.Json.Linq;
using System.IO; using System.IO;
using System.Text; using System.Text;
@ -92,6 +93,12 @@ namespace H5MotaUpdate.ViewModels
// 设置每张地图的尺寸。如果自己有就用自己的,否则设为默认长宽。 // 设置每张地图的尺寸。如果自己有就用自己的,否则设为默认长宽。
foreach (JProperty posEvent in jsonObject["events"])
{
JToken posEventValue = posEvent.Value;
MotaEventParser.parseMotaEvent(posEventValue);
}
int width, height; int width, height;
if (jsonObject["width"] != null && jsonObject["width"].Type == JTokenType.Integer) if (jsonObject["width"] != null && jsonObject["width"].Type == JTokenType.Integer)
@ -145,7 +152,7 @@ namespace H5MotaUpdate.ViewModels
jsonObject["images"] = new JArray(newImages); jsonObject["images"] = new JArray(newImages);
#endregion #endregion
#region #region
JArray mapMatrix = (JArray)jsonObject["map"]; JArray mapMatrix = (JArray)jsonObject["map"];
JArray zeroBgMatrix = StringUtils.CreateMatrix(width, height); JArray zeroBgMatrix = StringUtils.CreateMatrix(width, height);
for (int i = 0; i < mapMatrix.Count; i++) for (int i = 0; i < mapMatrix.Count; i++)

View File

@ -89,11 +89,37 @@ namespace H5MotaUpdate.ViewModels
{ {
string key = prop.Name; string key = prop.Name;
JObject perData = (JObject)prop.Value; JObject perData = (JObject)prop.Value;
if (perData["cls"].ToString() == "keys")
if (perData["cls"]?.ToString() == "keys")
{ {
perData["cls"] = "tools"; perData["cls"] = "tools";
perData["hideInToolbox"] = true; perData["hideInToolbox"] = true;
} }
if (perData["cls"]?.ToString() == "equips")
{
JObject equipValue = (JObject)perData["equip"];
if (equipValue != null)
{
JObject valueObj = new JObject();
// 装备属性的名字
string[] keysToMove = { "atk", "def", "mdef", "hp" };
foreach (string keyToMove in keysToMove)
{
if (equipValue.ContainsKey(keyToMove))
{
JToken val = equipValue[keyToMove];
valueObj[keyToMove] = val;
equipValue.Remove(keyToMove);
}
}
equipValue["value"] = valueObj;
perData["equip"] = equipValue;
}
}
} }
if (newItemDatas.ContainsKey("snow")) if (newItemDatas.ContainsKey("snow"))
{ {

View File

@ -0,0 +1,50 @@
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);
}
}
}
}
}

View File

@ -50,7 +50,7 @@ namespace H5MotaUpdate.ViewModels
// 获取匹配的内容,去掉 ${ 和 } // 获取匹配的内容,去掉 ${ 和 }
string content = match.Groups[1].Value; string content = match.Groups[1].Value;
// 在匹配的内容中替换 oldWord 为 newWord // 在匹配的内容中替换 oldWord 为 newWord
string modifiedContent = content.Replace(oldWord, newWord); string modifiedContent = "(" + content.Replace(oldWord, newWord) + ")";
// 返回替换后的完整匹配字符串,包含 ${ 和 } // 返回替换后的完整匹配字符串,包含 ${ 和 }
return "${" + modifiedContent + "}"; return "${" + modifiedContent + "}";
}); });