const Pic *GetHeadPic( const CharacterClass *c, const direction_e dir, const gunstate_e gunState) { // If firing, draw the firing head pic const int row = (gunState == GUNSTATE_FIRING || gunState == GUNSTATE_RECOIL) ? 1 : 0; const int idx = (int)dir + row * 8; return CPicGetPic(&c->HeadPics, idx); }
void DrawKey(UIObject *o, GraphicsDevice *g, struct vec2i pos, void *vData) { const IndexedEditorBrush *data = vData; if (data->u.ItemIndex == -1) { // No key; don't draw return; } const Mission *m = CampaignGetCurrentMission(&gCampaign); const Pic *pic = CPicGetPic( &KeyPickupClass(m->KeyStyle, data->u.ItemIndex)->Pic, 0); pos = svec2i_add(svec2i_add(pos, o->Pos), svec2i_scale_divide(o->Size, 2)); pos = svec2i_subtract(pos, svec2i_scale_divide(pic->size, 2)); Blit(g, pic, pos); }
static CPicDrawContext GetBulletDrawContext(const int id) { const TMobileObject *obj = CArrayGet(&gMobObjs, id); CASSERT(obj->isInUse, "Cannot draw non-existent mobobj"); // Calculate direction based on velocity const direction_e dir = RadiansToDirection(Vec2iToRadians(obj->vel)); const Pic *pic = CPicGetPic(&obj->tileItem.CPic, dir); CPicDrawContext c; c.Dir = dir; if (pic != NULL) { c.Offset = Vec2iNew( pic->size.x / -2, pic->size.y / -2 - obj->z / Z_FACTOR); } return c; }
void CPicDraw( GraphicsDevice *g, const CPic *p, const Vec2i pos, const CPicDrawContext *context) { const Pic *pic = CPicGetPic(p, context->Dir); if (pic == NULL) { return; } const Vec2i picPos = Vec2iAdd(pos, context->Offset); if (p->UseMask) { BlitMasked(g, pic, picPos, p->u1.Mask, true); } else { BlitBackground(g, pic, picPos, &p->u1.Tint, true); } }
static const Pic *GetHeadPic( const CharacterClass *c, const direction_e dir, const int state) { const int idx = (int)dir + (state >= STATE_COUNT ? DIRECTION_COUNT : 0); return CPicGetPic(&c->HeadPics, idx); }
const Pic *MapObjectGetPic(const MapObject *mo, Vec2i *offset) { *offset = mo->Offset; return CPicGetPic(&mo->Pic, 0); }