SimplePersistApp:
From SWWorkshop
In save operation for level editing or checkpoint, use below mechanism, swPersistManager
Result
name=A1 size=12 width=13 name=A2 size=13 width=14 name=A3 size=15 width=16 name=B1 age=100 mass=200 name=A3 size=15 width=16 name=B2 age=200 mass=300
Source Code
#include "../../include/SWEngine.h" #pragma comment (lib,"../../lib/SWUtil.lib") #pragma comment (lib,"../../lib/SWTypes.lib") #pragma comment (lib,"../../lib/SWCore.lib") #pragma comment (lib,"../../lib/SWEngine.lib") #pragma comment (lib,"../../lib/SWGame.lib") #pragma comment (lib,"../../lib/SWServices.lib") swApplication simplePersistApp; int renderCount=0; typedef struct{ char* name; int width; int size; }AData; typedef struct{ char* name; int age; int mass; }BData; //------------------------------------------------------------------------------------------- void saveAData(FILE *file,void *obj){ AData* aData=(AData*)obj; fprintf(file,"name=%s size=%i width=%i \n",aData->name,aData->size,aData->width); } //------------------------------------------------------------------------------------------- void saveBData(FILE *file,void *obj){ BData* bData=(BData*)obj; fprintf(file,"name=%s age=%i mass=%i \n",bData->name,bData->age,bData->mass); } //------------------------------------------------------------------------------------------- void GameLoop(){ renderCount++; if(renderCount==5){ FILE *file=swFileSystemOpenFile("PersistSample.txt","wt"); swPersistManagerExecute(file); } } //------------------------------------------------------------------------------------------- AData* createAData(char *name, int size, int width){ AData *aData=(AData*)malloc(sizeof(AData)); aData->name=name; aData->size=size; aData->width=width; return aData; } //------------------------------------------------------------------------------------------- BData* createBData(char *name, int age, int mass){ BData *bData=(BData*)malloc(sizeof(BData)); bData->name=name; bData->age=age; bData->mass=mass; return bData; } //------------------------------------------------------------------------------------------- void GameInit(){ swPersistManagerAdd(saveAData,createAData("A1",12,13)); swPersistManagerAdd(saveAData,createAData("A2",13,14)); swPersistManagerAdd(saveAData,createAData("A3",15,16)); swPersistManagerAdd(saveBData,createBData("B1",100,200)); swPersistManagerAdd(saveAData,createAData("A3",15,16)); swPersistManagerAdd(saveBData,createBData("B2",200,300)); } //------------------------------------------------------------------------------------------- int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { //Application Settings simplePersistApp.hInstance=hInstance; simplePersistApp.fullScreen=false; simplePersistApp.cursor=true; simplePersistApp.width=800; simplePersistApp.height=600; simplePersistApp.title="Simple Persist"; simplePersistApp.path="\\rsc\\SimplePersist\\"; simplePersistApp.appRun=GameLoop; //Application Execution swEngineInit(&simplePersistApp); GameInit(); swEngineRun(); swEngineExit(); return 0; }
