Ejemplo n.º 1
0
    //Ensures folders exist, sets up defaults, processes command line arguments and runs Autoexec.csx
    public override void _Ready()
    {
        //First we make sure that the Saves folder exists
        {
            Directory Dir = new Directory();

            if (!Dir.DirExists("user://Saves"))
            {
                Dir.MakeDir("user://Saves");
            }
        }


        //Then defaults are set
        SetupDefaults();

        //Then command line arguments are processed
        bool ConnectFlag = false;

        string[] CmdArgs = OS.GetCmdlineArgs();
        foreach (string CurrentArg in CmdArgs)
        {
            Console.Log($"Command line argument '{CurrentArg}'");

            switch (CurrentArg)
            {
            case "-connect": {
                ConnectFlag = true;
                Net.ConnectTo("127.0.0.1");
                break;
            }
            }
        }

        if (OS.IsDebugBuild() && !ConnectFlag)
        {
            Game.Nickname = "me";
        }


        if (CmdArgs.Length > 0)
        {
            Console.LogLabel.Text += "\n";
        }
    }
Ejemplo n.º 2
0
    //Ensures folders exist, sets up defaults, processes command line arguments and runs Autoexec.csx
    public override void _Ready()
    {
        //First we make sure that the Saves folder exists
        {
            Directory Dir = new Directory();

            if (!Dir.DirExists("user://Saves"))
            {
                Dir.MakeDir("user://Saves");
            }
        }


        //Then defaults are set
        SetupDefaults();

        //Then command line arguments are processed
        string[] CmdArgs = OS.GetCmdlineArgs();
        foreach (string CurrentArg in CmdArgs)
        {
            Console.Log($"Command line argument '{CurrentArg}'");

            switch (CurrentArg)
            {
            case "-host": {
                Net.Host();
                break;
            }

            case "-connect": {
                Net.ConnectTo("127.0.0.1");
                break;
            }
            }
        }

        if (CmdArgs.Length > 0)
        {
            Console.LogLabel.Text += "\n";
        }

        Console.Print("The console is disabled in 0.1.6");
    }
Ejemplo n.º 3
0
    public static bool Connect(string Ip)
    {
        if (Net.Work.NetworkPeer != null)
        {
            if (Net.Work.IsNetworkServer())
            {
                Console.ThrowPrint("Cannot connect when hosting");
            }
            else
            {
                Console.ThrowPrint("Cannot connect when already connected to a server");
            }
            return(false);
        }

        if (Game.Nickname == Game.DefaultNickname)
        {
            Console.ThrowPrint("Please set a multiplayer nickname before connecting");
            return(false);
        }
        else
        {
            if (Ip == "" || Ip == "localhost")
            {
                Ip = "127.0.0.1";
            }


            IPAddress Address;                        //Unused, just to check if valid ip
            if (!IPAddress.TryParse(Ip, out Address)) //Requires an `out` argument
            {
                Console.ThrowPrint("Please provide a valid IP address");
                return(false);
            }

            Net.ConnectTo(Ip);
            return(true);
        }
    }
Ejemplo n.º 4
0
    public void ConnectPressed()
    {
        string Ip = IpEdit.GetText();

        if (Ip == "localhost")
        {
            Ip = "127.0.0.1";
        }

        IPAddress Address;         //Unused, just to check if valid ip

        if (!IPAddress.TryParse(Ip, out Address))
        {
            //Invalid ip
            AlertLabel.Visible = true;
            AlertLabel.Text    = "Please enter a valid IP address";
            return;
        }

        //Valid ip
        Menu.BuildWaitConnecting();
        Net.ConnectTo(Ip);
    }
Ejemplo n.º 5
0
    static List <object> GetDelCall(string Name)
    {
        switch (Name)
        {
        case "print":
            return(new List <object> {
                Name, new Action <string>(delegate(string ToPrint){ Console.Print(ToPrint); })
            });

        case "log":
            return(new List <object> {
                Name, new Action <string>(delegate(string ToLog){ Console.Log(ToLog); })
            });

        case "host":
            return(new List <object> {
                Name, new Action(delegate(){
                    Net.Host();
                })
            });

        case "connect":
            return(new List <object> {
                Name, new Action <string>(delegate(string Ip){
                    if (Ip == "" || Ip == "localhost" || Ip == "undefined")
                    {
                        Ip = "127.0.0.1";
                    }
                    Net.ConnectTo(Ip);
                })
            });

        case "disconnect":
            return(new List <object> {
                Name, new Action(delegate(){
                    Net.Disconnect();
                })
            });

        case "ms_get":
            return(new List <object> {
                Name, new Func <int>(() => { return OS.GetTicksMsec(); })
            });

        case "peerlist_get":
            return(new List <object> {
                Name, new Func <Jurassic.Library.ArrayInstance>(() => {
                    Jurassic.Library.ArrayInstance Out = Scripting.ConsoleEngine.Array.Construct();
                    foreach (int Id in Net.PeerList)
                    {
                        Out.Push(Id);
                    }
                    return Out;
                })
            });

        case "bind":
            return(new List <object> {
                Name, new Action <string, string>(delegate(string FunctionName, string InputString){
                    Bindings.Bind(FunctionName, InputString);
                })
            });

        case "unbind":
            return(new List <object> {
                Name, new Action <string>(delegate(string FunctionName){
                    Bindings.UnBind(FunctionName);
                })
            });

        case "player_input_forward_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.ForwardMove(Sens);
                })
            });

        case "player_input_forward_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.ForwardSens; })
            });

        case "player_input_backward_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.BackwardMove(Sens);
                })
            });

        case "player_input_backward_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.BackwardSens; })
            });

        case "player_input_right_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.RightMove(Sens);
                })
            });

        case "player_input_right_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.RightSens; })
            });

        case "player_input_left_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LeftMove(Sens);
                })
            });

        case "player_input_left_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.LeftSens; })
            });

        case "player_input_sprint_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.Sprint(Sens);
                })
            });

        case "player_input_sprint_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.IsSprinting ? 1d : 0d; })
            });

        case "player_input_jump_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.Jump(Sens);
                })
            });

        case "player_input_jump_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.IsJumping ? 1d : 0d; })
            });

        case "player_input_inventory_up":
            return(new List <object> {
                Name, new Action(delegate(){
                    Game.PossessedPlayer.InventoryUp();
                })
            });

        case "player_input_inventory_down":
            return(new List <object> {
                Name, new Action(delegate(){
                    Game.PossessedPlayer.InventoryDown();
                })
            });

        case "player_input_look_up":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookUp(Sens);
                })
            });

        case "player_input_look_down":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookDown(Sens);
                })
            });

        case "player_input_look_right":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookRight(Sens);
                })
            });

        case "player_input_look_left":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookLeft(Sens);
                })
            });

        case "player_input_build_rotate":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.BuildRotate(Sens);
                })
            });

        case "player_input_primary_fire":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.PrimaryFire(Sens);
                })
            });

        case "player_input_secondary_fire":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.SecondaryFire(Sens);
                })
            });

        case "gamemode_set":
            return(new List <object> {
                Name, new Action <string>(delegate(string GameModeName){
                    if (Game.Self.GetTree().GetNetworkPeer() != null && Game.Self.GetTree().GetNetworkUniqueId() == 1)
                    {
                        Scripting.LoadGameMode(GameModeName);
                    }
                    else
                    {
                        Console.Print("Error: Cannot set gamemode as client");
                    }
                })
            });

        case "gamemode_get":
            return(new List <object> {
                Name, new Func <string>(() => { return Scripting.GamemodeName; })
            });

        case "chunk_render_distance_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Distance){
                    if (Distance < 2d)
                    {
                        Console.Print("Cannot set render distance value lower than two chunks");
                        return;
                    }
                    Game.ChunkRenderDistance = (int)Distance;
                    Game.PossessedPlayer.UnloadAndRequestChunks();
                })
            });

        case "chunk_render_distance_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Convert.ToDouble(Game.ChunkRenderDistance); })
            });

        case "save":
            return(new List <object> {
                Name, new Action(delegate(){
                    Building.SaveWorld("TestSave");
                })
            });

        case "load":
            return(new List <object> {
                Name, new Action(delegate(){
                    Building.LoadWorld("TestSave");
                })
            });

        default:
            throw new System.ArgumentException("Invalid GetDelCall name arg '" + Name + "'");
        }
    }
Ejemplo n.º 6
0
    static List <object> GetDelCall(string Name)
    {
        switch (Name)
        {
        case "print":
            return(new List <object> {
                Name, new Action <string>(delegate(string ToPrint){ Console.Print(ToPrint); })
            });

        case "log":
            return(new List <object> {
                Name, new Action <string>(delegate(string ToLog){ Console.Log(ToLog); })
            });

        case "host":
            return(new List <object> {
                Name, new Action(delegate(){
                    Net.Host();
                })
            });

        case "connect":
            return(new List <object> {
                Name, new Action <string>(delegate(string Ip){
                    if (Ip == "" || Ip == "localhost" || Ip == "undefined")
                    {
                        Ip = "127.0.0.1";
                    }
                    Net.ConnectTo(Ip);
                })
            });

        case "ms_get":
            return(new List <object> {
                Name, new Func <int>(() => { return OS.GetTicksMsec(); })
            });

        case "peerlist_get":
            return(new List <object> {
                Name, new Func <Jurassic.Library.ArrayInstance>(() => {
                    Jurassic.Library.ArrayInstance Out = Scripting.ConsoleEngine.Array.Construct();
                    foreach (int Id in Net.PeerList)
                    {
                        Out.Push(Id);
                    }
                    return Out;
                })
            });

        case "bind":
            return(new List <object> {
                Name, new Action <string, string>(delegate(string FunctionName, string InputString){
                    Bindings.Bind(FunctionName, InputString);
                })
            });

        case "unbind":
            return(new List <object> {
                Name, new Action <string>(delegate(string FunctionName){
                    Bindings.UnBind(FunctionName);
                })
            });

        case "player_input_forward_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.ForwardMove(Sens);
                })
            });

        case "player_input_forward_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.ForwardSens; })
            });

        case "player_input_backward_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.BackwardMove(Sens);
                })
            });

        case "player_input_backward_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.BackwardSens; })
            });

        case "player_input_right_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.RightMove(Sens);
                })
            });

        case "player_input_right_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.RightSens; })
            });

        case "player_input_left_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LeftMove(Sens);
                })
            });

        case "player_input_left_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.LeftSens; })
            });

        case "player_input_sprint_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.Sprint(Sens);
                })
            });

        case "player_input_sprint_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.IsSprinting ? 1d : 0d; })
            });

        case "player_input_jump_set":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.Jump(Sens);
                })
            });

        case "player_input_jump_get":
            return(new List <object> {
                Name, new Func <double>(() => { return Game.PossessedPlayer.IsJumping ? 1d : 0d; })
            });

        case "player_input_inventory_up":
            return(new List <object> {
                Name, new Action(delegate(){
                    Game.PossessedPlayer.InventoryUp();
                })
            });

        case "player_input_inventory_down":
            return(new List <object> {
                Name, new Action(delegate(){
                    Game.PossessedPlayer.InventoryDown();
                })
            });

        case "player_input_look_up":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookUp(Sens);
                })
            });

        case "player_input_look_down":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookDown(Sens);
                })
            });

        case "player_input_look_right":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookRight(Sens);
                })
            });

        case "player_input_look_left":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.LookLeft(Sens);
                })
            });

        case "player_input_primary_fire":
            return(new List <object> {
                Name, new Action <double>(delegate(double Sens){
                    Game.PossessedPlayer.PrimaryFire(Sens);
                })
            });

        default:
            throw new System.ArgumentException("Invalid GetDelCall name arg '" + Name + "'");
        }
    }
Ejemplo n.º 7
0
    //Ensures folders exist, sets up defaults, processes command line arguments and runs Autoexec.csx
    public override void _Ready()
    {
        //First we make sure that the Saves and Gamemodes folders exist
        {
            Directory Dir = new Directory();

            if (!Dir.DirExists("user://Saves"))
            {
                Dir.MakeDir("user://Saves");
            }

            if (!Dir.DirExists("user//Gamemodes"))
            {
                Dir.MakeDir("user://Gamemodes");
            }
        }


        //Then defaults are set
        SetupDefaults();

        //Then command line arguments are processed
        string[] CmdArgs = OS.GetCmdlineArgs();
        foreach (string CurrentArg in CmdArgs)
        {
            Console.Log($"Command line argument '{CurrentArg}'");

            switch (CurrentArg)
            {
            case "-host": {
                Net.Host();
                break;
            }

            case "-connect": {
                Net.ConnectTo("127.0.0.1");
                break;
            }
            }
        }

        if (CmdArgs.Length > 0)
        {
            Console.LogLabel.Text += "\n";
        }


        //autoexec.csx is executed last
        File Autoexec = new File();

        if (Autoexec.FileExists("user://Autoexec.csx"))
        {
            Autoexec.Open("user://Autoexec.csx", 1);
            Console.Print("Autoexec loaded");
            try
            {
                Scripting.ConsoleState = Scripting.ConsoleState.ContinueWithAsync(Autoexec.GetAsText()).Result;
                Console.Print("Successfully executed autoexec");
            }
            catch (Exception Error)
            {
                Console.Print(Error.Message);
                Console.Print("AUTOEXEC FAILED: Not all parts of the autoexec executed successfully. It is highly recommended that you fix your autoexec and restart the game.");
            }
        }
        else
        {
            Console.Print("Autoexec not found, creating a default one");
            System.IO.File.WriteAllText($"{OS.GetUserDataDir()}/Autoexec.csx", "// This is your autoexec\n// It is executed directly after command line arugments are\n\n");
        }
        Autoexec.Close();
    }
Ejemplo n.º 8
0
 internal void ConnectTo(string addr)
 {
     // connect to a client ---- changed
     Net.ConnectTo(addr);
 }