Example #1
0
        static void Main(string[] args)
        {
            var numberOfTimesToPlay = ConsoleUtils.PromptForValue<int>("How many games do you want to play?");
            WarGame game = new WarGame(
                new WarPlayer() { Name = "Player 1" },
                new WarPlayer() { Name = "Player 2" });

            Debug.Listeners.Add(new ConsoleTraceListener());
            try
            {
                for (int i = 1; i <= numberOfTimesToPlay; i++)
                {
                    do
                    {
                        game.AdvancePlay();
                        Debug.WriteLine(string.Empty);
                        if (game.GameState == WarGameState.GameOver)
                        {
                            Debug.WriteLine("Winner: " + game.Winner.Name);
                        }
                    } while (game.GameState != WarGameState.GameOver);

                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                Debug.WriteLine("Done");
                Console.ReadLine();
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            //CardDeck cardDeck = new CardDeck();
            //Console.WriteLine("Reading from textfile...");
            //Thread.Sleep(2000);
            //var deck = cardDeck.cardList;
            //foreach (var card in deck)
            //{
            //    Console.WriteLine(card);
            //}
            //Thread.Sleep(2000);
            //Console.WriteLine("--------------------");
            //Console.Clear(); Console.WriteLine("Shuffling deck..."); Console.WriteLine();
            //Thread.Sleep(2000);

            //cardDeck.Shuffel(new Random(), cardDeck.cardList);
            //foreach (var item in cardDeck.shuffledCardList)
            //{
            //    Console.WriteLine(item);
            //}



            Player  A           = new Player("Jonas");
            Player  B           = new Player("Valde");
            WarGame fiveHundred = new WarGame(A, B);



            fiveHundred.play();



            Console.ReadLine();
        }
Example #3
0
        static object LoadShape(MiniYaml yaml)
        {
            IHitShape ret;

            var shapeNode = yaml.Nodes.Find(n => n.Key == "Shape");
            var shape     = shapeNode != null ? shapeNode.Value.Value : string.Empty;

            if (!string.IsNullOrEmpty(shape))
            {
                ret = WarGame.CreateObject <IHitShape>(shape + "Shape");
                try
                {
                    FieldLoader.Load(ret, shapeNode.Value);
                }
                catch (YamlException e)
                {
                    throw new YamlException("HitShape {0}:{1}".F(shape, e.Message));
                }
            }
            else
            {
                ret = new CircleShape();
            }
            ret.Initialize();
            return(ret);
        }
Example #4
0
        public void CheckModVersion()
        {
            Action <DownloadDataCompletedEventArgs> onComplete = i =>
            {
                if (i.Error != null)
                {
                    return;
                }
                try
                {
                    var data = Encoding.UTF8.GetString(i.Result);

                    var status = ModVersionStatus.Latest;
                    switch (data)
                    {
                    case "outdated": status = ModVersionStatus.Outdated; break;

                    case "unknown": status = ModVersionStatus.Unknown; break;

                    case "playtest": status = ModVersionStatus.PlaytestAvailable; break;
                    }

                    WarGame.RunAfterTick(() => ModVersionStatus = status);
                }
                catch { }
            };

            var queryURL = VersionCheck + "?protocol={0}&engine={1}&mod={2}&version={3}".F(
                VersionCheckProtocol,
                Uri.EscapeUriString(WarGame.EngineVersion),
                Uri.EscapeUriString(WarGame.ModData.Manifest.Id),
                Uri.EscapeUriString(WarGame.ModData.Manifest.Metadata.Version));

            new Download(queryURL, _ => { }, onComplete);
        }
Example #5
0
        public LoadIngamePlayerOrObserverUILogic(Widget widget, World world)
        {
            var ingameRoot = widget.Get("INGAME_ROOT");
            var worldRoot  = widget.Get("WORLD_ROOT");

            var playerRoot = worldRoot.Get("PLAYER_ROOT");
            //if(world.LocalPlayer != null){

            //    WarGame.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
            //}
            //else{

            var playerWidgets = WarGame.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
            var sidebarTicker = playerWidgets.Get <LogicTickerWidget>("SIDEBAR_TICKER");


            //}

            world.GameOver += () =>
            {
                UI.CloseWindow();

                if (world.LocalPlayer != null)
                {
                    var scriptContext = world.WorldActor.TraitOrDefault <LuaScript>();
                    //var missionData = world.WorldActor.Info.TraitInfoOrDefault<>()
                }
            };
        }
Example #6
0
        void StartSkirmishGame()
        {
            var map = WarGame.ModData.MapCache.ChooseInitialMap(WarGame.Settings.Server.Map, WarGame.CosmeticRandom);

            WarGame.Settings.Server.Map = map;

            ConnectionLogic.Connect(IPAddress.Loopback.ToString(),
                                    WarGame.CreateLocalServer(map), "", OpenSkirmishLobbyPanel, () => { WarGame.CloseServer(); SwitchMenu(MenuType.Main); });
        }
Example #7
0
 void OpenSkirmishLobbyPanel()
 {
     SwitchMenu(MenuType.None);
     WarGame.OpenWindow("SERVER_LOBBY", new WidgetArgs
     {
         { "onExit", () => { WarGame.Disconnect(); SwitchMenu(MenuType.Singleplayer); } },
         { "onStart", RemoveShellmapUI },
         { "skirmishMode", true }
     });
 }
Example #8
0
        void UpdateCurrentMap()
        {
            var uid = orderManager.LobbyInfo.GlobalSettings.Map;

            if (map.Uid == uid)
            {
                return;
            }

            map = modData.MapCache[uid];
            if (map.Status == MapStatus.Available)
            {
                // Maps need to be validated and pre-loaded before they can be accessed
                var currentMap = map;
                new Task(() =>
                {
                    // Force map rules to be loaded on this background thread
                    currentMap.PreloadRules();

                    WarGame.RunAfterTick(() =>
                    {
                        // Map may have changed in the meantime
                        if (currentMap != map)
                        {
                            return;
                        }

                        // Tell the server that we have the map
                        if (!currentMap.InvalidCustomRules)
                        {
                            orderManager.IssueOrder(Order.Command("state {0}".F(Session.ClientState.NotReady)));
                        }


                        if (addBotOnMapLoad)
                        {
                            var slot = orderManager.LobbyInfo.FirstEmptySlot();
                            var bot  = currentMap.Rules.Actors["player"].TraitInfos <IBotInfo>().Select(t => t.Type).FirstOrDefault();

                            var botController = orderManager.LobbyInfo.Clients.FirstOrDefault(c => c.IsAdmin);

                            if (slot != null && bot != null)
                            {
                                orderManager.IssueOrder(Order.Command("slot_bot {0} {1} {2}".F(slot, botController.Index, bot)));
                            }


                            addBotOnMapLoad = false;
                        }
                    });
                }).Start();
            }
        }
Example #9
0
        public void PlayerBattle_FailesWithoutCards()
        {
            WarPlayer[] players = new WarPlayer[] {
                new WarPlayer()
                {
                    Name = "Player 1"
                }
            };

            var target = new WarGame(players);

            target.PlayerBattle(players[0]);
            Assert.Fail();
        }
Example #10
0
        void IWorldLoaded.WorldLoaded(World w, WorldRenderer render)
        {
            if (info.ClearRoot)
            {
                UI.ResetAll();
            }


            //WarGame.LoadWidget(w,info.IngameRoot,UI.Root,new WidgetArgs());

            var widget = w.Type == WorldT.Shellmap ? info.ShellmapRoot : w.Type == WorldT.Editor ? info.EditorRoot : info.IngameRoot;

            WarGame.LoadWidget(w, widget, UI.Root, new WidgetArgs());
        }
Example #11
0
        public static void Connect(string host, int port, string password, Action onConnect, Action onAbort)
        {
            WarGame.JoinServer(host, port, password);

            Action <string> onRetry = newPassword => Connect(host, port, newPassword, onConnect, onAbort);

            UI.OpenWindow("CONNECTING_PANEL", new WidgetArgs()
            {
                { "host", host },
                { "port", port },
                { "onConnect", onConnect },
                { "onAbort", onAbort },
                { "onRetry", onRetry },
            });
        }
Example #12
0
        public void SelectGame()
        {
            string[] options = { "Blackjack", "Durak", "Rummy", "War" };
            bool     loop    = true;

            Console.WriteLine(" ");
            Console.WriteLine("\t\t\t\t\tWelcome to Card Game Simulator");
            Console.WriteLine("\t\t\t\t\t------------------------------");
            Console.WriteLine(" ");

            do
            {
                Console.WriteLine("What game would you like to play?");
                Console.WriteLine("---------------------------------");
                int menuSelection = CIO.PromptForMenuSelection(options, true);
                switch (menuSelection)
                {
                case 1:
                    Blackjack.BlackjackLogic run = new Blackjack.BlackjackLogic();
                    run.RunGame();
                    break;

                case 2:
                    Durak.GameRunner play = new Durak.GameRunner();
                    play.Run();
                    break;

                case 3:
                    //run rummy

                    Rummy.RummyDriver rumDriver = new Rummy.RummyDriver();
                    rumDriver.Drive();

                    break;

                case 4:
                    //run war
                    WarGame war = new WarGame();
                    war.Run();
                    break;

                case 0:
                    Console.WriteLine("Thanks for playing!");
                    loop = false;
                    break;
                }
            } while (loop);
        }
Example #13
0
        public AlienBuilding(WarGame game, Vector3 _position, MainScene _scene)
            : base(game, _scene, _position)
        {
            gameObjectModel = game.alienBaseModel;
            scale = new Vector3(0.5f, 0.5f, 0.5f);
            maxForce = 0;
            maxSpeed = 0;
            mass = 1000;
            currentSB = SBNames.None;
            currentWorld = Matrix.CreateScale(scale) * Matrix.CreateWorld(Position, lastNonZeroVelocity, Vector3.Up);

            boundingBox = new Bbox(this, game, scene);
            scene.SceneComponents.Add(boundingBox);

            boundingBox.RecalculateBoundingBox();
        }
Example #14
0
        void ConnectionStateChanged(OrderManager om)
        {
            if (om.Connection.ConnectionState == ConnectionState.NotConnected)
            {
                UI.CloseWindow();

                Action onConnect = () =>
                {
                    WarGame.OpenWindow("SERVER_LOBBY", new WidgetArgs()
                    {
                        { "onExit", onExit },
                        { "onStart", onStart },
                        { "skirmishMode", false }
                    });
                };
            }
        }
Example #15
0
        public IDisposable Reserve(Actor self, Actor forActor, Aircraft forAircraft)
        {
            if (reservedForAircraft != null && reservedForAircraft.MayYieldReservation)
            {
                reservedForAircraft.UnReserve();
            }

            reservedFor         = forActor;
            reservedForAircraft = forAircraft;

            return(new DisposableAction(() => { reservedFor = null; reservedForAircraft = null; }, () => WarGame.RunAfterTick(() =>
            {
                if (WarGame.IsCurrentWorld(self.World))
                {
                    throw new InvalidOperationException("Attempted to finalize  an undisposed DisposableAction.{0} ({1}) reserved {2} ({3}) "
                                                        .F(forActor.Info.Name, forActor.ActorID, self.Info.Name, self.ActorID));
                }
            })));
        }
Example #16
0
        public void StartGame(Arguments args)
        {
            Launch = new LaunchArguments(args);
            if (Launch.Benchmark)
            {
            }

            var connect = Launch.GetConnectAddress();

            if (!string.IsNullOrEmpty(connect))
            {
            }

            //Load a replay directly
            if (!string.IsNullOrEmpty(Launch.Replay))
            {
            }
            WarGame.LoadShellMap();
        }
Example #17
0
        public void PlayerPickWarAttackTwiceTest()
        {
            WarPlayer[] players = new WarPlayer[] {
                new WarPlayer()
                {
                    Name = "Player 1"
                }
            };

            players[0].Cards.Add(Card.TwoOfDiamonds);
            players[0].Cards.Add(Card.ThreeOfDiamonds);
            players[0].Cards.Add(Card.FourOfDiamonds);

            WarGame target = new WarGame(players);

            target.PlayerDeclareWar(players[0]);
            target.PlayerPickWarAttack(players[0], 1);
            target.PlayerPickWarAttack(players[0], 1);

            Assert.Fail();
        }
Example #18
0
        static void Main(string[] args)
        {
            var     numberOfTimesToPlay = ConsoleUtils.PromptForValue <int>("How many games do you want to play?");
            WarGame game = new WarGame(
                new WarPlayer()
            {
                Name = "Player 1"
            },
                new WarPlayer()
            {
                Name = "Player 2"
            });

            Debug.Listeners.Add(new ConsoleTraceListener());
            try
            {
                for (int i = 1; i <= numberOfTimesToPlay; i++)
                {
                    do
                    {
                        game.AdvancePlay();
                        Debug.WriteLine(string.Empty);
                        if (game.GameState == WarGameState.GameOver)
                        {
                            Debug.WriteLine("Winner: " + game.Winner.Name);
                        }
                    } while (game.GameState != WarGameState.GameOver);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                Debug.WriteLine("Done");
                Console.ReadLine();
            }
        }
Example #19
0
        /// <summary>
        /// Processes the order.
        /// </summary>
        /// <param name="orderManager">Order manager.</param>
        /// <param name="world">World.</param>
        /// <param name="clientId">Client identifier.</param>
        /// <param name="order">Order.</param>
        internal static void ProcessOrder(OrderManager orderManager, World world, int clientId, Order order)
        {
            if (world != null)
            {
                if (!world.WorldActor.TraitsImplementing <IValidateOrder>().All(vo => vo.OrderValidation(orderManager, world, clientId, order)))
                {
                    return;
                }
            }

            switch (order.OrderString)
            {
            case "Message":
            {
                break;
            }

            case "Disconnected":
            {
                var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                if (client != null)
                {
                    client.State = Session.ClientState.Disconnected;
                }
                break;
            }

            case "StartGame":
            {
                if (WarGame.ModData.MapCache[orderManager.LobbyInfo.GlobalSettings.Map].Status != MapStatus.Available)
                {
                    WarGame.Disconnect();
                    WarGame.LoadShellMap();
                    break;
                }
                WarGame.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, WorldT.Regular);

                break;
            }

            case "PauseGame":
            {
                var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                if (client != null)
                {
                    var pause = order.TargetString == "Pause";
                    if (orderManager.World.Paused != pause && world != null && world.LobbyInfo.NonBotClients.Count() > 1)
                    {
                    }
                    orderManager.World.Paused          = pause;
                    orderManager.World.PredictedPaused = pause;
                }

                break;
            }

            case "HandshakeRequest":
            {
                var mod     = WarGame.ModData.Manifest;
                var request = HandshakeRequest.Deserialize(order.TargetString);

                WarGame.Settings.Player.Name = Settings.SanitizedPlayerName(WarGame.Settings.Player.Name);

                var info = new Session.Client()
                {
                    Name           = WarGame.Settings.Player.Name,
                    PreferredColor = WarGame.Settings.Player.Color,
                    Color          = WarGame.Settings.Player.Color,
                    Faction        = "Random",
                    SpawnPoint     = 0,
                    Team           = 0,
                    State          = Session.ClientState.Invalid
                };

                var response = new HandshakeResponse()
                {
                    Client   = info,
                    Mod      = mod.Id,
                    Version  = mod.Metadata.Version,
                    Password = orderManager.Password,
                };

                orderManager.IssueOrder(Order.HandshakeResponse(response.Serialize()));

                break;
            }

            case "ServerError":
            {
                orderManager.ServerError          = order.TargetString;
                orderManager.AuthenticationFailed = false;
                break;
            }

            case "AuthenticationError": {
                //
                orderManager.ServerError          = order.TargetString;
                orderManager.AuthenticationFailed = false;
                break;
            }

            case "SyncInfo":
            {
                orderManager.LobbyInfo = Session.Deserialize(order.TargetString);
                SetOrderLag(orderManager);
                WarGame.SyncLobbyInfo();
                break;
            }

            case "SyncClientPings":
            {
                var pings = new List <Session.ClientPing>();
                var nodes = MiniYaml.FromString(order.TargetString);
                foreach (var node in nodes)
                {
                    var strings = node.Key.Split('@');
                    if (strings[0] == "ClientPing")
                    {
                        pings.Add(Session.ClientPing.Deserialize(node.Value));
                    }
                }

                orderManager.LobbyInfo.ClientPings = pings;
                break;
            }

            case "SyncLobbyGlobalSettings":
            {
                var nodes = MiniYaml.FromString(order.TargetString);
                foreach (var node in nodes)
                {
                    var strings = node.Key.Split('@');
                    if (strings[0] == "GlobalSettings")
                    {
                        orderManager.LobbyInfo.GlobalSettings = Session.Global.Deserialize(node.Value);
                    }
                }
                SetOrderLag(orderManager);
                WarGame.SyncLobbyInfo();
                break;
            }

            case "SyncLobbyClients":
            {
                var clients = new List <Session.Client>();
                var nodes   = MiniYaml.FromString(order.TargetString);
                foreach (var node in nodes)
                {
                    var strings = node.Key.Split('@');
                    if (strings[0] == "Client")
                    {
                        clients.Add(Session.Client.Deserialize(node.Value));
                    }
                }

                orderManager.LobbyInfo.Clients = clients;
                WarGame.SyncLobbyInfo();
                break;
            }

            case "SyncLobbySlots":
            {
                var slots = new Dictionary <string, Session.Slot>();
                var nodes = MiniYaml.FromString(order.TargetString);
                foreach (var node in nodes)
                {
                    var strings = node.Key.Split('@');
                    if (strings[0] == "Slot")
                    {
                        var slot = Session.Slot.Deserialize(node.Value);
                        slots.Add(slot.PlayerReference, slot);
                    }
                }

                orderManager.LobbyInfo.Slots = slots;
                WarGame.SyncLobbyInfo();
                break;
            }

            case "Ping":
            {
                orderManager.IssueOrder(Order.Pong(order.TargetString));
                break;
            }

            default:
            {
                if (!order.IsImmediate)
                {
                    var self = order.Subject;
                    if (!self.IsDead)
                    {
                        foreach (var t in self.TraitsImplementing <IResolveOrder>())
                        {
                            t.ResolveOrder(self, order);
                        }
                    }
                }
                break;
            }
            }
        }
Example #20
0
 static void Main(string[] args)
 {
     WarGame warGame = new WarGame();
 }