diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/AshBeetle.prefab b/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/AshBeetle.prefab index 879cd49a..06566996 100644 --- a/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/AshBeetle.prefab +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/AshBeetle.prefab @@ -310,7 +310,7 @@ MonoBehaviour: moveType: 0 rangePool: [] enemyType: 0 - enemyScript: 5 + enemyScript: 6 lineAim: {fileID: 7509110568895175458} canLineAppre: 1 enemyUIBar: {fileID: 0} diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/Skullmage.prefab b/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/Skullmage.prefab index 1756ee03..e61f2190 100644 --- a/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/Skullmage.prefab +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyPrefab/Skullmage.prefab @@ -1382,7 +1382,7 @@ GameObject: - component: {fileID: 5466202603420420700} - component: {fileID: 3938169004148627963} m_Layer: 9 - m_Name: Skullmage + m_Name: SkullMage m_TagString: Enemy m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs index b4974486..bbbf77ae 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardOriginalDataList.cs @@ -27,6 +27,7 @@ public class CardOriginalDataList : Singleton public HashSet GetCardRewards(int count) { + double rareCardCount = 0; var random = new System.Random(); var selectedCards = new HashSet(); @@ -55,6 +56,7 @@ public class CardOriginalDataList : Singleton { // 从普通卡牌中选择 selectedCards.Add(SelectRandomCard(commCardOriginalDataList, random)); + rareCardCount++; } // 检查是否已经选够了卡牌数量 if (selectedCards.Count >= count) @@ -67,7 +69,7 @@ public class CardOriginalDataList : Singleton // 如果这次没有抽到传说卡牌,则增加修正值 if (!selectedCards.Overlaps(legendaryCardOriginalDataList.Keys)&& GameManager.Instance.cardRewardsCounter>2) { - GameManager.Instance.cardRewardsRarityAdjustment = Math.Min(GameManager.Instance.cardRewardsRarityAdjustment + 1.0, 63.0); + GameManager.Instance.cardRewardsRarityAdjustment = Math.Min(GameManager.Instance.cardRewardsRarityAdjustment + rareCardCount, 63.0); } foreach (var card in selectedCards) { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs index c0e55b51..5bebf1d6 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/TurnMaster.cs @@ -57,6 +57,8 @@ public class TurnMaster : Singleton //洗牌--抽卡 StartCoroutine(ShuffleWithLosingCards()); + + //判断眩晕等能不能行动 Usermanager.Instance.BanActionJudge(); //回合开始结算玩家buff diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyName.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyName.cs new file mode 100644 index 00000000..3583f982 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyName.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EnemyName : MonoBehaviour +{ + + + public const string skullGuardian = "SkullGuardian"; + public const string skeletonArcher = "SkeletonArcher"; + public const string skullmage = "SkullMage"; + public const string ashBeetle = "AshBeetle"; + public const string hoodWanderer = "HoodWanderer"; + public const string skullWarlock = "SkullWarlock"; + public const string blastFistMushroom = "BlastFistMushroom"; + public const string shatteringFistMushroom = "ShatteringFistMushroom"; + public const string parasiticMushroom = "ParasiticMushroom"; + public const string emberWraith = "EmberWraith"; + public const string drowsyShroom = "DrowsyShroom"; + public const string bone = "Bone"; + public const string corrosiveSludge = "CorrosiveSludge"; +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyName.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyName.cs.meta new file mode 100644 index 00000000..7df9618b --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyName.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b54737814f2e13f43b76a4f3f2ae304c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs new file mode 100644 index 00000000..9bf5fdcf --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs @@ -0,0 +1,63 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +public class EnemyPool : MonoBehaviour +{ + public static Dictionary, float> weakEnemyPool = new Dictionary, float>() + { + { new List { EnemyName.ashBeetle,EnemyName.hoodWanderer}, 0.25f }, + { new List { EnemyName.skullGuardian,EnemyName.skullWarlock}, 0.25f }, + { new List { EnemyName.blastFistMushroom}, 0.25f }, + { new List { EnemyName.corrosiveSludge,EnemyName.skullmage}, 0.25f } + }; + + public static Dictionary, float> strongEnemyPool = new Dictionary, float>() + { + { new List { EnemyName.skullGuardian,EnemyName.skullmage,EnemyName.skullWarlock}, 0.245f }, + { new List { EnemyName.shatteringFistMushroom,EnemyName.blastFistMushroom}, 0.125f }, + { new List { EnemyName.parasiticMushroom,EnemyName.parasiticMushroom,EnemyName.blastFistMushroom}, 0.125f }, + { new List { EnemyName.emberWraith,EnemyName.emberWraith,EnemyName.corrosiveSludge}, 0.065f }, + { new List { EnemyName.ashBeetle,EnemyName.ashBeetle,EnemyName.hoodWanderer,EnemyName.hoodWanderer}, 0.125f }, + { new List { EnemyName.ashBeetle,EnemyName.skullmage}, 0.125f }, + { new List { EnemyName.emberWraith,EnemyName.emberWraith,EnemyName.corrosiveSludge}, 0.125f }, + { new List { EnemyName.blastFistMushroom,EnemyName.skullmage,EnemyName.skullWarlock}, 0.065f } + }; + + + public static List GetRandomEnemyPool(Dictionary, float> enemyPool) + { + System.Random random = new System.Random(); + float totalWeight = enemyPool.Values.Sum(); + float randomNumber = (float)random.NextDouble() * totalWeight; + + float cumulativeWeight = 0f; + foreach (var action in enemyPool) + { + cumulativeWeight += action.Value; + if (randomNumber <= cumulativeWeight) + { + return action.Key; + } + } + return enemyPool.Keys.Last(); + } + + public static List getEnemyPrefab(List enemyList) + { + List enemyPrefabs= new List(); + foreach (var enemy in enemyList) + { + GameObject prefab = AssetDatabase.LoadAssetAtPath("Assets/Prefab/EnemyPrefab/"+enemy+ ".prefab"); + enemyPrefabs.Add(prefab); + } + foreach (var enemy in enemyPrefabs) + { + Debug.Log(enemy); + } + return enemyPrefabs; + } + +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs.meta new file mode 100644 index 00000000..12632203 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 020a499e7b781084aab99b0cff074239 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs.meta index 18a2e8d7..24ed98b8 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs.meta +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs.meta @@ -4,7 +4,7 @@ MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] - executionOrder: 0 + executionOrder: 5 icon: {instanceID: 0} userData: assetBundleName: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs index 1a6dd04e..d7075618 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs @@ -22,15 +22,48 @@ public class MapManager : Singleton void Start() { - StartCoroutine (GenerateProcess()); + StartCoroutine (starttest()); + + } + + public void test() + { + List enemyList = EnemyPool.GetRandomEnemyPool(EnemyPool.strongEnemyPool); + foreach (string a in enemyList) + { + Debug.Log("怪物是" + a); + } + List enemyListTest = EnemyPool.getEnemyPrefab(enemyList); + HashSet mapSet = MathTool.GetRandomElements(getNodeTools.getAllNodesExceptEnemyAndPlayer(), enemyListTest.Count); + List mapList = new List(mapSet); + Debug.Log("enemyListTest大小" + enemyListTest.Count); + Debug.Log("mapList大小" + mapList.Count); + for (int i = 0; i < mapList.Count; i++) + { + Debug.Log("怪物"+ enemyListTest[i]); + Debug.Log("mapunity是" + mapList[i]); + var currentEnemy = Instantiate(enemyListTest[i], GameManager.Instance.X[mapList[i].locationX].Y[mapList[i].locationY].transform.position, enemyListTest[i].transform.rotation); + EnemyNode enemynode = currentEnemy.GetComponent(); + enemynode.positionX = mapList[i].locationX; + enemynode.positionY = mapList[i].locationY; + enemynode.StartPosition(); + + } + } + IEnumerator starttest() + { + + yield return StartCoroutine(GenerateProcess()); + //test(); } IEnumerator GenerateProcess() { - StartCoroutine(CompleteGenerate()); - yield return 0; + yield return StartCoroutine(CompleteGenerate()); } + + IEnumerator MapGenerate() { for (int i = 0; i < line; i++) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs.meta index 97d03399..4d01d4bf 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs.meta +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs.meta @@ -4,7 +4,7 @@ MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] - executionOrder: 0 + executionOrder: 8 icon: {instanceID: 0} userData: assetBundleName: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs index 4fd45ce6..7251e97e 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs @@ -70,6 +70,23 @@ public class getNodeTools return set; } + public static HashSet getAllNodesExceptEnemyAndPlayer() + { + HashSet set = new HashSet(); + for (int i = 0; i < GameManager.Instance.X.Count; i++) + { + for (int j = 0; j < GameManager.Instance.X[i].Y.Count; j++) + { + if (GameManager.Instance.X[i].Y[j].enemyNode==null&& !GameManager.Instance.X[i].Y[j].Equals(GameManager.Instance.playerOn)) + { + set.Add(GameManager.Instance.X[i].Y[j]); + } + + } + } + return set; + } + public static HashSet getAllPlayerNodes() { HashSet set = new HashSet(); @@ -87,6 +104,27 @@ public class getNodeTools return set; } + public static HashSet getAllEnemyNodesExceptEnemy() + { + HashSet set = new HashSet(); + for (int i = 0; i < GameManager.Instance.X.Count; i++) + { + for (int j = 0; j < GameManager.Instance.X[i].Y.Count; j++) + { + if (GameManager.Instance.X[i].Y[j].whoColour.Equals(MapUnity.WhoColour.enemyColour)) + { + if (GameManager.Instance.X[i].Y[j].enemyNode==null) + { + set.Add(GameManager.Instance.X[i].Y[j]); + } + + } + + } + } + return set; + } + public static bool tryGetNodeFroPlayer(MapUnity currentNode, HashSet results) { bool canPass = true; 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 9180af12..8b5f0213 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