int monster::print_info(WINDOW* w, int vStart, int vLines, int column) { // First line of w is the border; the next two are terrain info, and after that // is a blank line. w is 13 characters tall, and we can't use the last one // because it's a border as well; so we have lines 4 through 11. // w is also 48 characters wide - 2 characters for border = 46 characters for us // vStart added because 'help' text in targeting win makes helpful info hard to find // at a glance. const int vEnd = vStart + vLines; mvwprintz(w, vStart++, column, c_white, "%s ", name().c_str()); nc_color color = c_white; std::string attitude = ""; get_Attitude(color, attitude); wprintz(w, color, "%s", attitude.c_str()); if (has_effect("downed")) wprintz(w, h_white, _("On ground")); else if (has_effect("stunned")) wprintz(w, h_white, _("Stunned")); else if (has_effect("beartrap")) wprintz(w, h_white, _("Trapped")); std::string damage_info; nc_color col; if (hp >= type->hp) { damage_info = _("It is uninjured"); col = c_green; } else if (hp >= type->hp * .8) { damage_info = _("It is lightly injured"); col = c_ltgreen; } else if (hp >= type->hp * .6) { damage_info = _("It is moderately injured"); col = c_yellow; } else if (hp >= type->hp * .3) { damage_info = _("It is heavily injured"); col = c_yellow; } else if (hp >= type->hp * .1) { damage_info = _("It is severely injured"); col = c_ltred; } else { damage_info = _("it is nearly dead"); col = c_red; } mvwprintz(w, vStart++, column, col, "%s", damage_info.c_str()); std::vector<std::string> lines = foldstring(type->description, getmaxx(w) - 1 - column); int numlines = lines.size(); for (int i = 0; i < numlines && vStart <= vEnd; i++) mvwprintz(w, vStart++, column, c_white, "%s", lines[i].c_str()); return vStart; }
int monster::print_info(WINDOW* w, int vStart, int vLines, int column) const { const int vEnd = vStart + vLines; mvwprintz(w, vStart++, column, c_white, "%s ", name().c_str()); nc_color color = c_white; std::string attitude = ""; get_Attitude(color, attitude); wprintz(w, color, "%s", attitude.c_str()); if (has_effect("downed")) { wprintz(w, h_white, _("On ground")); } else if (has_effect("stunned")) { wprintz(w, h_white, _("Stunned")); } else if (has_effect("beartrap")) { wprintz(w, h_white, _("Trapped")); } else if (has_effect("tied")) { wprintz(w, h_white, _("Tied")); } std::string damage_info; nc_color col; if (hp >= type->hp) { damage_info = _("It is uninjured"); col = c_green; } else if (hp >= type->hp * .8) { damage_info = _("It is lightly injured"); col = c_ltgreen; } else if (hp >= type->hp * .6) { damage_info = _("It is moderately injured"); col = c_yellow; } else if (hp >= type->hp * .3) { damage_info = _("It is heavily injured"); col = c_yellow; } else if (hp >= type->hp * .1) { damage_info = _("It is severely injured"); col = c_ltred; } else { damage_info = _("it is nearly dead"); col = c_red; } mvwprintz(w, vStart++, column, col, "%s", damage_info.c_str()); std::vector<std::string> lines = foldstring(type->description, getmaxx(w) - 1 - column); int numlines = lines.size(); for (int i = 0; i < numlines && vStart <= vEnd; i++) { mvwprintz(w, vStart++, column, c_white, "%s", lines[i].c_str()); } return vStart; }