diff options
| -rw-r--r-- | .gitignore | 5 | ||||
| -rw-r--r-- | README | 1 | ||||
| -rw-r--r-- | build/.empty | 0 | ||||
| -rw-r--r-- | includes/defines.h | 4 | ||||
| -rw-r--r-- | includes/powder.h | 4 | ||||
| -rw-r--r-- | src/interface.c | 48 | ||||
| -rw-r--r-- | src/main.c | 18 | ||||
| -rw-r--r-- | src/powder.c | 4 |
8 files changed, 43 insertions, 41 deletions
@@ -1,6 +1,7 @@ *.*.swp -powder-64-sse3 +.directory powder.def -powder-debug gmon.out *.*.orig +build/powder* +build/stamps/* @@ -0,0 +1 @@ +Hello diff --git a/build/.empty b/build/.empty new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/.empty diff --git a/includes/defines.h b/includes/defines.h index c22180f..2057fe0 100644 --- a/includes/defines.h +++ b/includes/defines.h @@ -61,7 +61,7 @@ extern unsigned char ZSIZE; #define STAMP_Y 4 #define STAMP_MAX 120 -#define NGOL 26 +#define NGOL 25 #define CIRCLE_BRUSH 0 #define SQUARE_BRUSH 1 @@ -136,7 +136,7 @@ int GSPEED; int love[XRES/9][YRES/9]; int lolz[XRES/9][YRES/9]; int gol[XRES][YRES]; -int gol2[XRES][YRES][NGOL]; +int gol2[XRES][YRES][NGOL+1]; int SEC; int SEC2; int console_mode; diff --git a/includes/powder.h b/includes/powder.h index 91d8f1f..b09ad5e 100644 --- a/includes/powder.h +++ b/includes/powder.h @@ -405,7 +405,7 @@ static const part_type ptypes[PT_NUM] = {"WAX", PIXPACK(0xF0F0BB), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 0, 10, 1, 100, SC_SOLIDS, R_TEMP+0.0f +273.15f, 44, "Wax. Melts at moderately high temperatures.", ST_SOLID, TYPE_SOLID, NULL}, {"MWAX", PIXPACK(0xE0E0AA), 0.3f, 0.02f * CFDS, 0.95f, 0.80f, 0.0f, 0.15f, 0.00f, 0.000001f* CFDS,2, 5, 0, 0, 2, 1, 25, SC_LIQUID, R_TEMP+28.0f+273.15f, 44, "Liquid Wax.", ST_LIQUID, TYPE_LIQUID, NULL}, {"PSCN", PIXPACK(0x805050), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "P-Type Silicon, Will transfer current to any conductor.", ST_SOLID, TYPE_SOLID|PROP_CONDUCTS, NULL}, - {"NSCN", PIXPACK(0x505080), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "N-Type Silicon, Will only transfer current to P-Type Silicon.", ST_SOLID, TYPE_SOLID|PROP_CONDUCTS, NULL}, + {"NSCN", PIXPACK(0x505080), 0.0f, 0.00f * CFDS, 0.90f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 0, 0, 1, 1, 1, 100, SC_ELEC, R_TEMP+0.0f +273.15f, 251, "N-Type Silicon, Will not transfer current to P-Type Silicon.", ST_SOLID, TYPE_SOLID|PROP_CONDUCTS, NULL}, {"LN2", PIXPACK(0x80A0DF), 0.6f, 0.01f * CFDS, 0.98f, 0.95f, 0.0f, 0.1f, 0.00f, 0.000f * CFDS, 2, 0, 0, 0, 0, 1, 30, SC_LIQUID, 70.15f, 70, "Liquid Nitrogen. Very cold.", ST_SOLID, TYPE_LIQUID, NULL}, {"INSL", PIXPACK(0x9EA3B6), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, 0.000f * CFDS, 0, 7, 0, 0, 10, 1, 100, SC_SPECIAL, R_TEMP+0.0f +273.15f, 0, "Insulator, does not conduct heat or electricity.", ST_SOLID, TYPE_SOLID, NULL}, {"BHOL", PIXPACK(0x202020), 0.0f, 0.00f * CFDS, 0.95f, 0.00f, 0.0f, 0.0f, 0.00f, -0.01f * CFDS, 0, 0, 0, 0, 0, 1, 100, SC_SPECIAL, R_TEMP+70.0f+273.15f, 255, "Black hole, sucks in other particles and heats up.", ST_NONE, TYPE_SOLID, NULL}, @@ -687,7 +687,7 @@ static part_transition ptransitions[PT_NUM] = #undef ST -static int grule[NGOL][10] = +static int grule[NGOL+1][10] = { // 0,1,2,3,4,5,6,7,8,STATES live=1 spawn=2 spawn&live=3 States are kind of how long until it dies, normal ones use two states(living,dead) for others the intermediate states live but do nothing {0,0,0,0,0,0,0,0,0,2},//blank diff --git a/src/interface.c b/src/interface.c index 1d1c258..af607c1 100644 --- a/src/interface.c +++ b/src/interface.c @@ -852,16 +852,16 @@ void login_ui(pixel *vid_buf) char *s_id,*u_e,*nres; s_id = strchr(res+3, ' '); *(s_id++) = 0; - + u_e = strchr(s_id, ' '); *(u_e++) = 0; - + strcpy(svf_user_id, res+3); strcpy(svf_session_id, s_id); nres = mystrdup(u_e); - + printf("\n{%s} {%s} {%s}\n", svf_user_id, svf_session_id, nres); - + if (!strncmp(nres, "ADMIN", 5)) { svf_admin = 1; @@ -3837,20 +3837,20 @@ char *console_ui(pixel *vid_buf,char error[255]) { //TODO: error messages, show mx /= sdl_scale; my /= sdl_scale; ed.focus = 1; - + clearrect(vid_buf, 0, 0, XRES+BARSIZE, 220);//anyway to make it transparent? draw_line(vid_buf, 1, 219, XRES, 219, 228, 228, 228, XRES+BARSIZE); drawtext(vid_buf, 100, 15, "Welcome to The Powder Toy console v.2 (by cracker64)\n" - "Current commands are quit, set, reset, load, create, file\n" - "You can set type, temp, ctype, life, x, y, vx, vy using this format ('set life particle# 9001')\n" - "You can also use 'all' instead of a particle number to do it to everything.\n" - "You can now use particle names (ex. set type all deut)\n" - "Reset works with pressure, velocity, sparks, temp (ex. 'reset pressure')\n" - "To load a save use load saveID (ex. load 1337)\n" - "Create particles with 'create deut x y' where x and y are the coords\n" - "Run scripts from file 'file filename'" - ,255, 187, 187, 255); - + "Current commands are quit, set, reset, load, create, file\n" + "You can set type, temp, ctype, life, x, y, vx, vy using this format ('set life particle# 9001')\n" + "You can also use 'all' instead of a particle number to do it to everything.\n" + "You can now use particle names (ex. set type all deut)\n" + "Reset works with pressure, velocity, sparks, temp (ex. 'reset pressure')\n" + "To load a save use load saveID (ex. load 1337)\n" + "Create particles with 'create deut x y' where x and y are the coords\n" + "Run scripts from file 'file filename'" + ,255, 187, 187, 255); + cc = 0; currentcommand = last_command; while(cc < 10) @@ -3862,18 +3862,18 @@ char *console_ui(pixel *vid_buf,char error[255]) { //TODO: error messages, show { if(cc<9) { currentcommand = currentcommand->prev_command; - } else if(currentcommand->prev_command!=NULL){ + } else if(currentcommand->prev_command!=NULL) { free(currentcommand->prev_command); currentcommand->prev_command = NULL; } cc++; - } + } else { break; } } - + if(error) drawtext(vid_buf, 15, 190, error,255, 187, 187, 255); ui_edit_draw(vid_buf, &ed); @@ -3905,18 +3905,18 @@ char *console_ui(pixel *vid_buf,char error[255]) { //TODO: error messages, show } else { - if(last_command!=NULL){ + if(last_command!=NULL) { currentcommand = last_command; for (cc = 0; cc<ci; cc++) { if(currentcommand->prev_command==NULL) ci = cc; - else + else currentcommand = currentcommand->prev_command; } strcpy(ed.str, currentcommand->command); ed.cursor = strlen(ed.str); } - else + else { ci = -1; strcpy(ed.str, ""); @@ -3924,10 +3924,10 @@ char *console_ui(pixel *vid_buf,char error[255]) { //TODO: error messages, show } } } - + } - - + + } int console_get_type(char *element) @@ -718,7 +718,7 @@ int parse_save(void *save, int size, int replace, int x0, int y0) ttv |= (d[p++]); parts[i-1].tmp = ttv; if(ptypes[parts[i-1].type].properties&PROP_LIFE && !parts[i-1].tmp) - for(q = 1; q<NGOL ; q++) { + for(q = 1; q<=NGOL ; q++) { if(parts[i-1].type==goltype[q-1] && grule[q][9]==2) parts[i-1].tmp = grule[q][9]-1; } @@ -2504,12 +2504,12 @@ int main(int argc, char *argv[]) return 0; } int process_command(pixel *vid_buf,char *console,char *console_error) { //TODO: delete with coords, have 'set' work with coords as well - -int nx,ny,i,j; -char *console2; -char *console3; -char *console4; -char *console5; + + int nx,ny,i,j; + char *console2; + char *console3; + char *console4; + char *console5; //sprintf(console_error, "%s", console); if(console && strcmp(console, "")!=0 && strncmp(console, " ", 1)!=0) { @@ -2566,7 +2566,7 @@ char *console5; if(ny < 0 || nx < 0 || ny > YRES || nx > XRES) sprintf(console_error, "Invalid Coordinates", console2); else - create_part(-1,nx,ny,j); + create_part(-1,nx,ny,j); } else if(strcmp(console2, "reset")==0 && console3) { @@ -2811,5 +2811,5 @@ char *console5; sprintf(console_error, "Invalid Command", console2); } return 1; - } +} diff --git a/src/powder.c b/src/powder.c index b2932d1..a378da4 100644 --- a/src/powder.c +++ b/src/powder.c @@ -1328,7 +1328,7 @@ void update_particles_i(pixel *vid, int start, int inc) neighbors = gol2[nx][ny][0]; if(neighbors==0 || !(ptypes[r&0xFF].properties&PROP_LIFE || !r&0xFF) || (r>>8)>=NPART) continue; - for ( golnum = 1; golnum<NGOL; golnum++) + for ( golnum = 1; golnum<=NGOL; golnum++) for ( goldelete = 0; goldelete<9; goldelete++) { if (neighbors==goldelete&&gol[nx][ny]==0&&grule[golnum][goldelete]>=2&&gol2[nx][ny][golnum]>=(goldelete%2)+goldelete/2) @@ -1345,7 +1345,7 @@ void update_particles_i(pixel *vid, int start, int inc) parts[r>>8].type = PT_NONE;//using kill_part makes it not work } gol2[nx][ny][0] = 0; - for ( z = 1; z<NGOL; z++) + for ( z = 1; z<=NGOL; z++) gol2[nx][ny][z] = 0; } if (createdsomething) |
