Browse Source

0903提交

pull/191/head
yjm484 4 months ago
parent
commit
1c5b8524b5
  1. 5
      ColorlessWorld-2024-4-2/.vscode/extensions.json
  2. 10
      ColorlessWorld-2024-4-2/.vscode/launch.json
  3. 60
      ColorlessWorld-2024-4-2/.vscode/settings.json
  4. 351
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs
  5. 366
      ColorlessWorld-2024-4-2/Assets/Scripts/Weapon/WeaponManager.cs
  6. BIN
      ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache

5
ColorlessWorld-2024-4-2/.vscode/extensions.json

@ -0,0 +1,5 @@
{
"recommendations": [
"visualstudiotoolsforunity.vstuc"
]
}

10
ColorlessWorld-2024-4-2/.vscode/launch.json

@ -0,0 +1,10 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Unity",
"type": "vstuc",
"request": "attach"
}
]
}

60
ColorlessWorld-2024-4-2/.vscode/settings.json

@ -0,0 +1,60 @@
{
"files.exclude": {
"**/.DS_Store": true,
"**/.git": true,
"**/.vs": true,
"**/.gitmodules": true,
"**/.vsconfig": true,
"**/*.booproj": true,
"**/*.pidb": true,
"**/*.suo": true,
"**/*.user": true,
"**/*.userprefs": true,
"**/*.unityproj": true,
"**/*.dll": true,
"**/*.exe": true,
"**/*.pdf": true,
"**/*.mid": true,
"**/*.midi": true,
"**/*.wav": true,
"**/*.gif": true,
"**/*.ico": true,
"**/*.jpg": true,
"**/*.jpeg": true,
"**/*.png": true,
"**/*.psd": true,
"**/*.tga": true,
"**/*.tif": true,
"**/*.tiff": true,
"**/*.3ds": true,
"**/*.3DS": true,
"**/*.fbx": true,
"**/*.FBX": true,
"**/*.lxo": true,
"**/*.LXO": true,
"**/*.ma": true,
"**/*.MA": true,
"**/*.obj": true,
"**/*.OBJ": true,
"**/*.asset": true,
"**/*.cubemap": true,
"**/*.flare": true,
"**/*.mat": true,
"**/*.meta": true,
"**/*.prefab": true,
"**/*.unity": true,
"build/": true,
"Build/": true,
"Library/": true,
"library/": true,
"obj/": true,
"Obj/": true,
"Logs/": true,
"logs/": true,
"ProjectSettings/": true,
"UserSettings/": true,
"temp/": true,
"Temp/": true
},
"dotnet.defaultSolution": "ColorlessWorld-2024-4-2.sln"
}

351
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs

@ -154,7 +154,7 @@ public static class Name
if ((cardEntity.tempIsDisposable||cardOriginalData
.IsDisposable)&&cardOriginalData.CardType!=Name.CardType.ability)
{
sb.Append(",消耗");
sb.Append(",消耗");
}
/*foreach (KeyValuePair<string, Tuple<string, string>> kvp in cardOriginalData.conditionAndFunctionVal)
{
@ -233,298 +233,298 @@ public static class Name
case CardFunction.cardDamage:
if(Usermanager.Instance!=null )
{
sb.Append("<link=\"" + kvp.Key + "\">造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害</link>");
sb.Append("<link=\"" + kvp.Key + "\">造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害</link>");
}
else
{
sb.Append("<link=\"" + kvp.Key + "\">造成" + int.Parse(kvp.Value) + "点伤害</link>");
sb.Append("<link=\"" + kvp.Key + "\">造成" + int.Parse(kvp.Value) + "点伤害</link>");
}
break;
case CardFunction.cardShield:
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点护盾</link>");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点护盾</link>");
break;
case CardFunction.posion:
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层中毒</link>");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层中毒</link>");
break;
case CardFunction.fireSeed:
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层火种</link>");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层火种</link>");
break;
case CardFunction.vulnerable:
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层易伤</link>");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层易伤</link>");
break;
case CardFunction.weak:
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层虚弱</link>");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层虚弱</link>");
break;
case CardFunction.coma:
sb.Append("施加" + kvp.Value + "层昏迷");
sb.Append("施加" + kvp.Value + "层昏迷");
break;
case CardFunction.disarm:
sb.Append("施加" + kvp.Value + "层缴械");
sb.Append("施加" + kvp.Value + "层缴械");
break;
case CardFunction.sleep:
sb.Append("施加" + kvp.Value + "层睡眠");
sb.Append("施加" + kvp.Value + "层睡眠");
break;
case CardFunction.bleed:
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层流血</link>");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层流血</link>");
break;
case CardFunction.thorn:
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层荆棘</link>");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层荆棘</link>");
break;
case CardFunction.ember:
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层狂热</link>");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层狂热</link>");
break;
case CardFunction.upSpeed:
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层加速</link>");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层加速</link>");
break;
case CardFunction.calm:
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层冷静</link>");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "层冷静</link>");
break;
case CardFunction.tempCastRange:
sb.Append("<link=\"" + kvp.Key + "\">卡牌释放距离增加" + kvp.Value + "</link>");
sb.Append("<link=\"" + kvp.Key + "\">卡牌释放距离增加" + kvp.Value + "</link>");
break;
case CardFunction.downSpeed:
sb.Append("获得" + kvp.Value + "层减速");
sb.Append("获得" + kvp.Value + "层减速");
break;
case CardFunction.agile:
sb.Append("获得" + kvp.Value + "层敏捷");
sb.Append("获得" + kvp.Value + "层敏捷");
break;
case CardFunction.immunity:
sb.Append("获得" + kvp.Value + "层魔抗");
sb.Append("获得" + kvp.Value + "层魔抗");
break;
case CardFunction.recoverHp:
sb.Append("<link=\"" + kvp.Key + "\">恢复" + kvp.Value + "点血量</link>");
sb.Append("<link=\"" + kvp.Key + "\">恢复" + kvp.Value + "点血量</link>");
break;
case CardFunction.extraDrawCardsNum:
sb.Append("下回合多抽" + kvp.Value + "张牌");
sb.Append("下回合多抽" + kvp.Value + "张牌");
break;
case CardFunction.teleport:
sb.Append("瞬移到目标格子");
sb.Append("瞬移到目标格子");
break;
case CardFunction.clearAllAbnormalConditons:
sb.Append("清除所有异常状态");
sb.Append("清除所有异常状态");
break;
case CardFunction.firm:
sb.Append("护盾不会消失");
sb.Append("护盾不会消失");
break;
case CardFunction.costRestore:
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点能量</link>");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点能量</link>");
break;
case CardFunction.drawCard:
sb.Append("<link=\"" + kvp.Key + "\">抽" + kvp.Value + "张牌</link>");
sb.Append("<link=\"" + kvp.Key + "\">抽" + kvp.Value + "张牌</link>");
break;
case CardFunction.discard:
sb.Append("弃" + kvp.Value + "张牌");
sb.Append("弃" + kvp.Value + "张牌");
break;
case CardFunction.nodeDiffDamage:
sb.Append("造成场地差伤害");
sb.Append("造成场地差伤害");
break;
case CardFunction.dyeing:
sb.Append("染色");
sb.Append("染色");
break;
case CardFunction.consumePlayerNodesForHealth:
sb.Append("消耗范围内的友方格子,恢复消耗数量的血量");
sb.Append("消耗范围内的友方格子,恢复消耗数量的血量");
break;
case CardFunction.costStep:
sb.Append("消耗" + kvp.Value + "点移动力");
sb.Append("消耗" + kvp.Value + "点移动力");
break;
case CardFunction.nextTurnExtraOneCost:
sb.Append("下回合额外回复一点能量");
sb.Append("下回合额外回复一点能量");
break;
case CardFunction.fireShield:
sb.Append("获得" + kvp.Value + "层火盾");
sb.Append("获得" + kvp.Value + "层火盾");
break;
case CardFunction.banStep:
sb.Append("施加" + kvp.Value + "层缠绕");
sb.Append("施加" + kvp.Value + "层缠绕");
break;
case CardFunction.step:
if (int.Parse(kvp.Value) > 0)
{
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点移动力</link>");
sb.Append("<link=\"" + kvp.Key + "\">获得" + kvp.Value + "点移动力</link>");
}
else
{
sb.Append("<link=\"" + kvp.Key + "\">失去" + -int.Parse(kvp.Value) + "点移动力</link>");
sb.Append("<link=\"" + kvp.Key + "\">失去" + -int.Parse(kvp.Value) + "点移动力</link>");
}
break;
case CardFunction.dyeingAround:
sb.Append("对目标周围染色");
sb.Append("对目标周围染色");
break;
case CardFunction.nextCardCostHp:
sb.Append("使下一张牌消耗改为血量");
sb.Append("使下一张牌消耗改为血量");
break;
case CardFunction.nextCardCostMinusOne:
sb.Append("使下一张牌消耗-1");
sb.Append("使下一张牌消耗-1");
break;
case CardFunction.cantUserEffectCaed:
sb.Append("本回合无法释放效果牌");
sb.Append("本回合无法释放效果牌");
break;
case CardFunction.dyeingCardCostMinusOne:
sb.Append("手牌涂色牌费用-1");
sb.Append("手牌涂色牌费用-1");
break;
case CardFunction.nextDyeingCardRangeAddTwo:
sb.Append("下张涂色牌施法距离+2");
sb.Append("下张涂色牌施法距离+2");
break;
case CardFunction.nextEffectCardDoubleSettle:
sb.Append("下一张效果牌结算两次");
sb.Append("下一张效果牌结算两次");
break;
case CardFunction.deathMark:
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层死亡印记</link>");
sb.Append("<link=\"" + kvp.Key + "\">施加" + kvp.Value + "层死亡印记</link>");
break;
case CardFunction.teleportAround:
sb.Append("玩家出现在周围随机1格");
sb.Append("玩家出现在周围随机1格");
break;
case CardFunction.infCastRange:
sb.Append("无限施法距离");
sb.Append("无限施法距离");
break;
case CardFunction.drawEffectCard:
sb.Append("抽" + kvp.Value + "张效果牌");
sb.Append("抽" + kvp.Value + "张效果牌");
break;
case CardFunction.doublebleedDamage:
sb.Append("使血伤翻倍");
sb.Append("使血伤翻倍");
break;
case CardFunction.drawAndCopyCard:
sb.Append("抽一张牌,获得这张牌的复制");
sb.Append("抽一张牌,获得这张牌的复制");
break;
case CardFunction.nextDyeingCardCostZero:
sb.Append("下张涂色牌消耗为0");
sb.Append("下张涂色牌消耗为0");
break;
case CardFunction.bleed4TurnCost:
sb.Append("回合内触发4次流血,获得1点能量");
sb.Append("回合内触发4次流血,获得1点能量");
break;
case CardFunction.bleed3TurnCost:
sb.Append("回合内触发3次流血,获得1点能量");
sb.Append("回合内触发3次流血,获得1点能量");
break;
case CardFunction.bleedHeal:
sb.Append("目标单位的下次流血伤害会治疗玩家");
sb.Append("目标单位的下次流血伤害会治疗玩家");
break;
case CardFunction.turnRedNodesToBleed:
sb.Append("消耗玩家2范围颜色,每消耗1红对1范围内所有敌人施加1流血");
sb.Append("消耗玩家2范围颜色,每消耗1红对1范围内所有敌人施加1流血");
break;
case CardFunction.turnRedNodesToBleedInTwoCirCle:
sb.Append("消耗玩家2范围颜色,每消耗1红对2范围内所有敌人施加1流血");
sb.Append("消耗玩家2范围颜色,每消耗1红对2范围内所有敌人施加1流血");
break;
case CardFunction.halfHpShield:
sb.Append("获得生命值上限一半的护盾");
sb.Append("获得生命值上限一半的护盾");
break;
case CardFunction.cantShield:
sb.Append("下" + kvp.Value + "回合无法获得护盾");
sb.Append("下" + kvp.Value + "回合无法获得护盾");
break;
case CardFunction.settleAllBleed:
sb.Append("结算单位全部流血层数");
sb.Append("结算单位全部流血层数");
break;
case CardFunction.settleHalfBleed:
sb.Append("结算单位一半流血层数");
sb.Append("结算单位一半流血层数");
break;
case CardFunction.doubleBleed:
sb.Append("使目标流血层数翻倍");
sb.Append("使目标流血层数翻倍");
break;
case CardFunction.tripleBleed:
sb.Append("使目标流血层数翻3倍");
sb.Append("使目标流血层数翻3倍");
break;
case CardFunction.lostHp:
sb.Append("失去" + kvp.Value + "点生命");
sb.Append("失去" + kvp.Value + "点生命");
break;
case CardFunction.ifBleedThenShield:
sb.Append("若目标身上有流血,获得" + kvp.Value + "点护盾");
sb.Append("若目标身上有流血,获得" + kvp.Value + "点护盾");
break;
case CardFunction.turnHalfYellowNodesToShield:
sb.Append("获得黄对应数量的护盾,留下一半黄色");
sb.Append("获得黄对应数量的护盾,留下一半黄色");
break;
case CardFunction.turnYellowNodesToShield:
sb.Append("消耗所有黄色,获得对应数量的护盾");
sb.Append("消耗所有黄色,获得对应数量的护盾");
break;
case CardFunction.turn3RedNodesToEmber:
sb.Append("消耗玩家周围2范围地块,每消耗3红获得1层狂热");
sb.Append("消耗玩家周围2范围地块,每消耗3红获得1层狂热");
break;
case CardFunction.turn2RedNodesToEmber:
sb.Append("消耗玩家周围2范围地块,每消耗2红获得1层狂热");
sb.Append("消耗玩家周围2范围地块,每消耗2红获得1层狂热");
break;
case CardFunction.bleedDamage:
sb.Append("<link=\"" + kvp.Key + "\">增加" + kvp.Value + "层血伤</link>");
sb.Append("<link=\"" + kvp.Key + "\">增加" + kvp.Value + "层血伤</link>");
break;
case CardFunction.drawDyeingCard:
sb.Append("抽" + kvp.Value + "张涂色牌");
sb.Append("抽" + kvp.Value + "张涂色牌");
break;
case CardFunction.bleedForRedNode:
sb.Append("对红色地块造成" + kvp.Value + "层流血");
sb.Append("对红色地块造成" + kvp.Value + "层流血");
break;
case CardFunction.shieldToDamage:
sb.Append("对目标造成护盾值的伤害");
sb.Append("对目标造成护盾值的伤害");
break;
case CardFunction.damageForRedNode:
//sb.Append("对红色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害");
//sb.Append("对红色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害");
if (Usermanager.Instance != null)
{
sb.Append("对红色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害");
sb.Append("对红色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害");
}
else
{
sb.Append("对红色地块造成" + kvp.Value + "点伤害");
sb.Append("对红色地块造成" + kvp.Value + "点伤害");
}
break;
case CardFunction.damageForBlueNode:
if (Usermanager.Instance != null)
{
sb.Append("对蓝色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害");
sb.Append("对蓝色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)) + "点伤害");
}
else
{
sb.Append("对蓝色地块造成" + kvp.Value + "点伤害");
sb.Append("对蓝色地块造成" + kvp.Value + "点伤害");
}
break;
case CardFunction.damagexyForBlueNode:
string[] valuesA = kvp.Value.Split("&");
if (Usermanager.Instance != null)
{
sb.Append("对蓝色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(valuesA[0])) + "点伤害" + valuesA[1] + "次");
sb.Append("对蓝色地块造成" + Usermanager.Instance.DamageCalculation(int.Parse(valuesA[0])) + "点伤害" + valuesA[1] + "次");
}
else
{
sb.Append("对蓝色地块造成" + int.Parse(valuesA[0]) + "点伤害" + valuesA[1] + "次");
sb.Append("对蓝色地块造成" + int.Parse(valuesA[0]) + "点伤害" + valuesA[1] + "次");
}
break;
case CardFunction.nextRoundCostMinusOne:
sb.Append("下回合能量回复-1");
sb.Append("下回合能量回复-1");
break;
case CardFunction.damagexy:
string[] values = kvp.Value.Split("&");
if (Usermanager.Instance != null)
{
sb.Append("<link=\"" + kvp.Key + "\">造成" + Usermanager.Instance.DamageCalculation(int.Parse(values[0])) + "点伤害" + values[1] + "次</link>");
sb.Append("<link=\"" + kvp.Key + "\">造成" + Usermanager.Instance.DamageCalculation(int.Parse(values[0])) + "点伤害" + values[1] + "次</link>");
}
else
{ sb.Append("<link=\"" + kvp.Key + "\">造成" + int.Parse(values[0]) + "点伤害" + values[1] + "次</link>"); }
{ sb.Append("<link=\"" + kvp.Key + "\">造成" + int.Parse(values[0]) + "点伤害" + values[1] + "次</link>"); }
break;
case CardFunction.repel:
sb.Append("击退" + kvp.Value + "格");
sb.Append("击退" + kvp.Value + "格");
break;
case CardFunction.repelRound:
sb.Append("击退范围1的单位" + kvp.Value + "格");
sb.Append("击退范围1的单位" + kvp.Value + "格");
break;
case CardFunction.reduceCost:
sb.Append("<link=\"" + kvp.Key + "\">费用-" + kvp.Value + "</link>");
sb.Append("<link=\"" + kvp.Key + "\">费用-" + kvp.Value + "</link>");
break;
case CardFunction.spreadColorToAround:
sb.Append("将目标地块的颜色扩散至周围");
sb.Append("将目标地块的颜色扩散至周围");
break;
case CardFunction.repelToEnd:
sb.Append("将目标击退至场地边缘");
sb.Append("将目标击退至场地边缘");
break;
case CardFunction.damageMulNodeKind:
sb.Append("场上每有一种颜色的地块,造成" + kvp.Value + "点伤害");
sb.Append("场上每有一种颜色的地块,造成" + kvp.Value + "点伤害");
break;
case CardFunction.bleedIfNot:
sb.Append("如果目标没有流血,施加" + kvp.Value + "层流血");
sb.Append("如果目标没有流血,施加" + kvp.Value + "层流血");
break;
case CardFunction.switchStepToCost:
sb.Append("本回合将剩余移动力转化为能量");
sb.Append("本回合将剩余移动力转化为能量");
break;
case CardFunction.teleportAndDamageAround:
sb.Append("传送到目标格子,对周围造成" + kvp.Value + "点伤害");
sb.Append("传送到目标格子,对周围造成" + kvp.Value + "点伤害");
break;
case CardFunction.damageIfMoved:
sb.Append("如果本回合移动过,造成" + kvp.Value + "点伤害");
sb.Append("如果本回合移动过,造成" + kvp.Value + "点伤害");
break;
case CardFunction.damageAndRestoreCostIfKill:
break;
@ -537,47 +537,47 @@ public static class Name
Match match = System.Text.RegularExpressions.Regex.Match(condition, Name.Regex.cardConditionPattern);
if (match.Success)
{
string firstPart = match.Groups[1].Value; // 第一部分(red)
string op = match.Groups[2].Value; // 运算符部分
string secondPart = match.Groups[3].Value; // 第二部分
string firstPart = match.Groups[1].Value; // 第一部分(red)
string op = match.Groups[2].Value; // 运算符部分
string secondPart = match.Groups[3].Value; // 第二部分
Debug.Log("分割"+firstPart);
Debug .Log ("分割" + secondPart);
Debug.Log("分割" + op);
Debug.Log("分割"+firstPart);
Debug .Log ("分割" + secondPart);
Debug.Log("分割" + op);
}
else
{
switch (condition)
{
case Name.WeaponNodeCondition.position:
sb.Append("在位置" + (int.Parse(conditionValue) + 1));
sb.Append("在位置" + (int.Parse(conditionValue) + 1));
break;
case Name.WeaponNodeCondition.positionUnused:
sb.Append("位置" + (int.Parse(conditionValue) + 1) + "的宝石没有激活");
sb.Append("位置" + (int.Parse(conditionValue) + 1) + "的宝石没有激活");
break;
case Name.WeaponNodeCondition.positionUsed:
sb.Append("位置" + (int.Parse(conditionValue) + 1) + "的宝石激活了");
sb.Append("位置" + (int.Parse(conditionValue) + 1) + "的宝石激活了");
break;
case Name.WeaponNodeCondition.diffSettle:
sb.Append("与上次成功激活时位置不同");
sb.Append("与上次成功激活时位置不同");
break;
case Name.WeaponNodeCondition.usedCard:
sb.Append("至少有" + int.Parse(conditionValue) + "个激活的宝石");
sb.Append("至少有" + int.Parse(conditionValue) + "个激活的宝石");
break;
case Name.WeaponNodeCondition.threeColorDiffMoreThan:
sb.Append("蓝红黄地块差值大于" + (int.Parse(conditionValue)));
sb.Append("蓝红黄地块差值大于" + (int.Parse(conditionValue)));
break;
case Name.WeaponNodeCondition.threeColorCountMoreThan:
sb.Append("蓝红黄地块数量大于" + (int.Parse(conditionValue)));
sb.Append("蓝红黄地块数量大于" + (int.Parse(conditionValue)));
break;
case Name.WeaponNodeCondition.threeColorCountEqual:
sb.Append("蓝红黄地块数量等于" + (int.Parse(conditionValue)));
sb.Append("蓝红黄地块数量等于" + (int.Parse(conditionValue)));
break;
case Name.WeaponNodeCondition.everyNumNodeConvert:
sb.Append("每转化"+ (int.Parse(conditionValue)) + "个地块");
sb.Append("每转化"+ (int.Parse(conditionValue)) + "个地块");
break;
case Name.WeaponNodeCondition.bombbomb:
sb.Append("每当有炸弹爆炸");
sb.Append("每当有炸弹爆炸");
break;
case Name.WeaponNodeCondition.node:
break;
@ -595,70 +595,70 @@ public static class Name
switch (result)
{
case Name.WeaponNodeFunction.addScore:
sb.Append("攻击力+" + int.Parse(resultValue));
sb.Append("攻击力+" + int.Parse(resultValue));
break;
case Name.WeaponNodeFunction.mulScore:
sb.Append("攻击力*" + (1+float.Parse(resultValue)));
sb.Append("攻击力*" + (1+float.Parse(resultValue)));
break;
case Name.WeaponNodeFunction.repetWeaponNode:
sb.Append("重复位置" + (int.Parse(resultValue) + 1) +"宝石的效果");
sb.Append("重复位置" + (int.Parse(resultValue) + 1) +"宝石的效果");
break;
case Name.WeaponNodeFunction.doubleWeaponNode:
sb.Append("位置" + (int.Parse(resultValue) + 1) + "宝石的效果翻倍");
sb.Append("位置" + (int.Parse(resultValue) + 1) + "宝石的效果翻倍");
break;
case Name.WeaponNodeFunction.redNodeCount:
sb.Append("红色地块的数量+" + int.Parse(resultValue));
sb.Append("红色地块的数量+" + int.Parse(resultValue));
break;
case Name.WeaponNodeFunction.blueNodeCount:
sb.Append("蓝色地块的数量+" + int.Parse(resultValue));
sb.Append("蓝色地块的数量+" + int.Parse(resultValue));
break;
case Name.WeaponNodeFunction.yellowNodeCount:
sb.Append("黄色地块的数量+" + int.Parse(resultValue));
sb.Append("黄色地块的数量+" + int.Parse(resultValue));
break;
case Name.WeaponNodeFunction.mostNodeCount:
sb.Append("数量最多的玩家地块数量+" + int.Parse(resultValue));
sb.Append("数量最多的玩家地块数量+" + int.Parse(resultValue));
break;
case Name.WeaponNodeFunction.leastNodeCount:
sb.Append("数量最少的玩家地块数量+" + int.Parse(resultValue));
sb.Append("数量最少的玩家地块数量+" + int.Parse(resultValue));
break;
case Name.WeaponNodeFunction.allNodeCount:
sb.Append("所有玩家的地块的数量+" + int.Parse(resultValue));
sb.Append("所有玩家的地块的数量+" + int.Parse(resultValue));
break;
case Name.WeaponNodeFunction.drawCard:
sb.Append("下回合多抽" + int.Parse(resultValue)+"张牌");
sb.Append("下回合多抽" + int.Parse(resultValue)+"张牌");
break;
case Name.WeaponNodeFunction.everyRedNodeAddScore:
sb.Append("每有一个红色地块增加" + int.Parse(resultValue) + "点攻击力");
sb.Append("每有一个红色地块增加" + int.Parse(resultValue) + "点攻击力");
break;
case Name.WeaponNodeFunction.everyYellowNodeAddScore:
sb.Append("每有一个黄色地块增加" + int.Parse(resultValue) + "点攻击力");
sb.Append("每有一个黄色地块增加" + int.Parse(resultValue) + "点攻击力");
break;
case Name.WeaponNodeFunction.everyBlueNodeAddScore:
sb.Append("每有一个蓝色地块增加" + int.Parse(resultValue) + "点攻击力");
sb.Append("每有一个蓝色地块增加" + int.Parse(resultValue) + "点攻击力");
break;
case Name.WeaponNodeFunction.everyBlackNodeAddScore:
sb.Append("每有一个黑色地块增加" + int.Parse(resultValue) + "点攻击力");
sb.Append("每有一个黑色地块增加" + int.Parse(resultValue) + "点攻击力");
break;
case Name.WeaponNodeFunction.everyHolyNodeAddScore:
sb.Append("每有一个圣光地块增加" + int.Parse(resultValue) + "点攻击力");
sb.Append("每有一个圣光地块增加" + int.Parse(resultValue) + "点攻击力");
break;
case Name.WeaponNodeFunction.everyBombAddScore:
sb.Append("每有一个炸弹增加" + int.Parse(resultValue) + "点攻击力");
sb.Append("每有一个炸弹增加" + int.Parse(resultValue) + "点攻击力");
break;
case Name.WeaponNodeFunction.everyBelieverAddScore:
sb.Append("每有一个信徒增加" + int.Parse(resultValue) + "点攻击力");
sb.Append("每有一个信徒增加" + int.Parse(resultValue) + "点攻击力");
break;
case Name.WeaponNodeFunction.threeColorRedistribution:
sb.Append("回合结束蓝红黄地块等比例重新分配");
sb.Append("回合结束蓝红黄地块等比例重新分配");
break;
case Name.NodeItem.Volcano:
sb.Append("回合结束在场上增加" + int.Parse(resultValue) + "个火山");
sb.Append("回合结束在场上增加" + int.Parse(resultValue) + "个火山");
break;
case Name.WeaponNodeFunction.bomb:
sb.Append("在场上生成一个炸弹");
sb.Append("在场上生成一个炸弹");
break;
case Name.NodeItem.AcidRain:
sb.Append("回合结束在场上增加" + int.Parse(resultValue) + "个酸雨");
sb.Append("回合结束在场上增加" + int.Parse(resultValue) + "个酸雨");
break;
}
return sb.ToString();
@ -988,53 +988,53 @@ public static class Name
public const string pattern1xxx = @"^1\d{3}$";
//2***
public const string pattern2xxx = @"^2\d{3}$";
//卡牌条件(red>5)
//卡牌条件(red>5)
public const string cardConditionPattern = @"(\w+)([><=+])(\d+)";
//在位置n
//在位置n
public const string position = @"^position\d+$";
//某张卡牌未激活
//某张卡牌未激活
public const string cardUnused = @"^.*CardUnused$";
//某两个颜色>n
//某两个颜色>n
public const string twoColorCondition = @"^[a-zA-Z]+_[a-zA-Z]+(<=|>=|!=|==|[<>=])-?\d+(?:\.\d+)?$";
//与上次结算时位置不同
//与上次结算时位置不同
public const string diffSettle = "diffSettle";
//有两个颜色>n
//有两个颜色>n
public const string anyTwoColorCondition = @"^anyTwoColor\s*([<>=])\s*(-?\d+(?:\.\d+)?)$";
//激活的牌>n
//激活的牌>n
public const string usedCard = @"^usedCard\s*([<>=])\s*(-?\d+(?:\.\d+)?)$";
//具体的地块形状
//具体的地块形状
public const string node = "node";
}
public static class WeaponNodeCondition
{
//卡牌条件(red>5)
//卡牌条件(red>5)
public const string cardConditionPattern = @"(\w+)([><=+])(\d+)";
//在位置n
//在位置n
public const string position = "position";
//某张宝石未激活
//某张宝石未激活
public const string positionUnused = "positionUnused";
//某张宝石激活
//某张宝石激活
public const string positionUsed = "positionUsed";
//某两个颜色>n
//某两个颜色>n
public const string twoColorCondition = @"^[a-zA-Z]+_[a-zA-Z]+(<=|>=|!=|==|[<>=])-?\d+(?:\.\d+)?$";
//与上次结算时位置不同
//与上次结算时位置不同
public const string diffSettle = "diffSettle";
//有两个颜色>n
//有两个颜色>n
public const string anyTwoColorCondition = "anyTwoColor";
//激活的牌>n
//激活的牌>n
public const string usedCard = "usedCard";
//具体的地块形状
//具体的地块形状
public const string node = "node";
//蓝红黄地块差值大于
//蓝红黄地块差值大于
public const string threeColorDiffMoreThan = "threeColorDiffMoreThan";
//蓝红黄地块数量大于
//蓝红黄地块数量大于
public const string threeColorCountMoreThan = "threeColorCountMoreThan";
//蓝红黄地块数量等于
//蓝红黄地块数量等于
public const string threeColorCountEqual = "threeColorCountEqual";
//每转化num的地块
//每转化num的地块
public const string everyNumNodeConvert = "everyNumNodeConvert";
//炸弹爆炸
//炸弹爆炸
public const string bombbomb = "bombbomb";
public static readonly HashSet<string> PlayerConditionSet= new HashSet<string> { cardConditionPattern,position, positionUnused, positionUsed, diffSettle
@ -1115,49 +1115,49 @@ public static class Name
}
public static class WeaponNodeFunction
{
//加分
//加分
public const string addScore = "addScore";
//本回合永久加分
//本回合永久加分
public const string addScoreThisTurn = "addScoreThisTurn";
//乘积
//乘积
public const string mulScore = "mulScore";
//重复某个宝石的效果
//重复某个宝石的效果
public const string repetWeaponNode = "repetWeaponNode";
//某个宝石的效果翻倍
//某个宝石的效果翻倍
public const string doubleWeaponNode = "doubleWeaponNode";
//红色+n
//红色+n
public const string redNodeCount = "redNodeCount";
//红色+n
//红色+n
public const string blueNodeCount = "blueNodeCount";
//黄色+n
//黄色+n
public const string yellowNodeCount = "yellowNodeCount";
//最多色+n
//最多色+n
public const string mostNodeCount = "mostNodeCount";
//最少色+n
//最少色+n
public const string leastNodeCount = "leastNodeCount";
//所有色+n
//所有色+n
public const string allNodeCount = "allNodeCount";
//下一回合多抽n张涂色牌
//下一回合多抽n张涂色牌
public const string drawCard = "drawCard";
//某个宝石无视条件
//某个宝石无视条件
public const string isIgnoreCondition = "isIgnoreCondition";
//每有红色+n
//每有红色+n
public const string everyRedNodeAddScore = "everyRedNodeAddScore";
//每有黄色+n
//每有黄色+n
public const string everyYellowNodeAddScore = "everyYellowNodeAddScore";
//每有蓝色+n
//每有蓝色+n
public const string everyBlueNodeAddScore = "everyBlueNodeAddScore";
//每有黑色+n
//每有黑色+n
public const string everyBlackNodeAddScore = "everyBlackNodeAddScore";
//每有圣光+n
//每有圣光+n
public const string everyHolyNodeAddScore = "everyHolyNodeAddScore";
//每有炸弹+n
//每有炸弹+n
public const string everyBombAddScore = "everyBombAddScore";
//每有信徒+n
//每有信徒+n
public const string everyBelieverAddScore = "everyBelieverAddScore";
//蓝绿黄地块数量重新分配
//蓝绿黄地块数量重新分配
public const string threeColorRedistribution = "threeColorRedistribution";
//生成炸弹
//生成炸弹
public const string bomb = "bomb";
public static readonly HashSet<string> PlayerResultSet = new HashSet<string> { addScore,mulScore, repetWeaponNode, redNodeCount, blueNodeCount
@ -1183,11 +1183,12 @@ public static class Name
public const string Elementary = "Elementary";
public const string Intermediate = "Intermediate";
public const string Advanced = "Advanced";
public static readonly HashSet<string> WeaponNodeLevelSet = new HashSet<string> { Basic,Elementary,Intermediate,Advanced};
}
public static class DomainFunction
{
//加分
//加分
public const string score = "score";
}
public static class CardFunctionString

366
ColorlessWorld-2024-4-2/Assets/Scripts/Weapon/WeaponManager.cs

@ -7,20 +7,20 @@ using UnityEngine;
public class WeaponManager : Singleton<WeaponManager>
{
[Header("控制是否进行武器结算")]
[Header("�����Ƿ������������")]
public bool isWeaponSettle;
[Header ("武器数据组件")]
//玩家武器节点
[Header("�����������")]
//��������ڵ�
/*public List<WeaponNode> playerWeaponNodeList = new List<WeaponNode>();
//怪物武器节点
//���������ڵ�
public List<WeaponNode> enemyWeaponNodeList = new List<WeaponNode>();*/
public Weapon playerUsingWeapon;
public EnemyWeapon enemyUsingWeapon;
public bool isMapChange=true;
public bool isMapChange = true;
public bool isWeaponNodeChange = true;
@ -38,7 +38,7 @@ public class WeaponManager : Singleton<WeaponManager>
private void Update()
{
if (isWeaponSettle == true )
if (isWeaponSettle == true)
{
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
@ -48,18 +48,18 @@ public class WeaponManager : Singleton<WeaponManager>
stopwatch.Stop();
enemyUsingWeapon.SettleEnemyWeapon(enemyWeaponNodeList);
isMapChange = false;
isWeaponNodeChange =false;
isWeaponNodeChange = false;
}
if (stopwatch.ElapsedMilliseconds>100)
if (stopwatch.ElapsedMilliseconds > 100)
{
Debug.LogWarning($"性能警告!耗时 {stopwatch.ElapsedMilliseconds}ms");
Debug.LogWarning($"���ܾ��棡��ʱ {stopwatch.ElapsedMilliseconds}ms");
}
if(stopwatch.ElapsedMilliseconds>10)
if (stopwatch.ElapsedMilliseconds > 10)
{
Debug.LogWarning($"性能警告!耗时 {stopwatch.ElapsedMilliseconds}ms");
Debug.LogWarning($"���ܾ��棡��ʱ {stopwatch.ElapsedMilliseconds}ms");
}
@ -114,24 +114,24 @@ public class WeaponManager : Singleton<WeaponManager>
FadeMode();
}
}
public void ShowMode()//展示隐藏的功能
public void ShowMode()//չʾ���صĹ���
{
isWeaponSettle= true;
isWeaponSettle = true;
enemyWeaponNodeList.gameObject.SetActive (true);
enemyWeaponNodeList.gameObject.SetActive(true);
playerUsingWeapon = new Weapon();
enemyUsingWeapon = new EnemyWeapon();
}
public void FadeMode()//非战斗界面隐藏功能
public void FadeMode()//��ս���������ع���
{
isWeaponSettle = false;
enemyWeaponNodeList .gameObject .SetActive(false);
enemyWeaponNodeList.gameObject.SetActive(false);
foreach (Transform transform in playerWeaponNodeList)
{
if(transform .childCount >0)
if (transform.childCount > 0)
{
WeaponNode weaponNode = transform.GetChild(0).GetComponent<WeaponNode>();
if (weaponNode.enableVFX != null)
@ -155,15 +155,15 @@ public class WeaponManager : Singleton<WeaponManager>
{
GameObject gem = Instantiate(Resources.Load<GameObject>(Name.WeaponNode.PrefabPath + Name.WeaponNode.PrefabName));
string condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerConditionSet, 1).ElementAt(0);
string conditionValue="";
string[] nodesMark=new string[4];
string conditionValue = "";
string[] nodesMark = new string[4];
string[] nodesColor = new string[4];
string result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerResultSet, 1).ElementAt(0);
string resultValue="";
string resultValue = "";
switch (condition)
{
case Name.WeaponNodeCondition.position:
conditionValue= MathTool.GetRandomElements(new HashSet<string> {"0","1","2","3","4" }, 1).ElementAt(0);
conditionValue = MathTool.GetRandomElements(new HashSet<string> { "0", "1", "2", "3", "4" }, 1).ElementAt(0);
break;
case Name.WeaponNodeCondition.positionUnused:
conditionValue = MathTool.GetRandomElements(new HashSet<string> { "0", "1", "2", "3", "4" }, 1).ElementAt(0);
@ -172,7 +172,7 @@ public class WeaponManager : Singleton<WeaponManager>
conditionValue = MathTool.GetRandomElements(new HashSet<string> { "0", "1", "2", "3", "4" }, 1).ElementAt(0);
break;
case Name.WeaponNodeCondition.diffSettle:
conditionValue=Name.none;
conditionValue = Name.none;
break;
case Name.WeaponNodeCondition.usedCard:
conditionValue = MathTool.GetRandomElements(new HashSet<string> { "1", "2", "3", "4", "5" }, 1).ElementAt(0);
@ -190,7 +190,7 @@ public class WeaponManager : Singleton<WeaponManager>
conditionValue = Name.none;
HashSet<string> nodesA = MathTool.GetRandomElements(new HashSet<string> { "1_0", "-1_0", "0_1", "0_-1", "-1_1", "-1_-1" }, 3);
nodesA.Add("0_0");
nodesMark=nodesA.ToArray();
nodesMark = nodesA.ToArray();
nodesColor = new string[4] { MathTool.GetRandomElements(new HashSet<string> { Name.Color.Red, Name.Color.Blue, Name.Color.Yellow }, 1).ElementAt(0)
,MathTool.GetRandomElements(new HashSet<string> { Name.Color.Red, Name.Color.Blue, Name.Color.Yellow }, 1).ElementAt(0)
,MathTool.GetRandomElements(new HashSet<string> { Name.Color.Red, Name.Color.Blue, Name.Color.Yellow }, 1).ElementAt(0)
@ -202,7 +202,7 @@ public class WeaponManager : Singleton<WeaponManager>
sb.Append(MathTool.GetRandomElements(new HashSet<string> { Name.Color.Red, Name.Color.Blue, Name.Color.Yellow }, 1).ElementAt(0))
.Append(MathTool.GetRandomElements(new HashSet<string> { "<", ">" }, 1).ElementAt(0))
.Append(MathTool.GetRandomElements(new HashSet<string> { "5", "6", "7", "8", "9" }, 1).ElementAt(0));
condition =sb.ToString();
condition = sb.ToString();
break;
}
switch (result)
@ -211,7 +211,7 @@ public class WeaponManager : Singleton<WeaponManager>
resultValue = MathTool.GetRandomElements(MathTool.GenerateIntegerSet(7, 12), 1).ElementAt(0);
break;
case Name.WeaponNodeFunction.mulScore:
resultValue = MathTool.GetRandomElements(new HashSet<string> { "1", "2"}, 1).ElementAt(0);
resultValue = MathTool.GetRandomElements(new HashSet<string> { "1", "2" }, 1).ElementAt(0);
break;
case Name.WeaponNodeFunction.repetWeaponNode:
resultValue = MathTool.GetRandomElements(new HashSet<string> { "0", "1", "2", "3", "4" }, 1).ElementAt(0);
@ -250,7 +250,7 @@ public class WeaponManager : Singleton<WeaponManager>
resultValue = MathTool.GetRandomElements(MathTool.GenerateIntegerSet(1, 2), 1).ElementAt(0);
break;
}
WeaponNode weaponNode=gem.GetComponent<WeaponNode>();
WeaponNode weaponNode = gem.GetComponent<WeaponNode>();
weaponNode.result = result;
weaponNode.resultValue = resultValue;
weaponNode.condition = condition;
@ -267,7 +267,7 @@ public class WeaponManager : Singleton<WeaponManager>
switch (level)
{
case Name.WeaponNodeLevel.Basic:
condition= MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerBasicConditionSet, 1).ElementAt(0);
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerBasicConditionSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Elementary:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerElementaryConditionSet, 1).ElementAt(0);
@ -281,7 +281,7 @@ public class WeaponManager : Singleton<WeaponManager>
}
string conditionValue = "";
List<string> nodesMark =new List<string>();
List<string> nodesMark = new List<string>();
List<string> nodesColor = new List<string>();
string result = "";
switch (level)
@ -313,8 +313,294 @@ public class WeaponManager : Singleton<WeaponManager>
return gem;
}
public GameObject getRandomWeaponNodeForPlayerWithLevelDiff(int levelDiff)
{
GameObject gem = Instantiate(Resources.Load<GameObject>(Name.WeaponNode.PrefabPath + Name.WeaponNode.PrefabName));
string condition = "";
HashSet<string> resultSet = new HashSet<string>();
HashSet<string> conditiontSet = new HashSet<string>();
string conditionLevel = "";
string resultLevel = "";
switch (levelDiff)
{
case -2:
case -1:
case 0:
conditionLevel = MathTool.GetRandomElements(Name.WeaponNodeLevel.WeaponNodeLevelSet, 1).ElementAt(0);
break;
case 1:
conditionLevel = MathTool.GetRandomElements(new HashSet<string> { Name.WeaponNodeLevel.Elementary, Name.WeaponNodeLevel.Basic, Name.WeaponNodeLevel.Intermediate }, 1).ElementAt(0);
break;
case 2:
conditionLevel = MathTool.GetRandomElements(new HashSet<string> { Name.WeaponNodeLevel.Elementary, Name.WeaponNodeLevel.Basic }, 1).ElementAt(0);
break;
case 3:
conditionLevel = Name.WeaponNodeLevel.Basic;
break;
}
switch (conditionLevel)
{
case Name.WeaponNodeLevel.Basic:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerBasicConditionSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Elementary:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerElementaryConditionSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Intermediate:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerIntermediateConditionSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Advanced:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerAdvancedConditionSet, 1).ElementAt(0);
break;
}
switch (conditionLevel)
{
case Name.WeaponNodeLevel.Basic:
switch (levelDiff)
{
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case 1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case 2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 3:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
case Name.WeaponNodeLevel.Elementary:
switch (levelDiff)
{
case -1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case 1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
case Name.WeaponNodeLevel.Intermediate:
switch (levelDiff)
{
case -2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case -1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
case Name.WeaponNodeLevel.Advanced:
switch (levelDiff)
{
case -3:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case -2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case -1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
}
string conditionValue = "";
List<string> nodesMark = new List<string>();
List<string> nodesColor = new List<string>();
string result = "";
switch (resultLevel)
{
case Name.WeaponNodeLevel.Basic:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Elementary:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Intermediate:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Advanced:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
string resultValue = "";
conditionValue = getConditionValueWithLevel(conditionLevel, condition, ref nodesMark, ref nodesMark);
resultValue = getResultValueWithLevel(resultLevel, result, condition, conditionValue);
WeaponNode weaponNode = gem.GetComponent<WeaponNode>();
weaponNode.result = result;
weaponNode.resultValue = resultValue;
weaponNode.condition = condition;
weaponNode.conditionValue = conditionValue;
weaponNode.nodesMark = nodesMark.ToArray();
weaponNode.nodesColor = nodesColor.ToArray();
return gem;
}
public GameObject getRandomWeaponNodeForPlayerWithLevelDiffAndConditionlevel(int levelDiff,string conditionLevel)
{
GameObject gem = Instantiate(Resources.Load<GameObject>(Name.WeaponNode.PrefabPath + Name.WeaponNode.PrefabName));
string condition = "";
HashSet<string> resultSet = new HashSet<string>();
HashSet<string> conditiontSet = new HashSet<string>();
string resultLevel = "";
switch (conditionLevel)
{
case Name.WeaponNodeLevel.Basic:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerBasicConditionSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Elementary:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerElementaryConditionSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Intermediate:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerIntermediateConditionSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Advanced:
condition = MathTool.GetRandomElements(Name.WeaponNodeCondition.PlayerAdvancedConditionSet, 1).ElementAt(0);
break;
}
switch (conditionLevel)
{
case Name.WeaponNodeLevel.Basic:
switch (levelDiff)
{
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case 1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case 2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 3:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
case Name.WeaponNodeLevel.Elementary:
switch (levelDiff)
{
case -1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case 1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
case Name.WeaponNodeLevel.Intermediate:
switch (levelDiff)
{
case -2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case -1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
case Name.WeaponNodeLevel.Advanced:
switch (levelDiff)
{
case -3:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case -2:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case -1:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case 0:
resultLevel = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
break;
}
string conditionValue = "";
List<string> nodesMark = new List<string>();
List<string> nodesColor = new List<string>();
string result = "";
switch (resultLevel)
{
case Name.WeaponNodeLevel.Basic:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerBasicResultSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Elementary:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerElementaryResultSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Intermediate:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerIntermediateResultSet, 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Advanced:
result = MathTool.GetRandomElements(Name.WeaponNodeFunction.PlayerAdvancedResultSet, 1).ElementAt(0);
break;
}
string resultValue = "";
conditionValue = getConditionValueWithLevel(conditionLevel, condition, ref nodesMark, ref nodesMark);
resultValue = getResultValueWithLevel(resultLevel, result, condition, conditionValue);
WeaponNode weaponNode = gem.GetComponent<WeaponNode>();
weaponNode.result = result;
weaponNode.resultValue = resultValue;
weaponNode.condition = condition;
weaponNode.conditionValue = conditionValue;
weaponNode.nodesMark = nodesMark.ToArray();
weaponNode.nodesColor = nodesColor.ToArray();
return gem;
}
public string getConditionValueWithLevel(string level,string condition,ref List<string> nodesMark, ref List<string> nodesColor)
public string getConditionValueWithLevel(string level, string condition, ref List<string> nodesMark, ref List<string> nodesColor)
{
string conditionValue = "";
switch (condition)
@ -356,7 +642,7 @@ public class WeaponManager : Singleton<WeaponManager>
switch (level)
{
case Name.WeaponNodeLevel.Basic:
conditionValue = MathTool.GetRandomElements(MathTool.GetTargetRange(3,5), 1).ElementAt(0);
conditionValue = MathTool.GetRandomElements(MathTool.GetTargetRange(3, 5), 1).ElementAt(0);
break;
case Name.WeaponNodeLevel.Elementary:
conditionValue = MathTool.GetRandomElements(MathTool.GetTargetRange(4, 6), 1).ElementAt(0);
@ -378,7 +664,7 @@ public class WeaponManager : Singleton<WeaponManager>
switch (level)
{
case Name.WeaponNodeLevel.Basic:
nodesA= MathTool.GetRandomElements(new HashSet<string> { "1_0", "-1_0", "0_1", "0_-1", "-1_1", "-1_-1" }, 2);
nodesA = MathTool.GetRandomElements(new HashSet<string> { "1_0", "-1_0", "0_1", "0_-1", "-1_1", "-1_-1" }, 2);
break;
case Name.WeaponNodeLevel.Elementary:
nodesA = MathTool.GetRandomElements(new HashSet<string> { "1_0", "-1_0", "0_1", "0_-1", "-1_1", "-1_-1" }, 3);
@ -425,7 +711,7 @@ public class WeaponManager : Singleton<WeaponManager>
return conditionValue;
}
public string getResultValueWithLevel(string level, string result,string condition,string conditionValue)
public string getResultValueWithLevel(string level, string result, string condition, string conditionValue)
{
string resultValue = "";
switch (result)
@ -550,8 +836,8 @@ public class WeaponManager : Singleton<WeaponManager>
}
break;
case Name.WeaponNodeFunction.isIgnoreCondition:
HashSet<string> targets= MathTool.GenerateIntegerSet(0, 4);
if(condition.Equals(Name.WeaponNodeCondition.positionUnused)|| condition.Equals(Name.WeaponNodeCondition.positionUsed))
HashSet<string> targets = MathTool.GenerateIntegerSet(0, 4);
if (condition.Equals(Name.WeaponNodeCondition.positionUnused) || condition.Equals(Name.WeaponNodeCondition.positionUsed))
{
targets.Remove(conditionValue);
}
@ -562,7 +848,7 @@ public class WeaponManager : Singleton<WeaponManager>
}
public void loadEnemyWeaponNode(int position,GameObject weaponNode)
public void loadEnemyWeaponNode(int position, GameObject weaponNode)
{
Transform weaponSlot = enemyWeaponNodeList.GetChild(position);
@ -579,24 +865,24 @@ public class WeaponManager : Singleton<WeaponManager>
public void ClearAllChildren(Transform parent)
{
// 创建临时列表存储子物体(避免在循环中修改集合)
// ������ʱ�б��洢�����壨������ѭ�����޸ļ��ϣ�
List<GameObject> children = new List<GameObject>();
// 收集所有子物体
// �ռ�����������
foreach (Transform child in parent)
{
children.Add(child.gameObject);
}
// 删除所有子物体
// ɾ������������
foreach (GameObject child in children)
{
// 根据环境选择销毁方式
// ���ݻ���ѡ�����ٷ�ʽ
if (Application.isPlaying)
{
Destroy(child);
}
else // 编辑器模式下
else // �༭��ģʽ��
{
DestroyImmediate(child);
}

BIN
ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache

Binary file not shown.
Loading…
Cancel
Save