Adventure Game Studio

AGS Support => Advanced Technical Forum => Topic started by: Spiderhund on Thu 02/04/2009 17:38:14

Title: Change room without the player
Post by: Spiderhund on Thu 02/04/2009 17:38:14
Hey.
I've ran into another problem with my game.
I've been looking through the manual and on the forums but found nothing.

I want to be able to change room without moving the player to that room so that when I return from that room the player will be in the exact same position as when I left.
It's because I want a map that the player can bring up and then close again when they're done using it. I don't what to use a GUI for this because I want some objects on it that the player should be able to move around on the map.

So the way I would do this is to when the player clicks on the "Open Map" button it will save his current Room ID, Position X and Position Y to 3 different Global Variables then using the "ChangeRoom" command to go to the map room. Then when the player clicks on the "Close Map" button (In the map room) It will use the 3 Global Variables (Room ID, Pos X, Pos Y) to restore where the player was when he opened the map.


Is this the best way to do this or is there another maybe easier way of doing it?
Thanks in advance.
Title: Re: Change room without the player
Post by: thezombiecow on Thu 02/04/2009 17:48:16
I tend to stick a camera character in the room, like cMapCamera. Make it invisible on room load with cMapCamera.Transparency = 100;

Then you can:

cMapCamera.SetAsPlayer() whenever you like to cut to that room, and cPlayer.SetAsPlayer to return to your chappy.
Title: Re: Change room without the player
Post by: monkey0506 on Thu 02/04/2009 17:49:00
Sure thing. Set your "map" room to not show the player (ShowPlayerCharacter in the room's properties pane to false). Then when you open the map:

player.ChangeRoom(MAP, player.x, player.y);

When you close the map:

player.ChangeRoom(player.PreviousRoom, player.x, player.y);

Edit: Just beat me zombie. But that would work as well. ;)
Title: Re: Change room without the player
Post by: thezombiecow on Thu 02/04/2009 17:49:16
Whoops sorry, quoted instesad of editing!

:)
Title: Re: Change room without the player
Post by: GarageGothic on Thu 02/04/2009 17:52:02
The coordinates are even optional parameters, so you can just do player.ChangeRoom(MAP) and player.ChangeRoom(player.PreviousRoom).
Title: Re: Change room without the player
Post by: monkey0506 on Thu 02/04/2009 17:56:56
I wasn't 100% sure if omitting the parameters defaulted to the character's current (X, Y) or what. The manual is a bit unclear on that. :P Of course you may then also want to make sure you claim the event for the map room. A lot of games use PlaceOnWalkableArea in eEventEnterRoomBeforeFadein globally, so in the room script you would additionally use:

function on_event(EventType event, int data) {
  if (event == eEventEnterRoomBeforeFadein) {
    ClaimEvent();
    return;
  }
}


Or just make sure the entire map is marked as walkable.
Title: Re: Change room without the player
Post by: Spiderhund on Thu 02/04/2009 21:43:04
Thanks guys :)
Now I should be able to add a (maybe kinda cool) feature I've been thinking of :D