Browse Source

Merge pull request '地块优势' (#47) from dev-0524-1014 into dev-0524

Reviewed-on: #47
pull/48/head
yjm484 1 year ago
parent
commit
7da6dd507b
  1. 1851
      ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Card_v04-Common.prefab
  2. 193
      ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Fun/ColorCondition.prefab
  3. 7
      ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Fun/ColorCondition.prefab.meta
  4. 4
      ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity
  5. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs
  6. 191
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs
  7. 6
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs
  8. 19
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs
  9. 17
      ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs
  10. 3
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs
  11. 1
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/ToolDontDestory.cs
  12. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs
  13. 48
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs
  14. 20
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnitySettleManager.cs
  15. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs
  16. 2
      ColorlessWorld-2024-4-2/Assets/data/card_data_3.csv

1851
ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Card_v04-Common.prefab

File diff suppressed because it is too large

193
ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Fun/ColorCondition.prefab

@ -0,0 +1,193 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &118861466677602614
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5693152359083493173}
- component: {fileID: 3354842780586540790}
- component: {fileID: 1881150853538922710}
m_Layer: 0
m_Name: NodeDescription
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5693152359083493173
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 118861466677602614}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4684832071956907072}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 25.1, y: -11}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3354842780586540790
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 118861466677602614}
m_CullTransparentMesh: 1
--- !u!114 &1881150853538922710
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 118861466677602614}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: '>1'
--- !u!1 &2587728429135203411
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3172675783022697895}
- component: {fileID: 8131962250710205498}
- component: {fileID: 2468721337839932803}
m_Layer: 0
m_Name: Node
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3172675783022697895
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2587728429135203411}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4684832071956907072}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 12.3, y: -9.3}
m_SizeDelta: {x: 7.5, y: 7.5}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8131962250710205498
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2587728429135203411}
m_CullTransparentMesh: 1
--- !u!114 &2468721337839932803
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2587728429135203411}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 260856292e6be62478629aebcd8d10a9, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4414271769496108467
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4684832071956907072}
m_Layer: 0
m_Name: ColorCondition
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4684832071956907072
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4414271769496108467}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3172675783022697895}
- {fileID: 5693152359083493173}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}

7
ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/Fun/ColorCondition.prefab.meta

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1fd0d425cafce3f4588b40c9cfe1ac25
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

4
ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity

@ -31035,10 +31035,6 @@ MonoBehaviour:
type: 3}
locationX: 4
locationY: 4
- enemyPrefab: {fileID: 4894115461753618931, guid: 324f36d654c1ae14fa302874c914d861,
type: 3}
locationX: 4
locationY: 5
playerNameText: {fileID: 742474145}
playerMoneyText: {fileID: 506890230}
imagePath: BackGround

2
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs

@ -426,7 +426,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
//重新调用范围预览
//GameManager.Instance.player.StepPreviewInfluencedNode(cardEntity.cardOriginalData.CastingRange);
int castRange = cardEntity.cardOriginalData.CastingRange;
if (LegacyManager.Instance.relicClassNameList.Contains(Name.Legacy.LegacyNode_Scope))
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Green))
{
castRange++;
}

191
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs

@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using TreeEditor;
using Unity.VisualScripting;
using UnityEngine;
@ -85,6 +86,8 @@ public class CardEntity : MonoBehaviour
public GameObject nodeColorResultImage;
[Header("施法距离")]
public Text castRange;
[Header("条件颜色的判断")]
public GameObject colorConditon;
public Dictionary<string, Tuple<string, string>> cardFunToLose = new Dictionary<string, Tuple<string, string>>();
private void Start()
@ -95,6 +98,7 @@ public class CardEntity : MonoBehaviour
private void Update()
{
checkAndUpdateCondition();
createCardCost();
}
IEnumerator SyncVuleText()
{
@ -123,7 +127,7 @@ public class CardEntity : MonoBehaviour
createCardUI();
//createCardDescription();
//createCardName();
createCardCost();
//createCardCost();
createCardImage();
this.cardIndex = cardIndex;
}
@ -143,6 +147,12 @@ public class CardEntity : MonoBehaviour
}
//debug卡名
Debug.Log("打出"+cardOriginalData.ChineseName);
//灰色地块效果
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Black))
{
cardOriginalData.Cost++;
}
Debug.Log("结算时候influencePreviewPool大小" + influencePreviewPool.Count);
//结算效果
yield return StartCoroutine(DestructionManager.Instance.startDestoryAndUseCard(this.gameObject, cardOriginalData, influencePreviewPool, cardIndex, targetNode));
@ -198,15 +208,19 @@ public class CardEntity : MonoBehaviour
public void createCardCost()
{
/* if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost))
/* if (cardOriginalData.FunctionVal.ContainsKey(CardFunction.xCost))
{
cost.text = "X";
}
else
{*/
int cardcost = cardOriginalData.Cost;
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Black))
{
cost.text = "X";
cardcost++;
}
else
{*/
cost.text = cardOriginalData.Cost.ToString();
cost.text = cardcost.ToString();
}
public void createCardUI()
@ -249,16 +263,16 @@ public class CardEntity : MonoBehaviour
conditionList[1].SetActive(false);
conditionList[2].SetActive(false);
conditionCheck(1,cardOriginalData);
createFun(1);
//createFun(1);
break;
case 2:
conditionList[2].SetActive(false);
conditionCheck(2, cardOriginalData);
createFun(2);
//createFun(2);
break;
case 3:
conditionCheck(3, cardOriginalData);
createFun(3);
//createFun(3);
break;
}
createTrueFun();
@ -267,7 +281,7 @@ public class CardEntity : MonoBehaviour
}
private void createFun(int count)
/*private void createFun(int count)
{
switch (count)
{
@ -283,9 +297,9 @@ public class CardEntity : MonoBehaviour
createSingleFun(3);
break;
}
}
}*/
private void createSingleFun(int count)
/*private void createSingleFun(int count)
{
switch (count)
@ -303,27 +317,35 @@ public class CardEntity : MonoBehaviour
getFun(fun3Image, cardOriginalData.conditionAndFunctionVal.ElementAt(2), fun3Val);
break;
}
}
}*/
private void getFun(Image icon, KeyValuePair<string, Tuple<string, string>> kvp,Text val)
private void getFun(Image icon, string color,string funVal,Text text)
{
imageCal(icon, kvp.Value.Item1);
val.text = kvp.Value.Item2;
imageCal(icon, color);
text.text = funVal;
}
private void conditionCal(KeyValuePair<string, Tuple<string, string>> kvp,int index)
private void conditionCal(string conditon,int conditonListindex,int colorConditionindex)
{
Transform childToCopy = colorConditon.transform;
GameObject colorConditonChild = Instantiate(colorConditon);
colorConditonChild.transform.SetParent(conditionList[conditonListindex].transform);
colorConditonChild.transform.position = conditionList[conditonListindex].transform.position;
colorConditonChild.transform.localRotation = childToCopy.localRotation;
colorConditonChild.transform.localScale = childToCopy.localScale;
string pattern = @"(\w+)([><=])(\d+)";
cardOriginalData.originFunctionVal.Clear();
//Debug.Log("外面condition是" + kvp.Key);
Match match = Regex.Match(kvp.Key, pattern);
Match match = Regex.Match(conditon, pattern);
if (match.Success)
{
string color = match.Groups[1].Value; // 颜色部分
string op = match.Groups[2].Value; // 运算符部分
string number = match.Groups[3].Value; // 数值部分
//int colorCount = getNodeTools.getNodesCount(color);
GameObject nodeModule = conditionList[index].transform.GetChild(0).gameObject;
int colorCount = getNodeTools.getNodesCount(color);
Debug.Log("cardId是" + cardOriginalData.CardId + "conditonListindex是" + conditonListindex + "colorConditionindex是" + colorConditionindex
);
GameObject nodeModule = conditionList[conditonListindex].transform.GetChild(colorConditionindex).gameObject;
GameObject nodeImage = nodeModule.transform.GetChild(0).gameObject;
GameObject nodeDescription = nodeModule.transform.GetChild(1).gameObject;
Image image= nodeImage.GetComponent<Image>();
@ -351,52 +373,60 @@ public class CardEntity : MonoBehaviour
}
}
private void conditionCheck(KeyValuePair<string, Tuple<string, string>> kvp, int index)
private bool conditionCheck(string conditon, Tuple<string, string> tuple, int conditionListindex)
{
bool check=false;
string pattern = @"(\w+)([><=])(\d+)";
//cardOriginalData.originFunctionVal.Clear();
//Debug.Log("外面condition是" + kvp.Key);
Match match = Regex.Match(kvp.Key, pattern);
Match match = Regex.Match(conditon, pattern);
if (match.Success)
{
string color = match.Groups[1].Value; // 颜色部分
string op = match.Groups[2].Value; // 运算符部分
int number = int.Parse(match.Groups[3].Value); // 数值部分
int colorCount = getNodeTools.getNodesCount(color);
if (performComparison(colorCount, op, number))
int thresholdShift = 0;
//蓝色地块优势
if (MapUnityManager.Instance.getAdvNode().Equals(Name.Color.Blue))
{
Image condition=conditionList[index].GetComponent<Image>();
condition.color = UnityEngine.Color.green;
cardFunToLose.Remove(kvp.Key);
thresholdShift = 2;
}
if (performComparison(colorCount, op, number, thresholdShift))
{
check= true;
}
else
{
//MathTool.AddOrUpdateDictionary(cardFunToLose, kvp.Value.Item1, kvp.Value.Item2);
Image condition = conditionList[index].GetComponent<Image>();
condition.color = UnityEngine.Color.white;
cardFunToLose.TryAdd(kvp.Key, kvp.Value);
/*Image condition = conditionList[conditionListindex].GetComponent<Image>();
cardFunToLose.TryAdd(conditon, tuple);*/
//MathTool.SubtractOrUpdateDictionary(cardOriginalData.originFunctionVal, kvp.Value.Item1, kvp.Value.Item2);
}
}
return check;
}
private void resultsScreenCal()
{
for (int i = 0; i < cardOriginalData.TrueFunctionVal.Count; i++)
{
Debug.Log("功能是" + cardOriginalData.TrueFunctionVal.ElementAt(i).Key + "数值是" + cardOriginalData.TrueFunctionVal.ElementAt(i).Value);
GameObject fun= trueFun.transform.GetChild(i).gameObject;
GameObject funImage = fun.transform.GetChild(0).gameObject;
GameObject funVal = fun.transform.GetChild(1).gameObject;
Image image = funImage.GetComponent<Image>();
Text description = funVal.GetComponent<Text>();
imageCal(image, cardOriginalData.TrueFunctionVal.ElementAt(i).Key);
//Debug.Log("cardId是" + cardOriginalData.CardId + "功能是" + cardOriginalData.TrueFunctionVal.ElementAt(i).Key + "数值是" + cardOriginalData.TrueFunctionVal.ElementAt(i).Value);
if (int.Parse(cardOriginalData.TrueFunctionVal.ElementAt(i).Value)<=0)
{
fun.SetActive(false);
}
else
{
fun.SetActive(true);
description.text = cardOriginalData.TrueFunctionVal.ElementAt(i).Value;
}
}
@ -443,12 +473,12 @@ public class CardEntity : MonoBehaviour
}
}
private bool performComparison(int colorValue, string op, int number)
private bool performComparison(int colorValue, string op, int number, int thresholdShift)
{
return op switch
{
">" => colorValue > number,
"<" => colorValue < number,
">" => colorValue > number - thresholdShift,
"<" => colorValue < number + thresholdShift,
"=" => colorValue == number,
_ => false
};
@ -456,22 +486,22 @@ public class CardEntity : MonoBehaviour
private void conditionCheck(int conditionCount,CardOriginalData cardOriginalData)
{
bool isConditionMet=true;
for (int i = 0; i < conditionCount; i++)
{
KeyValuePair<string, Tuple<string, string>> kvp = cardOriginalData.conditionAndFunctionVal.ElementAt(i);
string[] keys=kvp.Key.Split('-');
string[] keys=kvp.Key.Split("_");
for (int j = 0;j<keys.Length;j++)
{
if (keys[j].Equals(Name.Condition.None))
{
conditionList[i].transform.GetChild(0).gameObject.SetActive(false);
//conditionList[i].transform.GetChild(0).gameObject.SetActive(false);
}
else
{
conditionCal(kvp, i);
conditionCal(keys[j], i,j);
}
}
createFun(kvp,i);
}
}
@ -482,7 +512,15 @@ public class CardEntity : MonoBehaviour
for (int i = 0; i < cardOriginalData.conditionAndFunctionVal.Count; i++)
{
KeyValuePair<string, Tuple<string, string>> kvp = cardOriginalData.conditionAndFunctionVal.ElementAt(i);
MathTool.AddOrUpdateDictionary(cardOriginalData.originFunctionVal, kvp.Value.Item1, kvp.Value.Item2);
Debug.Log("key是" + kvp.Key + "value是" + kvp.Value + "cardId是" + cardOriginalData.CardId);
string[] functions = kvp.Value.Item1.Split("_");
string[] vals = kvp.Value.Item2.Split("_");
for (int j = 0; j < functions.Length; j++)
{
Debug.Log("cardId是" + cardOriginalData.CardId + "功能是" + functions[j] + "数值是" + vals[j]);
MathTool.AddOrUpdateDictionary(cardOriginalData.originFunctionVal, functions[j], vals[j]);
}
}
for (int i = 0; i < cardOriginalData.originFunctionVal.Count; i++)
{
@ -498,6 +536,31 @@ public class CardEntity : MonoBehaviour
//condition.color = UnityEngine.Color.green;
}
private void createFun(KeyValuePair<string, Tuple<string, string>> kvp,int index)
{
string[] functions = kvp.Value.Item1.Split("_");
string[] vals = kvp.Value.Item2.Split("_");
for (int i = 0; i < functions.Length; i++)
{
Transform childToCopy = trueFunPrefab.transform;
GameObject funChild = Instantiate(trueFunPrefab);
funChild.transform.SetParent(conditionList[index].transform);
funChild.transform.position = conditionList[index].transform.position;
funChild.transform.localRotation = childToCopy.localRotation;
funChild.transform.localScale = childToCopy.localScale;
GameObject funImage = funChild.transform.GetChild(0).gameObject;
GameObject funVal = funChild.transform.GetChild(1).gameObject;
Image image = funImage.GetComponent<Image>();
Text description = funVal.GetComponent<Text>();
Debug.Log("functions是" + functions[i] + "vals是" + vals[i]);
getFun(image, functions[i], vals[i], description);
}
//condition.color = UnityEngine.Color.green;
}
private void createCastRange()
{
castRange.text=cardOriginalData.CastingRange.ToString();
@ -543,24 +606,60 @@ public class CardEntity : MonoBehaviour
{
for (int i = 0; i < cardOriginalData.conditionAndFunctionVal.Count; i++)
{
bool isAllMatch=true;
List<bool> matchList=new List<bool>();
KeyValuePair<string, Tuple<string, string>> kvp = cardOriginalData.conditionAndFunctionVal.ElementAt(i);
if (kvp.Key.Equals(Name.Condition.None))
string[] keys= kvp.Key.Split("_");
string[] functions = kvp.Value.Item1.Split("_");
string[] vals = kvp.Value.Item2.Split("_");
for (int j = 0; j < keys.Length; j++)
{
if (keys[j].Equals(Name.Condition.None))
{
//cardFunToLose.Remove(keys[j]);
matchList.Add(true);
}
else
{
matchList.Add(conditionCheck(keys[j], kvp.Value, i));
}
}
for (int k = 0; k < matchList.Count; k++)
{
if (!matchList[k])
{
isAllMatch=false;
}
}
Image condition = conditionList[i].GetComponent<Image>();
if (isAllMatch)
{
Image condition = conditionList[i].GetComponent<Image>();
condition.color = UnityEngine.Color.green;
cardFunToLose.Remove(kvp.Key);
}
else
{
conditionCheck(kvp, i);
condition.color = UnityEngine.Color.white;
cardFunToLose.TryAdd(kvp.Key, kvp.Value);
}
}
cardOriginalData.TrueFunctionVal = cardOriginalData.originFunctionVal.ToDictionary(entry => entry.Key, entry => entry.Value);
Dictionary<string,string> cardFunToLoseDict=new Dictionary<string,string>();
foreach (var kvp in cardFunToLose)
{
string tupleKey = kvp.Value.Item1; // 从 A 中的 Tuple 获取 Item1 作为 B 的键
string tupleValue = kvp.Value.Item2; // 从 A 中的 Tuple 获取 Item2 作为减数
string[] fun=kvp.Value.Item1.Split("_");
string[] vals = kvp.Value.Item2.Split("_");
for (int j = 0; j < fun.Length; j++)
{
MathTool.AddOrUpdateDictionary(cardFunToLoseDict, fun[j], vals[j]);
}
}
foreach (var kvp in cardFunToLoseDict)
{
string tupleKey = kvp.Key; // 从 A 中的 Tuple 获取 Item1 作为 B 的键
string tupleValue = kvp.Value; // 从 A 中的 Tuple 获取 Item2 作为减数
if (cardOriginalData.TrueFunctionVal.ContainsKey(tupleKey))
{
// 解析字典 B 的值和 A 中 Tuple 的 Item2

6
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs

@ -141,10 +141,6 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
cardOriginalData.originFunctionVal = new Dictionary<string, string>();
cardOriginalData.ImgPath = values[12];
getDictionaryFromString(values, cardOriginalData);
foreach(KeyValuePair<string, Tuple<string, string>> kvp in cardOriginalData.conditionAndFunctionVal)
{
Debug.Log("keyÊÇ"+kvp.Key+"valueÊÇ"+kvp.Value);
}
return cardOriginalData;
}
@ -162,8 +158,8 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
{
cardOriginalData.conditionAndFunctionVal.Add(condition[i], new Tuple<string,string>(function[i],functionVal[i]));
}
/*for (int i = 0; i < advantagefunction.Length; i++)
{
cardOriginalData.AdvantageFunctionVal.Add(advantagefunction[i], advantagefunctionVal[i]);

19
ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs

@ -2,6 +2,7 @@ using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.UI;
public class TurnMaster : Singleton<TurnMaster>
@ -77,8 +78,7 @@ public class TurnMaster : Singleton<TurnMaster>
Usermanager.Instance.PlayerTurnBeginSettle();
//恢复cost
restoreResource(0);
//賦呾華輸Buff
MapUnitySettleManager.Instance.MapGridsBeginSettle();
//恢复体力
GameManager.Instance.playerState.currentStepRange = Usermanager.Instance.StepRangeCalculation(GameManager.Instance.playerState.maxStepRange);
//判断是否有使魔进行结算
@ -104,6 +104,8 @@ public class TurnMaster : Singleton<TurnMaster>
if (turn == Turn.playerTurnEnd)
{
//賦呾華輸Buff(綻伎華輸蚥岊)
MapUnitySettleManager.Instance.MapGridsBeginSettle();
//广播遗物接口
LegacyManager.Instance.BroadCastSettleInPlayerTurnEnd();
//关闭随从的技能UI板
@ -226,10 +228,10 @@ public class TurnMaster : Singleton<TurnMaster>
//老吊写的函数
public void restoreResource(int settleTurn)
{
//totalCost = Usermanager.Instance.totalCost;
//currentCost = totalCost;
/* totalCost = Usermanager.Instance.totalCost;
Usermanager.Instance.currentCost = totalCost;*/
GameManager.Instance.playerState.currentCost = GameManager.Instance.playerState.maxCost;
if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.nextTurnExtraOneCost))
/*if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.nextTurnExtraOneCost))
{
Usermanager.playerAbnormalCondition[AbnormalCondition.nextTurnExtraOneCost].value--;
if (Usermanager.playerAbnormalCondition[AbnormalCondition.nextTurnExtraOneCost].value <= 0)
@ -237,7 +239,7 @@ public class TurnMaster : Singleton<TurnMaster>
Usermanager.playerAbnormalCondition.Remove(AbnormalCondition.nextTurnExtraOneCost);
}
GameManager.Instance.playerState.currentCost++;
}
}*/
if (!Usermanager.Instance.FirmJudge())
{
Usermanager.Instance.Shield = 0;
@ -259,6 +261,11 @@ public class TurnMaster : Singleton<TurnMaster>
{
tureDrawCardsNum += Usermanager.playerAbnormalCondition[AbnormalCondition.addDrawCard].value;
}
//閡伎蚥岊瓚隅
if (MapUnityManager.Instance.getAdvNode().Equals(Name.Color.Black))
{
tureDrawCardsNum-=2;
}
MathTool.keepNature(tureDrawCardsNum);
Debug.Log("真正抽卡数:"+tureDrawCardsNum);
// 等待直到当前帧结束

17
ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs

@ -113,9 +113,26 @@ public class GameManager : Singleton<GameManager>
}
private void Update()
{
//蟯伎華輸蚥岊
if (MapUnityManager.Instance.getAdvNode().Equals(Name.Color.Green))
{
Debug.Log("蟯伎蚥岊");
playerState.maxCost= PlayerStatsManager.Instance.playerState.maxCost+1;
}
else
{
playerState.maxCost = PlayerStatsManager.Instance.playerState.maxCost;
}
//啞伎華輸蚥岊
if (MapUnityManager.Instance.getAdvNode().Equals(Name.Color.White))
{
playerState.maxStepRange = PlayerStatsManager.Instance.playerState.maxStepRange + 1;
}
//ͬ²½UIÊý¾Ý
textCurrentCost.text = playerState.currentCost.ToString();
textCurrentStep.text = playerState.currentStepRange.ToString();
textMaxStep.text= playerState.maxStepRange.ToString();
textMaxCost.text = playerState.maxCost.ToString();
// textShieldValue.text = playerState.currentShieldValue.ToString();
textShieldValue.text = Usermanager.Instance.shield.ToString();

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

@ -12,7 +12,8 @@ public static class Name
public const string enemy = "2";
public const string ally = "1";
}
public const string none="None";
public static class Legacy
{
public const string LegacyNode_StrongBody = "LegacyNode_StrongBody";

1
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/ToolDontDestory.cs

@ -29,7 +29,6 @@ public class ToolDontDestory : Singleton <ToolDontDestory >
if (imagePath != null)
{
Debug.Log("imagePath是"+imagePath);
Sprite sprite = Resources.LoadAll<Sprite>(imagePath)[0];
if (sprite != null)
{

2
ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs

@ -39,7 +39,7 @@ public class DestructionManager : Singleton<DestructionManager>
}
MapUnityManager.Instance.castPool.Clear();
conditionCal(cardOriginalData);
//conditionCal(cardOriginalData);
yield return StartCoroutine(settleStage1(cardOriginalData, influencePreviewPool, cardIndex,targetNode));

48
ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs

@ -1,3 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
@ -16,6 +17,53 @@ public class MapUnityManager : Singleton<MapUnityManager>
public int blackNodeCount;
public string getAdvNode()
{
Dictionary<string,int> kvps = new Dictionary<string, int>
{
{ Name.Color.Red, redNodeCount },
{ Name.Color.Blue, blueNodeCount },
{ Name.Color.Green, greenNodeCount },
{ Name.Color.Black, blackNodeCount },
{ Name.Color.White, whiteNodeCount },
};
string advColor= GetKeyWithMaxValue(kvps);
//Debug.Log(advColor);
return advColor;
}
public static string GetKeyWithMaxValue(Dictionary<string, int> dictionary)
{
if (dictionary == null || dictionary.Count == 0)
{
throw new ArgumentException("字典不能为空或为 null");
}
// 找到最大值
int maxValue = dictionary.Values.Max();
// 检查最大值是否唯一
int count = dictionary.Values.Count(value => value == maxValue);
// 如果最大值不唯一,返回 null
if (count > 1)
{
return Name.none;
}
// 返回具有最大值的键
return dictionary.First(kvp => kvp.Value == maxValue).Key;
}
public bool isPlayerOn(int color)
{
bool isMatch = false;
if (GameManager.Instance.playerOn.whoColour == color)
{
isMatch = true;
}
return isMatch;
}
public void Update()
{
if(GameManager .Instance .complete ==true )

20
ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnitySettleManager.cs

@ -6,7 +6,7 @@ public class MapUnitySettleManager : Singleton<MapUnitySettleManager>
{
public void PlayerMudGridBeginSettle(int value)
{
if (Name.NodeColor.PlayerColor.Contains(GameManager.Instance.playerOn.whoColour))
/*if (Name.NodeColor.PlayerColor.Contains(GameManager.Instance.playerOn.whoColour))
{
if (LegacyManager.Instance.relicClassNameList.Contains(Name.Legacy.LegacyNode_FireHeart))
{
@ -17,6 +17,11 @@ public class MapUnitySettleManager : Singleton<MapUnitySettleManager>
GameManager.Instance.playerState.currentCost++;
}
}*/
if (MapUnityManager.Instance.getAdvNode().Equals(Name.Color.Red))
{
Usermanager.Instance.Shield += Usermanager.Instance.ShieldCalculation(5);
}
}
@ -73,18 +78,9 @@ public class MapUnitySettleManager : Singleton<MapUnitySettleManager>
public void MapGridsEndSettle()
{
PlayerMudGridEndSettle(1);
//PlayerMudGridEndSettle(1);
if (EnemyManager.Instance.enemySpeedSortingList.Count > 0)
{
for (int i = 0; i < EnemyManager.Instance.enemySpeedSortingList.Count; i++)
{
if (EnemyManager.Instance.enemySpeedSortingList[i] != null)
{
EnemyRedGridSettle(EnemyManager.Instance.enemySpeedSortingList[i]);
}
}
}
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs

@ -473,6 +473,11 @@ public class Usermanager : Singleton<Usermanager>
public void SufferDamage(int damage,EnemyNode enemyNode)
{
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Blue))
{
damage -= 2;
MathTool.keepNature(damage);
}
if (enemyNode != null)
{
thornCal(enemyNode);
@ -530,7 +535,11 @@ public class Usermanager : Singleton<Usermanager>
public int DamageCalculation(int damage)
{
int angerUpperDamage = 0;
//ºìɫվÁ¢Ð§¹û
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Red))
{
damage += 1;
}
if (playerAbnormalCondition .ContainsKey (AbnormalCondition.angerUpperDamage))
{
angerUpperDamage = playerAbnormalCondition[AbnormalCondition.angerUpperDamage].value;

2
ColorlessWorld-2024-4-2/Assets/data/card_data_3.csv

@ -1,5 +1,5 @@
ID,名称,费用,稀有度,施法范围,作用范围,消耗,条件,功能,数值,地块标记,地块颜色,图片路径
1001,星闪,1,1,3,1,0,none,1,5,,green,CardIcon/1
1002,微光,1,1,1,2,0,none,2,5,0,red;red,CardIcon/2
1003,光辉杖击,2,2,1,4_1,0,none;red>8,1;5,9;2,0;0_0;0_0_0,red;red;red;red,CardIcon/4_1
1003,光辉杖击,2,2,1,4_1,0,none;red>3_green>1,1;5_1,9;2_5,0;0_0;0_0_0,red;red;red;red,CardIcon/4_1
1004,星辉护盾,2,2,2,3_2,0,none;red>5,2;2,8;1,2;-2,red;red;red,CardIcon/3_2

1 ID 名称 费用 稀有度 施法范围 作用范围 消耗 条件 功能 数值 地块标记 地块颜色 图片路径
2 1001 星闪 1 1 3 1 0 none 1 5 green CardIcon/1
3 1002 微光 1 1 1 2 0 none 2 5 0 red;red CardIcon/2
4 1003 光辉杖击 2 2 1 4_1 0 none;red>8 none;red>3_green>1 1;5 1;5_1 9;2 9;2_5 0;0_0;0_0_0 red;red;red;red CardIcon/4_1
5 1004 星辉护盾 2 2 2 3_2 0 none;red>5 2;2 8;1 2;-2 red;red;red CardIcon/3_2
Loading…
Cancel
Save