the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 167 lines 5.1 kB view raw
1#include "stdafx.h" 2#include "Include\SenClientMain.h" 3#include "Include\SenClientDynamicConfig.h" 4#include "DynamicConfigurations.h" 5 6 7MinecraftDynamicConfigurations::Dynamic_Config_Trial_Data MinecraftDynamicConfigurations::trialData; 8 9bool MinecraftDynamicConfigurations::s_bFirstUpdateStarted = false; 10bool MinecraftDynamicConfigurations::s_bUpdatedConfigs[MinecraftDynamicConfigurations::eDynamic_Config_Max]; 11MinecraftDynamicConfigurations::EDynamic_Configs MinecraftDynamicConfigurations::s_eCurrentConfig = MinecraftDynamicConfigurations::eDynamic_Config_Max; 12size_t MinecraftDynamicConfigurations::s_currentConfigSize = 0; 13size_t MinecraftDynamicConfigurations::s_dataWrittenSize = 0; 14byte *MinecraftDynamicConfigurations::s_dataWritten = NULL; 15 16void MinecraftDynamicConfigurations::Tick() 17{ 18 if(!s_bFirstUpdateStarted) 19 { 20 UpdateAllConfigurations(); 21 s_bFirstUpdateStarted = true; 22 } 23} 24 25DWORD MinecraftDynamicConfigurations::GetTrialTime() 26{ 27 return trialData.trialTimeSeconds; 28} 29 30void MinecraftDynamicConfigurations::UpdateAllConfigurations() 31{ 32 for(DWORD i = 0; i < eDynamic_Config_Max; ++i) 33 { 34 s_bUpdatedConfigs[i] = false; 35 } 36 UpdateNextConfiguration(); 37} 38 39void MinecraftDynamicConfigurations::UpdateNextConfiguration() 40{ 41 EDynamic_Configs update = eDynamic_Config_Max; 42 for(DWORD i = 0; i < eDynamic_Config_Max; ++i) 43 { 44 if(!s_bUpdatedConfigs[i]) 45 { 46 update = (EDynamic_Configs)i; 47 break; 48 } 49 } 50 if( update < eDynamic_Config_Max ) 51 { 52 UpdateConfiguration( update ); 53 } 54} 55 56void MinecraftDynamicConfigurations::UpdateConfiguration(EDynamic_Configs id) 57{ 58 app.DebugPrintf("DynamicConfig: Attempting to update dynamic configuration %d\n", id); 59 60 HRESULT hr = Sentient::SenDynamicConfigGetSize( id, &s_currentConfigSize, &MinecraftDynamicConfigurations::GetSizeCompletedCallback, NULL); 61 62 switch(hr) 63 { 64 case S_OK: 65 s_eCurrentConfig = id; 66 //The server call was spawned successfully. 67 break; 68 case E_FAIL: 69 app.DebugPrintf("DynamicConfig: Failed to get size for config\n"); 70 //Sentient failed to spawn the call to the server. 71 //An unknown error occurred. For more information, see the debug log that is available when you compile your application against the debug version of the library (SenCoreD.lib). 72 break; 73 case Sentient::SENTIENT_E_NOT_INITIALIZED: 74 app.DebugPrintf("DynamicConfig: Failed to get size for config as sentient not initialized\n"); 75 //Sentient is not initialized. You must call SentientInitialize before you call this function. 76 break; 77 case E_POINTER: 78 app.DebugPrintf("DynamicConfig: Failed to get size for config as pointer is invalid\n"); 79 //The out_size pointer is NULL. 80 break; 81 } 82 if(FAILED(hr) ) 83 { 84 s_bUpdatedConfigs[s_eCurrentConfig] = true; 85 UpdateNextConfiguration(); 86 } 87} 88 89void MinecraftDynamicConfigurations::GetSizeCompletedCallback(HRESULT taskResult, void *userCallbackData) 90{ 91 if( HRESULT_SUCCEEDED(taskResult) ) 92 { 93 s_dataWritten = new byte[s_currentConfigSize]; 94 HRESULT hr = Sentient::SenDynamicConfigGetBytes( 95 s_eCurrentConfig, 96 s_currentConfigSize, 97 &s_dataWrittenSize, 98 s_dataWritten, 99 &MinecraftDynamicConfigurations::GetDataCompletedCallback, 100 NULL 101 ); 102 103 switch(hr) 104 { 105 case S_OK: 106 //The server call was spawned successfully. 107 break; 108 case E_FAIL: 109 app.DebugPrintf("DynamicConfig : Failed to get bytes for config\n"); 110 //Sentient failed to spawn the call to the server. 111 //An unknown error occurred. For more information, see the debug log that is available when you compile your application against the debug version of the library (SenCoreD.lib). 112 break; 113 case Sentient::SENTIENT_E_NOT_INITIALIZED: 114 app.DebugPrintf("DynamicConfig : Failed to get bytes for config as sentient not initialized\n"); 115 //Sentient is not initialized. You must call SentientInitialize before you call this function. 116 break; 117 case E_POINTER: 118 app.DebugPrintf("DynamicConfig: Failed to get bytes for config as pointer is NULL\n"); 119 //The out_size pointer is NULL. 120 break; 121 } 122 if(FAILED(hr) ) 123 { 124 s_bUpdatedConfigs[s_eCurrentConfig] = true; 125 UpdateNextConfiguration(); 126 } 127 } 128 else 129 { 130 s_bUpdatedConfigs[s_eCurrentConfig] = true; 131 UpdateNextConfiguration(); 132 app.DebugPrintf("MinecraftDynamicConfigurations::GetSizeCompletedCallback : FAILED\n"); 133 } 134} 135 136void MinecraftDynamicConfigurations::GetDataCompletedCallback(HRESULT taskResult, void *userCallbackData) 137{ 138 if(HRESULT_SUCCEEDED(taskResult) && s_currentConfigSize == s_dataWrittenSize) 139 { 140 switch(s_eCurrentConfig) 141 { 142 case eDynamic_Config_Trial: 143 { 144 int version = *(int *)s_dataWritten; 145 switch(version) 146 { 147 case DYNAMIC_CONFIG_TRIAL_VERSION: 148 //case 1: 149 memcpy(&trialData,s_dataWritten+4,sizeof(_dynamic_config_trial_data_version1)); 150 app.DebugPrintf("Updated dynamic config TRIAL: timer is %d\n", trialData.trialTimeSeconds); 151 break; 152 }; 153 } 154 break; 155 }; 156 } 157 else 158 { 159 app.DebugPrintf("MinecraftDynamicConfigurations::GetDataCompletedCallback : FAILED\n"); 160 } 161 162 delete [] s_dataWritten; 163 s_dataWritten = NULL; 164 165 s_bUpdatedConfigs[s_eCurrentConfig] = true; 166 UpdateNextConfiguration(); 167}