diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset index bdfc399e..0c1449d4 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset +++ b/ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset @@ -13,251 +13,174 @@ MonoBehaviour: m_Name: LevelState_1 m_EditorClassIdentifier: levelStep: 0 - mapLevel: 0 - currentPoint: {x: 0, y: 2} + mapLevel: 1 + currentPoint: {x: 1, y: 1} levelSaveMap: - levelDataList: - - roomType: 0 + - roomType: 13 isUse: 0 passBy: 0 - nodePos: {x: -7.5830135, y: 0.059705734, z: -8.679104} + nodePos: {x: -7.5830135, y: 0.05970478, z: -7.669101} line: 0 column: 0 fatherLevelNodes: [] nextLevelNodes: [] fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 0 + - roomType: 13 isUse: 1 passBy: 0 - nodePos: {x: -7.583021, y: 0.05970764, z: -7.679106} + nodePos: {x: -7.583021, y: 0.059706688, z: -6.669104} line: 0 column: 1 fatherLevelNodes: [] nextLevelNodes: - {x: 1, y: 1} - - {x: 1, y: 0} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 0 - isUse: 1 - passBy: 0 - nodePos: {x: -7.583029, y: 0.05970955, z: -6.679107} - line: 0 - column: 2 - fatherLevelNodes: [] - nextLevelNodes: - - {x: 1, y: 3} - fightEenemyPool: - mapIndex: - - roomType: 0 - isUse: 1 - passBy: 0 - nodePos: {x: -7.5830364, y: 0.059711456, z: -5.679109} - line: 0 - column: 3 - fatherLevelNodes: [] - nextLevelNodes: - - {x: 1, y: 4} - - {x: 1, y: 3} - fightEenemyPool: - mapIndex: - - roomType: 0 + - roomType: 13 isUse: 0 passBy: 0 - nodePos: {x: -7.583044, y: 0.059713364, z: -4.679111} + nodePos: {x: -7.583029, y: 0.059708595, z: -5.669105} line: 0 - column: 4 + column: 2 fatherLevelNodes: [] nextLevelNodes: [] fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - roomType: 0 - isUse: 1 + isUse: 0 passBy: 0 - nodePos: {x: -5.4530487, y: 0.059719086, z: -8.679108} + nodePos: {x: -5.5830326, y: 0.05971241, z: -7.669103} line: 1 column: 0 - fatherLevelNodes: - - {x: 0, y: 1} - nextLevelNodes: - - {x: 2, y: 0} - fightEenemyPool: - mapIndex: - - roomType: 5 + fatherLevelNodes: [] + nextLevelNodes: [] + fightEenemyPool: weak + enemyList: + - 2002 + - 2002 + mapIndex: 100002 + - roomType: 0 isUse: 1 passBy: 0 - nodePos: {x: -5.4530506, y: 0.059720993, z: -7.679108} + nodePos: {x: -5.5830364, y: 0.059714317, z: -6.669105} line: 1 column: 1 fatherLevelNodes: - {x: 0, y: 1} nextLevelNodes: - {x: 2, y: 1} - fightEenemyPool: - mapIndex: + - {x: 2, y: 0} + - {x: 2, y: 2} + fightEenemyPool: weak + enemyList: + - 2002 + - 2002 + mapIndex: 100002 - roomType: 0 isUse: 0 passBy: 0 - nodePos: {x: -5.4530544, y: 0.0597229, z: -6.679111} + nodePos: {x: -5.583042, y: 0.059716225, z: -5.669106} line: 1 column: 2 fatherLevelNodes: [] nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 0 - isUse: 1 - passBy: 0 - nodePos: {x: -5.45306, y: 0.059724808, z: -5.679114} - line: 1 - column: 3 - fatherLevelNodes: - - {x: 0, y: 2} - - {x: 0, y: 3} - nextLevelNodes: - - {x: 2, y: 3} - fightEenemyPool: - mapIndex: - - roomType: 5 - isUse: 1 - passBy: 0 - nodePos: {x: -5.453064, y: 0.059726715, z: -4.679116} - line: 1 - column: 4 - fatherLevelNodes: - - {x: 0, y: 3} - nextLevelNodes: - - {x: 2, y: 4} - fightEenemyPool: - mapIndex: + fightEenemyPool: weak + enemyList: + - 2001 + mapIndex: 100001 - levelDataList: - - roomType: 5 + - roomType: 4 isUse: 1 passBy: 0 - nodePos: {x: -3.3230686, y: 0.059732437, z: -8.679108} + nodePos: {x: -3.5830479, y: 0.05972004, z: -7.669102} line: 2 column: 0 fatherLevelNodes: - - {x: 1, y: 0} + - {x: 1, y: 1} nextLevelNodes: - {x: 3, y: 0} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 3 + - roomType: 9 isUse: 1 passBy: 0 - nodePos: {x: -3.3230724, y: 0.059734344, z: -7.679109} + nodePos: {x: -3.5830517, y: 0.059721947, z: -6.669105} line: 2 column: 1 fatherLevelNodes: - {x: 1, y: 1} nextLevelNodes: - - {x: 3, y: 2} + - {x: 3, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 0 - isUse: 0 - passBy: 0 - nodePos: {x: -3.3230762, y: 0.05973625, z: -6.679111} - line: 2 - column: 2 - fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 3 + - roomType: 10 isUse: 1 passBy: 0 - nodePos: {x: -3.32308, y: 0.05973816, z: -5.679112} + nodePos: {x: -3.5830574, y: 0.059723854, z: -5.669108} line: 2 - column: 3 + column: 2 fatherLevelNodes: - - {x: 1, y: 3} + - {x: 1, y: 1} nextLevelNodes: - - {x: 3, y: 3} - {x: 3, y: 2} fightEenemyPool: - mapIndex: - - roomType: 0 - isUse: 1 - passBy: 0 - nodePos: {x: -3.3230858, y: 0.059740067, z: -4.679114} - line: 2 - column: 4 - fatherLevelNodes: - - {x: 1, y: 4} - nextLevelNodes: - - {x: 3, y: 4} - fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - roomType: 0 isUse: 1 passBy: 0 - nodePos: {x: -1.1930923, y: 0.05974579, z: -8.679106} + nodePos: {x: -1.5830636, y: 0.05972767, z: -7.669103} line: 3 column: 0 - fatherLevelNodes: - - {x: 2, y: 0} + fatherLevelNodes: [] nextLevelNodes: - {x: 4, y: 0} - fightEenemyPool: - mapIndex: - - roomType: 4 - isUse: 0 + fightEenemyPool: weak + enemyList: + - 2002 + - 2002 + mapIndex: 100001 + - roomType: 0 + isUse: 1 passBy: 0 - nodePos: {x: -1.1930962, y: 0.059747696, z: -7.679107} + nodePos: {x: -1.5830674, y: 0.059729576, z: -6.669105} line: 3 column: 1 fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 5 - isUse: 1 - passBy: 0 - nodePos: {x: -1.1931, y: 0.059749603, z: -6.679109} - line: 3 - column: 2 - fatherLevelNodes: - - {x: 2, y: 1} - - {x: 2, y: 3} nextLevelNodes: - - {x: 4, y: 3} - - {x: 4, y: 2} - fightEenemyPool: - mapIndex: + - {x: 4, y: 1} + fightEenemyPool: weak + enemyList: + - 2001 + mapIndex: 100001 - roomType: 0 isUse: 1 passBy: 0 - nodePos: {x: -1.1931033, y: 0.05975151, z: -5.679111} + nodePos: {x: -1.5830703, y: 0.059731483, z: -5.669107} line: 3 - column: 3 - fatherLevelNodes: - - {x: 2, y: 3} - nextLevelNodes: - - {x: 4, y: 4} - fightEenemyPool: - mapIndex: - - roomType: 5 - isUse: 1 - passBy: 0 - nodePos: {x: -1.1931071, y: 0.059753418, z: -4.679114} - line: 3 - column: 4 - fatherLevelNodes: - - {x: 2, y: 4} + column: 2 + fatherLevelNodes: [] nextLevelNodes: - - {x: 4, y: 4} - fightEenemyPool: - mapIndex: + - {x: 4, y: 2} + fightEenemyPool: weak + enemyList: + - 2002 + - 2002 + mapIndex: 100001 - levelDataList: - - roomType: 5 + - roomType: 11 isUse: 1 passBy: 0 - nodePos: {x: 0.9368901, y: 0.05975914, z: -8.679108} + nodePos: {x: 0.41692686, y: 0.0597353, z: -7.669103} line: 4 column: 0 fatherLevelNodes: @@ -265,180 +188,115 @@ MonoBehaviour: nextLevelNodes: - {x: 5, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 1 - isUse: 0 - passBy: 0 - nodePos: {x: 0.93688774, y: 0.059761047, z: -7.67911} - line: 4 - column: 1 - fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 5 + - roomType: 6 isUse: 1 passBy: 0 - nodePos: {x: 0.93688583, y: 0.059762955, z: -6.679111} + nodePos: {x: 0.41692448, y: 0.059737206, z: -6.669104} line: 4 - column: 2 + column: 1 fatherLevelNodes: - - {x: 3, y: 2} + - {x: 3, y: 1} nextLevelNodes: - - {x: 5, y: 2} + - {x: 5, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 3 + - roomType: 11 isUse: 1 passBy: 0 - nodePos: {x: 0.93688345, y: 0.059764862, z: -5.679114} + nodePos: {x: 0.41692352, y: 0.059739113, z: -5.669106} line: 4 - column: 3 + column: 2 fatherLevelNodes: - {x: 3, y: 2} nextLevelNodes: - - {x: 5, y: 2} - fightEenemyPool: - mapIndex: - - roomType: 0 - isUse: 1 - passBy: 0 - nodePos: {x: 0.936883, y: 0.05976677, z: -4.679116} - line: 4 - column: 4 - fatherLevelNodes: - - {x: 3, y: 3} - - {x: 3, y: 4} - nextLevelNodes: - - {x: 5, y: 4} + - {x: 5, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - - roomType: 0 + - roomType: 7 isUse: 0 passBy: 0 - nodePos: {x: 3.0668812, y: 0.05977249, z: -8.679108} + nodePos: {x: 2.416922, y: 0.059742928, z: -7.669101} line: 5 column: 0 fatherLevelNodes: [] nextLevelNodes: [] fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 1 + - roomType: 7 isUse: 1 passBy: 0 - nodePos: {x: 3.0668805, y: 0.0597744, z: -7.679108} + nodePos: {x: 2.4169211, y: 0.059744835, z: -6.669104} line: 5 column: 1 fatherLevelNodes: - {x: 4, y: 0} - nextLevelNodes: - - {x: 6, y: 1} - fightEenemyPool: - mapIndex: - - roomType: 1 - isUse: 1 - passBy: 0 - nodePos: {x: 3.0668807, y: 0.059776306, z: -6.67911} - line: 5 - column: 2 - fatherLevelNodes: - - {x: 4, y: 3} + - {x: 4, y: 1} - {x: 4, y: 2} nextLevelNodes: - - {x: 6, y: 2} - {x: 6, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 0 + - roomType: 7 isUse: 0 passBy: 0 - nodePos: {x: 3.06688, y: 0.059778214, z: -5.679112} + nodePos: {x: 2.4169207, y: 0.059746742, z: -5.669105} line: 5 - column: 3 + column: 2 fatherLevelNodes: [] nextLevelNodes: [] fightEenemyPool: - mapIndex: - - roomType: 3 - isUse: 1 - passBy: 0 - nodePos: {x: 3.0668788, y: 0.05978012, z: -4.679114} - line: 5 - column: 4 - fatherLevelNodes: - - {x: 4, y: 4} - nextLevelNodes: - - {x: 6, y: 3} - - {x: 6, y: 4} - fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - - roomType: 6 + - roomType: 0 isUse: 0 passBy: 0 - nodePos: {x: 5.1968794, y: 0.059785843, z: -8.679108} + nodePos: {x: 4.4169207, y: 0.059750557, z: -7.669101} line: 6 column: 0 fatherLevelNodes: [] nextLevelNodes: [] - fightEenemyPool: + fightEenemyPool: strong + enemyList: [] mapIndex: - - roomType: 6 + - roomType: 0 isUse: 1 passBy: 0 - nodePos: {x: 5.1968794, y: 0.05978775, z: -7.679109} + nodePos: {x: 4.4169207, y: 0.059752464, z: -6.669105} line: 6 column: 1 fatherLevelNodes: - {x: 5, y: 1} - - {x: 5, y: 2} nextLevelNodes: - - {x: 7, y: 0} - {x: 7, y: 1} - fightEenemyPool: + - {x: 7, y: 0} + - {x: 7, y: 2} + fightEenemyPool: strong + enemyList: [] mapIndex: - - roomType: 6 - isUse: 1 + - roomType: 0 + isUse: 0 passBy: 0 - nodePos: {x: 5.1968794, y: 0.059789658, z: -6.679112} + nodePos: {x: 4.4169207, y: 0.05975437, z: -5.669106} line: 6 column: 2 - fatherLevelNodes: - - {x: 5, y: 2} - nextLevelNodes: - - {x: 7, y: 1} - fightEenemyPool: - mapIndex: - - roomType: 6 - isUse: 1 - passBy: 0 - nodePos: {x: 5.1968794, y: 0.059791565, z: -5.679115} - line: 6 - column: 3 - fatherLevelNodes: - - {x: 5, y: 4} - nextLevelNodes: - - {x: 7, y: 3} - fightEenemyPool: - mapIndex: - - roomType: 6 - isUse: 1 - passBy: 0 - nodePos: {x: 5.1968794, y: 0.059793472, z: -4.679116} - line: 6 - column: 4 - fatherLevelNodes: - - {x: 5, y: 4} - nextLevelNodes: - - {x: 7, y: 4} - fightEenemyPool: + fatherLevelNodes: [] + nextLevelNodes: [] + fightEenemyPool: strong + enemyList: [] mapIndex: - levelDataList: - - roomType: 4 + - roomType: 12 isUse: 1 passBy: 0 - nodePos: {x: 7.3268824, y: 0.059799194, z: -8.679108} + nodePos: {x: 6.4169235, y: 0.059758186, z: -7.669102} line: 7 column: 0 fatherLevelNodes: @@ -446,117 +304,76 @@ MonoBehaviour: nextLevelNodes: - {x: 8, y: 0} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 0 + - roomType: 6 isUse: 1 passBy: 0 - nodePos: {x: 7.3268833, y: 0.0598011, z: -7.67911} + nodePos: {x: 6.416924, y: 0.059760094, z: -6.669105} line: 7 column: 1 fatherLevelNodes: - - {x: 6, y: 2} - {x: 6, y: 1} nextLevelNodes: - - {x: 8, y: 0} + - {x: 8, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 5 - isUse: 0 - passBy: 0 - nodePos: {x: 7.326885, y: 0.05980301, z: -6.679111} - line: 7 - column: 2 - fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 1 - isUse: 1 - passBy: 0 - nodePos: {x: 7.3268857, y: 0.059804916, z: -5.679114} - line: 7 - column: 3 - fatherLevelNodes: - - {x: 6, y: 3} - nextLevelNodes: - - {x: 8, y: 3} - fightEenemyPool: - mapIndex: - - roomType: 0 + - roomType: 8 isUse: 1 passBy: 0 - nodePos: {x: 7.326885, y: 0.059806824, z: -4.679115} + nodePos: {x: 6.416925, y: 0.059762, z: -5.669108} line: 7 - column: 4 + column: 2 fatherLevelNodes: - - {x: 6, y: 4} + - {x: 6, y: 1} nextLevelNodes: - - {x: 8, y: 3} + - {x: 8, y: 2} fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - - roomType: 3 + - roomType: 0 isUse: 1 passBy: 0 - nodePos: {x: 9.456891, y: 0.059812546, z: -8.679108} + nodePos: {x: 8.41693, y: 0.059765816, z: -7.669103} line: 8 column: 0 - fatherLevelNodes: - - {x: 7, y: 1} - - {x: 7, y: 0} + fatherLevelNodes: [] nextLevelNodes: - {x: 9, y: 0} - - {x: 9, y: 1} - fightEenemyPool: + fightEenemyPool: strong + enemyList: [] mapIndex: - - roomType: 0 - isUse: 0 + - roomType: 1 + isUse: 1 passBy: 0 - nodePos: {x: 9.456893, y: 0.059814453, z: -7.679108} + nodePos: {x: 8.416932, y: 0.059767723, z: -6.669105} line: 8 column: 1 fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: + nextLevelNodes: + - {x: 9, y: 1} + fightEenemyPool: elite + enemyList: [] mapIndex: - roomType: 0 - isUse: 0 + isUse: 1 passBy: 0 - nodePos: {x: 9.456895, y: 0.05981636, z: -6.67911} + nodePos: {x: 8.416934, y: 0.05976963, z: -5.669107} line: 8 column: 2 fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 5 - isUse: 1 - passBy: 0 - nodePos: {x: 9.456898, y: 0.059818268, z: -5.679112} - line: 8 - column: 3 - fatherLevelNodes: - - {x: 7, y: 3} - - {x: 7, y: 4} nextLevelNodes: - - {x: 9, y: 3} - fightEenemyPool: - mapIndex: - - roomType: 0 - isUse: 0 - passBy: 0 - nodePos: {x: 9.456898, y: 0.059820175, z: -4.679116} - line: 8 - column: 4 - fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: + - {x: 9, y: 2} + fightEenemyPool: strong + enemyList: [] mapIndex: - levelDataList: - - roomType: 1 + - roomType: 10 isUse: 1 passBy: 0 - nodePos: {x: 11.586908, y: 0.059825897, z: -8.679108} + nodePos: {x: 10.41694, y: 0.059773445, z: -7.669103} line: 9 column: 0 fatherLevelNodes: @@ -564,285 +381,176 @@ MonoBehaviour: nextLevelNodes: - {x: 10, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 0 + - roomType: 4 isUse: 1 passBy: 0 - nodePos: {x: 11.586911, y: 0.059827805, z: -7.679109} + nodePos: {x: 10.416943, y: 0.059775352, z: -6.669104} line: 9 column: 1 fatherLevelNodes: - - {x: 8, y: 0} + - {x: 8, y: 1} nextLevelNodes: - {x: 10, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 4 - isUse: 0 - passBy: 0 - nodePos: {x: 11.586914, y: 0.059829712, z: -6.679111} - line: 9 - column: 2 - fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 1 + - roomType: 9 isUse: 1 passBy: 0 - nodePos: {x: 11.58692, y: 0.05983162, z: -5.679112} + nodePos: {x: 10.416943, y: 0.05977726, z: -5.669106} line: 9 - column: 3 + column: 2 fatherLevelNodes: - - {x: 8, y: 3} + - {x: 8, y: 2} nextLevelNodes: - - {x: 10, y: 3} - - {x: 10, y: 2} - fightEenemyPool: - mapIndex: - - roomType: 1 - isUse: 0 - passBy: 0 - nodePos: {x: 11.586924, y: 0.059833527, z: -4.679114} - line: 9 - column: 4 - fatherLevelNodes: [] - nextLevelNodes: [] + - {x: 10, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - - roomType: 4 + - roomType: 0 isUse: 0 passBy: 0 - nodePos: {x: 13.71693, y: 0.05983925, z: -8.679108} + nodePos: {x: 12.416952, y: 0.059781075, z: -7.669101} line: 10 column: 0 fatherLevelNodes: [] nextLevelNodes: [] - fightEenemyPool: + fightEenemyPool: strong + enemyList: [] mapIndex: - - roomType: 5 + - roomType: 2 isUse: 1 passBy: 0 - nodePos: {x: 13.716934, y: 0.059841156, z: -7.679107} + nodePos: {x: 12.416956, y: 0.059782982, z: -6.669105} line: 10 column: 1 fatherLevelNodes: - {x: 9, y: 0} - {x: 9, y: 1} + - {x: 9, y: 2} nextLevelNodes: - {x: 11, y: 1} - - {x: 11, y: 0} - - {x: 11, y: 2} - fightEenemyPool: - mapIndex: - - roomType: 0 - isUse: 1 - passBy: 0 - nodePos: {x: 13.716938, y: 0.059843063, z: -6.679109} - line: 10 - column: 2 - fatherLevelNodes: - - {x: 9, y: 3} - nextLevelNodes: - - {x: 11, y: 2} - fightEenemyPool: - mapIndex: - - roomType: 4 - isUse: 1 - passBy: 0 - nodePos: {x: 13.71694, y: 0.05984497, z: -5.679113} - line: 10 - column: 3 - fatherLevelNodes: - - {x: 9, y: 3} - nextLevelNodes: - - {x: 11, y: 2} fightEenemyPool: + enemyList: [] mapIndex: - roomType: 0 isUse: 0 passBy: 0 - nodePos: {x: 13.716942, y: 0.059846878, z: -4.679115} + nodePos: {x: 12.416958, y: 0.05978489, z: -5.669107} line: 10 - column: 4 + column: 2 fatherLevelNodes: [] nextLevelNodes: [] - fightEenemyPool: + fightEenemyPool: strong + enemyList: [] mapIndex: - levelDataList: - - roomType: 0 - isUse: 1 + - roomType: 8 + isUse: 0 passBy: 0 - nodePos: {x: 15.846952, y: 0.0598526, z: -8.67911} + nodePos: {x: 14.416967, y: 0.059788704, z: -7.669103} line: 11 column: 0 - fatherLevelNodes: - - {x: 10, y: 1} - nextLevelNodes: - - {x: 12, y: 0} + fatherLevelNodes: [] + nextLevelNodes: [] fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 4 + - roomType: 8 isUse: 1 passBy: 0 - nodePos: {x: 15.846956, y: 0.059854507, z: -7.67911} + nodePos: {x: 14.416971, y: 0.05979061, z: -6.669107} line: 11 column: 1 fatherLevelNodes: - {x: 10, y: 1} nextLevelNodes: - - {x: 12, y: 0} + - {x: 12, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 3 - isUse: 1 - passBy: 0 - nodePos: {x: 15.84696, y: 0.059856415, z: -6.679111} - line: 11 - column: 2 - fatherLevelNodes: - - {x: 10, y: 3} - - {x: 10, y: 2} - - {x: 10, y: 1} - nextLevelNodes: - - {x: 12, y: 3} - - {x: 12, y: 2} - fightEenemyPool: - mapIndex: - - roomType: 0 - isUse: 0 - passBy: 0 - nodePos: {x: 15.846966, y: 0.059858322, z: -5.679114} - line: 11 - column: 3 - fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 0 + - roomType: 8 isUse: 0 passBy: 0 - nodePos: {x: 15.846968, y: 0.05986023, z: -4.679115} + nodePos: {x: 14.416973, y: 0.05979252, z: -5.669109} line: 11 - column: 4 + column: 2 fatherLevelNodes: [] nextLevelNodes: [] fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - - roomType: 4 - isUse: 1 - passBy: 0 - nodePos: {x: 17.976984, y: 0.05986595, z: -8.679108} - line: 12 - column: 0 - fatherLevelNodes: - - {x: 11, y: 1} - - {x: 11, y: 0} - nextLevelNodes: - - {x: 13, y: 2} - - {x: 13, y: 2} - fightEenemyPool: - mapIndex: - - roomType: 4 + - roomType: 5 isUse: 0 passBy: 0 - nodePos: {x: 17.976994, y: 0.05986786, z: -7.679109} + nodePos: {x: 16.41698, y: 0.059796333, z: -7.669105} line: 12 - column: 1 + column: 0 fatherLevelNodes: [] nextLevelNodes: [] fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 4 - isUse: 1 - passBy: 0 - nodePos: {x: 17.977, y: 0.059869766, z: -6.679111} - line: 12 - column: 2 - fatherLevelNodes: - - {x: 11, y: 2} - nextLevelNodes: - - {x: 13, y: 2} - - {x: 13, y: 2} - fightEenemyPool: - mapIndex: - - roomType: 4 + - roomType: 5 isUse: 1 passBy: 0 - nodePos: {x: 17.977009, y: 0.059871674, z: -5.679112} + nodePos: {x: 16.416985, y: 0.05979824, z: -6.669105} line: 12 - column: 3 + column: 1 fatherLevelNodes: - - {x: 11, y: 2} + - {x: 11, y: 1} nextLevelNodes: - - {x: 13, y: 2} + - {x: 13, y: 1} fightEenemyPool: + enemyList: [] mapIndex: - - roomType: 4 + - roomType: 5 isUse: 0 passBy: 0 - nodePos: {x: 17.977015, y: 0.05987358, z: -4.679114} + nodePos: {x: 16.416985, y: 0.059800148, z: -5.669108} line: 12 - column: 4 + column: 2 fatherLevelNodes: [] nextLevelNodes: [] fightEenemyPool: + enemyList: [] mapIndex: - levelDataList: - - roomType: 2 + - roomType: 3 isUse: 0 passBy: 0 - nodePos: {x: 20.107035, y: 0.059879303, z: -8.179108} + nodePos: {x: 18.417002, y: 0.059803963, z: -7.169103} line: 13 column: 0 fatherLevelNodes: [] nextLevelNodes: [] - fightEenemyPool: + fightEenemyPool: Boss + enemyList: [] mapIndex: - - roomType: 2 - isUse: 0 - passBy: 0 - nodePos: {x: 20.10704, y: 0.05988121, z: -7.17911} - line: 13 - column: 1 - fatherLevelNodes: [] - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 2 + - roomType: 3 isUse: 1 passBy: 0 - nodePos: {x: 20.10705, y: 0.059883118, z: -6.179111} + nodePos: {x: 18.417011, y: 0.05980587, z: -6.169105} line: 13 - column: 2 + column: 1 fatherLevelNodes: - - {x: 12, y: 0} - - {x: 12, y: 0} - - {x: 12, y: 3} - - {x: 12, y: 2} - - {x: 12, y: 2} - nextLevelNodes: [] - fightEenemyPool: - mapIndex: - - roomType: 2 - isUse: 0 - passBy: 0 - nodePos: {x: 20.107058, y: 0.059885025, z: -5.179113} - line: 13 - column: 3 - fatherLevelNodes: [] + - {x: 12, y: 1} nextLevelNodes: [] - fightEenemyPool: + fightEenemyPool: Boss + enemyList: [] mapIndex: - - roomType: 2 + - roomType: 3 isUse: 0 passBy: 0 - nodePos: {x: 20.107065, y: 0.059886932, z: -4.179115} + nodePos: {x: 18.417017, y: 0.059807777, z: -5.169107} line: 13 - column: 4 + column: 2 fatherLevelNodes: [] nextLevelNodes: [] - fightEenemyPool: + fightEenemyPool: Boss + enemyList: [] mapIndex: diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/MapNodePrefab/MapUnity _2.prefab b/ColorlessWorld-2024-4-2/Assets/Prefab/MapNodePrefab/MapUnity _2.prefab index 14cf5a87..a728fe65 100644 --- a/ColorlessWorld-2024-4-2/Assets/Prefab/MapNodePrefab/MapUnity _2.prefab +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/MapNodePrefab/MapUnity _2.prefab @@ -556,6 +556,9 @@ MonoBehaviour: - {fileID: 0} locationX: 0 locationY: 0 + cubeQ: 0 + cubeS: 0 + cubeR: 0 compalte: 0 influenced: 0 infHighLight: 0 diff --git a/ColorlessWorld-2024-4-2/Assets/Resources/ItemPrefab/Vacancy.prefab b/ColorlessWorld-2024-4-2/Assets/Resources/ItemPrefab/Vacancy.prefab new file mode 100644 index 00000000..c2216b09 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Resources/ItemPrefab/Vacancy.prefab @@ -0,0 +1,189 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1496019408761085200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5563030652977735299} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5563030652977735299 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1496019408761085200} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.17, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 6047049870113643063} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2458175114420723768 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6047049870113643063} + - component: {fileID: 4354208083307919355} + - component: {fileID: 6425500129360686181} + - component: {fileID: 327044631283834333} + m_Layer: 0 + m_Name: Vacancy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6047049870113643063 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2458175114420723768} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.13052616, z: 0, w: 0.9914449} + m_LocalPosition: {x: 3.592, y: 1, z: -1.2736247} + m_LocalScale: {x: 0.9, y: 0.9, z: 0.9} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 5563030652977735299} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 15, z: 0} +--- !u!212 &4354208083307919355 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2458175114420723768} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 2 + m_Sprite: {fileID: 21300000, guid: f9ca4d2a420a8f14b8ff292551fc0001, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.923, y: 1.879} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &6425500129360686181 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2458175114420723768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d99a212ab38d69947b365e3770680781, type: 3} + m_Name: + m_EditorClassIdentifier: + takeOverType: 0 + blockType: 2 +--- !u!114 &327044631283834333 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2458175114420723768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bc7c825b2060cb44ab9a88f267adf20d, type: 3} + m_Name: + m_EditorClassIdentifier: + templateEnemyState: {fileID: 11400000, guid: b991b3f0500bd0c439d1a956c497c4cb, type: 2} + EnemyState: {fileID: 0} + positionX: 0 + positionY: 0 + pasth: [] + oppositePasth: [] + moveType: 0 + rangePool: [] + aoeRangePool: [] + stateText: + jumpHeight: 0 + posCount: 0 + jumpSpeed: 0 + speedCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + enemyType: 1 + enemyScript: 0 + lineAim: {fileID: 0} + canLineAppre: 0 + disableAttack: {fileID: 0} + enemyUIBar: {fileID: 0} + blockUIBar: {fileID: 0} + enemyUI: {fileID: 0} + followPoint: {fileID: 5563030652977735299} + bone: {fileID: 0} + bone_Re: {fileID: 0} + lasteHp: 0 + anim: {fileID: 0} + meleeAttackSpeed: 0 + meleeAttackSpeedCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorUnderAttack: 0 + canMove: 0 + planAction: 0 + drawCardCount: 2 diff --git a/ColorlessWorld-2024-4-2/Assets/Resources/ItemPrefab/Vacancy.prefab.meta b/ColorlessWorld-2024-4-2/Assets/Resources/ItemPrefab/Vacancy.prefab.meta new file mode 100644 index 00000000..fddf3d13 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Resources/ItemPrefab/Vacancy.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb59db3658eedc84dab235921d1ab4f6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scenes/Map.unity b/ColorlessWorld-2024-4-2/Assets/Scenes/Map.unity index c5337a98..dcbbb1ba 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scenes/Map.unity +++ b/ColorlessWorld-2024-4-2/Assets/Scenes/Map.unity @@ -3836,16 +3836,18 @@ MonoBehaviour: - levelColumn: [] monsterIcon: {fileID: 1709634788, guid: ee9d3d2936bac1148abcec2385b98ec3, type: 3} eliteMonsterIcon: {fileID: 929432110, guid: ee9d3d2936bac1148abcec2385b98ec3, type: 3} + eliteAndMonsterIcon: {fileID: 21300000, guid: 182c3c1bcddd9bd4a86cdaaf70e3d6b0, + type: 3} bossIcon: {fileID: 865203525, guid: ee9d3d2936bac1148abcec2385b98ec3, type: 3} shopIcon: {fileID: 865446097, guid: ee9d3d2936bac1148abcec2385b98ec3, type: 3} campfireIcon: {fileID: -1693594073, guid: ee9d3d2936bac1148abcec2385b98ec3, type: 3} incidentIcon: {fileID: -687936468, guid: ee9d3d2936bac1148abcec2385b98ec3, type: 3} treasureIcon: {fileID: 558621461, guid: ee9d3d2936bac1148abcec2385b98ec3, type: 3} - forgingIcon: {fileID: 21300000, guid: 02691098c39ccd6458dd3771b3004071, type: 3} - deleteCardIcon: {fileID: 21300000, guid: 02691098c39ccd6458dd3771b3004071, type: 3} - addCardIcon: {fileID: 21300000, guid: 02691098c39ccd6458dd3771b3004071, type: 3} - resourceIcon: {fileID: 21300000, guid: 02691098c39ccd6458dd3771b3004071, type: 3} - potionIcon: {fileID: 21300000, guid: 02691098c39ccd6458dd3771b3004071, type: 3} + forgingIcon: {fileID: 21300000, guid: 8ef49f8fd07fb3c4a9605ea6310de0bf, type: 3} + deleteCardIcon: {fileID: 21300000, guid: 2b6cbc9fb953ffc4eb02968e26d8f0cb, type: 3} + addCardIcon: {fileID: 21300000, guid: a8b50b2b4dd2d3b429b213be2a984e0b, type: 3} + resourceIcon: {fileID: 21300000, guid: 00234b60ba12993428c782adbed08140, type: 3} + potionIcon: {fileID: 21300000, guid: 99d6cfcd8d628454989abc09534f0b64, type: 3} startIcon: {fileID: 21300000, guid: 02691098c39ccd6458dd3771b3004071, type: 3} --- !u!1 &324633910 GameObject: @@ -16105,11 +16107,11 @@ MonoBehaviour: pathAmount: 3 treasureFloor: 5 forgingFloor: 11 - randomFightFloor: - normalFightFloor: + singleFightFloor: 01000000060000000a000000 + multipleFightFloor: 0300000008000000 rewardNodeFloor: 0200000007000000 - randomRoomTypeWeightBase: 050000000700000008000000090000000a0000000b000000 - randomRoomTypeWeightAttach: 05000000050000000700000008000000090000000a0000000b000000 + randomRoomTypeWeightBase: 0c00000008000000090000000a0000000b00000006000000 + randomRoomTypeWeightAttach: 06000000060000000c00000008000000090000000a0000000b000000 levelPrefab: {fileID: 980190143975240430, guid: c8c223db4c0d17645bca03489a39b721, type: 3} levelBossPrefab: {fileID: 980190143975240430, guid: e252a7011ae30f84da117f7e07d56996, diff --git a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity b/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity index 309abf54..9731c11c 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity +++ b/ColorlessWorld-2024-4-2/Assets/Scenes/SampleScene.unity @@ -3259,7 +3259,6 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - colorUnderAttack: 0 canMove: 0 planAction: 0 --- !u!4 &173840243 @@ -3329,7 +3328,6 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - colorUnderAttack: 0 canMove: 0 planAction: 0 --- !u!135 &173840245 @@ -10568,7 +10566,6 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - colorUnderAttack: 0 canMove: 0 planAction: 0 --- !u!114 &490441551 @@ -10622,7 +10619,6 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - colorUnderAttack: 0 canMove: 0 planAction: 0 --- !u!4 &490441552 @@ -39331,6 +39327,7 @@ MonoBehaviour: isPass: 0 isTreasure: 0 itemCsvFilePath: LevelMapToItem.csv + itemLimitCsvFilePath: MapItemCount.csv --- !u!4 &1690695890 Transform: m_ObjectHideFlags: 0 @@ -49042,7 +49039,6 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - colorUnderAttack: 0 canMove: 0 planAction: 0 --- !u!4 &1624752141151469405 @@ -49878,7 +49874,6 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - colorUnderAttack: 0 canMove: 0 planAction: 0 --- !u!1 &7228810535441088300 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs index 0167da1c..7634c0f1 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs @@ -462,7 +462,9 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag //influencePreviewPool.Add(currentNode); //更新涂色预览材质 - SettlementManager.Instance.PreviewSwitchColor(cardEntity.cardOriginalData, currentNode); + // SettlementManager.Instance.PreviewSwitchColor(cardEntity.cardOriginalData, currentNode); + //更新地块计数 + SettlementManager.Instance.PreviewColorMapUnity(cardEntity.cardOriginalData, currentNode); } //更新效果作用范围内怪物虚血 @@ -511,8 +513,8 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag getNodeTools.setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, 30.0f, currentNode, cardEntity); //更新效果作用范围内怪物虚血 EnemyManager.Instance.ShowExpHp_Observer(cardEntity.influencePreviewPool); - //更新涂色预览材质 - SettlementManager.Instance.PreviewSwitchColor(cardEntity.cardOriginalData, GameManager .Instance .playerOn ); + //更新涂色材质和地块数量统计预览 + SettlementManager.Instance.PreviewColorMapUnity(cardEntity.cardOriginalData, GameManager .Instance .playerOn ); } public void OnDrag(PointerEventData eventData) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlackSheep.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlackSheep.cs index 677041cd..b5cfd7b8 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlackSheep.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/BlackSheep.cs @@ -171,7 +171,7 @@ public class BlackSheep : MonoBehaviour IEnumerator ShieldAction() { enemyNode.EnemyState.shieldValue += 4; - MapUnity currentNode = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY]; + MapUnity currentNode = getNodeTools .LocationToGetNode ( enemyNode.positionX,enemyNode.positionY); if (getNodeTools.canRemoteAttack(currentNode, enemyNode.EnemyState.attackRange)) { if (!enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.disarm)) @@ -185,7 +185,7 @@ public class BlackSheep : MonoBehaviour { yield return StartCoroutine(moveTowardsPlayer()); yield return new WaitForSeconds(1); - currentNode = GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY]; + currentNode = getNodeTools.LocationToGetNode(enemyNode.positionX, enemyNode.positionY); if (getNodeTools.canRemoteAttack(currentNode, enemyNode.EnemyState.attackRange)) { if (!enemyNode.EnemyState.abnormalCondition.ContainsKey(AbnormalCondition.disarm)) diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs index e8eadd30..ccef9048 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs @@ -8,6 +8,7 @@ using UnityEngine; using UnityEngine.Assertions; using UnityEngine.UI; using static Name; +using static UnityEditor.FilePathAttribute; using static UnityEngine.Rendering.DebugUI; public class EnemyNode : MonoBehaviour,IEnemyObserver @@ -68,8 +69,6 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver [Header("敌人近战攻击动画速度")] public float meleeAttackSpeed; public AnimationCurve meleeAttackSpeedCurve; - [Header("敌人受到哪种颜色攻击")] - public int colorUnderAttack; public enum EnemyType { @@ -195,7 +194,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver blockUIBar.SyncHp(EnemyState.currentNumberOfHits); if(EnemyState.currentNumberOfHits <= 0 ) { - GameManager.Instance.X[positionX].Y[positionY].blocked = false; + // GameManager.Instance.X[positionX].Y[positionY].blocked = false; OnDeath(); } } @@ -212,7 +211,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver { enemyUIBar.sheildFlash.enabled = true; } - if (mapUnities.Contains(GameManager.Instance.X[positionX].Y[positionY])) + if (mapUnities.Contains(getNodeTools .LocationToGetNode (positionX ,positionY))) { enemyUIBar.isSync = false; float remainDamage = EnemyState.shieldValue - Usermanager.Instance.expectDamage; @@ -264,11 +263,13 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver public void StartPosition() { //this.transform.position = GameManager.Instance.X[positionX].Y[positionY].transform.position; - GameManager.Instance.X[positionX].Y[positionY].enemyNode = this; - transform.SetParent(GameManager.Instance.X[positionX].Y[positionY].CylinderFloor.transform); + MapUnity mapUnity = getNodeTools.LocationToGetNode(positionX, positionY); + mapUnity.enemyNode = this; + //GameManager.Instance.X[positionX].Y[positionY].enemyNode = this; + transform.SetParent(mapUnity.CylinderFloor.transform); if (enemyType ==EnemyType.block) { - GameManager.Instance.X[positionX].Y[positionY].blocked = true; + mapUnity.blocked = true; } } @@ -396,7 +397,21 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver int result=(int)(trueStepRange * stepMultiplie); return result; } - + public virtual List PreviewColorRange() + { + return null; + } + public virtual bool CanOneDeath() + { + if (EnemyState.currentNumberOfHits - 1 <= 0) + { + return true; + } + else + { + return false; + } + } public void EnemyTurn() { switch (enemyScript) @@ -495,7 +510,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver } public void AppearAimLine() { - MapUnity currentMapUnity = GameManager.Instance.X[positionX].Y[positionY]; + MapUnity currentMapUnity = getNodeTools.LocationToGetNode(positionX, positionY); EnemyManager.Instance.AttackRangeInfluencedNode(currentMapUnity, EnemyState.attackRange + getStepRange(),rangePool); switch (planAction) @@ -567,7 +582,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver private MapUnity getEndNodeTowardsPlayer() { - MapUnity currentMapUnity = GameManager.Instance.X[positionX].Y[positionY]; + MapUnity currentMapUnity = getNodeTools.LocationToGetNode(positionX, positionY); HashSet shootAbleMapUnity = new HashSet(); HashSet reachAbleMapUnity = new HashSet(); HashSet endNodeMapUnityList = new HashSet(); @@ -625,7 +640,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver private MapUnity getEndNodeAwayFromPlayer() { - MapUnity currentMapUnity = GameManager.Instance.X[positionX].Y[positionY]; + MapUnity currentMapUnity = getNodeTools.LocationToGetNode(positionX, positionY); HashSet nearestMapUnity = new HashSet(); HashSet endNodeMapUnityList = new HashSet(); Dictionary endNodeMapUnityMap = new Dictionary(); @@ -782,7 +797,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver EnemyNode newEnemyNode = currentenemy.GetComponent(); newEnemyNode.positionX = positionX; newEnemyNode.positionY = positionY; - MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY]; + MapUnity currentNode = getNodeTools.LocationToGetNode(positionX, positionY); currentNode.enemyNode = newEnemyNode; } @@ -835,7 +850,7 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver public void boomAndPolluteCal() { - MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY]; + MapUnity currentNode = getNodeTools.LocationToGetNode(positionX, positionY); HashSet targetSet=new HashSet(); targetSet.Add(currentNode); getNodeTools.getCircleNodeForBoom(targetSet, 1); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/BlockNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/BlockNode.cs index 654495fb..72c64960 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/BlockNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/BlockNode.cs @@ -37,6 +37,7 @@ public class BlockNode : EnemyNode blockUIBar.CreatSartHp(EnemyState.currentNumberOfHits); // blockUIBar.enemyNode = enemyNode; } + public override void OnDeath() { Destroy(this.gameObject); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Boom.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Boom.cs index 962b6a80..89eaf9b7 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Boom.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Boom.cs @@ -20,14 +20,62 @@ public class Boom : BlockNode IEnumerator DrawCardAndDestory() { //计算角度 - MapUnity currentNode = GameManager.Instance.X[positionX].Y[positionY]; + MapUnity currentNode = getNodeTools.LocationToGetNode(positionX,positionY); CAngle(currentNode); currentNode.blocked = false; currentNode.enemyNode = null; Destroy(this.gameObject); yield break; } + public override List PreviewColorRange() + { + MapUnity currentNode = getNodeTools.LocationToGetNode(positionX, positionY); + List effectRangePreviewPool = new List(); + + Vector3 direction = transform.position - GameManager.Instance.player.transform.position; + float angle1 = Vector3.SignedAngle(transform.forward, direction, transform.up); + if (angle1 < 0) + { + angle1 += 360f; + } + if (angle1 >= 300f) + { + angle1 = 330f; + } + else if (angle1 >= 240f) + { + angle1 = 270f; + } + else if (angle1 >= 180f) + { + angle1 = 210f; + } + else if (angle1 >= 120f) + { + angle1 = 150f; + } + else if (angle1 >= 60f) + { + angle1 = 90f; + } + else if (angle1 >= 0f) + { + angle1 = 30f; + } + + effectRangePreviewPool = getNodeTools.setEffectRangePreviewNoCard("4_1", angle1, currentNode).ToList(); + + foreach (var mapNode in effectRangePreviewPool) + { + // Vector3 pos = mapNode.transform.position; + // pos.y = particlePoint.position.y; + // var bluePartical = Instantiate(ParticalManager.Instance.redParticleEffect,pos, ParticalManager.Instance.redParticleEffect.transform.rotation); + // bluePartical.transform.SetParent(currentNode.transform); + mapNode.switchPreColor(currentNode.colorUnderAttack); + } + return effectRangePreviewPool; + } public void CAngle(MapUnity currentNode) { List effectRangePreviewPool = new List(); @@ -69,12 +117,12 @@ public class Boom : BlockNode // SettlementManager.Instance.damageWork(damage, effectRangePreviewPool, -1); foreach (var mapNode in effectRangePreviewPool ) - { + { // Vector3 pos = mapNode.transform.position; // pos.y = particlePoint.position.y; // var bluePartical = Instantiate(ParticalManager.Instance.redParticleEffect,pos, ParticalManager.Instance.redParticleEffect.transform.rotation); // bluePartical.transform.SetParent(currentNode.transform); - mapNode.switchColor(colorUnderAttack); - } + mapNode.switchColor(currentNode. colorUnderAttack); + } } } \ No newline at end of file diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/TNTBucket.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/TNTBucket.cs index 4f80ceab..f0d3d7f7 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/TNTBucket.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/TNTBucket.cs @@ -11,16 +11,32 @@ public class TNTBucket : BlockNode IEnumerator DrawCardAndDestory() { - foreach (var node in GameManager.Instance.X[positionX].Y[positionY].unitPool ) + MapUnity mapUnity = getNodeTools.LocationToGetNode(positionX, positionY); + foreach (var node in mapUnity.unitPool ) { if(node != null ) { - node.switchColor(colorUnderAttack); + node.switchColor(mapUnity . colorUnderAttack); } } - GameManager.Instance.X[positionX].Y[positionY].blocked = false; - GameManager.Instance.X[positionX].Y[positionY].enemyNode = null; + mapUnity.blocked = false; + mapUnity.enemyNode = null; Destroy(this.gameObject); yield break; } + + public override List PreviewColorRange() + { + MapUnity mapUnity = getNodeTools.LocationToGetNode(positionX, positionY); + List effectRangePreviewPool = new List(); + foreach (var node in mapUnity.unitPool) + { + if (node != null) + { + effectRangePreviewPool.Add(node); + node.switchPreColor(mapUnity.colorUnderAttack); + } + } + return effectRangePreviewPool; + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Tree.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Tree.cs index 0a0da948..04652446 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Tree.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Tree.cs @@ -18,10 +18,11 @@ public class Tree : BlockNode IEnumerator DrawCardAndDestory() { + MapUnity mapUnity = getNodeTools.LocationToGetNode(positionX, positionY); TurnMaster.Instance.StartCoroutine(TurnMaster.Instance.drawCards(drawCardCount)); yield return StartCoroutine(TurnMaster.Instance.MoveCards()); - GameManager.Instance.X[positionX].Y[positionY].blocked = false; - GameManager.Instance.X[positionX].Y[positionY].enemyNode = null; + mapUnity.blocked = false; + mapUnity.enemyNode = null; Destroy(this.gameObject); yield break; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Vacancy.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Vacancy.cs new file mode 100644 index 00000000..ab52f10b --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Vacancy.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UIElements; + +public class Vacancy : BlockNode +{ + public int drawCardCount = 2; + private void Start() + { + if (blockUIBar == null) + { + CreatEnemyUIBar(this); + + } + lasteHp = (int)EnemyState.currentHP; + enemyUI.SetActive(false); + } + public override void OnDeath() + { + + } + + +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Vacancy.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Vacancy.cs.meta new file mode 100644 index 00000000..b05b13bd --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/BlockNode/Vacancy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc7c825b2060cb44ab9a88f267adf20d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/TakerOverNode/ItemTakerOverNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/TakerOverNode/ItemTakerOverNode.cs index bd0cde30..e6fcf647 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/TakerOverNode/ItemTakerOverNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/TakerOverNode/ItemTakerOverNode.cs @@ -13,7 +13,8 @@ public class ItemTakerOverNode : MonoBehaviour public enum BlockType { common, - whirlpool + whirlpool, + vacancy } public BlockType blockType; @@ -58,6 +59,16 @@ public class ItemTakerOverNode : MonoBehaviour whirlpoolS.posX = currentMapUnity.locationX; whirlpoolS.posY = currentMapUnity.locationY; break; + case BlockType.vacancy: + Vector3 pos3 = currentMapUnity.transform.position; + pos.y = 1; + var vacancy = Instantiate(prefab, pos3, Quaternion.identity); + currentMapUnity.enemyNode = vacancy.GetComponent(); + currentMapUnity.enemyNode.positionX = currentMapUnity.locationX; + currentMapUnity.enemyNode.positionY = currentMapUnity.locationY; + currentMapUnity.blocked = true; + currentMapUnity .CylinderFloor .SetActive(false); + break; } } 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 4a67dc5e..844446da 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/Whirlpool.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/Item/Whirlpool.cs @@ -25,7 +25,7 @@ public class Whirlpool : MonoBehaviour } holdPool.Add(currentNode); holdeText .text =holdColorCount .ToString(); - GameManager.Instance.playerUsedCard += WhirlpoolHold; + GameManager.Instance.whirlpoolEffectSycn += WhirlpoolHold; } public void WhirlpoolHold() { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/EnemyPlanFunction/EnemyAction.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/EnemyPlanFunction/EnemyAction.cs index 681a9c24..3d4cc829 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/EnemyPlanFunction/EnemyAction.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/EnemyPlanFunction/EnemyAction.cs @@ -76,28 +76,28 @@ public class EnemyAction //通用普攻 public virtual void GeneralAttackRange(EnemyNode enemyNode) { - EnemyManager.Instance.AttackRangeInfluencedNode(GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY], enemyNode.EnemyState .attackRange , enemyNode.rangePool); + EnemyManager.Instance.AttackRangeInfluencedNode(getNodeTools.LocationToGetNode(enemyNode.positionX, enemyNode.positionY), enemyNode.EnemyState .attackRange , enemyNode.rangePool); } //近战 public virtual void MeleeAttackRange(EnemyNode enemyNode) { - EnemyManager.Instance.AttackRangeInfluencedNode(GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY], enemyNode.getStepRange()+1, enemyNode.rangePool); + EnemyManager.Instance.AttackRangeInfluencedNode(getNodeTools.LocationToGetNode(enemyNode.positionX, enemyNode.positionY), enemyNode.getStepRange()+1, enemyNode.rangePool); } //远程-攻击范围 public virtual void ShootAttackRange(EnemyNode enemyNode) { Debug.Log("shoot"); - EnemyManager.Instance.AttackRangeInfluencedNode(GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY], enemyNode.EnemyState.attackRange, enemyNode.rangePool); + EnemyManager.Instance.AttackRangeInfluencedNode(getNodeTools.LocationToGetNode(enemyNode.positionX,enemyNode.positionY), enemyNode.EnemyState.attackRange, enemyNode.rangePool); } //范围-作用范围 public virtual void AoeAttackRange(EnemyNode enemyNode) { Debug.Log("aoe"); //几-几 - EnemyManager.Instance.AttackRangeInfluencedNode(GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY], enemyNode.EnemyState.attackRange, enemyNode.rangePool); - EnemyManager.Instance.AttackRangeInfluencedNode(GameManager.Instance.X[enemyNode.positionX].Y[enemyNode.positionY], enemyNode.EnemyState.aoeRange, enemyNode.aoeRangePool); + EnemyManager.Instance.AttackRangeInfluencedNode(getNodeTools.LocationToGetNode(enemyNode.positionX, enemyNode.positionY), enemyNode.EnemyState.attackRange, enemyNode.rangePool); + EnemyManager.Instance.AttackRangeInfluencedNode(getNodeTools.LocationToGetNode(enemyNode.positionX, enemyNode.positionY), enemyNode.EnemyState.aoeRange, enemyNode.aoeRangePool); ShowAttackRangeAoe(enemyNode); } //魔法 diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs index e0217868..1c530915 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/GameManager.cs @@ -312,6 +312,7 @@ public class GameManager : Singleton White.fillAmount = Metal.fillAmount + whiteNodeCountLatest / totoalNode; // Black.fillAmount = Bule.fillAmount + blackNodeCountLatest / totoalNode; //预览涂色 + if (onDrag && currentCardEntity != null ) { if(currentCardEntity.cardOriginalData.CastingRange != 0) @@ -329,7 +330,7 @@ public class GameManager : Singleton { currentMapNode = playerOn; } - List ints = SettlementManager.Instance.PreviewColorMapUnity(currentCardEntity.cardOriginalData, currentMapNode); + List ints = SettlementManager.Instance.GetNodeCountStats(); for (int i = 0; i < ints.Count; i++) { switch (i) @@ -653,15 +654,17 @@ public class GameManager : Singleton whiteMapUnities.RemoveAt(index); yield return null; } + + BroadCastWhirlpoolEffectSycn(); } - //玩家释放完一张卡牌 - public event Action playerUsedCard; - public void BroadCastPlayerUsedCard() + //触发漩涡同步颜色 + public event Action whirlpoolEffectSycn; + public void BroadCastWhirlpoolEffectSycn() { - if (playerUsedCard != null) - playerUsedCard(); + if (whirlpoolEffectSycn != null) + whirlpoolEffectSycn(); } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs index 0c48f8b5..c019b2a8 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LeveGeneraterNew.cs @@ -28,10 +28,10 @@ public class LeveGeneraterNew : Singleton public int treasureFloor; //锻造 public int forgingFloor; - //随机战 - public List randomFightFloor; - //普通战 - public List normalFightFloor; + //单节点战斗 + public List singleFightFloor; + //三节点战斗 + public List multipleFightFloor; //随机奖励节点 public List rewardNodeFloor; public List randomRoomTypeWeightBase; @@ -391,6 +391,14 @@ public class LeveGeneraterNew : Singleton room.SetUpRoom(RoomType.campfire); } } + else if (i == generatorLine - 3) + { + //倒数第三层全是铸造 + foreach (var room in levelMap[i].levelColumn) + { + room.SetUpRoom(RoomType.forging); + } + } else if (i == generatorLine - 1) { //最后一层boss房 @@ -402,7 +410,7 @@ public class LeveGeneraterNew : Singleton } - //阶段a的随机奖励生成 + //阶段的随机奖励生成 List> levelNodes = new List>(); List aNode_1 = new List (); List aNode_2 = new List(); @@ -427,115 +435,126 @@ public class LeveGeneraterNew : Singleton levelNodes[shopA_l][shopA_C ].SetUpRoom(RoomType.shop); levelNodes[shopB_l][shopB_C].SetUpRoom(RoomType.shop); levelNodes[shopA_l][shopA_C] = null; - levelNodes[shopB_l][shopB_C] = null; - for (int i = 0; i order = new List() {0,2,1,3}; + for (int a = 0; a < order.Count; a++) { - RoomType roomType = randomRoomTypeWeightBase[ Random.Range(0, randomRoomTypeWeightBase.Count)]; - bool isGo = true; - while(isGo) + int i = order [a]; + for (int j = 0; j < 3; j++) { - int line = Random.Range(0, levelNodes.Count); - int cloum = Random.Range(0, levelNodes[line].Count); - LevelNode currentNode = levelNodes[line][cloum]; - if (currentNode!= null) + bool isGo = true; + LevelNode currentNode = levelNodes[i][j]; + while (isGo) { - switch (line) + + RoomType roomType; + if (randomRoomTypeWeightBase.Count>0) + { roomType = randomRoomTypeWeightBase[Random.Range(0, randomRoomTypeWeightBase.Count)]; } + else { - case 0: - if(levelMap[currentNode.line+2].levelColumn[currentNode.column].roomType !=roomType) - { - currentNode.SetUpRoom(roomType); - levelNodes[line][cloum] = null; - randomRoomTypeWeightBase.Remove(roomType); - isGo = false; - } - break; - case 1: - if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) - { - currentNode.SetUpRoom(roomType); - levelNodes[line][cloum] = null; - randomRoomTypeWeightBase.Remove(roomType); - isGo = false; - } - break; - case 2: - if (levelMap[currentNode.line + 2].levelColumn[currentNode.column].roomType != roomType) - { - currentNode.SetUpRoom(roomType); - levelNodes[line][cloum] = null; - randomRoomTypeWeightBase.Remove(roomType); - isGo = false; - } - break; - case 3: - if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) - { - currentNode.SetUpRoom(roomType); - levelNodes[line][cloum] = null; - randomRoomTypeWeightBase.Remove(roomType); - isGo = false; - } - break; + roomType = randomRoomTypeWeightAttach[Random.Range(0, randomRoomTypeWeightAttach.Count)]; + } + if (currentNode != null) + { + switch (i) + { + case 0: + if (levelMap[currentNode.line + 2].levelColumn[currentNode.column].roomType != roomType) + { + currentNode.SetUpRoom(roomType); + if (randomRoomTypeWeightBase.Count > 0) + { + randomRoomTypeWeightBase.Remove(roomType); + } + else + { + randomRoomTypeWeightAttach.Remove(roomType); + } + isGo = false; + } + break; + case 1: + if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) + { + currentNode.SetUpRoom(roomType); + if (randomRoomTypeWeightBase.Count > 0) + { + randomRoomTypeWeightBase.Remove(roomType); + } + else + { + randomRoomTypeWeightAttach.Remove(roomType); + } + isGo = false; + } + break; + case 2: + if (levelMap[currentNode.line + 2].levelColumn[currentNode.column].roomType != roomType) + { + currentNode.SetUpRoom(roomType); + if (randomRoomTypeWeightBase.Count > 0) + { + randomRoomTypeWeightBase.Remove(roomType); + } + else + { + randomRoomTypeWeightAttach.Remove(roomType); + } + isGo = false; + } + break; + case 3: + if (levelMap[currentNode.line - 2].levelColumn[currentNode.column].roomType != roomType) + { + currentNode.SetUpRoom(roomType); + if (randomRoomTypeWeightBase.Count > 0) + { + randomRoomTypeWeightBase.Remove(roomType); + } + else + { + randomRoomTypeWeightAttach.Remove(roomType); + } + isGo = false; + } + break; + } + } + else + { + isGo = false; } - } } } - for (int i = 0; i < 4; i++) + //生成随机怪物 + for(int i=0;i [Header ("房间图标")] public Sprite monsterIcon; public Sprite eliteMonsterIcon; + public Sprite eliteAndMonsterIcon; public Sprite bossIcon; public Sprite shopIcon; public Sprite campfireIcon; @@ -36,6 +37,7 @@ public class LevelDevelopManager : Singleton { monster, eliteMonster, + eliteAndMonster, boss, shop, campfire, diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelNode.cs index b2504915..46860c93 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelNode.cs @@ -189,6 +189,9 @@ public class LevelNode : MonoBehaviour isUse = levelData.isUse; isPassBy = levelData.passBy; roomType = levelData.roomType; + fightEenemyPool = levelData.fightEenemyPool; + enemyList = levelData.enemyList; + mapIndex = levelData.mapIndex; SetUpRoom(roomType); // LevelDevelopManager.Instance.levelMap[line].levelColumn.Add(this); } @@ -219,6 +222,10 @@ public class LevelNode : MonoBehaviour roomText.text = "精英怪"; roomIcon.sprite = LevelDevelopManager.Instance.eliteMonsterIcon; break; + case LevelDevelopManager.RoomType.eliteAndMonster: + roomText.text = "选择战斗"; + roomIcon.sprite = LevelDevelopManager.Instance.eliteAndMonsterIcon; + break; case LevelDevelopManager.RoomType.boss: roomText.text = "Boss"; roomIcon.sprite = LevelDevelopManager.Instance.bossIcon; diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs index 25e85786..833c60e3 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/MapManager.cs @@ -612,19 +612,76 @@ public class MapManager : Singleton //生成初始物品 IEnumerator GenerateItem() { + //提前占用玩家初始节点,根据玩家入场方式修改应该会被删除 + GameManager.Instance .X [GameManager .Instance .player .startPositionX ].Y[GameManager.Instance.player.startPositionY].blocked = true; + LevelDevelopData_SO levelData_SO = PlayerStatsManager.Instance.levelDevelopData; LevelDevelopData_SO.levelData currentLevelData = levelData_SO.levelSaveMap[(int)levelData_SO.currentPoint.x].levelDataList[(int)levelData_SO.currentPoint.y]; List itemList = PlayerStatsManager.Instance.itemInforDic[int.Parse(currentLevelData.mapIndex)]; HashSet allNode = getNodeTools.getAllCanUseNode(); - for (int i=0;i itemLimitList = PlayerStatsManager.Instance.itemLimitDic[int.Parse(currentLevelData.mapIndex)]; + string limitInfor=null ; + switch (currentLevelData.fightEenemyPool) + { + case Name.EnemyPool.Weak: + limitInfor =itemLimitList[0]; + break; + case Name.EnemyPool.Strong: + limitInfor = itemLimitList[1]; + break; + case Name.EnemyPool.Elite: + limitInfor = itemLimitList[2]; + break; + case Name.EnemyPool.Boss: + limitInfor = itemLimitList[3]; + break; + } + string[] limitValue = limitInfor.Split(';'); + int lowerLimit = int.Parse(limitValue[(levelData_SO.mapLevel - 1) * 2]); + int maxLimit = int.Parse(limitValue[(levelData_SO.mapLevel - 1) * 2 + 1]); + + //切分物品数据 + List itemInforStringList = new List (); + for (int i = 0; i < itemList.Count; i++) { string[] values = itemList[i].Split(';'); - GameObject item = Resources.Load(itemPrefabPath + values[0]); - int itemCount = Random.Range(int.Parse(values[1]), int.Parse(values[2])); + itemInforStringList.Add(values); + } + //随机物品数量并限制上限 + int count = 0; + List itemCountList = new List (); + while (count <100) + { + count++; + int totalCount = 0; + itemCountList.Clear(); + for (int i = 0; i < itemInforStringList.Count; i++) + { + int itemCount = Random.Range(int.Parse(itemInforStringList[i][1]), int.Parse(itemInforStringList[i][2])); + Debug.Log("随机" + itemInforStringList[i][0] + itemCount); + if(itemInforStringList[i][0] != "Vacancy") + { + totalCount += itemCount; + } + itemCountList.Add(itemCount); + } + if(totalCount >=lowerLimit &&totalCount <=maxLimit ) + { + Debug.Log("成功"); + break; + } + } + //根据随机出的数量表生成物品 + for (int i=0;i< itemInforStringList.Count;i++) + { + GameObject item = Resources.Load(itemPrefabPath + itemInforStringList[i][0]); + int itemCount = itemCountList[i]; for(int j=0;j [Header("房间物品字典")] public string itemCsvFilePath; public Dictionary> itemInforDic = new Dictionary>(); + [Header("房间物品上限字典")] + public string itemLimitCsvFilePath; + public Dictionary> itemLimitDic = new Dictionary>(); private void Start() { @@ -39,6 +42,7 @@ public class PlayerStatsManager : Singleton DontDestroyOnLoad(this.gameObject); ReadItemInforCsv(itemCsvFilePath); + ReadItemLimitCsv(itemLimitCsvFilePath); } //选项效果==加一个同步UI的订阅系统 @@ -173,4 +177,28 @@ public class PlayerStatsManager : Singleton } } } + //读取房间生成物品上限 + public void ReadItemLimitCsv(string fileName) + { + string filePath = Path.Combine(Application.streamingAssetsPath, fileName); + 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(','); + List itemInfor = values.ToList(); + itemInfor.RemoveAt(0); + itemLimitDic.Add(int.Parse(values[0]), itemInfor); + } + } + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs index ad311b5b..ea662de1 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; +using UnityEditor.Experimental.GraphView; using UnityEngine; @@ -9,8 +10,8 @@ public class SettlementManager : Singleton { public static int settleTurn; - - + //地块预览计数时,预览方法返回的,所有被影响的地块 + public HashSet mapUnityColorPreviewCountPool = new HashSet(); public void abnormalConditionWork(string condition, int stackVak, List influencePreviewPool) { for (int i = 0; i < influencePreviewPool.Count; i++) @@ -82,9 +83,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 + public void PreviewColorMapUnity(CardOriginalData cardOriginalData, MapUnity targetNode) + { + List blockNodes = new List();//顺序结算被打爆地块的效果 + mapUnityColorPreviewCountPool.Clear(); 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; @@ -123,14 +125,64 @@ public class SettlementManager : Singleton // endNode.switchColor(Name.stringColorToint(cardOriginalData.nodesColor[i])); if (endNode.whoColour != Name.stringColorToint(cardOriginalData.nodesColor[i]) && endNode.whoColour != 6) { - mapColorCount[Name.stringColorToint(cardOriginalData.nodesColor[i])] += 1; - mapColorCount[endNode.whoColour] -= 1; + //先不结算数值 ,等所有影响池计算完之后再统计数据 + //mapColorCount[Name.stringColorToint(cardOriginalData.nodesColor[i])] += 1; + // mapColorCount[endNode.whoColour] -= 1; + mapUnityColorPreviewCountPool.Add(endNode); + endNode.colorUnderAttack = Name.stringColorToint(cardOriginalData.nodesColor[i]); + // endNode.colorUnderAttack = Name.stringColorToint(cardOriginalData.nodesColor[i]); + + } + endNode.switchPreColor(Name.stringColorToint(cardOriginalData.nodesColor[i]));//切换预览材质 + if (endNode .enemyNode != null ) + { + blockNodes.Add(endNode.enemyNode); } + + } + } + SettleAllBlocks(blockNodes); + + } + public List GetNodeCountStats() + { + List mapColorCount = new List() { 0, 0, 0, 0, 0, 0, 0 };//1red,2white,3blue,4green,5black,6matel + foreach (var node in mapUnityColorPreviewCountPool) + { + if (node.whoColour != node.colorUnderAttack && node.whoColour != 6) + { + mapColorCount[node.whoColour] -= 1; + mapColorCount[node.colorUnderAttack] += 1; } } - return mapColorCount; } + public void SettleAllBlocks(List blockNodes) + { + List blockNodesNew = new List(); + for (int i = 0; i < blockNodes.Count; i++) + { + List mapUnities = blockNodes[i].PreviewColorRange(); + if(mapUnities !=null ) + { + foreach (var node in mapUnities) + { + mapUnityColorPreviewCountPool.Add(node); + if (node.enemyNode != null && blockNodes.Contains(node.enemyNode) == false) + { + blockNodesNew.Add(node.enemyNode); + } + } + } + + } + + if(blockNodesNew .Count >0) + { + SettleAllBlocks(blockNodesNew); + } + + } //预览涂色颜色 public void PreviewSwitchColor(CardOriginalData cardOriginalData, MapUnity targetNode) { @@ -685,7 +737,7 @@ public class SettlementManager : Singleton GameManager.Instance.SyncColourCountUI(); EnemyManager.Instance.enemyRefreshEnemyBuffIcon(0); //广播释放完一张卡牌的接口 - GameManager.Instance.BroadCastPlayerUsedCard(); + GameManager.Instance.BroadCastWhirlpoolEffectSycn(); } //预期伤害 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/LevelMapToItem.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/LevelMapToItem.csv index 0ef898fe..c1e85523 100644 --- a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/LevelMapToItem.csv +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/LevelMapToItem.csv @@ -1,5 +1,5 @@ -锘垮湴鍥剧紪鍙,鐗╁搧鏁版嵁,, -100001,tree;2;4,boom;2;4,Whirlpool;2;4 -100002,tree;2;5,boom;2;5,Whirlpool;2;4 -100003,tree;2;6,boom;2;6,Whirlpool;2;4 -100004,tree;2;7,boom;2;7,Whirlpool;2;4 +锘垮湴鍥剧紪鍙,鐗╁搧鏁版嵁,,, +100001,tree;0;2,boom;0;2,Whirlpool;0;2,Vacancy;0;5 +100002,tree;0;2,boom;1;2,Whirlpool;0;2,Vacancy;0;4 +100003,tree;0;2,boom;0;2,Whirlpool;0;2,Vacancy;1;5 +100004,tree;0;2,boom;0;2,Whirlpool;0;2,Vacancy;2;8 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/MapItemCount.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/MapItemCount.csv new file mode 100644 index 00000000..e6cdfedb --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/MapItemCount.csv @@ -0,0 +1,5 @@ +锘垮湴鍥剧紪鍙,寮辨,寮烘,绮捐嫳,boss +100001,0;1;0;1;1;2,0;2;1;2;2;3,1;2;2;2;3;3,1;2;2;3;3;4 +100002,0;2;0;1;1;1,0;1;1;2;2;3,1;2;2;2;3;3,1;2;2;3;3;4 +100003,0;1;0;1;1;1,0;1;1;2;2;3,1;2;2;2;3;3,1;2;2;3;3;4 +100004,0;1;0;1;1;1,0;1;1;2;2;3,1;2;2;2;3;3,1;2;2;3;3;4 diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/MapItemCount.csv.meta b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/MapItemCount.csv.meta new file mode 100644 index 00000000..bb12c335 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/MapItemCount.csv.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 311d278fd665683429f28cbfdd56a0b6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Temp/FSTimeGet-da61fd9dc8019424dae9d7d7348fdaa8 b/ColorlessWorld-2024-4-2/Temp/FSTimeGet-da61fd9dc8019424dae9d7d7348fdaa8 deleted file mode 100644 index e69de29b..00000000 diff --git a/ColorlessWorld-2024-4-2/Temp/FSTimeGet-e0bcc83011a3a2d45880755fdd98fcce b/ColorlessWorld-2024-4-2/Temp/FSTimeGet-e0bcc83011a3a2d45880755fdd98fcce deleted file mode 100644 index 9d8f7726..00000000 Binary files a/ColorlessWorld-2024-4-2/Temp/FSTimeGet-e0bcc83011a3a2d45880755fdd98fcce and /dev/null differ diff --git a/ColorlessWorld-2024-4-2/Temp/UnityLockfile b/ColorlessWorld-2024-4-2/Temp/UnityLockfile deleted file mode 100644 index e69de29b..00000000 diff --git a/ColorlessWorld-2024-4-2/Temp/__Backupscenes/0.backup b/ColorlessWorld-2024-4-2/Temp/__Backupscenes/0.backup deleted file mode 100644 index 985a15b7..00000000 Binary files a/ColorlessWorld-2024-4-2/Temp/__Backupscenes/0.backup and /dev/null differ diff --git a/ColorlessWorld-2024-4-2/Temp/workerlic b/ColorlessWorld-2024-4-2/Temp/workerlic deleted file mode 100644 index e6d4f159..00000000 Binary files a/ColorlessWorld-2024-4-2/Temp/workerlic and /dev/null differ