Example #1
0
        public IScreen Start()
        {
            Menu m = new Menu("Multiplayer", "Hot Seat", "Direct IP", "Internet", "-", "Back to Main Menu");
            int selected;
            IScreen next;
            do
            {
                switch (selected = m.Start(5, 8))
                {
                    case 0:
                        if ((next = HotSeat()) != null)
                        {
                            m.Clear();
                            return next;
                        }
                        break;
                    case 1:
                        if ((next = DirectIP()) != null)
                        {
                            m.Clear();
                            return next;
                        }
                        break;
                }

            } while (selected != 4);

            return new Main();
        }
Example #2
0
 public static string AskInput(string name, int length, int x, int y)
 {
     OptionTextbox t = new OptionTextbox(name, length);
     Menu m = new Menu("", t, new Option("-"), new Option("Create game", 0), new Option("Back", 1));
     switch (m.Start(x, y))
     {
         case 0:
             m.Clear();
             return t.Text;
         default:
             m.Clear();
             return null;
     }
 }
Example #3
0
 public IScreen Start()
 {
     Game.Network.Header.Add(new NetworkLibrary.Utilities.Header("prog", "shooter"));
     Game.Network.OnWarningOccured += new NetworkLibrary.Exceptions.delegateWarning(Network_OnWarningOccured);
     Game.Network.OnNotificationOccured += new NetworkLibrary.Exceptions.delegateNotification(Network_OnNotificationOccured);
     string message;
     if (_host)
         message = "Initialising host and starting\nto listen on port 33060.";
     else
         message = "Initialising client and connecting\nto ip " + _ip + " on port 33060.";
     Menu m = new Menu(Label.CreateLabelArrayFromText(message));
     m.Start(-1, 3, false);
     try
     {
         if (_host)
             (Game.Network as ConnectionHost).StartBroadcasting();
         else
             (Game.Network as ConnectionClient).Connect(_ip, 33060);
         m.Clear();
         return RegisterDefault(_host);
     }
     catch (Exception e)
     {
         string err;
         if (_host)
             err = "Error while starting host on port 33060:\n\n   ";
         else
             err = "Error while connecting to " + _ip + " on port 33060:\n\n   ";
         m = new Menu(Label.CreateLabelArrayFromText(err + e.Message));
         m.Start(-1, 4);
         m.Clear();
         return new MultiPlayer();
     }
 }
Example #4
0
        protected void Config()
        {
            Menu m = new Menu("", "Player 1", "Player 2", "Player 3", "Player 4", "-", "Back");
            int selected;
            do
            {
                selected = m.Start(26, 7);
                if (selected < 5)
                    ConfigPlayer(selected);

            } while (selected != 5);
            m.Clear();
        }
Example #5
0
        public IScreen Start()
        {
            Menu m = new Menu("Options", "Config", "-", "Back to Main Menu");
            int selected;
            do
            {
                switch (selected = m.Start(3, 9))
                {
                    case 0:
                        Config();
                        break;
                }

            } while (selected != 2);
            m.Clear();
            return new Main();
        }
Example #6
0
 public IScreen Start()
 {
     Menu m = new Menu("Main Menu", "Single Player", "Multiplayer", "-", "Options", "-", "Exit");
     int selected = m.Start(-1, 5);
     m.Clear();
     switch (selected)
     {
         case 0:
             return new SinglePlayer();
         case 1:
             return new MultiPlayer();
         case 3:
             return new Options();
         default:
             return null;
     }
 }
Example #7
0
 private IScreen DirectIP()
 {
     Menu m = new Menu("", "Host a game", "Join a game", "-", "Back");
     int selected = m.Start(35, 7);
     if (selected == 3)
     {
         m.Clear();
         return null;
     }
     string name = CommonOptions.AskInput("Name", 12, 35, 7);
     if (string.IsNullOrEmpty(name))
         return DirectIP();
     if (selected == 0)
         return InitialiseNetGame(name, null);
     else
     {
         string ip = CommonOptions.AskInput("Ip", 15, 35, 7);
         if (string.IsNullOrEmpty(ip))
             return DirectIP();
         return InitialiseNetGame(name, ip);
     }
 }
Example #8
0
        public IScreen Start()
        {
            if (Game.Network != null)
                Game.Network.RegisterEvent((int)PacketCode.ClearBullet, ClearBullet);

            Console.Clear();

            while (Console.KeyAvailable)
                Console.ReadKey(true);
            _game.InitialiseGame();
            int numPlayers = _game.NumberOfPlayers;
            if (_game.InStoryMode)
            {
                Menu m;
                if (_game.StoryLevel == 0)
                {
                    m = new Menu("Tutorial", Label.CreateLabelArrayFromText(
                        "\nFirst time player? Here is some info you might\nwant to know:\n\n" +
                        "Weapons:\n  p = Pistol (Ammo: 7, Speed: slow, Damage: 15hp)\n" +
                        "  m = Machine gun (Ammo: 50, Speed: fast, Damage: 5hp)\n" +
                        "Other:\n  D = Door\n  X = Locked door, need a key to open\n  k = Key, need to open locked doors\n\n  e = Enemies, shoot them\n"));
                    m.Start(-1, 5);
                    m.Clear();
                }
                _game.Board.ParseMapText();
                m = new Menu(Label.CreateLabelArrayFromText("\n" + _game.Board.Map.MapText));
                m.Start(-1, 3);
                m.Clear();
            }
            Console.CursorVisible = false;
            _game.Board.DrawBase();
            int alive = 0;
            do
            {
                if (Game.Network != null && !Game.Network.NetworkConnection.Connected)
                    return new Main();
                if (!_game.InCutSchene)
                    _game.Board.Update();
                _game.Board.Draw();
                System.Threading.Thread.Sleep(10);
                alive = 0;
                for (int i = 0; i < _game.Players.Length; i++)
                    if (_game.Players[i] != null)
                        if (_game.Players[i].Unit.Health > 0)
                            alive++;
                if (alive == 1 && numPlayers > 1 && !_game.Board.Coop)
                    _game.Won = true;
            } while (!Game.KeyIsDown((int)System.Windows.Forms.Keys.Escape) && !_game.Won && alive > 0);
            while (Console.KeyAvailable)
                Console.ReadKey(true);
            if (alive == 0)
            {
                Menu m = new Menu("Game Over", Label.CreateLabelArrayFromText(
                        "You lost the game. "));
                m.Start(-1, 5);
                System.Threading.Thread.Sleep(1000);
                m.Clear();
            }
            if (_game.Won)
            {
                _game.Won = false;
                if (_game.InStoryMode)
                {
                    if (_game.LoadStoryMode())
                    {
                        Menu m = new Menu("You won", Label.CreateLabelArrayFromText(
                            "Congratulations, you just won the game!"));
                        m.Start(-1, 5);
                        System.Threading.Thread.Sleep(2000);
                        m.Clear();
                    }
                    else
                    {
                        _game.Board = null;
                        return new Shop(_game);
                    }
                }
                else
                {
                    if (_game.Board.Coop)
                    {
                        Menu m = new Menu("You won", Label.CreateLabelArrayFromText(
                            "Congratulations, you people won the level!"));
                        m.Start(-1, 5);
                        System.Threading.Thread.Sleep(2000);
                        m.Clear();
                    }
                    else
                    {
                        string name = "";
                        for (int i = 0; i < _game.Players.Length; i++)
                            if (_game.Players[i] != null)
                                if (_game.Players[i].Unit.Health > 0)
                                {
                                    name = _game.Players[i].Name;
                                    break;
                                }
                        Menu m = new Menu(name + " won", Label.CreateLabelArrayFromText(
                            "Congratulations " + name + ", you are the winner!"));
                        m.Start(-1, 5);
                        System.Threading.Thread.Sleep(2000);
                        m.Clear();
                    }
                }
            }
            return new Main();
        }
Example #9
0
        public static Map SelectMap(int x, int players)
        {
            int offset = 0, option = 0;
            string savePath = "maps";
            if (!Directory.Exists(savePath))
                return null;

            IOption[] options = new IOption[14];
            if (_maps == null)
                _maps = new List<FileInfo>();
            else
                _maps.Clear();
            _maps.AddRange(new DirectoryInfo(savePath).GetFiles("*.map"));
            for (int i = 0; i < _maps.Count; i++)
                using (StreamReader r = new StreamReader(_maps[i].OpenRead()))
                {
                    string raw = r.ReadToEnd();
                    if (players == 1 && raw.IndexOf('E') < 0)
                    {
                        _maps.RemoveAt(i);
                        i--;
                    }
                    else if (raw.IndexOf(players.ToString()) < 0)
                    {
                        _maps.RemoveAt(i);
                        i--;
                    }
                }
            OptionDual d = new OptionDual();
            d.FirstValue = -2;
            d.SecondValue = -1;
            Menu m;
            options[0] = d;
            options[1] = new Option("-");
            options[12] = new Option("-");
            options[13] = new Option("  Back  ", _maps.Count);
            do
            {
                if (option == -2)
                    offset--;
                else if (option == -1)
                    offset++;

                if (offset > 0)
                    d.FirstButton = "Previous";
                else
                    d.FirstButton = "-";
                if (offset < _maps.Count / 10)
                    d.SecondButton = "Next";
                else
                    d.SecondButton = "-";

                for (int i = 0; i < 10 && (i + offset * 10) < _maps.Count; i++)
                {
                    string name = _maps[i + offset * 10].Name.Replace(".map", "");
                    if (players > 1)
                    {
                        using (StreamReader r = new StreamReader(_maps[i + offset * 10].OpenRead()))
                        {
                            string raw = r.ReadToEnd();
                            if (raw.IndexOf('E') >= 0)
                                name += " (co-op)";
                            else
                                name += " (vs)";
                        }
                    }
                    options[i + 2] = new Option(name, i + offset * 10);
                }

                if (offset == _maps.Count / 10)
                    for (int i = (_maps.Count % 10); i < 10; i++)
                        options[i + 2] = new Option("-", 0);

                m = new Menu(options);
                m.Clear();
            } while ((option = m.Start(x, 3)) < 0);
            m.Clear();
            if (option == _maps.Count)
                return null;
            else
                return new Map(_maps[option].FullName);
        }
Example #10
0
        public static IScreen StartNewGame(bool story, int players, Map map)
        {
            OptionTextbox[] textboxes = new OptionTextbox[players];
            for (int i = 0; i < players; i++)
                textboxes[i] = new OptionTextbox("Player " + (i + 1), 12);

            Menu m = new Menu(new Option("-"), new Option("Start Game", 0), new Option("Back", 1));
            m.Options.InsertRange(0, textboxes);
            switch (m.Start(35, 7))
            {
                case 0:
                    for (int i = 0; i < players; i++)
                        if (string.IsNullOrEmpty(textboxes[i].Text))
                        {
                            m.Clear();
                            Menu msub = new Menu(Label.CreateLabelArrayFromText(
            "\nYou have to specify a name in\norder to start a new game."));
                            msub.Start(-1, 20);
                            msub.Clear();
                            return StartNewGame(story, players, map);
                        }
                    Game g = new Game();
                    for (int i = 0; i < players; i++)
                    {
                        Player p = new Player(i);
                        p.Name = textboxes[i].Text;
                        g.Players[i] = p;
                    }
                    for (int i = players; i < 4; i++)
                        g.Players[i] = null;

                    if (story)
                        g.LoadStoryMode();
                    else
                        g.Map = map;
                    g.CustomGame = !story;

                    if (Game.Network != null)
                    {
                        Game.Network.Dispose();
                        Game.Network = null;
                    }

                    return new Shop(g);

            }
            m.Clear();
            return null;
        }
Example #11
0
 protected void ConfigPlayer(int index)
 {
     OptionKey[] keys = new OptionKey[] { new OptionKey("Up"),
                                          new OptionKey("Down"),
                                          new OptionKey("Left"),
                                          new OptionKey("Right"),
                                          new OptionKey("Shoot"),
                                          new OptionKey("Change")};
     switch (index)
     {
         case 0:
             keys[0].Key = Properties.Settings.Default.player1_up;
             keys[1].Key = Properties.Settings.Default.player1_down;
             keys[2].Key = Properties.Settings.Default.player1_left;
             keys[3].Key = Properties.Settings.Default.player1_right;
             keys[4].Key = Properties.Settings.Default.player1_action;
             keys[5].Key = Properties.Settings.Default.player1_interact;
             break;
         case 1:
             keys[0].Key = Properties.Settings.Default.player2_up;
             keys[1].Key = Properties.Settings.Default.player2_down;
             keys[2].Key = Properties.Settings.Default.player2_left;
             keys[3].Key = Properties.Settings.Default.player2_right;
             keys[4].Key = Properties.Settings.Default.player2_action;
             keys[5].Key = Properties.Settings.Default.player2_interact;
             break;
         case 2:
             keys[0].Key = Properties.Settings.Default.player3_up;
             keys[1].Key = Properties.Settings.Default.player3_down;
             keys[2].Key = Properties.Settings.Default.player3_left;
             keys[3].Key = Properties.Settings.Default.player3_right;
             keys[4].Key = Properties.Settings.Default.player3_action;
             keys[5].Key = Properties.Settings.Default.player3_interact;
             break;
         default:
             keys[0].Key = Properties.Settings.Default.player4_up;
             keys[1].Key = Properties.Settings.Default.player4_down;
             keys[2].Key = Properties.Settings.Default.player4_left;
             keys[3].Key = Properties.Settings.Default.player4_right;
             keys[4].Key = Properties.Settings.Default.player4_action;
             keys[5].Key = Properties.Settings.Default.player4_interact;
             break;
     }
     for (int i = 0; i < 6; i++)
         keys[i].UpdateKeyName();
     Menu m = new Menu(keys[0], keys[1], keys[2], keys[3], keys[4], keys[5], new Option("-"), new Option("Back", 0));
     m.Start(40, 6);
     switch (index)
     {
         case 0:
             Properties.Settings.Default.player1_up = keys[0].Key;
             Properties.Settings.Default.player1_down = keys[1].Key;
             Properties.Settings.Default.player1_left = keys[2].Key;
             Properties.Settings.Default.player1_right = keys[3].Key;
             Properties.Settings.Default.player1_action = keys[4].Key;
             Properties.Settings.Default.player1_interact = keys[5].Key;
             break;
         case 1:
             Properties.Settings.Default.player2_up = keys[0].Key;
             Properties.Settings.Default.player2_down = keys[1].Key;
             Properties.Settings.Default.player2_left = keys[2].Key;
             Properties.Settings.Default.player2_right = keys[3].Key;
             Properties.Settings.Default.player2_action = keys[4].Key;
             Properties.Settings.Default.player2_interact = keys[5].Key;
             break;
         case 2:
             Properties.Settings.Default.player3_up = keys[0].Key;
             Properties.Settings.Default.player3_down = keys[1].Key;
             Properties.Settings.Default.player3_left = keys[2].Key;
             Properties.Settings.Default.player3_right = keys[3].Key;
             Properties.Settings.Default.player3_action = keys[4].Key;
             Properties.Settings.Default.player3_interact = keys[5].Key;
             break;
         default:
             Properties.Settings.Default.player4_up = keys[0].Key;
             Properties.Settings.Default.player4_down = keys[1].Key;
             Properties.Settings.Default.player4_left = keys[2].Key;
             Properties.Settings.Default.player4_right = keys[3].Key;
             Properties.Settings.Default.player4_action = keys[4].Key;
             Properties.Settings.Default.player4_interact = keys[5].Key;
             break;
     }
     Properties.Settings.Default.Save();
     m.Clear();
 }
Example #12
0
 private IScreen InitialiseNetGame(string name, string ip)
 {
     Menu m = new Menu(Label.CreateLabelArrayFromText("Initialising the network library and\nloading network plugins."));
     m.Start(32, 7, false);
     try
     {
         IScreen s;
         if (string.IsNullOrEmpty(ip))
             s = new NetGame(name);
         else
             s = new NetGame(name, ip);
         m.Clear();
         return s;
     }
     catch (Exception e)
     {
         m = new Menu(Label.CreateLabelArrayFromText("Error while initialising network library:\n   " + e.Message));
         m.Start(32, 7);
         m.Clear();
         return null;
     }
 }
Example #13
0
 private IScreen HotSeat()
 {
     OptionNumeric num = new OptionNumeric("Number of Players", 2, 2, 4);
     Menu m = new Menu("", num, new Option("-"), new Option("Create Game", 0), new Option("Back", 1));
     switch (m.Start(35, 7))
     {
         case 0:
             m.Clear();
             return SelectMap(num.Value);
         default:
             m.Clear();
             return null;
     }
 }
Example #14
0
        protected IScreen RegisterDefault(bool host)
        {
            Game.Network.NetworkDataHandler.RegisterTypeFromAssembly(System.Reflection.Assembly.GetCallingAssembly());
            Menu m;
            if (host)
            {
                m = new Menu(Label.CreateLabelArrayFromText("Registering default types and initialising lobby."));
                m.Start(-1, 3, false);
                Game game = new Game();
                Player p = new Player(0);
                p.Name = _name;
                game.Players[0] = p;
                game.CurrentPlayer = p;
                Game.Network.NetworkDataHandler.RegisterRecursive(game);
                m.Clear();
                return new Lobby(game);
            }
            else
            {
                m = new Menu(Label.CreateLabelArrayFromText("Connected to host. retreaving game data and initialising lobby."));
                m.Start(-1, 3, false)
                    ;
                Game game = Game.Network.NetworkDataHandler.RequestInstance<Game>();
                m.Clear();
                int index = 0;
                for (; index < game.Players.Length; index++)
                {
                    if (game.Players[index] == null)
                        break;
                }

                if (index == 4)
                    throw new Exception("Connection was allowed but the game was full");
                Player p = new Player(index);
                p.Controls = new PlayerControls(0);
                p.Name = _name;
                game.Players[index] = p;
                game.CurrentPlayer = p;
                Game.Network.NetworkDataHandler.RegisterRecursive(p);
                Game.Network.SendEvent((int)PacketCode.NewPlayer, p);
                return new Lobby(game);
            }
        }