void nofBuildingWorker::Draw(DrawPoint drawPt)
{
    switch(state)
    {
        case STATE_FIGUREWORK:

        case STATE_HUNTER_CHASING:
        case STATE_HUNTER_WALKINGTOCADAVER:
        case STATE_HUNTER_FINDINGSHOOTINGPOINT: { DrawWalking(drawPt);
        }
        break;
        case STATE_WORK:
        case STATE_HUNTER_SHOOTING:
        case STATE_HUNTER_EVISCERATING:
        case STATE_CATAPULT_TARGETBUILDING:
        case STATE_CATAPULT_BACKOFF: DrawWorking(drawPt); break;
        case STATE_CARRYOUTWARE: DrawWalkingWithWare(drawPt); break;
        case STATE_WALKINGHOME:
        case STATE_ENTERBUILDING:
            if(ware != GD_NOTHING)
                DrawWalkingWithWare(drawPt);
            else
                DrawWalking(drawPt);
            break;
        default: DrawOtherStates(drawPt); break;
    }
}
示例#2
0
/// Zeichnet Figur beim Hereinlaufen/nach Hause laufen mit evtl. getragenen Waren
void nofBuildingWorker::DrawReturnStates(const int x, const int y)
{
    // Beim Nachhausegehen (Landarbeiter) und beim Reingehen kann entweder eine Ware getragen werden oder nicht
    if(ware != GD_NOTHING)
        DrawWalking(x, y, LOADER.GetBobN("jobs"), GetCarryID(), JOB_CONSTS[job].fat);
    else
        DrawWalking(x, y);
}
示例#3
0
/// Draws the figure while returning home / entering the building (often carrying wares)
void nofCharburner::DrawReturnStates(const int x, const int y)
{
    // Carry coal?
    if(ware == GD_COAL)
        DrawWalking(x, y, "charburner_bobs", 200);
    else
        // Draw normal walking otherwise
        DrawWalking(x, y);
}
示例#4
0
/// Draws the figure while returning home / entering the building (often carrying wares)
void nofCharburner::DrawReturnStates(DrawPoint drawPt)
{
    // Carry coal?
    if(ware == GD_COAL)
        DrawWalking(drawPt, "charburner_bobs", 200);
    else
        // Draw normal walking otherwise
        DrawWalking(drawPt);
}
/// Zeichnet Figur beim Hereinlaufen/nach Hause laufen mit evtl. getragenen Waren
void nofBuildingWorker::DrawWalkingWithWare(DrawPoint drawPt)
{
    unsigned short id = GetCarryID();
    // >=100 -> carrier.bob else jobs.bob!
    if(id >= 100)
        DrawWalking(drawPt, LOADER.GetBobN("carrier"), id - 100, JOB_CONSTS[job_].fat);
    else
        DrawWalking(drawPt, LOADER.GetBobN("jobs"), id, JOB_CONSTS[job_].fat);
}
void nofTradeDonkey::Draw(int x, int y)
{

	if(job == JOB_PACKDONKEY)
	{
		// Wenn wir warten auf ein freies Plätzchen, müssen wir den stehend zeichnen!
		// Wenn event = 0, dann sind wir mittem auf dem Weg angehalten!
		unsigned ani_step = GAMECLIENT.Interpolate(ASCENT_ANIMATION_STEPS[ascent],current_ev)%8;
		
		CalcFigurRelative(x,y);

		// Läuft normal mit oder ohne Ware

		// Esel
		LOADER.GetMapImageN(2000+((dir+3)%6)*8+ani_step)->Draw(x,y);
		// Schatten des Esels
		LOADER.GetMapImageN(2048+dir%3)->Draw(x,y,0,0,0,0,0,0,COLOR_SHADOW);

		if(gt != GD_NOTHING)
		{
			// Ware im Korb zeichnen
			LOADER.GetMapImageN(2350+gt)
				->Draw(x+WARE_POS_DONKEY[dir*16+ani_step*2],y+WARE_POS_DONKEY[dir*16+ani_step*2+1]);
		}
	}
	else
		DrawWalking(x,y);
}
示例#7
0
void noFigure::DrawWalking(int x, int y)
{
    // Figurentyp unterscheiden
    switch(job_)
    {
        case JOB_PACKDONKEY:
        {
            // Wenn wir warten, ani-step 2 benutzen
            unsigned ani_step = waiting_for_free_node ? 2 : GAMECLIENT.Interpolate(ASCENT_ANIMATION_STEPS[ascent], current_ev) % 8;

            // Wenn man wartet, stehend zeichnen, es sei denn man wartet mittem auf dem Weg!
            if(!waiting_for_free_node || pause_walked_gf)
                CalcFigurRelative(x, y);

            // Esel
            LOADER.GetMapImageN(2000 + ((GetCurMoveDir() + 3) % 6) * 8 + ani_step)->Draw(x, y);
            // Schatten des Esels
            LOADER.GetMapImageN(2048 + GetCurMoveDir() % 3)->Draw(x, y, 0, 0, 0, 0, 0, 0, COLOR_SHADOW);
        } return;
        case JOB_CHARBURNER:
        {
            DrawWalking(x, y, "charburner_bobs", 53);
        } return;
        default:
        {
            DrawWalkingBobJobs(x, y, job_);
        } return;
    }


}
示例#8
0
/// Zeichnen der Figur in sonstigen Arbeitslagen
void nofFarmhand::DrawOtherStates(const int x, const int y)
{
    switch(state)
    {
        case STATE_WALKTOWORKPOINT:
        {
            // Normales Laufen zeichnen
            DrawWalking(x, y);
        } break;
        default: return;
    }
}
示例#9
0
/// Draws the charburner while walking
/// (overriding standard method of nofFarmhand)
void nofCharburner::DrawOtherStates(const int x, const int y)
{
    switch(state)
    {
        case STATE_WALKTOWORKPOINT:
        {
            // Carry ware?
            if(!harvest)
            {
                if(wt == WT_WOOD)
                    DrawWalking(x, y, "charburner_bobs", 102);
                else
                    DrawWalking(x, y, "charburner_bobs", 151);
            }
            else
                // Draw normal walking
                DrawWalking(x, y);
        } break;
        default: return;
    }
}
示例#10
0
void nofBuildingWorker::Draw(int x, int y)
{
    switch(state)
    {
        case STATE_FIGUREWORK:

        case STATE_HUNTER_CHASING:
        case STATE_HUNTER_WALKINGTOCADAVER:
        case STATE_HUNTER_FINDINGSHOOTINGPOINT:
        {
            DrawWalking(x, y);
        } break;
        case STATE_WORK:
        case STATE_HUNTER_SHOOTING:
        case STATE_HUNTER_EVISCERATING:
        case STATE_CATAPULT_TARGETBUILDING:
        case STATE_CATAPULT_BACKOFF:
            DrawWorking(x, y); break;
        case STATE_CARRYOUTWARE:
        {
            unsigned short id = GetCarryID();

            // Über 100 bedeutet aus der carrier.bob nehmen, ansonsten aus der jobs.bob!
            if(id >= 100)
                DrawWalking(x, y, LOADER.GetBobN("carrier"), GetCarryID() - 100, JOB_CONSTS[job].fat);
            else
                DrawWalking(x, y, LOADER.GetBobN("jobs"), GetCarryID(), JOB_CONSTS[job].fat);
        } break;
        case STATE_WALKINGHOME:
        case STATE_ENTERBUILDING:
        {
            DrawReturnStates(x, y);

        } break;
        default:
            DrawOtherStates(x, y);
            break;
    }
}
示例#11
0
/// Zeichnen der Figur in sonstigen Arbeitslagen
void nofShipWright::DrawOtherStates(const int x, const int y)
{
    switch(state)
    {
        case STATE_WALKTOWORKPOINT:
        {
            // Schiffsbauer mit Brett zeichnen
            DrawWalking(x, y, LOADER.GetBobN("jobs"), 92, false);
        } break;
        default: return;
    }

}
示例#12
0
void noFigure::DrawWalkingBobJobs(int x, int y, unsigned int job)
{
    if ((job == JOB_SCOUT) || ((job >= JOB_PRIVATE) && (job <= JOB_GENERAL)))
    {
        DrawWalking(x, y, LOADER.GetBobN("jobs"), JOB_CONSTS[job].jobs_bob_id + NATION_RTTR_TO_S2[gwg->GetPlayer(player).nation] * 6, false);
        return;
    }

    // Wenn wir warten auf ein freies Plätzchen, müssen wir den stehend zeichnen!
    unsigned ani_step = waiting_for_free_node ? 2 : GAMECLIENT.Interpolate(ASCENT_ANIMATION_STEPS[ascent], current_ev) % 8;

    // Wenn man wartet, stehend zeichnen, es sei denn man wartet mittem auf dem Weg!
    if(!waiting_for_free_node || pause_walked_gf)
        CalcFigurRelative(x, y);

    LOADER.bob_jobs_cache[gwg->GetPlayer(player).nation][job][GetCurMoveDir()][ani_step].draw(x, y, 0xFFFFFFFF, COLORS[gwg->GetPlayer(player).color]);
}
示例#13
0
void nofScout_Free::Draw(int x, int y)
{
    //assert(this->GetObjId()!= 8215505);
    // normales Laufen zeichnen
    DrawWalking(x, y);
}
/// Zeichnen
void nofPassiveWorker::Draw(int x, int y)
{
	DrawWalking(x,y);
}
示例#15
0
void nofTradeLeader::Draw(int x, int y)
{
    DrawWalking(x, y);
}
示例#16
0
void nofSoldier::DrawSoldierWalking(int x, int y, bool waitingsoldier)
{
    DrawWalking(x, y, LOADER.GetBobN("jobs"), 30 + NATION_RTTR_TO_S2[gwg->GetPlayer(player)->nation] * 6 + job - JOB_PRIVATE, false, waitingsoldier);
}