alot of code changed; first try to move level loader out of C engine; not working yet
[awish.git] / src / title.c
blobf86247ba1e9054c83628eddb6401ebc68c8126e1
1 /*
2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation, either version 3 of the License, or
5 * (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <string.h>
19 #include "title.h"
21 #include "resfile.h"
22 #include "video.h"
23 #include "mainloop.h"
24 #include "vm.h"
25 #include "gameglobals.h"
26 #include "game.h"
29 static void scrDrawCrashMask (SDL_Surface *frame, int phase) {
30 if (phase <= 0) {
31 SDL_Rect dst;
33 dst.x = 0;
34 dst.y = 0;
35 dst.w = frame->w;
36 dst.h = frame->h;
37 SDL_FillRect(frame, &dst, palette[0]);
38 } else if (phase < 5) {
39 for (int y = 0; y < 20; ++y) {
40 for (int x = 0; x < 16; ++x) {
41 blitSurface2x(frame, x*20, y*10, banks[CONST_BANK_FG_TILES].spr[16-phase][0]);
48 static void frmTitleDraw (SDL_Surface *frame) {
49 blitSurface(frame, 0, 0, backs[0]);
50 scrDrawCrashMask(frame, vmGVars[GVAR_TITLE_PHASE]);
54 static void frmTitleKey (SDL_KeyboardEvent *key) {
55 if (key->type == SDL_KEYDOWN) {
56 switch (key->keysym.sym) {
57 case SDLK_ESCAPE:
58 case SDLK_F12:
59 vmGVars[GVAR_KEY_QUIT] = 1;
60 break;
61 case SDLK_SPACE:
62 case SDLK_RETURN:
63 vmGVars[GVAR_KEY_START] = 1;
64 break;
65 default: ;
71 void setMainLoopTitle (void) {
72 frameCB = frmTitleDraw;
73 keyCB = frmTitleKey;
74 gameRSTCB = NULL;
75 beforeVMCB = NULL;
76 vmMapGetCB = NULL;
77 vmMapSetCB = NULL;
78 vmPaused = 0;