Exemple #1
0
        /// <summary>
        /// Logs the specified game to the destinations specified in the config file
        /// </summary>
        /// <param name="game">The gamedata to log</param>
        /// <param name="gameID">ASGS's ID of this game</param>
        public static void LogGame(GameData game, int gameID)
        {
            GameDataset Data    = game.GetDataset();
            string      DataXml = Data.GetXml();

            XmlLogger.LogGame(game, gameID);
        }
        public void TestSaveGameDataWithGameXmlFiles()
        {
            Console.WriteLine("Processing: " + ConfigurationManager.AppSettings["gameTestDataDirectory"]);

            // Increase this to simulate multiple game file loads. Takes a long time for each load.
            for (int i = 0; i < 1; i++)
            {
                Console.WriteLine("Creating TAG object.");

                Allegiance.CommunitySecuritySystem.Server.Tag tag = new Allegiance.CommunitySecuritySystem.Server.Tag();

                using (DataAccess.CSSDataContext db = new Allegiance.CommunitySecuritySystem.DataAccess.CSSDataContext())
                {
                    Console.WriteLine("Looking for files.");

                    foreach (string file in Directory.GetFiles(ConfigurationManager.AppSettings["gameTestDataDirectory"], ConfigurationManager.AppSettings["gameTestDataFileFilter"]))
                    {
                        Console.WriteLine("Loading: " + file);

                        string      gameData    = File.ReadAllText(file);
                        GameDataset gameDataset = new GameDataset();
                        gameDataset.ReadXml(new StringReader(gameData), System.Data.XmlReadMode.IgnoreSchema);

                        foreach (GameDataset.TeamRow team in gameDataset.Team)
                        {
                            var alias = DataAccess.Alias.GetAliasByCallsign(db, team.Commander);

                            if (alias == null)
                            {
                                CreateUser(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, team.Commander), "test12", "*****@*****.**", 10);
                            }
                        }

                        foreach (GameDataset.TeamMemberRow teamMember in gameDataset.TeamMember)
                        {
                            var alias = DataAccess.Alias.GetAliasByCallsign(db, teamMember.Callsign);

                            if (alias == null)
                            {
                                CreateUser(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, teamMember.Callsign), "test12", "*****@*****.**", 20);
                            }
                        }


                        string message;
                        int    result = tag.SaveGameData(gameData, false, out message);

                        Assert.IsTrue(result > 0, message);
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Full Constructor
        /// </summary>
        /// <param name="gameName">The name of this game as listed in the Lobby</param>
        /// <param name="coreFile">The name of the corefile in use</param>
        /// <param name="mapName">The name of the map in play</param>
        /// <param name="squadGame">Specifies that this is a squad game</param>
        /// <param name="conquest">Specifies that this game has a Conquest win condition</param>
        /// <param name="deathmatch">Specifies that this game has a Deathmatch win condition</param>
        /// <param name="deathmatchGoal">Specifies the goal for this deathmatch game</param>
        /// <param name="friendlyFire">Specifies that players can damage their own team's players and  bases</param>
        /// <param name="revealMap">Specifies that the map was revealed at the start of the game</param>
        /// <param name="allowDevelopment">Specifies that new technology can be researched</param>
        /// <param name="allowShipyards">Specifies that Shipyards can be purchased</param>
        /// <param name="allowDefections">Specifies that players can change teams</param>
        /// <param name="InvulnerableStations">Specifies that bases can never be destroyed</param>
        /// <param name="statsCount">Specifies whether or not stats counted for this game</param>
        /// <param name="maxImbalance">The maximum team player imbalance that will be enforced</param>
        /// <param name="startingMoney">A modifier for the amount of money given to teams at the start</param>
        /// <param name="totalMoney">A modifier for the total amount of money available on the map</param>
        /// <param name="resources">The resources setting, detailing which techrocks are available and where</param>
        /// <param name="startTime">The time this game begun</param>
        /// <param name="endTime">The time this game ended</param>
        public GameData(string gameName, string coreFile, string mapName,
                        bool squadGame, bool conquest, bool deathmatch,
                        int deathmatchGoal, bool friendlyFire,
                        bool revealMap, bool allowDevelopment,
                        bool allowShipyards, bool allowDefections,
                        bool invulnerableStations, bool statsCount, int maxImbalance,
                        float startingMoney, float totalMoney,
                        int resources, DateTime startTime, DateTime endTime)
        {
            _gameDataset = new GameDataset();

            Initialize(gameName, coreFile, mapName, squadGame, conquest, deathmatch, deathmatchGoal, friendlyFire, revealMap,
                       allowDevelopment, allowShipyards, allowDefections, invulnerableStations, statsCount, maxImbalance,
                       startingMoney, totalMoney, resources, startTime, endTime);
        }
Exemple #4
0
        /// <summary>
        /// Posts the specified game to ASGS, and logs it
        /// </summary>
        /// <param name="data">The data to post</param>
        public static void PostGame(object data)
        {
            // Unpackage and prepare data
            GameData    Data          = (GameData)data;
            GameDataset Set           = Data.GetDataset();
            string      Xml           = Set.GetXml();
            string      CompressedXml = Compression.Compress(Xml);

            TagTrace.WriteLine(TraceLevel.Verbose, "Game data ready to post. Sending to stats server...");
            TagTrace.WriteLine(TraceLevel.Verbose, "Use CSS: " + CssConnector.UseCss + ", CSS Url: " + CssConnector.CssUrl);

            // Post game to ASGS
            string PostMessage;
            int    GameID;

            if (CssConnector.UseCss == true)
            {
                GameID = CssConnector.PostGame(CompressedXml, out PostMessage);
            }
            else
            {
                GameID = AsgsConnector.PostGame(CompressedXml, out PostMessage);
            }

            TagTrace.WriteLine(TraceLevel.Info, "Game #{0} Posted: {1}", GameID, PostMessage);

            // Post message to all servers
            GameServer.SendChat(PostMessage);

            // Log games as configured
            XmlLogger.LogGame(Data, GameID);

            // Get rid of this GameData since we no longer need it
            Data.Dispose();
            TagTrace.WriteLine(TraceLevel.Verbose, "Game data disposed");

            // If no games are in progress...
            if (TagUpdate.IsAbleToUpdate())
            {
                TagTrace.WriteLine(TraceLevel.Verbose, "TAG is able to update. No games are in progress");
                // And an update is available...
                if (TagUpdate.UpdateAvailable())
                {
                    TagUpdate.InitiateUpdate();                         // Update!
                }
            }
        }
Exemple #5
0
        private GameDataset _gameDataset;                       // The dataset that holds this game's events

        /// <summary>
        /// Default Constructor
        /// </summary>
        public GameData()
        {
            _gameDataset = new GameDataset();

            this.Reset();
        }
        public void TestSaveGameDataWithGameXmlFiles()
        {
            Console.WriteLine("Processing: " + ConfigurationManager.AppSettings["gameTestDataDirectory"]);

            // Increase this to simulate multiple game file loads. Takes a long time for each load.
            for (int i = 0; i < 1; i++)
            {
                Console.WriteLine("Creating TAG object.");

                Allegiance.CommunitySecuritySystem.Server.Tag tag = new Allegiance.CommunitySecuritySystem.Server.Tag();

                using (DataAccess.CSSDataContext db = new Allegiance.CommunitySecuritySystem.DataAccess.CSSDataContext())
                {
                    Console.WriteLine("Looking for files.");

                    foreach (string file in Directory.GetFiles(ConfigurationManager.AppSettings["gameTestDataDirectory"], ConfigurationManager.AppSettings["gameTestDataFileFilter"]))
                    {
                        Console.WriteLine("Loading: " + file);

                        string gameData = File.ReadAllText(file);
                        GameDataset gameDataset = new GameDataset();
                        gameDataset.ReadXml(new StringReader(gameData), System.Data.XmlReadMode.IgnoreSchema);

                        foreach (GameDataset.TeamRow team in gameDataset.Team)
                        {
                            var alias = DataAccess.Alias.GetAliasByCallsign(db, team.Commander);

                            if (alias == null)
                                CreateUser(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, team.Commander), "test12", "*****@*****.**", 10);
                        }

                        foreach (GameDataset.TeamMemberRow teamMember in gameDataset.TeamMember)
                        {
                            var alias = DataAccess.Alias.GetAliasByCallsign(db, teamMember.Callsign);

                            if (alias == null)
                                CreateUser(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, teamMember.Callsign), "test12", "*****@*****.**", 20);
                        }

                        string message;
                        int result = tag.SaveGameData(gameData, false, out message);

                        Assert.IsTrue(result > 0, message);
                    }
                }
            }
        }