MWWorld::CellStore *MWWorld::Cells::getCellStore (const ESM::Cell *cell) { if (cell->mData.mFlags & ESM::Cell::Interior) { std::string lowerName(Misc::StringUtils::lowerCase(cell->mName)); std::map<std::string, CellStore>::iterator result = mInteriors.find (lowerName); if (result==mInteriors.end()) { result = mInteriors.insert (std::make_pair (lowerName, CellStore (cell))).first; } return &result->second; } else { std::map<std::pair<int, int>, CellStore>::iterator result = mExteriors.find (std::make_pair (cell->getGridX(), cell->getGridY())); if (result==mExteriors.end()) { result = mExteriors.insert (std::make_pair ( std::make_pair (cell->getGridX(), cell->getGridY()), CellStore (cell))).first; } return &result->second; } }
void GameWorld::loadSpecialModel(const unsigned short index, const std::string &name) { std::string lowerName(name); std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), ::tolower); /// @todo a bit more smarter than this state->specialModels[index] = lowerName; }
/* Loads a integer parameter into the builtin database */ int BuiltinParams::load_builtin_param_int(const std::string & name, void * engine_val, short int flags, int init_val, int upper_bound, int lower_bound, const std::string &alt_name) { Param * param; CValue iv, ub, lb; iv.int_val = init_val; ub.int_val = upper_bound; lb.int_val = lower_bound; // normalize to lower case as milkdrop scripts depend on this std::string lowerName(name); std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), tolower); param = new Param(lowerName, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb); if (param == NULL) { return PROJECTM_OUTOFMEM_ERROR; } if (insert_builtin_param( param ) < 0) { delete param; return PROJECTM_ERROR; } if (alt_name != "") { std::string alt_lower_name(alt_name); std::transform(alt_lower_name.begin(), alt_lower_name.end(), alt_lower_name.begin(), tolower); insert_param_alt_name(param,alt_lower_name); } return PROJECTM_SUCCESS; }
/* Loads a boolean parameter */ int BuiltinParams::load_builtin_param_bool(const std:: string & name, void * engine_val, short int flags, int init_val, const std::string &alt_name) { Param * param; CValue iv, ub, lb; iv.int_val = init_val; ub.int_val = TRUE; lb.int_val = false; std::string lowerName(name); std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), tolower); param = new Param(lowerName, P_TYPE_BOOL, flags, engine_val, NULL, iv, ub, lb); if (param == NULL) { return PROJECTM_OUTOFMEM_ERROR; } if (insert_builtin_param(param) < 0) { delete param; return PROJECTM_ERROR; } if (alt_name != "") { std::string alt_lower_name(alt_name); std::transform(alt_lower_name.begin(), alt_lower_name.end(), alt_lower_name.begin(), tolower); insert_param_alt_name(param,alt_lower_name); } return PROJECTM_SUCCESS; }
void GameWorld::loadCutscene(const std::string &name) { std::string lowerName(name); std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), ::tolower); auto datfile = data->openFile(lowerName + ".dat"); CutsceneData* cutscene = new CutsceneData; if( datfile ) { LoaderCutsceneDAT loaderdat; loaderdat.load(cutscene->tracks, datfile); } data->loadIFP(lowerName + ".ifp"); cutsceneAudioLoaded = data->loadAudioStream(name+".mp3"); if ( !cutsceneAudioLoaded ) { cutsceneAudioLoaded = data->loadAudioStream(name+".wav"); } if ( !cutsceneAudioLoaded ) { logger->warning("Data", "Failed to load cutscene audio: " + name); } if( state->currentCutscene ) { delete state->currentCutscene; } state->currentCutscene = cutscene; state->currentCutscene->meta.name = name; logger->info("World", "Loaded cutscene: " + name); }
/* Loads a float parameter into the builtin database */ int BuiltinParams::load_builtin_param_float(const std::string & name, void * engine_val, void * matrix, short int flags, float init_val, float upper_bound, float lower_bound, const std::string & alt_name) { Param * param = NULL; CValue iv, ub, lb; iv.float_val = init_val; ub.float_val = upper_bound; lb.float_val = lower_bound; /* Create new parameter of type float */ if (BUILTIN_PARAMS_DEBUG == 2) { printf("load_builtin_param_float: (name \"%s\") (alt_name = \"%s\") ", name.c_str(), alt_name.c_str()); fflush(stdout); } std::string lowerName(name); std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), tolower); if ((param = new Param(lowerName, P_TYPE_DOUBLE, flags, engine_val, matrix, iv, ub, lb)) == NULL) { return PROJECTM_OUTOFMEM_ERROR; } if (BUILTIN_PARAMS_DEBUG == 2) { printf("created..."); fflush(stdout); } /* Insert the paremeter into the database */ if (insert_builtin_param( param ) < 0) { delete param; return PROJECTM_ERROR; } if (BUILTIN_PARAMS_DEBUG == 2) { printf("inserted..."); fflush(stdout); } /* If this parameter has an alternate name, insert it into the database as link */ if (alt_name != "") { std::string alt_lower_name(alt_name); std::transform(alt_lower_name.begin(), alt_lower_name.end(), alt_lower_name.begin(), tolower); insert_param_alt_name(param,alt_lower_name); if (BUILTIN_PARAMS_DEBUG == 2) { printf("alt_name inserted..."); fflush(stdout); } } if (BUILTIN_PARAMS_DEBUG == 2) printf("finished\n"); /* Finished, return success */ return PROJECTM_SUCCESS; }