Jorth words for pausing the game & displaying text
This commit is contained in:
parent
08e8926abb
commit
ae1b5712ef
BIN
footer.tif
BIN
footer.tif
Binary file not shown.
76
game.jor
76
game.jor
|
@ -77,6 +77,37 @@ defentity player
|
||||||
|
|
||||||
: now! ( timer -- ) ticks swap ! ;
|
: now! ( timer -- ) ticks swap ! ;
|
||||||
|
|
||||||
|
( F O O T E R )
|
||||||
|
var footer-y
|
||||||
|
0 footer-y !
|
||||||
|
|
||||||
|
: draw-footer footer-y @ split-screen ;
|
||||||
|
|
||||||
|
: text1 6 4 rot text ;
|
||||||
|
: text2 6 12 rot text ;
|
||||||
|
: clear s" " dup text1 text2 ;
|
||||||
|
|
||||||
|
var footer-timer
|
||||||
|
|
||||||
|
: move-footer-to ( ytarget -- )
|
||||||
|
footer-y @ swap ( from to -- )
|
||||||
|
footer-timer now!
|
||||||
|
begin
|
||||||
|
2dup 10 footer-timer lerp ( from to now -- )
|
||||||
|
dup footer-y !
|
||||||
|
over != ( from to -- )
|
||||||
|
while
|
||||||
|
suspend
|
||||||
|
repeat drop drop ;
|
||||||
|
|
||||||
|
: show-footer 24 move-footer-to ;
|
||||||
|
: hide-footer 0 move-footer-to ;
|
||||||
|
|
||||||
|
: say1 ( s -- ) clear text1 show-footer ^ENTER wait-key ;
|
||||||
|
: say2 ( s1 s2 -- ) clear text2 text1 show-footer ^ENTER wait-key ;
|
||||||
|
|
||||||
|
( T I C K )
|
||||||
|
|
||||||
: tick-player
|
: tick-player
|
||||||
0 ^LEFT key-down if 3 - W player entity.dir ! then
|
0 ^LEFT key-down if 3 - W player entity.dir ! then
|
||||||
^RIGHT key-down if 3 + E player entity.dir ! then
|
^RIGHT key-down if 3 + E player entity.dir ! then
|
||||||
|
@ -85,32 +116,30 @@ defentity player
|
||||||
^DOWN key-down if 3 + S player entity.dir ! then
|
^DOWN key-down if 3 + S player entity.dir ! then
|
||||||
player entity.y +! ;
|
player entity.y +! ;
|
||||||
|
|
||||||
var MODE-TRAVEL
|
var MODE-MOVE
|
||||||
var MODE-TEXT
|
var MODE-WAIT
|
||||||
var split-timer
|
|
||||||
|
|
||||||
: enter-mode-text
|
( J O B )
|
||||||
split-timer now!
|
: listen-for-jobs activate blah
|
||||||
MODE-TEXT @ ' tick redefine ;
|
begin receive
|
||||||
|
MODE-WAIT @ ' tick redefine
|
||||||
|
execute
|
||||||
|
hide-footer
|
||||||
|
MODE-MOVE @ ' tick redefine
|
||||||
|
again ;
|
||||||
|
|
||||||
: mode-travel
|
task const JOB
|
||||||
|
JOB listen-for-jobs
|
||||||
|
|
||||||
|
: hello-world s" Hello, world!" say1 s" How are you" s" today?" say2 ;
|
||||||
|
|
||||||
|
: mode-move
|
||||||
tick-player
|
tick-player
|
||||||
^SPACE key-pressed if
|
^SPACE key-pressed if
|
||||||
enter-mode-text
|
' hello-world JOB send
|
||||||
then ;
|
then ;
|
||||||
' mode-travel MODE-TRAVEL !
|
' mode-move MODE-MOVE !
|
||||||
|
' noop MODE-WAIT !
|
||||||
: mode-text-hide
|
|
||||||
24 0 10 split-timer lerp dup split-screen
|
|
||||||
0 = if ' mode-travel ' tick redefine then ;
|
|
||||||
|
|
||||||
: mode-text-show
|
|
||||||
0 24 10 split-timer lerp split-screen
|
|
||||||
^SPACE key-pressed if
|
|
||||||
split-timer now!
|
|
||||||
' mode-text-hide ' tick redefine
|
|
||||||
then ;
|
|
||||||
' mode-text-show MODE-TEXT !
|
|
||||||
|
|
||||||
: draw-player
|
: draw-player
|
||||||
player entity.x @
|
player entity.x @
|
||||||
|
@ -126,7 +155,8 @@ var split-timer
|
||||||
draw-player
|
draw-player
|
||||||
50 50 0 draw-sprite
|
50 50 0 draw-sprite
|
||||||
600 600 2 draw-sprite
|
600 600 2 draw-sprite
|
||||||
draw-screen ;
|
draw-screen
|
||||||
|
draw-footer ;
|
||||||
|
|
||||||
MODE-TRAVEL @ ' tick redefine
|
MODE-MOVE @ ' tick redefine
|
||||||
' full-draw ' draw redefine
|
' full-draw ' draw redefine
|
||||||
|
|
1
kbd.h
1
kbd.h
|
@ -16,6 +16,7 @@ unsigned char kbd_wait();
|
||||||
|
|
||||||
#define keyIsDown(k) (keybuf[k] & KEY_SIGNAL)
|
#define keyIsDown(k) (keybuf[k] & KEY_SIGNAL)
|
||||||
#define keyWasPressed(k) ((keybuf[k] & 0x0f) == KEY_PRESSED)
|
#define keyWasPressed(k) ((keybuf[k] & 0x0f) == KEY_PRESSED)
|
||||||
|
#define consumeKey(k) (keybuf[k] = keyWasPressed(k) ? KEY_DOWN : keybuf[k])
|
||||||
#define keyWasReleased(k) ((keybuf[k] & 0x0f) == KEY_RELEASED)
|
#define keyWasReleased(k) ((keybuf[k] & 0x0f) == KEY_RELEASED)
|
||||||
|
|
||||||
#define K_ESC 1
|
#define K_ESC 1
|
||||||
|
|
|
@ -115,7 +115,9 @@ void f_seremit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void f_keyWasPressed() {
|
void f_keyWasPressed() {
|
||||||
TOP().i = keyWasPressed(TOP().i);
|
int k = TOP().i;
|
||||||
|
TOP().i = keyWasPressed(k);
|
||||||
|
consumeKey(k);
|
||||||
}
|
}
|
||||||
void f_keyIsDown() {
|
void f_keyIsDown() {
|
||||||
TOP().i = keyIsDown(TOP().i);
|
TOP().i = keyIsDown(TOP().i);
|
||||||
|
@ -136,7 +138,7 @@ void f_splitscreen() {
|
||||||
DROP(1);
|
DROP(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void f_text() { // ( col y s -- )
|
void f_text() { // ( col line s -- )
|
||||||
text_draw(ST2().u + (ST1().u * PAGE_STRIDE), TOP().s);
|
text_draw(ST2().u + (ST1().u * PAGE_STRIDE), TOP().s);
|
||||||
DROP(3);
|
DROP(3);
|
||||||
}
|
}
|
||||||
|
|
2
tiff.c
2
tiff.c
|
@ -70,7 +70,7 @@ int tifLoadEGA(FILE *f, TifImageMeta_t meta, unsigned int vidOffset, int maxY, u
|
||||||
volatile unsigned char far *out = &VID[vidOffset];
|
volatile unsigned char far *out = &VID[vidOffset];
|
||||||
unsigned char b, g, r, i;
|
unsigned char b, g, r, i;
|
||||||
|
|
||||||
if (meta.width > MAX_WIDTH || (meta.width % 16) != 0) {
|
if (meta.width > MAX_WIDTH || (meta.width % 8) != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
setWriteMode(0);
|
setWriteMode(0);
|
||||||
|
|
2
tiff.h
2
tiff.h
|
@ -10,7 +10,7 @@ typedef struct {
|
||||||
unsigned long stripOffsets;
|
unsigned long stripOffsets;
|
||||||
} TifImageMeta_t;
|
} TifImageMeta_t;
|
||||||
|
|
||||||
#define MAX_WIDTH 320
|
#define MAX_WIDTH 328
|
||||||
|
|
||||||
TifImageMeta_t tifLoadMeta(FILE *f);
|
TifImageMeta_t tifLoadMeta(FILE *f);
|
||||||
int tifLoadEGA(FILE *f, TifImageMeta_t meta, unsigned int vidOffset, int maxY, unsigned int w);
|
int tifLoadEGA(FILE *f, TifImageMeta_t meta, unsigned int vidOffset, int maxY, unsigned int w);
|
||||||
|
|
Loading…
Reference in a new issue