public void PlaceObjectOnMapListener(PlaceObjectOnMapEvent placeObjectOnMapEvent)
        {
            RectangleForeach rectangleForeach = new RectangleForeach(placeObjectOnMapEvent.Position, placeObjectOnMapEvent.Size);

            rectangleForeach.Data = placeObjectOnMapEvent;
            rectangleForeach.ForEach(PlaceObject);
        }
Exemple #2
0
        public void PlaceObjectOnMapListener(PlaceObjectOnMapEvent placeObjectOnMapEvent)
        {
            var wrappedEvent = new
            {
                Position  = placeObjectOnMapEvent.Position,
                Size      = placeObjectOnMapEvent.Size,
                Structure = placeObjectOnMapEvent.Entity.GetComponent <Structure>(),
                Obstacle  = placeObjectOnMapEvent.Entity.GetComponent <Obstacle>(),
                Resource  = placeObjectOnMapEvent.Entity.GetComponent <Resource>()
            };

            RedirectLike(placeObjectOnMapEvent, wrappedEvent, default, NetworkPersistenceType.Permanent);
        private void PlaceObject(int x, int y, object data)
        {
            PlaceObjectOnMapEvent placeObjectOnMapEvent = data as PlaceObjectOnMapEvent;
            var index = _grid.GetNodeIndex(x, y);

            if (_nodeToEntityLinker.ContainsKey(index))
            {
                Debug.WriteLine("Attend to override object");
            }

            _nodeToEntityLinker.Add(index, placeObjectOnMapEvent.Entity);
            _pathFinder.ChangeCostOfMove(x, y, 0);
        }
        public void AddHabitatsListener(PlaceObjectOnMapEvent placeObjectOnMapEvent)
        {
            Entity entity = placeObjectOnMapEvent.Entity;

            if (!entity.HasComponent <Structure>())
            {
                return;
            }
            Structure structure = entity.GetComponent <Structure>();

            if (!structure.Definition.Name.EndsWith("Habitat"))
            {
                return;
            }

            long index = _grid.GetNodeIndex(placeObjectOnMapEvent.Position);

            _habitats.Add(index);
            _nodeToEntityLinker.Add(index, entity);
        }
        public void AddObstacleListener(AddObstacleOnWorldMapEvent addObstacleOnWorldMapEvent)
        {
            IsFreeAreaEvent isFreeAreaEvent = new IsFreeAreaEvent(addObstacleOnWorldMapEvent.Position, addObstacleOnWorldMapEvent.Obstacle.Definition.Size);

            _eventBus.Post(isFreeAreaEvent);

            if (!isFreeAreaEvent.IsFree)
            {
                // Debug.WriteLine("Area is blocked! " + isFreeAreaEvent);
                return;
            }

            Entity obstacle = entityWorld.CreateEntityFromTemplate("Obstacle",
                                                                   addObstacleOnWorldMapEvent.Obstacle,
                                                                   addObstacleOnWorldMapEvent.Position);

            PlaceObjectOnMapEvent placeObjectOnMapEvent = new PlaceObjectOnMapEvent(obstacle, addObstacleOnWorldMapEvent.Position, addObstacleOnWorldMapEvent.Obstacle.Definition.Size);

            _eventBus.Post(placeObjectOnMapEvent);
        }
        public void AddResourceListener(AddResourceOnWorldMapEvent addResourceOnWorldMapEvent)
        {
            Point           staticResourceSize = new Point(1, 1);
            IsFreeAreaEvent isFreeAreaEvent    = new IsFreeAreaEvent(addResourceOnWorldMapEvent.Position, staticResourceSize);

            _eventBus.Post(isFreeAreaEvent);

            if (!isFreeAreaEvent.IsFree)
            {
                // Debug.WriteLine("Area is blocked! " + isFreeAreaEvent);
                return;
            }

            Entity resource = entityWorld.CreateEntityFromTemplate("Resource",
                                                                   addResourceOnWorldMapEvent.Resource,
                                                                   addResourceOnWorldMapEvent.Position);

            PlaceObjectOnMapEvent placeObjectOnMapEvent = new PlaceObjectOnMapEvent(resource, addResourceOnWorldMapEvent.Position, staticResourceSize);

            _eventBus.Post(placeObjectOnMapEvent);
        }
Exemple #7
0
        public void AddStructureListener(AddStructureOnWorldMapEvent addStructureOnWorldMapEvent)
        {
            IsFreeAreaEvent isFreeAreaEvent = new IsFreeAreaEvent(addStructureOnWorldMapEvent.Position,
                                                                  addStructureOnWorldMapEvent.Structure.Definition.Size);

            _eventBus.Post(isFreeAreaEvent);

            if (!isFreeAreaEvent.IsFree)
            {
                // Debug.WriteLine("Area is blocked! " + isFreeAreaEvent);
                return;
            }

            Entity structure = CreateEntityBasedOnStructureType(addStructureOnWorldMapEvent);

            AddEntrance(structure, addStructureOnWorldMapEvent.Position +
                        addStructureOnWorldMapEvent.Structure.Definition.EntranceOffset);
            PlaceObjectOnMapEvent placeObjectOnMapEvent = new PlaceObjectOnMapEvent(structure,
                                                                                    addStructureOnWorldMapEvent.Position, addStructureOnWorldMapEvent.Structure.Definition.Size);

            _eventBus.Post(placeObjectOnMapEvent);
        }