Cleanup/Housekeeping (#242)
This commit is contained in:
parent
90ede0659f
commit
741e8d8300
228 changed files with 6292 additions and 2690 deletions
|
|
@ -1,23 +1,3 @@
|
|||
/***************************************************************************
|
||||
* World.cs
|
||||
* -------------------
|
||||
* begin : May 1, 2002
|
||||
* copyright : (C) The RunUO Software Team
|
||||
* email : info@runuo.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
|
|
@ -67,7 +47,10 @@ namespace Server
|
|||
|
||||
public static void NotifyDiskWriteComplete()
|
||||
{
|
||||
if (m_DiskWriteHandle.Set()) Console.WriteLine("Closing Save Files. ");
|
||||
if (m_DiskWriteHandle.Set())
|
||||
{
|
||||
Console.WriteLine("Closing Save Files. ");
|
||||
}
|
||||
}
|
||||
|
||||
public static void WaitForWriteCompletion()
|
||||
|
|
@ -79,7 +62,10 @@ namespace Server
|
|||
{
|
||||
if (Saving || Loading)
|
||||
{
|
||||
if (Saving) AppendSafetyLog("delete", entity);
|
||||
if (Saving)
|
||||
{
|
||||
AppendSafetyLog("delete", entity);
|
||||
}
|
||||
|
||||
_deleteQueue.Enqueue(entity);
|
||||
|
||||
|
|
@ -94,17 +80,25 @@ namespace Server
|
|||
Packet p;
|
||||
|
||||
if (ascii)
|
||||
{
|
||||
p = new AsciiMessage(Serial.MinusOne, -1, MessageType.Regular, hue, 3, "System", text);
|
||||
}
|
||||
else
|
||||
{
|
||||
p = new UnicodeMessage(Serial.MinusOne, -1, MessageType.Regular, hue, 3, "ENU", "System", text);
|
||||
}
|
||||
|
||||
var list = TcpServer.Instances;
|
||||
|
||||
p.Acquire();
|
||||
|
||||
for (var i = 0; i < list.Count; ++i)
|
||||
{
|
||||
if (list[i].Mobile != null)
|
||||
{
|
||||
list[i].Send(p);
|
||||
}
|
||||
}
|
||||
|
||||
p.Release();
|
||||
}
|
||||
|
|
@ -147,9 +141,13 @@ namespace Server
|
|||
var ctor = t.GetConstructor(m_SerialTypeArray);
|
||||
|
||||
if (ctor != null)
|
||||
{
|
||||
types.Add(new Tuple<ConstructorInfo, string>(ctor, typeName));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception($"Type '{t}' does not have a serialization constructor");
|
||||
}
|
||||
}
|
||||
|
||||
return types;
|
||||
|
|
@ -158,7 +156,9 @@ namespace Server
|
|||
public static void Load()
|
||||
{
|
||||
if (Loaded)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Loaded = true;
|
||||
LoadingType = null;
|
||||
|
|
@ -202,7 +202,9 @@ namespace Server
|
|||
var objs = types[typeID];
|
||||
|
||||
if (objs == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Mobile m = null;
|
||||
var ctor = objs.Item1;
|
||||
|
|
@ -257,7 +259,9 @@ namespace Server
|
|||
var objs = types[typeID];
|
||||
|
||||
if (objs == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Item item = null;
|
||||
var ctor = objs.Item1;
|
||||
|
|
@ -307,7 +311,9 @@ namespace Server
|
|||
EventSink.InvokeCreateGuild(createEventArgs);
|
||||
var guild = createEventArgs.Guild;
|
||||
if (guild != null)
|
||||
{
|
||||
guilds.Add(new GuildEntry(guild, pos, length));
|
||||
}
|
||||
}
|
||||
|
||||
idxReader.Close();
|
||||
|
|
@ -339,7 +345,9 @@ namespace Server
|
|||
m.Deserialize(reader);
|
||||
|
||||
if (reader.Position != entry.Position + entry.Length)
|
||||
{
|
||||
throw new Exception($"***** Bad serialize on {m.GetType()} *****");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
@ -379,7 +387,9 @@ namespace Server
|
|||
item.Deserialize(reader);
|
||||
|
||||
if (reader.Position != entry.Position + entry.Length)
|
||||
{
|
||||
throw new Exception($"***** Bad serialize on {item.GetType()} *****");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
@ -420,7 +430,9 @@ namespace Server
|
|||
g.Deserialize(reader);
|
||||
|
||||
if (reader.Position != entry.Position + entry.Length)
|
||||
{
|
||||
throw new Exception($"***** Bad serialize on Guild {g.Serial} *****");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
@ -458,17 +470,33 @@ namespace Server
|
|||
if (Console.ReadKey(true).Key == ConsoleKey.Y)
|
||||
{
|
||||
if (failedMobiles)
|
||||
{
|
||||
for (var i = 0; i < mobiles.Count;)
|
||||
{
|
||||
if (mobiles[i].TypeID == failedTypeID)
|
||||
{
|
||||
mobiles.RemoveAt(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (failedItems)
|
||||
{
|
||||
for (var i = 0; i < items.Count;)
|
||||
{
|
||||
if (items[i].TypeID == failedTypeID)
|
||||
{
|
||||
items.RemoveAt(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -495,7 +523,9 @@ namespace Server
|
|||
foreach (var item in Items.Values)
|
||||
{
|
||||
if (item.Parent == null)
|
||||
{
|
||||
item.UpdateTotals();
|
||||
}
|
||||
|
||||
item.ClearProperties();
|
||||
}
|
||||
|
|
@ -525,9 +555,13 @@ namespace Server
|
|||
var entity = _addQueue.Dequeue();
|
||||
|
||||
if (entity is Item item)
|
||||
{
|
||||
AddItem(item);
|
||||
}
|
||||
else if (entity is Mobile mob)
|
||||
{
|
||||
AddMobile(mob);
|
||||
}
|
||||
}
|
||||
|
||||
while (_deleteQueue.Count > 0)
|
||||
|
|
@ -535,9 +569,13 @@ namespace Server
|
|||
var entity = _deleteQueue.Dequeue();
|
||||
|
||||
if (entity is Item item)
|
||||
{
|
||||
item.Delete();
|
||||
}
|
||||
else if (entity is Mobile mob)
|
||||
{
|
||||
mob.Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -564,13 +602,19 @@ namespace Server
|
|||
private static void SaveIndex<T>(List<T> list, string path) where T : IEntityEntry
|
||||
{
|
||||
if (!Directory.Exists("Saves/Mobiles/"))
|
||||
{
|
||||
Directory.CreateDirectory("Saves/Mobiles/");
|
||||
}
|
||||
|
||||
if (!Directory.Exists("Saves/Items/"))
|
||||
{
|
||||
Directory.CreateDirectory("Saves/Items/");
|
||||
}
|
||||
|
||||
if (!Directory.Exists("Saves/Guilds/"))
|
||||
{
|
||||
Directory.CreateDirectory("Saves/Guilds/");
|
||||
}
|
||||
|
||||
using var idx = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
|
||||
var idxWriter = new BinaryWriter(idx);
|
||||
|
|
@ -598,7 +642,9 @@ namespace Server
|
|||
public static void Save(bool message, bool permitBackgroundWrite)
|
||||
{
|
||||
if (Saving)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
++m_Saves;
|
||||
|
||||
|
|
@ -611,7 +657,9 @@ namespace Server
|
|||
m_DiskWriteHandle.Reset();
|
||||
|
||||
if (message)
|
||||
{
|
||||
Broadcast(0x35, true, "The world is saving, please wait.");
|
||||
}
|
||||
|
||||
var strategy = SaveStrategy.Acquire();
|
||||
Console.WriteLine("Core: Using {0} save strategy", strategy.Name.ToLower());
|
||||
|
|
@ -621,11 +669,19 @@ namespace Server
|
|||
var watch = Stopwatch.StartNew();
|
||||
|
||||
if (!Directory.Exists("Saves/Mobiles/"))
|
||||
{
|
||||
Directory.CreateDirectory("Saves/Mobiles/");
|
||||
}
|
||||
|
||||
if (!Directory.Exists("Saves/Items/"))
|
||||
{
|
||||
Directory.CreateDirectory("Saves/Items/");
|
||||
}
|
||||
|
||||
if (!Directory.Exists("Saves/Guilds/"))
|
||||
{
|
||||
Directory.CreateDirectory("Saves/Guilds/");
|
||||
}
|
||||
|
||||
strategy.Save(permitBackgroundWrite);
|
||||
|
||||
|
|
@ -643,7 +699,9 @@ namespace Server
|
|||
Saving = false;
|
||||
|
||||
if (!permitBackgroundWrite)
|
||||
{
|
||||
NotifyDiskWriteComplete(); // Sets the DiskWriteHandle. If we allow background writes, we leave this upto the individual save strategies.
|
||||
}
|
||||
|
||||
ProcessSafetyQueues();
|
||||
|
||||
|
|
@ -652,12 +710,14 @@ namespace Server
|
|||
Console.WriteLine("Save done in {0:F2} seconds.", watch.Elapsed.TotalSeconds);
|
||||
|
||||
if (message)
|
||||
{
|
||||
Broadcast(
|
||||
0x35,
|
||||
true,
|
||||
"World save complete. The entire process took {0:F1} seconds.",
|
||||
watch.Elapsed.TotalSeconds
|
||||
);
|
||||
}
|
||||
|
||||
NetState.Resume();
|
||||
}
|
||||
|
|
@ -665,9 +725,14 @@ namespace Server
|
|||
public static IEntity FindEntity(Serial serial)
|
||||
{
|
||||
if (serial.IsItem)
|
||||
{
|
||||
return FindItem(serial);
|
||||
}
|
||||
|
||||
if (serial.IsMobile)
|
||||
{
|
||||
return FindMobile(serial);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue