Advertisement
shoiko

SQLite 3 UE4 C++

Jul 7th, 2016
586
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.24 KB | None | 0 0
  1.  
  2. void AAI_Monster::loadMonsterListStrutData(){
  3.    
  4.     if (!ReloadMonsterList)return;
  5.  
  6.     //begin Build Databale String
  7.     int32 result = 0;
  8.     FString SQLQuery = "";
  9.     FString TableString;
  10.     TArray<FString> err;
  11.     if (MobListSelection.Num() == 0)MobListSelection.Add(FDataTableRowHandle());
  12.     TableString = FString(",MonsterID,MonsterName,ActorData,ClassData\n");
  13.    
  14.     if (MOB_LowLimit > MOB_HighLimit)MOB_HighLimit = MOB_LowLimit;
  15.     if (MOB_HighLimit< MOB_HighLimit)MOB_HighLimit = MOB_LowLimit;
  16.  
  17.     ReloadMonsterList = false;
  18.  
  19.     if (RPG_DATABASE_CONTROLLER == nullptr)RPG_DATABASE_CONTROLLER = NewObject<URPG_Database>(this, URPG_Database::StaticClass());
  20.     if (!OpenDatabase(SourceDataBase))return;
  21.     SQLQuery = "Select MonsterID,Name,LEVEL,MonsterConfig,(select CLS_Config_BP from classes where classes.classid=Monsters.classid ) as ClassConfig from Monsters where LEVEL between "
  22.         + FString::FromInt(MOB_LowLimit)
  23.         +" and "
  24.         + FString::FromInt(MOB_HighLimit)
  25.         +";";
  26.  
  27.     result = RPG_DATABASE_CONTROLLER->BP_Query(SQLQuery);
  28.  
  29.     if (result == 0 || RPG_DATABASE_CONTROLLER->BP_EndOResult(result))
  30.     {
  31.         if (result)RPG_DATABASE_CONTROLLER->BP_ClearResult(result);
  32.         RPG_DATABASE_CONTROLLER->BP_CloseDatabase();
  33.         return;
  34.     }
  35.     else{
  36.  
  37.         while (!RPG_DATABASE_CONTROLLER->BP_EndOResult(result))
  38.         {
  39.  
  40.             FString Label = FString(*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "LEVEL")) + "_" + FString(*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "Name"));
  41.             FString MonsterID = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "MonsterID"));
  42.             FString MonsterName = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "Name"));
  43.             FString Mesh = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "MonsterConfig"));
  44.             FString Animation = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "ClassConfig"));
  45.  
  46.             TableString += FString(Label + "," + MonsterID + "," + MonsterName + "," + Mesh + "," + Animation + "\n");
  47.  
  48.             RPG_DATABASE_CONTROLLER->BP_NextRow(result);
  49.         }
  50.     }
  51.  
  52.     if (result)RPG_DATABASE_CONTROLLER->BP_ClearResult(result);
  53.     RPG_DATABASE_CONTROLLER->BP_CloseDatabase();
  54.     if (mobDatatable == nullptr)mobDatatable = NewObject<UDataTable>(this, "mobDatatable");
  55.    
  56.     mobDatatable->RowStruct = FMonsterListDataTableTmp().StaticStruct();
  57. #if WITH_EDITORONLY_DATA
  58.     err = mobDatatable->CreateTableFromCSVString(TableString);
  59. #endif
  60.     if (err.Num() > 0)
  61.     {
  62.         for (FString tmp : err)UE_LOG(LogTemp, Error, TEXT("%s"), *tmp);
  63.     }
  64.     else{
  65.         MobListSelection[0].DataTable = mobDatatable;
  66.     }
  67.     //mobDatatable = nullptr;
  68. }
  69.  
  70. //Load presentation data for the launcher
  71. bool AAI_Monster::LoadLauncherTableData(){
  72.     if (!LoadSelectedData)return false;
  73.     if (MobListSelection.Num()==0)return false;
  74.     if (MobListSelection[0].DataTable == nullptr)return false;
  75.     static const FString ContextString(TEXT("GENERAL"));
  76.     FMonsterListDataTableTmp* monsterStr = MobListSelection[0].DataTable->FindRow<FMonsterListDataTableTmp>(MobListSelection[0].RowName, ContextString);
  77.     if (monsterStr == nullptr)return false;
  78.     Name = monsterStr->MonsterName;
  79.     LoadedMobData.ActorData = monsterStr->ActorData;
  80.     LoadedMobData.ClassData = monsterStr->ClassData;
  81.     LoadedMobData.MonsterID = monsterStr->MonsterID;
  82.     LoadedMobData.MonsterName = monsterStr->MonsterName;
  83.     LoadSelectedData = false;
  84.     return true;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement