bool eFileTypeZIP::Open(const char* name) const { char contain_path[xIo::MAX_PATH_LEN]; char contain_name[xIo::MAX_PATH_LEN]; if(Contain(name, contain_path, contain_name)) { unzFile h = unzOpen64(contain_path); if(!h) return false; bool ok = false; if(unzLocateFile(h, contain_name, 0) == UNZ_OK) { ok = OpenCurrent(h); } unzClose(h); return ok; } char opened_name[xIo::MAX_PATH_LEN]; bool ok = Open(unzOpen64(name), opened_name); if(ok) { char full_name[xIo::MAX_PATH_LEN]; strcpy(full_name, name); strcat(full_name, "/"); strcat(full_name, opened_name); OpLastFile(full_name); } return ok; }
static void Init(const char* path) { const char* res = "/"; OpLastFile(res); // xIo::SetResourcePath(res); char buf[xIo::MAX_PATH_LEN]; strcpy(buf, path); strcat(buf, "/"); xIo::SetProfilePath(buf); Handler()->OnInit(); InitSound(); }
bool Init(const char* path) { OpLastFile("A:\\GAME\\"); // xIo::SetResourcePath(OpLastFolder()); xIo::SetProfilePath(OpLastFolder()); // xLog::SetLogPath(OpLastFolder()); Handler()->OnInit(); #ifdef SIM_VERSION Handler()->OnOpenFile(path); #endif//SIM_VERSION return true; }
bool eSpeccyHandler::OnSaveFile(const char* name) { OpLastFile(name); const eFileType* t = eFileType::FindByName(name); if(!t) return false; char path[xIo::MAX_PATH_LEN]; strcpy(path, name); int l = strlen(path); char* e = path + l; while(e > path && *e != '\\' && *e != '/') --e; *e = 0; if(xIo::PathCreate(path)) return t->Store(name); return false; }
bool eSpeccyHandler::OnOpenFile(const char* name, const void* data, size_t data_size) { OpLastFile(name); return OpenFile(name, data, data_size); }