123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747 |
- using UnityEngine;
- using System.Collections;
- using UnityEditor;
- using System.Collections.Generic;
- using UnityEditor.SceneManagement;
- using System.Text;
- using System;
- using System.IO;
- using System.Linq;
- namespace JamesGame
- {
- public static class BattleFieldEditor
- {
- public static void DrawBattleFieldEditorGUI(this BattleFieldSceneCreator battleEditor, ref int currBattleLevelId)
- {
- /**
- * Conifgs
- */
- ChallengeDataDefine challengeCfg = null;
- FieldDataDefine fieldCfg = null;
- FieldShapeDataDefine fieldShapeCfg = null;
- /**
- * 关卡
- */
- GUILayout.BeginHorizontal();
- GUILayout.Label("关卡:");
- var tmpBattleLevelId = EditorGUILayout.IntPopup(currBattleLevelId, battleLevelStrIds, battleLevelIds);
- if (!battleLevelIdChanged) battleLevelIdChanged = currBattleLevelId != tmpBattleLevelId;
- currBattleLevelId = tmpBattleLevelId;
- if (GUILayout.Button("<<"))
- {
- battleLevelIdChanged = true;
- currBattleLevelId -= 10;
- currBattleLevelId = Math.Max(1, currBattleLevelId);
- }
- if (GUILayout.Button("<"))
- {
- battleLevelIdChanged = true;
- currBattleLevelId--;
- currBattleLevelId = Math.Max(1, currBattleLevelId);
- }
- if (GUILayout.Button(">"))
- {
- battleLevelIdChanged = true;
- currBattleLevelId++;
- }
- if (GUILayout.Button(">>"))
- {
- battleLevelIdChanged = true;
- currBattleLevelId += 10;
- }
- if (currBattleLevelId > 0 && (battleLevelIdChanged || challengeCfg == null))
- {
- challengeCfg = ConfigEditor.challengeDataCfgs[currBattleLevelId];
- fieldCfg = ConfigEditor.fieldDataCfgs[challengeCfg.FieldID];
- fieldShapeCfg = ConfigEditor.fieldShapeCfgs[fieldCfg.FieldShapeID];
- }
- GUILayout.FlexibleSpace();
- GUILayout.Label("筛选:");
- var tmpBattleLevelIdFilter = _battleLevelIdFilter;
- _battleLevelIdFilter = EditorGUILayout.TextField(_battleLevelIdFilter);
- if (tmpBattleLevelIdFilter != _battleLevelIdFilter)
- {
- _battleLevelIds = null;
- _battleLevelStrIds = null;
- }
- GUILayout.FlexibleSpace();
- if (GUILayout.Button("复制"))
- {
- var newId = AddBattleLevel(currBattleLevelId);
- battleEditor.ChangeCurrBattleLevelId(newId);
- battleEditor.Reload();
- }
- if (GUILayout.Button("删除"))
- {
- RemoveBattleLevel(currBattleLevelId);
- var enu = ConfigEditor.challengeDataCfgs.Keys.GetEnumerator(); enu.MoveNext();
- battleEditor.ChangeCurrBattleLevelId(enu.Current);
- battleEditor.Reload();
- }
- if (GUILayout.Button("刷新"))
- {
- RefreshLevelIds(battleEditor);
- }
- GUILayout.EndHorizontal();
- /**
- * 关卡类型
- * 0,有限子弹; 1,有限时间;
- */
- if (constraintVal <= 0 || battleLevelIdChanged)
- {
- constraintType = challengeCfg == null ? 0 : (challengeCfg.ConstraintType == (int)Global.Enum_ConstraintType.Count ? 0 : 1);
- constraintVal = challengeCfg == null ? 0 : challengeCfg.ConstraintValue;
- }
- GUILayout.BeginHorizontal();
- GUILayout.Label("限制:");
- constraintType = EditorGUILayout.Popup(constraintType, new string[] { "子弹", "秒数" });
- GUILayout.FlexibleSpace();
- GUILayout.Label("x");
- constraintVal = EditorGUILayout.IntField(constraintVal);
- GUILayout.FlexibleSpace();
- GUILayout.EndHorizontal();
- /**
- * 通关分数
- */
- if (goldScore <= 0 || battleLevelIdChanged)
- {
- var scores = challengeCfg == null ? new List<int> { 0, 0, 0, 0 } : challengeCfg.Condition;
- if (scores.Count > 3) huangScore = scores[3];
- if (scores.Count > 2) goldScore = scores[2];
- if (scores.Count > 1) silverScore = scores[1];
- if (scores.Count > 0) bronzeScore = scores[0];
- }
- GUILayout.BeginHorizontal();
- GUILayout.Label("皇冠:");
- huangScore = EditorGUILayout.IntField(huangScore);
- GUILayout.FlexibleSpace();
- GUILayout.Label("金:");
- goldScore = EditorGUILayout.IntField(goldScore);
- GUILayout.FlexibleSpace();
- GUILayout.Label("银:");
- silverScore = EditorGUILayout.IntField(silverScore);
- GUILayout.FlexibleSpace();
- GUILayout.Label("铜:");
- bronzeScore = EditorGUILayout.IntField(bronzeScore);
- GUILayout.EndHorizontal();
- /********************风力**************************************/
- var level = DataManager.Instance.csvData.GetLevelByID(currBattleLevelId);
- if (windMin <= 0 || battleLevelIdChanged)
- {
- windMin = level.windMin;
- windMax = level.windMax;
- windChange = level.windChange;
- }
- GUILayout.BeginHorizontal();
- GUILayout.Label("最小风:");
- windMin = EditorGUILayout.FloatField(windMin);
- GUILayout.FlexibleSpace();
- GUILayout.Label("最大风:");
- windMax = EditorGUILayout.FloatField(windMax);
- GUILayout.FlexibleSpace();
- GUILayout.Label("每几轮重随机:");
- windChange = EditorGUILayout.IntField(windChange);
- GUILayout.EndHorizontal();
- /*************************************************************/
- /**
- * 场景
- */
- GUILayout.BeginHorizontal();
- GUILayout.Label("场景:");
- if (currBattleLevelId > 0 && battleLevelIdChanged)
- {
- for (int i = 0; i < bakeScenes.Length; i++)
- {
- if (fieldShapeCfg.ResourceName == "Bake_" + bakeScenes[i])
- {
- bakeSceneIdx = i;
- break;
- }
- }
- }
- bakeSceneIdx = EditorGUILayout.Popup(bakeSceneIdx, bakeScenes);
- var bakeSceneId = _bakeScenesIds[bakeSceneIdx];
- if (GUILayout.Button("Load"))
- {
- var bakeSceneName = "Bake_" + bakeScenes[bakeSceneIdx] + ".unity";
- EditorSceneManager.OpenScene("Assets/Scenes/" + bakeSceneName);
- }
- GUILayout.FlexibleSpace();
- if (GUILayout.Button("Refresh"))
- {
- _bakeScenesNames = null;
- }
- GUILayout.EndHorizontal();
- /**
- * 距离标记
- */
- if (battleLevelIdChanged || distanceSignIdx1 == 0)
- {
- if (fieldCfg != null)
- {
- var highlightSigns = fieldCfg.Mark.Split('@')[0].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
- var signList = new List<string>(distanceSigns);
- distanceSignIdx1 = signList.IndexOf(highlightSigns[0]);
- distanceSignIdx2 = highlightSigns.Length > 1 ? signList.IndexOf(highlightSigns[1]) : 0;
- distanceSignIdx3 = highlightSigns.Length > 2 ? signList.IndexOf(highlightSigns[2]) : 0;
- }
- }
- GUILayout.BeginHorizontal();
- GUILayout.Label("距离标记高亮:");
- distanceSignIdx1 = EditorGUILayout.Popup(distanceSignIdx1, distanceSigns);
- distanceSignIdx2 = EditorGUILayout.Popup(distanceSignIdx2, distanceSigns);
- distanceSignIdx3 = EditorGUILayout.Popup(distanceSignIdx3, distanceSigns);
- GUILayout.EndHorizontal();
- if (battleLevelIdChanged)
- {
- if (fieldCfg != null)
- {
- var markArr = fieldCfg.Mark.Split('@');
- distanceSignX = 0f;
- distanceSignY = 0f;
- switch (markArr.Length)
- {
- case 2:
- distanceSignX = float.Parse(markArr[1]);
- break;
- case 3:
- distanceSignX = float.Parse(markArr[1]);
- distanceSignY = float.Parse(markArr[2]);
- break;
- }
- }
- }
- GUILayout.BeginHorizontal();
- GUILayout.Label("距离标记坐标:");
- GUILayout.Label("x:");
- distanceSignX = EditorGUILayout.FloatField(distanceSignX);
- GUILayout.Label("y:");
- distanceSignY = EditorGUILayout.FloatField(distanceSignY);
- GUILayout.EndHorizontal();
- /**
- * 靶子组合
- */
- GUILayout.BeginHorizontal();
- GUILayout.Label("靶子组合:");
- if (battleLevelIdChanged) newChallengeTargetDataId = -1;
- if (battleEditor.GetTargetDataIds().Length == 0) { } // Tmp For Init
- newChallengeTargetDataId = EditorGUILayout.IntPopup(newChallengeTargetDataId, battleEditor.GetTargetDataStrIds(), battleEditor.GetTargetDataIds());
- if (GUILayout.Button("新增"))
- {
- if (newChallengeTargetDataId > 0)
- {
- if (!ConfigEditor.ExistTragetGroupCfg(fieldCfg.ID, newChallengeTargetDataId))
- {
- int startId = fieldCfg.ID * 10000;
- int newGroupId = startId;
- foreach (var tmpGroup in ConfigEditor.targetGroupCfgs.Values)
- {
- int leftNumber = tmpGroup.ID - startId;
- if (leftNumber >= 0 && leftNumber < 10000)
- {
- if (tmpGroup.ID + 1 > newGroupId)
- {
- newGroupId = tmpGroup.ID + 1;
- }
- }
- }
- var groupCfg = new TargetGroupDefine
- {
- ID = newGroupId,
- GroupID = fieldCfg.ID,
- TargetID = newChallengeTargetDataId,
- };
- ConfigEditor.targetGroupCfgs.Add(groupCfg.ID, groupCfg);
- }
- else
- {
- Debug.LogError("已存在,请勿重复添加");
- }
- }
- newChallengeTargetDataId = -1;
- }
- if (GUILayout.Button("重置"))
- {
- ConfigEditor.RefreshTargetGroupCfgs();
- newChallengeTargetDataId = -1;
- }
- GUILayout.FlexibleSpace();
- GUILayout.EndHorizontal();
- //var targetGroupId = _roundFactoryGroupIdDic[roundFactorGroupIdx]; // RoundFactorGroupId 暂时和 TargetGroupId 一致
- //
- //var predata = ConfigEditor.LoadGamePredata();
- var targets = ConfigEditor.GetTargetCfgsByGroupId(fieldCfg.ID);
- foreach (var targetCfg in targets)
- {
- GUILayout.BeginHorizontal();
- if (GUILayout.Button("X"))
- {
- TargetGroupDefine tmp = null;
- foreach (var groupCfg in ConfigEditor.targetGroupCfgs.Values)
- {
- if (groupCfg.GroupID == fieldCfg.ID && groupCfg.TargetID == targetCfg.ID)
- {
- tmp = groupCfg;
- break;
- }
- }
- ConfigEditor.targetGroupCfgs.Remove(tmp.ID);
- }
- GUILayout.Space(10f);
- var roundTargets = RoundTarget.GetRoundTargetDict(DataManager.Instance.csvData.GetLevelByID(challengeCfg.ID).roundTargetIds);
- var round = (roundTargets == null || !roundTargets.ContainsKey(targetCfg.ID)) ? 0 : roundTargets[targetCfg.ID];
- EditorGUILayout.LabelField("波次:" + round, GUILayout.Width(50f));
- if (targetCfg.ResourceName.IndexOf("#") > 0)
- {
- string[] targetExInfo = targetCfg.ResourceName.Split('#');
- if (targetExInfo.Length == 3)
- {
- GUILayout.Label(targetCfg.ID + " " + targetExInfo[0]);
- }
- }
- else
- {
- GUILayout.Label(targetCfg.ID + " " + targetCfg.ResourceName);
- }
- GUILayout.FlexibleSpace();
- GUILayout.EndHorizontal();
- }
- /**
- *
- */
- GUILayout.Space(10f);
- GUILayout.BeginHorizontal();
- if (GUILayout.Button("Preview"))
- {
- EditorSceneManager.OpenScene("Assets/ShootGame/Test/Scenes/BattleLevelEditor.unity");
- var editorTmpRoot = BattleFieldSceneCreator.CreateEditorTmpRoot();
- var levelProxy = editorTmpRoot.GetComponent<EditorBattleLevelProxy>();
- if (levelProxy == null)
- {
- levelProxy = editorTmpRoot.AddComponent<EditorBattleLevelProxy>();
- }
- if (currBattleLevelId > 0)
- {
- UpdateChallengeConfig(currBattleLevelId,huangScore, goldScore, silverScore, bronzeScore, constraintType, constraintVal);
- UpdateFieldConfig(
- currBattleLevelId, bakeSceneId,
- distanceSignIdx1 == 0 ? 0 : int.Parse(distanceSigns[distanceSignIdx1]),
- distanceSignIdx2 == 0 ? 0 : int.Parse(distanceSigns[distanceSignIdx2]),
- distanceSignIdx3 == 0 ? 0 : int.Parse(distanceSigns[distanceSignIdx3]),
- distanceSignX, distanceSignY
- );
- //
- var editorProxy = editorTmpRoot.GetComponent<EditorBattleLevelProxy>();
- editorProxy.targetChallengeId = challengeCfg.ID;
- editorProxy.targetRoundFactorGroupId = fieldCfg.RoundFactorGroupID;
- editorProxy.targetFieldShapeId = fieldCfg.FieldShapeID;
- editorProxy.challengeCfg = challengeCfg;
- editorProxy.fieldCfg = fieldCfg;
- }
- //
- EditorApplication.isPlaying = true;
- }
- /**
- * Save
- */
- if (GUILayout.Button("Save"))
- {
- if (currBattleLevelId > 0)
- {
- UpdateChallengeConfig(currBattleLevelId,huangScore, goldScore, silverScore, bronzeScore, constraintType, constraintVal);
- UpdateFieldConfig(
- currBattleLevelId, bakeSceneId,
- distanceSignIdx1 == 0 ? 0 : int.Parse(distanceSigns[distanceSignIdx1]),
- distanceSignIdx2 == 0 ? 0 : int.Parse(distanceSigns[distanceSignIdx2]),
- distanceSignIdx3 == 0 ? 0 : int.Parse(distanceSigns[distanceSignIdx3]),
- distanceSignX, distanceSignY
- );
- level.windMin = windMin;
- level.windMax = windMax;
- level.windChange = windChange;
- }
- //ConfigEditor.SaveData2Jsonparts();
- ConfigEditor.SaveData2Excel_chuan();
- battleEditor.Reload();
- BattleFieldSceneCreator.CompileGameConfigs();
- DataManager.Instance.InitData();
- }
- if (GUILayout.Button("调整关卡顺序"))
- {
- ReorderLevels(battleEditor);
- }
- if (GUILayout.Button("去除433关之后"))
- {
- var ids = new List<int>(ConfigEditor.challengeDataCfgs.Keys);
- foreach (var k in ids)
- {
- if (k > Global.MaxLevel)
- {
- ConfigEditor.challengeDataCfgs.Remove(k);
- }
- }
- ConfigEditor.Remove433ChallengeID();
- }
- GUILayout.EndHorizontal();
- battleLevelIdChanged = false;
- }
-
- private static bool IsShuffledArray(int[] arr)
- {
- int length = arr.Length;
- int[] expected = Enumerable.Range(1, length).ToArray();
- int[] sortedArr = (int[])arr.Clone();
- Array.Sort(sortedArr);
-
- return sortedArr.SequenceEqual(expected);
- }
- private static void ReorderLevelConfigs<T>(IDictionary<int, T> configs, IReadOnlyList<int> newLevelIdMap, Action<int, T> configModifier)
- {
- var tempConfigs = new T[newLevelIdMap.Count];
- int newLevelId;
- for (int newLevelIdIdx = 0; newLevelIdIdx < newLevelIdMap.Count; newLevelIdIdx++)
- {
- int oldLevelId = newLevelIdMap[newLevelIdIdx];
- newLevelId = newLevelIdIdx + 1;
- var config = configs[oldLevelId];
- configModifier.Invoke(newLevelId, config);
- tempConfigs[newLevelIdIdx] = config;
- }
- configs.Clear();
- newLevelId = 1;
- foreach (var config in tempConfigs)
- {
- configs.Add(newLevelId, config);
- newLevelId++;
- }
- }
- private static void ReorderLevels(BattleFieldSceneCreator battleEditor)
- {
- // DataWriter.SaveChallengeData(gameDataDir, "ChallengeData", challengeDataCfgs);
- // DataWriter.SaveFieldData(gameDataDir, "FieldData", fieldDataCfgs);
- // DataWriter.SaveTargetData(gameDataDir, "TargetData", targetDataCfgs);
- // DataWriter.SaveTargetGroupData(gameDataDir, "TargetGroup", targetGroupCfgs);
- // DataWriter.SaveFieldShapeData(gameDataDir, "FieldShapeData", fieldShapeCfgs);
- // DataWriter.SaveLevelData(gameDataDir, "Level", levelCfgs);
- var newLevelIdMap = new int[]
- {
- 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,36,34,35,39,32,38,37,40,42,43,45,41,44,46,48,49,47,50,52,53,51,55,56,54,57,59,58,60,61,63,64,62,65,68,66,69,67,70,72,73,71,74,76,79,77,75,78,80,82,83,81,84,86,87,89,85,88,90,93,91,94,92,95,97,96,99,98,100,102,105,103,101,104,107,109,106,108,110,112,113,116,111,114,117,115,119,118,120,122,123,121,125,124,126,128,127,129,130,132,135,133,137,131,134,139,136,138,140,142,143,141,144,146,148,145,149,147,150,151,154,152,155,153,159,156,158,157,160,162,163,167,161,164,166,165,169,168,170,173,171,175,174,179,172,178,176,177,180,182,184,186,181,185,188,183,189,187,190,193,191,194,195,197,192,198,196,199,202,200,203,201,204,206,207,205,209,208,210,213,212,211,215,214,218,217,216,219,220,222,221,224,223,226,225,229,228,227,230,232,235,231,234,236,233,239,238,237,240,243,241,244,247,245,242,249,246,248,250,252,254,253,251,256,258,255,259,257,260,263,261,264,266,262,269,265,268,267,270,273,272,275,271,276,279,274,278,277,280,282,281,284,287,283,286,285,289,288,290,293,292,291,295,297,294,296,299,298,300,303,302,305,301,304,308,307,306,309,310,312,313,315,311,314,317,319,316,318,320,322,321,324,323,328,326,325,327,329,332,330,333,331,334,336,335,337,339,338,340,344,341,343,342,346,345,347,349,348,350,353,352,354,351,356,358,355,357,359,361,360,362,364,366,363,367,369,365,368,370,373,371,376,374,372,379,375,378,377,382,380,384,383,386,381,388,385,387,389,390,393,392,391,395,394,397,396,399,398,400,403,402,401,405,407,404,409,406,408,410,413,412,411,415,414,417,419,416,418,421,423,420,424,422,428,426,425,427,429,430,433,431,434,436,432,435,438,437,439,440,443,442,441,445,444,448,447,446,449,452,451,450,454,453,457,455,456,459,458,461,460,463,462,464,467,466,465,468,470,469,471,473,472
- };
-
- // Check LevelIdMap valid
- {
- if (newLevelIdMap.Length != ConfigEditor.challengeDataCfgs.Count)
- {
- Debug.LogError("关卡数量不一样");
- return;
- }
- if (!IsShuffledArray(newLevelIdMap))
- {
- Debug.LogError("关卡顺序配置错误");
- return;
- }
- }
- ReorderLevelConfigs(ConfigEditor.challengeDataCfgs, newLevelIdMap, (newLevelId, config) =>
- {
- config.ID = newLevelId;
- config.FieldID = newLevelId;
- });
- ReorderLevelConfigs(ConfigEditor.fieldDataCfgs, newLevelIdMap, (newLevelId, config) =>
- {
- config.ID = newLevelId;
- config.RoundFactorGroupID = newLevelId;
- });
- {
- var oldLevelCfgs = ConfigEditor.levelCfgs.Values.ToArray();
- ReorderLevelConfigs(ConfigEditor.levelCfgs, newLevelIdMap, (newLevelId, config) =>
- {
- config.ID = newLevelId;
- config.realID = newLevelId;
- });
- for (int levelIdx = 0; levelIdx < ConfigEditor.levelCfgs.Count; levelIdx++)
- {
- int levelId = levelIdx + 1;
- var oldConfig = oldLevelCfgs[levelIdx];
- var newConfig = ConfigEditor.levelCfgs[levelId];
- newConfig.coinsStar1 = oldConfig.coinsStar1;
- newConfig.coinsStar2 = oldConfig.coinsStar2;
- newConfig.coinsStar3 = oldConfig.coinsStar3;
- newConfig.coinsBullet = oldConfig.coinsBullet;
- newConfig.coinsCombo = oldConfig.coinsCombo;
- }
- }
- {
- var groupedDictionary = ConfigEditor.targetGroupCfgs.Values.GroupBy(item => item.GroupID).ToDictionary(group => group.Key, group => group.ToArray());
- for (int newLevelIdIdx = 0; newLevelIdIdx < newLevelIdMap.Length; newLevelIdIdx++)
- {
- int oldLevelId = newLevelIdMap[newLevelIdIdx];
- var newLevelId = newLevelIdIdx + 1;
- var groupConfigs = groupedDictionary[oldLevelId];
- foreach (var config in groupConfigs)
- {
- config.GroupID = newLevelId;
- }
- }
- }
- //ConfigEditor.SaveData2Jsonparts();
- ConfigEditor.SaveData2Excel_chuan();
- battleEditor.Reload();
- BattleFieldSceneCreator.CompileGameConfigs();
- DataManager.Instance.InitData();
- }
- public static void ClearBattleFieldEditorDataCache(this BattleFieldSceneCreator battleEditor)
- {
- _battleLevelIds = null;
- _battleLevelStrIds = null;
- _bakeScenesNames = null;
- }
- public static int AddBattleLevel(int duplicateId)
- {
- var dupChallengeCfg = ConfigEditor.challengeDataCfgs[duplicateId];
- //
- int newChallengeCfgId = -1;
- foreach (var kv in ConfigEditor.challengeDataCfgs)
- {
- if (newChallengeCfgId <= kv.Key) newChallengeCfgId = kv.Key + 1;
- }
- var newChallengeCfg = new ChallengeDataDefine
- {
- ID = newChallengeCfgId,
- FieldID = newChallengeCfgId,
- DecStaminaCnt = dupChallengeCfg.DecStaminaCnt,
- ConstraintType = dupChallengeCfg.ConstraintType,
- ConstraintValue = dupChallengeCfg.ConstraintValue,
- Condition = dupChallengeCfg.Condition,
- Reward_ID_1 = dupChallengeCfg.Reward_ID_1,
- };
- ConfigEditor.challengeDataCfgs.Add(newChallengeCfg.ID, newChallengeCfg);
- // Duplicate latest one
- var maxFieldCfg = ConfigEditor.fieldDataCfgs[dupChallengeCfg.FieldID];
- var newFieldCfg = new FieldDataDefine
- {
- ID = newChallengeCfg.FieldID,
- RoundFactorGroupID = newChallengeCfg.FieldID,
- FieldShapeID = maxFieldCfg.FieldShapeID,
- DefaultPlayerPos = maxFieldCfg.DefaultPlayerPos,
- Mark = maxFieldCfg.Mark,
- };
- ConfigEditor.fieldDataCfgs.Add(newFieldCfg.ID, newFieldCfg);
- ConfigEditor.SaveChallengeAndFieldData2ExcelAndJson();
- //
- return newChallengeCfg.ID;
- }
- public static void RemoveBattleLevel(int id)
- {
- var challengeCfg = ConfigEditor.challengeDataCfgs[id];
- var fieldCfg = ConfigEditor.fieldDataCfgs[challengeCfg.FieldID];
- ConfigEditor.fieldDataCfgs.Remove(fieldCfg.ID);
- ConfigEditor.challengeDataCfgs.Remove(id);
-
- ConfigEditor.SaveChallengeAndFieldData2ExcelAndJson();
- }
- public static void RefreshLevelIds(this BattleFieldSceneCreator battleEditor)
- {
- _battleLevelIds = null;
- _battleLevelStrIds = null;
- }
- private static void UpdateFieldConfig(int challengeId, int fieldShapeId, int distanceSign1, int distanceSign2, int distanceSign3, float distanceSignX, float distanceSignY)
- {
- var challengeCfg = ConfigEditor.challengeDataCfgs[challengeId];
- var fieldCfg = ConfigEditor.fieldDataCfgs[challengeCfg.FieldID];
- // Performan config change
- fieldCfg.FieldShapeID = fieldShapeId;
- // Distance signs
- var distanceIntSigns = new List<int> { distanceSign1, distanceSign2, distanceSign3, };
- distanceIntSigns.Sort();
- distanceIntSigns.Reverse();
- fieldCfg.Mark = new StringBuilder()
- .Append(distanceIntSigns[0] == 0 ? string.Empty : "" + distanceIntSigns[0])
- .Append(distanceIntSigns[1] == 0 ? string.Empty : "|" + distanceIntSigns[1])
- .Append(distanceIntSigns[2] == 0 ? string.Empty : "|" + distanceIntSigns[2])
- .Append(Mathf.Approximately(distanceSignX, 0f) ? string.Empty : "@" + distanceSignX)
- .Append(Mathf.Approximately(distanceSignY, 0) ? string.Empty : "@" + distanceSignY)
- .ToString();
- }
- private static void UpdateBakedScenes()
- {
- var fileNames = Directory.GetFiles(Path.Combine(Application.dataPath, "Scenes"), "*Bake_*.unity");
- var scenes = new List<string>();
- foreach (var fileName in fileNames)
- {
- FileInfo fi = new FileInfo(fileName);
- scenes.Add(fi.Name.Replace("Bake_", "").Replace(".unity", ""));
- }
- _bakeScenesNames = scenes.ToArray();
- }
- /**
- * Data
- */
- //
- //private static int currBattleLevelId = 1;
- private static bool battleLevelIdChanged = true;
- // Scores
- private static int huangScore;
- private static int goldScore;
- private static int silverScore;
- private static int bronzeScore;
- // 风力
- private static float windMin = -1;
- private static float windMax = -1;
- private static int windChange = -1;
- // Constraint
- private static int constraintType = 0;
- private static int constraintVal = 0;
- private static void UpdateChallengeConfig(int challengeId,int huangScore, int goldScore, int silverScore, int bronzeScore, int constraintType, int constraintVal)
- {
- var cfg = ConfigEditor.challengeDataCfgs[challengeId];
- List<int> cond = new List<int>();
- cond.Add(bronzeScore);
- cond.Add(silverScore);
- cond.Add(goldScore);
- cond.Add(huangScore);
- cfg.Condition = cond;
- cfg.ConstraintType = constraintType == 0 ? (int)Global.Enum_ConstraintType.Count : (int)Global.Enum_ConstraintType.Time;
- cfg.ConstraintValue = constraintVal;
- }
- // Battle Level Ids
- private static string _battleLevelIdFilter = string.Empty;
- private static string[] _battleLevelStrIds;
- private static string[] battleLevelStrIds
- {
- get
- {
- if (_battleLevelStrIds == null) InitBattleLevelIds();
- return _battleLevelStrIds;
- }
- }
- private static int[] _battleLevelIds;
- private static int[] battleLevelIds
- {
- get
- {
- if (_battleLevelIds == null) InitBattleLevelIds();
- return _battleLevelIds;
- }
- }
- private static void InitBattleLevelIds()
- {
- //
- var enu = ConfigEditor.challengeDataCfgs.Keys.GetEnumerator();
- var ints = new List<int> { };
- var strs = new List<string> { };
- while (enu.MoveNext())
- {
- var strInt = enu.Current.ToString();
- if (!strInt.StartsWith(_battleLevelIdFilter, StringComparison.Ordinal)) continue;
- ints.Add(enu.Current);
- strs.Add(strInt);
- }
- _battleLevelIds = ints.ToArray();
- _battleLevelStrIds = strs.ToArray();
- }
- // Bake Scene
- private static int bakeSceneIdx = 0;
- private static string[] _bakeScenesNames;
- private static int[] _bakeScenesIds;
- private static string[] bakeScenes
- {
- get
- {
- if (_bakeScenesNames == null)
- {
- var ids = new List<int>();
- var names = new List<string>();
- foreach (var kv in ConfigEditor.fieldShapeCfgs)
- {
- ids.Add(kv.Key);
- names.Add(kv.Value.ResourceName.Replace("Bake_", ""));
- }
- _bakeScenesIds = ids.ToArray();
- _bakeScenesNames = names.ToArray();
- }
- return _bakeScenesNames;
- }
- }
- // Distance signs
- private static int distanceSignIdx1 = 0;
- private static int distanceSignIdx2 = 0;
- private static int distanceSignIdx3 = 0;
- private static string[] distanceSigns = { "-", "30", "50", "70", "90", "110", "130" };
- private static float distanceSignX = 0f;
- private static float distanceSignY = 0f;
- // Target Data
- private static int newChallengeTargetDataId = -1;
- }
- }
|