mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-09-03 04:52:35 +02:00
2
Makefile
2
Makefile
@@ -2,7 +2,7 @@ SOURCES := src/*.c
|
||||
|
||||
CFLAGS := -w -std=c99 -D_POSIX_C_SOURCE=200112L -Iincludes/
|
||||
OFLAGS := -O3 -ffast-math -ftree-vectorize -funsafe-math-optimizations
|
||||
LFLAGS := -lSDL -lm -lbz2
|
||||
LFLAGS := -B static -lSDL -lm -lbz2
|
||||
MFLAGS_SSE3 := -march=native -DX86 -DX86_SSE3 -msse3
|
||||
MFLAGS_SSE2 := -march=native-DX86 -DX86_SSE2 -msse2
|
||||
MFLAGS_SSE := -march=native -DX86 -DX86_SSE
|
||||
|
0
includes/font.h
Normal file → Executable file
0
includes/font.h
Normal file → Executable file
@@ -1012,7 +1012,7 @@ void textnpos(char *s, int n, int w, int *cx, int *cy)
|
||||
//TODO: Implement Textnheight for wrapped text
|
||||
for(; *s; s++)
|
||||
{
|
||||
if(!n) {
|
||||
if(!n){
|
||||
break;
|
||||
}
|
||||
x += font_data[font_ptrs[(int)(*(unsigned char *)s)]];
|
||||
@@ -1306,8 +1306,8 @@ void draw_parts(pixel *vid)
|
||||
float pt = R_TEMP;
|
||||
if(GRID_MODE)
|
||||
{
|
||||
for(ny=0; ny<YRES; ny++)
|
||||
for(nx=0; nx<XRES; nx++)
|
||||
for(ny=0;ny<YRES;ny++)
|
||||
for(nx=0;nx<XRES;nx++)
|
||||
{
|
||||
if(ny%(4*GRID_MODE)==0)
|
||||
blendpixel(vid, nx, ny, 100, 100, 100, 80);
|
||||
|
@@ -246,7 +246,7 @@ void ui_edit_draw(pixel *vid_buf, ui_edit *ed)
|
||||
|
||||
if(ed->str[0])
|
||||
{
|
||||
if(ed->multiline) {
|
||||
if(ed->multiline){
|
||||
drawtextwrap(vid_buf, ed->x, ed->y, ed->w-14, str, 255, 255, 255, 255);
|
||||
drawtext(vid_buf, ed->x+ed->w-11, ed->y-1, "\xAA", 128, 128, 128, 255);
|
||||
} else {
|
||||
@@ -258,7 +258,7 @@ void ui_edit_draw(pixel *vid_buf, ui_edit *ed)
|
||||
drawtext(vid_buf, ed->x, ed->y, ed->def, 128, 128, 128, 255);
|
||||
if(ed->focus)
|
||||
{
|
||||
if(ed->multiline) {
|
||||
if(ed->multiline){
|
||||
textnpos(str, ed->cursor, ed->w-14, &cx, &cy);
|
||||
} else {
|
||||
cx = textnwidth(str, ed->cursor);
|
||||
@@ -290,7 +290,7 @@ void ui_edit_process(int mx, int my, int mb, ui_edit *ed)
|
||||
else
|
||||
str = ed->str;
|
||||
|
||||
if(ed->multiline) {
|
||||
if(ed->multiline){
|
||||
if(mx>=ed->x+ed->w-11 && mx<ed->x+ed->w && my>=ed->y-5 && my<ed->y+11)
|
||||
{
|
||||
ed->focus = 1;
|
||||
@@ -1680,7 +1680,7 @@ void menu_ui_v3(pixel *vid_buf, int i, int *sl, int *sr, int b, int bq, int mx,
|
||||
SLALT = h;
|
||||
SEC2 = -1;
|
||||
}
|
||||
else {
|
||||
else{
|
||||
*sl = h;
|
||||
}
|
||||
}
|
||||
@@ -1699,7 +1699,7 @@ void menu_ui_v3(pixel *vid_buf, int i, int *sl, int *sr, int b, int bq, int mx,
|
||||
SLALT = h;
|
||||
SEC2 = -1;
|
||||
}
|
||||
else {
|
||||
else{
|
||||
*sr = h;
|
||||
}
|
||||
}
|
||||
@@ -2619,7 +2619,7 @@ int report_ui(pixel* vid_buf, char *save_id)
|
||||
if(!b)
|
||||
break;
|
||||
}
|
||||
while(!sdl_poll()) {
|
||||
while(!sdl_poll()){
|
||||
fillrect(vid_buf, 200, 150, (XRES+BARSIZE-400), (YRES+MENUSIZE-300), 0,0,0, 255);
|
||||
drawrect(vid_buf, 200, 150, (XRES+BARSIZE-400), (YRES+MENUSIZE-300), 255, 255, 255, 255);
|
||||
|
||||
@@ -2636,10 +2636,10 @@ int report_ui(pixel* vid_buf, char *save_id)
|
||||
|
||||
drawrect(vid_buf, (XRES+BARSIZE-400)+150, (YRES+MENUSIZE-150)-18, 50, 18, 255, 255, 255, 255);
|
||||
drawtext(vid_buf, (XRES+BARSIZE-400)+163, (YRES+MENUSIZE-150)-13, "Report", 255, 255, 255, 255);
|
||||
if(mx>(XRES+BARSIZE-400)+150 && my>(YRES+MENUSIZE-150)-18 && mx<(XRES+BARSIZE-400)+200 && my<(YRES+MENUSIZE-150)) {
|
||||
if(mx>(XRES+BARSIZE-400)+150 && my>(YRES+MENUSIZE-150)-18 && mx<(XRES+BARSIZE-400)+200 && my<(YRES+MENUSIZE-150)){
|
||||
fillrect(vid_buf, (XRES+BARSIZE-400)+150, (YRES+MENUSIZE-150)-18, 50, 18, 255, 255, 255, 40);
|
||||
if(b) {
|
||||
if(execute_report(vid_buf, save_id, ed.str)) {
|
||||
if(b){
|
||||
if(execute_report(vid_buf, save_id, ed.str)){
|
||||
info_ui(vid_buf, "Success", "This save has been reported");
|
||||
return 1;
|
||||
} else {
|
||||
@@ -2647,7 +2647,7 @@ int report_ui(pixel* vid_buf, char *save_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(mx>200 && my>(YRES+MENUSIZE-150)-18 && mx<250 && my<(YRES+MENUSIZE-150)) {
|
||||
if(mx>200 && my>(YRES+MENUSIZE-150)-18 && mx<250 && my<(YRES+MENUSIZE-150)){
|
||||
fillrect(vid_buf, 200, (YRES+MENUSIZE-150)-18, 50, 18, 255, 255, 255, 40);
|
||||
if(b)
|
||||
return 0;
|
||||
@@ -2756,7 +2756,7 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||
if(status == 200)
|
||||
{
|
||||
pixel *full_save = prerender_save(data, data_size, &imgw, &imgh);
|
||||
if(full_save!=NULL) {
|
||||
if(full_save!=NULL){
|
||||
save_pic = rescale_img(full_save, imgw, imgh, &thumb_w, &thumb_h, 2);
|
||||
data_ready = 1;
|
||||
free(full_save);
|
||||
@@ -2837,12 +2837,12 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||
|
||||
ccy = 0;
|
||||
for(cc=0; cc<info->comment_count; cc++) {
|
||||
if((ccy + 72 + ((textwidth(info->comments[cc])/(XRES+BARSIZE-100-((XRES/2)+1)-20)))*12)<(YRES+MENUSIZE-50)) {
|
||||
if((ccy + 72 + ((textwidth(info->comments[cc])/(XRES+BARSIZE-100-((XRES/2)+1)-20)))*12)<(YRES+MENUSIZE-50)){
|
||||
drawtext(vid_buf, 60+(XRES/2)+1, ccy+60, info->commentauthors[cc], 255, 255, 255, 255);
|
||||
ccy += 12;
|
||||
ccy += drawtextwrap(vid_buf, 60+(XRES/2)+1, ccy+60, XRES+BARSIZE-100-((XRES/2)+1)-20, info->comments[cc], 255, 255, 255, 185);
|
||||
ccy += 10;
|
||||
if(ccy+52<YRES+MENUSIZE-50) { //Try not to draw off the screen.
|
||||
if(ccy+52<YRES+MENUSIZE-50){ //Try not to draw off the screen.
|
||||
draw_line(vid_buf, 50+(XRES/2)+2, ccy+52, XRES+BARSIZE-50, ccy+52, 100, 100, 100, XRES+BARSIZE);
|
||||
}
|
||||
}
|
||||
@@ -2852,7 +2852,7 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||
authoritah = svf_login && (!strcmp(info->author, svf_user) || svf_admin || svf_mod);
|
||||
memcpy(old_vid, vid_buf, ((XRES+BARSIZE)*(YRES+MENUSIZE))*PIXELSIZE);
|
||||
}
|
||||
if(info_ready && svf_login) {
|
||||
if(info_ready && svf_login){
|
||||
//Render the comment box.
|
||||
fillrect(vid_buf, 50+(XRES/2)+1, YRES+MENUSIZE-125, XRES+BARSIZE-100-((XRES/2)+1), 75, 0, 0, 0, 255);
|
||||
drawrect(vid_buf, 50+(XRES/2)+1, YRES+MENUSIZE-125, XRES+BARSIZE-100-((XRES/2)+1), 75, 200, 200, 200, 255);
|
||||
@@ -2917,7 +2917,7 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||
fillrect(vid_buf, 150, YRES+MENUSIZE-68, 50, 18, 255, 255, 255, 40);
|
||||
if(b && !bq) {
|
||||
//Button Clicked
|
||||
if(report_ui(vid_buf, save_id)) {
|
||||
if(report_ui(vid_buf, save_id)){
|
||||
retval = 0;
|
||||
break;
|
||||
}
|
||||
@@ -2928,20 +2928,20 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||
fillrect(vid_buf, 200, YRES+MENUSIZE-68, 50, 18, 255, 255, 255, 40);
|
||||
if(b && !bq) {
|
||||
//Button Clicked
|
||||
if(myown || !info->publish) {
|
||||
if(confirm_ui(vid_buf, "Are you sure you wish to delete this?", "You will not be able recover it.", "Delete")) {
|
||||
if(myown || !info->publish){
|
||||
if(confirm_ui(vid_buf, "Are you sure you wish to delete this?", "You will not be able recover it.", "Delete")){
|
||||
fillrect(vid_buf, -1, -1, XRES+BARSIZE, YRES+MENUSIZE, 0, 0, 0, 192);
|
||||
info_box(vid_buf, "Deleting...");
|
||||
if(execute_delete(vid_buf, save_id)) {
|
||||
if(execute_delete(vid_buf, save_id)){
|
||||
retval = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(confirm_ui(vid_buf, "Are you sure?", "This save will be removed from the search index.", "Remove")) {
|
||||
if(confirm_ui(vid_buf, "Are you sure?", "This save will be removed from the search index.", "Remove")){
|
||||
fillrect(vid_buf, -1, -1, XRES+BARSIZE, YRES+MENUSIZE, 0, 0, 0, 192);
|
||||
info_box(vid_buf, "Removing...");
|
||||
if(execute_delete(vid_buf, save_id)) {
|
||||
if(execute_delete(vid_buf, save_id)){
|
||||
retval = 0;
|
||||
break;
|
||||
}
|
||||
@@ -2973,7 +2973,7 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||
ed.str[0] = 0;
|
||||
}
|
||||
}
|
||||
if(!(mx>50 && my>50 && mx<XRES+BARSIZE-50 && my<YRES+MENUSIZE-50) && b && !queue_open) {
|
||||
if(!(mx>50 && my>50 && mx<XRES+BARSIZE-50 && my<YRES+MENUSIZE-50) && b && !queue_open){
|
||||
retval = 0;
|
||||
break;
|
||||
}
|
||||
@@ -3026,16 +3026,16 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||
drawtext(vid_buf, 50+(XRES/4)-textwidth("Loading...")/2, 50+(YRES/4), "Loading...", 255, 255, 255, 128);
|
||||
}
|
||||
}
|
||||
if(!info_ready || !data_ready) {
|
||||
if(!info_ready || !data_ready){
|
||||
info_box(vid_buf, "Loading");
|
||||
}
|
||||
sdl_blit(0, 0, (XRES+BARSIZE), YRES+MENUSIZE, vid_buf, (XRES+BARSIZE));
|
||||
memcpy(vid_buf, old_vid, ((XRES+BARSIZE)*(YRES+MENUSIZE))*PIXELSIZE);
|
||||
if(info_ready && svf_login) {
|
||||
if(info_ready && svf_login){
|
||||
ui_edit_process(mx, my, b, &ed);
|
||||
}
|
||||
|
||||
if(sdl_key==SDLK_ESCAPE) {
|
||||
if(sdl_key==SDLK_ESCAPE){
|
||||
retval = 0;
|
||||
break;
|
||||
}
|
||||
@@ -3737,7 +3737,7 @@ int execute_vote(pixel *vid_buf, char *id, char *action)
|
||||
free(result);
|
||||
return 1;
|
||||
}
|
||||
void open_link(char *uri) {
|
||||
void open_link(char *uri){
|
||||
#ifdef WIN32
|
||||
ShellExecute(0, "OPEN", uri, NULL, NULL, 0);
|
||||
#elif MACOSX
|
||||
|
20
src/main.c
20
src/main.c
@@ -307,7 +307,7 @@ void *build_save(int *size, int x0, int y0, int w, int h)
|
||||
for(j=0; j<w*h; j++)
|
||||
{
|
||||
i = m[j];
|
||||
if(i) {
|
||||
if(i){
|
||||
//Everybody loves a 16bit int
|
||||
//d[p++] = (parts[i-1].life+3)/4;
|
||||
int ttlife = (int)parts[i-1].life;
|
||||
@@ -318,7 +318,7 @@ void *build_save(int *size, int x0, int y0, int w, int h)
|
||||
for(j=0; j<w*h; j++)
|
||||
{
|
||||
i = m[j];
|
||||
if(i) {
|
||||
if(i){
|
||||
//Now saving tmp!
|
||||
//d[p++] = (parts[i-1].life+3)/4;
|
||||
int tttmp = (int)parts[i-1].tmp;
|
||||
@@ -427,13 +427,13 @@ int parse_save(void *save, int size, int replace, int x0, int y0)
|
||||
}
|
||||
else
|
||||
{
|
||||
if(ver>=44) {
|
||||
if(ver>=44){
|
||||
legacy_enable = c[3]&0x01;
|
||||
if(!sys_pause) {
|
||||
if(!sys_pause){
|
||||
sys_pause = (c[3]>>1)&0x01;
|
||||
}
|
||||
} else {
|
||||
if(c[3]==1||c[3]==0) {
|
||||
if(c[3]==1||c[3]==0){
|
||||
legacy_enable = c[3];
|
||||
} else {
|
||||
legacy_beta = 1;
|
||||
@@ -671,7 +671,7 @@ int parse_save(void *save, int size, int replace, int x0, int y0)
|
||||
i = m[j];
|
||||
if(i)
|
||||
{
|
||||
if(ver>=44) {
|
||||
if(ver>=44){
|
||||
if(p >= size) {
|
||||
goto corrupt;
|
||||
}
|
||||
@@ -692,7 +692,7 @@ int parse_save(void *save, int size, int replace, int x0, int y0)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(ver>=44) {
|
||||
if(ver>=44){
|
||||
for(j=0; j<w*h; j++)
|
||||
{
|
||||
i = m[j];
|
||||
@@ -1492,8 +1492,8 @@ int main(int argc, char *argv[])
|
||||
if(sdl_key=='i')
|
||||
{
|
||||
int nx, ny;
|
||||
for(nx = 0; nx<XRES/CELL; nx++)
|
||||
for(ny = 0; ny<YRES/CELL; ny++)
|
||||
for(nx = 0;nx<XRES/CELL;nx++)
|
||||
for(ny = 0;ny<YRES/CELL;ny++)
|
||||
{
|
||||
pv[ny][nx] = -pv[ny][nx];
|
||||
vx[ny][nx] = -vx[ny][nx];
|
||||
@@ -2033,7 +2033,7 @@ int main(int argc, char *argv[])
|
||||
memset(fire_g, 0, sizeof(fire_g));
|
||||
memset(fire_b, 0, sizeof(fire_b));
|
||||
}
|
||||
if(x>=19 && x<=35 && svf_last && svf_open && !bq) {
|
||||
if(x>=19 && x<=35 && svf_last && svf_open && !bq){
|
||||
//int tpval = sys_pause;
|
||||
parse_save(svf_last, svf_lsize, 1, 0, 0);
|
||||
//sys_pause = tpval;
|
||||
|
175
src/powder.c
175
src/powder.c
@@ -101,7 +101,7 @@ static int eval_move(int pt, int nx, int ny, unsigned *rr)
|
||||
|
||||
if(ptypes[pt].falldown!=1 && bmap[ny/CELL][nx/CELL]==WL_ALLOWSOLID)
|
||||
return 0;
|
||||
if(r && (r&0xFF) < PT_NUM) {
|
||||
if(r && (r&0xFF) < PT_NUM){
|
||||
if(ptypes[pt].properties&TYPE_ENERGY && ptypes[(r&0xFF)].properties&TYPE_ENERGY)
|
||||
return 2;
|
||||
|
||||
@@ -283,10 +283,7 @@ static int is_boundary(int pt, int x, int y)
|
||||
{
|
||||
if(!is_blocking(pt,x,y))
|
||||
return 0;
|
||||
if(is_blocking(pt,x,y-1)
|
||||
&& is_blocking(pt,x,y+1)
|
||||
&& is_blocking(pt,x-1,y)
|
||||
&& is_blocking(pt,x+1,y))
|
||||
if(is_blocking(pt,x,y-1) && is_blocking(pt,x,y+1) && is_blocking(pt,x-1,y) && is_blocking(pt,x+1,y))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
@@ -394,8 +391,7 @@ void kill_part(int i)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if(parts[i].type != PT_PHOT)
|
||||
{
|
||||
if(parts[i].type != PT_PHOT) {
|
||||
x = (int)(parts[i].x+0.5f);
|
||||
y = (int)(parts[i].y+0.5f);
|
||||
if(parts[i].type == PT_STKM)
|
||||
@@ -403,20 +399,20 @@ void kill_part(int i)
|
||||
death = 1;
|
||||
isplayer = 0;
|
||||
}
|
||||
else if(parts[i].type == PT_STKM2)
|
||||
if(parts[i].type == PT_STKM2)
|
||||
{
|
||||
death2 = 1;
|
||||
isplayer2 = 0;
|
||||
}
|
||||
else if(parts[i].type == PT_SPAWN)
|
||||
if(parts[i].type == PT_SPAWN)
|
||||
{
|
||||
ISSPAWN1 = 0;
|
||||
}
|
||||
else if(parts[i].type == PT_SPAWN2)
|
||||
if(parts[i].type == PT_SPAWN2)
|
||||
{
|
||||
ISSPAWN2 = 0;
|
||||
}
|
||||
else if(x>=0 && y>=0 && x<XRES && y<YRES)
|
||||
if(x>=0 && y>=0 && x<XRES && y<YRES)
|
||||
pmap[y][x] = 0;
|
||||
}
|
||||
|
||||
@@ -463,27 +459,28 @@ inline int create_part(int p, int x, int y, int t)
|
||||
}
|
||||
if(t==SPC_AIR)
|
||||
{
|
||||
if(y + CELL < YRES && x + CELL < XRES)
|
||||
pv[y/CELL][x/CELL] += 0.03f;
|
||||
/* if(x+CELL<XRES)
|
||||
if(y+CELL<YRES)
|
||||
pv[y/CELL+1][x/CELL] += 0.03f;
|
||||
if(x+CELL<XRES)
|
||||
{
|
||||
pv[y/CELL][x/CELL+1] += 0.03f;
|
||||
if(y+CELL<YRES)
|
||||
pv[y/CELL+1][x/CELL+1] += 0.03f;
|
||||
}*/
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
if(t==SPC_VACUUM)
|
||||
{
|
||||
if (y + CELL < YRES && x + CELL < XRES)
|
||||
pv[y/CELL][x/CELL] -= 0.03f;
|
||||
/*if(y+CELL<YRES)
|
||||
if(y+CELL<YRES)
|
||||
pv[y/CELL+1][x/CELL] -= 0.03f;
|
||||
if(x+CELL<XRES)
|
||||
{
|
||||
pv[y/CELL][x/CELL+1] -= 0.03f;
|
||||
if(y+CELL<YRES)
|
||||
pv[y/CELL+1][x/CELL+1] -= 0.03f;
|
||||
}*/
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1032,7 +1029,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
GRAV_R2 = 30;
|
||||
GRAV_G2 = 30;
|
||||
GRAV_B2 = 0;
|
||||
for( q = 0; q <= GRAV; q++)
|
||||
for( q = 0;q <= GRAV;q++)
|
||||
{
|
||||
if(GRAV_R >0 && GRAV_G==0)
|
||||
{
|
||||
@@ -1071,9 +1068,9 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
if(ISLOVE==1)
|
||||
{
|
||||
ISLOVE = 0;
|
||||
for(ny=0; ny<YRES-4; ny++)
|
||||
for(ny=0;ny<YRES-4;ny++)
|
||||
{
|
||||
for(nx=0; nx<XRES-4; nx++)
|
||||
for(nx=0;nx<XRES-4;nx++)
|
||||
{
|
||||
r=pmap[ny][nx];
|
||||
if((r>>8)>=NPART || !r)
|
||||
@@ -1089,14 +1086,14 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
|
||||
}
|
||||
}
|
||||
for(nx=9; nx<=XRES-18; nx++)
|
||||
for(nx=9;nx<=XRES-18;nx++)
|
||||
{
|
||||
for(ny=9; ny<=YRES-7; ny++)
|
||||
for(ny=9;ny<=YRES-7;ny++)
|
||||
{
|
||||
if(love[nx/9][ny/9]==1)
|
||||
{
|
||||
for( nnx=0; nnx<9; nnx++)
|
||||
for( nny=0; nny<9; nny++)
|
||||
for( nnx=0;nnx<9;nnx++)
|
||||
for( nny=0;nny<9;nny++)
|
||||
{
|
||||
if(ny+nny>0&&ny+nny<YRES&&nx+nnx>=0&&nx+nnx<XRES)
|
||||
{
|
||||
@@ -1122,31 +1119,40 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
if(ISLOLZ==1)
|
||||
{
|
||||
ISLOLZ = 0;
|
||||
for(ny=0; ny<YRES-4; ny++)
|
||||
for(nx=0; nx<XRES-4; nx++)
|
||||
for(ny=0;ny<YRES-4;ny++)
|
||||
{
|
||||
for(nx=0;nx<XRES-4;nx++)
|
||||
{
|
||||
r=pmap[ny][nx];
|
||||
if((r>>8)>=NPART || !r)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if((ny<9||nx<9||ny>YRES-7||nx>XRES-10)&&parts[r>>8].type==PT_LOLZ)
|
||||
parts[r>>8].type = PT_NONE;
|
||||
else if(parts[r>>8].type==PT_LOLZ)
|
||||
{
|
||||
lolz[nx/9][ny/9] = 1;
|
||||
}
|
||||
|
||||
}
|
||||
for(nx=9; nx<=XRES-18; nx++)
|
||||
}
|
||||
for(nx=9;nx<=XRES-18;nx++)
|
||||
{
|
||||
for(ny=9; ny<=YRES-7; ny++)
|
||||
for(ny=9;ny<=YRES-7;ny++)
|
||||
{
|
||||
if(lolz[nx/9][ny/9]==1)
|
||||
{
|
||||
for( nnx=0; nnx<9; nnx++)
|
||||
for( nny=0; nny<9; nny++)
|
||||
for( nnx=0;nnx<9;nnx++)
|
||||
for( nny=0;nny<9;nny++)
|
||||
{
|
||||
if(ny+nny>0&&ny+nny<YRES&&nx+nnx>=0&&nx+nnx<XRES)
|
||||
{
|
||||
rt=pmap[ny+nny][nx+nnx];
|
||||
if((rt>>8)>=NPART)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if(!rt&&lolzrule[nny][nnx]==1)
|
||||
create_part(-1,nx+nnx,ny+nny,PT_LOLZ);
|
||||
else if(!rt)
|
||||
@@ -1156,6 +1162,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
lolz[nx/9][ny/9]=0;
|
||||
}
|
||||
}
|
||||
@@ -1163,8 +1170,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
if(ISGOL==1&&CGOL>=GSPEED)//GSPEED is frames per generation
|
||||
{
|
||||
int createdsomething = 0;
|
||||
for(nx=4; nx<XRES-4; nx++)
|
||||
for(ny=4; ny<YRES-4; ny++)
|
||||
for(nx=4;nx<XRES-4;nx++)
|
||||
for(ny=4;ny<YRES-4;ny++)
|
||||
{
|
||||
CGOL=0;
|
||||
ISGOL=0;
|
||||
@@ -1175,60 +1182,60 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
continue;
|
||||
}
|
||||
else
|
||||
for( golnum=1; golnum<NGOL; golnum++)
|
||||
for( golnum=1;golnum<NGOL;golnum++)
|
||||
if(parts[r>>8].type==golnum+77)
|
||||
{
|
||||
gol[nx][ny] = golnum;
|
||||
for( nnx=-1; nnx<2; nnx++)
|
||||
for( nny=-1; nny<2; nny++) //it will count itself as its own neighbor, which is needed, but will have 1 extra for delete check
|
||||
for( nnx=-1;nnx<2;nnx++)
|
||||
for( nny=-1;nny<2;nny++)//it will count itself as its own neighbor, which is needed, but will have 1 extra for delete check
|
||||
{
|
||||
if(ny+nny<4&&nx+nnx<4) { //any way to make wrapping code smaller?
|
||||
if(ny+nny<4&&nx+nnx<4){//any way to make wrapping code smaller?
|
||||
gol2[XRES-5][YRES-5][golnum] ++;
|
||||
gol2[XRES-5][YRES-5][0] ++;
|
||||
}
|
||||
else if(ny+nny<4&&nx+nnx>=XRES-4) {
|
||||
else if(ny+nny<4&&nx+nnx>=XRES-4){
|
||||
gol2[4][YRES-5][golnum] ++;
|
||||
gol2[4][YRES-5][0] ++;
|
||||
}
|
||||
else if(ny+nny>=YRES-4&&nx+nnx<4) {
|
||||
else if(ny+nny>=YRES-4&&nx+nnx<4){
|
||||
gol2[XRES-5][4][golnum] ++;
|
||||
gol2[XRES-5][4][0] ++;
|
||||
}
|
||||
else if(nx+nnx<4) {
|
||||
else if(nx+nnx<4){
|
||||
gol2[XRES-5][ny+nny][golnum] ++;
|
||||
gol2[XRES-5][ny+nny][0] ++;
|
||||
}
|
||||
else if(ny+nny<4) {
|
||||
else if(ny+nny<4){
|
||||
gol2[nx+nnx][YRES-5][golnum] ++;
|
||||
gol2[nx+nnx][YRES-5][0] ++;
|
||||
}
|
||||
else if(ny+nny>=YRES-4&&nx+nnx>=XRES-4) {
|
||||
else if(ny+nny>=YRES-4&&nx+nnx>=XRES-4){
|
||||
gol2[4][4][golnum] ++;
|
||||
gol2[4][4][0] ++;
|
||||
}
|
||||
else if(ny+nny>=YRES-4) {
|
||||
else if(ny+nny>=YRES-4){
|
||||
gol2[nx+nnx][4][golnum] ++;
|
||||
gol2[nx+nnx][4][0] ++;
|
||||
}
|
||||
else if(nx+nnx>=XRES-4) {
|
||||
else if(nx+nnx>=XRES-4){
|
||||
gol2[4][ny+nny][golnum] ++;
|
||||
gol2[4][ny+nny][0] ++;
|
||||
}
|
||||
else {
|
||||
else{
|
||||
gol2[nx+nnx][ny+nny][golnum] ++;
|
||||
gol2[nx+nnx][ny+nny][0] ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(nx=4; nx<XRES-4; nx++)
|
||||
for(ny=4; ny<YRES-4; ny++)
|
||||
for(nx=4;nx<XRES-4;nx++)
|
||||
for(ny=4;ny<YRES-4;ny++)
|
||||
{
|
||||
int neighbors = gol2[nx][ny][0];
|
||||
if(neighbors==0)
|
||||
continue;
|
||||
for( golnum = 1; golnum<NGOL; golnum++)
|
||||
for( goldelete = 0; goldelete<9; goldelete++)
|
||||
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)
|
||||
{
|
||||
@@ -1239,7 +1246,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
parts[pmap[ny][nx]>>8].type = PT_NONE;
|
||||
}
|
||||
gol2[nx][ny][0] = 0;
|
||||
for( z = 1; z<NGOL; z++)
|
||||
for( z = 1;z<NGOL;z++)
|
||||
gol2[nx][ny][z] = 0;
|
||||
}
|
||||
if(createdsomething)
|
||||
@@ -1252,7 +1259,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
//}
|
||||
if(ISWIRE==1)
|
||||
{
|
||||
for( q = 0; q<99; q++)
|
||||
for( q = 0;q<99;q++)
|
||||
if(!wireless[q][1])
|
||||
{
|
||||
wireless[q][0] = 0;
|
||||
@@ -1423,7 +1430,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
parts[i].vx -= ptypes[t].advection*vx[y/CELL][x/CELL];
|
||||
parts[i].vy -= ptypes[t].advection*vy[y/CELL][x/CELL] + ptypes[t].gravity;
|
||||
}
|
||||
else {
|
||||
else{
|
||||
parts[i].vx += ptypes[t].advection*vx[y/CELL][x/CELL];
|
||||
parts[i].vy += ptypes[t].advection*vy[y/CELL][x/CELL] + ptypes[t].gravity;
|
||||
|
||||
@@ -1698,7 +1705,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
{
|
||||
t = parts[i].type = pstates[t].gas;
|
||||
}
|
||||
else {
|
||||
else{
|
||||
t = parts[i].type = pstates[t].gas;
|
||||
pv[y/CELL][x/CELL] += 0.50f;
|
||||
}
|
||||
@@ -1971,46 +1978,46 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(t==PT_ARAY && parts[i].life==0) {
|
||||
for(nx=-1; nx<2; nx++) {
|
||||
for(ny=-1; ny<2; ny++) {
|
||||
if(x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny)) {
|
||||
else if(t==PT_ARAY && parts[i].life==0){
|
||||
for(nx=-1; nx<2; nx++){
|
||||
for(ny=-1; ny<2; ny++){
|
||||
if(x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny)){
|
||||
r = pmap[y+ny][x+nx];
|
||||
if((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if((r&0xFF)==PT_SPRK) {
|
||||
if((r&0xFF)==PT_SPRK){
|
||||
int destroy = (parts[r>>8].ctype==PT_PSCN)?1:0;
|
||||
for (docontinue = 1, nxx = 0, nyy = 0, nxi = nx*-1, nyi = ny*-1; docontinue; nyy+=nyi, nxx+=nxi) {
|
||||
if(!(x+nxi+nxx<XRES && y+nyi+nyy<YRES && x+nxi+nxx >= 0 && y+nyi+nyy >= 0)) {
|
||||
if(!(x+nxi+nxx<XRES && y+nyi+nyy<YRES && x+nxi+nxx >= 0 && y+nyi+nyy >= 0)){
|
||||
break;
|
||||
}
|
||||
r = pmap[y+nyi+nyy][x+nxi+nxx];
|
||||
if(!((r>>8)>=NPART)) {
|
||||
if(!r) {
|
||||
if(!r){
|
||||
int nr = create_part(-1, x+nxi+nxx, y+nyi+nyy, PT_BRAY);
|
||||
if(nr!=-1&&destroy) {
|
||||
if(nr!=-1&&destroy){
|
||||
parts[nr].tmp = 2;
|
||||
parts[nr].life = 2;
|
||||
}
|
||||
} else if(!destroy) {
|
||||
if(parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==0) {
|
||||
if(nyy!=0 || nxx!=0) {
|
||||
if(parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==0){
|
||||
if(nyy!=0 || nxx!=0){
|
||||
parts[r>>8].type = PT_BRAY;
|
||||
parts[r>>8].life = 1020;
|
||||
parts[r>>8].tmp = 1;
|
||||
}
|
||||
docontinue = 0;
|
||||
} else if(parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==1) {
|
||||
} else if(parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==1){
|
||||
parts[r>>8].life = 1020;
|
||||
//docontinue = 1;
|
||||
} else if(parts[r>>8].type!=PT_INWR && parts[r>>8].type!=PT_ARAY) {
|
||||
if(nyy!=0 || nxx!=0) {
|
||||
if(nyy!=0 || nxx!=0){
|
||||
create_part(-1, x+nxi+nxx, y+nyi+nyy, PT_SPRK);
|
||||
}
|
||||
docontinue = 0;
|
||||
}
|
||||
} else if(destroy) {
|
||||
if(parts[r>>8].type==PT_BRAY) {
|
||||
if(parts[r>>8].type==PT_BRAY){
|
||||
parts[r>>8].life = 1;
|
||||
docontinue = 1;
|
||||
} else {
|
||||
@@ -2393,7 +2400,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
{
|
||||
create_part(r>>8, x+nx, y+ny, rand()%3 ? PT_LAVA : PT_URAN);
|
||||
parts[r>>8].temp = MAX_TEMP;
|
||||
if(parts[r>>8].type==PT_LAVA) {
|
||||
if(parts[r>>8].type==PT_LAVA){
|
||||
parts[r>>8].tmp = 100;
|
||||
parts[r>>8].ctype = PT_PLUT;
|
||||
}
|
||||
@@ -2583,7 +2590,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
parts[i].life--;
|
||||
}
|
||||
}
|
||||
for( trade = 0; trade<9; trade ++)
|
||||
for( trade = 0; trade<9;trade ++)
|
||||
{
|
||||
nx = rand()%5-2;
|
||||
ny = rand()%5-2;
|
||||
@@ -2732,7 +2739,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
parts[pmap[y+ny][x+nx]>>8].life = 0;
|
||||
}
|
||||
}
|
||||
for( trade = 0; trade<4; trade ++)
|
||||
for( trade = 0; trade<4;trade ++)
|
||||
{
|
||||
nx = rand()%5-2;
|
||||
ny = rand()%5-2;
|
||||
@@ -2760,7 +2767,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
}
|
||||
else if(t==PT_WARP)
|
||||
{
|
||||
for( trade = 0; trade<5; trade ++)
|
||||
for( trade = 0; trade<5;trade ++)
|
||||
{
|
||||
nx = rand()%3-1;
|
||||
ny = rand()%3-1;
|
||||
@@ -2925,8 +2932,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
}
|
||||
}
|
||||
if(parts[i].ctype>1)
|
||||
for( q = 0; q<3; q++)
|
||||
for( ctype = 2; ctype<5; ctype++)
|
||||
for( q = 0;q<3;q++)
|
||||
for( ctype = 2;ctype<5;ctype++)
|
||||
{
|
||||
if(parts[i].ctype==ctype)
|
||||
{
|
||||
@@ -3071,7 +3078,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
if((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
if(parts[r>>8].type==PT_SPRK || (parts[r>>8].type!=PT_PRTI && parts[r>>8].type!=PT_PRTO && (ptypes[parts[r>>8].type].falldown!= 0 || pstates[parts[r>>8].type].state == ST_GAS)))
|
||||
for( nnx=0; nnx<8; nnx++)
|
||||
for( nnx=0;nnx<8;nnx++)
|
||||
if(!portal[parts[i].tmp][count-1][nnx])
|
||||
{
|
||||
portal[parts[i].tmp][count-1][nnx] = parts[r>>8].type;
|
||||
@@ -3102,7 +3109,7 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
continue;
|
||||
if(!r)
|
||||
{
|
||||
for( nnx =0 ; nnx<8; nnx++)
|
||||
for( nnx =0 ;nnx<8;nnx++)
|
||||
{
|
||||
int randomness = count + rand()%3-1;
|
||||
if(randomness<1)
|
||||
@@ -3286,8 +3293,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
if((r>>8)>=NPART || !r)
|
||||
continue;
|
||||
else if(parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
for( nnx=-1; nnx<2; nnx++)
|
||||
for( nny=-1; nny<2; nny++)
|
||||
for( nnx=-1;nnx<2;nnx++)
|
||||
for( nny=-1;nny<2;nny++)
|
||||
{
|
||||
if(7>rand()%200&&parts[i].life==0)
|
||||
{
|
||||
@@ -3322,8 +3329,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
if(!r)
|
||||
continue;
|
||||
else if(parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
for( nnx=-1; nnx<2; nnx++)
|
||||
for( nny=-1; nny<2; nny++)
|
||||
for( nnx=-1;nnx<2;nnx++)
|
||||
for( nny=-1;nny<2;nny++)
|
||||
{
|
||||
if(3>rand()%200&&parts[i].life==0)
|
||||
{
|
||||
@@ -3371,8 +3378,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
parts[r>>8].life=7;
|
||||
}
|
||||
else if(parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
for( nnx=-1; nnx<2; nnx++)
|
||||
for( nny=-1; nny<2; nny++)
|
||||
for( nnx=-1;nnx<2;nnx++)
|
||||
for( nny=-1;nny<2;nny++)
|
||||
{
|
||||
if(2>rand()%3000&&parts[i].life==0)
|
||||
{
|
||||
@@ -3415,8 +3422,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
||||
parts[r>>8].life = 7;
|
||||
}
|
||||
else if(parts[r>>8].type==PT_SPRK&&parts[i].life==0)
|
||||
for( nnx=-1; nnx<2; nnx++)
|
||||
for( nny=-1; nny<2; nny++)
|
||||
for( nnx=-1;nnx<2;nnx++)
|
||||
for( nny=-1;nny<2;nny++)
|
||||
{
|
||||
if(!pmap[y+ny+nny][x+nx+nnx])
|
||||
{
|
||||
@@ -4655,7 +4662,7 @@ killed:
|
||||
create_part(-1, x+nx, y+ny, parts[i].ctype);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}else {
|
||||
create_part(-1, x+rand()%3-1, y+rand()%3-1, parts[i].ctype);
|
||||
}
|
||||
}
|
||||
@@ -5480,7 +5487,7 @@ void update_particles(pixel *vid)
|
||||
void rotate_area(int area_x, int area_y, int area_w, int area_h, int invert)
|
||||
{
|
||||
//TODO: MSCC doesn't like arrays who's size is determined at runtime.
|
||||
#if !(defined(WIN32) && !defined(__GNUC__))
|
||||
#if !(defined(WIN32) && !defined(__GNUC__))
|
||||
int cx = 0;
|
||||
int cy = 0;
|
||||
unsigned tpmap[area_h][area_w];
|
||||
@@ -5701,7 +5708,7 @@ int create_parts(int x, int y, int rx, int ry, int c)
|
||||
int i, j, r, f = 0, u, v, oy, ox, b = 0, dw = 0, stemp = 0;//n;
|
||||
|
||||
int wall = c - 100;
|
||||
for(r=UI_ACTUALSTART; r<=UI_ACTUALSTART+UI_WALLCOUNT; r++)
|
||||
for(r=UI_ACTUALSTART;r<=UI_ACTUALSTART+UI_WALLCOUNT;r++)
|
||||
{
|
||||
if(wall==r)
|
||||
{
|
||||
|
Reference in New Issue
Block a user