|
@@ -129,6 +129,8 @@ public class GameMapEdPopup : PopupWindowContent
|
|
|
SaveExcelData(GameMapEditor.createEnemyExcelPath, list.index + 1);
|
|
SaveExcelData(GameMapEditor.createEnemyExcelPath, list.index + 1);
|
|
|
}
|
|
}
|
|
|
editorWindow.Close();
|
|
editorWindow.Close();
|
|
|
|
|
+ // 标记资源为脏数据,以便保存更改
|
|
|
|
|
+ EditorUtility.SetDirty(GameMapEditor.asset);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void SaveAsNewExcelData(string path)
|
|
void SaveAsNewExcelData(string path)
|
|
@@ -171,33 +173,82 @@ public class GameMapEdPopup : PopupWindowContent
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ ExcelEditor.RemoveExcelRows(package, gameMap.showIdent, 10, 500);
|
|
|
ExcelEditor.ModifyExcel(package, gameMap.showIdent, "D5", GameMapEditor.mapSize_w.ToString());
|
|
ExcelEditor.ModifyExcel(package, gameMap.showIdent, "D5", GameMapEditor.mapSize_w.ToString());
|
|
|
ExcelEditor.ModifyExcel(package, gameMap.showIdent, "D6", GameMapEditor.mapSize_h.ToString());
|
|
ExcelEditor.ModifyExcel(package, gameMap.showIdent, "D6", GameMapEditor.mapSize_h.ToString());
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
int cell_row = 10;
|
|
int cell_row = 10;
|
|
|
|
|
+ float idFloat = 0f;
|
|
|
|
|
+ int idInt = 0;
|
|
|
for(int i = 0; i < gameMap.layers.Length; i++)
|
|
for(int i = 0; i < gameMap.layers.Length; i++)
|
|
|
{
|
|
{
|
|
|
GameMapLayer layer = gameMap.layers[i];
|
|
GameMapLayer layer = gameMap.layers[i];
|
|
|
|
|
|
|
|
ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"C{cell_row}", layer.name);
|
|
ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"C{cell_row}", layer.name);
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"D{cell_row}", layer.duration.ToString());
|
|
|
|
|
|
|
+ if (layer.isFromTower)
|
|
|
|
|
+ {
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"E{cell_row}", layer.buildingId);
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"F{cell_row}", layer.buildingHp.ToString());
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ if ((!layer.isTowerWave && !layer.isFromTower) || i == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"D{cell_row}", layer.duration.ToString());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- for(int j = 0;j< layer.spawnTimes.Count; j++)
|
|
|
|
|
|
|
+ if (!layer.isTowerWave)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (layer.isFromTower)
|
|
|
|
|
+ {
|
|
|
|
|
+ idFloat += 0.01f;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ idInt++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for (int j = 0;j< layer.spawnTimes.Count; j++)
|
|
|
{
|
|
{
|
|
|
SpawnTime spawnTime = layer.spawnTimes[j];
|
|
SpawnTime spawnTime = layer.spawnTimes[j];
|
|
|
- if(spawnTime.pos.Count == 0)
|
|
|
|
|
- {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"B{cell_row}", (i + 1).ToString());
|
|
|
|
|
- if(j != 0)
|
|
|
|
|
- {
|
|
|
|
|
- for (int k = 0; k < 5; k++)
|
|
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ if (spawnTime.pos.Count == 0)
|
|
|
{
|
|
{
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, cell_row, 3 + k, "");
|
|
|
|
|
|
|
+ continue;
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception e)
|
|
|
|
|
+ {
|
|
|
|
|
+ Debug.Log(gameMap.layers.Length);
|
|
|
|
|
+ Debug.Log(i);
|
|
|
|
|
+ Debug.Log(layer.spawnTimes.Count);
|
|
|
|
|
+ Debug.LogError(j);
|
|
|
|
|
+ Debug.LogError(spawnTime);
|
|
|
|
|
+ Debug.LogError(spawnTime.pos);
|
|
|
|
|
+ Debug.LogException(e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (layer.isTowerWave)
|
|
|
|
|
+ {
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"B{cell_row}", "0");
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"C{cell_row}", layer.name);
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (layer.isFromTower)
|
|
|
|
|
+ {
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"B{cell_row}", idFloat.ToString());
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"B{cell_row}", idInt.ToString());
|
|
|
}
|
|
}
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"E{cell_row}", Asset.tileAsset.GetTile(spawnTime.id).name);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"G{cell_row}", Asset.tileAsset.GetTile(spawnTime.id).name);
|
|
|
string posString = "";
|
|
string posString = "";
|
|
|
for(int k = 0; k < spawnTime.pos.Count; k++)
|
|
for(int k = 0; k < spawnTime.pos.Count; k++)
|
|
|
{
|
|
{
|
|
@@ -211,20 +262,27 @@ public class GameMapEdPopup : PopupWindowContent
|
|
|
}
|
|
}
|
|
|
posString += ",";
|
|
posString += ",";
|
|
|
}
|
|
}
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"F{cell_row}", posString);
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"G{cell_row}", spawnTime.startTime.ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"H{cell_row}", spawnTime.endTime.ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"I{cell_row}", spawnTime.num.ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"J{cell_row}", (spawnTime.attack == 0?1:spawnTime.attack).ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"K{cell_row}", (spawnTime.moveSpeed == 0?1:spawnTime.moveSpeed).ToString());
|
|
|
|
|
- ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"L{cell_row}", (spawnTime.Hp == 0?1:spawnTime.Hp).ToString());
|
|
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"H{cell_row}", posString);
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"I{cell_row}", spawnTime.startTime.ToString());
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"J{cell_row}", spawnTime.endTime.ToString());
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"K{cell_row}", spawnTime.num.ToString());
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"L{cell_row}", (spawnTime.attack == 0?1:spawnTime.attack).ToString());
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"M{cell_row}", (spawnTime.moveSpeed == 0?1:spawnTime.moveSpeed).ToString());
|
|
|
|
|
+ ExcelEditor.ModifyExcel(package, gameMap.showIdent, $"N{cell_row}", (spawnTime.Hp == 0?1:spawnTime.Hp).ToString());
|
|
|
cell_row++;
|
|
cell_row++;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- ExcelEditor.RemoveExcelRows(package, gameMap.showIdent, cell_row, cell_row + 100);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ package.Save();
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (System.InvalidOperationException e)
|
|
|
|
|
+ {
|
|
|
|
|
+ EditorUtility.DisplayDialog("Error", $"出怪表未关闭或Sheet名重复,请重试", "OK");
|
|
|
|
|
+ Debug.LogException(e);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- package.Save();
|
|
|
|
|
}
|
|
}
|
|
|
Debug.Log($"\"{gameMap.showIdent}\"表保存完毕!");
|
|
Debug.Log($"\"{gameMap.showIdent}\"表保存完毕!");
|
|
|
Debug.Log("记得运行\"gen_code_json.bat\"更新数据!");
|
|
Debug.Log("记得运行\"gen_code_json.bat\"更新数据!");
|
|
@@ -252,6 +310,7 @@ public class GameMapEdPopup : PopupWindowContent
|
|
|
//导入波次数据
|
|
//导入波次数据
|
|
|
GameMapEditor.currLayer = -1;
|
|
GameMapEditor.currLayer = -1;
|
|
|
int mapId = -1;
|
|
int mapId = -1;
|
|
|
|
|
+ float id = 0;
|
|
|
for (int i = 0; i < cfgCreateEnemy.Count; i++)
|
|
for (int i = 0; i < cfgCreateEnemy.Count; i++)
|
|
|
{
|
|
{
|
|
|
if (cfgCreateEnemy[i].WaveID == -1)
|
|
if (cfgCreateEnemy[i].WaveID == -1)
|
|
@@ -266,40 +325,60 @@ public class GameMapEdPopup : PopupWindowContent
|
|
|
}
|
|
}
|
|
|
if(mapId == mapIdx - 1)
|
|
if(mapId == mapIdx - 1)
|
|
|
{
|
|
{
|
|
|
- if(cfgCreateEnemy[i-1].WaveID == -1)
|
|
|
|
|
- {
|
|
|
|
|
- if(cfgCreateEnemy[i].WaveID != 1)
|
|
|
|
|
- {
|
|
|
|
|
- EditorUtility.DisplayDialog("Error", $"\"{excelWorksheets[mapIdx - 1]}\"关卡第\"{cfgCreateEnemy[i].WaveID}\"波顺序有误", "OK");
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- if(cfgCreateEnemy[i].WaveID - cfgCreateEnemy[i-1].WaveID > 1
|
|
|
|
|
- || cfgCreateEnemy[i].WaveID < cfgCreateEnemy[i - 1].WaveID)
|
|
|
|
|
- {
|
|
|
|
|
- EditorUtility.DisplayDialog("Error", $"\"{excelWorksheets[mapIdx - 1]}\"关卡第\"{cfgCreateEnemy[i].WaveID}\"波顺序有误", "OK");
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if(cfgCreateEnemy[i].WaveID > gameMap.layers.Length)
|
|
|
|
|
|
|
+ if (cfgCreateEnemy[i].WaveID == 0)
|
|
|
{
|
|
{
|
|
|
- //波次第一行的波次数据
|
|
|
|
|
SingleCreateEnemyConfig singleCreateEnemyConfig = cfgCreateEnemy[i];
|
|
SingleCreateEnemyConfig singleCreateEnemyConfig = cfgCreateEnemy[i];
|
|
|
- int id = singleCreateEnemyConfig.WaveID;
|
|
|
|
|
ArrayUtility.Add(ref gameMap.layers, new GameMapLayer());
|
|
ArrayUtility.Add(ref gameMap.layers, new GameMapLayer());
|
|
|
gameMap.InitLayer(gameMap.layers.Length);
|
|
gameMap.InitLayer(gameMap.layers.Length);
|
|
|
GameMapLayer gameMapLayer = gameMap.layers[gameMap.layers.Length - 1];
|
|
GameMapLayer gameMapLayer = gameMap.layers[gameMap.layers.Length - 1];
|
|
|
- gameMapLayer.name = singleCreateEnemyConfig.WaveName;
|
|
|
|
|
|
|
+ gameMapLayer.name = singleCreateEnemyConfig.WaveName;
|
|
|
gameMapLayer.duration = singleCreateEnemyConfig.WaveTime;
|
|
gameMapLayer.duration = singleCreateEnemyConfig.WaveTime;
|
|
|
|
|
+ gameMapLayer.isTowerWave = true;
|
|
|
|
|
|
|
|
- //波次第一行怪物数据
|
|
|
|
|
- ReloadEnemyInWave(gameMapLayer, cfgCreateEnemy[i],excelWorksheets[mapIdx - 1]);
|
|
|
|
|
|
|
+ ReloadEnemyInWave(gameMapLayer, cfgCreateEnemy[i], excelWorksheets[mapIdx - 1]);
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- GameMapLayer gameMapLayer = gameMap.layers[gameMap.layers.Length - 1];
|
|
|
|
|
- ReloadEnemyInWave(gameMapLayer, cfgCreateEnemy[i], excelWorksheets[mapIdx - 1]);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (cfgCreateEnemy[i].WaveID - cfgCreateEnemy[i - 1].WaveID > 1
|
|
|
|
|
+ || cfgCreateEnemy[i].WaveID < cfgCreateEnemy[i - 1].WaveID)
|
|
|
|
|
+ {
|
|
|
|
|
+ Debug.Log(cfgCreateEnemy[i].WaveID);
|
|
|
|
|
+ Debug.Log(cfgCreateEnemy[i - 1].WaveID);
|
|
|
|
|
+ EditorUtility.DisplayDialog("Error", $"\"{excelWorksheets[mapIdx - 1]}\"关卡第\"{cfgCreateEnemy[i].WaveID}\"波顺序有误", "OK");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (cfgCreateEnemy[i].WaveID != id)
|
|
|
|
|
+ {
|
|
|
|
|
+ //波次第一行的波次数据
|
|
|
|
|
+ SingleCreateEnemyConfig singleCreateEnemyConfig = cfgCreateEnemy[i];
|
|
|
|
|
+ id = cfgCreateEnemy[i].WaveID;
|
|
|
|
|
+ ArrayUtility.Add(ref gameMap.layers, new GameMapLayer());
|
|
|
|
|
+ gameMap.InitLayer(gameMap.layers.Length);
|
|
|
|
|
+ GameMapLayer gameMapLayer = gameMap.layers[gameMap.layers.Length - 1];
|
|
|
|
|
+ gameMapLayer.name = singleCreateEnemyConfig.WaveName;
|
|
|
|
|
+ if(cfgCreateEnemy[i].WaveID < 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ gameMapLayer.isFromTower = true;
|
|
|
|
|
+ gameMapLayer.buildingId = singleCreateEnemyConfig.BuildingID;
|
|
|
|
|
+ gameMapLayer.buildingHp = singleCreateEnemyConfig.BuildingHP;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ gameMapLayer.isFromTower = false;
|
|
|
|
|
+ gameMapLayer.duration = singleCreateEnemyConfig.WaveTime;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //波次第一行怪物数据
|
|
|
|
|
+ ReloadEnemyInWave(gameMapLayer, cfgCreateEnemy[i], excelWorksheets[mapIdx - 1]);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ GameMapLayer gameMapLayer = gameMap.layers[gameMap.layers.Length - 1];
|
|
|
|
|
+ ReloadEnemyInWave(gameMapLayer, cfgCreateEnemy[i], excelWorksheets[mapIdx - 1]);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|