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;
|
||||
}
|
||||
|
||||
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() {
|
||||
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;
|
||||
// Set up map, using stored map
|
||||
|
@@ -91,6 +91,65 @@ cTown* cCurTown::operator -> (){
|
||||
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() {
|
||||
// Make sure we actually have a valid speech stored
|
||||
|
@@ -63,6 +63,7 @@ public:
|
||||
cSpeech& cur_talk(); // Get the currently loaded speech
|
||||
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 place_preset_fields();
|
||||
|
||||
bool is_explored(char x, char y) const;
|
||||
bool is_force_wall(char x, char y) const;
|
||||
|
Reference in New Issue
Block a user