void Window_Base::DrawGauge(const Game_Battler& actor, int cx, int cy) const { FileRequestAsync* request = AsyncHandler::RequestFile("System2", Data::system.system2_name); request->SetGraphicFile(true); if (!request->IsReady()) { // Gauge refreshed each frame, so we can wait via polling request->Start(); return; } BitmapRef system2 = Cache::System2(Data::system.system2_name); bool full = actor.IsGaugeFull(); int gauge_w = actor.GetGauge() / 4; // Which gauge (0 - 2) int gauge_y = 32 + 2 * 16; // Three components of the gauge Rect gauge_left(0, gauge_y, 16, 16); Rect gauge_center(16, gauge_y, 16, 16); Rect gauge_right(32, gauge_y, 16, 16); // Full or not full bar Rect gauge_bar(full ? 64 : 48, gauge_y, 16, 16); Rect dst_rect(cx + 16, cy, 25, 16); Rect bar_rect(cx + 16, cy, gauge_w, 16); contents->Blit(cx + 0, cy, *system2, gauge_left, 255); contents->Blit(cx + 16 + 25, cy, *system2, gauge_right, 255); contents->StretchBlit(dst_rect, *system2, gauge_center, 255); contents->StretchBlit(bar_rect, *system2, gauge_bar, 255); }
void Window_Base::DrawFace(const std::string& face_name, int face_index, int cx, int cy, bool flip) { if (face_name.empty()) { return; } FileRequestAsync* request = AsyncHandler::RequestFile("FaceSet", face_name); request->SetGraphicFile(true); face_request_ids.push_back(request->Bind(&Window_Base::OnFaceReady, this, face_index, cx, cy, flip)); request->Start(); }
void Spriteset_Map::ChipsetUpdated() { if (!Game_Map::GetChipsetName().empty()) { FileRequestAsync* request = AsyncHandler::RequestFile("ChipSet", Game_Map::GetChipsetName()); tilemap_request_id = request->Bind(&Spriteset_Map::OnTilemapSpriteReady, this); request->SetImportantFile(true); request->SetGraphicFile(true); request->Start(); } else { OnTilemapSpriteReady(NULL); } }
// Update void Spriteset_Map::Update() { Tone new_tone = Main_Data::game_screen->GetTone(); tilemap->SetOx(Game_Map::GetDisplayX() / (SCREEN_TILE_SIZE / TILE_SIZE)); tilemap->SetOy(Game_Map::GetDisplayY() / (SCREEN_TILE_SIZE / TILE_SIZE)); tilemap->SetTone(new_tone); tilemap->Update(); for (size_t i = 0; i < character_sprites.size(); i++) { character_sprites[i]->Update(); character_sprites[i]->SetTone(new_tone); } std::string name = Game_Map::Parallax::GetName(); if (name != panorama_name) { panorama_name = name; if (name.empty()) { panorama->SetBitmap(BitmapRef()); tilemap->SetFastBlitDown(true); } else { FileRequestAsync *request = AsyncHandler::RequestFile("Panorama", panorama_name); request->SetGraphicFile(true); panorama_request_id = request->Bind(&Spriteset_Map::OnPanoramaSpriteReady, this); request->Start(); } } panorama->SetOx(Game_Map::Parallax::GetX()); panorama->SetOy(Game_Map::Parallax::GetY()); panorama->SetTone(new_tone); Game_Vehicle* vehicle; int map_id = Game_Map::GetMapId(); for (int i = 1; i <= 3; ++i) { vehicle = Game_Map::GetVehicle((Game_Vehicle::Type) i); if (!vehicle_loaded[i - 1] && vehicle->GetMapId() == map_id) { vehicle_loaded[i - 1] = true; CreateSprite(vehicle, need_x_clone, need_y_clone); } } for (auto& shadow : airship_shadows) { shadow->SetTone(new_tone); shadow->Update(); } timer1->Update(); timer2->Update(); weather->SetTone(new_tone); }
Window_ShopParty::Window_ShopParty(int ix, int iy, int iwidth, int iheight) : Window_Base(ix, iy, iwidth, iheight) { SetBorderX(4); SetContents(Bitmap::Create(width - GetBorderX() * 2, height - 16)); cycle = 0; item_id = 0; const std::vector<Game_Actor*>& actors = Main_Data::game_party->GetActors(); for (size_t i = 0; i < actors.size() && i < 4; i++) { const std::string& sprite_name = actors[i]->GetSpriteName(); FileRequestAsync* request = AsyncHandler::RequestFile("CharSet", sprite_name); request->SetGraphicFile(true); request_ids.push_back(request->Bind(&Window_ShopParty::OnCharsetSpriteReady, this, (int)i)); request->Start(); } Refresh(); }