Beispiel #1
0
        public GridInputManager(Camera camera, EventSystem eventSystem,
                                IGridPositionCalculator gridPositionCalculator)
        {
            _camera = camera;
            _gridPositionCalculator = gridPositionCalculator;

            // These are initialized on construction to avoid race conditions on initialize
            MouseTileCoords = Observable.EveryUpdate()
                              .Select(_ => GetTileAtMousePositionInternal())
                              .DistinctUntilChanged()
                              .ToReadOnlyReactiveProperty();

            IObservable <IntVector2> mouseDownStream = Observable.EveryUpdate()
                                                       .Where(_ => Input.GetMouseButtonDown(0))
                                                       .Where(_ => !eventSystem.IsPointerOverGameObject())
                                                       .Where(_ => TileAtMousePosition != null)
                                                       .Select(_ => TileAtMousePosition.GetValueChecked());

            IObservable <IntVector2> mouseUpStream = Observable.EveryUpdate()
                                                     .Where(_ => Input.GetMouseButtonUp(0))
                                                     .Where(_ => !eventSystem.IsPointerOverGameObject())
                                                     .Where(_ => TileAtMousePosition != null)
                                                     .Select(_ => TileAtMousePosition.GetValueChecked());

            IObservable <IntVector2> mouseDragStream = Observable.EveryUpdate()
                                                       .Where(_ => Input.GetMouseButton(0))
                                                       .Where(_ => TileAtMousePosition != null)
                                                       .TakeUntil(mouseUpStream)
                                                       .Select(_ => TileAtMousePosition.GetValueChecked());

            LeftMouseButtonOnTile = mouseDownStream.Select(pos => mouseUpStream).Switch();
            LeftMouseDownOnTile   = mouseDownStream;
            LeftMouseDragOnTile   = mouseDragStream;
        }
 public GridVisualizer(IGrid grid,
                       IGridPositionCalculator gridPositionCalculator,
                       IGridCellHighlightPool cellHighlightPool,
                       IDebugSettings debugSettings)
 {
     _grid = grid;
     _positionCalculator = gridPositionCalculator;
     _cellHighlightPool  = cellHighlightPool;
     _debugSettings      = debugSettings;
 }
Beispiel #3
0
 public BatchUnitSelectionDetector(EventSystem eventSystem,
                                   ISelectionBox selectionBox,
                                   IGridPositionCalculator gridPositionCalculator,
                                   IGridUnitManager gridUnitManager)
 {
     _eventSystem            = eventSystem;
     _selectionBox           = selectionBox;
     _gridPositionCalculator = gridPositionCalculator;
     _gridUnitManager        = gridUnitManager;
 }
Beispiel #4
0
 public SequentialUniqueTileLoader(ILogger logger,
                                   IMapSectionData mapSectionData,
                                   IGridPositionCalculator positionCalculator,
                                   TileRendererBehaviour.Pool tileRendererPool)
 {
     _logger             = logger;
     _mapSectionData     = mapSectionData;
     _positionCalculator = positionCalculator;
     _tileRendererPool   = tileRendererPool;
 }
 public GridUnitManager(IGrid grid,
                        IGridPositionCalculator gridPositionCalculator,
                        IUnitTransformRegistry unitTransformRegistry,
                        ILogger logger)
 {
     _grid = grid;
     _gridPositionCalculator = gridPositionCalculator;
     _unitTransformRegistry  = unitTransformRegistry;
     _logger = logger;
 }
Beispiel #6
0
        public void CommonInstall()
        {
            _grid = Substitute.For <IGrid>();
            _grid.TileSize.Returns(1U);

            Container.Bind <IGridPositionCalculator>().To <GridPositionCalculator>().AsSingle();
            Container.Bind <IGrid>().FromInstance(_grid);
            Container.Inject(this);

            _positionCalculator = Container.Resolve <IGridPositionCalculator>();
        }
 public TileVisibilityUpdater(List <ITileVisibilityDelegate> tileVisibilityDelegates,
                              IGrid grid,
                              IGridUnitManager gridUnitManager,
                              IGridPositionCalculator gridPositionCalculator)
 {
     _tileVisibilityDelegates = tileVisibilityDelegates;
     _grid                   = grid;
     _gridUnitManager        = gridUnitManager;
     _gridPositionCalculator = gridPositionCalculator;
     _visibilityMatrix       = new Dictionary <IntVector2, TileVisibilityData>();
 }
 public RandomizedRepeatedTileLoader(IRandomProvider randomProvider,
                                     ILogger logger,
                                     IMapSectionData mapSectionData,
                                     IGridPositionCalculator positionCalculator,
                                     TileRendererBehaviour.Pool tileRendererPool)
 {
     _randomProvider     = randomProvider;
     _logger             = logger;
     _mapSectionData     = mapSectionData;
     _positionCalculator = positionCalculator;
     _tileRendererPool   = tileRendererPool;
 }
Beispiel #9
0
 public UnitDestinationSelector(IGridUnitManager gridUnitManager,
                                IGridInputManager gridInputManager,
                                IGridPositionCalculator gridPositionCalculator,
                                IGridCellHighlightPool gridCellHighlightPool,
                                ILogger logger)
 {
     _gridUnitManager        = gridUnitManager;
     _gridInputManager       = gridInputManager;
     _gridPositionCalculator = gridPositionCalculator;
     _gridCellHighlightPool  = gridCellHighlightPool;
     _logger     = logger;
     _validTiles = new HashSet <IntVector2>();
 }
Beispiel #10
0
 public DrawableTileRegistry(ILogger logger,
                             IGrid grid,
                             IGridPositionCalculator gridPositionCalculator,
                             IFactory <Sprite> drawableSpriteFactory,
                             IMapSectionData mapSectionData,
                             DrawableTileBehaviour.Pool drawableTilePool)
 {
     _logger = logger;
     _grid   = grid;
     _gridPositionCalculator = gridPositionCalculator;
     _drawableSprite         = drawableSpriteFactory.Create();
     _mapSectionData         = mapSectionData;
     _drawableTilePool       = drawableTilePool;
 }
 public UnitDragAndDropHandler(IGridInputManager gridInputManager,
                               IGridUnitManager gridUnitManager,
                               IGridPositionCalculator gridPositionCalculator,
                               ICommandQueue commandQueue,
                               IUnitTransformRegistry unitTransformRegistry,
                               ILogger logger)
 {
     _gridInputManager       = gridInputManager;
     _gridUnitManager        = gridUnitManager;
     _gridPositionCalculator = gridPositionCalculator;
     _commandQueue           = commandQueue;
     _unitTransformRegistry  = unitTransformRegistry;
     _logger = logger;
 }
        public void CommonInstall()
        {
            IGrid grid = Substitute.For <IGrid>();

            grid.NumTilesX.Returns((uint)100);
            grid.NumTilesY.Returns((uint)100);
            grid.TileSize.Returns((uint)1);
            _gridPositionCalculator = Substitute.For <IGridPositionCalculator>();
            _randomProvider         = new AlwaysReturnSameWeightRandomProvider(0);

            Container.Bind <IGrid>().FromInstance(grid);
            Container.Bind <IGridPositionCalculator>().To <IGridPositionCalculator>()
            .FromInstance(_gridPositionCalculator).AsTransient();
            Container.Bind <IRandomProvider>().To <AlwaysReturnSameWeightRandomProvider>().FromInstance(_randomProvider)
            .AsSingle();
            Container.Bind <NotUniqueRandomGridPositionProvider>().AsSingle();
            Container.Inject(this);
        }
        public void Construct(Camera worldCamera,
                              ICommandQueue commandQueue,
                              IUnitMovementController unitMovementController,
                              IGridPositionCalculator gridPositionCalculator,
                              IGridUnitManager gridUnitManager,
                              IInputLock inputLock,
                              ILogger logger)
        {
            _camera                 = worldCamera;
            _commandQueue           = commandQueue;
            _unitMovementController = unitMovementController;
            _gridPositionCalculator = gridPositionCalculator;
            _gridUnitManager        = gridUnitManager;
            _inputLock              = inputLock;
            _logger                 = logger;

            // TODO: Can we inject this instead?
            _radialMenu = GetComponent <IRadialMenu>();
        }
        public void Construct(Camera camera,
                              UnitSelectionHighlighter unitSelectionHighlighter,
                              ICommandQueue commandQueue,
                              IUnitActionPlanner unitActionPlanner,
                              IGridUnitManager gridUnitManager,
                              IGridUnitInputManager gridUnitInputManager,
                              IGridPositionCalculator gridPositionCalculator,
                              ILogger logger)
        {
            _camera                   = camera;
            _commandQueue             = commandQueue;
            _unitSelectionHighlighter = unitSelectionHighlighter;
            _unitActionPlanner        = unitActionPlanner;
            _gridUnitManager          = gridUnitManager;
            _gridUnitInputManager     = gridUnitInputManager;
            _gridPositionCalculator   = gridPositionCalculator;
            _logger                   = logger;

            // TODO: Be better
            _radialMenu = GetComponent <IRadialMenu>();
        }
Beispiel #15
0
 public void Construct(IGridPositionCalculator gridPositionCalculator)
 {
     _gridPositionCalculator = gridPositionCalculator;
 }
Beispiel #16
0
 public GridCellHighlightPool(IGridPositionCalculator gridPositionCalculator, GridCellHighlight.Pool monoPool)
 {
     _gridPositionCalculator = gridPositionCalculator;
     _monoPool          = monoPool;
     _spawnedHighlights = new List <IGridCellHighlight>();
 }
Beispiel #17
0
 public void Construct(Camera camera, IGridPositionCalculator gridPositionCalculator)
 {
     _camera = camera;
     _gridPositionCalculator = gridPositionCalculator;
     _radialMenu             = GetComponent <IRadialMenu>();
 }