Example #1
0
        static void Main(string[] args)
        {
            Console.Title = "Coob";
            Console.TreatControlCAsInput = true;
            Log.Info("Starting Coob.");

            DefaultCoobOptions defopt = new DefaultCoobOptions();

            iniFile config = new iniFile(AppDomain.CurrentDomain.BaseDirectory + "config.ini");
            if (File.Exists("config.ini"))
            {
                Log.Info("Read file config.ini ...");
                defopt.Port = Convert.ToInt32(config.IniReadValue("Settings", "Port"));
                defopt.WorldSeed = Convert.ToInt32(config.IniReadValue("Settings", "WorldSeed"));
            }
            else
            {
                Log.Warning("File config.ini doesn't exist");
                Log.Info("Creating file config.ini ...");
                File.Create("config.ini").Close();
                config.IniWriteValue("Settings", "Port", defopt.Port.ToString());
                config.IniWriteValue("Settings", "WorldSeed", defopt.WorldSeed.ToString());
            }
            Log.Info("Port set to " + defopt.Port);
            Log.Info("WorldSeed set to " + defopt.WorldSeed);

            Coob = new Coob(defopt);

            Scripting = new JavascriptEngine();

            ScriptManager = new ScriptManager();
            ScriptManager.ScriptHandlers.Add(Scripting);
            ScriptManager.Initialize();

            Scripting.SetParameter("coob", Root.Coob);

            Scripting.Run();

            var initializeEventArgs = new InitializeEventArgs(0);
            if (ScriptManager.CallEvent("OnInitialize", initializeEventArgs).Canceled)
                return;

            Coob.Options.WorldSeed = initializeEventArgs.WorldSeed;

            Coob.StartServer();

            while (Coob.Running)
            {
                var input = Console.ReadLine().ToLower();

                if (input == "exit") // Temporary way to quit server properly. Seems to f**k up because the console hates life.
                    Coob.StopServer();
            }

            Log.Info("Stopping server...");
            //Scripting.CallFunction("onQuit");
            ScriptManager.CallEvent("OnQuit", new QuitEventArgs());

            Log.Display(); // "Needs" to be called here since it normally gets called in the message handler (which isn't called anymore since server stopped).
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.Title = "Coob";
            //Console.TreatControlCAsInput = true;
            Log.Info("Starting Coob.");

            Scripting = new JavascriptEngine();

            ScriptManager = new ScriptManager();
            ScriptManager.ScriptHandlers.Add(Scripting);
            ScriptManager.Initialize();

            Scripting.Run();

            Coob = new Coob(new CoobOptions
                            {
                                Port = 12345,
                                WorldSeed = 1234,
                            });

            Scripting.SetParameter("coob", Coob);
            Scripting.SetParameter("world", Coob.World);

            var initializeEventArgs = new InitializeEventArgs(0);
            if (ScriptManager.CallEvent("OnInitialize", initializeEventArgs).Canceled)
                return;

            Log.Info("World seed: " + Coob.World.Seed);

            Coob.StartServer();

            while(Coob.Running)
            {
                var input = Console.ReadLine().ToLower();

                if (input == "exit") // Temporary way to quit server properly. Seems to f**k up because the console hates life.
                    Coob.StopServer();
            }

            Log.Info("Stopping server...");
            //Scripting.CallFunction("onQuit");
            ScriptManager.CallEvent("OnQuit", new QuitEventArgs());

            Log.Display(); // "Needs" to be called here since it normally gets called in the message handler (which isn't called anymore since server stopped).
        }
Example #3
0
        static void Main(string[] args)
        {
            Console.Title = "Coob";
            //Console.TreatControlCAsInput = true;
            Log.Info("Starting Coob.");

            Scripting = new JavascriptEngine();

            ScriptManager = new ScriptManager();
            ScriptManager.ScriptHandlers.Add(Scripting);
            ScriptManager.Initialize();

            Scripting.Run();

            var initArgs = ScriptManager.CallEvent <InitializeEventArgs>("OnInitialize", new InitializeEventArgs());

            Coob = new Coob(new CoobOptions
            {
                Port      = initArgs.Port,
                WorldSeed = initArgs.WorldSeed,
            });

            Scripting.SetParameter("coob", Coob);
            Scripting.SetParameter("world", Coob.World);

            Log.Info("World seed: " + Coob.World.Seed);

            Coob.StartServer();

            while (Coob.Running)
            {
                var input = Console.ReadLine() ?? ""; // FixMe: This will cause the console to spam HandleConsoleCommand(line) with an empty string if there's no input.

                HandleConsoleCommand(input);
            }

            Log.Info("Stopping server...");
            //Scripting.CallFunction("onQuit");
            ScriptManager.CallEvent("OnQuit", new QuitEventArgs());

            Log.Display(); // "Needs" to be called here since it normally gets called in the message handler (which isn't called anymore since server stopped).
        }
Example #4
0
        public Client(TcpClient tcpClient, Coob coob)
        {
            Joined        = false;
            Entity        = null;
            disconnecting = false;
            tcp           = tcpClient;
            Ip            = ((IPEndPoint)tcp.Client.RemoteEndPoint).Address.ToString();
            NetStream     = tcp.GetStream();
            Reader        = new NetReader(NetStream);
            Writer        = new BinaryWriter(NetStream);
            Coob          = coob;

            Id = Coob.CreateId();

            if (Id == 0)
            {
                throw new UserLimitReachedException();
            }

            recvBuffer = new byte[4];
            NetStream.BeginRead(recvBuffer, 0, 4, IdCallback, null);
        }
Example #5
0
        public Client(TcpClient tcpClient, Coob coob)
        {
            Joined = false;
            Entity = null;
            disconnecting = false;
            tcp = tcpClient;
            IP = (tcp.Client.RemoteEndPoint as IPEndPoint).Address.ToString();
            NetStream = tcp.GetStream();
            Reader = new NetReader(NetStream);
            Writer = new BinaryWriter(NetStream);
            Coob = coob;

            ID = Coob.CreateID();

            if (ID == 0)
            {
                throw new UserLimitReachedException();
            }

            recvBuffer = new byte[4];
            NetStream.BeginRead(recvBuffer, 0, 4, idCallback, null);
        }