static void DrawObjectiveInfo( const struct MissionOptions *mo, const int idx, const Vec2i pos) { const MissionObjective *mobj = CArrayGet(&mo->missionData->Objectives, idx); const ObjectiveDef *o = CArrayGet(&mo->Objectives, idx); const CharacterStore *store = &gCampaign.Setting.characters; switch (mobj->Type) { case OBJECTIVE_KILL: { const Character *cd = CArrayGet( &store->OtherChars, CharacterStoreGetSpecialId(store, 0)); const int i = cd->looks.face; TOffsetPic pic; pic.picIndex = cHeadPic[i][DIRECTION_DOWN][STATE_IDLE]; pic.dx = cHeadOffset[i][DIRECTION_DOWN].dx; pic.dy = cHeadOffset[i][DIRECTION_DOWN].dy; DrawTTPic( pos.x + pic.dx, pos.y + pic.dy, PicManagerGetOldPic(&gPicManager, pic.picIndex), &cd->table); } break; case OBJECTIVE_RESCUE: { const Character *cd = CArrayGet( &store->OtherChars, CharacterStoreGetPrisonerId(store, 0)); const int i = cd->looks.face; TOffsetPic pic; pic.picIndex = cHeadPic[i][DIRECTION_DOWN][STATE_IDLE]; pic.dx = cHeadOffset[i][DIRECTION_DOWN].dx; pic.dy = cHeadOffset[i][DIRECTION_DOWN].dy; DrawTTPic( pos.x + pic.dx, pos.y + pic.dy, PicManagerGetOldPic(&gPicManager, pic.picIndex), &cd->table); } break; case OBJECTIVE_COLLECT: { const Pic *p = o->pickupClass->Pic; Blit(&gGraphicsDevice, p, Vec2iAdd(pos, p->offset)); } break; case OBJECTIVE_DESTROY: { Vec2i picOffset; const Pic *p = MapObjectGetPic(IntMapObject(mobj->Index), &picOffset, false); Blit(&gGraphicsDevice, p, Vec2iAdd(pos, picOffset)); } break; case OBJECTIVE_INVESTIGATE: // Don't draw return; default: CASSERT(false, "Unknown objective type"); return; } }
static void DrawWreck( UIObject *o, GraphicsDevice *g, Vec2i pos, void *vData) { const IndexedEditorBrush *data = vData; const char **name = CArrayGet(&gMapObjects.Destructibles, data->u.ItemIndex); const MapObject *mo = StrMapObject(*name); pos = Vec2iAdd(Vec2iAdd(pos, o->Pos), Vec2iScaleDiv(o->Size, 2)); Vec2i offset; const Pic *pic = MapObjectGetPic(mo, &offset, true); Blit(g, pic, Vec2iAdd(pos, offset)); }
static void DrawObjectiveInfo(const Objective *o, const Vec2i pos) { const CharacterStore *store = &gCampaign.Setting.characters; switch (o->Type) { case OBJECTIVE_KILL: { const Character *cd = CArrayGet( &store->OtherChars, CharacterStoreGetSpecialId(store, 0)); DrawHead(cd, DIRECTION_DOWN, STATE_IDLE, pos); } break; case OBJECTIVE_RESCUE: { const Character *cd = CArrayGet( &store->OtherChars, CharacterStoreGetPrisonerId(store, 0)); DrawHead(cd, DIRECTION_DOWN, STATE_IDLE, pos); } break; case OBJECTIVE_COLLECT: { const Pic *p = o->u.Pickup->Pic; Blit(&gGraphicsDevice, p, Vec2iMinus(pos, Vec2iScaleDiv(p->size, 2))); } break; case OBJECTIVE_DESTROY: { Vec2i picOffset; const Pic *p = MapObjectGetPic(o->u.MapObject, &picOffset, false); Blit(&gGraphicsDevice, p, Vec2iAdd(pos, picOffset)); } break; case OBJECTIVE_INVESTIGATE: // Don't draw return; default: CASSERT(false, "Unknown objective type"); return; } }
void DisplayMapItem(const struct vec2i pos, const MapObject *mo) { struct vec2i offset; const Pic *pic = MapObjectGetPic(mo, &offset); Blit(&gGraphicsDevice, pic, svec2i_add(pos, offset)); }
void DisplayMapItem(Vec2i pos, MapObject *mo) { Vec2i offset; Pic *pic = MapObjectGetPic(mo, &gPicManager, &offset); Blit(&gGraphicsDevice, pic, Vec2iAdd(pos, offset)); }
void DisplayMapItem(const Vec2i pos, const MapObject *mo) { Vec2i offset; const Pic *pic = MapObjectGetPic(mo, &offset, false); Blit(&gGraphicsDevice, pic, Vec2iAdd(pos, offset)); }
void DisplayMapItem(Vec2i pos, MapObject *mo) { Pic *pic = MapObjectGetPic(mo, &gPicManager); Blit(&gGraphicsDevice, pic, pos); }
static const Pic *GetObjectPic(const int id, Vec2i *offset) { const TObject *obj = CArrayGet(&gObjs, id); return MapObjectGetPic(obj->Class, offset, obj->Health == 0); }