mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-22 12:05:51 -04:00
Now /copylvl also copies bots
This commit is contained in:
parent
57446cbcd4
commit
c0db0f2258
@ -109,17 +109,7 @@ namespace MCGalaxy.Bots {
|
||||
}
|
||||
}
|
||||
|
||||
public static void RemoveLevelBots(string level) {
|
||||
lock (locker) {
|
||||
for (int i = 0; i < SavedBots.Count; i++) {
|
||||
BotProperties props = SavedBots[i];
|
||||
if (level != props.Level) continue;
|
||||
SavedBots.RemoveAt(i); i--;
|
||||
}
|
||||
Save();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Deletes all bots which are located on the given map. </summary>
|
||||
public static void DeleteBots(string level) {
|
||||
lock (locker) {
|
||||
int removed = 0;
|
||||
@ -129,23 +119,43 @@ namespace MCGalaxy.Bots {
|
||||
|
||||
SavedBots.RemoveAt(i);
|
||||
removed++; i--;
|
||||
}
|
||||
}
|
||||
if (removed > 0) Save();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Moves all bots located on the given source map to the destination map. </summary>
|
||||
public static void MoveBots(string srcLevel, string dstLevel) {
|
||||
lock (locker) {
|
||||
int moved = 0;
|
||||
for (int i = 0; i < SavedBots.Count; i++) {
|
||||
BotProperties props = SavedBots[i];
|
||||
if (!props.Level.CaselessEq(srcLevel)) continue;
|
||||
props.Level = dstLevel; moved++;
|
||||
|
||||
props.Level = dstLevel;
|
||||
moved++;
|
||||
}
|
||||
if (moved > 0) Save();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Copies all bots located on the given source map to the destination map. </summary>
|
||||
public static void CopyBots(string srcLevel, string dstLevel) {
|
||||
lock (locker) {
|
||||
int copied = 0, count = SavedBots.Count;
|
||||
for (int i = 0; i < SavedBots.Count; i++) {
|
||||
BotProperties props = SavedBots[i];
|
||||
if (!props.Level.CaselessEq(srcLevel)) continue;
|
||||
|
||||
BotProperties copy = props.Copy();
|
||||
copy.Level = dstLevel;
|
||||
SavedBots.Add(copy);
|
||||
copied++;
|
||||
}
|
||||
if (copied > 0) Save();
|
||||
}
|
||||
}
|
||||
|
||||
public static void UpdateBot(PlayerBot bot) {
|
||||
lock (locker) DoUpdateBot(bot, true);
|
||||
}
|
||||
@ -195,5 +205,19 @@ namespace MCGalaxy.Bots {
|
||||
X = bot.pos[0]; Y = bot.pos[1]; Z = bot.pos[2];
|
||||
RotX = bot.rot[0]; RotY = bot.rot[1];
|
||||
}
|
||||
|
||||
public BotProperties Copy() {
|
||||
BotProperties copy = new BotProperties();
|
||||
copy.DisplayName = DisplayName; copy.Name = Name;
|
||||
copy.Level = Level; copy.Skin = Skin;
|
||||
copy.Model = Model; copy.Color = Color;
|
||||
|
||||
copy.AI = AI; copy.Kill = Kill;
|
||||
copy.Hunt = Hunt; copy.CurInstruction = CurInstruction;
|
||||
|
||||
copy.X = X; copy.Y = Y; copy.Z = Z;
|
||||
copy.RotX = RotX; copy.RotY = RotY;
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -93,15 +93,15 @@ namespace MCGalaxy {
|
||||
|
||||
public static void UnloadFromLevel(Level lvl) {
|
||||
BotsFile.UnloadBots(lvl);
|
||||
RemoveAll(lvl, false);
|
||||
RemoveLoadedBots(lvl, false);
|
||||
}
|
||||
|
||||
public static void RemoveAllFromLevel(Level lvl) {
|
||||
RemoveAll(lvl, true);
|
||||
BotsFile.RemoveLevelBots(lvl.name);
|
||||
RemoveLoadedBots(lvl, true);
|
||||
BotsFile.DeleteBots(lvl.name);
|
||||
}
|
||||
|
||||
static void RemoveAll(Level lvl, bool save) {
|
||||
static void RemoveLoadedBots(Level lvl, bool save) {
|
||||
PlayerBot[] bots = Bots.Items;
|
||||
for (int i = 0; i < bots.Length; i++) {
|
||||
PlayerBot bot = bots[i];
|
||||
|
@ -31,21 +31,22 @@ namespace MCGalaxy {
|
||||
public static void Rename(string src, string dst) {
|
||||
File.Move(LevelInfo.MapPath(src), LevelInfo.MapPath(dst));
|
||||
|
||||
SafeMove(LevelInfo.MapPath(src) + ".backup",
|
||||
LevelInfo.MapPath(dst) + ".backup");
|
||||
SafeMove("levels/level properties/" + src + ".properties",
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
SafeMove("levels/level properties/" + src,
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
SafeMove("blockdefs/lvl_" + src + ".json",
|
||||
"blockdefs/lvl_" + dst + ".json");
|
||||
SafeMove("blockprops/lvl_" + src + ".txt",
|
||||
"blockprops/lvl_" + dst + ".txt");
|
||||
MoveIfExists(LevelInfo.MapPath(src) + ".backup",
|
||||
LevelInfo.MapPath(dst) + ".backup");
|
||||
MoveIfExists("levels/level properties/" + src + ".properties",
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
MoveIfExists("levels/level properties/" + src,
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
MoveIfExists("blockdefs/lvl_" + src + ".json",
|
||||
"blockdefs/lvl_" + dst + ".json");
|
||||
MoveIfExists("blockprops/lvl_" + src + ".txt",
|
||||
"blockprops/lvl_" + dst + ".txt");
|
||||
|
||||
try {
|
||||
MoveBackups(src, dst);
|
||||
} catch {
|
||||
}
|
||||
|
||||
BotsFile.MoveBots(src, dst);
|
||||
RenameDatabaseTables(src, dst);
|
||||
BlockDBFile.MoveBackingFile(src, dst);
|
||||
@ -75,7 +76,7 @@ namespace MCGalaxy {
|
||||
}
|
||||
}
|
||||
|
||||
static void SafeMove(string src, string dst) {
|
||||
static void MoveIfExists(string src, string dst) {
|
||||
if (!File.Exists(src)) return;
|
||||
try {
|
||||
File.Move(src, dst);
|
||||
@ -127,10 +128,10 @@ namespace MCGalaxy {
|
||||
File.Move(LevelInfo.MapPath(name), LevelInfo.DeletedPath(name));
|
||||
}
|
||||
|
||||
SafeDelete("levels/level properties/" + name);
|
||||
SafeDelete("levels/level properties/" + name + ".properties");
|
||||
SafeDelete("blockdefs/lvl_" + name + ".json");
|
||||
SafeDelete("blockprops/lvl_" + name + ".txt");
|
||||
DeleteIfExists("levels/level properties/" + name);
|
||||
DeleteIfExists("levels/level properties/" + name + ".properties");
|
||||
DeleteIfExists("blockdefs/lvl_" + name + ".json");
|
||||
DeleteIfExists("blockprops/lvl_" + name + ".txt");
|
||||
|
||||
BotsFile.DeleteBots(name);
|
||||
DeleteDatabaseTables(name);
|
||||
@ -155,7 +156,7 @@ namespace MCGalaxy {
|
||||
}
|
||||
}
|
||||
|
||||
static void SafeDelete(string src) {
|
||||
static void DeleteIfExists(string src) {
|
||||
if (!File.Exists(src)) return;
|
||||
try {
|
||||
File.Delete(src);
|
||||
@ -208,14 +209,16 @@ namespace MCGalaxy {
|
||||
public static void CopyLevel(string src, string dst) {
|
||||
File.Copy(LevelInfo.MapPath(src), LevelInfo.MapPath(dst));
|
||||
|
||||
SafeCopy("levels/level properties/" + src,
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
SafeCopy("levels/level properties/" + src + ".properties",
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
SafeCopy("blockdefs/lvl_" + src + ".json",
|
||||
"blockdefs/lvl_" + dst + ".json");
|
||||
SafeCopy("blockprops/lvl_" + src + ".txt",
|
||||
"blockprops/lvl_" + dst + ".txt");
|
||||
CopyIfExists("levels/level properties/" + src,
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
CopyIfExists("levels/level properties/" + src + ".properties",
|
||||
"levels/level properties/" + dst + ".properties");
|
||||
CopyIfExists("blockdefs/lvl_" + src + ".json",
|
||||
"blockdefs/lvl_" + dst + ".json");
|
||||
CopyIfExists("blockprops/lvl_" + src + ".txt",
|
||||
"blockprops/lvl_" + dst + ".txt");
|
||||
|
||||
BotsFile.CopyBots(src, dst);
|
||||
CopyDatabaseTables(src, dst);
|
||||
}
|
||||
|
||||
@ -244,7 +247,7 @@ namespace MCGalaxy {
|
||||
}
|
||||
}
|
||||
|
||||
static void SafeCopy(string src, string dst) {
|
||||
static void CopyIfExists(string src, string dst) {
|
||||
if (!File.Exists(src)) return;
|
||||
try {
|
||||
File.Copy(src, dst, true);
|
||||
|
Loading…
x
Reference in New Issue
Block a user