add mary animation, scripting, day/night tiles
This commit is contained in:
parent
530d79c09b
commit
5e98b5f095
|
@ -65,6 +65,8 @@ array frames
|
|||
( 0: car ) 3 1 0 2 frame
|
||||
( 1: pete stand ) 11 9 7 5 frame
|
||||
( 2: pete walk ) 12 10 8 6 frame
|
||||
( 3: mary stand ) 17 20 22 24 frame
|
||||
( 4: mary walk ) 19 21 23 25 frame
|
||||
|
||||
: sprindex ( dir frame ) 2 << frames + + b@ ;
|
||||
: defstatic ( frame -- ) create b, does> b@ sprindex ;
|
||||
|
@ -83,5 +85,6 @@ array frames
|
|||
14 defsingle {chair}
|
||||
15 defsingle {pete-bed}
|
||||
16 defsingle {horse}
|
||||
17 defsingle {mary}
|
||||
3 defstatic {mary}
|
||||
3 4 2 5 defanim {mary-walk}
|
||||
18 defsingle {phone}
|
||||
|
|
BIN
footer2.tif
Executable file
BIN
footer2.tif
Executable file
Binary file not shown.
8
game.jor
8
game.jor
|
@ -32,13 +32,17 @@ var player.prevdir
|
|||
1 const MOVING
|
||||
2 const DRIVING
|
||||
4 const NOCLIP
|
||||
8 const ISMARY
|
||||
|
||||
: player.driving? player.state DRIVING f@ ;
|
||||
|
||||
: {player}
|
||||
player.driving? if {car}
|
||||
else player.state MOVING f@ if {pete-walk}
|
||||
else {pete-stand} then then ;
|
||||
else player.state MOVING f@ if
|
||||
player.state ISMARY f@ if {mary-walk} else {pete-walk} then
|
||||
else
|
||||
player.state ISMARY f@ if {mary} else {pete-stand} then
|
||||
then then ;
|
||||
|
||||
: player.canmove? ( x y -- )
|
||||
player.state NOCLIP f@ not if
|
||||
|
|
|
@ -30,6 +30,10 @@ intern petehous.jor
|
|||
intern road.jor
|
||||
intern jeanne.jor
|
||||
intern trail1.jor
|
||||
intern mpete.jor
|
||||
intern mroad.jor
|
||||
intern mjeanne.jor
|
||||
intern mtrail1.jor
|
||||
|
||||
:noname loadfile ; checkpoint _loadlevel
|
||||
' _loadlevel ' loadlevel redefine
|
||||
|
|
2
map.jor
2
map.jor
|
@ -4,6 +4,8 @@ var tileselect
|
|||
: mouseworldpos mousepos scrollpos +pos ;
|
||||
: mousetile mouseworldpos world>tile ;
|
||||
: tile ( x y -- ptr ) mapsize drop * + map + ;
|
||||
: day s" TILES.TIF" loadtiles invalidate-map ;
|
||||
: night s" NTILES.TIF" loadtiles invalidate-map ;
|
||||
|
||||
1 const WALKABLE
|
||||
2 const DRIVABLE
|
||||
|
|
38
mjeanne.jor
Executable file
38
mjeanne.jor
Executable file
|
@ -0,0 +1,38 @@
|
|||
( J E A N N E )
|
||||
|
||||
16 18 W ' {horse} defentity e_chuck
|
||||
14 22 N ' {car} defentity car
|
||||
|
||||
e_chuck :touch
|
||||
mary say" Good old Chuck."
|
||||
chuck say" * n e i g h *\(Hi Mary!)"
|
||||
;entity
|
||||
|
||||
car :touch
|
||||
move-player 1 player.state DRIVING f!
|
||||
;entity
|
||||
|
||||
:noname
|
||||
0 player.state DRIVING f!
|
||||
:| CHUCK-HOME flag@ if e_chuck yield then
|
||||
player.driving? not CHUCK-FOLLOW flag@ not and if car yield then
|
||||
done |; ' entities redefine
|
||||
|
||||
:|
|
||||
touch-begin S leaving? dup
|
||||
if player.driving? not
|
||||
if pete say" I'm not walking."
|
||||
else move-player 24 7 road.jor queue-level
|
||||
then
|
||||
then
|
||||
touch-next 6 21 2= dup
|
||||
if player.driving? not
|
||||
if noone say" * knock knock *"
|
||||
jeanne say" C'mon in, Ma."
|
||||
move-player
|
||||
then
|
||||
then
|
||||
touch-last |; ' player-touch redefine
|
||||
|
||||
s" jeanne.map" load-map
|
||||
; ' onload redefine
|
36
mpete.jor
Executable file
36
mpete.jor
Executable file
|
@ -0,0 +1,36 @@
|
|||
( P E T E )
|
||||
|
||||
13 8 N ' {car} defentity pcar
|
||||
32 5 W ' {horse} defentity e_chuck
|
||||
|
||||
car :touch
|
||||
move-player
|
||||
1 player.state DRIVING f!
|
||||
;entity
|
||||
|
||||
e_chuck :touch
|
||||
mary say" Did Pete steal you?\Again!?"
|
||||
chuck say" * n e i g h *\(Hi Mary!)"
|
||||
;entity
|
||||
|
||||
:noname
|
||||
:| car yield
|
||||
( player.driving? not if car yield then ) ( todo: mary's car )
|
||||
CHUCK-STOLEN flag@ if e_chuck yield then
|
||||
done |; ' entities redefine
|
||||
|
||||
:|
|
||||
touch-begin S leaving? dup
|
||||
if player.driving? not
|
||||
if mary say" I shouldn't leave my car here."
|
||||
else move-player 5 10 mroad.jor queue-level
|
||||
then
|
||||
then
|
||||
touch-next 12 7 2= player.driving? not and dup
|
||||
if mary say" I don't really want to\call on Pete right now." then
|
||||
touch-next 30 7 2= dup
|
||||
if mary say" Yech, what a miserable\swamp." then
|
||||
touch-last |; ' player-touch redefine
|
||||
|
||||
s" pete.map" load-map
|
||||
; ' onload redefine
|
29
mroad.jor
Executable file
29
mroad.jor
Executable file
|
@ -0,0 +1,29 @@
|
|||
( O V E R W O R L D )
|
||||
|
||||
24 4 N ' {horse} defentity chuck
|
||||
|
||||
:noname
|
||||
:| CHUCK-HOME flag@ if chuck yield then
|
||||
done |; ' entities redefine
|
||||
:|
|
||||
touch-begin E leaving? dup
|
||||
if mary say" I've no reason to head out that way." then
|
||||
touch-next 5 9 2= dup
|
||||
if move-player 13 12 mpete.jor queue-level then
|
||||
touch-next 13 6 2= dup
|
||||
if move-player 38 71 mtrail1.jor queue-level then
|
||||
touch-next 24 6 2= dup
|
||||
if move-player 13 22 mjeanne.jor queue-level then
|
||||
touch-next 39 33 2= dup
|
||||
if mary say" I heard they'll be building\a new play structure this\summer." then
|
||||
touch-next 32 36 2= dup
|
||||
if mary say" I'm done for the day." then
|
||||
touch-next 35 39 2= dup
|
||||
if mary say" Community center." then
|
||||
touch-next tile b@ 17 = dup
|
||||
if mary say" Oh, I wouldn't want to\be a bother." then
|
||||
touch-last |; ' player-touch redefine
|
||||
|
||||
s" road.map" load-map
|
||||
; ' onload redefine
|
||||
|
29
mtrail1.jor
Executable file
29
mtrail1.jor
Executable file
|
@ -0,0 +1,29 @@
|
|||
( T R A I L 1 )
|
||||
|
||||
39 71 N ' {car} defentity car
|
||||
|
||||
car :touch
|
||||
move-player 1 player.state DRIVING f!
|
||||
;entity
|
||||
|
||||
:noname
|
||||
0 player.state DRIVING f!
|
||||
|
||||
:| player.driving? not if car yield then
|
||||
done |; ' entities redefine
|
||||
|
||||
:|
|
||||
touch-begin S leaving? dup
|
||||
if player.driving? not CHUCK-FOLLOW flag@ not and
|
||||
if mary say" I'd best drive."
|
||||
else move-player 13 7 mroad.jor queue-level
|
||||
then
|
||||
then
|
||||
touch-next 3 56 2= dup
|
||||
if mary say" What on Earth...?"
|
||||
say" Is this where...?"
|
||||
then
|
||||
touch-last |; ' player-touch redefine
|
||||
|
||||
s" trail1.map" load-map
|
||||
; ' onload redefine
|
BIN
ntiles.tif
Executable file
BIN
ntiles.tif
Executable file
Binary file not shown.
BIN
sprite.tif
BIN
sprite.tif
Binary file not shown.
28
testbed.c
28
testbed.c
|
@ -83,6 +83,24 @@ void fillMap() {
|
|||
}
|
||||
}
|
||||
|
||||
void readTiles(char *filename) {
|
||||
FILE *f;
|
||||
TifImageMeta_t meta;
|
||||
|
||||
f = fopen(filename, "rb");
|
||||
meta = tifLoadMeta(f);
|
||||
tifLoad(f, meta, tiles, NUM_TILES * 16, 16, 4);
|
||||
tifLoadEGA(f, meta, OFF_TILES, NUM_TILES * 16, 16);
|
||||
fclose(f);
|
||||
|
||||
loadTiles(OFF_TILES, tiles);
|
||||
}
|
||||
|
||||
void f_loadtiles() {
|
||||
readTiles(TOP().s);
|
||||
DROP(1);
|
||||
}
|
||||
|
||||
void game_init() {
|
||||
FILE *f;
|
||||
TifImageMeta_t meta;
|
||||
|
@ -106,12 +124,6 @@ void game_init() {
|
|||
tifLoadEGA(f, meta, 0, 48, 336);
|
||||
fclose(f);
|
||||
|
||||
f = fopen("TILES.TIF", "rb");
|
||||
meta = tifLoadMeta(f);
|
||||
tifLoad(f, meta, tiles, NUM_TILES * 16, 16, 4);
|
||||
tifLoadEGA(f, meta, OFF_TILES, NUM_TILES * 16, 16);
|
||||
fclose(f);
|
||||
|
||||
f = fopen("SPRITE.TIF", "rb");
|
||||
meta = tifLoadMeta(f);
|
||||
tifLoad(f, meta, sprites, NUM_SPRITES * 16, 16, 5);
|
||||
|
@ -122,7 +134,8 @@ void game_init() {
|
|||
tifLoadEGA(f, meta, OFF_PORTRAITS, NUM_PORTRAITS * 32, 32);
|
||||
fclose(f);
|
||||
|
||||
loadTiles(OFF_TILES, tiles);
|
||||
readTiles("TILES.TIF");
|
||||
|
||||
loadMap(map, 100, 100);
|
||||
scroll(0, 0);
|
||||
}
|
||||
|
@ -245,6 +258,7 @@ void game_f_init(char *exe) {
|
|||
CDEF("mapsize!", f_mapsize_set);
|
||||
CDEF("mousepos", f_mousepos);
|
||||
CDEF("mousebuttons", f_mousebuttons);
|
||||
CDEF("loadtiles", f_loadtiles);
|
||||
CDEF("unfuck", tile_init);
|
||||
|
||||
f_loadjor("gameboot.jor");
|
||||
|
|
Loading…
Reference in a new issue