예제 #1
0
        public static void AddObstacle(Point position, ObstacleDefinition obstacleDefinition, JEventBus eventBus = null)
        {
            Obstacle obstacle = new Obstacle(obstacleDefinition);
            AddObstacleOnWorldMapEvent addObstacleOnWorldMapEvent =
                new AddObstacleOnWorldMapEvent(obstacle, position);

            BaseApi.SendEvent(eventBus, addObstacleOnWorldMapEvent);
        }
        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);
        }