Clear out some useless, easily-resolvable, or no-longer-relevant TODO notes

This commit is contained in:
2015-01-26 04:01:57 -05:00
parent 644d1cbda8
commit 128a137b1c
13 changed files with 26 additions and 94 deletions

View File

@@ -1016,9 +1016,13 @@ bool handle_action(sf::Event event) {
main_button_click(combat_buttons[i]);
}
break;
default:
// either resting or startup; do nothing
// TODO: A call to handle_startup_action() would make sense here, though
case MODE_STARTUP: case MODE_RESTING: case MODE_CUTSCENE:
// If we get here during these modes, something is probably not right, so bail out
add_string_to_buf("Unexpected game state!");
return are_done;
case MODE_ROOM_DESCR:
// TODO: This mode is not yet implemented.
// The idea is to put a long description in the transcript with something like "press any key to continue".
break;
}
@@ -1331,7 +1335,6 @@ bool handle_action(sf::Event event) {
for(int j = 0; j < 6; j++)
if(item_area_button_active[i][j] && point_in_area.in(item_buttons[i][j])) {
item_buttons[i][j].offset(ITEM_WIN_UL_X,ITEM_WIN_UL_Y);
// if((j > 0) || (stat_screen_mode < 2)) // TODO: <-- Windows version has this check - why?
arrow_button_click(item_buttons[i][j]);
item_buttons[i][j].offset(-ITEM_WIN_UL_X,-ITEM_WIN_UL_Y);
@@ -1359,8 +1362,8 @@ bool handle_action(sf::Event event) {
; // TODO: Implement quests view
else display_pc_item(stat_window, item_hit,univ.party[stat_window].items[item_hit],0);
break;
case 5: // sell? That this codes was reached indicates that the item was sellable
// TODO: How does that work? ^
case 5: // sell? That this code was reached indicates that the item was sellable
// (Based on item_area_button_active)
handle_item_shop_action(item_hit);
break;
}
@@ -1424,7 +1427,7 @@ bool handle_action(sf::Event event) {
}
void handle_monster_actions(bool& need_redraw, bool& need_reprint) {
draw_map(true); // TODO: Might be possible to only do this in certain circumstances?
draw_map(true);
play_ambient_sound();
if(is_combat() && overall_mode != MODE_LOOK_COMBAT) {
@@ -2086,7 +2089,6 @@ bool handle_keystroke(sf::Event& event){
else return false;
break;
case 'A':if(overall_mode == MODE_TOWN) {
// TODO: Uh, what about ul.y?
pass_point.x = 1000 + ul.x;
pass_event.mouseButton.x = pass_point.x;
pass_event.mouseButton.y = pass_point.y;
@@ -2102,7 +2104,6 @@ bool handle_keystroke(sf::Event& event){
if(overall_mode == MODE_COMBAT)
j = 5;
else if(overall_mode == MODE_TOWN) {
// TODO: Uh, what about ul.y?
pass_point.x = 1001 + ul.x;
pass_event.mouseButton.x = pass_point.x;
pass_event.mouseButton.y = pass_point.y;
@@ -2161,7 +2162,6 @@ void post_load() {
// }
// make_out_trim();
// TODO: Presumably need to call draw() as well, but maybe not here
text_sbar->show();
item_sbar->show();
shop_sbar->hide();

View File

@@ -603,8 +603,6 @@ void pc_attack(short who_att,iLiving* target) {
static void apply_weapon_status(eStatus status, int how_much, int dmg, iLiving& which_m, std::string weap_type) {
switch(status) {
// TODO: It should be possible to make monsters support magic resistance and invulnerability, at least.
// Maybe also poisoned weapon and invisibility.
case eStatus::MAIN: break; // Not a valid status
case eStatus::INVISIBLE:
add_string_to_buf(" " + weap_type + " leaks an odd-coloured aura.");
@@ -1449,7 +1447,6 @@ void handle_marked_damage() {
for(i = 0; i < 6; i++)
if(univ.party[i].marked_damage > 0) {
// TODO: Perhaps there should be a way of determining the correct race here?
damage_pc(i,univ.party[i].marked_damage,eDamageType::MARKED,eRace::UNKNOWN,0);
univ.party[i].marked_damage = 0;
}
@@ -1775,7 +1772,6 @@ bool combat_next_step() {
pick_next_pc();
if(current_pc != store_pc)
to_return = true;
// TODO: Windows version checks for overall_mode being MODE_OUTDOORS or MODE_TOWN - that's not necessary, right?
center = univ.party[current_pc].combat_pos;
adjust_spell_menus();
@@ -2818,7 +2814,7 @@ void monst_fire_missile(short m_num,short bless,std::pair<eMonstAbil,uAbility> a
int spec_item = pc_target->has_abil_equip(eItemAbil::HIT_CALL_SPECIAL);
if(spec_item < 24) {
short s1,s2,s3;
// TODO: This force_ptr...run_special code is almost duplicated in several places; maybe make a call_attack_spec subroutine?
// TODO: This force_ptr...run_special code is almost duplicated in several places; maybe make a call_attack_spec subroutine!
univ.party.force_ptr(21, 301, 5);
univ.party.force_ptr(22, 301, 6);
univ.party.force_ptr(20, 301, 7);
@@ -2966,11 +2962,10 @@ void monst_basic_abil(short m_num, std::pair<eMonstAbil,uAbility> abil, iLiving*
case eStatus::DUMB:
target->dumbfound(abil.second.gen.strength);
break;
// These only work on PCs
case eStatus::INVULNERABLE:
case eStatus::MAGIC_RESISTANCE:
case eStatus::INVISIBLE:
case eStatus::MARTYRS_SHIELD: // TODO: Wait what? This one works for monsters!
case eStatus::MARTYRS_SHIELD:
target->apply_status(abil.second.gen.stat, -abil.second.gen.strength);
break;
// This only works on monsters
@@ -4098,7 +4093,6 @@ void place_spell_pattern(effect_pat_type pat,location center,eDamageType type,sh
case eDamageType::FIRE: code = 50; break;
case eDamageType::COLD: code = 90; break;
case eDamageType::MAGIC: code = 130; break;
// TODO: These are new; nothing actually uses them, but maybe eventually!
case eDamageType::WEAPON: code = 170; break;
case eDamageType::POISON: code = 210; break;
case eDamageType::UNBLOCKABLE: code = 250; break;

View File

@@ -883,7 +883,7 @@ void handle_talk_event(location p) {
}
talk_end_forced = true;
break;
// TODO: Strings resulting from this don't seem to be recordable; whyever not?
// TODO: Strings resulting from this don't seem to be recordable; whyever not!?
case eTalkNode::CALL_TOWN_SPEC:
run_special(eSpecCtx::TALK,2,a,univ.town.p_loc,&s1,&s2,&s3);
// check s1 & s2 to see if we got diff str, and, if so, munch old strs
@@ -923,10 +923,7 @@ void handle_talk_event(location p) {
//short sign_type; // terrain type
void do_sign(short town_num, short which_sign, short sign_type) {
std::string sign_text;
location view_loc;
// TODO: Why is this line here? The location isn't used anywhere.
view_loc = (is_out()) ? univ.party.p_loc : univ.town.p_loc;
make_cursor_sword();
cChoiceDlog sign("view-sign");
@@ -1000,20 +997,16 @@ void save_prefs(bool resetHelp){
}
static bool prefs_event_filter (cDialog& me, std::string id, eKeyMod) {
// TODO: I should no longer need done_yet as this now only handles the okay and cancel buttons; the LEDs are now handled automatically by the cLed class (and the cLedGroup class, for LED groups).
bool done_yet = false,did_cancel = false,reset_help = false;
bool did_cancel = false,reset_help = false;
short i;
if(id == "okay") {
done_yet = true;
me.toast(true);
} else if(id == "cancel") {
done_yet = true;
me.toast(false);
did_cancel = true;
}
if(done_yet) {
if(!did_cancel) {
std::string cur_display_mode = dynamic_cast<cLedGroup&>(me["display"]).getSelected();
// TODO: Make an enum for the display mode
@@ -1059,7 +1052,6 @@ static bool prefs_event_filter (cDialog& me, std::string id, eKeyMod) {
save_maps = 1 - PSD[SDF_NO_MAPS];
give_delays = PSD[SDF_NO_FRILLS];
save_prefs(reset_help);
}
return true;
}
@@ -1185,9 +1177,7 @@ static bool edit_party_event_filter(cDialog& me, std::string item_hit, eKeyMod)
} else if(item_hit == "pic") {
if(univ.party[which_pc].main_status == eMainStatus::ABSENT)
return true;
// TODO: Uhh, why did he check this twice...
if(univ.party[which_pc].main_status != eMainStatus::ABSENT)
pick_pc_graphic(which_pc,1,&me);
pick_pc_graphic(which_pc,1,&me);
put_party_stats(me);
} else if(item_hit == "delete") { // Note: This button is also used for "create new PC".
if(univ.party[which_pc].main_status != eMainStatus::ABSENT) {
@@ -1199,8 +1189,6 @@ static bool edit_party_event_filter(cDialog& me, std::string item_hit, eKeyMod)
give_help(56,0,me);
create_pc(which_pc,&me);
put_party_stats(me);
// TODO: Not sure if this is needed
// cd_initial_draw(989); // extra redraw, just in case
}
}
}
@@ -1233,8 +1221,6 @@ void edit_party() {
put_party_stats(pcDialog);
if(univ.party.help_received[22] == 0) {
// TODO: Not sure if this is needed
// cd_initial_draw(989);
give_help(22,23,pcDialog);
}

View File

@@ -464,8 +464,7 @@ void build_scen_headers() {
scenDir /= "Blades of Exile Scenarios";
std::cout << progDir << '\n' << scenDir << std::endl;
scen_headers.clear();
fs::path folderRef(scenDir); // TODO: This variable is unnecessary
fs::directory_iterator iter(folderRef);
fs::directory_iterator iter(scenDir);
// TODO: Double-check that kFSIterateFlat is identical to the behaviour of Boost's directory_iterator
#if 0
err = FSOpenIterator(&folderRef, kFSIterateFlat, &iter);

View File

@@ -549,7 +549,6 @@ void load_main_screen() {
if(invenbtn_gworld.getSize().x > 0)
return;
// TODO: Hopefully reusing a texture here won't cause issues...
invenbtn_gworld.loadFromImage(*ResMgr::get<ImageRsrc>("invenbtns"));
loadImageToRenderTexture(pc_stats_gworld, "statarea");
loadImageToRenderTexture(item_stats_gworld, "inventory");

View File

@@ -175,9 +175,6 @@ void draw_monsters() {
}
if(picture_wanted < 1000) {
for(k = 0; k < width * height; k++) {
// TODO: Windows special-cases the bear and drake, whose graphics are split between two columns/sheets. Is this necessary?
// It really doesn't look necessary to me, since each quadrant of the graphic is fetched separately.
// Technically what they do is always pass 0 as the final argument to get_monster_template_rect, instead of passing k; they also hardcode the sheet to look on (4 for drake, 5 for bear).
source_rect = get_monster_template_rect(picture_wanted,(univ.party.out_c[i].direction < 4) ? 0 : 1,k);
to_rect = monst_rects[(width - 1) * 2 + height - 1][k];
to_rect.offset(13 + 28 * where_draw.x,13 + 36 * where_draw.y);

View File

@@ -590,15 +590,14 @@ static void display_pc_info(cDialog& me, const short pc) {
static bool give_pc_info_event_filter(cDialog& me, std::string item_hit, short& store_pc_num) {
if(item_hit == "done") me.toast(true);
else if(item_hit == "left") {
// TODO: Put braces on these do-whiles... o.O
do
do {
store_pc_num = (store_pc_num == 0) ? 5 : store_pc_num - 1;
while(univ.party[store_pc_num].main_status != eMainStatus::ALIVE);
} while(univ.party[store_pc_num].main_status != eMainStatus::ALIVE);
display_pc_info(me, store_pc_num);
} else if(item_hit == "right") {
do
do {
store_pc_num = (store_pc_num + 1) % 6;
while(univ.party[store_pc_num].main_status != eMainStatus::ALIVE);
} while(univ.party[store_pc_num].main_status != eMainStatus::ALIVE);
display_pc_info(me, store_pc_num);
}
return true;

View File

@@ -467,12 +467,6 @@ static void put_item_graphics(cDialog& me, size_t& first_item_shown, short& curr
if(item.graphic_num >= 1000)
pic.setPict(item.graphic_num - 1000, PIC_CUSTOM_ITEM);
else pic.setPict(item.graphic_num, PIC_ITEM);
// TODO: This code is currently kept here for reference to the changed numbers. It can be removed after verifying it works correctly.
#if 0
if(item.graphic_num >= 1000) // was 150
csp(987,20 + i * 4,/*3000 + 2000 + */item.graphic_num - 1000,PICT_CUSTOM + PICT_ITEM);
else csp(987,20 + i * 4,/*4800 + */item.graphic_num,PICT_ITEM);
#endif
me[detail].setText(get_item_interesting_string(item));
me[weight].setText("Weight: " + std::to_string(item.item_weight()));
} catch(std::out_of_range) { // erase the spot
@@ -727,7 +721,6 @@ short get_num_of_items(short max_num) {
}
void init_mini_map() {
// TODO: I'm not sure if the bounds in the DLOG resource included the titlebar height; perhaps the actual height should be a little less
mini_map.create(sf::VideoMode(296,277), "Map", sf::Style::Titlebar | sf::Style::Close);
mini_map.setPosition(sf::Vector2i(52,62));
mini_map.setVisible(false);

View File

@@ -97,7 +97,6 @@ location center;
short current_pc;
short combat_active_pc;
effect_pat_type current_pat;
// TODO: Integrate this ^ into the town cCreature type
short spell_caster, missile_firer,current_monst_tactic;
short store_current_pc = 0;

View File

@@ -1036,7 +1036,7 @@ bool monst_check_special_terrain(location where_check,short mode,short which_mon
can_enter = false;
break;
case eTerSpec::DAMAGING: // TODO: Update this to check other cases
case eTerSpec::DAMAGING:
switch(eDamageType(ter_flag)) {
case eDamageType::FIRE:
return univ.town.monst[which_monst].fire_res == 0;

View File

@@ -322,7 +322,10 @@ bool create_pc(short spot,cDialog* parent) {
univ.party[spot].main_status = eMainStatus::ALIVE;
if(overall_mode != MODE_STARTUP) {
// TODO: Why only when not in MODE_STARTUP?
// If this is called while in startup mode, it means we're in the middle of building a party.
// Thus, the PC should not be finalized yet.
// However, if we're not in startup mode, it means we're adding a new PC to an existing party.
// Thus, we must finalize the PC now.
univ.party[spot].finish_create();
}
univ.party[spot].cur_health = univ.party[spot].max_health;
@@ -1377,8 +1380,6 @@ void do_priest_spell(short pc_num,eSpell spell_num,bool freebie) {
univ.party[i].status[eStatus::DISEASE] = 0;
}
if(spell_num == eSpell::HYPERACTIVITY) {
// Looks like this isn't clipped to a positive number. (That's probably intentional.)
// TODO: So, should a status icon be added for negative levels of sleep?
univ.party[i].status[eStatus::ASLEEP] -= 6 + 2 * adj;
univ.party[i].status[eStatus::HASTE_SLOW] = max(0,univ.party[i].status[eStatus::HASTE_SLOW]);
}
@@ -1771,7 +1772,6 @@ static void draw_spell_info(cDialog& me, const eSkill store_situation, const sho
for(int i = 0; i < 6; i++) {
std::string id = "target" + boost::lexical_cast<std::string>(i + 1);
// TODO: Make this thing an enum
switch((*cSpell::fromNum(store_situation,store_spell)).need_select) {
case SELECT_NO:
me[id].hide();
@@ -2202,8 +2202,6 @@ eSpell pick_spell(short pc_num,eSkill type) { // 70 - no spell OW spell num
put_spell_led_buttons(castSpell, type, former_spell);
if(univ.party.help_received[7] == 0) {
// TODO: Not sure if this initial draw is needed
// cd_initial_draw(1098);
give_help(7,8,castSpell);
}
@@ -2364,8 +2362,6 @@ eAlchemy alch_choice(short pc_num) {
sout << " (skill " << univ.party[pc_num].skill(eSkill::ALCHEMY) << ")";
chooseAlchemy["mixer"].setText(sout.str());
if(univ.party.help_received[20] == 0) {
// TODO: I'm not sure if the initial draw is needed
// cd_initial_draw(1047);
give_help(20,21,chooseAlchemy);
}

View File

@@ -79,26 +79,6 @@ std::map<eItemAbil, short> abil_chart = {
{eItemAbil::CALL_SPECIAL,4}, {eItemAbil::CAST_SPELL,4},
};
// TODO: I bet this is completely unused; it looks like it does nothing.
//short which; // number, 0 - 49, of special
bool town_specials(short which,short /*t_num*/) {
bool can_enter = true;
short spec_id;
location l;
l = univ.town->special_locs[which];
spec_id = univ.town->spec_id[which];
if(spec_id < 0)
return true;
// call special
erase_specials();
return can_enter;
}
// which is unused
//short mode; // 0 - pre 1 - end by victory 2 - end by flight
// wanderin spec 99 -> generic spec
@@ -1241,7 +1221,6 @@ bool adj_town_look(location where) {
// tell party you find something, if looking at a space they can't step in
add_string_to_buf(" Search: You find something! ");
}
//call special can_open = town_specials(i,univ.town.town_num);
run_special(eSpecCtx::TOWN_LOOK,2,univ.town->spec_id[i],where,&s1,&s2,&s3);
if(s1 > 0)
@@ -1504,9 +1483,7 @@ bool damage_monst(short which_m, short who_hit, short how_much, eDamageType dam_
// Monster damages. Make it hostile.
victim->active = 2;
// TODO: This looks like the reason Windows split the boom_space function in two.
// It doesn't exactly make sense though, since in its version, boom_space is only called for how_much_spec.
if(dam_type != eDamageType::MARKED) { // note special damage only gamed in hand-to-hand, not during animation
if(dam_type != eDamageType::MARKED) {
if(party_can_see_monst(which_m)) {
boom_space(victim->cur_loc,100,boom_gr[dam_type],how_much,sound_type);
}
@@ -2386,7 +2363,6 @@ void general_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
}
*/
// TODO: What was next_spec_type for? Is it still needed?
void oneshot_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
short* next_spec,short* next_spec_type,short* a,short* b,short* redraw) {
bool check_mess = true,set_sd = true;
@@ -2552,7 +2528,6 @@ void oneshot_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
}
// TODO: What was next_spec_type for? Is it still needed?
void affect_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
short *next_spec,short* /*next_spec_type*/,short *a,short *b,short *redraw) {
bool check_mess = true;
@@ -3006,7 +2981,6 @@ static bool isValidField(int fld, bool allowSpecial) {
return false;
}
// TODO: What was next_spec_type for? Is it still needed?
void ifthen_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
short *next_spec,short* /*next_spec_type*/,short *a,short *b,short *redraw) {
bool check_mess = false;
@@ -3566,7 +3540,6 @@ void set_terrain(location l, ter_num_t terrain_type) {
}
}
// TODO: What was next_spec_type for? Is it still needed?
void townmode_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
short *next_spec,short* /*next_spec_type*/,short *a,short *b,short *redraw) {
static const char*const stairDlogs[8] = {
@@ -4049,7 +4022,6 @@ void townmode_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
}
}
// TODO: What was next_spec_type for? Is it still needed?
void rect_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
short *next_spec,short* /*next_spec_type*/,short *a,short *b,short *redraw){
bool check_mess = true;
@@ -4192,7 +4164,6 @@ END:
}
}
// TODO: What was next_spec_type for? Is it still needed?
void outdoor_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
short *next_spec,short* /*next_spec_type*/,short *a,short *b,short *redraw){
bool check_mess = false;

View File

@@ -1,7 +1,6 @@
#include "creature.hpp"
bool town_specials(short which,short t_num);
bool handle_wandering_specials (short which,short mode);
bool check_special_terrain(location where_check,eSpecCtx mode,cPlayer& which_pc,short *spec_num,
bool *forced);