diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/PlayerState.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/PlayerState.asset index 228e88c4..e9f2d989 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/PlayerState.asset +++ b/ColorlessWorld-2024-4-2/Assets/GameDate/PlayerState.asset @@ -23,4 +23,5 @@ MonoBehaviour: currentHP: 68 cardRewardNumToChoose: 0 cardRewardNumToGget: 0 + castRange: 2 money: 0 diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset index e3391e16..c3ab45f0 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset +++ b/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 diff --git a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity b/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity index 93eb83bf..4a65351a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity +++ b/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} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs new file mode 100644 index 00000000..76f1ed18 --- /dev/null +++ b/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; + } +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Buff/Buff_TempCastRange.cs.meta new file mode 100644 index 00000000..3bddffa2 --- /dev/null +++ b/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: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs index 0167da1c..24807643 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs +++ b/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(); //重新调用范围预览 //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); //更新涂色预览材质 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs index d018fe73..2968dc08 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs +++ b/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> 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(); 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); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs index e8a8c381..b78fde10 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs +++ b/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 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 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs index 84159b5d..238d4326 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs @@ -10,8 +10,16 @@ public class CardOriginalDataList : Singleton { public Dictionary cardOriginalDataList; + public Dictionary effectCardOriginalDataList; + + public Dictionary itemCardOriginalDataList; + public Dictionary existCardOriginalDataList = new Dictionary(); + public Dictionary existEffectCardOriginalDataList = new Dictionary(); + + public Dictionary existItemCardOriginalDataList = new Dictionary(); + public Dictionary commCardOriginalDataList=new Dictionary(); public Dictionary rareCardOriginalDataList = new Dictionary(); @@ -20,9 +28,13 @@ public class CardOriginalDataList : Singleton 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 } - Dictionary ReadExcel(string fileName) + Dictionary ReadExcelForDyeingCard(string fileName) + { + string filePath = Path.Combine(Application.streamingAssetsPath, fileName); + Dictionary cardOriginalDataList = new Dictionary(); + 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 ReadExcelForEffectCard(string fileName) + { + string filePath = Path.Combine(Application.streamingAssetsPath, fileName); + Dictionary cardOriginalDataList = new Dictionary(); + 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 ReadExcelForItemCard(string fileName) { string filePath = Path.Combine(Application.streamingAssetsPath, fileName); Dictionary cardOriginalDataList = new Dictionary(); @@ -129,31 +195,33 @@ public class CardOriginalDataList : Singleton // 用逗号分隔每行数据 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(); //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>(); cardOriginalData.TrueFunctionVal = new Dictionary(); cardOriginalData.testTrueFunctionVal = new Dictionary(); cardOriginalData.originFunctionVal = new HashSet(); - 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 return cardOriginalData; } + private CardOriginalData loadDatafromCsvForEffectCard(string[] values, CardOriginalData cardOriginalData) + { + cardOriginalData.cardImageMark = new HashSet(); + //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>(); + cardOriginalData.TrueFunctionVal = new Dictionary(); + cardOriginalData.testTrueFunctionVal = new Dictionary(); + cardOriginalData.originFunctionVal = new HashSet(); + cardOriginalData.CardType = Name.CardType.effect; + cardOriginalData.ImgPath = values[7]; + cardOriginalData.CastingRange = int.Parse(values[8]); + cardOriginalData.TrueFunctionVal = new Dictionary(); + cardOriginalData.originFunctionVal = new HashSet(); + //cardOriginalData.testTrueFunctionVal = new Dictionary(); + 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(); + //cardOriginalData.AdvantageFunctionVal = new Dictionary(); + for (int i = 0; i < function.Length; i++) + { + cardOriginalData.conditionAndFunctionVal.Add(condition[i], new Tuple(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(); + //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>(); + cardOriginalData.TrueFunctionVal = new Dictionary(); + cardOriginalData.testTrueFunctionVal = new Dictionary(); + cardOriginalData.originFunctionVal = new HashSet();*/ + 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(); + cardOriginalData.originFunctionVal = new HashSet(); + cardOriginalData.testTrueFunctionVal = new Dictionary(); + 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(); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/LookCard/LookCardManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/LookCard/LookCardManager.cs index 7d4a6411..3a02e445 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/LookCard/LookCardManager.cs +++ b/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; }); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs index 4769ff04..fcede658 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs @@ -275,10 +275,15 @@ public class TurnMaster : Singleton 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++; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/Whirlpool.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/Whirlpool.cs index 5943905d..d885eabc 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/Whirlpool.cs +++ b/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++) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs index 8206f493..f7845f1e 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs @@ -186,20 +186,20 @@ public class GameManager : Singleton } 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); } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs index d2a54fa7..0c156825 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs @@ -204,7 +204,6 @@ public class MapManager : Singleton 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 } 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 lineOffsetList = new List(); + 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 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 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 } 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(); - currentMapUnityScript.locationX = i; currentMapUnityScript.locationY = j; currentMapUnityScript.RegisterUnitForTool(); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs index c73c1e76..ab2fe902 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs +++ b/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 ) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs index f4a1cef7..87befd6f 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/AbnormalCondition.cs @@ -67,9 +67,12 @@ public class AbnormalCondition : Singleton //潮湿 public const string wet = "48"; + //临时攻击范围 + public const string tempCastRange = "50"; + public static readonly List canNegativeNumberList = new List { angerUpperDamage, shieldUpperValue, addDrawCard }; - public static readonly List playBuffList = new List {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost }; + public static readonly List playBuffList = new List {firm, addDrawCard, upSpeed , immunity, fireShield, doubleSettle, nextTurnExtraOneCost ,tempCastRange}; public static readonly List playUndeterminedBuffList = new List { angerUpperDamage, shieldUpperValue }; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs index be803435..e59cf0a2 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs +++ b/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"; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/PlayerState_SO.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/PlayerState_SO.cs index 22bc5cc8..d72edfe3 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/PlayerState_SO.cs +++ b/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; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs index eb00bccd..6a0c2ed3 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Name.cs +++ b/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 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs index f9458b14..0115bce6 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs +++ b/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 getAllNodes() diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs index 7efe94e3..4a67d5c7 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/BuffDataManager.cs @@ -38,6 +38,7 @@ public class BuffDataManager : Singleton 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()); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs index 5686497f..b064ad3a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/CardManager.cs +++ b/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 @@ -198,13 +201,16 @@ public class CardManager : Singleton { 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 } - 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 } 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(); 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 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; } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs index 2d997fb7..f4b8a730 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/DestructionManager.cs @@ -125,7 +125,21 @@ public class DestructionManager : Singleton { 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)); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs index 0c86c4cc..2cee6d61 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs @@ -17,24 +17,57 @@ public class MapUnityManager : Singleton public int metalNodeCount; + public int playerNodeCount; + + public int neutralNodeCount; + + public int enemyNodeCount; + + public string getAdvNode() { + string advColor = ""; Dictionary kvps = new Dictionary { - { 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 + { + { 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 enemyNode = new Dictionary + { + { Name.Color.Black, blackNodeCount }, + }; + advColor = GetKeyWithMaxValue(enemyNode); + break; + default: + advColor=Name.none; + break; + + } + //Debug.Log("advColor是"+ advColor); return advColor; } - public static string GetKeyWithMaxValue(Dictionary dictionary) + public string GetKeyWithMaxValue(Dictionary dictionary) { + + if (dictionary == null || dictionary.Count == 0) { throw new ArgumentException("字典不能为空或为 null"); @@ -98,6 +131,10 @@ public class MapUnityManager : Singleton } } 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 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 { castPool.Remove(playerOn); } + }*/ + + for (int i = 0; i < 6; i++) + { + getNodeTools.getLongNodes(playerOn, i, castRange, castPool); } //castPool=MathTool.RemoveDuplicates(castPool); //Debug.Log("去除前数量是" + castPool.Count); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs index ad311b5b..8ab6aa45 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs @@ -85,7 +85,10 @@ public class SettlementManager : Singleton public List PreviewColorMapUnity(CardOriginalData cardOriginalData, MapUnity targetNode) { List mapColorCount = new List() { 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 //预览涂色颜色 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 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 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 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 } } - 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 influencePreviewPoolSet = new HashSet { target }; + getNodeTools.getCircleNode(influencePreviewPoolSet, roundNum); + List targetNodes = new List(influencePreviewPoolSet); + targetNodes.Remove(target); + foreach(MapUnity mapUnity in targetNodes) + { + mapUnity.switchColor(targetColor); + } + } //预期伤害 public void expectSettle(CardOriginalData cardOriginalData) { diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 鍓湰.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 鍓湰.csv new file mode 100644 index 00000000..2c534d39 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 鍓湰.csv @@ -0,0 +1,4 @@ +锘縄D,璐圭敤绫诲瀷,璐圭敤,鏂芥硶鑼冨洿,浣滅敤鑼冨洿,鏉′欢,鍔熻兘,鏁板,鍦板潡鏍囪,鍦板潡棰滆壊,鍥剧墖璺緞,鍚嶇О +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,鍠峰皠 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 鍓湰.csv.meta b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 鍓湰.csv.meta new file mode 100644 index 00000000..d74d6715 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4 - 鍓湰.csv.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0c939aa3ecbdd9c44b6b59502ed35b35 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4.csv index 49c17d37..2c534d39 100644 --- a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4.csv +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_4.csv @@ -1,2 +1,4 @@ -锘縄D,璐圭敤,鏂芥硶鑼冨洿,浣滅敤鑼冨洿,鏉′欢,鍔熻兘,鏁板,鍦板潡鏍囪,鍦板潡棰滆壊,鍥剧墖璺緞 -1001,1,2,3_1,red>8;blue<20,1;2,5;4,0_0;1_0;2_0,red;red;red,CardIcon/1010 +锘縄D,璐圭敤绫诲瀷,璐圭敤,鏂芥硶鑼冨洿,浣滅敤鑼冨洿,鏉′欢,鍔熻兘,鏁板,鍦板潡鏍囪,鍦板潡棰滆壊,鍥剧墖璺緞,鍚嶇О +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,鍠峰皠 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv new file mode 100644 index 00000000..1e46fb9e --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv @@ -0,0 +1,3 @@ +锘縄D,娑堣楃被鍨,娑堣楁暟鍊,鏉′欢,鍔熻兘,鏁板,鍦板潡鏍囪,鍥剧墖璺緞,鏂芥硶鑼冨洿 +2001,1,1,none,49,1,0_0,CardIcon/1010,2 +2002,1,1,none,40_50,-2_4,none,CardIcon/1010,0 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv.meta b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_effect_4.csv.meta new file mode 100644 index 00000000..a04e6f16 --- /dev/null +++ b/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: diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv new file mode 100644 index 00000000..08745ccb --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv @@ -0,0 +1,2 @@ +锘縄D,娑堣楃被鍨,娑堣楁暟鍊,鍔熻兘,鏁板,鍦板潡鏍囪,鍥剧墖璺緞,鏂芥硶鑼冨洿 +3001,1,1,1;2,5;4,0_0,CardIcon/1010,2 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv.meta b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_item_4.csv.meta new file mode 100644 index 00000000..0672a030 --- /dev/null +++ b/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: diff --git a/ColorlessWorld-2024-4-2/Assets/~UnityDirMonSyncFile~f90d9bb2ab8ce4942acf5cee5050c7a4~ b/ColorlessWorld-2024-4-2/Assets/~UnityDirMonSyncFile~f90d9bb2ab8ce4942acf5cee5050c7a4~ new file mode 100644 index 00000000..e69de29b diff --git a/ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache b/ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache index 02a00143..b1bce398 100644 Binary files a/ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache and b/ColorlessWorld-2024-4-2/obj/Debug/Assembly-CSharp-Editor.csproj.AssemblyReference.cache differ