Example #1
0
        internal static void SendToClient(Packet p)
        {
            var len = p.Length;

            fixed(byte *packet = p.Compile())
            {
                UOClient.SendToClient(packet, (int)len);
            }
        }
Example #2
0
    // If mock is enabled we skip the console readline.
    public static void Load(bool mocked = false)
    {
        m_Mocked = mocked;
        var updated = false;

        if (File.Exists(m_FilePath))
        {
            logger.Information("Reading server configuration from {Path}...", _relPath);
            m_Settings = JsonConfig.Deserialize <ServerSettings>(m_FilePath);

            if (m_Settings == null)
            {
                logger.Error("Reading server configuration failed");
                throw new FileNotFoundException($"Failed to deserialize {m_FilePath}.");
            }

            logger.Information("Reading server configuration done");
        }
        else
        {
            updated    = true;
            m_Settings = new ServerSettings();
        }

        if (mocked)
        {
            return;
        }

        if (m_Settings.DataDirectories.Count == 0)
        {
            updated = true;
            foreach (var directory in ServerConfigurationPrompts.GetDataDirectories())
            {
                m_Settings.DataDirectories.Add(directory);
            }
        }

        UOClient.Load();
        var cuoClientFiles = UOClient.CuoSettings?.UltimaOnlineDirectory;

        if (cuoClientFiles != null)
        {
            DataDirectories.Add(cuoClientFiles);
        }

        if (m_Settings.Listeners.Count == 0)
        {
            updated = true;
            m_Settings.Listeners.AddRange(ServerConfigurationPrompts.GetListeners());
        }

        bool?isPre60000 = null;

        if (m_Settings.Expansion == null)
        {
            var expansion    = GetSetting <Expansion>("currentExpansion");
            var hasExpansion = expansion != null;

            expansion ??= ServerConfigurationPrompts.GetExpansion();

            if (expansion <= Expansion.ML && !hasExpansion)
            {
                isPre60000 = ServerConfigurationPrompts.GetIsClientPre6000();
                if (isPre60000 == true)
                {
                    SetSetting("maps.enablePre6000Trammel", true);
                }
            }

            updated = true;
            m_Settings.Expansion = expansion;
        }

        if (isPre60000 != true)
        {
            if (ServerConfigurationPrompts.GetIsClient7090())
            {
                updated = true;
                SetSetting("maps.enablePostHSMultiComponentFormat", true);
            }
        }

        Core.Expansion = m_Settings.Expansion.Value;

        if (updated)
        {
            Save();
            Console.Write("Server configuration saved to ");
            Utility.PushColor(ConsoleColor.Green);
            Console.WriteLine($"{_relPath}.");
            Utility.PopColor();
        }
    }
Example #3
0
        private static bool OnSend(byte *packet, int len)
        {
            PacketReader p = new PacketReader(packet, len, UOClient.IsDynLength(packet[0]));

            return(PacketHandler.OnClientPacket(p));
        }
Example #4
0
 internal static void Attack(uint serial)
 {
     UOClient.Attack(serial);
 }
Example #5
0
 internal static void Cast(int index)
 {
     UOClient.Cast(index);
 }
Example #6
0
 internal static void BringToFront(IntPtr hWnd)
 {
     UOClient.BringToFront(hWnd);
 }
Example #7
0
 internal static IntPtr FindUOWindow()
 {
     return(UOClient.FindUOWindow());
 }
Example #8
0
 internal static int Initialize(IntPtr mainWindow)
 {
     return(UOClient.InstallLibrary(mainWindow));
 }