|
@@ -1157,7 +1157,7 @@ public class GameMapEditor : EditorWindow
|
|
|
r.width = 80;
|
|
r.width = 80;
|
|
|
if (GUI.Button(r, GC_reload, EditorStyles.miniButton))
|
|
if (GUI.Button(r, GC_reload, EditorStyles.miniButton))
|
|
|
{
|
|
{
|
|
|
- ReloadEnemyExcelData(enemyExcelPath);
|
|
|
|
|
|
|
+ ReloadEnemyExcelData();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
r.x -= 65f;
|
|
r.x -= 65f;
|
|
@@ -1234,7 +1234,7 @@ public class GameMapEditor : EditorWindow
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//读取怪物表数据
|
|
//读取怪物表数据
|
|
|
- void ReloadEnemyExcelData(string path)
|
|
|
|
|
|
|
+ void ReloadEnemyExcelData()
|
|
|
{
|
|
{
|
|
|
ExcelEditor.RunBat();
|
|
ExcelEditor.RunBat();
|
|
|
for (int i = asset.tileAsset.tiles.Count - 1; i>=0 ; i--)
|
|
for (int i = asset.tileAsset.tiles.Count - 1; i>=0 ; i--)
|
|
@@ -1250,51 +1250,30 @@ public class GameMapEditor : EditorWindow
|
|
|
Tables allCfgData = new Tables(ExcelEditor.Loader);
|
|
Tables allCfgData = new Tables(ExcelEditor.Loader);
|
|
|
int id = 0;
|
|
int id = 0;
|
|
|
|
|
|
|
|
- List<string> excelsSheets = new();
|
|
|
|
|
- FileInfo fileInfo = new FileInfo(createEnemyExcelPath);
|
|
|
|
|
- using (ExcelPackage package = new ExcelPackage(fileInfo))
|
|
|
|
|
|
|
+ foreach (var item in allCfgData.CfgEnemy.DataMap)
|
|
|
{
|
|
{
|
|
|
- excelsSheets = ExcelEditor.ReadExcelSheetsInfo(package);
|
|
|
|
|
- foreach (var item in allCfgData.CfgEnemy.DataMap)
|
|
|
|
|
- {
|
|
|
|
|
- SingleEnemyConfig cfgEnemy = item.Value;
|
|
|
|
|
- asset.tileAsset.AddTile();
|
|
|
|
|
- GameMapTile tile = asset.tileAsset.tiles[asset.tileAsset.tiles.Count - 1];
|
|
|
|
|
-
|
|
|
|
|
- Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>($"Assets/GameLevelEditor/Ui_Textures/{cfgEnemy.SpriteName}.png");
|
|
|
|
|
- tile.name = cfgEnemy.Name;
|
|
|
|
|
- foreach (var sheetName in excelsSheets)
|
|
|
|
|
- {
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, sheetName, 7, 3 + id, tile.name);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- tile.sprite = sprite;
|
|
|
|
|
- ColorUtility.TryParseHtmlString(cfgEnemy.Color, out tile.color);
|
|
|
|
|
- Enum.TryParse(cfgEnemy.Type, out tile.type);
|
|
|
|
|
- Enum.TryParse(cfgEnemy.EnemyPrefab, out tile.ch);
|
|
|
|
|
- tile.radius = new Vector2(cfgEnemy.Radius[0], cfgEnemy.Radius[1]);
|
|
|
|
|
- tile.parameter.HP = cfgEnemy.HP;
|
|
|
|
|
- tile.parameter.Attack_summon = cfgEnemy.AttackSummon;
|
|
|
|
|
- tile.parameter.Attack_march = new List<int>(cfgEnemy.AttackMarch);
|
|
|
|
|
- tile.parameter.MinMoveSpeed = cfgEnemy.MinMoveSpeed;
|
|
|
|
|
- tile.parameter.MaxMoveSpeed = cfgEnemy.MaxMoveSpeed;
|
|
|
|
|
-
|
|
|
|
|
- TileDef def = new TileDef() { id = tile.id };
|
|
|
|
|
- UpdateCachedValues(def, tile, false);
|
|
|
|
|
- tileCache.Add(def.id, def);
|
|
|
|
|
- id++;
|
|
|
|
|
- }
|
|
|
|
|
- for (int i = 0; i < 100; i++)
|
|
|
|
|
- {
|
|
|
|
|
- foreach (var sheetName in excelsSheets)
|
|
|
|
|
- {
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, sheetName, 7, 3 + id + i, "");
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ SingleEnemyConfig cfgEnemy = item.Value;
|
|
|
|
|
+ asset.tileAsset.AddTile();
|
|
|
|
|
+ GameMapTile tile = asset.tileAsset.tiles[asset.tileAsset.tiles.Count - 1];
|
|
|
|
|
+
|
|
|
|
|
+ Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>($"Assets/GameLevelEditor/Ui_Textures/{cfgEnemy.SpriteName}.png");
|
|
|
|
|
+ tile.name = cfgEnemy.Name;
|
|
|
|
|
+ tile.sprite = sprite;
|
|
|
|
|
+ ColorUtility.TryParseHtmlString(cfgEnemy.Color, out tile.color);
|
|
|
|
|
+ Enum.TryParse(cfgEnemy.Type, out tile.type);
|
|
|
|
|
+ tile.prefab = cfgEnemy.EnemyPrefab;
|
|
|
|
|
+ tile.radius = new Vector2(cfgEnemy.Radius[0], cfgEnemy.Radius[1]);
|
|
|
|
|
+ tile.parameter.HP = cfgEnemy.HP;
|
|
|
|
|
+ tile.parameter.Attack_summon = cfgEnemy.AttackSummon;
|
|
|
|
|
+ tile.parameter.Attack_march = new List<int>(cfgEnemy.AttackMarch);
|
|
|
|
|
+ tile.parameter.MinMoveSpeed = cfgEnemy.MinMoveSpeed;
|
|
|
|
|
+ tile.parameter.MaxMoveSpeed = cfgEnemy.MaxMoveSpeed;
|
|
|
|
|
|
|
|
- package.Save();
|
|
|
|
|
|
|
+ TileDef def = new TileDef() { id = tile.id };
|
|
|
|
|
+ UpdateCachedValues(def, tile, false);
|
|
|
|
|
+ tileCache.Add(def.id, def);
|
|
|
|
|
+ id++;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
doRepaint = true;
|
|
doRepaint = true;
|
|
|
Debug.Log("怪物表数据导入完毕!");
|
|
Debug.Log("怪物表数据导入完毕!");
|
|
|
}
|
|
}
|
|
@@ -1303,74 +1282,62 @@ public class GameMapEditor : EditorWindow
|
|
|
void SaveToEnemyExcel()
|
|
void SaveToEnemyExcel()
|
|
|
{
|
|
{
|
|
|
string path = enemyExcelPath;
|
|
string path = enemyExcelPath;
|
|
|
- List<string> excelsSheets = new();
|
|
|
|
|
- FileInfo fileInfo = null;
|
|
|
|
|
- for (int i = 0; i < 9; i++)
|
|
|
|
|
|
|
+ FileInfo fileInfo = new FileInfo(path);
|
|
|
|
|
+ using (ExcelPackage package = new ExcelPackage(fileInfo))
|
|
|
{
|
|
{
|
|
|
- fileInfo = new FileInfo(createEnemyExcelPath + $"/出怪表{i}.xlsx");
|
|
|
|
|
- using (ExcelPackage package = new ExcelPackage(fileInfo))
|
|
|
|
|
|
|
+ ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
|
|
|
|
|
+ ExcelEditor.RemoveExcelRowsFrom(worksheet, 6);
|
|
|
|
|
+ worksheet.Cells["A6"].Value = "##";
|
|
|
|
|
+ worksheet.Cells["B6"].Value = "小怪";
|
|
|
|
|
+ worksheet.Cells["A7"].Value = "##";
|
|
|
|
|
+ worksheet.Cells["B7"].Value = "阴灵";
|
|
|
|
|
+ worksheet.Cells["A8"].Value = "##";
|
|
|
|
|
+ worksheet.Cells["B8"].Value = "Boss";
|
|
|
|
|
+ ExcelEditor.SetMultipleRowsBackgroundColor(worksheet, 6, 8, System.Drawing.Color.FromArgb(191, 191, 191));
|
|
|
|
|
+ List<int> rowIndex = new List<int> { 6, 7, 8, 9 };
|
|
|
|
|
+ for (int i = 0; i < asset.tileAsset.tiles.Count; i++)
|
|
|
{
|
|
{
|
|
|
- excelsSheets = ExcelEditor.ReadExcelSheetsInfo(package);
|
|
|
|
|
- for (int j = 0; j < asset.tileAsset.tiles.Count; j++)
|
|
|
|
|
- {
|
|
|
|
|
- GameMapTile tile = asset.tileAsset.tiles[j];
|
|
|
|
|
- foreach (var sheetName in excelsSheets)
|
|
|
|
|
- {
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, sheetName, 7, 3 + j, tile.name);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- for (int j = 0; j < 100; j++)
|
|
|
|
|
- {
|
|
|
|
|
- foreach (var sheetName in excelsSheets)
|
|
|
|
|
- {
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, sheetName, 7, 3 + asset.tileAsset.tiles.Count + j, "");
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- try
|
|
|
|
|
|
|
+ GameMapTile tile = asset.tileAsset.tiles[i];
|
|
|
|
|
+ int rowId = rowIndex[(int)tile.type - 1];
|
|
|
|
|
+ worksheet.InsertRow(rowId, 1);
|
|
|
|
|
+ for(int j = (int)tile.type - 1; j < 4; j++)
|
|
|
{
|
|
{
|
|
|
- package.Save();
|
|
|
|
|
|
|
+ rowIndex[j]++;
|
|
|
}
|
|
}
|
|
|
- catch (System.InvalidOperationException e)
|
|
|
|
|
|
|
+ worksheet.Cells[$"B{rowId}"].Value = tile.name;
|
|
|
|
|
+ worksheet.Cells[$"C{rowId}"].Value = tile.sprite.name;
|
|
|
|
|
+ worksheet.Cells[$"D{rowId}"].Value = $"#{ColorUtility.ToHtmlStringRGB(tile.color)}";
|
|
|
|
|
+ worksheet.Cells[$"E{rowId}"].Value = Enum.GetName(typeof(GameMapTile.Type), tile.type);
|
|
|
|
|
+ worksheet.Cells[$"F{rowId}"].Value = tile.prefab;
|
|
|
|
|
+ worksheet.Cells[$"G{rowId}"].Value = $"{tile.radius.x},{tile.radius.y}";
|
|
|
|
|
+ if(tile.type != GameMapTile.Type.Boss)
|
|
|
{
|
|
{
|
|
|
- Debug.LogError($"出怪表未关闭请重试");
|
|
|
|
|
- Debug.LogException(e);
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ worksheet.Cells[$"H{rowId}"].Value = tile.parameter.HP;
|
|
|
|
|
+ worksheet.Cells[$"I{rowId}"].Value = tile.parameter.Attack_summon;
|
|
|
|
|
+ string attack_marchStr = $"{tile.parameter.Attack_march[0]}";
|
|
|
|
|
+ for(int j = 1; j < tile.parameter.Attack_march.Count; j++)
|
|
|
|
|
+ {
|
|
|
|
|
+ attack_marchStr += $",{tile.parameter.Attack_march[j]}";
|
|
|
|
|
+ }
|
|
|
|
|
+ worksheet.Cells[$"J{rowId}"].Value = attack_marchStr;
|
|
|
|
|
+ worksheet.Cells[$"K{rowId}"].Value = $"{tile.parameter.MinMoveSpeed:F2}";
|
|
|
|
|
+ worksheet.Cells[$"L{rowId}"].Value = $"{tile.parameter.MaxMoveSpeed:F2}";
|
|
|
|
|
|
|
|
- fileInfo = new FileInfo(path);
|
|
|
|
|
- using (ExcelPackage package = new ExcelPackage(fileInfo))
|
|
|
|
|
- {
|
|
|
|
|
- for (int i = 0; i < asset.tileAsset.tiles.Count; i++)
|
|
|
|
|
- {
|
|
|
|
|
- GameMapTile tile = asset.tileAsset.tiles[i];
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"B{8 + i}", tile.name);
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"C{8 + i}", tile.sprite.name);
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"D{8 + i}", $"#{ColorUtility.ToHtmlStringRGB(tile.color)}");
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"E{8 + i}", Enum.GetName(typeof(GameMapTile.Type), tile.type));
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"F{8 + i}", Enum.GetName(typeof(GameMapTile.CH), tile.ch));
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"G{8 + i}", $"{tile.radius.x},{tile.radius.y}");
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"H{8 + i}", tile.parameter.HP.ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"I{8 + i}", tile.parameter.Attack_summon.ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"J{8 + i}", tile.parameter.Attack_march.ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"K{8 + i}", tile.parameter.MinMoveSpeed.ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, "CfgEnemy", $"L{8 + i}", tile.parameter.MaxMoveSpeed.ToString());
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- ExcelEditor.RemoveExcelRows(package, "CfgEnemy", 8 + asset.tileAsset.tiles.Count, 108 + asset.tileAsset.tiles.Count);
|
|
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
|
package.Save();
|
|
package.Save();
|
|
|
|
|
+ ExcelEditor.RunBat();
|
|
|
|
|
+ Debug.Log("怪物表数据保存完毕!");
|
|
|
}
|
|
}
|
|
|
catch (System.InvalidOperationException e)
|
|
catch (System.InvalidOperationException e)
|
|
|
{
|
|
{
|
|
|
- Debug.LogError($"怪物表未关闭请重试");
|
|
|
|
|
|
|
+ EditorUtility.DisplayDialog("Error", $"怪物表未关闭或出现其他错误。\n\n{e}", "OK");
|
|
|
Debug.LogException(e);
|
|
Debug.LogException(e);
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- ExcelEditor.RunBat();
|
|
|
|
|
- Debug.Log("怪物表数据保存完毕!");
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void OnAutoTileChange(int idx)
|
|
private void OnAutoTileChange(int idx)
|