Exemplo n.º 1
0
        public override BaseTileDataInstance Duplicate()
        {
            EventTileDataInstance copy = new EventTileDataInstance();

            copy.Clone(this);
            return(copy);
        }
Exemplo n.º 2
0
 public override void Deselect()
 {
     selectedEventTile = null;
     selectedTile = null;
     LevelDisplayControl.ClearSelectionBox();
     EditorControl.PropertyGridControl.CloseProperties();
 }
Exemplo n.º 3
0
 // Create the room transition state for this warp point.
 public RoomTransition CreateTransition(EventTileDataInstance destination)
 {
     int dir = destination.Properties.GetInteger("face_direction", Directions.Down);
     if (warpType == WarpType.Stairs)
         return new RoomTransitionFade();
     return new RoomTransitionSplit();
 }
Exemplo n.º 4
0
 //-----------------------------------------------------------------------------
 // Constructors
 //-----------------------------------------------------------------------------
 public EventTile()
 {
     roomControl		= null;
     eventData		= null;
     position		= Vector2F.Zero;
     size			= Point2I.One;
     properties		= new Properties();
     collisionBox	= new Rectangle2I(0, 0, 16, 16);
 }
Exemplo n.º 5
0
        //-----------------------------------------------------------------------------
        // Constructors
        //-----------------------------------------------------------------------------

        public EventTile()
        {
            roomControl  = null;
            eventData    = null;
            position     = Vector2F.Zero;
            size         = Point2I.One;
            properties   = new Properties();
            collisionBox = new Rectangle2I(0, 0, 16, 16);
        }
Exemplo n.º 6
0
        // Create the room transition state for this warp point.
        public RoomTransition CreateTransition(EventTileDataInstance destination)
        {
            int dir = destination.Properties.GetInteger("face_direction", Directions.Down);

            if (warpType == WarpType.Stairs)
            {
                return(new RoomTransitionFade());
            }
            return(new RoomTransitionSplit());
        }
Exemplo n.º 7
0
 public bool FindDestinationInLevel(string id, Level level, out Room destRoom, out EventTileDataInstance destEvent)
 {
     for (int x = 0; x < level.Width; x++) {
         for (int y = 0; y < level.Height; y++) {
             if (FindDestinationInRoom(id, level.GetRoomAt(x, y), out destRoom, out destEvent))
                 return true;
         }
     }
     destRoom = null;
     destEvent = null;
     return false;
 }
Exemplo n.º 8
0
 public bool FindDestinationInRoom(string id, Room room, out Room destRoom, out EventTileDataInstance destEvent)
 {
     for (int i = 0; i < room.EventData.Count; i++) {
         if (room.EventData[i].Properties.GetString("id", "") == id) {
             destRoom = room;
             destEvent = room.EventData[i];
             return true;
         }
     }
     destRoom = null;
     destEvent = null;
     return false;
 }
Exemplo n.º 9
0
        // Warp to the destination point.
        public void Warp(int warpDirection)
        {
            EventTileDataInstance destination = FindDestinationPoint();

            if (destination != null)
            {
                AudioSystem.PlaySound(GameData.SOUND_ROOM_EXIT);
                RoomControl.Warp(this, destination);
                RoomControl.Player.BeginNormalState();
            }
            else
            {
                Console.WriteLine("Invalid warp destination!");
            }
        }
Exemplo n.º 10
0
        //-----------------------------------------------------------------------------
        // Static methods
        //-----------------------------------------------------------------------------

        // Instantiate an event tile from the given event-data.
        public static EventTile CreateEvent(EventTileDataInstance data)
        {
            EventTile tile;

            // Construct the tile.
            if (data.Type == null)
            {
                tile = new EventTile();
            }
            else
            {
                tile = (EventTile)data.Type.GetConstructor(Type.EmptyTypes).Invoke(null);
            }

            tile.position  = data.Position;
            tile.eventData = data;
            tile.size      = data.Size;
            tile.properties.SetAll(data.BaseProperties);
            tile.properties.SetAll(data.Properties);
            tile.properties.BaseProperties = data.Properties;

            return(tile);
        }
Exemplo n.º 11
0
 public void RemoveEventTile(EventTileDataInstance eventTile)
 {
     eventData.Remove(eventTile);
 }
Exemplo n.º 12
0
        // Return a copy of this tile grid.
        public TileGrid Duplicate()
        {
            TileGrid duplicate = new TileGrid(size, layerCount);

            // Duplicate tiles.
            for (int x = 0; x < size.X; x++) {
                for (int y = 0; y < size.Y; y++) {
                    for (int i = 0; i < layerCount; i++) {
                        TileGridTile tile = tiles[x, y, i];
                        if (tile.Tile != null && tile.Location == new Point2I(x, y)) {
                            TileDataInstance tileCopy = new TileDataInstance();
                            tileCopy.Clone(tile.Tile);
                            duplicate.PlaceTile(tileCopy, x, y, i);
                        }
                    }
                }
            }

            // Duplicate event tiles.
            foreach (EventTileDataInstance eventTile in eventTiles) {
                EventTileDataInstance copy = new EventTileDataInstance();
                copy.Clone(eventTile);
                duplicate.AddEventTile(copy);
            }

            return duplicate;
        }
Exemplo n.º 13
0
 public void AddEventTile(EventTileDataInstance eventTile)
 {
     eventTiles.Add(eventTile);
 }
Exemplo n.º 14
0
        //-----------------------------------------------------------------------------
        // Static methods
        //-----------------------------------------------------------------------------
        // Instantiate an event tile from the given event-data.
        public static EventTile CreateEvent(EventTileDataInstance data)
        {
            EventTile tile;

            // Construct the tile.
            if (data.Type == null)
                tile = new EventTile();
            else
                tile = (EventTile) data.Type.GetConstructor(Type.EmptyTypes).Invoke(null);

            tile.position	= data.Position;
            tile.eventData	= data;
            tile.size		= data.Size;
            tile.properties.SetAll(data.BaseProperties);
            tile.properties.SetAll(data.Properties);
            tile.properties.BaseProperties	= data.Properties;

            return tile;
        }
Exemplo n.º 15
0
        // Draw an event tile.
        private void DrawEventTile(Graphics2D g, EventTileDataInstance eventTile, Color color)
        {
            Sprite spr = eventTile.Sprite;

            // Select different sprites for certain events.
            if (eventTile.Type == typeof(WarpEvent)) {
                string warpType = eventTile.Properties.GetString("warp_type");
                if (warpType == "tunnel")
                    spr = GameData.SPR_EVENT_TILE_WARP_TUNNEL;
                else if (warpType == "stairs")
                    spr = GameData.SPR_EVENT_TILE_WARP_STAIRS;
                else if (warpType == "entrance")
                    spr = GameData.SPR_EVENT_TILE_WARP_ENTRANCE;
            }

            // Draw the sprite.
            if (spr != null) {
                g.DrawSprite(spr, eventTile.Room.Zone.ImageVariantID, eventTile.Position);
            }
            else {
                Rectangle2I r = new Rectangle2I(eventTile.Position, eventTile.Size * GameSettings.TILE_SIZE);
                g.FillRectangle(r, Color.Blue);
            }
        }
Exemplo n.º 16
0
 public override void OnEnd()
 {
     selectedTile		= null;
     selectedEventTile	= null;
 }
Exemplo n.º 17
0
 //-----------------------------------------------------------------------------
 // Overridden Methods
 //-----------------------------------------------------------------------------
 public override void OnBegin()
 {
     selectedTile		= null;
     selectedEventTile	= null;
     EditorControl.HighlightMouseTile = false;
 }
Exemplo n.º 18
0
 // Delete an already-placed event tile.
 public void DeleteEventTile(EventTileDataInstance eventTile)
 {
     eventTile.Room.RemoveEventTile(eventTile);
     editorControl.OnDeleteObject(eventTile);
 }
Exemplo n.º 19
0
        // Draw an event tile.
        private void DrawEventTile(Graphics2D g, EventTileDataInstance eventTile, Point2I position, Color drawColor)
        {
            SpriteAnimation spr = eventTile.CurrentSprite;
            int imageVariantID = eventTile.Properties.GetInteger("image_variant");
            if (imageVariantID < 0)
                imageVariantID = eventTile.Room.Zone.ImageVariantID;

            // Select different sprites for certain events.
            if (eventTile.Type == typeof(NPCEvent)) {
                eventTile.SubStripIndex = eventTile.Properties.GetInteger("direction", 0);
            }
            else if (eventTile.Type == typeof(WarpEvent)) {
                string warpTypeStr = eventTile.Properties.GetString("warp_type", "tunnel");
                WarpType warpType = (WarpType) Enum.Parse(typeof(WarpType), warpTypeStr, true);
                if (warpType == WarpType.Entrance)
                    spr = GameData.SPR_EVENT_TILE_WARP_ENTRANCE;
                else if (warpType == WarpType.Tunnel)
                    spr = GameData.SPR_EVENT_TILE_WARP_TUNNEL;
                else if (warpType == WarpType.Stairs)
                    spr = GameData.SPR_EVENT_TILE_WARP_STAIRS;
            }

            // Draw the sprite.
            if (!spr.IsNull) {
                g.DrawAnimation(spr, imageVariantID, editorControl.Ticks, position, drawColor);
            }
            else {
                Rectangle2I r = new Rectangle2I(position, eventTile.Size * GameSettings.TILE_SIZE);
                g.FillRectangle(r, Color.Blue);
            }
        }
Exemplo n.º 20
0
 public void AddEventTile(EventTileDataInstance eventTile)
 {
     eventData.Add(eventTile);
     eventTile.Room = this;
 }
Exemplo n.º 21
0
        public override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);

            Point2I mousePos	= new Point2I(e.X, e.Y);
            Room	room		= LevelDisplayControl.SampleRoom(mousePos);
            Point2I tileCoord	= LevelDisplayControl.SampleTileCoordinates(mousePos);

            if (e.Button == MouseButtons.Left && room != null) {
                if (!editorControl.EventMode) {
                    if (System.Windows.Forms.Control.ModifierKeys == Keys.Shift) {
                        selectedRoom = room;
                        Point2I levelTileCoord = LevelDisplayControl.ToLevelTileCoordinates(room, Point2I.Zero);
                        LevelDisplayControl.SetSelectionBox(levelTileCoord, room.Size);
                        EditorControl.PropertyGridControl.OpenProperties(room.Properties, room);
                    }
                    else {
                        // Select tiles.
                        selectedTile = room.GetTile(tileCoord, editorControl.CurrentLayer);

                        if (selectedTile != null) {
                            Point2I levelTileCoord = LevelDisplayControl.ToLevelTileCoordinates(room, tileCoord);
                            LevelDisplayControl.SetSelectionBox(levelTileCoord, Point2I.One);
                            EditorControl.PropertyGridControl.OpenProperties(selectedTile.Properties, selectedTile);
                        }
                        else {
                            LevelDisplayControl.ClearSelectionBox();
                            EditorControl.PropertyGridControl.CloseProperties();
                        }
                    }
                }
                else {
                    // Select events.
                    selectedEventTile = LevelDisplayControl.SampleEventTile(mousePos);

                    if (selectedEventTile != null) {
                        Point2I levelTileCoord = LevelDisplayControl.ToLevelTileCoordinates(room, tileCoord);
                        LevelDisplayControl.SetSelectionBox(levelTileCoord, Point2I.One);
                        EditorControl.PropertyGridControl.OpenProperties(selectedEventTile.Properties, selectedEventTile);
                    }
                    else {
                        LevelDisplayControl.ClearSelectionBox();
                        EditorControl.PropertyGridControl.CloseProperties();
                    }
                }
            }
        }
Exemplo n.º 22
0
 public EventTileDataInstance CreateEventTile(EventTileData data, Point2I position)
 {
     EventTileDataInstance dataInstance = new EventTileDataInstance(data, position);
     AddEventTile(dataInstance);
     return dataInstance;
 }