Пример #1
0
        protected void SetGameInfo(ForagerGameInfo gameInfo)
        {
            comboBoxGame.Active       = 4;
            entryGameDescription.Text = gameInfo.GameDescription;

            spinButtonForagerPlots.Value       = gameInfo.Plots;
            spinButtonForagerTravelTime.Value  = gameInfo.TravelTime;
            spinButtonForagerFoodRate.Value    = gameInfo.FoodRate;
            spinButtonForagerGameMinutes.Value = gameInfo.GameSeconds / 60;

            foragerProbabilityStore.Clear();
            foragerProbabilities.Clear();
            foragerProbabilityShiftTimes.Clear();

            int plotNumber = 1;

            foreach (var plotProbabilities in gameInfo.PlotProbabilities)
            {
                foragerProbabilities.Add(plotProbabilities.ToList());

                if (plotNumber > comboBoxForagerProbabilitySet.Model.IterNChildren())
                {
                    comboBoxForagerProbabilitySet.AppendText(plotNumber.ToString());
                }

                plotNumber++;
            }

            foragerProbabilityShiftTimes.AddRange(gameInfo.ProbabilityShiftTimes.ToList());

            // Display first set of plot probabilities
            CopyForagerProbabilitySetToStore();
        }
Пример #2
0
    protected virtual void OnButtonOpenGamesFileClicked(object sender, System.EventArgs e)
    {
        var openDialog = new FileChooserDialog("Open Games File", this, FileChooserAction.Open,
            "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept);

        openDialog.SetCurrentFolder(Nexus.Settings.Default.GamesFileDirectory);

        try
        {
            if (openDialog.Run() == (int)ResponseType.Accept)
            {
                gameStore.Clear();

                // Parse games file
                var document = System.Xml.Linq.XDocument.Load(openDialog.Filename);

                foreach (var gameElement in document.Descendants("game"))
                {
                    var gameName = ((string)gameElement.Attribute("name")).ToLower();
                    IGameInfo gameInfo = null;

                    switch (gameName)
                    {
                        case "flatland":
                            gameInfo = new FlatlandGameInfo(gameElement);
                            break;

                        case "pixel":
                            gameInfo = new PixelGameInfo(gameElement);
                            break;

                        case "group sum":
                            gameInfo = new GroupSumGameInfo(gameElement);
                            break;

                        case "forager":
                            gameInfo = new ForagerGameInfo(gameElement);
                            break;

                        default:
                            logger.WarnFormat("Unrecognized game \"{0}\"", gameName);
                            break;
                    }

                    if (gameInfo != null)
                    {
                        gameInfo.GameDescription = (string)gameElement.Attribute("description");
                        gameStore.AppendValues(false, gameInfo.GameName, gameInfo.GameDescription, gameInfo);
                    }
                }

                Nexus.Settings.Default.GamesFileDirectory = System.IO.Path.GetDirectoryName(openDialog.Filename);
            }
        }
        catch(Exception ex)
        {
            logger.Error("OnButtonOpenGamesFileClicked", ex);
            ShowErrorDialog(ex);
        }
        finally
        {
            openDialog.Destroy();
        }
    }
Пример #3
0
        protected void SetGameInfo(ForagerGameInfo gameInfo)
        {
            comboBoxGame.Active = 4;
              entryGameDescription.Text = gameInfo.GameDescription;

              spinButtonForagerPlots.Value = gameInfo.Plots;
              spinButtonForagerTravelTime.Value = gameInfo.TravelTime;
              spinButtonForagerFoodRate.Value = gameInfo.FoodRate;
              spinButtonForagerGameMinutes.Value = gameInfo.GameSeconds / 60;

              foragerProbabilityStore.Clear();
              foragerProbabilities.Clear();
              foragerProbabilityShiftTimes.Clear();

              int plotNumber = 1;

              foreach (var plotProbabilities in gameInfo.PlotProbabilities)
              {
            foragerProbabilities.Add(plotProbabilities.ToList());

            if (plotNumber > comboBoxForagerProbabilitySet.Model.IterNChildren())
            {
              comboBoxForagerProbabilitySet.AppendText(plotNumber.ToString());
            }

            plotNumber++;
              }

              foragerProbabilityShiftTimes.AddRange(gameInfo.ProbabilityShiftTimes.ToList());

              // Display first set of plot probabilities
              CopyForagerProbabilitySetToStore();
        }
Пример #4
0
        public IGameInfo GetGameInfo()
        {
            IGameInfo gameInfo = null;

            switch (comboBoxGame.Active)
            {
            case 1:
                var pixelInfo = new PixelGameInfo()
                {
                    MaxSize      = spinButtonPixelMaxSize.ValueAsInt,
                    InitialState = comboBoxPixelInitialState.ActiveText,
                    PlayerSort   = comboBoxPixelPlayerSort.ActiveText
                };

                foreach (var point in pixelGrid.EnabledPixels)
                {
                    if ((point.X < pixelInfo.MaxSize) &&
                        (point.Y < pixelInfo.MaxSize))
                    {
                        pixelInfo.FixedPixels.Add(point);
                    }
                }

                gameInfo = pixelInfo;
                break;

            case 2:
                var flatlandInfo = new FlatlandGameInfo()
                {
                    Tiles = checkBoxFlatlandCustomBoardSize.Active ?
                            spinButtonFlatlandBoardSize.ValueAsInt : (int?)null,

                    CollisionBehavior = comboBoxFlatlandCollisionBehavior.ActiveText,
                    GameType          = comboBoxFlatlandGameType.ActiveText
                };

                // Add teams
                flatlandTeamStore.Foreach(delegate(TreeModel model, TreePath path, TreeIter iter)
                {
                    flatlandInfo.Teams.Add(new FlatlandTeamInfo()
                    {
                        TeamIndex       = (int)model.GetValue(iter, 0),
                        ThemeName       = (string)model.GetValue(iter, 1),
                        Kind            = (string)model.GetValue(iter, 2),
                        MoveSeconds     = (int)model.GetValue(iter, 3),
                        WrappedMovement = (bool)model.GetValue(iter, 4),
                        ScoringSystem   = (string)model.GetValue(iter, 5)
                    });

                    return(false);
                });

                flatlandInfo.FixedTiles.AddRange(flatlandFixedTiles);

                gameInfo = flatlandInfo;
                break;

            case 3:
                gameInfo = new GroupSumGameInfo()
                {
                    FirstRoundSeconds     = spinButtonGroupSumFirstRoundSeconds.ValueAsInt,
                    RoundSeconds          = spinButtonGroupSumRoundSeconds.ValueAsInt,
                    RangeStart            = spinButtonGroupSumRangeStart.ValueAsInt,
                    RangeEnd              = spinButtonGroupSumRangeEnd.ValueAsInt,
                    ShowNumericFeedback   = checkButtonGroupSumNumericFeedback.Active,
                    UsePreviousRoundInput = checkbuttonGroupSumPreviousInput.Active
                };
                break;

            case 4:
                var foragerInfo = new ForagerGameInfo()
                {
                    Plots       = spinButtonForagerPlots.ValueAsInt,
                    TravelTime  = spinButtonForagerTravelTime.ValueAsInt,
                    FoodRate    = spinButtonForagerFoodRate.ValueAsInt,
                    GameSeconds = spinButtonForagerGameMinutes.ValueAsInt * 60,
                };

                foreach (var plotProbabilities in foragerProbabilities)
                {
                    foragerInfo.PlotProbabilities.Add(plotProbabilities.ToList());
                }

                foragerInfo.ProbabilityShiftTimes.AddRange(foragerProbabilityShiftTimes.ToList());

                gameInfo = foragerInfo;
                break;
            }

            if (gameInfo != null)
            {
                gameInfo.GameDescription = entryGameDescription.Text;
            }

            return(gameInfo);
        }
Пример #5
0
        public IGameInfo GetGameInfo()
        {
            IGameInfo gameInfo = null;

              switch (comboBoxGame.Active)
              {
            case 1:
              var pixelInfo = new PixelGameInfo()
              {
            MaxSize = spinButtonPixelMaxSize.ValueAsInt,
            InitialState = comboBoxPixelInitialState.ActiveText,
            PlayerSort = comboBoxPixelPlayerSort.ActiveText
              };

              foreach (var point in pixelGrid.EnabledPixels)
              {
            if ((point.X < pixelInfo.MaxSize) &&
              (point.Y < pixelInfo.MaxSize))
            {
              pixelInfo.FixedPixels.Add(point);
            }
              }

              gameInfo = pixelInfo;
              break;

            case 2:
              var flatlandInfo = new FlatlandGameInfo()
              {
            Tiles = checkBoxFlatlandCustomBoardSize.Active ?
              spinButtonFlatlandBoardSize.ValueAsInt : (int?)null,

            CollisionBehavior = comboBoxFlatlandCollisionBehavior.ActiveText,
            GameType = comboBoxFlatlandGameType.ActiveText
              };

              // Add teams
              flatlandTeamStore.Foreach(delegate(TreeModel model, TreePath path, TreeIter iter)
              {
            flatlandInfo.Teams.Add(new FlatlandTeamInfo()
            {
              TeamIndex = (int)model.GetValue(iter, 0),
              ThemeName = (string)model.GetValue(iter, 1),
              Kind = (string)model.GetValue(iter, 2),
              MoveSeconds = (int)model.GetValue(iter, 3),
              WrappedMovement = (bool)model.GetValue(iter, 4),
              ScoringSystem = (string)model.GetValue(iter, 5)
            });

            return (false);
              });

              flatlandInfo.FixedTiles.AddRange(flatlandFixedTiles);

              gameInfo = flatlandInfo;
              break;

            case 3:
              gameInfo = new GroupSumGameInfo()
              {
            FirstRoundSeconds = spinButtonGroupSumFirstRoundSeconds.ValueAsInt,
            RoundSeconds = spinButtonGroupSumRoundSeconds.ValueAsInt,
            RangeStart = spinButtonGroupSumRangeStart.ValueAsInt,
            RangeEnd = spinButtonGroupSumRangeEnd.ValueAsInt,
            ShowNumericFeedback = checkButtonGroupSumNumericFeedback.Active,
            UsePreviousRoundInput = checkbuttonGroupSumPreviousInput.Active
              };
              break;

            case 4:
              var foragerInfo = new ForagerGameInfo()
              {
            Plots = spinButtonForagerPlots.ValueAsInt,
            TravelTime = spinButtonForagerTravelTime.ValueAsInt,
            FoodRate = spinButtonForagerFoodRate.ValueAsInt,
            GameSeconds = spinButtonForagerGameMinutes.ValueAsInt * 60,
              };

              foreach (var plotProbabilities in foragerProbabilities)
              {
            foragerInfo.PlotProbabilities.Add(plotProbabilities.ToList());
              }

              foragerInfo.ProbabilityShiftTimes.AddRange(foragerProbabilityShiftTimes.ToList());

              gameInfo = foragerInfo;
              break;
              }

              if (gameInfo != null)
              {
            gameInfo.GameDescription = entryGameDescription.Text;
              }

              return (gameInfo);
        }