lessee, i got the sword in now. you can swing it in all 4 dirs like in ffa. well, the next step is either doing the inventory screen, or doing monsters. i'll have to decide which i want to do by the time i'm done exercising. [away] inventory it is. it seems i wasn't exactly sure what i needed out of an inventory screen and i didn't really put enough thought into that. after my shower i'll begin delving into it. [away]
i'm interested in a system much like diablo, where different things have different sizes. for instance, a sword might be 1x3, a suit of armor might be 2x3, a spellbook might be 2x2 or 1x2. immediately two problems present themselves. if we're talking about standard 8x8px unit size, there's only enough room for 2x2 along the hud at the bottom, during regular play. i could center them, or display from the top down and just not draw the bottom units.. but for the swords in diablo that wouldn't work out so well, because you can tell which kind of sword you have by its hilt. i guess it would be best to just have an arbitrary draw point on the item for the hud and draw over it with the map, or just use a sub-bitmap and not draw outside the clip area. as long as we make it look like it lines up with 8x8px gridset in the inventory panel, we should be fine.
the next step is the inventory panel itself. there are two parts to it: the inventory grid, and the description area. the inventory panel should fill the lower half of the screen:
the bottom two rows are the hud. when in inventory mode, you should be able to get the cursor down there and use the equip-slots as storage as well. i'm not sure if it makes sense to let the use put armor or a helmet down there instead, though.._______________________________________ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |x|x|x|x|x|x|x|x|x|x|x|x|x|x|x|x|x|x|x|x| |x|_|_|_|_|_|_|_|_|_|_|x|_|a|a|_|h|h|_|x| |x|_|_|_|_|_|_|_|_|_|_|x|_|a|a|_|h|h|_|x| |x|_|_|_|_|_|_|_|_|_|_|x|_|a|a|_|_|_|_|x| |x|_|_|_|_|_|_|_|_|_|_|x|x|x|x|x|x|x|x|x| |x|x|x|x|x|x|x|x|x|x|x|x|_|_|_|_|_|_|_|_| |_|1|1|_|2|2|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|1|1|_|2|2|_|_|_|_|_|_|_|_|_|_|_|_|_|_|
ok for now we'll be needing a 1x3 sword graphic that we'll be able to put on the hud and in inventory. we're going to also need to make an inventory panel that we'll bring up when the user presses start (enter). for now let's make the panel and sword graphic. [working]
ok i've got the panel and sword graphic done. i've updated hud1.bmp to have a grid in it too. i'm going to substitute a faked sword placement on the hud so that i can see what it'll look like in game for now. [working] its ok that i don't see any info about the sword except the graphic. now i need to have a new mode, inventory. let's make a new branch and work on that. [working]
well i can bring up the inventory with enter now, but you can't do anything in it yet. two things i need to do: one, i can't exit on just any keypress. it should only exit on enter. two, i need to add a cursor that you can move around the inventory with. i lost sleep yesterday so i'm going to have to leave it here and catch up. screenshot and i'm off.

apparently i picked the wrong week to do this. i might need to change the time limit around. the idea was to attack the project at full force, so that i'd have enough time to do it all.. because it was sunday that i broke, i couldn't recover monday and tuesday. its wednesday now, and is also payday, which means most of my day was spent running around getting things done. i don't plan on wasting the rest of the night, though. before i get to the code i'm going to hit the exercise bike and get some focus. [away]
well, i wound up spending most of my thoughts thinking about the exercising, but i think my mind is a little more awake now so i'm going to try to do something with it.
if i'm not mistaken, i left off in the middle of trying to get npc into a global space that would let everything in other files see it. i was going to add in a new bool record in the files at the end, whether or not there was an npc or not, and then if there was, the map could update the npc data and turn it on or off from there. let's go to that now. [working] i'm going to set it up with 0 and 1 as the bool, i can easily change that to be an npc counter. [working]
ok there's the multiple declaration errors i was expecting to have. you can't just throw globals into headers willy-nilly. you need to keep the actual object somewhere in a source file, and give an external name so that everything can use it. so thats what i need to figure out, where should npc things be going.. and the answer seems obvious, .h/.cpp pair for npc. [working]
wow it feels like a mess, but everything's locked away in a header/source pair now. there are alot of extern now, and every instantiation of an object is in a source file. i should have been doing this for a longer time than i have been. well, i just have to get used to it, is all. now its time to add a line to most of the map files and two to the room i'm locking the chick in. [working]
i'm starting the demo out on outermap and you have to find the girl. sure, she's in southmap, and you don't get anything for finding her except that you can use her and her message was loaded from file. but i'm one step ahead of where i was before, and i'm set up to add any number of npcs. one thing to note is that the text was over too far. one part of the reason is that i actually format to start where FFA does. the other part is, after i get npc.y there's a space before the message text starts - the file pointer is at the space just after npc.y's int. so i gotta fgetc or fseek one position over. [working]
odd, there's a caret at the end of the line. the fgets must retreive the '\n' as well and when allegro tries to output it, it doesn't know how so it tries to display it as a control sequence. i'll have to change all '\n' to '\0' to signal end of string.. [working] yeah thats exactly it. fixed. i should be able to add a 2nd npc rather easily, to the same room. i'll basically change the 1 to a 2 and i'll use the bool as an int instead. making necessary changes for a 2nd girl.. [working]
hmm both girls say the same thing? they don't in the file.. their position info is different but their message isn't. let's see now.. is it because i'm using the same buffer? [working] oh whoops the npc's don't have their own message string. i'm using a single global string. i think that in the npc Use() function i aught to set that global message string to whatever their message is, though.. [working]
there it is, got it going. next! actually, what is next.. i could give the npcs multi-directional capability too but i don't really care atm about that. i need to either have npcs do more, or i need to move on to another kind of interaction. i guess i need to look at my task list. [looking]
oops i just realized that npcs should be able to walk through each other the way i have it now. i'll have to put that on the fixme list. [adding] well, it seems to me i should be getting more than one line of text for an npc. on top of that, there aught to be pages too. on top of even that, there aught to be special sequences for flag setting so we can signal that an event occurred.. but maybe not. right now i don't need that level of interaction, and its not a requirement i want to fulfill for this project.
i was thinking that i'd have shops fire and work like in dragon warrior/quest, but really it isn't a great way to do it. neither is final fantasy (or adventure). i think i want a system like diablo where you have your item screen pop up and an opposing shop item screen pop up on the other side and you'd pick up and drop items from one window to the other to buy/sell. a button would pick it up and the same button pressed again would put it down. i'm not sure if having it so if you hold the button it simulates a drag, and when you let go it drops.. if that would be any more or less efficient.. probably not. anyways before i can do a shop like that i need to have the inventory screen working first.
before i can have an inventory screen, i have to have items... so lets look at that aspect. every item will do something somehow. i want to have it so that if you press a button (ignoring use-actions like npcs) the hero will do some action that the item will provide access to. in the case of a weapon, you would swing it. in the case of a potion, you would drink it, and it would disappear (i assume). in the case of a spellbook, you would cast it and lose MP. same would go for a weapon skill, but i'm not planning on going that far yet. that would require more thought than this. for now i just want it so buttons work like they do in z:la - you put the cursor over the item you want to set to the button and just press the button to set it. before i do that up, i need to set things up for an action to take place.
it seems pretty obvious to me right now that i need to give the player a sword. before i set up an inventory and have a sword in it for you to equip, i need to show it on the hud and give the player that action to perform. i'll set the sword to button B because thats where i like to have it, and show it on the bottom of the screen like in z:la. then i'll attempt to implement that. new project branch!
[setting up] ok i'm gonna be nasty and basically rip part of z:la's hud right out and paste it right on actionRPG.. [working] now we need to grab sprites for the sword. i'll just dump them into a file, where there will be 8 pictures of it in different directions, left to right. it will point at 0' and increas 45' each picture, causing a ccw rotation. actually i'll need a new object won't i? i'll save creation of a new type until i really need to. lets grab the sprites for now. [working]
ok there we are. now i'm going to make a sword h/cpp and just drop globals in. i'm not going to make a struct or class until there's a need for it. i plan on using a lookup table for the x and y components of where the bitmap will be positioned, instead of trying to do silly math about it. the lookups will be put there too. i'd like a graphic for the hero's attack, to show he's busy, but for now, meh. let's forget about everything except getting the sword swinging. [working]
i'm going to cheat a little. i know that the action goes through 90+45 degrees of motion, but i think the last frame won't be shown if we just go that far. if i actually set the "max" to 180 it will go through 4 frames and when it hits 180 we won't see the one frame "too far" because the action will be done. its hard to explain.. the 180th degree won't be shown, thats when the action is done. thats the only way i can really explain it. the last frame of what it looks like it should show won't show. anyways.. [working]
ah here we go, its the cutoff that i was trying to get at. for any of the ccw rotations i could put in the start angle and have it go 180' and it looks exactly right. i don't have 5 frames because the last frame cuts off before its shown. i need to try to go to the 5th frame so that the 4th frame shows for the same amount of time as the others. with the cw rotation for east attacks, i have to start it a full 45' further ahead because of the cutoff. ok no i don't really understand it. if i did a round instead of a straight integer cast i'd probably get more accurate results. oh hell lets just do that. [working] no thats not it.. why am i missing the first frame of the east attack? if i give it a starting point of 180 it looks right, but the code looks wrong. i know its a rounding error, but i can't pinpoint it. [working]
ha now that i got the rounding part fixed it goes through the whole 180'. ffa actually did it with a (180-45 = 135' ) sweep. its way past bedtime, i gotta head off now. i'll leave with a screenshot of the now properly looking sword. i couldn't get sin/cos to work right for me so i just built tables to get it going. screencap!

so i'm sort of cheating, only i lost all of yesterday because i didn't have a way to compensate for my failure. i really just needed to calm down and reassess the situation. i was trying to do too many things at once. i needed to see the steps between having things now and having things the way i see they aught to work.
in order to get one npc to load on one screen, i need to expose an NPC instance to the map class. i can hand a pointer in from the load function, but i don't want to do it that way. as soon as i do that, i'll have to add more and more as the list of things to load grows. the answer really is that i need a global header that holds my NPC instance. with that, i'll need a header to define the NPC type and a source to contain its code. if the map can see the NPC instance, it can load info into it and flag it as on - and main will be able to check the flag and deal with the npc appropriately. i can't do that directly, however. if i move the code directly to its own source, then the hero references in the NPC code will break. i have to make hero global too. that means also that hero's code will need to be put in a header and source. another point i missed was that map needs to become global too, as its used by both the hero and npc classes.
the trick is to build this in such a way as to allow me to compile it as i make changes. first i'll need to make a globals.h. i can push most of the code from main right into it. [working] hmm, everything had to be moved into it in order for it to compile. too many dependancies on globals. a few items should have been incorporated into the map structure that i didn't put in. [working] ok i now have a globals header. i should be able to include it into map.cpp and i should be able to access the npc from it. i'll have to add an npcActive bool now. [working]
now i can load the npc's new position and turn her on or off.
i went to bed a little early last night because of my arm hurting. i don't remember ever coding so much that i forgot i had a coffee there. with my arm still a little sore and progress going alot slower than i think it should be, i'm going to slow down a little and make sure i'm using my time wisely.
i left off with a working map structure that will load from disk and allow up to 40 tiles of warp points per map. i've demonstrated that it works with a series of free-standing maps. the maps were hand-coded in a text format, and when any substantial amount of content needs to be built, i'll have to make a map editor with c#. for now, i have enough maps to get some other stuff done.
i have a big list of things still to do, so i have to decide what's next. before i build the maps i need to populate them with more stuff, as well as add more interaction than just movement. the most obvious thing to add would seem to me to be battle, but it involves many steps. first i'll need to add something to a map that will move about on its own. that could be a townsperson, i suppose. if i add a townsperson i'll have to allow it to block, and i'll have to allow it to say something canned. that also means having a 'use' button.
so i guess the first thing to do is to grab a graphic. [working] alright i have a woman, grabbed her out of wendel in ffa. what i'm going to do now is drop her in code to be anywhere and just let her roam on every map. she'll probably fly around super quick at first, i won't bother timing her. [working]
ugh she reminds me of a bug, the way she moves around, like a beetle or something. junebug? anyways let's slow her down so i can actually get a chance to talk to her. i'll just throw a countdown timer on her that she'll have to get past before she can try to move. [working] ok now she moves at a good speed. now lets have it so we can run into her, and her us. [working] got that in. i already see that i have to make a generic class and do some polymorphism here. if i want to add even 1 more actor to the fray, i'll have to add alot more code, one more after that will be unthinkable - especially when i see clearly how i need to do this.
in any case, let's try and 'use' the npc. i'm going to tag the buttons B and A to Z and X right now. since i'm using readkey() i can't directly add joystick support. hmm, actually.. if i added a timeout to the hero too i could remove the readkey().. [working] i just noticed that if you walk to just before when you'd walk off the screen horizontally, you can walk through the solid tiles of the map. i'll have to clean that up sometime. i really aught to make a text file and drop that in there. "fixme.txt" is born! [working] ok.
so now i'm going to add in using the npc, in the case of an npc, its default usage is talking. that means we actually need a wholly different mode of play to support it. we'll be displaying stuff as before, but we need to display a window and some text on it. if the player presses a button, the message goes away and we're done with the message display. we'll give the npc a single line of text for now. [working]
well its set up to use the npc, but i forgot to do the direction stuff. for now we'll just do it in the direction we're always facing, downward. [working] hmm its time to have all four directions. let's show what i've got so far:

if you're on the lower half of the screen, the text will display on the top. the npc moves around randomly at a slow-ish pace. i guess i have to add directions to the hero so we can direct our actions. shouldn't be too hard.
i'll just have a new bitmap pointer to a sprite sheet and each direction will be on it, in the order i've been doing things so far: N S E W. i'll need a direction indicator too, i'll make a new namespaced enum for that. i'll have a sub-bitmap to point at the current sprite we aught to be drawing. [working]
ok i have direction changing and doing the use with all direcitons now.
ok there's another issue i don't like about the input, it isn't responsive. when i press a direction sometimes it won't fire. i know its because i'm in a 'thinking' state, and at that point input is meaningless. when i have a proper transitioning between tiles, a 'walk action', that any form of input during that will be ignored, but there won't be a need to have the thinking state pause. i'll add that to fixme.txt. [working]
now i can use the npc. z-ordering needs to be fixed still for the draw, but i'll wait on that for now. the npc is being generated within the program itself, and isn't a part of the map file yet. in fact, the npc shows up on every map you're on, because i just wanted to get her in there. its time to stick her in a room and lock her there. we'll pick southmap to be her new home. we're going to need an NPC array so we can add more than one, and the file will have her line of text. [working]
ok i just tried rebuilding it so that there was an NPC list in the map.. and i forgot that it used the hero in its checks. its been bugging me for a while that the hero and NPC classes weren't the same thing, because so far they do almost the same things. in fact i'm sure i need a list of sprite objects that work alongside the map. i don't think the map should own them, because they need to see it as much as it needs to see them. i guess i'll need to have a pointer to a list of sprite objects from the map, and a pointer to the map from each object in the sprite list. it'll have to be more than a list though, factory is the word that comes to mind...
no i need to think of it in terms of how i'm going to use it. for instance, when the map does its Load function, it needs to have a place to put all of the new npcs, and it needs to be able to clear all of the npcs that were already loaded into the list... i'm getting confused. don't i just need to find a way to get the npcs to see the hero? wouldn't that be accomplished if the map had a hero member, and they all had pointers to their owning map? [working]
urgh the source tree is massively confusing now. i'm full of 'has not been declared' and 'incomplete type' errors.. all of my objects need circular references, and i'm failing miserably at that. i need extern somehow. i'm going to build a test project and see if i can get what i'm aiming at here in something simpler. [working]
oh, i see. let's try rebuilding from the last step, and we'll move this failure into a failure folder. [working] so all i wanted to do was to have it so that we had a list of NPCs. i needed the map to load the npc data from the maps and store it in an already existing list of NPCs. so i need to give the map a pointer to a list. that's a good first step. [working] i am utterly crushed.
things aren't going well, i'm taking a break.
i don't know if that was long enough or not but i need to look at this in terms of how its going to be used in the end. basically i think i need 3 things. i need (1) sprites, (2) maps, and (3) scripts. i need all 3 of these things to be able to see one another. the sprite might collide with a script trigger, the script triggered might do a map load, and the map load might need to alter the list of sprites. the sprite might collide with the map instead, or walk off the map the map to reload and alter the sprite list. a ton of different paths, three important relationships. i need to figure out how they're supposed to relate to one another.
i need some way to store and relate all of the sprites, the singlular map, and the scripts and their triggers. that's where i'm at right now. the most obvious thing first off is that the map needs access to the collection of sprites that are active. when we need to load a map, we need to clear all but the hero entry and rebuild it from info in the map file. when we attempt to update the sprite's positions, they need to be able to see if there is a clear path to their goal. we need to access the map to do that.
map.Load()
{
spriteList.Clear();
// load sprite info from file
spriteList.Add (...);
}
sprite.TryMove()
{
if (map.IsPassable(this.colTile[0])
&& map.IsPassable(this.colTile[1]))
{
// ...
}
}
so we need to create a map object and spriteList object first. then we point their pointers at each other. let's see if we can start there and work towards where i left off. [working]no, the battle is lost. i simply don't know enough.
signing off, 4p.
[away]
its 9:07p and i don't know if i can do this but i'm going to try anyways. over in #GD i was talking with gbgames, rtwilli, and viridian. it seems i'm going to have to suck it up and start using globals. i'm still not sure how to structure this, but i need to expose a global NPC list to the map structure. i need to make a globals header, to start with. [working]
no i just can't start with the last project. i need a basic object type and i need to get hero and npc to derive from them. how far back do i go? 02 loading maps just had the player and the map, i'll go back to that. i need a global object list. the first of those objects must be the player. i'm just too confused right now. i can't proceed.
ravuya suggested to me that i do a 1 week game. i'm not against setting a time limit on myself, because i want to learn about projecting a timeline and seeing how bad of a job i did. the idea is to figure out how much of a game i think i can get done within the span of a week. i have to take into account what i think i can do, what obstacles will slow me down, and what the final product should look like.
well the first thing i have to do is see how much time i ACTUALLY have. i need to look at every day in the coming week (including today) and plan out how many hours i've got. let's say i've got 6 hours for sleep on the days i have fully available, and that i work from 8a-3p. those numbers will change, obviously, but i'll work around them and see what i can do.
jan27 (sat) 12p-12a available (12h) jan28 (sun) 12a-2a available (2h) 2a-8a sleep 8a-12a available (16h) jan29 (mon) all hours unavailable jan30 (tues) all hours unavailable jan31 (wed) 12a-2a unavailable 2a-8a sleep 8a-3p work 3p-12a available (9h) feb01 (thurs) 12a-2a available (2h) 2a-8a sleep 8a-3p work 3p-12a available (9h) feb02 (fri) 12a-2a available (2h) 2a-8a sleep 8a-3p work 3p-12a available (9h) feb03 (sat) 12a-2a available (2h) 2a-8a sleep 8a-12p available (4h)at 12p on sat feb 04, i'll have made it to a full week. let's sum up the total hours.. [working] i've got 67 hours total. really i've got 5 big blocks of time and a smaller 'finish up' block. ok, so let's look at it in terms of the blocks.
block 1: sat jan 27 14 hours, starting at 12pm block 2: sun jan 28 16 hours, starting at 8am block 3: wed jan 31 11 hours, starting at 3pm block 4: thurs feb 01 11 hours, starting at 3pm block 5: fri feb 02 11 hours, starting at 3pm block 6: sat feb 03 4 hours, starting at 8amok, i'm already into the start of block one, so i need to get started. i need to set aside time for: design, code, debugging, and content. i know that code and debugging happen at the same time, and that content is added in as i go. so really they all happen at the same time. instead i guess i should just look at the content as being the focus of the timeline. let's look at that then.
so what i want is to make a really shitty actionRPG-type game. that's pretty open-ended, but i'm going to have ffa and z:la in my mind as i go. i'm going to restrict to their screensize, and build with their map sizing in mind. i'm going to use the api i know, allegro. i need to set a couple of conditions that are required to be fulfilled before i can consider this project as being done. if i add to it along the way that's fine, as long as these objectives are cleared:
it seems like i should set aside a time limit for each component, and an order in which i should build things. i'll have to maybe think about working out how to add every component and what order i need to do that in.. hmm i'm not sure...
i guess the best thing right now is to start with a map structure. let's get a project on the go. [working] ok i'm that far. my graphics will emulate a gameboy's screen, so i'll change the window size and doublesize so we're at 2x. [working] i'm tempted to make an allegro font for ffa, but its unnecessary atm. so what's the first thing i aught to do? a map? let's set up a basic map.
so aside from how the tiles will look, they're also going to need to have collision info in them. for now i expect that i only need to deny or allow passage through a tile, and nothing more.
so right now we need a map that has an array of entries that's 20x16 tiles. each tile needs to reference picture data and needs a flag indicating passability. we'll hardcode something in for now. how will each tile reference its picture data? i'm going to go with an xy pair. it will be understood that we're going to be referencing a bitmap with all of the tiles we're using. i'll even assume that the top half of the bitmap aught to have passable tiles and the bottom half will will have nonpassable. i should have enough info to get this started. i'm going to start with the first map you ever see in ffa, the tiger arena. [working]
the map tile bitmap is 256x256px, or 32x32 tiles of 8x8px. solid tiles start halfway down. [working] already this is proving time consuming. instead of worrying about it being pretty i think i aught to just build something more quickly, just a ring of solid tiles around a passable middle. [working] yeah that was easier. so now i have a map structure that has passability data and a visual representation, and i've created one for use:

the obvious thing now is to drop our hero in. there's no point in putting map links unless there's a hero to use them. i'll start with a simple non-animating hero sprite, when the player presses an arrow key he'll move in a direction a full tile at a time. we'll do collision in a moment. [working]the player collides with the map using its lower half. that's two map tile checks. [working] ok that works as expected.

the obvious thing for me to do now is to drop in an exit to let the player move to the next screen. i'll need an array of maps which i'll load at the start of the game, but for now i can keep using static maps. the mapset should still be ok to have. i'll make a 2x2 array of maps. [working]
ok you can now move between adjacent rooms in a mapset, through their openings. there's no smooth transition or anything, but thats something i can do another time.

at this point the next thing to do seems to be having portal tiles. if you touch a portal tile with your colliding area, then you would be transported to the destination map. how should that work? will there be an array of teleporting tiles in each map, and you have the player collision area check and see if its on any of them after a move? generally special tiles take up 2x2 tile areas, perhaps thats how it should be. step on a special tile and have it trigger. so i need an array of trigger tile areas that right now will only be used to teleport. i need to think more on this.
first, let's drop a few new tiles in on the tileset. we're going for stairwells right now. [working] now lets drop a staircase on map 0,1. [working] at this point the map needs a structure to hold destination info for the 4 stair tiles, and we need a mechanism to test for warping. because only one map has warps, we can't keep using our map creation. maps are going to become unique from here on in, and we need to rebuild our setup to account for that.
to start, we need to load our maps from file. another thing that needs to change is the way we're transitioning offscreen. every map should be set up with warp info for when a player walks offscreen. this means that we only need one map again. let's go back to the one-map method and load the single map from a file. [working]
ok i couldn't get ifstream::open() to work, so i dropped back to cstdio. i didn't want to keep beating my head on the wall, and i was throwing all my time away. i just lost a full hour to that. anyways, where was i.. i wanted to redo the map structure to allow for warp points. the first thing was warping using the edges of the screen. the first four lines after the data will be destination maps if the player walks offscreen. they are ordered N S E W. i'll need a 2nd map to do this with. [working]
ok i've added a new structure, Warp. i'm going to manually test for map-out and load new maps manually using the four special warps: northWarp, southWarp, eastWarp, and westWarp. there will be cases when an exit will not scroll to a new map, such when exiting a house or shop. i've added a boolean to the warp structure, scrollToDest, to let the game know whether or not to scroll to the next map. let's see if we can get the special screen edge warps to work. [working]

ok they work great. now i can easily add tile warps. time for a little break to talk to my gf on her break.
that was a cinch. let's open the upper room's south exit and have it warp to another map instead of scroll. i need to make a map with a house and door on it so that i can have something that makes a little bit of sense. warping to an empty map for no reason is never fun. [working] there, we have a house. the floor graphics don't make alot of sense now but who cares, i have a working series of maps with warp points that look different.

you can walk off the south exit and it warps you to an arbitrary point on another map. about the only thing to do now is make a map builder, so we can make maps more efficiently. i don't actually need any more maps for the moment, i'm good with what i have. let's turn to other points now.
it might be time to let the player have direction facing. in order to do any interaction with townsfolk, we need to be able to direct it first. i actually have to stop for a bit, my right hand and arm hurt.