From 630b0e0959a16b67e92960c259a8bb0b4e912ddc Mon Sep 17 00:00:00 2001 From: yjm484 <171359351@qq.com> Date: Wed, 26 Jun 2024 06:12:12 +0800 Subject: [PATCH] =?UTF-8?q?0626=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Scenes/SampleScene.unity | 49 +- .../Assets/Scripts/Card/CardDrag.cs | 35 +- .../Assets/Scripts/Card/CardEnity_OldSave.cs | 525 ------------------ .../Assets/Scripts/Card/CardEntity.cs | 37 +- .../Assets/Scripts/Card/CardOriginalData.cs | 33 +- .../Scripts/Card/CardOriginalDataList.cs | 27 +- .../Assets/Scripts/Card/TurnMaster.cs | 5 +- .../Assets/Scripts/GameManager.cs | 25 + .../Scripts/Handler/EffectRangeHandler1.cs | 51 ++ .../EffectRangeHandler1.cs.meta} | 2 +- .../Scripts/Handler/EffectRangeHandlerBase.cs | 6 +- .../Assets/Scripts/MapUnity.cs | 2 + .../Assets/Scripts/Player.cs | 14 +- .../Assets/Scripts/Tool/CardFunction.cs | 2 + .../Scripts/manager/GameRoundManager.cs | 6 +- .../Assets/Scripts/manager/MapUnityManager.cs | 41 ++ .../Scripts/manager/MapUnityManager.cs.meta | 11 + .../Scripts/manager/SettlementManager.cs | 156 +++--- .../Assets/Scripts/manager/Usermanager.cs | 6 +- .../Assets/data/card_data.csv | 18 +- .../UserSettings/Layouts/default-2022.dwlt | 136 ++--- 21 files changed, 448 insertions(+), 739 deletions(-) delete mode 100644 ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEnity_OldSave.cs create mode 100644 ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs rename ColorlessWorld-2024-4-2/Assets/Scripts/{Card/CardEnity_OldSave.cs.meta => Handler/EffectRangeHandler1.cs.meta} (83%) create mode 100644 ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs create mode 100644 ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs.meta diff --git a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity b/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity index 47a63abe..e48cb726 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity +++ b/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity @@ -3283,6 +3283,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0ddfb517f3ae49c42b2c7ff57e12f8d8, type: 3} m_Name: m_EditorClassIdentifier: + health: 0 + shield: 0 totalCost: 0 --- !u!1 &514899946 GameObject: @@ -6284,7 +6286,7 @@ MonoBehaviour: cardPrefab: {fileID: 3410471369990512392, guid: d255d4b8a06372542bcbeef98cf4761c, type: 3} cardList: 00000000 - cardDeck: 112700001127000011270000112700001127000011270000112700001127000011270000112700001127000011270000 + cardDeck: 1127000012270000132700001427000015270000162700001727000018270000192700001a2700001b2700001c2700001d2700001e270000 --- !u!4 &1190351098 Transform: m_ObjectHideFlags: 0 @@ -9035,6 +9037,50 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1704571197} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1734618459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1734618460} + - component: {fileID: 1734618461} + m_Layer: 0 + m_Name: MapUnityManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1734618460 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734618459} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1819238997} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1734618461 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734618459} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d344126aa8082fa48b7e5f19eff09202, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &1748859173 GameObject: m_ObjectHideFlags: 0 @@ -9663,6 +9709,7 @@ Transform: - {fileID: 514899947} - {fileID: 1802141879} - {fileID: 1285317928} + - {fileID: 1734618460} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1824824473 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs index 22ae9582..8f665379 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs @@ -7,6 +7,7 @@ using UnityEngine.InputSystem; using static EnemyNode; using static UnityEngine.Rendering.DebugUI; using System; +using Unity.VisualScripting; public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { @@ -57,16 +58,34 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag private void disCardCheck() { + Dictionary trueFunctionVal = new Dictionary(); + bool canAdv = GameManager.Instance.SyncColourCountUI(); + if (canAdv) + { + trueFunctionVal.AddRange(cardEntity.cardOriginalData.AdvantageFunctionVal); + + } + else + { + trueFunctionVal.AddRange(cardEntity.cardOriginalData.FunctionVal); + } int drawCardNum = 0; - for (int i = 0; i < cardEntity.cardOriginalData.Function.Length; i++) + foreach (KeyValuePair kvp in trueFunctionVal) { - switch (cardEntity.cardOriginalData.Function[i]) + switch (kvp.Key) { case CardFunction.drawCard: - drawCardNum += int.Parse(cardEntity.cardOriginalData.FunctionVal[i]); + drawCardNum += int.Parse(kvp.Value); break; + + } + } + foreach (KeyValuePair kvp in trueFunctionVal) + { + switch (kvp.Key) + { case CardFunction.discard: - if (TurnMaster.Instance.handCard.getHandCardList().Count - int.Parse(cardEntity.cardOriginalData.FunctionVal[i]) - 1 + drawCardNum < 0) + if (TurnMaster.Instance.handCard.getHandCardList().Count - int.Parse(kvp.Value) - 1 + drawCardNum < 0) { Debug.Log("没有足够的牌可以弃牌"); cardEntity.costEnough = false; @@ -218,6 +237,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag MapUnity playerOnNode = GameManager.Instance.playerOn.transform.GetComponent(); var handlers = new Dictionary { + {EffectRange.range1,new EffectRangeHandler1(currentNode,euler) }, {EffectRange.range2,new EffectRangeHandler2(currentNode,euler) }, {EffectRange.range3_1,new EffectRangeHandler3_1(currentNode,euler) }, {EffectRange.range3_2,new EffectRangeHandler3_2(currentNode,euler) }, @@ -564,7 +584,12 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag } - + cardEntity.influencePreviewPool.Clear(); + GetComponent().blocksRaycasts = true; + + //其他位置都归位 + transform.SetParent(originalParent); + transform.localPosition = originalpoint; yield break; }//范围类,需要指定被影响的节点才能释放 else diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEnity_OldSave.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEnity_OldSave.cs deleted file mode 100644 index 24ae7b23..00000000 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEnity_OldSave.cs +++ /dev/null @@ -1,525 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using Unity.VisualScripting; -using UnityEngine; -using UnityEngine.UI; -using UnityEngine.EventSystems; -using UnityEngine.InputSystem; - -public class CardEntity_OldSave : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler -{ - public CardOriginalData cardOriginalData; - //public CardOriginalData cardData; - - public int cardId; - public int CardId - { - get { return cardId; } - set { cardId = value; } - } - - // public Vector3 OriginTransform; - //private Vector3 EndTransform; - [Header("拖拽参数")] - public Transform originalParent; - public Vector3 originalpoint; - - bool canUse = true;//决定卡牌是否可以释放 - bool choosed;//标识卡牌是否被选中 - - [Header("贝塞尔曲线瞄准")] - public GameObject ainPanle; - - [Header("影响格参数")] - public MapUnity currentNode;//瞄准的格子 - public List influencePreviewPool;//卡牌的影响范围 - - [Header("卡牌拖拽状态")] - public CardDragState dragState; - public enum CardDragState - { - onBeginDrag, - onDrag, - onEndDrag, - noDrag - } - public EventSystem eventSystem; - PointerEventData eventData; - List result = new List(); - - public void Start() - { - //cardData = GetComponent(); - eventSystem = GameObject.FindObjectOfType(); - eventData = new PointerEventData(eventSystem); - } - private void Update() - { - //右键取消释放 - if (choosed && Mouse.current.rightButton.wasPressedThisFrame) - { - Debug.Log("1"); - dragState = CardDragState.noDrag; - canUse = false;//取消释放 - ainPanle.SetActive(false); - //遍历范围预览池消除影响色 - for (int i = 0; i < GameManager.Instance.player.influencePreviewPool.Count; i++) - { - GameManager.Instance.player.influencePreviewPool[i].influenced = false; - } - GameManager.Instance.player.influencePreviewPool.Clear(); - //遍历影响池变色 - for (int i = 0; i < influencePreviewPool.Count; i++) - { - influencePreviewPool[i].influenced = false; - } - influencePreviewPool.Clear(); - - - //其他位置都归位 - transform.SetParent(originalParent); - transform.localPosition = originalpoint; - GetComponent().blocksRaycasts = true; - return; - } - - if (dragState != CardDragState.noDrag && dragState != CardDragState.onDrag) - { - //UI射线检测 - - eventData.position = Mouse.current.position.value; - - eventSystem.RaycastAll(eventData, result); - if (result.Count > 0) - { - Debug.Log(result[0].gameObject.name); - } - } - - - switch (dragState) - { - case CardDragState.onBeginDrag: - TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.useCard; - CardChoose(eventData); - dragState = CardDragState.onDrag; - break; - case CardDragState.onDrag: - CardFollow(); - if (Mouse.current.leftButton.wasReleasedThisFrame) - { - dragState = CardDragState.onEndDrag; - } - break; - case CardDragState.onEndDrag: - TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none; - CardUse(); - break; - case CardDragState.noDrag: - if (Mouse.current.leftButton.wasReleasedThisFrame) - { - eventData.position = Mouse.current.position.value; - - eventSystem.RaycastAll(eventData, result); - if (result.Count > 0) - { - Debug.Log(result[0].gameObject.name); - if (result[0].gameObject == this.gameObject) - { - dragState = CardDragState.onBeginDrag; - } - } - - - } - break; - } - - } - - public void createCard(int cardId) - { - this.cardId = cardId; - Debug.Log(cardId + "-" + CardOriginalDataList.Instance.cardOriginalDataList[cardId]); - cardOriginalData = CardOriginalDataList.Instance.cardOriginalDataList[cardId]; - settleForStart(SettlementManager.settleTurn); - } - - //不应该为void,返回值为作用的地块 - public void use() - { - settle(0); - - - } - //卡牌效果的结算 - public void settle(int settleTurn) - { - for (int i = 0; i < cardOriginalData.Function.Length; i++) - { - switch (cardOriginalData.Function[i]) - { - case CardFunction.cardDamage: - damageWork(int.Parse(cardOriginalData.FunctionVal[i])); - break; - case CardFunction.cardShield: - Usermanager.Instance.Shield = Usermanager.Instance.Shield + int.Parse(cardOriginalData.FunctionVal[i]); - break; - case CardFunction.posion: - case CardFunction.weak: - case CardFunction.coma: - case CardFunction.disarm: - case CardFunction.sleep: - case CardFunction.bleed: - case CardFunction.thorn: - abnormalConditionWork(cardOriginalData.Function[i], int.Parse(cardOriginalData.FunctionVal[i])); - break; - case CardFunction.costRestore: - break; - case CardFunction.dyeing: - Debug.Log("功能是:" + cardOriginalData.Function[1]); - dyeingWork(); - break; - } - } - - } - - public void abnormalConditionWork(string condition, int stackVak) - { - for (int i = 0; i < influencePreviewPool.Count; i++) - { - //施加负面 - if (influencePreviewPool[i].enemyNode != null) - { - influencePreviewPool[i].enemyNode.sufferAbnormalCondition(condition, stackVak); - } - } - } - - private void damageWork(int damageVal) - { - for (int i = 0; i < influencePreviewPool.Count; i++) - { - //造成伤害 - if (influencePreviewPool[i].enemyNode != null) - { - influencePreviewPool[i].enemyNode.sufferDamage(damageVal); - } - } - } - - private void dyeingWork() - { - Debug.Log(influencePreviewPool.Count); - for (int i = 0; i < influencePreviewPool.Count; i++) - { - influencePreviewPool[i].whoColour = MapUnity.WhoColour.playerColour; - } - } - - private void dyeing() - { - //遍历影响池变色 - for (int i = 0; i < influencePreviewPool.Count; i++) - { - influencePreviewPool[i].influenced = true; - influencePreviewPool[i].choossedMark.GetComponent().material = influencePreviewPool[i].yellow; - } - } - - - //生成卡牌时候遗物的结算 - public void settleForStart(int settleTurn) - { - - } - //卡牌效果结束之后结算 - public void settleForEnd(int settleTurn) - { - - } - - public void OnBeginDrag(PointerEventData eventData) - { - dragState = CardDragState.onBeginDrag; - } - - public void OnDrag(PointerEventData eventData) - { - - } - - private void ainPanleWork() - { - //射线检测瞄准的地图节点,判断是否可放置和改变放置影响区 - Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.value); - - if (Physics.Raycast(ray, out RaycastHit raycastHit)) - { - Debug.Log(raycastHit.collider.gameObject.name); - //检测到跟上次瞄准地方不同,更新 - if (currentNode == null || raycastHit.collider.transform.gameObject != currentNode.gameObject) - { - for (int i = 0; i < influencePreviewPool.Count; i++) - { - influencePreviewPool[i].influenced = false; - } - influencePreviewPool.Clear(); - currentNode = raycastHit.collider.transform.GetComponent(); - - //重新调用范围预览 - GameManager.Instance.player.StepPreviewInfluencedNode(cardOriginalData.CastingRange); - Debug.Log(cardOriginalData.CastingRange); - //预览影响范围 - if (currentNode.influenced) - { - //根据卡牌属性改变影响池 - influencePreviewPool.Add(currentNode); - Vector3 face = currentNode.transform.position - GameManager.Instance.playerOn.transform.position; - float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; - Debug.Log(euler); - if (euler > 0 && euler < 45) - { - if (currentNode.unitPool[0] != null) - influencePreviewPool.Add(currentNode.unitPool[0]); - if (currentNode.unitPool[4] != null) - influencePreviewPool.Add(currentNode.unitPool[4]); - } - else if (euler > 45 && euler < 135) - { - if (currentNode.unitPool[1] != null) - influencePreviewPool.Add(currentNode.unitPool[1]); - if (currentNode.unitPool[5] != null) - influencePreviewPool.Add(currentNode.unitPool[5]); - } - else if (euler > 135 && euler < 180) - { - if (currentNode.unitPool[2] != null) - influencePreviewPool.Add(currentNode.unitPool[2]); - if (currentNode.unitPool[0] != null) - influencePreviewPool.Add(currentNode.unitPool[0]); - } - else if (euler > 180 && euler < 225) - { - if (currentNode.unitPool[1] != null) - influencePreviewPool.Add(currentNode.unitPool[1]); - if (currentNode.unitPool[3] != null) - influencePreviewPool.Add(currentNode.unitPool[3]); - } - else if (euler > 225 && euler < 315) - { - if (currentNode.unitPool[2] != null) - influencePreviewPool.Add(currentNode.unitPool[2]); - if (currentNode.unitPool[4] != null) - influencePreviewPool.Add(currentNode.unitPool[4]); - } - else if (euler > 315 && euler < 360) - { - if (currentNode.unitPool[3] != null) - influencePreviewPool.Add(currentNode.unitPool[3]); - if (currentNode.unitPool[5] != null) - influencePreviewPool.Add(currentNode.unitPool[5]); - } - //influencePreviewPool.Add(currentNode); - - - } - - - } - } - - Debug.Log("结束影响数值" + influencePreviewPool.Count); - } - - private void noAinPanleWork(PointerEventData eventData) - { - - Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.value); - if (eventData.pointerCurrentRaycast.gameObject != null) - { - if (Physics.Raycast(ray, out RaycastHit raycastHit)) - { - currentNode = raycastHit.collider.transform.GetComponent(); - influencePreviewPool.Add(currentNode); - } - } - } - - - public void OnEndDrag(PointerEventData eventData) - { - - } - - //卡片动作 - //开始选中 - public void CardChoose(PointerEventData eventData) - { - // if (GameObject.Find("CardPanel") != null) - // graphicRaycaster = GameObject.Find("CardPanel").GetComponent(); - choosed = true; - - GetComponent().blocksRaycasts = false; - - originalParent = this.gameObject.transform.parent; - originalpoint = this.transform.localPosition; - - transform.SetParent(transform.parent.parent); - transform.position = eventData.position; - - //根据卡牌数据决定是否调用曲线 - if (cardOriginalData.CastingRange != 0) - { - //释放范围为0则不需要调用曲线 - ainPanle.SetActive(true); - } - else - { - ainPanle.SetActive(false); - } - - - - - //todo-统一确定锚点位置 - - //重新调用范围预览--以后要写到卡牌效果里,现在默认影响1格 - //GameManager.Instance.player.StepPreviewInfluencedNode(1); - } - - //拖拽中 - public void CardFollow() - { - if (cardOriginalData.CastingRange != 0) - { - ainPanleWork(); - } - else - { - //没有范围不需要射线吧,因为不需要指定目标点? - // noAinPanleWork(eventData); - } - dyeing(); - } - - //卡牌释放 - public void CardUse() - { - choosed = false; - if (canUse) - { - Debug.Log("进入影响数值" + influencePreviewPool.Count); - if (result.Count > 0) - { - if (result[0].gameObject.tag == "Card") - { - choosed = true; - dragState = CardDragState.onDrag; - TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.useCard; - /* - GetComponent().blocksRaycasts = true; - - ainPanle.SetActive(false);//关闭贝塞尔曲线 - //遍历范围预览池消除影响色 - for (int i = 0; i < GameManager.Instance.player.influencePreviewPool.Count; i++) - { - GameManager.Instance.player.influencePreviewPool[i].influenced = false; - } - //GameManager.Instance.player.influencePreviewPool.Clear(); - */ - return; - } - else if (result[0].gameObject.name == "cardSlot") - { - choosed = true; - dragState = CardDragState.onDrag; - TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.useCard; - /* - transform.SetParent(result[0].gameObject.transform); - transform.position = result [0].gameObject.transform.position; - GetComponent().blocksRaycasts = true; - - ainPanle.SetActive(false);//关闭贝塞尔曲线 - //遍历范围预览池消除影响色 - for (int i = 0; i < GameManager.Instance.player.influencePreviewPool.Count; i++) - { - GameManager.Instance.player.influencePreviewPool[i].influenced = false; - } - //GameManager.Instance.player.influencePreviewPool.Clear(); - */ - return; - } - } - if (ainPanle.activeSelf) - { - ainPanle.SetActive(false);//关闭贝塞尔曲线 - } - - //先判断该卡牌的类型是否是需要范围 - if (cardOriginalData.CastingRange != 0) - { - //检测碰撞的地图节点是否被影响(可释放) - if (currentNode == null || currentNode.influenced == false) - { - //遍历范围预览池消除影响色(红色,卡牌的释放范围) - for (int i = 0; i < GameManager.Instance.player.influencePreviewPool.Count; i++) - { - GameManager.Instance.player.influencePreviewPool[i].influenced = false; - } - //GameManager.Instance.player.influencePreviewPool.Clear(); - } - else if (currentNode.influenced) - { - - //卡牌释放效果 - use(); - Debug.Log("玩家盾量:" + Usermanager.Instance.Shield); - - //临时效果--将其加入墓地并销毁实体 - TurnMaster.Instance.usedCard.usedCardList.Add(this.gameObject.GetComponent().CardId); - Destroy(this.gameObject); - } - //遍历范围预览池消除影响色 - for (int i = 0; i < GameManager.Instance.player.influencePreviewPool.Count; i++) - { - GameManager.Instance.player.influencePreviewPool[i].influenced = false; - } - GameManager.Instance.player.influencePreviewPool.Clear(); - //遍历影响池变色 - for (int i = 0; i < influencePreviewPool.Count; i++) - { - influencePreviewPool[i].influenced = false; - } - influencePreviewPool.Clear(); - GetComponent().blocksRaycasts = true; - - //其他位置都归位 - transform.SetParent(originalParent); - transform.localPosition = originalpoint; - return; - }//范围类,需要指定被影响的节点才能释放 - else - { - //卡牌释放效果 - use(); - Debug.Log("玩家盾量:" + Usermanager.Instance.Shield); - - //临时效果--将其加入墓地并销毁实体 - TurnMaster.Instance.usedCard.usedCardList.Add(this.gameObject.GetComponent().CardId); - Destroy(this.gameObject); - - return; - - }//无范围类,直接释放 - - } - else - { - canUse = true; - } - } - -} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs index 049c3f1a..e1e70b2d 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs @@ -100,55 +100,64 @@ public class CardEntity : MonoBehaviour public void createCardDescription() { StringBuilder sb = new StringBuilder(); - for (int i = 0; i < cardOriginalData.Function.Length; i++) + foreach (KeyValuePair kvp in cardOriginalData.FunctionVal) { - switch (cardOriginalData.Function[i]) + switch (kvp.Key) { case CardFunction.cardDamage: - sb.Append("造成" + cardOriginalData.FunctionVal[i] + "点伤害;"); + sb.Append("造成" + kvp.Value + "点伤害;"); break; case CardFunction.cardShield: - sb.Append("获得" + cardOriginalData.FunctionVal[i] + "点护盾;"); + sb.Append("获得" + kvp.Value + "点护盾;"); break; case CardFunction.posion: - sb.Append("造成" + cardOriginalData.FunctionVal[i] + "层流血;"); + sb.Append("施加" + kvp.Value + "层中毒;"); break; case CardFunction.weak: - sb.Append("造成" + cardOriginalData.FunctionVal[i] + "层虚弱;"); + sb.Append("施加" + kvp.Value + "层虚弱;"); break; case CardFunction.coma: - sb.Append("造成" + cardOriginalData.FunctionVal[i] + "层昏迷;"); + sb.Append("施加" + kvp.Value + "层昏迷;"); break; case CardFunction.disarm: - sb.Append("造成" + cardOriginalData.FunctionVal[i] + "层缴械;"); + sb.Append("施加" + kvp.Value + "层缴械;"); break; case CardFunction.sleep: - sb.Append("造成" + cardOriginalData.FunctionVal[i] + "层睡眠;"); + sb.Append("施加" + kvp.Value + "层睡眠;"); break; case CardFunction.bleed: - sb.Append("造成" + cardOriginalData.FunctionVal[i] + "层流血;"); + sb.Append("施加" + kvp.Value + "层流血;"); break; case CardFunction.thorn: - sb.Append("获得" + cardOriginalData.FunctionVal[i] + "层荆棘;"); + sb.Append("获得" + kvp.Value + "层荆棘;"); break; case CardFunction.costRestore: - sb.Append("获得" + cardOriginalData.FunctionVal[i] + "点费用;"); + sb.Append("获得" + kvp.Value + "点能量;"); break; case CardFunction.drawCard: - sb.Append("抽" + cardOriginalData.FunctionVal[i] + "张牌;"); + sb.Append("抽" + kvp.Value + "张牌;"); break; case CardFunction.discard: - sb.Append("弃" + cardOriginalData.FunctionVal[i] + "张牌;"); + sb.Append("弃" + kvp.Value + "张牌;"); + break; + case CardFunction.nodeDiffDamage: + sb.Append("造成场地差伤害;"); break; case CardFunction.dyeing: sb.Append("染色;"); break; } } + if (cardOriginalData.IsDisposable) { sb.Append("消耗;"); } + if (cardOriginalData.AdvantageDescription.Length!=0) + { + Debug.Log("优势:" + cardOriginalData.AdvantageDescription + ";"); + sb.Append("优势:"+cardOriginalData.AdvantageDescription+";"); + } if (sb.Length > 0) { sb.Remove(sb.Length - 1, 1); // 删除最后一个字符 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs index a4a4d1b8..bc60ddc2 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalData.cs @@ -13,9 +13,7 @@ public class CardOriginalData : System.Object private int rarity; - private string[] function; - - private string[] functionVal; + private Dictionary functionVal; private int castingRange; @@ -23,9 +21,7 @@ public class CardOriginalData : System.Object private int isDisposable; - private string[] advantageFunction; - - private string[] advantageFunctionVal; + private Dictionary advantageFunctionVal; private int carType; @@ -33,6 +29,8 @@ public class CardOriginalData : System.Object private string imgPath; + private string advantageDescription; + public int CardId { get { return cardId; } @@ -58,13 +56,7 @@ public class CardOriginalData : System.Object set { rarity = value; } } - public string[] Function - { - get { return function; } - set { function = value; } - } - - public string[] FunctionVal + public Dictionary FunctionVal { get { return functionVal; } set { functionVal = value; } @@ -88,13 +80,7 @@ public class CardOriginalData : System.Object set { isDisposable = value ? 1 : 0; } } - public string[] AdvantageFunction - { - get { return advantageFunction; } - set { advantageFunction = value; } - } - - public string[] AdvantageFunctionVal + public Dictionary AdvantageFunctionVal { get { return advantageFunctionVal; } set { advantageFunctionVal = value; } @@ -117,4 +103,11 @@ public class CardOriginalData : System.Object get { return imgPath; } set { imgPath = value; } } + + public string AdvantageDescription + { + get { return advantageDescription; } + set { advantageDescription = value; } + } + } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs index 96adf48a..bedc3d68 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs @@ -50,16 +50,33 @@ public class CardOriginalDataList : Singleton cardOriginalData.ChineseName = values[1]; cardOriginalData.Cost = int.Parse(values[2]); cardOriginalData.Rarity = int.Parse(values[3]); - cardOriginalData.Function = values[4].Split(";"); - cardOriginalData.FunctionVal = values[5].Split(";"); cardOriginalData.CastingRange = int.Parse(values[6]); cardOriginalData.EffectRange = values[7]; cardOriginalData.IsDisposable = int.Parse(values[8]) == 1; - cardOriginalData.AdvantageFunction = values[9].Split(";"); - cardOriginalData.AdvantageFunctionVal = values[10].Split(";"); cardOriginalData.CarType = int.Parse(values[11]); - cardOriginalData.Description = values[12]; + cardOriginalData.AdvantageDescription = values[12]; cardOriginalData.ImgPath = values[13]; + getDictionaryFromString(values, cardOriginalData); return cardOriginalData; } + + private void getDictionaryFromString(string[] values, CardOriginalData cardOriginalData) + { + Debug.Log("卡牌是:"+cardOriginalData.ChineseName); + 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(); + Dictionary functionDictionary = new Dictionary(); + for (int i = 0; i < function.Length; i++) + { + cardOriginalData.FunctionVal.Add(function[i], functionVal[i]); + } + for (int i = 0; i < advantagefunction.Length; i++) + { + cardOriginalData.AdvantageFunctionVal.Add(advantagefunction[i], advantagefunctionVal[i]); + } + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs index 9a97093a..d2f6e9e3 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs @@ -47,7 +47,7 @@ public class TurnMaster : Singleton { //恢复体力 GameManager.Instance.playerState.currentStepRange = GameManager.Instance.playerState.maxStepRange; - restoreCost(0); + restoreResource(0); //洗牌--抽卡 StartCoroutine(ShuffleWithLosingCards()); @@ -102,10 +102,11 @@ public class TurnMaster : Singleton } //老吊写的函数 - public void restoreCost(int settleTurn) + public void restoreResource(int settleTurn) { totalCost = Usermanager.Instance.totalCost; currentCost = totalCost; + Usermanager.Instance.Shield = 0; } IEnumerator ShuffleWithLosingCards() { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs index 20d57254..b97e718d 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs @@ -107,6 +107,31 @@ public class GameManager : Singleton return result; } + public int getNodeDiff() + { + int playerCount = 0; + int enemyCount = 0; + int totalCount = 0; + + for (int i = 0; i < X.Count; i++) + { + for (int j = 0; j < X[i].Y.Count; j++) + { + if (X[i].Y[j].whoColour == MapUnity.WhoColour.playerColour) + { + playerCount += 1; + } + else if (X[i].Y[j].whoColour == MapUnity.WhoColour.enemyColour) + { + enemyCount += 1; + } + totalCount += 1; + } + } + return playerCount-enemyCount; + + } + //开局场地涂色 public void StartMapColour() { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs new file mode 100644 index 00000000..c2cc3f17 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EffectRangeHandler1 : EffectRangeHandlerBase +{ + public EffectRangeHandler1(MapUnity currentNode, float euler) + { + influencePreviewPool.Clear(); + influencePreviewPool.Add(currentNode); + angleActions = new Dictionary>> + { + { 30.0f, () => + { + return influencePreviewPool; + } + }, + { 90.0f, () => + { + return influencePreviewPool; + } + }, + { 150.0f, () => + { + return influencePreviewPool; + } + }, + { 210.0f, () => + { + return influencePreviewPool; + } + }, + { 270.0f, () => + { + return influencePreviewPool; + } + }, + { 330.0f, () => + { + return influencePreviewPool; + } + } + }; + + } + + + + +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEnity_OldSave.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs.meta similarity index 83% rename from ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEnity_OldSave.cs.meta rename to ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs.meta index 30e535bf..c22ad1d0 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEnity_OldSave.cs.meta +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler1.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7831439f6bbbdf14b8546fd1ac26d312 +guid: 00c6f2acf33d3594aa85dff634c0b326 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs index c5d49f96..a14d1d3b 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandlerBase.cs @@ -18,10 +18,12 @@ public class EffectRangeHandlerBase : EffectRangeHandler canPass = false; return canPass; } - if (currentNode.TryGetComponent(out EnemyNode enemyNode)) + Debug.Log("currentNode"+ currentNode.enemyNode); + /*if (currentNode.TryGetComponent(out EnemyNode enemyNode))*/ + if (currentNode.enemyNode!=null) { Debug.Log("JJKK"); - if (enemyNode.enemyType == EnemyNode.EnemyType.block) + if (currentNode.enemyNode.enemyType.Equals(EnemyNode.EnemyType.block)) { Debug.Log("AABB"); canPass = false; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs index 2f56d941..55398863 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/MapUnity.cs @@ -157,4 +157,6 @@ public class MapUnity : MonoBehaviour { compalte = true; } + + } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs index 1c323f5d..0afcb6f0 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Player.cs @@ -33,9 +33,17 @@ public class Player : MonoBehaviour Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.value); if (Physics.Raycast(ray, out RaycastHit raycastHit,500,playerLayerMask.value) && raycastHit.collider.gameObject.tag == "Player") { - Debug.Log(raycastHit.collider.gameObject.name); - StepPreviewInfluencedNode(GameManager.Instance.playerState.currentStepRange); - } + Debug.Log(raycastHit.collider.gameObject.name); + MapUnityManager mapUnityManager = new MapUnityManager(); + influencePreviewPool.AddRange(mapUnityManager.findReachableTiles(GameManager.Instance.playerOn, GameManager.Instance.playerState.currentStepRange)); + //遍历影响池变色 + for (int i = 0; i < influencePreviewPool.Count; i++) + { + influencePreviewPool[i].influenced = true; + influencePreviewPool[i].choossedMark.GetComponent().material = influencePreviewPool[i].red; + } + //StepPreviewInfluencedNode(GameManager.Instance.playerState.currentStepRange); + } else { // Debug.Log(raycastHit.collider.gameObject.name); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs index 8e5181c5..e0e17f9c 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs @@ -32,6 +32,8 @@ public class CardFunction public const string discard = "13"; //染色 public const string dyeing = "14"; + //造成场地差伤害 + public const string nodeDiffDamage = "15"; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/GameRoundManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/GameRoundManager.cs index 1559b408..034b46dc 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/GameRoundManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/GameRoundManager.cs @@ -17,7 +17,7 @@ public class GameRoundManager : Singleton public void init() { - List newCardDeck = new List(); +/* List newCardDeck = new List(); //初始卡组先加10个打击 for (int i = 0; i < 10; i++) { @@ -25,10 +25,10 @@ public class GameRoundManager : Singleton } List newRelicsList = new List(); - Usermanager newUser= new Usermanager(50); + //Usermanager newUser= new Usermanager(50); this.cardDeck = newCardDeck; this.relicsList = newRelicsList; - this.usermanager = newUser; + this.usermanager = newUser;*/ } public void Start() diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs new file mode 100644 index 00000000..59b3f322 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MapUnityManager : MonoBehaviour +{ + public List findReachableTiles(MapUnity startNode, int movePoints) + { + List reachableNodes = new List(); + Queue queue = new Queue(); + Dictionary remainingMovePoints = new Dictionary(); + + queue.Enqueue(startNode); + remainingMovePoints[startNode] = movePoints; + + while (queue.Count > 0) + { + MapUnity currentNode = queue.Dequeue(); + int currentMovePoints = remainingMovePoints[currentNode]; + + foreach (MapUnity neighbor in currentNode.unitPool) + { + if (neighbor == null || neighbor.blocked || remainingMovePoints.ContainsKey(neighbor)) + continue; + + int newMovePoints = currentMovePoints - 1; // 每移动一格,减少一点移动点数 + + if (newMovePoints >= 0) + { + queue.Enqueue(neighbor); + remainingMovePoints[neighbor] = newMovePoints; + reachableNodes.Add(neighbor); + } + } + } + + //遍历影响池变色 + + return reachableNodes; + } +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs.meta new file mode 100644 index 00000000..30f64056 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d344126aa8082fa48b7e5f19eff09202 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs index 73781f70..2b2d8bb8 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using Unity.VisualScripting; using UnityEngine; public class SettlementManager : Singleton @@ -8,130 +9,117 @@ public class SettlementManager : Singleton public static int settleTurn; + public void abnormalConditionWork(string condition, int stackVak, List influencePreviewPool) + { + for (int i = 0; i < influencePreviewPool.Count; i++) + { + //施加负面 + if (influencePreviewPool[i].enemyNode != null) + { + influencePreviewPool[i].enemyNode.sufferAbnormalCondition(condition, stackVak); + } + } + } + //造成伤害 + + //染色 + private void dyeingWork(List influencePreviewPool) + { + for (int i = 0; i < influencePreviewPool.Count; i++) + { + influencePreviewPool[i].whoColour = MapUnity.WhoColour.playerColour; + } + } + private void damageWork(int damageVal, List influencePreviewPool) + { + for (int i = 0; i < influencePreviewPool.Count; i++) + { + //造成伤害 + if (influencePreviewPool[i].enemyNode != null) + { + influencePreviewPool[i].enemyNode.sufferDamage(damageVal); + } + } + } + public IEnumerator settle(CardOriginalData cardOriginalData, List influencePreviewPool, int cardIndex) { + Dictionary trueFunctionVal=new Dictionary(); bool canAdv = GameManager.Instance.SyncColourCountUI(); - for (int i = 0; i < cardOriginalData.Function.Length; i++) + if (canAdv) + { + trueFunctionVal.AddRange(cardOriginalData.AdvantageFunctionVal); + + } + else { - switch (cardOriginalData.Function[i]) + trueFunctionVal.AddRange(cardOriginalData.FunctionVal); + } + foreach (KeyValuePair kvp in trueFunctionVal) + { + switch (kvp.Key) { case CardFunction.cardDamage: - damageWork(int.Parse(cardOriginalData.FunctionVal[i]), influencePreviewPool); + damageWork(int.Parse(kvp.Value), influencePreviewPool); + break; + case CardFunction.nodeDiffDamage: + if (GameManager.Instance.getNodeDiff()>0) + { + damageWork(GameManager.Instance.getNodeDiff(), influencePreviewPool); + } break; case CardFunction.cardShield: - Usermanager.Instance.Shield = Usermanager.Instance.Shield + int.Parse(cardOriginalData.FunctionVal[i]); + Usermanager.Instance.Shield = Usermanager.Instance.Shield + int.Parse(kvp.Value); break; case CardFunction.posion: case CardFunction.weak: case CardFunction.coma: case CardFunction.disarm: case CardFunction.sleep: - case CardFunction.bleed: case CardFunction.thorn: - abnormalConditionWork(cardOriginalData.Function[i], int.Parse(cardOriginalData.FunctionVal[i]), influencePreviewPool); + abnormalConditionWork(kvp.Value, int.Parse(kvp.Value), influencePreviewPool); break; case CardFunction.costRestore: - TurnMaster.Instance.currentCost += int.Parse(cardOriginalData.FunctionVal[i]); + TurnMaster.Instance.currentCost += int.Parse(kvp.Value); break; case CardFunction.dyeing: dyeingWork(influencePreviewPool); break; case CardFunction.discard: - yield return StartCoroutine(TurnMaster.Instance.randomDiscard(int.Parse(cardOriginalData.FunctionVal[i]))); + yield return StartCoroutine(TurnMaster.Instance.randomDiscard(int.Parse(kvp.Value))); yield return StartCoroutine(TurnMaster.Instance.MoveCards()); /*yield return new WaitForEndOfFrame(); StartCoroutine(TurnMaster.Instance.MoveCards());*/ break; - case CardFunction.drawCard: - TurnMaster.Instance.drawCards(int.Parse(cardOriginalData.FunctionVal[i])); - yield return StartCoroutine(TurnMaster.Instance.MoveCards()); - break; } - //yield return StartCoroutine(TurnMaster.Instance.MoveCards()); - } - //优势 - if (canAdv) + //流血不能先结算 + foreach (KeyValuePair kvp in trueFunctionVal) { - for (int i = 0; i < cardOriginalData.AdvantageFunction.Length; i++) + switch (kvp.Key) { - switch (cardOriginalData.AdvantageFunction[i]) - { - case CardFunction.cardDamage: - damageWork(int.Parse(cardOriginalData.AdvantageFunctionVal[i]), influencePreviewPool); - break; - case CardFunction.cardShield: - Usermanager.Instance.Shield = Usermanager.Instance.Shield + int.Parse(cardOriginalData.AdvantageFunctionVal[i]); - break; - case CardFunction.posion: - case CardFunction.weak: - case CardFunction.coma: - case CardFunction.disarm: - case CardFunction.sleep: - case CardFunction.bleed: - case CardFunction.thorn: - abnormalConditionWork(cardOriginalData.AdvantageFunction[i], int.Parse(cardOriginalData.AdvantageFunctionVal[i]), influencePreviewPool); - break; - case CardFunction.costRestore: - TurnMaster.Instance.currentCost += int.Parse(cardOriginalData.AdvantageFunctionVal[i]); - break; - case CardFunction.dyeing: - dyeingWork(influencePreviewPool); - break; - case CardFunction.discard: - yield return StartCoroutine(TurnMaster.Instance.randomDiscard(int.Parse(cardOriginalData.AdvantageFunctionVal[i]))); - yield return StartCoroutine(TurnMaster.Instance.MoveCards()); - break; - case CardFunction.drawCard: - TurnMaster.Instance.drawCards(int.Parse(cardOriginalData.AdvantageFunctionVal[i])); - yield return StartCoroutine(TurnMaster.Instance.MoveCards()); - break; - - } + case CardFunction.bleed: + abnormalConditionWork(kvp.Value, int.Parse(kvp.Value), influencePreviewPool); + break; } - TurnMaster.Instance.currentCost -= cardOriginalData.Cost; - } - Debug.Log("护盾量:" + Usermanager.Instance.Shield); - - - } - - public void abnormalConditionWork(string condition, int stackVak, List influencePreviewPool) - { - for (int i = 0; i < influencePreviewPool.Count; i++) + //弃牌不能先结算 + foreach (KeyValuePair kvp in trueFunctionVal) { - //施加负面 - if (influencePreviewPool[i].enemyNode != null) + switch (kvp.Key) { - influencePreviewPool[i].enemyNode.sufferAbnormalCondition(condition, stackVak); - } - } - } - //造成伤害 + case CardFunction.drawCard: + TurnMaster.Instance.drawCards(int.Parse(kvp.Value)); + yield return StartCoroutine(TurnMaster.Instance.MoveCards()); + break; - //染色 - private void dyeingWork(List influencePreviewPool) - { - for (int i = 0; i < influencePreviewPool.Count; i++) - { - influencePreviewPool[i].whoColour = MapUnity.WhoColour.playerColour; - } - } - private void damageWork(int damageVal, List influencePreviewPool) - { - for (int i = 0; i < influencePreviewPool.Count; i++) - { - //造成伤害 - if (influencePreviewPool[i].enemyNode != null) - { - influencePreviewPool[i].enemyNode.sufferDamage(damageVal); } } + } -} + } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs index a0c2d4d3..c4f3f845 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs @@ -4,8 +4,8 @@ using UnityEngine; public class Usermanager : Singleton { - private int health; - private int shield; + public int health; + public int shield; public int totalCost; public int Health { get => health; set => health = value; } @@ -22,6 +22,6 @@ public class Usermanager : Singleton { health = 100; Shield = 0; - totalCost = 1; + totalCost = 4; } } diff --git a/ColorlessWorld-2024-4-2/Assets/data/card_data.csv b/ColorlessWorld-2024-4-2/Assets/data/card_data.csv index efc36113..ef1e7510 100644 --- a/ColorlessWorld-2024-4-2/Assets/data/card_data.csv +++ b/ColorlessWorld-2024-4-2/Assets/data/card_data.csv @@ -1,3 +1,15 @@ -锘縄D,鍚嶇О,璐圭敤,绋鏈夊害,鍔熻兘,鏁板,鏂芥硶鑼冨洿,浣滅敤鑼冨洿,娑堣,浼樺娍鍔熻兘,鏁板,鍗$墝绫诲瀷,鏂囨湰鎻忚堪,鍥剧墖璺緞 -10001,鎵撳嚮,0,1,1;14,1;0,2,6_1,0,2,100,1,,PlayerIcon -10002,娌荤枟,2,2,1,2,0,0,0,0,0,1,, +锘縄D,鍚嶇О,璐圭敤,绋鏈夊害,鍔熻兘,鏁板,鏂芥硶鑼冨洿,浣滅敤鑼冨洿,娑堣,浼樺娍鍔熻兘,鏁板,鍗$墝绫诲瀷,浼樺娍鎻忚堪,鍥剧墖璺緞 +10001,灏勫嚮,1,1,1,7,1,1,0,1,7,1,,PlayerIcon +10002,鎶ょ浘,1,1,2,5,0,1,0,2,5,1,,PlayerIcon +10003,姣掕嵂,1,1,4,6,3,1,0,4,10,1,鏂藉姞4灞備腑姣,PlayerIcon +10004,鏋彾鐐稿脊,2,2,9,2,1,7_2,0,9;4,2;4,1,鏂藉姞4灞備腑姣,PlayerIcon +10005,鑺辩矇,0,2,8,1,4,1,0,8,2,1,鏂藉姞1灞傛矇鐫,PlayerIcon +10006,鑷存畫,2,1,7,2,2,1,0,7;9,2;2,1,鏂藉姞2灞傛祦琛,PlayerIcon +10007,婊嬪吇,1,2,12;13,3;1,0,0,0,12,3,1,鏃犻渶涓㈠純,PlayerIcon +10008,鑽夊北鍘嬮《,3,3,1;6,10;1,2,1,0,1;6,13;1,1,閫犳垚3鐐逛激瀹,PlayerIcon +10009,灏栧埡鐢,1,1,2;10,3;4,0,0,0,2;10,3;6,1,鑾峰緱3灞傝崋妫,PlayerIcon +10010,娲诲姏,0,2,11,1,0,0,1,11,2,1,鑾峰緱1鐐硅兘閲,PlayerIcon +10011,鑽夊洟,2,1,1;14,5;0,1,6_2,1,1;14,8;0,1,閫犳垚3鐐逛激瀹,PlayerIcon +10012,绌垮埡灏勫嚮,2,1,1,8,1,5_1,0,1;4,8;4,1,鏂藉姞4灞備腑姣,PlayerIcon +10013,妫灄涔嬫,3,3,1,20,3,1,0,1;15,20;0,1,閫犳垚鍦哄湴宸激瀹,PlayerIcon +10014,宸ㄦ爲涔嬪紦,2,1,1;14,13;0,1,5_3,0,1;14;5,13;0;1,1,鏂藉姞1灞傝櫄寮,PlayerIcon diff --git a/ColorlessWorld-2024-4-2/UserSettings/Layouts/default-2022.dwlt b/ColorlessWorld-2024-4-2/UserSettings/Layouts/default-2022.dwlt index c6357f68..40d5d7b6 100644 --- a/ColorlessWorld-2024-4-2/UserSettings/Layouts/default-2022.dwlt +++ b/ColorlessWorld-2024-4-2/UserSettings/Layouts/default-2022.dwlt @@ -119,7 +119,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 100} m_MaxSize: {x: 24288, y: 16192} vertical: 0 - controlID: 98 + controlID: 96 --- !u!114 &6 MonoBehaviour: m_ObjectHideFlags: 52 @@ -139,12 +139,12 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 1948 + width: 2088 height: 1299 m_MinSize: {x: 200, y: 100} m_MaxSize: {x: 16192, y: 16192} vertical: 1 - controlID: 53 + controlID: 51 --- !u!114 &7 MonoBehaviour: m_ObjectHideFlags: 52 @@ -164,12 +164,12 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 1948 - height: 823 + width: 2088 + height: 820 m_MinSize: {x: 200, y: 50} m_MaxSize: {x: 16192, y: 8096} vertical: 0 - controlID: 54 + controlID: 52 --- !u!114 &8 MonoBehaviour: m_ObjectHideFlags: 52 @@ -187,8 +187,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 649 - height: 823 + width: 697 + height: 820 m_MinSize: {x: 201, y: 221} m_MaxSize: {x: 4001, y: 4021} m_ActualView: {fileID: 13} @@ -211,10 +211,10 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 649 + x: 697 y: 0 - width: 1299 - height: 823 + width: 1391 + height: 820 m_MinSize: {x: 202, y: 221} m_MaxSize: {x: 4002, y: 4021} m_ActualView: {fileID: 14} @@ -233,23 +233,23 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 1 m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: ConsoleWindow + m_Name: ProjectBrowser m_EditorClassIdentifier: m_Children: [] m_Position: serializedVersion: 2 x: 0 - y: 823 - width: 1948 - height: 476 - m_MinSize: {x: 101, y: 121} - m_MaxSize: {x: 4001, y: 4021} - m_ActualView: {fileID: 12} + y: 820 + width: 2088 + height: 479 + m_MinSize: {x: 231, y: 271} + m_MaxSize: {x: 10001, y: 10021} + m_ActualView: {fileID: 16} m_Panes: - {fileID: 16} - {fileID: 12} - m_Selected: 1 - m_LastSelected: 0 + m_Selected: 0 + m_LastSelected: 1 --- !u!114 &11 MonoBehaviour: m_ObjectHideFlags: 52 @@ -265,9 +265,9 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 1948 + x: 2088 y: 0 - width: 612 + width: 472 height: 1299 m_MinSize: {x: 276, y: 71} m_MaxSize: {x: 4001, y: 4021} @@ -298,9 +298,9 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 896 - width: 1947 - height: 455 + y: 893 + width: 2087 + height: 458 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -334,8 +334,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 73 - width: 648 - height: 802 + width: 696 + height: 799 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -349,9 +349,9 @@ MonoBehaviour: m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: - m_LastClickedID: 0 - m_ExpandedIDs: 2afbffffc86c0000 + m_SelectedIDs: 6a6e0000 + m_LastClickedID: 28266 + m_ExpandedIDs: 2afbffffca6c0000066e0000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -396,10 +396,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 649 + x: 697 y: 73 - width: 1297 - height: 802 + width: 1389 + height: 799 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -719,9 +719,9 @@ MonoBehaviour: m_PlayAudio: 0 m_AudioPlay: 0 m_Position: - m_Target: {x: 0, y: 0, z: 0} + m_Target: {x: 0.006319668, y: 0.58954334, z: 1.2597547} speed: 2 - m_Value: {x: 0, y: 0, z: 0} + m_Value: {x: 0.006319668, y: 0.58954334, z: 1.2597547} m_RenderMode: 0 m_CameraMode: drawMode: 0 @@ -767,13 +767,13 @@ MonoBehaviour: m_GridAxis: 1 m_gridOpacity: 0.5 m_Rotation: - m_Target: {x: 0.58584136, y: 0.0018278909, z: -0.0016127827, w: 0.81064034} + m_Target: {x: 0.48589787, y: 0.0020022085, z: -0.0013914306, w: 0.87421644} speed: 2 - m_Value: {x: 0.58573776, y: 0.0018275676, z: -0.0016124975, w: 0.8104969} + m_Value: {x: 0.48581117, y: 0.0020018513, z: -0.0013911823, w: 0.87406045} m_Size: - m_Target: 2.69248 + m_Target: 4.1813393 speed: 2 - m_Value: 2.69248 + m_Value: 4.1813393 m_Ortho: m_Target: 0 speed: 2 @@ -819,10 +819,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 649 + x: 697 y: 73 - width: 1297 - height: 802 + width: 1389 + height: 799 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -875,23 +875,23 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 21 - width: 1297 - height: 781 - m_Scale: {x: 0.67552084, y: 0.67552084} - m_Translation: {x: 648.5, y: 390.49997} + width: 1389 + height: 778 + m_Scale: {x: 0.7360305, y: 0.73603034} + m_Translation: {x: 694.5, y: 389} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 m_MarginBottom: 0 m_LastShownAreaInsideMargins: serializedVersion: 2 - x: -960 - y: -578.07245 - width: 1920 - height: 1156.1449 + x: -943.575 + y: -528.5108 + width: 1887.15 + height: 1057.0216 m_MinimalGUI: 1 - m_defaultScale: 0.67552084 - m_LastWindowPixelSize: {x: 1297, y: 802} + m_defaultScale: 0.72037035 + m_LastWindowPixelSize: {x: 1389, y: 799} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 01000000000000000000 @@ -919,9 +919,9 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 896 - width: 1947 - height: 455 + y: 893 + width: 2087 + height: 458 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -957,10 +957,10 @@ MonoBehaviour: m_LockTracker: m_IsLocked: 0 m_FolderTreeState: - scrollPos: {x: 0, y: 0} - m_SelectedIDs: fc870000 - m_LastClickedID: 34812 - m_ExpandedIDs: 00000000a4710000a6710000a87100001e88000000ca9a3b + scrollPos: {x: 0, y: 62} + m_SelectedIDs: 3e780000 + m_LastClickedID: 30782 + m_ExpandedIDs: 00000000aa710000ac710000ae710000b0710000b271000000ca9a3b m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -988,7 +988,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 00000000a4710000a6710000a8710000aa710000ac710000 + m_ExpandedIDs: 00000000aa710000ac710000ae710000b0710000b2710000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -1013,24 +1013,24 @@ MonoBehaviour: m_Icon: {fileID: 0} m_ResourceFile: m_ListAreaState: - m_SelectedInstanceIDs: 20880000 - m_LastClickedInstanceID: 34848 + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 m_HadKeyboardFocusLastEvent: 0 m_ExpandedInstanceIDs: c6230000f06f00003a7b000058cc00005ecc00006ed400004e6e000000000000e07200000a7000000e70000002810000 m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: + m_Name: Usermanager + m_OriginalName: Usermanager m_EditFieldRect: serializedVersion: 2 x: 0 y: 0 width: 0 height: 0 - m_UserData: 0 + m_UserData: 6744 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 11 + m_OriginalEventType: 0 m_IsRenamingFilename: 1 m_ClientGUIView: {fileID: 10} m_CreateAssetUtility: @@ -1065,9 +1065,9 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 1948 + x: 2088 y: 73 - width: 611 + width: 471 height: 1278 m_SerializedDataModeController: m_DataMode: 0