//敵の出現情報をエクセルから読み込んで格納する関数 void load_story(){ int n,num,i,fp; char fname[32]={"../dat/csv/番外1/storyH0.csv"}; int input[64]; char inputc[64]; fp = FileRead_open(fname);//ファイル読み込み if(fp == NULL){ printfDx("read error\n"); return; } for(i=0;i<2;i++)//最初の2行読み飛ばす while(FileRead_getc(fp)!='\n'); n=0 , num=0; while(1){ for(i=0;i<64;i++){ inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する if(inputc[i]=='/'){//スラッシュがあれば while(FileRead_getc(fp)!='\n');//改行までループ i=-1;//カウンタを最初に戻して continue; } if(input[i]==',' || input[i]=='\n'){//カンマか改行なら inputc[i]='\0';//そこまでを文字列とし break; } if(input[i]==EOF){//ファイルの終わりなら goto EXFILE;//終了 } } switch(num){ case 0: enemy_order[n].cnt =atoi(inputc);break; case 1: enemy_order[n].pattern =atoi(inputc);break; case 2: enemy_order[n].knd =atoi(inputc);break; case 3: enemy_order[n].x =atof(inputc);break; case 4: enemy_order[n].y =atof(inputc);break; case 5: enemy_order[n].sp =atof(inputc);break; case 6: enemy_order[n].bltime =atoi(inputc);break; case 7: enemy_order[n].blknd =atoi(inputc);break; case 8: enemy_order[n].col =atoi(inputc);break; case 9: enemy_order[n].hp =atoi(inputc);break; case 10:enemy_order[n].blknd2 =atoi(inputc);break; case 11:enemy_order[n].wait =atoi(inputc);break; case 12:enemy_order[n].item_n[0]=atoi(inputc);break; case 13:enemy_order[n].item_n[1]=atoi(inputc);break; case 14:enemy_order[n].item_n[2]=atoi(inputc);break; case 15:enemy_order[n].item_n[3]=atoi(inputc);break; case 16:enemy_order[n].item_n[4]=atoi(inputc);break; case 17:enemy_order[n].item_n[5]=atoi(inputc);break; } num++; if(num==18){ num=0; n++; } } EXFILE: FileRead_close(fp); }
//登録名・ファイルのパス・フォントの名前を指定 //ex ("HG96", "hoge.ttf", "Hogeman's_Font", 96, 5) void Font::LoadFont(std::string reg_name, std::string file_path, std::string font_name, int fontsize, int thick){ file_path = "Fonts/" + file_path; const char* filename = file_path.c_str(); // ファイルのサイズを得る int FontFileSize = FileRead_size(filename); // フォントファイルを開く int FontFileHandle = FileRead_open(filename); // フォントデータ格納用のメモリ領域を確保 void *Buffer = malloc(FontFileSize); // フォントファイルを丸ごとメモリに読み込む FileRead_read(Buffer, FontFileSize, FontFileHandle); // AddFontMemResourceEx引数用 DWORD font_num = 0; // メモリに読み込んだフォントデータをシステムに追加 if (AddFontMemResourceEx(Buffer, FontFileSize, NULL, &font_num) != 0){} else { // フォント読込エラー処理 MessageBox(NULL, "フォント読込失敗", "", MB_OK); } int tmp_handle = CreateFontToHandle(font_name.c_str(), fontsize, thick, DX_FONTTYPE_ANTIALIASING_4X4); handlemap.emplace(reg_name.c_str(), tmp_handle); }
//--------------------------------------------------------------------- void SaveData::load() { char str[1024]; std::string s; std::stringstream ss; int num; int fp = FileRead_open("savedata/savedata.dat"); if (fp == 0) { puts("Fail loading savedata file"); return; } while (FileRead_gets(str, 256, fp) != -1) { ss.clear(); ss.str(str); //---- ss >> s; num = atoi(s.c_str()); is_data[num] = 1; //---- ss >> s; scenario_pos[num] = atoi(s.c_str()); //---- ss >> s; save_day[num] = s; ss >> s; save_time[num] = s; } FileRead_close(fp); puts("Success loading savedata file"); }
//--------------------------------------------------------------------- void AllScenarioData::loadData() { puts("シナリオデータをロードします"); char str[1024]; std::string s; std::stringstream ss; int num; int fp = FileRead_open("scenario/scenario_1.dat"); // ファイル読み込み失敗 if (fp == 0) { puts("シナリオデータの読み込みに失敗しました"); return; } // ファイル読み込み処理 while (FileRead_gets(str, 256, fp) != -1) { ss.clear(); ss.str(str); ss >> s; //---- 番号 if (s == "#NUM") { ss >> s; num = atoi(s.c_str()); scenario_data[num]->setNum(num); } //---- 名前 else if (s == "#NAME") {
Songs::Songs(Font *font) { n = 0; SetUseASyncLoadFlag(FALSE); int file = FileRead_open("song/song.csv", FALSE); SetUseASyncLoadFlag(TRUE); char buf[3][256]; int id = 0; while (FileRead_scanf(file, "%d,%[^,\n\r],%[^,\n\r],%[^\n\r]", &id, buf[0], buf[1], buf[2]) != EOF) { song[n] = new Song(font, id, buf[1], buf[2], buf[0]); n++; } FileRead_close(file); }
static DXPTEXTURE3* LoadPngImage(const char *FileName) { u32 filesize; int fp = -1; DXPPNG png; DXPPNG_PARAMS params; void *buf = NULL; DXPTEXTURE3 *texptr = NULL; filesize = FileRead_size(FileName); if(!filesize)goto err; buf = malloc(filesize); if(!buf)goto err; texptr = dxpGraphicsCreateTexture(); if(!texptr)goto err; fp = FileRead_open(FileName,0); if(fp == 0)goto err; FileRead_read(buf,filesize,fp); FileRead_close(fp); params.funcs.pmalloc = malloc; params.funcs.pmemalign = memalign; params.funcs.pfree = free; params.mode = DXPPNG_MODE_GPU; params.src = buf; params.srcLength = filesize; if(dxppng_decode(¶ms,&png) == -1)goto err; texptr->alphabit = png.alpha ? 1 : 0; texptr->colorkey = dxpGraphicsData.colorkey; texptr->width = png.widthN2; texptr->height = png.heightN2; texptr->pitch = png.pitch; texptr->ppalette = (u32 *)png.clut; texptr->psm = png.psm; texptr->reloadflag = 1; texptr->size2_nflag = (png.height == png.heightN2 && png.width == png.widthN2 ? 1 : 0); texptr->swizzledflag = 0; texptr->texdata = png.raw; texptr->texvram = 0; texptr->umax = png.width; texptr->vmax = png.height; return texptr; err: FileRead_close(fp); free(buf); dxpGraphicsReleseTexture(texptr); return NULL; }
bool Client::load( ) { int fh = FileRead_open( "IP.ini" ); if ( fh == 0 ) { return false; } IPDATA ip; if ( FileRead_read( &ip, sizeof( IPDATA ), fh ) == -1 ) { FileRead_close( fh ) ; return false; } _ip[ 0 ] = ip.d1; _ip[ 1 ] = ip.d2; _ip[ 2 ] = ip.d3; _ip[ 3 ] = ip.d4; FileRead_close( fh ) ; return true; }
void Subweponbox::GetSubweponForCSV(int id){ int n, num, i, fp; char fname[256]; int input[64]; char inputc[64]; sprintf_s(fname, "dat/Database/dbSW.csv"); fp = FileRead_open(fname); // ファイル読み込み if(fp == NULL){ printfDx("read error\n"); return; } for(i=0;i<2;i++) // 最初の2行を読み飛ばす while(FileRead_getc(fp)!='\n'); n=0, num=0; SubweponStatus tmpStatus; while(1){ for(i=0;i<64;i++){ inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する if(inputc[i]=='/'){//スラッシュがあれば while(FileRead_getc(fp)!='\n');//改行までループ i=-1;//カウンタを最初に戻して continue; } if(input[i]==',' || input[i]=='\n'){//カンマか改行なら inputc[i]='\0';//そこまでを文字列とし break; } if(input[i]==EOF){//ファイルの終わりなら goto EXFILE;//終了 } } switch(num){ case 0: tmpStatus.Name =inputc; break; case 1: tmpStatus.Kind =atoi(inputc);break; case 2: tmpStatus.Damage =atoi(inputc);break; case 3: tmpStatus.HitArea =atoi(inputc);break; case 4: tmpStatus.Speed =atoi(inputc);break; case 5: tmpStatus.Rappid =atoi(inputc);break; case 6: tmpStatus.Penetoration =atoi(inputc);break; case 7: tmpStatus.LoadNumber =atoi(inputc);break; case 8: tmpStatus.Price =atoi(inputc);break; } num++; if(num==9){ tmpStatus.Id = n; if(n==id){ Subwepon tmp; tmp.SetSubwepon(tmpStatus); Insert(tmp); break; } num=0; n++; } } EXFILE: FileRead_close(fp);}
/*ストーリーロード*/ void TextClass::LoadStory(){ //真の変数 int FileHandle; //ファイルハンドル char TmpBuf[128]; //テキスト取得用一時変数 char FileName[64]; //ファイル名格納 std::string TmpText; //テキスト取得後操作用一時オブジェクト std::vector<std::string> SplitTextArray; //分割された文字を格納する配列 //カウンタ int Count = 0; //カウンタ int Scene = 0; //シーンカウンタ //行数管理 int SerifNo = -1; //セリフのナンバーを格納(最初は必ず加算されるので、初期値は負の数にしておく) //定数 const int LoadTextLen = 128; //読み込むテキストの文字数 const int NAME = 0; //分割された文字列を格納する配列に関するもの const int TEXT = 1; //分割された文字列を格納する配列に関するもの //SceneMax(定数)までロード while( Scene <= SceneMax ){ //ファイル名を取得 sprintf(FileName,"./resource/story/zankyo scene%d.txt",Scene); //ファイルオープン FileHandle = FileRead_open(FileName); //ファイル終端までループ while( FileRead_eof(FileHandle) == 0 ){ //ファイルから一行取得 FileRead_gets(TmpBuf,LoadTextLen,FileHandle); //一文字目が '\0' なら空行と判断しスキップ if( TmpBuf[0] == '\0' ) continue; //char型配列のTmpBufをStringオブジェクトのTmpTextに変換 TmpText = TmpBuf; //TmpTextの一文字目が'\0'ならば空行と判断しスキップ if( TmpText[0] == NULL ) continue; //全角・半角スペースを除去 CutSpace(TmpText); //TmpTextの一文字目が'\0'ならば空行と判断しスキップ if( TmpText[0] == '\0' ) continue; //TmpTextをNameとTextに分割 SplitTextArray = StringSplit(TmpText,':'); //分割された文字列をNameとTextに代入 Name[Scene][Count] = SplitTextArray[NAME]; Text[Scene][Count] = SplitTextArray[TEXT]; //Nameが"コメント"ならコメントと判断しスキップ if( Name[Scene][Count] == "コメント" ) continue; //一時処理、Nameが"背景"ならとりまスキップ //if( Name[Scene][Count] == "背景" ) continue; //Textが'\0'なら前のテキストの続きと判断し、Nameに続きと代入し、TextにName(一行全て入ってる)の内容をコピー & 行数加算 //それ以外ならば次のテキストと判断し、SerifNoを加算し、行数加算 if( Text[Scene][Count] == "\0" ){ Text[Scene][Count] = Name[Scene][Count]; Name[Scene][Count] = "続き"; LineNo[Scene][SerifNo]++; }else{ SerifNo++; LineNo[Scene][SerifNo]++; } //最大行数加算 LineMax[Scene]++; //カウントを進める Count++; } //シーンカウントを進める Scene++; //カウント初期化 Count=0; SerifNo=-1; } }