Exemplo n.º 1
0
 private static void Server_ServerTick(object sender, ulong e)
 {
     if (AutoSave.Allow())
     {
         WorldStorage.AutoSave(WorldStorage.SaveName, new WorldDiskSink());
     }
 }
Exemplo n.º 2
0
        internal WorldController(Server s, WorldStorage storage)
        {
            this.storage = storage;

            s.StaticRoutes.Add(HttpMethod.POST, "/getworld2.php", this.GetWorld);
            s.StaticRoutes.Add(HttpMethod.POST, "/uploadworld2.php", this.UploadWorld);
        }
Exemplo n.º 3
0
 private void NewSave()
 {
     if (!string.IsNullOrWhiteSpace(SaveGameMenu.menu.SaveInputBox.Text))
     {
         WorldStorage.SerializeWorld(SaveGameMenu.menu.SaveInputBox.Text, new WorldDiskSink());
     }
     MenuHandler.Back();
 }
Exemplo n.º 4
0
 private void NewSave()
 {
     if (SaveGameMenu.menu.SaveInputBox.Text != string.Empty)
     {
         WorldStorage.SerializeWorld(SaveGameMenu.menu.SaveInputBox.Text, new WorldDiskSink());
     }
     MenuHandler.Back();
 }
Exemplo n.º 5
0
        public static World Load(WorldStorage store)
        {
            var world = new World();

            world.DayNightCycle.Time = store.Time;
            world.PlayerSpawnLevel   = store.PlayerSpawnLevel;

            return(world);
        }
Exemplo n.º 6
0
        public void HandleWORLD(Socket socket, byte[] data)
        {
            new BufferReader(data)
            .Ignore(sizeof(int))
            .ReadStringUTF8(out var worldJson);

            WorldStorage worldStorage = worldJson.FromJson <WorldStorage>();

            World = World.Load(worldStorage);
        }
        private void Overwrite()
        {
            int selected = SaveGameMenu.menu.SavesList.SelectedIndex;

            if (selected != -1)
            {
                RenderableString selectedItem = (RenderableString)SaveGameMenu.menu.SavesList.Items[selected];
                WorldStorage.SerializeWorld(selectedItem.Text, new WorldDiskSink());
            }
            MenuHandler.Back();
        }
Exemplo n.º 8
0
        public WorldStorage Save()
        {
            var worldStorage = new WorldStorage();

            worldStorage.Time             = DayNightCycle.Time;
            worldStorage.PlayerSpawnLevel = PlayerSpawnLevel;

            foreach (var l in Levels)
            {
                worldStorage.Levels.Add(l.Name);
            }

            return(worldStorage);
        }
Exemplo n.º 9
0
        private static void TickTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            if (World.Data.World.Mode == EngineMode.ServerOnly)
            {
                ServerSendRecieve.SendAll(new ServerTickMessage());
            }
            else
            {
                Uni.Tick(Uni.GameTick + 1);
            }

            if (AutoSave.Allow())
            {
                WorldStorage.AutoSave(WorldStorage.SaveName, new WorldDiskSink());
            }
        }
Exemplo n.º 10
0
        internal static void Receive(WorldTransferHeaderMessage msg)
        {
            ExpectedChunks         = 0;
            ExpectedItemRegistries = 0;
            ReceivedChunks         = 0;
            ReceivedItemRegistries = 0;

            SaveName = FileSystemManager.GetIOSafeTime();
            WorldStorage.Initialize(SaveName);

            foreach (DimensionHeader item in msg.DimensionHeaders)
            {
                ExpectedChunks += item.Height * item.Width;
                ExpectedItemRegistries++;

                DirectoryInfo dirInfo = Directory.CreateDirectory(WorldStorage.DimensionSaveFolder + Path.DirectorySeparatorChar + item.ID);
                WorldStorage.DimensionPaths.Add(item.ID, dirInfo.FullName);
                WorldStorage.DimensionStorage.SerializeDimensionHeader(item, DiskSink, dirInfo.FullName);
            }
        }
Exemplo n.º 11
0
        public override void Click(MouseEventArgs e, GUIContainer container)
        {
            int selected = LoadGameMenu.Menu.SaveSelectListBox.SelectedIndex;

            if (selected != -1)
            {
                FMODUtil.RaiseEvent(SoundsTable.UIClick);
                World.Mode = MagicalLifeAPI.Networking.EngineMode.ServerAndClient;
                RenderableString selectedItem = (RenderableString)LoadGameMenu.Menu.SaveSelectListBox.Items[selected];
                WorldStorage.LoadWorld(selectedItem.Text);

                Server.Load();
                ClientSendRecieve.Initialize(new MagicalLifeAPI.Networking.NetworkSettings(MagicalLifeAPI.Networking.EngineMode.ServerAndClient));
                ServerSendRecieve.Initialize(new MagicalLifeAPI.Networking.NetworkSettings(MagicalLifeAPI.Networking.EngineMode.ServerAndClient));
                Client.Load();
                Server.StartGame();
                BoundHandler.RemoveContainer(LoadGameMenu.Menu);
                MenuHandler.Clear();
                BoundHandler.HideAll();
                InGameGUI.Initialize();
                BoundHandler.Popup(InGameGUI.InGame);
            }
        }
Exemplo n.º 12
0
        private void LoadSaveButton_ClickEvent(object sender, Reusable.Event.ClickEventArgs e)
        {
            int selected = LoadGameMenu.Menu.SaveSelectListBox.SelectedIndex;

            if (selected != -1)
            {
                FMODUtil.RaiseEvent(SoundsTable.UIClick);
                World.Mode = MagicalLifeAPI.Networking.EngineMode.ServerAndClient;
                RenderableString selectedItem = (RenderableString)LoadGameMenu.Menu.SaveSelectListBox.Items[selected];
                WorldStorage.LoadWorld(selectedItem.Text);

                Server.Load();
                ClientSendRecieve.Initialize(new MagicalLifeAPI.Networking.NetworkSettings(MagicalLifeAPI.Networking.EngineMode.ServerAndClient));
                ServerSendRecieve.Initialize(new MagicalLifeAPI.Networking.NetworkSettings(MagicalLifeAPI.Networking.EngineMode.ServerAndClient));
                Client.Load();
                Server.StartGame();
                BoundHandler.RemoveContainer(LoadGameMenu.Menu);
                MenuHandler.Clear();
                BoundHandler.HideAll();
                InGameGUI.Initialize();
                BoundHandler.Popup(InGameGUI.InGame);
                RenderInfo.Camera2D.InitializeForDimension(0);
            }
        }
Exemplo n.º 13
0
 /// <summary>
 /// Handles when we are done receiving the world.
 /// </summary>
 private static void HandleCompletion()
 {
     WorldStorage.LoadWorld(SaveName);
     MagicalLifeAPI.World.Data.World.RaiseChangeCameraDimension(0);
 }
 /// <summary>
 /// Handles when we are done receiving the world.
 /// </summary>
 private static void HandleCompletion()
 {
     WorldStorage.LoadWorld(SaveName);
 }
Exemplo n.º 15
0
        private void Server_ClientConnected(object sender, System.Net.Sockets.TcpClient e)
        {
            MasterLog.DebugWriteLine("Client connected: " + e.Client.RemoteEndPoint.ToString());

            WorldStorage.NetSerializeWorld(WorldStorage.SaveName, new WorldNetSink(e.Client));
        }
Exemplo n.º 16
0
        public async Task WorldDomination([Remainder] string arg = "")
        {
            Color red   = new Color(255, 0, 0);
            Color green = new Color(0, 255, 0);
            Color blue  = new Color(0, 0, 255);

            int playerCount;
            List <SocketUser>   players;
            List <WorldAccount> WDplayers = new List <WorldAccount>();

            string context;

            string [] args = arg.Split(' '); //! Seperate multiple args

            if (!Global.WDRunning)           //! Can't have any double instances.
            {
                playerCount = 0;
                players     = new List <SocketUser>
                {
                    Capacity = 5
                };
                Global.WDRunning = true;
                Console.WriteLine("World domination beginning...");
                context = "";

                players.Add(Context.Message.Author); //! Make sure the game starter is added!

                foreach (SocketUser user in Context.Message.MentionedUsers)
                {
                    players.Add(user);
                }
                playerCount = players.Count();

                foreach (SocketUser u in players)
                {
                    WDplayers.Add(WorldStorage.GetAccount(u));
                    WorldStorage.UpdateInfo(u);
                }
                Console.WriteLine($"{players.Count()} = {WDplayers.Count()}");

                Console.WriteLine("Players:");
                foreach (SocketUser player in players)
                {
                    Console.Write($"{ UserAccounts.GetAccount(player).UserName}, ");
                }

                Global.players     = players;
                Global.playerCount = playerCount;

                await UpdateGameEmbed(green, "Game starting!");
            }
            else if (Global.WDRunning && args[0] == "close")
            {
                Global.WDRunning   = false;
                Global.playerCount = 0;
                Global.players.Clear();
                context = "";
                await UpdateGameEmbed(red, "Game closed.");

                return;
            }
            else if (Global.WDRunning && args[0] == "join" && Global.playerCount < Global.players.Capacity)
            {
                Global.players.Add(Context.Message.Author);
                Global.playerCount = Global.players.Count();
                await UpdateGameEmbed(green, $"{Context.Message.Author.Username} has  joined!");
            }
            else if (Global.WDRunning && args[0] == "action")
            {
                //! If statements for actions using args[1] and so on. If targeted, use context.message.mentionedUsers for target.
                if (args[1] == "fight")
                {
                    string fighter1, fighter2;
                    fighter1 = Context.Message.Author.Username;
                    fighter2 = Context.Message.MentionedUsers.First <SocketUser>().Username; //! Broken but point is visable
                    var embed = new EmbedBuilder();
                    embed.WithColor(green);
                    embed.WithTitle("World Domination");
                    embed.AddField("Fight between", $"{fighter1} and {fighter2}");
                    embed.AddInlineField($"{fighter1} info", "Info on author's tribe");
                    embed.AddInlineField($"{fighter2} info", "Info on mentioned user's tribe");
                    embed.WithFooter($"{Global.playerCount}/{Global.players.Capacity} players", "https://i.imgur.com/9Y0vuCO.png");

                    await Context.Channel.SendMessageAsync("", false, embed);
                }
            }
            else
            {
                await Context.Channel.SendMessageAsync("Game already running!");
            }
        }
Exemplo n.º 17
0
 public void run(List <string> input)
 {
     WorldStorage.SerializeWorld("Server World", new WorldDiskSink());
 }
Exemplo n.º 18
0
 public ArenaEngine(WorldStorage worldStorage)
 {
     this.WorldStorage = worldStorage;
 }