175{
177 LOG_INFO(
"server.loading",
">> Loading Cinematic Camera files");
178
181 {
182 std::string filenameWork = dataPath;
183 filenameWork.append(dbcentry->Model);
184
185
186 std::replace(filenameWork.begin(), filenameWork.end(), '\\', '/');
187
188 boost::filesystem::path filename = filenameWork;
189
190
191 filename.make_preferred();
192
193
194 filename.replace_extension("m2");
195
196 std::ifstream m2file(filename.string().c_str(), std::ios::in | std::ios::binary);
197 if (!m2file.is_open())
198 continue;
199
200
201 m2file.seekg(0, std::ios::end);
202 std::streamoff fileSize = m2file.tellg();
203
204
206 {
207 LOG_ERROR(
"server.loading",
"Camera file {} is damaged. File is smaller than header size", filename.string());
208 m2file.close();
209 continue;
210 }
211
212
213 m2file.seekg(0, std::ios::beg);
214 char fileCheck[5];
215 m2file.read(fileCheck, 4);
216 fileCheck[4] = 0;
217
218
219 if (strcmp(fileCheck, "MD20"))
220 {
221 LOG_ERROR(
"server.loading",
"Camera file {} is damaged. File identifier not found", filename.string());
222 m2file.close();
223 continue;
224 }
225
226
227 std::vector<char> buffer(fileSize);
228 m2file.seekg(0, std::ios::beg);
229 if (!m2file.read(buffer.data(), fileSize))
230 {
231 m2file.close();
232 continue;
233 }
234 m2file.close();
235
236
238
240 {
241 LOG_ERROR(
"server.loading",
"Camera file {} is damaged. Camera references position beyond file end", filename.string());
242 continue;
243 }
244
245
247 if (!
readCamera(cam, fileSize, header, dbcentry))
248 LOG_ERROR(
"server.loading",
"Camera file {} is damaged. Camera references position beyond file end", filename.string());
249 }
250
253}
std::uint32_t uint32
Definition: Define.h:108
#define LOG_INFO(filterType__,...)
Definition: Log.h:165
#define LOG_ERROR(filterType__,...)
Definition: Log.h:157
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:131
uint32 getMSTime()
Definition: Timer.h:103
DBCStorage< CinematicCameraEntry > sCinematicCameraStore(CinematicCameraEntryfmt)
bool readCamera(M2Camera const *cam, uint32 buffSize, M2Header const *header, CinematicCameraEntry const *dbcentry)
Definition: M2Stores.cpp:51
Definition: M2Structure.h:35
uint32 ofsCameras
Definition: M2Structure.h:95
Definition: M2Structure.h:120
Definition: DBCStructure.h:704