Example #1
0
 public PointerTool(ITrainController gameState, IGameBoard gameBoard, IPixelMapper pixelMapper, ITrackLayout trackLayout)
 {
     _gameState   = gameState;
     _gameBoard   = gameBoard;
     _pixelMapper = pixelMapper;
     _trackLayout = trackLayout;
 }
Example #2
0
        public MainPage(IGame game,
                        IPixelMapper pixelMapper,
                        OrderedList <ITool> tools,
                        OrderedList <ILayerRenderer> layers,
                        OrderedList <ICommand> commands,
                        ITrainController trainControls,
                        ITrackParameters trackParameters,
                        ITrackLayout trackLayout,
                        IGameStorage gameStorage)
        {
            this.Title("Trains - " + ThisAssembly.AssemblyInformationalVersion);

            var controlDelegate = new TrainsDelegate(game, pixelMapper);

            _miniMapDelegate = new MiniMapDelegate(trackLayout, trackParameters, pixelMapper);

            this.Body = () =>
            {
                return(new HStack()
                {
                    new VStack()
                    {
                        new ToggleButton("Configuration", _configurationShown, () => _configurationShown.Value = !_configurationShown.Value),
                        new Spacer(),
                        _configurationShown ?
                        CreateConfigurationControls(layers) :
                        CreateToolsControls(tools, controlDelegate),
                        new Spacer(),
                        _configurationShown ? null :
                        CreateCommandControls(commands),
                        new Spacer(),
                        new DrawableControl(_miniMapDelegate).Frame(height: 100)
                    }.Frame(100, alignment: Alignment.Top),
                    new VStack()
                    {
                        new TrainControllerPanel(trainControls),
                        new DrawableControl(controlDelegate)
                    }
                }.FillHorizontal());
            };

            _timer          = new GameTimer();
            _timer.Interval = 16;
            _timer.Elapsed += (s, e) =>
            {
                game.AdjustViewPortIfNecessary();

                ThreadHelper.Run(async() =>
                {
                    await ThreadHelper.SwitchToMainThreadAsync();

                    controlDelegate.Invalidate();
                    _miniMapDelegate.Invalidate();
                });
            };
            _timer.Start();
            _trackLayout = trackLayout;
            _gameStorage = gameStorage;
        }
Example #3
0
 protected TestBase(ITestOutputHelper output)
 {
     Storage     = new NullStorage();
     Timer       = new TestTimer();
     TrackLayout = new TrackLayout();
     GameBoard   = new GameBoard(TrackLayout, Storage, Timer);
     _output     = output;
 }
 public static Track GetTrackAt(this ITrackLayout trackLayout, int column, int row)
 {
     if (trackLayout.TryGet(column, row, out Track track))
     {
         return(track);
     }
     return(null);
 }
Example #5
0
        public MiniMapDelegate(ITrackLayout trackLayout, ITrackParameters trackParameters, IPixelMapper pixelMapper)
        {
            _trackLayout     = trackLayout;
            _trackParameters = trackParameters;
            _pixelMapper     = pixelMapper;

            _pixelMapper.ViewPortChanged += (s, e) => _redraw = true;
            _trackLayout.TracksChanged   += (s, e) => _redraw = true;
        }
        public TrackLayoutRenderer(ITrackLayout trackLayout, ITrackRenderer trackRenderer, IPixelMapper pixelMapper, ITrackParameters parameters)
        {
            _trackLayout   = trackLayout;
            _trackRenderer = trackRenderer;
            _pixelMapper   = pixelMapper;
            _parameters    = parameters;

            _trackLayout.TracksChanged += (s, e) => _dirty = true;
        }
Example #7
0
 public TrackPreviewer(ITrackLayout trackLayout, ITrackRenderer trackRenderer)
 {
     _trackLayout   = trackLayout;
     _trackRenderer = trackRenderer;
 }
Example #8
0
 public PointToPoint(int movementSteps)
 {
     _movementSteps = movementSteps;
     _trackLayout   = new TrackLayout();
     _gameBoard     = new GameBoard(_trackLayout, null, null);
 }
 public GetShareCodeCommand(ITrackLayout trackLayout, ITrackCodec trackCodec)
 {
     _trackLayout = trackLayout;
     _trackCodec  = trackCodec;
 }
Example #10
0
 public HappinessRenderer(ITrackLayout trackLayout, IPixelMapper pixelMapper, ITrackParameters parameters)
 {
     _trackLayout = trackLayout;
     _pixelMapper = pixelMapper;
     _parameters  = parameters;
 }
Example #11
0
 public EraserTool(ITrackLayout trackLayout)
 {
     _trackLayout = trackLayout;
 }
Example #12
0
 public TrainTool(IGameBoard gameBoard, ITrackLayout trackLayout, ITrainController gameState)
 {
     _gameBoard   = gameBoard;
     _trackLayout = trackLayout;
     _gameState   = gameState;
 }
Example #13
0
        public TrainController(IGameBoard gameBoard, ITrackLayout layout)
        {
            _gameBoard = gameBoard;

            this.BuildMode = !layout.Any();
        }
Example #14
0
        public MainPage(IGame game,
                        IPixelMapper pixelMapper,
                        OrderedList <ITool> tools,
                        OrderedList <ILayerRenderer> layers,
                        OrderedList <ICommand> commands,
                        ITrainController trainControls,
                        ITrackParameters trackParameters,
                        ITrackLayout trackLayout,
                        IGameStorage gameStorage,
                        ITimer gameTimer,
                        Factory <IToolPreviewer> previewerFactory)
        {
            this.Title("Trains - " + ThisAssembly.AssemblyInformationalVersion);

            var controlDelegate = new TrainsDelegate(game, pixelMapper, previewerFactory);

            _miniMapDelegate = new MiniMapDelegate(trackLayout, trackParameters, pixelMapper);

            this.Body = () =>
            {
                return(new HStack()
                {
                    new VStack()
                    {
                        _configurationShown?null:
                        new Button(trainControls.BuildMode ? "Building" : "Playing", () => SwitchGameMode()),
                        new Spacer(),
                        _configurationShown ?
                        CreateConfigurationControls(layers) :
                        CreateToolsControls(tools, controlDelegate, trainControls.BuildMode.Value),
                        new Spacer(),
                        _configurationShown || !trainControls.BuildMode ? null :
                        CreateCommandControls(commands),
                        new Spacer(),
                        new Button("Configuration", () => _configurationShown.Value = !_configurationShown.Value),
                        new DrawableControl(_miniMapDelegate).Frame(height: 100)
                    }.Frame(100, alignment: Alignment.Top),
                    new VStack()
                    {
                        new TrainControllerPanel(trainControls),
                        new DrawableControl(controlDelegate)
                    }
                }.FillHorizontal());
            };

            _gameTimer          = gameTimer;
            _gameTimer.Elapsed += (s, e) =>
            {
                game.AdjustViewPortIfNecessary();

                controlDelegate.FlagDraw();
                _miniMapDelegate.FlagDraw();

                ThreadHelper.Run(async() =>
                {
                    await ThreadHelper.SwitchToMainThreadAsync();

                    controlDelegate.Invalidate();
                    _miniMapDelegate.Invalidate();
                });
            };
            _trackLayout = trackLayout;
            _gameStorage = gameStorage;

            void SwitchGameMode()
            {
                trainControls.ToggleBuildMode();

                if (controlDelegate == null)
                {
                    return;
                }

                controlDelegate.CurrentTool.Value = tools.FirstOrDefault(t => ShouldShowTool(trainControls.BuildMode, t));
            }
        }
Example #15
0
 public TrackTool(ITrackLayout trackLayout)
 {
     _trackLayout = trackLayout;
 }