//----------------------------------------------------------------- // Import elevation file // Elevation are processed QGT per QGT // The array Spot is used to store for each detail tile the // spot elevation: // Type 0: This is a unic elevation shared between sevral tiles // Type 1: This is the unic center elevation for the detail tile // Type 2: Elevation is an array of integers of dimension dim //----------------------------------------------------------------- // 1) The elevations found in the database are loaded // 2) The elevations from the BT file for this QGT are loaded // by => GetRegionElevation // 3) New elevation overwrite those from the database =>Overwrite // 4) Rectabgular region of same type are computed => CreateAreas //----------------------------------------------------------------- void CImport::ImportElevations(char *fn) { REGION_REC reg; reg.qgt = 0; CBtParser btp(fn); Dim = btp.Resolution(); TRACE("=====BUILDING REGIONS =========================="); while ( btp.GetQgtKey(reg.qtx,reg.qtz)) { reg.key = QGTKEY(reg.qtx,reg.qtz); TRACE("---QGT key=%010d",reg.key); //--- Load existing elevations from database ---- globals->sqm->GetQgtElevation(reg,ELVtoSlots); btp.GetRegionElevation(reg); Overwrite(reg); //--- Create areas ---------------------------- CreateAreas(); area.qgt = 0; area.qtx = reg.qtx; area.qtz = reg.qtz; globals->sqm->DeleteElevation(reg.key); WriteRegions(1); //----Reset all resources --------------------- Reset(); delete [] reg.data; reg.data = 0; btp.NextQgtKey(); } return; }
void Level1::CreateAllEntities() { // EntityFactory::CreateBackground(); EntityFactory::CreateCamera(CFG_GETF("LEVEL_1_CAMERA_HEIGHT")); CreateButtons(); CreateAreas(); // Cells and food must be created after areas to be rendered above them. auto player = EntityFactory::CreatePlayer(); Engine::GetInstance().AddComponent( std::make_shared<AIComponent>("EatableComponent"), player); // CreateCells(); CreateBacteria(); CreateFood(); }
//-------------------------------------------------------------------------- // Export this elevation file //-------------------------------------------------------------------------- void CImport::ExportElevationFile(int no) { SqlMGR *sqm = globals->sqm; REGION_REC reg; C_QTR *qtr = new C_QTR(no,0); // sqm->ELVtransaction(); //----extract all QGT regions --------------------------------- for (int rz = 0; rz < 16; rz++) { for (int rx = 0; rx < 16; rx++) { //---Process one QGT ----------------- Reset(); while (qtr->PopRegionInfo(rx,rz,reg)) ElevationFromREG(reg); if (0 == nReg) continue; TRACE("...QGT(%03d-%03d)",reg.qtx,reg.qtz); CreateAreas(); area.qgt = 0; area.qtx = reg.qtx; area.qtz = reg.qtz; WriteRegions(1); } } // sqm->ELVcommit(); delete qtr; return; }