今、セーブ/ロード画面にサムネイルを表示させようとしています。
DXライブラリのGetDrawScreenGraph関数を使ってスクリーンをキャプチャして画像をbmp形式で保存、
その後、ゲームを再起動して読み込み、表示する事はできます。
また、セーブデータだけを、.datファイルにして保存する事もできます。
問題は、これら二つのファイル(.dat と .bmp) データをひとつの.datファイルにして保存したいのですが、
コードがまったく思いつきません。
サムネイルであるbmp形式のデータは、80×60のサイズです。
セーブデータは、クラスであり、クラスのメンバー変数に構造体の配列があります。
class playerInfo {
int numNow;//現在保存されているデータ数。
int activeUserNum;//現在アクティブなデータのインデックス。
struct userData allList[10];//10人分のセーブデータの配列
int slotGraphHandle[10];
//この後は関数に続く
.datのセーブデータは、今はバイナリ書き込み形式でクラスのメンバー関数内で以下のように保存しています。
fwrite(this, sizeof(playerInfo), 1, fp);
fpは FILE* です。
画像の保存も、DXライブラリの関数を利用して以下のようにしています。
SaveDrawScreen( 0 , 0 , 80 , 60 , "save/SaveDat-1.bmp");
こうなると、一度画像をファイルに保存してから、バイナリとして読み込み、
セーブデータのクラスのメンバー変数にそのバイナリを保存するためのメンバー変数が欲しいのかと
思ったのですが、ファイルのサイズからしてどうメンバー変数にするか思いつきません。
他には、画像データをセーブデータに上書きではなく、加算するように書き込めばいいのかと思いました。
この場合、セーブした.datから直接画像としては読み込めないので、一度画像の部分だけを読み込み、bmpとして一時的に保存しなおして
そのファイルをDXライブラリの関数を用いて読み込み、一時的に作ったbmpを消してしまえばいいのでしょうか?
ですが、一部分だけをbmpに書き出すコードが分かりません。
よろしくお願いします。<(_ _)>