Fix preset fields (and special spots) not appearing
This commit is contained in:
@@ -165,72 +165,6 @@ void finish_load_party(){
|
|||||||
in_scen_debug = false;
|
in_scen_debug = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_town(){ // formerly part of load_town
|
|
||||||
// Initialize barriers, etc. Note non-sfx gets forgotten if this is a town recently visited.
|
|
||||||
// if(mode == 0) {
|
|
||||||
unsigned int i,j;
|
|
||||||
for(i = 0; i < 64; i++)
|
|
||||||
for(j = 0; j < 64; j++) {
|
|
||||||
univ.town.fields[i][j] = 0;
|
|
||||||
//univ.out.sfx[i][j] = 0;
|
|
||||||
}
|
|
||||||
for(i = 0; i < univ.town->preset_fields.size(); i++) {
|
|
||||||
switch(univ.town->preset_fields[i].type){
|
|
||||||
case 1: // currently unused
|
|
||||||
univ.town.set_block(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
univ.town.set_spot(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
univ.town.set_web(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
univ.town.set_crate(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
univ.town.set_barrel(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
univ.town.set_fire_barr(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
univ.town.set_force_barr(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
univ.town.set_quickfire(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 14:
|
|
||||||
univ.town.set_sm_blood(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
univ.town.set_med_blood(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
univ.town.set_lg_blood(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 17:
|
|
||||||
univ.town.set_sm_slime(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 18:
|
|
||||||
univ.town.set_lg_slime(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 19:
|
|
||||||
univ.town.set_ash(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
univ.town.set_bones(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
case 21:
|
|
||||||
univ.town.set_rubble(univ.town->preset_fields[i].loc.x,univ.town->preset_fields[i].loc.y,true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void shift_universe_left() {
|
void shift_universe_left() {
|
||||||
short i,j;
|
short i,j;
|
||||||
|
|
||||||
|
@@ -178,7 +178,8 @@ void start_town_mode(short which_town, short entry_dir) {
|
|||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
// TODO: This means cleared webs reappear, for example. Is that right?
|
||||||
|
univ.town.place_preset_fields();
|
||||||
|
|
||||||
univ.town.belt_present = false;
|
univ.town.belt_present = false;
|
||||||
// Set up map, using stored map
|
// Set up map, using stored map
|
||||||
|
@@ -91,6 +91,65 @@ cTown* cCurTown::operator -> (){
|
|||||||
return record();
|
return record();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cCurTown::place_preset_fields() {
|
||||||
|
// Initialize barriers, etc. Note non-sfx gets forgotten if this is a town recently visited.
|
||||||
|
for(int i = 0; i < 64; i++)
|
||||||
|
for(int j = 0; j < 64; j++) {
|
||||||
|
fields[i][j] = 0;
|
||||||
|
}
|
||||||
|
for(size_t i = 0; i < record()->preset_fields.size(); i++) {
|
||||||
|
switch(record()->preset_fields[i].type){
|
||||||
|
case 1: // currently unused
|
||||||
|
univ.town.set_block(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
set_spot(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
set_web(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
set_crate(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
set_barrel(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
set_fire_barr(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
set_force_barr(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
set_quickfire(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
set_sm_blood(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
set_med_blood(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
set_lg_blood(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
set_sm_slime(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 18:
|
||||||
|
set_lg_slime(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 19:
|
||||||
|
set_ash(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 20:
|
||||||
|
set_bones(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
case 21:
|
||||||
|
set_rubble(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cSpeech& cCurTown::cur_talk() {
|
cSpeech& cCurTown::cur_talk() {
|
||||||
// Make sure we actually have a valid speech stored
|
// Make sure we actually have a valid speech stored
|
||||||
|
@@ -63,6 +63,7 @@ public:
|
|||||||
cSpeech& cur_talk(); // Get the currently loaded speech
|
cSpeech& cur_talk(); // Get the currently loaded speech
|
||||||
bool prep_talk(short which); // Prepare for loading specified speech, returning true if already loaded
|
bool prep_talk(short which); // Prepare for loading specified speech, returning true if already loaded
|
||||||
void prep_arena(); // Set up for a combat arena
|
void prep_arena(); // Set up for a combat arena
|
||||||
|
void place_preset_fields();
|
||||||
|
|
||||||
bool is_explored(char x, char y) const;
|
bool is_explored(char x, char y) const;
|
||||||
bool is_force_wall(char x, char y) const;
|
bool is_force_wall(char x, char y) const;
|
||||||
|
Reference in New Issue
Block a user