TileData.cpp
#include "DxLib.h"
#include "stdio.h"
#include "TileDataFrame.h"
#include "main.h"
struct ATileData ATile[18];
void ATile_ini(){
int file,i,j,k,n=0,m=0,ed=0;
int l;//テスト
int text[32];
char textc[32];
int ATRule[48][4][2];
int Pic[192];
int maketipsc;//オートタイルチップを作成するスクリーン
char FPass[] = "./Data/Pics/TileA/";
char Exten[] = ".png";
char pass[64];
//-オートタイル格納用配列の読み込み-
file = FileRead_open( "./Data/Txt/ATileRuleData.txt" ) ;
if(file==NULL){printfDx("read error\n");return;}
while(1){
for(i=0;i<32;i++){
text[i] = FileRead_getc(file);
textc[i] = text[i];
if(textc[i]=='/'){while(FileRead_getc(file)!='\n'){i=-1;continue;}}
if(text[i]==',' || text[i]=='\n'){textc[i]='\0';break;}
if(text[i]==EOF){ed=1;break;}
}
if(ed==1){FileRead_close(file);break;}
ATRule[m/8][(m/2)%4][m%2] = atoi(textc);
m++;
}
n=0;m=0;ed=0;
//-オートタイルデータの読み込み-
file = FileRead_open( "./Data/Txt/ATileData.txt" ) ;
if(file==NULL){printfDx("read error\n");return;}
while(1){
for(i=0;i<32;i++){
text[i] = FileRead_getc(file);
textc[i] = text[i];
if(textc[i]=='/'){while(FileRead_getc(file)!='\n'){i=-1;continue;}}
if(text[i]==',' || text[i]=='\n'){textc[i]='\0';break;}
if(text[i]==EOF){ed=1;break;}
}
if(ed==1){FileRead_close(file);break;}
switch(m){
case 0: for(i=0;i<32;i++){
ATile[n].name[i] = textc[i];
}
break;
case 1: ATile[n].pri = atoi(textc);break;
case 2: ATile[n].pat = atoi(textc);break;
}
m++;
if(m==3){m=0;n++;}
}
//画像データの読み込み
for(i=0;i<18;i++){
strcpy(pass,FPass);strcat(pass,ATile[i].name);strcat(pass,Exten);
for(j=0;j<192;j++){
Pic[j] = MakeGraph(16,16);
}
LoadDivGraph( pass , 48*ATile[i].pat , 6*ATile[i].pat , 8 , 16 , 16 , Pic ) ;
for(k=0;k<4;k++){
for(j=0;j<48;j++){
ATile[i].pics[k][j] = MakeGraph(32,32);
}
}
for(k=0;k<ATile[i].pat;k++){
for(j=0;j<48;j++){
maketipsc = MakeScreen( 32, 32, TRUE ) ;
SetDrawScreen( maketipsc ) ;
DrawGraph( 0, 0,Pic[ATRule[j][0][0]+6*ATRule[j][0][1]*ATile[i].pat],TRUE);
DrawGraph(16, 0,Pic[ATRule[j][1][0]+6*ATRule[j][1][1]*ATile[i].pat],TRUE);
DrawGraph( 0,16,Pic[ATRule[j][2][0]+6*ATRule[j][2][1]*ATile[i].pat],TRUE);
DrawGraph(16,16,Pic[ATRule[j][3][0]+6*ATRule[j][3][1]*ATile[i].pat],TRUE);
SetDrawScreen( DX_SCREEN_FRONT ) ;
ATile[i].pics[k][j] = maketipsc;
}
}
memset(pass,0,sizeof(pass));
}
//-テスト-
for(i=0;i<18;i++){
ClearDrawScreen();//テスト
for(l=0;l<4;l++){
for(j=0;j<3;j++){
for(k=0;k<16;k++){
DrawGraph(j*34+l*110,k*34,ATile[i].pics[l][j*16+k],TRUE);
}
}
}
ScreenFlip();WaitKey();//テスト
}
}
#ifndef DEF_TileDataFrame_H //二重include防止
#define DEF_TileDataFrame_H
struct ATileData{
int pics[4][48];//
int pri;//
int pat;//
char name[32];//画像名
};
struct NTileData{
int pics[264];
int pri[264];
char name;//画像名
};
#endif
#include "DxLib.h"
#include "main.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
ATile_ini();
DxLib_End(); // DXライブラリ終了処理
return 0;
}