예제 #1
0
        public static GameMasterSettingsConfiguration LoadSettingsFromFile(string path)
        {
            GameMasterSettings settings = null;

            try
            {
                using (StreamReader reader = new StreamReader(path))
                {
                    var xmlReader  = XmlReader.Create(reader);
                    var serializer = new XmlSerializer(typeof(GameMasterSettings));
                    if (serializer.CanDeserialize(xmlReader))
                    {
                        settings = (GameMasterSettings)serializer.Deserialize(xmlReader);
                        var errors = Validator.ValidateSettings(new GameMasterSettingsConfiguration(settings));
                        if (!string.IsNullOrEmpty(errors))
                        {
                            ConsoleWriter.Error(Constants.ERRORS_WHILE_PARSING_XML);
                            ConsoleWriter.Show(errors);
                            return(null);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                ConsoleWriter.Error(Constants.UNEXPECTED_ERROR + e.Message);
                ConsoleWriter.Show(e.StackTrace);
            }
            return(new GameMasterSettingsConfiguration(settings));
        }
예제 #2
0
        public static void DoGame(GameMasterSettingsConfiguration settings, bool testing = false)
        {
            var GameController = new GameController(settings, testing);

            GameController.RegisterPlayers();
            GameController.HandleGame();
        }
예제 #3
0
 public GameMaster(GameMasterSettingsConfiguration settings)
 {
     State               = GameMasterState.RegisteringGame;
     random              = new Random();
     Players             = new List <Player.Player>();
     pieces              = new List <GameObjects.Piece>();
     exchangeRequestList = new List <ExchengeRequestContainer>();
     Settings            = settings;
     InitPieceAdder();
 }
예제 #4
0
        public static void AssignParameterValue(string option, string arg)
        {
            switch (option)
            {
            case "--address":
                serverIP = IPAddress.Parse(arg);
                break;

            case "--port":
                serverPort = Int32.Parse(arg);
                break;

            case "--conf":
                settings = LoadSettingsFromFile(arg);
                ConsoleWriter.Show("Loading settings from file: " + arg);
                var settingsErrors = settings == null ? null : Validator.ValidateSettings(settings);
                if (settings == null || (settingsErrors != null && settingsErrors != ""))
                {
                    ConsoleWriter.Error("Failed to load settings from file. Verify file and try again.\n Closing Agent.");
                    settings = LoadSettingsFromFile("Championship.xml");
                }
                break;
            }
        }
예제 #5
0
        public static string ValidateSettings(GameMasterSettingsConfiguration settings)
        {
            var gameDefinitions = settings.GameDefinition;
            var errors          = new StringBuilder();
            var message         = ValidateShamProbability(gameDefinitions.ShamProbability);

            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidatePiecesFrequency(gameDefinitions.PlacingNewPiecesFrequency);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidateInitialNumberOfPieces(gameDefinitions.InitialNumberOfPieces, gameDefinitions.TaskAreaLength, gameDefinitions.BoardWidth);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidateBoardWidth(gameDefinitions.BoardWidth, gameDefinitions.TaskAreaLength, gameDefinitions.NumberOfPlayersPerTeam);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidateTaskAreaLength(gameDefinitions.TaskAreaLength);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidateGoalAreaLength(gameDefinitions.GoalAreaLength);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidatePlayers(gameDefinitions.NumberOfPlayersPerTeam, gameDefinitions.TaskAreaLength, gameDefinitions.BoardWidth);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidateGameName(gameDefinitions.GameName);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidateGoals(gameDefinitions.Goals, gameDefinitions.GoalAreaLength, gameDefinitions.TaskAreaLength, gameDefinitions.BoardWidth);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            message = ValidateGameName(gameDefinitions.GameName);
            if (!string.IsNullOrEmpty(message))
            {
                errors.AppendLine(message);
            }

            return(errors.ToString());
        }
예제 #6
0
 public void InitGameMaster()
 {
     defaultSettings   = new GameMasterSettingsConfiguration(GameMasterSettings.GetDefaultGameMasterSettings());
     defaultGameMaster = new GameArea.GameMaster(defaultSettings);
     defaultGameMaster.InitBoard(defaultGameMaster.Settings.GameDefinition);
 }
 public GameObjectContainer(GameMasterSettingsConfiguration settings)
 {
     GameMaster = new GameArea.GameMaster(settings);
 }
예제 #8
0
 public static void SetDefaultParameters()
 {
     serverIP   = IPAddress.Parse("127.0.0.1");
     serverPort = Int32.Parse("5678");
     settings   = LoadSettingsFromFile("Championship.xml");
 }
예제 #9
0
 public static bool StartGameMaster(IPAddress ip, Int32 port, GameMasterSettingsConfiguration settings)
 {
     GMController = new GameMasterController(new GameArea.GameMaster(settings));
     return(GMController.ConnectToServer(ip, port));
 }
예제 #10
0
 public void InitGameMaster()
 {
     settings   = new GameMasterSettingsConfiguration(GameMasterSettings.GetDefaultGameMasterSettings());
     gameMaster = new GameArea.GameMaster(settings);
 }
예제 #11
0
 public GameController(GameMasterSettingsConfiguration settings, bool testing = false)
 {
     GM       = new GameArea.GameMaster(settings);
     Players  = new List <IPlayer>();
     TestMode = testing;
 }