void NetHackQtStatusWindow::updateStats()

in win/Qt/qt_win.cpp [2473:2640]


void NetHackQtStatusWindow::updateStats()
{
    if (!parentWidget()) return;

    char buf[BUFSZ];

    if (cursy != 0) return;    /* do a complete update when line 0 is done */

    if (ACURR(A_STR) > 118) {
	Sprintf(buf,"STR:%d",ACURR(A_STR)-100);
    } else if (ACURR(A_STR)==118) {
	Sprintf(buf,"STR:18/**");
    } else if(ACURR(A_STR) > 18) {
	Sprintf(buf,"STR:18/%02d",ACURR(A_STR)-18);
    } else {
	Sprintf(buf,"STR:%d",ACURR(A_STR));
    }
    str.setLabel(buf,NetHackQtLabelledIcon::NoNum,ACURR(A_STR));

    dex.setLabel("DEX:",(long)ACURR(A_DEX));
    con.setLabel("CON:",(long)ACURR(A_CON));
    intel.setLabel("INT:",(long)ACURR(A_INT));
    wis.setLabel("WIS:",(long)ACURR(A_WIS));
    cha.setLabel("CHA:",(long)ACURR(A_CHA));
    const char* hung=hu_stat[u.uhs];
    if (hung[0]==' ') {
	hunger.hide();
    } else {
	hunger.setIcon(u.uhs ? p_hungry : p_satiated);
	hunger.setLabel(hung);
	hunger.show();
    }
    if (Confusion) confused.show(); else confused.hide();
    if (Sick) {
	if (u.usick_type & SICK_VOMITABLE) {
	    sick_fp.show();
	} else {
	    sick_fp.hide();
	}
	if (u.usick_type & SICK_NONVOMITABLE) {
	    sick_il.show();
	} else {
	    sick_il.hide();
	}
    } else {
	sick_fp.hide();
	sick_il.hide();
    }
    if (Blind) blind.show(); else blind.hide();
    if (Stunned) stunned.show(); else stunned.hide();
    if (Hallucination) hallu.show(); else hallu.hide();
    const char* enc=enc_stat[near_capacity()];
    if (enc[0]==' ' || !enc[0]) {
	encumber.hide();
    } else {
	encumber.setIcon(p_encumber[near_capacity()-1]);
	encumber.setLabel(enc);
	encumber.show();
    }
    Strcpy(buf, plname);
    if ('a' <= buf[0] && buf[0] <= 'z') buf[0] += 'A'-'a';
    Strcat(buf, " the ");
    if (u.mtimedone) {
	char mname[BUFSZ];
	int k = 0;

	Strcpy(mname, mons[u.umonnum].mname);
	while(mname[k] != 0) {
	    if ((k == 0 || (k > 0 && mname[k-1] == ' '))
	     && 'a' <= mname[k] && mname[k] <= 'z')
	    {
		mname[k] += 'A' - 'a';
	    }
	    k++;
	}
	Strcat(buf, mname);
    } else {
	Strcat(buf, rank_of(u.ulevel, pl_character[0], ::flags.female));
    }
    name.setLabel(buf,NetHackQtLabelledIcon::NoNum,u.ulevel);

    if (describe_level(buf)) {
	dlevel.setLabel(buf,(bool)TRUE);
    } else {
	Sprintf(buf, "%s, level ", dungeons[u.uz.dnum].dname);
	dlevel.setLabel(buf,(long)depth(&u.uz));
    }

    gold.setLabel("Au:", money_cnt(invent));
    if (u.mtimedone) {
	// You're a monster!

	Sprintf(buf, "/%d", u.mhmax);
	hp.setLabel("HP:",u.mh  > 0 ? u.mh  : 0,buf);
	level.setLabel("HD:",(long)mons[u.umonnum].mlevel);
    } else {
	// You're normal.

	Sprintf(buf, "/%d", u.uhpmax);
	hp.setLabel("HP:",u.uhp > 0 ? u.uhp : 0,buf);
	level.setLabel("Level:",(long)u.ulevel);
    }
    Sprintf(buf, "/%d", u.uenmax);
    power.setLabel("Pow:",u.uen,buf);
    ac.setLabel("AC:",(long)u.uac);
    if (::flags.showexp) {
	exp.setLabel("Exp:",(long)u.uexp);
    } else
    {
	exp.setLabel("");
    }
    if (u.ualign.type==A_CHAOTIC) {
	align.setIcon(p_chaotic);
	align.setLabel("Chaotic");
    } else if (u.ualign.type==A_NEUTRAL) {
	align.setIcon(p_neutral);
	align.setLabel("Neutral");
    } else {
	align.setIcon(p_lawful);
	align.setLabel("Lawful");
    }

    if (::flags.time) time.setLabel("Time:",(long)moves);
    else time.setLabel("");
#ifdef SCORE_ON_BOTL
    if (::flags.showscore) {
	score.setLabel("Score:",(long)botl_score());
    } else
#endif
    {
	score.setLabel("");
    }

    if (first_set)
    {
	first_set=FALSE;

	name.highlightWhenChanging();
	dlevel.highlightWhenChanging();

	str.highlightWhenChanging();
	dex.highlightWhenChanging();
	con.highlightWhenChanging();
	intel.highlightWhenChanging();
	wis.highlightWhenChanging();
	cha.highlightWhenChanging();

	gold.highlightWhenChanging();
	hp.highlightWhenChanging();
	power.highlightWhenChanging();
	ac.highlightWhenChanging(); ac.lowIsGood();
	level.highlightWhenChanging();
	exp.highlightWhenChanging();
	align.highlightWhenChanging();

	//time.highlightWhenChanging();
	score.highlightWhenChanging();

	hunger.highlightWhenChanging();
	confused.highlightWhenChanging();
	sick_fp.highlightWhenChanging();
	sick_il.highlightWhenChanging();
	blind.highlightWhenChanging();
	stunned.highlightWhenChanging();
	hallu.highlightWhenChanging();
	encumber.highlightWhenChanging();
    }
}