Overview
Comment: | Add game.c file (not implemented much) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9d982f06554c0889e750465fa73e1c2f |
User & Date: | user on 2020-10-20 23:21:48 |
Other Links: | manifest | tags |
Context
2020-11-16
| ||
04:51 | Implement properly (hopefully) the mouse button down event in edit.c and game.c check-in: 8119f365c2 user: user tags: trunk | |
2020-10-20
| ||
23:21 | Add game.c file (not implemented much) check-in: 9d982f0655 user: user tags: trunk | |
2019-07-15
| ||
03:27 | Add gameover,key_ignored,changed variables for future use check-in: b39ff189b9 user: user tags: trunk | |
Changes
Modified compile from [076c585a54] to [9cfb5e24a6].
1 2 3 | #!/bin/bash -- set -e test -f CFLAGS || echo xxx > CFLAGS | | | 1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash -- set -e test -f CFLAGS || echo xxx > CFLAGS test "xx$CFLAGS" = "x`cat CFLAGS`" || rm bindings.o class.o picture.o function.o exec.o game.o edit.o || true echo "x$CFLAGS" > CFLAGS test "x$EXE" = "x" && EXE=~/bin/heromesh echo 'Flags: ' "$CFLAGS" echo 'Target filename: ' "$EXE" test instruc -nt instruc.h && node instruc.js > instruc.h test instruc.js -nt instruc.h && node instruc.js > instruc.h test names.js -nt names.h && node names.js > names.h |
︙ | ︙ | |||
21 22 23 24 25 26 27 28 29 30 31 32 | test class.c -nt class.o && bash class.c echo '* function' test function.c -nt function.o && bash function.c echo '* picture' test picture.c -nt picture.o && bash picture.c echo '* exec' test exec.c -nt exec.o && bash exec.c echo '* edit' test edit.c -nt edit.o && bash edit.c echo '* main' bash main.c echo 'DONE' | > > | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | test class.c -nt class.o && bash class.c echo '* function' test function.c -nt function.o && bash function.c echo '* picture' test picture.c -nt picture.o && bash picture.c echo '* exec' test exec.c -nt exec.o && bash exec.c echo '* game' test game.c -nt game.o && bash game.c echo '* edit' test edit.c -nt edit.o && bash edit.c echo '* main' bash main.c echo 'DONE' |
Modified edit.c from [edf43e2b05] to [3d325ead70].
1 2 3 4 5 6 7 8 9 10 11 | #if 0 gcc ${CFLAGS:--s -O2} -c -Wno-multichar edit.c `sdl-config --cflags` exit #endif #include "SDL.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "sqlite3.h" #include "smallxrm.h" | > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #if 0 gcc ${CFLAGS:--s -O2} -c -Wno-multichar edit.c `sdl-config --cflags` exit #endif /* This program is part of Free Hero Mesh and is public domain. */ #include "SDL.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "sqlite3.h" #include "smallxrm.h" |
︙ | ︙ |
Modified exec.c from [4a41b22985] to [5cd8b5f27b].
︙ | ︙ | |||
222 223 224 225 226 227 228 229 230 | const char*execute_turn(int key) { if(setjmp(my_env)) return my_error; changed=0; key_ignored=0; lastimage_processing=0; vstackptr=0; return 0; } | > > > | 222 223 224 225 226 227 228 229 230 231 232 233 | const char*execute_turn(int key) { if(setjmp(my_env)) return my_error; changed=0; key_ignored=0; lastimage_processing=0; vstackptr=0; if(key_ignored && changed) return "Invalid use of IgnoreKey"; if(key_ignored && changed) return "Invalid use of IgnoreKey"; return 0; } |
Added game.c version [39a9a6de05].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | #if 0 gcc ${CFLAGS:--s -O2} -c -Wno-multichar game.c `sdl-config --cflags` exit #endif /* This program is part of Free Hero Mesh and is public domain. */ #include "SDL.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "sqlite3.h" #include "smallxrm.h" #include "heromesh.h" #include "quarks.h" #include "cursorshapes.h" static void redraw_game(void) { char buf[32]; SDL_Rect r; int x,y; r.x=r.y=0; r.h=screen->h; r.w=left_margin; SDL_FillRect(screen,&r,0xF0); r.x=left_margin-1; r.w=1; SDL_FillRect(screen,&r,0xF7); r.x=left_margin; r.w=screen->w-r.x; SDL_FillRect(screen,&r,back_color); for(x=1;x<=pfwidth;x++) for(y=1;y<=pfheight;y++) draw_cell(x,y); x=y=0; SDL_GetMouseState(&x,&y); SDL_LockSurface(screen); if(left_margin>=88) { snprintf(buf,32,"%5d/%5d",level_ord,level_nindex); draw_text(0,0,buf,0xF0,0xFC); snprintf(buf,32,"%5d",level_id); draw_text(0,8,"ID",0xF0,0xF7); draw_text(48,8,buf,0xF0,0xFF); snprintf(buf,32,"%5d",level_version); draw_text(0,16,"VER",0xF0,0xF7); draw_text(48,16,buf,0xF0,0xFF); snprintf(buf,32,"%5d",level_code); draw_text(0,24,"CODE",0xF0,0xF7); draw_text(48,24,buf,0xF0,0xFF); } else { snprintf(buf,32,"%5d",level_ord); draw_text(16,0,buf,0xF0,0xFC); snprintf(buf,32,"%5d",level_id); draw_text(0,8,"I",0xF0,0xF7); draw_text(16,8,buf,0xF0,0xFF); snprintf(buf,32,"%5d",level_version); draw_text(0,16,"V",0xF0,0xF7); draw_text(16,16,buf,0xF0,0xFF); snprintf(buf,32,"%5d",level_code); draw_text(0,24,"C",0xF0,0xF7); draw_text(16,24,buf,0xF0,0xFF); } snprintf(buf,8,"%2dx%2d",pfwidth,pfheight); draw_text(8,32,buf,0xF0,0xFD); draw_text(24,32,"x",0xF0,0xF5); SDL_UnlockSurface(screen); SDL_Flip(screen); } static int game_command(int prev,int cmd,int number,int argc,sqlite3_stmt*args,void*aux) { switch(cmd) { case '\' ': // Play a move return number; case '^E': // Edit return -2; case '^Q': // Quit return -1; default: return prev; } } static void set_caption(void) { const char*r; char*s; sqlite3_str*m; int c; optionquery[1]=Q_gameTitle; r=xrm_get_resource(resourcedb,optionquery,optionquery,2)?:"Free Hero Mesh - ~ - Game"; m=sqlite3_str_new(0); c=strcspn(r,"~"); sqlite3_str_append(m,r,c); if(r[c]=='~') { sqlite3_str_appendall(m,basefilename); sqlite3_str_appendall(m,r+c+1); } s=sqlite3_str_finish(m); if(s) SDL_WM_SetCaption(s,s); else SDL_WM_SetCaption("Free Hero Mesh","Free Hero Mesh"); sqlite3_free(s); } void run_game(void) { int i; SDL_Event ev; set_caption(); load_level(level_id); redraw_game(); while(SDL_WaitEvent(&ev)) { switch(ev.type) { case SDL_VIDEOEXPOSE: redraw_game(); break; case SDL_QUIT: exit(0); break; case SDL_MOUSEBUTTONDOWN: if(ev.button.x<left_margin) { break; } // fallthrough case SDL_KEYDOWN: i=exec_key_binding(&ev,0,0,0,game_command,0); if(i==-1) exit(0); if(i==-2) { main_options['e']=1; return; } redraw_game(); break; } } } |
Modified heromesh.h from [25a549cebd] to [5840e387ed].
︙ | ︙ | |||
195 196 197 198 199 200 201 202 203 204 205 | void pfunlink(Uint32 n); void pflink(Uint32 n); Uint32 objalloc(Uint16 c); void annihilate(void); const char*execute_turn(int key); // == edit == void run_editor(void); | > > > > | 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | void pfunlink(Uint32 n); void pflink(Uint32 n); Uint32 objalloc(Uint16 c); void annihilate(void); const char*execute_turn(int key); // == game == void run_game(void); // == edit == void run_editor(void); |
Modified main.c from [71afcff0a8] to [d1369c2f61].
1 | #if 0 | | | 1 2 3 4 5 6 7 8 9 | #if 0 gcc ${CFLAGS:--s -O2} -o ${EXE:-~/bin/heromesh} main.c class.o picture.o bindings.o function.o exec.o game.o edit.o smallxrm.o sqlite3.o `sdl-config --cflags --libs` -ldl -lpthread exit #endif /* This program is part of Free Hero Mesh and is public domain. */ |
︙ | ︙ | |||
789 790 791 792 793 794 795 | v=malloc(strtoll(v+1,0,0)); fatal("%p %p :: %lld\n",v,stack_protect_mark,(long long)(((char*)stack_protect_mark)-v)); } if(v[1]) stack_protect_mark=((char*)stack_protect_mark)+strtoll(v+1,0,0); } #endif | < | 789 790 791 792 793 794 795 796 797 798 799 800 801 802 | v=malloc(strtoll(v+1,0,0)); fatal("%p %p :: %lld\n",v,stack_protect_mark,(long long)(((char*)stack_protect_mark)-v)); } if(v[1]) stack_protect_mark=((char*)stack_protect_mark)+strtoll(v+1,0,0); } #endif int main(int argc,char**argv) { int optind=1; while(argc>optind && argv[optind][0]=='-') { int i; const char*s=argv[optind++]; if(s[1]=='-' && !s[2]) break; for(i=1;s[i];i++) main_options[s[i]&127]=1; |
︙ | ︙ |