0107修改 #75

Merged
yjm484 merged 1 commits from dev-1217-yjm0107 into dev-1217 12 months ago
  1. 1
      ColorlessWorld-2024-4-2/Assets/GameDate/PlayerState.asset
  2. 12
      ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset
  3. 4
      ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity
  4. 28
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs
  5. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs.meta
  6. 68
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs
  7. 89
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs
  8. 10
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs
  9. 179
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs
  10. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/LookCard/LookCardManager.cs
  11. 9
      ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs
  12. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/Whirlpool.cs
  13. 12
      ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs
  14. 93
      ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs
  15. 11
      ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs
  16. 5
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs
  17. 4
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs
  18. 2
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/PlayerState_SO.cs
  19. 24
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs
  20. 31
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs
  21. 1
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs
  22. 46
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs
  23. 16
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs
  24. 64
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs
  25. 34
      ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs
  26. 4
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 副本.csv
  27. 7
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 副本.csv.meta
  28. 6
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4.csv
  29. 3
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv
  30. 7
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv.meta
  31. 2
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv
  32. 7
      ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv.meta
  33. 0
      ColorlessWorld-2024-4-2/Assets/~UnityDirMonSyncFile~f90d9bb2ab8ce4942acf5cee5050c7a4~
  34. BIN
      ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache

1
ColorlessWorld-2024-4-2/Assets/GameDate/PlayerState.asset

@ -23,4 +23,5 @@ MonoBehaviour:
currentHP: 68
cardRewardNumToChoose: 0
cardRewardNumToGget: 0
castRange: 2
money: 0

12
ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset

@ -14,9 +14,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
cardDeckList:
- 1001
- 1001
- 1001
- 1001
- 1001
- 1001
- 1001
- 2002
- 2001
- 2001
- 2002
- 2002
- 2002

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

@ -14886,6 +14886,9 @@ MonoBehaviour:
whiteNodeCount: 0
blackNodeCount: 0
metalNodeCount: 0
playerNodeCount: 0
neutralNodeCount: 0
enemyNodeCount: 0
--- !u!1 &690000101
GameObject:
m_ObjectHideFlags: 0
@ -26896,6 +26899,7 @@ MonoBehaviour:
- Y: []
- Y: []
- Y: []
- Y: []
character: 0
playerOn: {fileID: 0}
player: {fileID: 1809205617}

28
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs

@ -0,0 +1,28 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Buff_TempCastRange : Buff
{
public override void Settle()
{
value = 0;
}
public override void UIShow(GameObject buff, string key)
{
base.UIShow(buff, key);
}
public override Buff NewBuff(int value)
{
Buff buff = new Buff_TempCastRange();
buff.value = value;
buff.icon = BuffDataManager.Instance.LoadImage(iconPath + "Sslx_Ui_Buff_chanraou_v01");
return buff;
}
}

11
ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a4f050aa05c46b844a6f46a2cfb6c41a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

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

@ -259,8 +259,27 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
//检查卡牌的费用是否可以释放
private void costCheck()
{
Debug.Log("当前费用:" + TurnMaster.Instance.currentCost);
Debug.Log("总费用:" + Usermanager.Instance.totalCost);
switch (cardEntity.cardOriginalData.costType)
{
case Name.CostType.energy:
energyCostCheck();
break;
case Name.CostType.step:
stepCostCheck();
break;
case Name.CostType.health:
healthCostCheck();
break;
case Name.CostType.node:
break;
}
}
private void energyCostCheck()
{
int trueCost = cardEntity.cardOriginalData.Cost;
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Black))
{
@ -268,11 +287,40 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
}
if (GameManager.Instance.playerState.currentCost - trueCost < 0)
{
Debug.Log("费用不足");
TipManager.Instance.SendTip("费用不足");
Debug.Log("能量费用不足");
TipManager.Instance.SendTip("能量费用不足");
cardEntity.canUse = false;
}
}
private void stepCostCheck()
{
int trueCost = cardEntity.cardOriginalData.Cost;
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Black))
{
trueCost++;
}
if (GameManager.Instance.playerState.currentStepRange - trueCost < 0)
{
Debug.Log("步数费用不足");
TipManager.Instance.SendTip("步数费用不足");
cardEntity.canUse = false;
}
}
private void healthCostCheck()
{
int trueCost = cardEntity.cardOriginalData.Cost;
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Black))
{
trueCost++;
}
if (GameManager.Instance.playerState.currentHP - trueCost < 0)
{
Debug.Log("健康费用不足");
TipManager.Instance.SendTip("健康费用不足");
cardEntity.canUse = false;
}
}
private void stepCostCheck(bool canAdv)
@ -445,11 +493,15 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
currentNode = raycastHit.collider.transform.GetComponent<MapUnity>();
//重新调用范围预览
//GameManager.Instance.player.StepPreviewInfluencedNode(cardEntity.cardOriginalData.CastingRange);
int castRange = cardEntity.cardOriginalData.CastingRange;
int castRange = GameManager.Instance.playerState.castRange;
if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Green))
{
castRange++;
}
if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.tempCastRange))
{
castRange+= Usermanager.playerAbnormalCondition[AbnormalCondition.tempCastRange].value;
}
setCastingRangePreview(castRange);
//预览影响范围
if (currentNode.influenced)
@ -480,7 +532,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
mapUnity.influenced = false;
}
MapUnityManager.Instance.castPool.Clear();
MapUnityManager.Instance.getCastPool(cardEntity.cardOriginalData.EffectRange, castRange);
MapUnityManager.Instance.getCastPool(castRange);
}
@ -508,7 +560,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag
cardEntity.influencePreviewPool.Add(currentNode);
}
}*/
getNodeTools.setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, 30.0f, currentNode, cardEntity);
//getNodeTools.setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, 30.0f, currentNode, cardEntity);
MapUnity mapUnity=GameManager.Instance.playerOn;
getNodeTools.setEffectRangePreviewTest(cardEntity.cardOriginalData, 90.0f, mapUnity, cardEntity);
//更新效果作用范围内怪物虚血
EnemyManager.Instance.ShowExpHp_Observer(cardEntity.influencePreviewPool);
//更新涂色预览材质

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

@ -104,7 +104,7 @@ public class CardEntity : MonoBehaviour
{
checkAndUpdateCondition();
createCardCost();
createCastRange();
//createCastRange();
}
IEnumerator SyncVuleText()
{
@ -127,6 +127,20 @@ public class CardEntity : MonoBehaviour
public void createCard(string cardId, int cardIndex,bool needTrueFun)
{
Debug.Log("创建ID" + cardId + "needTrueFun是" + needTrueFun);
if (CardOriginalDataList.Instance.existCardOriginalDataList.TryGetValue(cardId,out cardOriginalData))
{
createDyeingCard(cardId, cardIndex, needTrueFun);
}else if (CardOriginalDataList.Instance.existEffectCardOriginalDataList.TryGetValue(cardId, out cardOriginalData))
{
createEffectCard(cardId, cardIndex, needTrueFun);
}else if (CardOriginalDataList.Instance.existItemCardOriginalDataList.TryGetValue(cardId, out cardOriginalData))
{
createItemCard(cardId, cardIndex, needTrueFun);
}
}
public void createDyeingCard(string cardId, int cardIndex, bool needTrueFun)
{
this.cardId = cardId;
//Debug.Log(cardId + "-" + CardOriginalDataList.Instance.cardOriginalDataList[cardId]);
cardOriginalData = CardOriginalDataList.Instance.existCardOriginalDataList[cardId];
@ -140,6 +154,36 @@ public class CardEntity : MonoBehaviour
this.cardIndex = cardIndex;
}
public void createEffectCard(string cardId, int cardIndex, bool needTrueFun)
{
this.cardId = cardId;
//Debug.Log(cardId + "-" + CardOriginalDataList.Instance.cardOriginalDataList[cardId]);
cardOriginalData = CardOriginalDataList.Instance.existEffectCardOriginalDataList[cardId];
settleForStart(SettlementManager.settleTurn);
createEffectCardUI(needTrueFun);
//createCardDescription();
//createCardName();
//createCardCost();
//createCardImage();
//createCardImageTest();
this.cardIndex = cardIndex;
}
public void createItemCard(string cardId, int cardIndex, bool needTrueFun)
{
this.cardId = cardId;
//Debug.Log(cardId + "-" + CardOriginalDataList.Instance.cardOriginalDataList[cardId]);
cardOriginalData = CardOriginalDataList.Instance.existItemCardOriginalDataList[cardId];
settleForStart(SettlementManager.settleTurn);
//createEffectCardUI(needTrueFun);
//createCardDescription();
//createCardName();
//createCardCost();
//createCardImage();
//createCardImageTest();
this.cardIndex = cardIndex;
}
//卡牌效果的结算
public IEnumerator settle(int settleTurn,MapUnity targetNode)
{
@ -247,8 +291,6 @@ public class CardEntity : MonoBehaviour
MapUnity currentNode = GameManager.Instance.ToolX[3].Y[3];
Debug.Log("card创建");
CardManager.setCardImageTest(cardOriginalData, 90.0f, currentNode,this);
}
//获取卡牌名字
public void createCardName()
@ -283,7 +325,7 @@ public class CardEntity : MonoBehaviour
{
//确定条件个数
switch (cardOriginalData.conditionAndFunctionVal.Count)
switch (cardOriginalData.originFunctionVal.Count)
{
case 0:
conditionList[0].SetActive(false);
@ -310,6 +352,12 @@ public class CardEntity : MonoBehaviour
summarizeNodeColor();
}
public void createEffectCardUI(bool needTrueFun)
{
}
/*private void createFun(int count)
@ -426,11 +474,6 @@ public class CardEntity : MonoBehaviour
int firstPartCount = CardManager.Instance.evaluateExpression(firstPart);
int secondPartCount = CardManager.Instance.evaluateExpression(secondPart);
int thresholdShift = 0;
//À¶É«µØ¿éÓÅÊÆ
if (MapUnityManager.Instance.getAdvNode().Equals(Name.Color.Blue))
{
thresholdShift += 2;
}
if (LegacyManager.Instance.relicClassNameList.Contains(Name.Legacy.LegacyNode_Starfish)
&& firstPart.Equals(Name.Color.Blue))
{
@ -660,6 +703,10 @@ public class CardEntity : MonoBehaviour
private void checkAndUpdateCondition()
{
/* if (cardOriginalData.CardType != Name.CardType.dyeing)
{
return;
}*/
cardOriginalData.testTrueFunctionVal.Clear();
for (int i = 0; i < cardOriginalData.conditionAndFunctionVal.Count; i++)
{
@ -668,8 +715,8 @@ public class CardEntity : MonoBehaviour
KeyValuePair<string, Tuple<string, string>> kvp = cardOriginalData.conditionAndFunctionVal.ElementAt(i);
string[] keys= kvp.Key.Split("_");
//Debug.Log("cardId是" + cardOriginalData.CardId + "key是" + keys);
string[] functions = kvp.Value.Item1.Split("_");
string[] vals = kvp.Value.Item2.Split("_");
//string[] functions = kvp.Value.Item1.Split("_");
//string[] vals = kvp.Value.Item2.Split("_");
for (int j = 0; j < keys.Length; j++)
{
@ -694,15 +741,21 @@ public class CardEntity : MonoBehaviour
Image condition = conditionList[i].GetComponent<Image>();
if (isAllMatch)
{
string value = kvp.Value.Item2;
if (int.TryParse(value, out int newValue))
string[] fun = kvp.Value.Item1.Split("_");
string[] vals = kvp.Value.Item2.Split("_");
for (int j = 0; j < fun.Length; j++)
{
MathTool.AddOrUpdateDictionary(cardOriginalData.testTrueFunctionVal, kvp.Value.Item1, value);
}
else
{
MathTool.AddOrUpdateDictionary(cardOriginalData.testTrueFunctionVal, kvp.Value.Item1, getNodeTools.getNodesCount(value).ToString());
if (int.TryParse(vals[j], out int newValue))
{
MathTool.AddOrUpdateDictionary(cardOriginalData.testTrueFunctionVal, fun[j], vals[j]);
}
else
{
MathTool.AddOrUpdateDictionary(cardOriginalData.testTrueFunctionVal, fun[j], getNodeTools.getNodesCount(vals[j]).ToString());
}
}
string value = kvp.Value.Item2;
condition.sprite = successCondition;
cardFunToLose.Remove( kvp.Key);

10
ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs

@ -9,6 +9,8 @@ public class CardOriginalData : System.Object
private int cost;
public string costType;
private string chineseName;
private int rarity;
@ -25,7 +27,7 @@ public class CardOriginalData : System.Object
public Dictionary<string, string> testTrueFunctionVal;
private int carType;
private string cardType;
private string description;
@ -100,10 +102,10 @@ public class CardOriginalData : System.Object
set { trueFunctionVal = value; }
}
public int CarType
public string CardType
{
get { return carType; }
set { carType = value; }
get { return cardType; }
set { cardType = value; }
}
public string Description

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

@ -10,8 +10,16 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
{
public Dictionary<string, CardOriginalData> cardOriginalDataList;
public Dictionary<string, CardOriginalData> effectCardOriginalDataList;
public Dictionary<string, CardOriginalData> itemCardOriginalDataList;
public Dictionary<string, CardOriginalData> existCardOriginalDataList = new Dictionary<string, CardOriginalData>();
public Dictionary<string, CardOriginalData> existEffectCardOriginalDataList = new Dictionary<string, CardOriginalData>();
public Dictionary<string, CardOriginalData> existItemCardOriginalDataList = new Dictionary<string, CardOriginalData>();
public Dictionary<string, CardOriginalData> commCardOriginalDataList=new Dictionary<string, CardOriginalData>();
public Dictionary<string, CardOriginalData> rareCardOriginalDataList = new Dictionary<string, CardOriginalData>();
@ -20,9 +28,13 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
private void OnEnable()
{
cardOriginalDataList = ReadExcel("card_data_4.csv");
//categorizeCardsByRarity();
cardOriginalDataList = ReadExcelForDyeingCard("card_data_4.csv");
effectCardOriginalDataList = ReadExcelForEffectCard("card_data_effect_4.csv");
itemCardOriginalDataList = ReadExcelForItemCard("card_data_item_4.csv");
//categorizeCardsByRarity();
existCardOriginalDataList = cardOriginalDataList;
existEffectCardOriginalDataList= effectCardOriginalDataList;
existItemCardOriginalDataList= itemCardOriginalDataList;
}
@ -109,7 +121,61 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
}
Dictionary<string, CardOriginalData> ReadExcel(string fileName)
Dictionary<string, CardOriginalData> ReadExcelForDyeingCard(string fileName)
{
string filePath = Path.Combine(Application.streamingAssetsPath, fileName);
Dictionary<string, CardOriginalData> cardOriginalDataList = new Dictionary<string, CardOriginalData>();
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader reader = new StreamReader(fs))
{
bool isFirstLine = true;
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (isFirstLine)
{
isFirstLine = false;
continue; // 跳过标题行
}
// 用逗号分隔每行数据
string[] values = line.Split(',');
CardOriginalData cardOriginalData = new CardOriginalData();
loadDatafromCsvForDyeingCard(values, cardOriginalData);
cardOriginalDataList.Add(cardOriginalData.CardId, cardOriginalData);
}
}
return cardOriginalDataList;
}
Dictionary<string, CardOriginalData> ReadExcelForEffectCard(string fileName)
{
string filePath = Path.Combine(Application.streamingAssetsPath, fileName);
Dictionary<string, CardOriginalData> cardOriginalDataList = new Dictionary<string, CardOriginalData>();
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader reader = new StreamReader(fs))
{
bool isFirstLine = true;
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
if (isFirstLine)
{
isFirstLine = false;
continue; // 跳过标题行
}
// 用逗号分隔每行数据
string[] values = line.Split(',');
CardOriginalData cardOriginalData = new CardOriginalData();
loadDatafromCsvForEffectCard(values, cardOriginalData);
cardOriginalDataList.Add(cardOriginalData.CardId, cardOriginalData);
}
}
return cardOriginalDataList;
}
Dictionary<string, CardOriginalData> ReadExcelForItemCard(string fileName)
{
string filePath = Path.Combine(Application.streamingAssetsPath, fileName);
Dictionary<string, CardOriginalData> cardOriginalDataList = new Dictionary<string, CardOriginalData>();
@ -129,31 +195,33 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
// 用逗号分隔每行数据
string[] values = line.Split(',');
CardOriginalData cardOriginalData = new CardOriginalData();
loadDatafromCsv(values, cardOriginalData);
loadDatafromCsvForItemCard(values, cardOriginalData);
cardOriginalDataList.Add(cardOriginalData.CardId, cardOriginalData);
}
}
return cardOriginalDataList;
}
private CardOriginalData loadDatafromCsv(string[] values, CardOriginalData cardOriginalData)
private CardOriginalData loadDatafromCsvForDyeingCard(string[] values, CardOriginalData cardOriginalData)
{
cardOriginalData.cardImageMark = new HashSet<CoordinateColorPair>();
//CardOriginalData cardOriginalData = CardOriginalData.Instance;
cardOriginalData.CardId = values[0];
//cardOriginalData.ChineseName = values[1];
cardOriginalData.Cost = int.Parse(values[1]);
cardOriginalData.costType = values[1];
cardOriginalData.Cost = int.Parse(values[2]);
//cardOriginalData.Rarity = int.Parse(values[3]);
cardOriginalData.CastingRange = int.Parse(values[2]);
cardOriginalData.EffectRange = values[3];
cardOriginalData.CastingRange = int.Parse(values[3]);
cardOriginalData.EffectRange = values[4];
//cardOriginalData.IsDisposable = int.Parse(values[6]) == 1;
cardOriginalData.nodesMark = values[7].Split(";");
cardOriginalData.nodesColor = values[8].Split(";");
cardOriginalData.nodesMark = values[8].Split(";");
cardOriginalData.nodesColor = values[9].Split(";");
cardOriginalData.conditionAndFunctionVal = new Dictionary<string, Tuple<string, string>>();
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.ImgPath = values[9];
cardOriginalData.CardType = Name.CardType.dyeing;
cardOriginalData.ImgPath = values[10];
for (int i = 0; i < cardOriginalData.nodesMark.Length; i++)
{
// 拆分坐标
@ -173,11 +241,94 @@ public class CardOriginalDataList : Singleton<CardOriginalDataList>
return cardOriginalData;
}
private CardOriginalData loadDatafromCsvForEffectCard(string[] values, CardOriginalData cardOriginalData)
{
cardOriginalData.cardImageMark = new HashSet<CoordinateColorPair>();
//CardOriginalData cardOriginalData = CardOriginalData.Instance;
cardOriginalData.CardId = values[0];
//cardOriginalData.ChineseName = values[1];
cardOriginalData.costType = values[1];
cardOriginalData.Cost = int.Parse(values[2]);
//cardOriginalData.Rarity = int.Parse(values[3]);
cardOriginalData.CastingRange = int.Parse(values[8]);
//cardOriginalData.EffectRange = values[3];
//cardOriginalData.IsDisposable = int.Parse(values[6]) == 1;
cardOriginalData.nodesMark = values[6].Split(";");
//cardOriginalData.nodesColor = values[8].Split(";");
cardOriginalData.conditionAndFunctionVal = new Dictionary<string, Tuple<string, string>>();
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.CardType = Name.CardType.effect;
cardOriginalData.ImgPath = values[7];
cardOriginalData.CastingRange = int.Parse(values[8]);
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>();
//cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>();
string[] condition = values[3].Split(";");
string[] function = values[4].Split(";");
string[] functionVal = values[5].Split(";");
/*string[] advantagefunction = values[9].Split(";");
string[] advantagefunctionVal = values[10].Split(";");*/
//cardOriginalData.FunctionVal = new Dictionary<string, string>();
//cardOriginalData.AdvantageFunctionVal = new Dictionary<string, string>();
for (int i = 0; i < function.Length; i++)
{
cardOriginalData.conditionAndFunctionVal.Add(condition[i], new Tuple<string, string>(function[i], functionVal[i]));
}
//getDictionaryFromString(values, cardOriginalData);
/* for (int i = 0; i < function.Length; i++)
{
cardOriginalData.originFunctionVal.Add(function[i]);
cardOriginalData.TrueFunctionVal.Add(function[i], functionVal[i]);
cardOriginalData.testTrueFunctionVal.Add(function[i], functionVal[i]);
}*/
return cardOriginalData;
}
private CardOriginalData loadDatafromCsvForItemCard(string[] values, CardOriginalData cardOriginalData)
{
cardOriginalData.cardImageMark = new HashSet<CoordinateColorPair>();
//CardOriginalData cardOriginalData = CardOriginalData.Instance;
cardOriginalData.CardId = values[0];
//cardOriginalData.ChineseName = values[1];
cardOriginalData.costType = values[1];
cardOriginalData.Cost = int.Parse(values[2]);
//cardOriginalData.Rarity = int.Parse(values[3]);
//cardOriginalData.CastingRange = int.Parse(values[2]);
//cardOriginalData.EffectRange = values[3];
//cardOriginalData.IsDisposable = int.Parse(values[6]) == 1;
cardOriginalData.nodesMark = values[5].Split(";");
//cardOriginalData.nodesColor = values[8].Split(";");
/*cardOriginalData.conditionAndFunctionVal = new Dictionary<string, Tuple<string, string>>();
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>();*/
cardOriginalData.CardType = Name.CardType.effect;
cardOriginalData.ImgPath = values[6];
cardOriginalData.CastingRange = int.Parse(values[7]);
string[] function = values[3].Split(";");
string[] functionVal = values[4].Split(";");
cardOriginalData.TrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.originFunctionVal = new HashSet<string>();
cardOriginalData.testTrueFunctionVal = new Dictionary<string, string>();
cardOriginalData.IsDisposable=true;
//getDictionaryFromString(values, cardOriginalData);
for (int i = 0; i < function.Length; i++)
{
cardOriginalData.originFunctionVal.Add(function[i]);
cardOriginalData.TrueFunctionVal.Add(function[i], functionVal[i]);
cardOriginalData.testTrueFunctionVal.Add(function[i], functionVal[i]);
}
return cardOriginalData;
}
private void getDictionaryFromString(string[] values, CardOriginalData cardOriginalData)
{
string[] condition = values[4].Split(";");
string[] function = values[5].Split(";");
string[] functionVal = values[6].Split(";");
string[] condition = values[5].Split(";");
string[] function = values[6].Split(";");
string[] functionVal = values[7].Split(";");
/*string[] advantagefunction = values[9].Split(";");
string[] advantagefunctionVal = values[10].Split(";");*/
//cardOriginalData.FunctionVal = new Dictionary<string, string>();

4
ColorlessWorld-2024-4-2/Assets/Scripts/Card/LookCard/LookCardManager.cs

@ -95,12 +95,12 @@ public class LookCardManager : MonoBehaviour
if (defaultSort == true)
{
cardEntities = cardEntities.OrderBy(classInfo => classInfo.cardOriginalData.CarType).ToList();
cardEntities = cardEntities.OrderBy(classInfo => classInfo.cardOriginalData.CardType).ToList();
}
else
{
cardEntities = cardEntities.OrderByDescending(classInfo => classInfo.cardOriginalData.CarType).ToList();
cardEntities = cardEntities.OrderByDescending(classInfo => classInfo.cardOriginalData.CardType).ToList();
}
// cardEntities.Sort((a, b) => { return int.Parse ( a.cost) > int.Parse(b.cost) ? 1 : -1; });

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

@ -275,10 +275,15 @@ public class TurnMaster : Singleton<TurnMaster>
IEnumerator ShuffleWithLosingCards()
{
int tureDrawCardsNum=commDrawCardsNum;
/* if (GameManager.Instance.playerOn.whoColour == MapUnity.WhoColour.playerColour&& LegacyManager.Instance.relicClassNameList.Contains(Name.Legacy.LegacyNode_MechanicalBoots))
/* if (GameManager.Instance.playerOn.whoColour == MapUnity.WhoColour.playerColour&& LegacyManager.Instance.relicClassNameList.Contains(Name.Legacy.LegacyNode_MechanicalBoots))
{
tureDrawCardsNum++;
}*/
//懦伎華輸蚥岊
if (MapUnityManager.Instance.getAdvNode().Equals(Name.Color.Blue))
{
tureDrawCardsNum++;
}*/
}
if (LegacyManager.Instance.relicClassNameList.Contains(Name.Legacy.LegacyNode_MagicGloves))
{
tureDrawCardsNum++;

2
ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/Whirlpool.cs

@ -27,6 +27,8 @@ public class Whirlpool : MonoBehaviour
holdeText .text =holdColorCount .ToString();
GameManager.Instance.playerUsedCard += WhirlpoolHold;
}
public void WhirlpoolHold()
{
for (int i = 0; i < holdPool.Count ; i++)

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

@ -186,20 +186,20 @@ public class GameManager : Singleton<GameManager>
}
public void GenerateEnmptyMapListForTool()
{
int currentColumn = MapManager.Instance.column - 1;
if (complete == false)
{
for (int i = 0; i < MapManager.Instance.lineForTool; i++)
for (int i = 0; i < MapManager.Instance.line; i++)
{
int currentColum = 0;
if (i % 2 == 0)
if (i <= (MapManager.Instance.line - 1) / 2)
{
currentColum = MapManager.Instance.columnForTool;
currentColumn += 1;
}
else
{
currentColum = MapManager.Instance.columnForTool - 1;
currentColumn -= 1;
}
for (int j = 0; j < currentColum; j++)
for (int j = 0; j < currentColumn; j++)
{
ToolX[i].Y.Add(null);
}

93
ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs

@ -204,7 +204,6 @@ public class MapManager : Singleton<MapManager>
yield return new WaitForSeconds(2);
yield return StartCoroutine(EnemyGenerate());
yield return StartCoroutine(CompleteGenerate());
CardManager.createCardImageMap();
}
//场地坐标系转换(新转放行)
IEnumerator TransformMapUnity()
@ -249,16 +248,64 @@ public class MapManager : Singleton<MapManager>
}
yield return null;
}
IEnumerator GenerateProcessTest()
IEnumerator TransformMapUnityForTool()
{
int x = 0, y = 0;
int count = 1;
int currentOffset = 0;
int middeline = GameManager.Instance.ToolX.Count / 2;
List<int> lineOffsetList = new List<int>();
int lineOffsetListMark = 1;
for (int i = 0; i < GameManager.Instance.ToolX.Count; i++)
{
if (count >= 2)
{
count = 0;
if (i <= middeline)
{
currentOffset += 1;
}
}
if (i < middeline)
{
lineOffsetList.Add(currentOffset);
}
else if (i > middeline)
{
currentOffset = lineOffsetList[lineOffsetList.Count - lineOffsetListMark];
lineOffsetListMark += 1;
}
for (int j = 0; j < GameManager.Instance.ToolX[i].Y.Count; j++)
{
GameManager.Instance.ToolX[i].Y[j].ResetLocation(j - currentOffset, y);
}
x = 0;
y = i + 1;
count += 1;
}
yield return null;
}
IEnumerator GenerateProcessTest()
{
yield return StartCoroutine(MapGenerateTest());
// yield return StartCoroutine(MapGenerateDefault());
yield return StartCoroutine(TransformMapUnityForTool());
yield return StartCoroutine(SetUpMapUnityForTool());
yield return StartCoroutine(SetUpMapUnityForCubeForTool());
//yield return StartCoroutine(UPMoveMapUnity());
//yield return new WaitForSeconds(2);
//yield return StartCoroutine(EnemyGenerate());
//yield return StartCoroutine(CompleteGenerate());
createCameraAboveObject(GameManager.Instance.ToolX[3].Y[3].gameObject, 10.0f, 0);
CardManager.createCardImageMap();
}
public void createCameraAboveObject(GameObject targetObject, float heightAbove, float lookDownAngle)
@ -338,6 +385,19 @@ public class MapManager : Singleton<MapManager>
yield return null;
}
IEnumerator SetUpMapUnityForCubeForTool()
{
// yield return StartCoroutine(MapGenerate());
for (int i = 0; i < GameManager.Instance.ToolX.Count; i++)
{
for (int j = 0; j < GameManager.Instance.ToolX[i].Y.Count; j++)
{
GameManager.Instance.ToolX[i].Y[j].CalCube();
}
}
yield return null;
}
IEnumerator SetUpMapUnityForTool()
{
// yield return StartCoroutine(MapGenerate());
@ -464,7 +524,10 @@ public class MapManager : Singleton<MapManager>
IEnumerator MapGenerateTest()
{
for (int i = 0; i < lineForTool; i++)
int middleLine = (line - 1) / 2;
int currentColumn = column;
for (int i = 0; i < line; i++)
{
if (i != 0)
{
@ -472,22 +535,26 @@ public class MapManager : Singleton<MapManager>
}
generatePointTest.transform.position = new Vector3(20, 20, generatePointTest.transform.position.z);
int currentColumn = columnForTool;
if (i != 0 && i % 2 != 0)
{
currentColumn = columnForTool - 1;
}
for (int j = 0; j < currentColumn; j++)
if (i <= middleLine)
{
if (i % 2 != 0 && j == 0)
if (i != 0)
{
generatePointTest.transform.position += lineOffSet / 2f;
currentColumn += 1;
generatePointTest.transform.position -= (lineOffSet / 2f) * i;
}
}
else
{
currentColumn -= 1;
generatePointTest.transform.position -= (lineOffSet / 2f) * (line - i - 1);
}
Debug.Log("ÁÐÊý£º" + currentColumn + "ÖмäÖµ£º" + middleLine);
for (int j = 0; j < currentColumn; j++)
{
var a = Instantiate(mapUnity, generatePointTest.transform.position - new Vector3(0, 2, 0), mapUnity.transform.rotation);
a.transform.SetParent(mapUnityFather);
MapUnity currentMapUnityScript = a.GetComponent<MapUnity>();
currentMapUnityScript.locationX = i;
currentMapUnityScript.locationY = j;
currentMapUnityScript.RegisterUnitForTool();

11
ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs

@ -190,12 +190,21 @@ public class MapUnity : MonoBehaviour
public void switchColor(int newColor)
{
if (whoColour!=6)
if (whoColour!=6&& whoColour != 10)
{
whoColour = newColor;
RefreshWhoColor();
}
}
public void switchColorWithoutFX(int newColor)
{
if (whoColour != 6 && whoColour != 10)
{
whoColour = newColor;
ChengePlan();
}
}
public void switchPreColor(int newColor)
{
switch (newColor )

5
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs

@ -67,9 +67,12 @@ public class AbnormalCondition : Singleton<AbnormalCondition>
//³±Êª
public const string wet = "48";
//临时攻击范围
public const string tempCastRange = "50";
public static readonly List<string> canNegativeNumberList = new List<string> { angerUpperDamage, shieldUpperValue, addDrawCard };
public static readonly List<string> playBuffList = new List<string> {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost };
public static readonly List<string> playBuffList = new List<string> {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost ,tempCastRange};
public static readonly List<string> playUndeterminedBuffList = new List<string> { angerUpperDamage, shieldUpperValue };
}

4
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs

@ -96,6 +96,10 @@ public static class CardFunction
public const string recoverHp = "47";
//³±Êª
public const string wet = "48";
//将目标地块的颜色扩散至周围
public const string spreadColorToAround = "49";
//临时攻击范围
public const string tempCastRange = "50";
//·ÅÖÃÎïÆ·
public const string placeTrees = "51";

2
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/PlayerState_SO.cs

@ -29,6 +29,8 @@ public class PlayerState_SO : ScriptableObject
public int cardRewardNumToGget;//实际可以选择卡牌奖励的数量
public int castRange;
[Header("资源系统")]
public int money;

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

@ -82,9 +82,9 @@ public static class Name
public static class CardType
{
public const int Attack = 1;
public const int Skill = 2;
public const int Ability = 3;
public const string dyeing = "dyeing";
public const string effect = "effect";
public const string item = "item";
}
public static class NodeColor
@ -100,7 +100,7 @@ public static class Name
public static int stringColorToint(string color)
{
int intcolor = 1;
int intcolor = 10;
switch (color)
{
case Color.Red:
@ -127,6 +127,22 @@ public static class Name
public const string White = "white";
public const string Black = "black";
public const string Metal = "metal";
}
public static class Faction
{
public const string Player = "player";
public const string Enemy = "enemy";
public const string Neutral = "neutral";
}
public static class CostType
{
public const string energy = "1";
public const string step = "2";
public const string health = "3";
public const string node = "4";
}
public static class CardFunctionString

31
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs

@ -146,11 +146,40 @@ public class getNodeTools
return mapUnity;
}
public static MapUnity LocationToGetNodeForTool(int locationX, int locationY)
{
int x = 0;
Debug.Log("索引坐标:" + locationX + locationY);
MapUnity mapUnity = null;
//计算node在列表的第几位
try
{
for (int i = 0; i < GameManager.Instance.ToolX[locationY].Y.Count; i++)
{
if (GameManager.Instance.ToolX[locationY].Y[i].locationX == locationX)
{
x = i;
mapUnity = GameManager.Instance.ToolX[locationY].Y[x];
break;
}
}
}
catch (Exception e)
{
mapUnity = null;
}
return mapUnity;
}
public static MapUnity getToolNodeWithCube(int q, int s, int r)
{
//计算立方坐标
(int x, int y) = MathTool.CubeToAxial(q, s, r);
MapUnity result = GameManager.Instance.ToolX[x].Y[y];
Debug.Log("CubeToAxial的x是" + x + "CubeToAxial的y是" + y);
MapUnity result = LocationToGetNodeForTool(x, y);
return result;
}
public static HashSet<MapUnity> getAllNodes()

1
ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs

@ -38,6 +38,7 @@ public class BuffDataManager : Singleton<BuffDataManager>
abnormalCondition.Add("35", new Buff_DoubleSettle());
abnormalCondition.Add("36", new Buff_NextTurnExtraOneCost());
abnormalCondition.Add("48", new Buff_Wet());
abnormalCondition.Add("50", new Buff_TempCastRange());
abnormalCondition.Add("106", new Buff_flashPoint());

46
ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs

@ -1,12 +1,15 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Rendering;
using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray;
using static UnityEngine.Rendering.DebugUI;
public class CardManager : Singleton<CardManager>
@ -198,13 +201,16 @@ public class CardManager : Singleton<CardManager>
{
if (CardManager.Instance.cardImageMap.TryGetValue(cardOriginalData.cardImageMark, out Sprite sprite))
{
Debug.Log("setCardImage进入if");
cardEntity.cardImage.sprite = sprite;
}
else
{
Debug.Log("setCardImage进入else");
createCardImage(cardOriginalData, euler, currentNode);
setCardImageTest(cardOriginalData, euler, currentNode, cardEntity);
}
//cardEntity.cardImage.sprite = createCardImage(cardOriginalData, euler, currentNode);
}
public static void createCardImageMap()
{
@ -217,13 +223,14 @@ public class CardManager : Singleton<CardManager>
}
public static void createCardImage(CardOriginalData cardOriginalData, float euler, MapUnity currentNode)
public static Sprite createCardImage(CardOriginalData cardOriginalData, float euler, MapUnity currentNode)
{
for (int i = 0; i < GameManager.Instance.ToolX.Count; i++)
{
for (int j = 0; j < GameManager.Instance.ToolX[i].Y.Count; j++)
{
GameManager.Instance.ToolX[i].Y[j].whoColour=Name.NodeColor.White;
GameManager.Instance.ToolX[i].Y[j].switchColorWithoutFX(Name.NodeColor.White);
GameManager.Instance.ToolX[i].Y[j].gameObject.SetActive(false);
}
}
List<(int, int, int)> cubeList = new List<(int, int, int)>();
@ -243,23 +250,42 @@ public class CardManager : Singleton<CardManager>
}
List<(int, int, int)> rotatedCubeList = new List<(int, int, int)>();
rotatedCubeList = MathTool.RotateCoordinates(cubeList, intEuler);
for (int i = 0; i < rotatedCubeList.Count; i++)
{
Debug.Log("rotatedCube的Q是" + rotatedCubeList[i].Item1 + "rotatedCube的S是" + rotatedCubeList[i].Item2 + "rotatedCube的R是" + rotatedCubeList[i].Item3);
}
List<(int, int, int)> trueCubeList = new List<(int, int, int)>();
Debug.Log("currentNode的Q是" + currentNode.cubeQ + "currentNode的S是" + currentNode.cubeS + "currentNode的R是" + currentNode.cubeR);
trueCubeList = MathTool.TranslateHexesToNewOrigin(rotatedCubeList, (currentNode.cubeQ, currentNode.cubeS, currentNode.cubeR));
for (int i = 0; i < trueCubeList.Count; i++)
{
MapUnity endNode = new MapUnity();
Debug.Log("endNode的Q是" + trueCubeList[i].Item1 + "endNode的S是" + trueCubeList[i].Item2 + "endNode的R是" + trueCubeList[i].Item3);
endNode = getNodeTools.getToolNodeWithCube(trueCubeList[i].Item1, trueCubeList[i].Item2, trueCubeList[i].Item3);
if (endNode != null)
{
Debug.Log("Ⱦɫ³É¹¦" + cardOriginalData.nodesColor[i]);
endNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[i]));
endNode.switchColorWithoutFX(Name.stringColorToint(cardOriginalData.nodesColor[i]));
endNode.gameObject.SetActive(true);
//endNode.influenced = true;
}
}
// 分别提取横纵坐标
var xCoords = cardOriginalData.nodesMark.Select(coord => int.Parse(coord.Split('_')[0])).ToArray();
var yCoords = cardOriginalData.nodesMark.Select(coord => int.Parse(coord.Split('_')[1])).ToArray();
// 计算横纵坐标的最大差值
int maxXDiff = xCoords.Max() - xCoords.Min();
int maxYDiff = yCoords.Max() - yCoords.Min();
// 比较最大差值
int maxDiff = Math.Max(maxXDiff, maxYDiff);
RenderTexture renderTexture = new RenderTexture(512, 512, 24);
Camera renderCamera = MapManager.Instance.cameraObject.GetComponent<Camera>();
renderCamera.targetTexture = renderTexture;
Texture2D texture = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false);
cameraAdjust(maxDiff, renderCamera, currentNode);
RenderTexture.active = renderCamera.targetTexture;
renderCamera.Render();
texture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
@ -269,6 +295,20 @@ public class CardManager : Singleton<CardManager>
material.mainTexture = renderTexture;
Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
CardManager.Instance.cardImageMap.Add(cardOriginalData.cardImageMark, sprite);
return sprite;
}
public static void cameraAdjust(int distance, Camera camera,MapUnity target)
{
// 设置最大差值对应的摄像机距离范围
float minDistance = 1.5f;
float maxDistance = 12f;
Debug.Log("distance是" + distance);
float newDistance = Mathf.Lerp(minDistance, maxDistance, distance / 20f); // 假设最大差值不超过100
Debug.Log("newDistance是" + newDistance);
Vector3 direction = (camera.transform.position - target.transform.position).normalized;
camera.transform.position = target.transform.position + direction * newDistance;
camera.orthographicSize = newDistance;
}
}

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

@ -125,7 +125,21 @@ public class DestructionManager : Singleton<DestructionManager>
{
trueCost++;
}
GameManager.Instance.playerState.currentCost -= trueCost;
switch (cardOriginalData.costType)
{
case Name.CostType.energy:
GameManager.Instance.playerState.currentCost -= trueCost;
break;
case Name.CostType.step:
GameManager.Instance.playerState.currentStepRange -= trueCost;
break;
case Name.CostType.health:
GameManager.Instance.playerState.currentHP -= trueCost;
break;
case Name.CostType.node:
break;
}
//}
yield return StartCoroutine(settleStage2(cardOriginalData, influencePreviewPool, cardIndex, leftCost, targetNode));

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

@ -17,24 +17,57 @@ public class MapUnityManager : Singleton<MapUnityManager>
public int metalNodeCount;
public int playerNodeCount;
public int neutralNodeCount;
public int enemyNodeCount;
public string getAdvNode()
{
string advColor = "";
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 },
{ Name.Color.Metal, metalNodeCount },
{ Name.Faction.Player, playerNodeCount },
{ Name.Faction.Neutral, neutralNodeCount },
{ Name.Faction.Enemy, enemyNodeCount },
};
string advColor= GetKeyWithMaxValue(kvps);
//Debug.Log(advColor);
string advFaction = GetKeyWithMaxValue(kvps);
switch (advFaction)
{
case Name.Faction.Player:
Dictionary< string,int> playerNode = new Dictionary<string, int>
{
{ Name.Color.Red, redNodeCount },
{ Name.Color.Blue, blueNodeCount },
{ Name.Color.Green, greenNodeCount },
};
advColor = GetKeyWithMaxValue(playerNode);
break;
case Name.Faction.Neutral:
advColor = Name.Faction.Neutral;
break;
case Name.Faction.Enemy:
Dictionary<string, int> enemyNode = new Dictionary<string, int>
{
{ Name.Color.Black, blackNodeCount },
};
advColor = GetKeyWithMaxValue(enemyNode);
break;
default:
advColor=Name.none;
break;
}
//Debug.Log("advColorÊÇ"+ advColor);
return advColor;
}
public static string GetKeyWithMaxValue(Dictionary<string, int> dictionary)
public string GetKeyWithMaxValue(Dictionary<string, int> dictionary)
{
if (dictionary == null || dictionary.Count == 0)
{
throw new ArgumentException("字典不能为空或为 null");
@ -98,6 +131,10 @@ public class MapUnityManager : Singleton<MapUnityManager>
}
}
redNodeCount = red; blueNodeCount = blue; greenNodeCount = green; whiteNodeCount = white; blackNodeCount = black;metalNodeCount =metal;
playerNodeCount = redNodeCount + blueNodeCount + greenNodeCount;
neutralNodeCount = whiteNodeCount + metalNodeCount;
enemyNodeCount = blackNodeCount;
}
}
@ -134,10 +171,10 @@ public class MapUnityManager : Singleton<MapUnityManager>
return reachableNodes;
}
public void getCastPool(string effectRange,int castRange)
public void getCastPool(int castRange)
{
MapUnity playerOn = GameManager.Instance.playerOn;
if (EffectRange.speRange.Contains(effectRange))
/* if (EffectRange.speRange.Contains(effectRange))
{
for (int i = 0; i < 6; i++)
{
@ -152,6 +189,11 @@ public class MapUnityManager : Singleton<MapUnityManager>
{
castPool.Remove(playerOn);
}
}*/
for (int i = 0; i < 6; i++)
{
getNodeTools.getLongNodes(playerOn, i, castRange, castPool);
}
//castPool=MathTool.RemoveDuplicates(castPool);
//Debug.Log("去除前数量是" + castPool.Count);

34
ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs

@ -85,7 +85,10 @@ public class SettlementManager : Singleton<SettlementManager>
public List <int> PreviewColorMapUnity(CardOriginalData cardOriginalData, MapUnity targetNode)
{
List<int> mapColorCount = new List<int>() { 0, 0, 0, 0, 0, 0, 0 };//1red,2white,3blue,4green,5black,6matel
if (cardOriginalData.CardType != Name.CardType.dyeing)
{
return mapColorCount;
}
Vector3 face = targetNode.transform.position - GameManager.Instance.playerOn.transform.position;
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180;
List<(int, int, int)> cubeList = new List<(int, int, int)>();
@ -134,6 +137,10 @@ public class SettlementManager : Singleton<SettlementManager>
//预览涂色颜色
public void PreviewSwitchColor(CardOriginalData cardOriginalData, MapUnity targetNode)
{
if (cardOriginalData.CardType != Name.CardType.dyeing)
{
return;
}
Vector3 face = targetNode.transform.position - GameManager.Instance.playerOn.transform.position;
float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180;
List<(int, int, int)> cubeList = new List<(int, int, int)>();
@ -341,7 +348,7 @@ public class SettlementManager : Singleton<SettlementManager>
foreach (var cardId in TurnMaster.Instance.cardDeck.cardList)
{
CardOriginalData cardOriginalData = new CardOriginalData();
if (CardOriginalDataList.Instance.cardOriginalDataList.TryGetValue(cardId,out cardOriginalData)&&cardOriginalData.CarType==CardType.attack)
if (CardOriginalDataList.Instance.cardOriginalDataList.TryGetValue(cardId,out cardOriginalData)&&cardOriginalData.CardType==Name.CardType.effect)
{
attackCardOriginalDataList.Add(cardId);
}
@ -633,6 +640,9 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.recoverHp:
Usermanager.Instance.recoverHp(int.Parse(kvp.Value));
break;
case CardFunction.spreadColorToAround:
spreadColorToAround(int.Parse(kvp.Value),targetNode);
break;
case CardFunction.ember:
case CardFunction.enhanceShield:
case CardFunction.firm:
@ -644,6 +654,7 @@ public class SettlementManager : Singleton<SettlementManager>
case CardFunction.doubleSettle:
case CardFunction.nextTurnExtraOneCost:
case CardFunction.immunity:
case CardFunction.tempCastRange:
Usermanager.Instance.SufferPlayerAbnormalCondition(kvp.Key, int.Parse(kvp.Value));
break;
case CardFunction.discard:
@ -679,15 +690,30 @@ public class SettlementManager : Singleton<SettlementManager>
}
}
dyeingWork(cardOriginalData,targetNode);
if (cardOriginalData.CardType == Name.CardType.dyeing)
{
dyeingWork(cardOriginalData, targetNode);
}
Usermanager.Instance.RefreshPlayerBuffIcon();
GameManager.Instance.SyncColourCountUI();
EnemyManager.Instance.enemyRefreshEnemyBuffIcon(0);
//广播释放完一张卡牌的接口
GameManager.Instance.BroadCastPlayerUsedCard();
}
public void spreadColorToAround(int roundNum,MapUnity target)
{
int targetColor=target.whoColour;
HashSet<MapUnity> influencePreviewPoolSet = new HashSet<MapUnity> { target };
getNodeTools.getCircleNode(influencePreviewPoolSet, roundNum);
List<MapUnity> targetNodes = new List<MapUnity>(influencePreviewPoolSet);
targetNodes.Remove(target);
foreach(MapUnity mapUnity in targetNodes)
{
mapUnity.switchColor(targetColor);
}
}
//预期伤害
public void expectSettle(CardOriginalData cardOriginalData)
{

4
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 副本.csv

@ -0,0 +1,4 @@
ID,费用类型,费用,施法范围,作用范围,条件,功能,数值,地块标记,地块颜色,图片路径,名称
1001,1,1,2,3_1,none,1,5,0_0;1_0;2_0,white;white;white,CardIcon/1010,射击
1002,1,1,2,3_1,none,2,4,0_0;-1_1;-1_-1,white;white;white,CardIcon/1010,屏障
1003,1,1,2,3_1,none,,,0_0;1_0;2_0;3_0;4_0,white;white;white;white;white,CardIcon/1010,喷射
1 ID 费用类型 费用 施法范围 作用范围 条件 功能 数值 地块标记 地块颜色 图片路径 名称
2 1001 1 1 2 3_1 none 1 5 0_0;1_0;2_0 white;white;white CardIcon/1010 射击
3 1002 1 1 2 3_1 none 2 4 0_0;-1_1;-1_-1 white;white;white CardIcon/1010 屏障
4 1003 1 1 2 3_1 none 0_0;1_0;2_0;3_0;4_0 white;white;white;white;white CardIcon/1010 喷射

7
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 副本.csv.meta

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

6
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4.csv

@ -1,2 +1,4 @@
ID,费用,施法范围,作用范围,条件,功能,数值,地块标记,地块颜色,图片路径
1001,1,2,3_1,red>8;blue<20,1;2,5;4,0_0;1_0;2_0,red;red;red,CardIcon/1010
ID,费用类型,费用,施法范围,作用范围,条件,功能,数值,地块标记,地块颜色,图片路径,名称
1001,1,1,2,3_1,none,1,5,0_0;1_0;2_0,white;white;white,CardIcon/1010,射击
1002,1,1,2,3_1,none,2,4,0_0;-1_1;-1_-1,white;white;white,CardIcon/1010,屏障
1003,1,1,2,3_1,none,,,0_0;1_0;2_0;3_0;4_0,white;white;white;white;white,CardIcon/1010,喷射

1 ID 费用类型 费用 施法范围 作用范围 条件 功能 数值 地块标记 地块颜色 图片路径 名称
2 1001 1 1 2 3_1 red>8;blue<20 none 1;2 1 5;4 5 0_0;1_0;2_0 red;red;red white;white;white CardIcon/1010 射击
3 1002 1 1 2 3_1 none 2 4 0_0;-1_1;-1_-1 white;white;white CardIcon/1010 屏障
4 1003 1 1 2 3_1 none 0_0;1_0;2_0;3_0;4_0 white;white;white;white;white CardIcon/1010 喷射

3
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv

@ -0,0 +1,3 @@
ID,消耗类型,消耗数值,条件,功能,数值,地块标记,图片路径,施法范围
2001,1,1,none,49,1,0_0,CardIcon/1010,2
2002,1,1,none,40_50,-2_4,none,CardIcon/1010,0
1 ID 消耗类型 消耗数值 条件 功能 数值 地块标记 图片路径 施法范围
2 2001 1 1 none 49 1 0_0 CardIcon/1010 2
3 2002 1 1 none 40_50 -2_4 none CardIcon/1010 0

7
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv.meta

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

2
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv

@ -0,0 +1,2 @@
ID,消耗类型,消耗数值,功能,数值,地块标记,图片路径,施法范围
3001,1,1,1;2,5;4,0_0,CardIcon/1010,2
1 ID 消耗类型 消耗数值 功能 数值 地块标记 图片路径 施法范围
2 3001 1 1 1;2 5;4 0_0 CardIcon/1010 2

7
ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv.meta

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

0
ColorlessWorld-2024-4-2/Assets/~UnityDirMonSyncFile~f90d9bb2ab8ce4942acf5cee5050c7a4~

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

Binary file not shown.
Loading…
Cancel
Save