示例#1
0
 public PickUpAction(GameEntity entity, float energyCost, GameEntity itemToPickUp, IActionEffectFactory actionEffectFactory, IEntityDetector entityDetector, IUiFacade uiFacade)
     : base(entity, energyCost, actionEffectFactory)
 {
     _entityDetector = entityDetector;
     ItemToPickUp    = itemToPickUp;
     _uiFacade       = uiFacade;
 }
 public ResolveAbilitiesPerTurnSystem(GameContext context, IEntityDetector entityDetector, IUiFacade uiFacade, IGameConfig gameConfig)
     : base(context)
 {
     _context        = context;
     _entityDetector = entityDetector;
     _uiFacade       = uiFacade;
     _gameConfig     = gameConfig;
 }
示例#3
0
 public ActionEffectFactory(IGridInfoProvider gridInfoProvider, IEntityDetector entityDetector, IWeaponColorizer weaponColorizer,
                            IUiConfig uiConfig)
 {
     _gridInfoProvider = gridInfoProvider;
     _entityDetector   = entityDetector;
     _weaponColorizer  = weaponColorizer;
     _uiConfig         = uiConfig;
 }
示例#4
0
 public MoveEffect(GameEntity entity, Position previousPosition, IUnityGridInfoProvider unityGridInfoProvider,
                   IEntityDetector entityDetector)
 {
     _entity                = entity;
     PreviousPosition       = previousPosition;
     _unityGridInfoProvider = unityGridInfoProvider;
     _entityDetector        = entityDetector;
 }
示例#5
0
 public AscendAction(ActorData actorData, float energyCost, IActionEffectFactory actionEffectFactory, IGameContext gameContext,
                     IEntityDetector entityDetector, IEntityRemover entityRemover, ITextEffectPresenter textEffectPresenter)
     : base(actorData, energyCost, actionEffectFactory)
 {
     _gameContext         = gameContext;
     _entityDetector      = entityDetector;
     _entityRemover       = entityRemover;
     _textEffectPresenter = textEffectPresenter;
 }
 public TileVisibilityUpdater(IGridInfoProvider gridInfoProvider, IFovCalculator fovCalculator,
                              ITilePresenter tilePresenter, IEntityPresenter entityPresenter, IEntityDetector entityDetector)
 {
     _fovCalculator    = fovCalculator;
     _tilePresenter    = tilePresenter;
     _entityPresenter  = entityPresenter;
     _entityDetector   = entityDetector;
     _gridInfoProvider = gridInfoProvider;
 }
示例#7
0
 public MoveEffect(ActorData actorData, Vector2Int previousPosition, IGridInfoProvider gridInfoProvider,
                   IEntityDetector entityDetector, IUiConfig uiConfig)
 {
     ActorData         = actorData;
     PreviousPosition  = previousPosition;
     _gridInfoProvider = gridInfoProvider;
     _entityDetector   = entityDetector;
     _uiConfig         = uiConfig;
     _actorAligner     = new ActorAligner();
 }
示例#8
0
 public PushAction(ActorData actorData, ActorData targetEnemy, float energyCost, IActionEffectFactory actionEffectFactory,
                   IRandomNumberGenerator rng, IGridInfoProvider gridInfoProvider, IEntityDetector entityDetector, IUiConfig uiConfig)
     : base(actorData, energyCost, actionEffectFactory)
 {
     _targetEnemy      = targetEnemy;
     _rng              = rng;
     _gridInfoProvider = gridInfoProvider;
     _entityDetector   = entityDetector;
     _uiConfig         = uiConfig;
 }
示例#9
0
 public DropAction(GameEntity entity, float energyCost, GameEntity itemToDrop, IActionEffectFactory actionEffectFactory, IFirstPlaceInAreaFinder firstPlaceInAreaFinder, IEntityDetector entityDetector, IGameConfig gameConfig, IUiFacade uiFacade, IPositionEffectPresenter positionEffectPresenter)
     : base(entity, energyCost, actionEffectFactory)
 {
     _itemToDrop             = itemToDrop;
     _firstPlaceInAreaFinder = firstPlaceInAreaFinder;
     _entityDetector         = entityDetector;
     _gameConfig             = gameConfig;
     _uiFacade = uiFacade;
     _positionEffectPresenter = positionEffectPresenter;
 }
示例#10
0
 public EntitySpawner(ItemBehaviour.Factory itemBehaviourFactory, ActorBehaviour.Factory actorBehaviourFactory,
                      IGameContext gameContext, IGameConfig gameConfig, IRandomNumberGenerator rng, IEntityDetector entityDetector, IGridInfoProvider gridInfoProvider)
 {
     _itemBehaviourFactory  = itemBehaviourFactory;
     _actorBehaviourFactory = actorBehaviourFactory;
     _gameContext           = gameContext;
     _gameConfig            = gameConfig;
     _rng              = rng;
     _entityDetector   = entityDetector;
     _gridInfoProvider = gridInfoProvider;
 }
示例#11
0
 public ConditionContext(IGameConfig gameConfig, ISceneContext sceneContext,
                         IEntityDetector entityDetector, GameContext context, IFriendshipResolver friendshipResolver,
                         IExampleContextManager contextManager)
 {
     GameConfig         = gameConfig;
     SceneContext       = sceneContext;
     EntityDetector     = entityDetector;
     Context            = context;
     FriendshipResolver = friendshipResolver;
     ContextManager     = contextManager;
 }
示例#12
0
 public void Init(IUnityGridInfoProvider unityGridInfoProvider, IUiFacade uiFacade, IOsnowaContextManager contextManager,
                  ITileByIdProvider tileByIdProvider, IGameConfig gameConfig, IEntityDetector entityDetector, GameContext context)
 {
     _tileByIdProvider      = tileByIdProvider;
     _contextManager        = contextManager;
     _uiFacade              = uiFacade;
     _unityGridInfoProvider = unityGridInfoProvider;
     _gameConfig            = gameConfig;
     _entityDetector        = entityDetector;
     _context = context;
 }
示例#13
0
        public void FindForItem_FirstDestinationIsWalkableAndUnoccupied_ReturnsFirstDestination()
        {
            var             checkedPosition = new Position(1, 1);
            IGrid           gip             = Mock.Of <IGrid>(p => p.IsWalkable(checkedPosition) == true);
            IEntityDetector entityDetector  = Mock.Of <IEntityDetector>(d =>
                                                                        d.DetectEntities(checkedPosition) == Enumerable.Empty <GameEntity>());
            var finder = new FirstPlaceInAreaFinder(gip, entityDetector, new RandomNumberGenerator(93432));

            Position?result = finder.FindForItem(checkedPosition);

            result.Should().Be(checkedPosition);
        }
示例#14
0
        public void FindForItem_NoNeighboursAndFirstDestinationIsUnoccupiedButWalkable_ReturnsFailure()
        {
            var             checkedPosition = new Position(1, 1);
            IGrid           gip             = Mock.Of <IGrid>(p => p.IsWalkable(It.IsAny <Position>()) == false);
            IEntityDetector entityDetector  = Mock.Of <IEntityDetector>(d =>
                                                                        d.DetectEntities(checkedPosition) == Enumerable.Empty <GameEntity>());
            var finder = new FirstPlaceInAreaFinder(gip, entityDetector, new RandomNumberGenerator(93432));

            Position?result = finder.FindForItem(checkedPosition);

            result.Should().BeNull();
        }
示例#15
0
 public NeedHandler(IEntityDetector entityDetector, IGameConfig gameConfig, IUiConfig uiConfig,
                    IDeathHandler deathHandler, IMaxSwordCalculator maxSwordCalculator, IPlayerSpaceResolver playerSpaceResolver, IGameContext gameContext, ITextEffectPresenter textEffectPresenter)
 {
     _entityDetector      = entityDetector;
     _gameConfig          = gameConfig;
     _uiConfig            = uiConfig;
     _deathHandler        = deathHandler;
     _maxSwordCalculator  = maxSwordCalculator;
     _playerSpaceResolver = playerSpaceResolver;
     _gameContext         = gameContext;
     _textEffectPresenter = textEffectPresenter;
 }
示例#16
0
 public AiActionResolver(IGameContext gameContext, IGridInfoProvider gridInfoProvider, IRandomNumberGenerator rng,
                         IActionFactory actionFactory, INavigator navigator, IEntityDetector entityDetector, ITextEffectPresenter textEffectPresenter, IActiveNeedResolver activeNeedResolver, IClearWayBetweenTwoPointsDetector clearWayBetweenTwoPointsDetector)
 {
     _gameContext      = gameContext;
     _gridInfoProvider = gridInfoProvider;
     _rng                 = rng;
     _actionFactory       = actionFactory;
     _navigator           = navigator;
     _entityDetector      = entityDetector;
     _textEffectPresenter = textEffectPresenter;
     _activeNeedResolver  = activeNeedResolver;
     _clearWayBetweenTwoPointsDetector = clearWayBetweenTwoPointsDetector;
 }
示例#17
0
 public MoveAction(ActorData actorData, float energyCost, IActionEffectFactory actionEffectFactory,
                   Vector2Int direction, IGridInfoProvider gridInfoProvider, IEntityDetector entityDetector,
                   IGameContext gameContext, ITextEffectPresenter textEffectPresenter, IUiConfig uiConfig, IDeathHandler deathHandler)
     : base(actorData, energyCost, actionEffectFactory, direction)
 {
     GuardDirection(direction);
     _gridInfoProvider    = gridInfoProvider;
     _entityDetector      = entityDetector;
     _gameContext         = gameContext;
     _textEffectPresenter = textEffectPresenter;
     _uiConfig            = uiConfig;
     _deathHandler        = deathHandler;
 }
示例#18
0
        public AttackActivity(IActionFactory actionFactory, INavigator navigator, int giveUpDistance, GameEntity targetEntity, string name, IRandomNumberGenerator rng, IGameConfig gameConfig, IEntityDetector entityDetector)
            : base(name)
        {
            _targetEntity   = targetEntity;
            _rng            = rng;
            _gameConfig     = gameConfig;
            _entityDetector = entityDetector;
            _giveUpDistance = giveUpDistance;
            _actionFactory  = actionFactory;
            _navigator      = navigator;

            _lastTargetPosition = targetEntity.position.Position;
        }
示例#19
0
        private Position GetHerdCenterOf(IEntityDetector detector, GameEntity entity, IFriendshipResolver friendshipResolver)
        {
            List <GameEntity> meAndFriendsAround = detector.DetectEntities(entity.position.Position, entity.vision.PerceptionRange)
                                                   .Where(e => friendshipResolver.AreFriends(entity, e))
                                                   .Union(new[] { entity })
                                                   .ToList();
            int averageX = meAndFriendsAround.Sum(f => f.position.Position.x) / meAndFriendsAround.Count;
            int averageY = meAndFriendsAround.Sum(f => f.position.Position.y) / meAndFriendsAround.Count;

            //Debug.Log($"me and friends: {meAndFriendsAround.Count}");

            return(new Position(averageX, averageY));
        }
示例#20
0
 public PlayerActionResolver(IEntityDetector entityDetector, IInputHolder inputHolder,
                             IActionFactory actionFactory, IArrowsVisibilityManager arrowsVisibilityManager, IWeaponColorizer weaponColorizer,
                             IClearWayBetweenTwoPointsDetector clearWayBetweenTwoPointsDetector, IGameContext gameContext, IUiConfig uiConfig, ITextEffectPresenter textEffectPresenter)
 {
     _entityDetector                   = entityDetector;
     _inputHolder                      = inputHolder;
     _actionFactory                    = actionFactory;
     _arrowsVisibilityManager          = arrowsVisibilityManager;
     _weaponColorizer                  = weaponColorizer;
     _clearWayBetweenTwoPointsDetector = clearWayBetweenTwoPointsDetector;
     _gameContext                      = gameContext;
     _uiConfig            = uiConfig;
     _textEffectPresenter = textEffectPresenter;
 }
示例#21
0
 public UseItemAction(ActorData actorData, ItemDefinition item, bool fromInventory, float energyCost, IEntitySpawner entitySpawner,
                      IUiConfig uiConfig, IActionEffectFactory actionEffectFactory, IEntityDetector entityDetector, IRandomNumberGenerator rng,
                      ITextEffectPresenter textEffectPresenter, IGameContext gameContext, IEntityRemover entityRemover)
     : base(actorData, energyCost, actionEffectFactory)
 {
     _item                = item;
     _fromInventory       = fromInventory;
     _entitySpawner       = entitySpawner;
     _uiConfig            = uiConfig;
     _entityDetector      = entityDetector;
     _rng                 = rng;
     _textEffectPresenter = textEffectPresenter;
     _gameContext         = gameContext;
     _entityRemover       = entityRemover;
 }
示例#22
0
        public EnvironmentPresenter(ISceneContext sceneContext, IPositionEffectPresenter positionEffectPresenter,
                                    IEntityDetector entityDetector, ITilePresenter tilePresenter, IGameConfig gameConfig,
                                    IGrid gipGrid, GameContext context)
        {
            _sceneContext = sceneContext;

            _positionEffectPresenter = positionEffectPresenter;
            _entityDetector          = entityDetector;
            _tilePresenter           = tilePresenter;
            _gameConfig = gameConfig;
            _grid       = gipGrid;
            _context    = context;

            _positionEffectsShown   = new List <PositionEffect>();
            _defaultUnseenMaskAlpha = _sceneContext.UnseenMaskTilemap.color.a;
        }
示例#23
0
        public void FindForItem_FirstDestinationAndMostNeighboursAreNotEligibleButOneNeighbourIs_ReturnsNeighbour()
        {
            var   checkedPosition   = new Position(1, 1);
            var   eligibleNeighbour = new Position(2, 1);
            IGrid gip = Mock.Of <IGrid>(p =>
                                        p.IsWalkable(
                                            It.Is <Position>(v => PositionUtilities.Neighbours8(checkedPosition).Contains(v))
                                            ) == false &&
                                        p.IsWalkable(eligibleNeighbour) == true);
            IEntityDetector entityDetector = Mock.Of <IEntityDetector>(d =>
                                                                       d.DetectEntities(checkedPosition) == Enumerable.Empty <GameEntity>());
            var finder = new FirstPlaceInAreaFinder(gip, entityDetector, new RandomNumberGenerator(93432));

            Position?result = finder.FindForItem(checkedPosition);

            result.Should().Be(eligibleNeighbour);
        }
示例#24
0
 public ActionFactory(IGridInfoProvider gridInfoProvider, IActionEffectFactory actionEffectFactory,
                      ITextEffectPresenter textEffectPresenter, INeedHandler needHandler, IRandomNumberGenerator randomNumberGenerator,
                      IDeathHandler deathHandler, IEntityRemover entityRemover, IEntityDetector entityDetector, IGameContext gameContext,
                      IEntitySpawner entitySpawner, IUiConfig uiConfig)
 {
     _gridInfoProvider      = gridInfoProvider;
     _actionEffectFactory   = actionEffectFactory;
     _textEffectPresenter   = textEffectPresenter;
     _needHandler           = needHandler;
     _randomNumberGenerator = randomNumberGenerator;
     _deathHandler          = deathHandler;
     _entityRemover         = entityRemover;
     _entityDetector        = entityDetector;
     _gameContext           = gameContext;
     _entitySpawner         = entitySpawner;
     _uiConfig = uiConfig;
 }
示例#25
0
        public PlayerActionResolver(IGameConfig gameConfig, IEntityDetector entityDetector,
                                    IActionFactory actionFactory, IFriendshipResolver friendshipResolver, GameContext context, IActivityInterruptor activityInterruptor)
        {
            _gameConfig          = gameConfig;
            _entityDetector      = entityDetector;
            _actionFactory       = actionFactory;
            _friendshipResolver  = friendshipResolver;
            _context             = context;
            _activityInterruptor = activityInterruptor;

            _moveInputs = new HashSet <Decision>
            {
                Decision.MoveUpLeft, Decision.MoveUp, Decision.MoveUpRight,
                Decision.MoveLeft, Decision.MoveRight,
                Decision.MoveDownLeft, Decision.MoveDown, Decision.MoveDownRight
            };
        }
示例#26
0
 public PostHeartbeatSystem(IEntityDetector entityDetector, IGameConfig gameConfig,
                            ICalculatedAreaAccessor calculatedAreaAccessor, IStimulusReceiver stimulusReceiver, IPathfinder pathfinder,
                            IBroadcastStimulusSender broadcastStimulusSender, IPositionEffectPresenter positionEffectPresenter,
                            GameContext context, IFriendshipResolver friendshipResolver,
                            IUiFacade uiFacade, IOsnowaContextManager contextManager)
     : base(context)
 {
     _entityDetector          = entityDetector;
     _gameConfig              = gameConfig;
     _calculatedAreaAccessor  = calculatedAreaAccessor;
     _stimulusReceiver        = stimulusReceiver;
     _pathfinder              = pathfinder;
     _broadcastStimulusSender = broadcastStimulusSender;
     _positionEffectPresenter = positionEffectPresenter;
     _friendshipResolver      = friendshipResolver;
     _uiFacade       = uiFacade;
     _contextManager = contextManager;
     _context        = context;
 }
示例#27
0
 public ActivityCreationContext(INavigator navigator, IRandomNumberGenerator rng, IActionFactory actionFactory, ISceneContext sceneContext,
                                IExampleContextManager contextManager, IGameConfig gameConfig, IEntityDetector entityDetector, ICalculatedAreaAccessor calculatedAreaAccessor,
                                IUiFacade uiFacade, IRasterLineCreator rasterLineCreator, IPositionEffectPresenter positionEffectPresenter,
                                IFriendshipResolver friendshipResolver, GameContext context)
 {
     Navigator               = navigator;
     Rng                     = rng;
     ActionFactory           = actionFactory;
     SceneContext            = sceneContext;
     ContextManager          = contextManager;
     GameConfig              = gameConfig;
     EntityDetector          = entityDetector;
     CalculatedAreaAccessor  = calculatedAreaAccessor;
     UiFacade                = uiFacade;
     RasterLineCreator       = rasterLineCreator;
     PositionEffectPresenter = positionEffectPresenter;
     FriendshipResolver      = friendshipResolver;
     Context                 = context;
 }
示例#28
0
        public WorldClock(ISceneContext sceneContext, IGameConfig gameConfig,
                          IUiFacade uiFacadeUiFacade, IEntityDetector entityDetector, ITileMatrixUpdater tileMatrixUpdater,
                          IRandomNumberGenerator rng, IViewCreator viewCreator,
                          IOsnowaContextManager contextManager)
        {
            _sceneContext = sceneContext;

            _gameConfig        = gameConfig;
            _uiFacade          = uiFacadeUiFacade;
            _entityDetector    = entityDetector;
            _tileMatrixUpdater = tileMatrixUpdater;
            _rng            = rng;
            _viewCreator    = viewCreator;
            _contextManager = contextManager;
            _gameContext    = Contexts.sharedInstance.game;

            double minutesInDay = new TimeSpan(1, 0, 0, 0).TotalMinutes;

            _minutesInTurn = minutesInDay / _gameConfig.TurnsInDay;
        }
示例#29
0
 public ActionFactory(IGrid grid, IActionEffectFactory actionEffectFactory, IUnityGridInfoProvider unityGridInfoProvider, IPositionEffectPresenter positionEffectPresenter, IRandomNumberGenerator randomNumberGenerator, IDeathHandler deathHandler, ISceneContext sceneContext, IGameConfig gameConfig, IViewCreator viewCreator, ITileMatrixUpdater tileMatrixUpdater, IFirstPlaceInAreaFinder firstPlaceInAreaFinder, IBroadcastStimulusSender stimulusBroadcaster, IEntityDetector entityDetector, LoadViewSystem loadViewSystem, IUiFacade uiFacade, IOsnowaContextManager contextManager, IEntityViewBehaviourInitializer entityViewBehaviourInitializer, IAggressionTriggerer aggressionTriggerer, IEntityGenerator entityGenerator, ReactiveFeature reactiveFeature)
 {
     _grid = grid;
     _unityGridInfoProvider   = unityGridInfoProvider;
     _positionEffectPresenter = positionEffectPresenter;
     _randomNumberGenerator   = randomNumberGenerator;
     _deathHandler            = deathHandler;
     _actionEffectFactory     = actionEffectFactory;
     _sceneContext            = sceneContext;
     _gameConfig             = gameConfig;
     _viewCreator            = viewCreator;
     _tileMatrixUpdater      = tileMatrixUpdater;
     _firstPlaceInAreaFinder = firstPlaceInAreaFinder;
     _stimulusBroadcaster    = stimulusBroadcaster;
     _entityDetector         = entityDetector;
     _loadViewSystem         = loadViewSystem;
     _uiFacade       = uiFacade;
     _contextManager = contextManager;
     _entityViewBehaviourInitializer = entityViewBehaviourInitializer;
     _aggressionTriggerer            = aggressionTriggerer;
     _entityGenerator = entityGenerator;
     _reactiveFeature = reactiveFeature;
 }
示例#30
0
 public SkillEvaluationContext(IRandomNumberGenerator rng, IEntityDetector entityDetector, IExampleContextManager contextManager)
 {
     Rng            = rng;
     EntityDetector = entityDetector;
     ContextManager = contextManager;
 }