the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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}