the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2
3typedef struct {
4 WORD index;
5 DWORD diffsSize;
6 BYTE *diffs;
7 DWORD lastByteChanged;
8} TutorialDiff_Chunk;
9
10typedef struct {
11 DWORD diffCount;
12 TutorialDiff_Chunk *diffs;
13} TutorialDiff_File;
14
15#define TUTORIAL_NO_TEXT -1
16#define TUTORIAL_NO_ICON -1
17
18// If you want to make these bigger, be aware that that will affect what is stored after the tutorial data in the profile data
19// See Xbox_App.h for the struct
20#define TUTORIAL_PROFILE_STORAGE_BITS 512
21#define TUTORIAL_PROFILE_STORAGE_BYTES (TUTORIAL_PROFILE_STORAGE_BITS/8)
22
23// 4J Stu - The total number of eTutorial_State and eTutorial_Hint must be less than 512, as we only have 512 bits of profile
24// data to flag whether or not the player has seen them
25// In general a block or tool will have one each. We have a state if we need more than one message, or a hint if just once
26// message will suffice
27// Tasks added here should also be added in the Tutorial::staticCtor() if you wish to store completion in the profile data
28enum eTutorial_State
29{
30 e_Tutorial_State_Any = -2,
31 e_Tutorial_State_None = -1,
32
33 e_Tutorial_State_Gameplay = 0,
34
35 e_Tutorial_State_Inventory_Menu,
36 e_Tutorial_State_2x2Crafting_Menu,
37 e_Tutorial_State_3x3Crafting_Menu,
38 e_Tutorial_State_Furnace_Menu,
39
40 e_Tutorial_State_Riding_Minecart,
41 e_Tutorial_State_Riding_Boat,
42 e_Tutorial_State_Fishing,
43
44 e_Tutorial_State_Bed,
45
46 e_Tutorial_State_Container_Menu,
47 e_Tutorial_State_Trap_Menu,
48 e_Tutorial_State_Redstone_And_Piston,
49 e_Tutorial_State_Portal,
50 e_Tutorial_State_Creative_Inventory_Menu, // Added TU5
51 e_Tutorial_State_Food_Bar, // Added TU5
52 e_Tutorial_State_CreativeMode, // Added TU7
53 e_Tutorial_State_Brewing,
54 e_Tutorial_State_Brewing_Menu,
55 e_Tutorial_State_Enchanting,
56 e_Tutorial_State_Enchanting_Menu,
57 e_Tutorial_State_Farming,
58 e_Tutorial_State_Breeding,
59 e_Tutorial_State_Golem,
60 e_Tutorial_State_Trading,
61 e_Tutorial_State_Trading_Menu,
62 e_Tutorial_State_Anvil,
63 e_Tutorial_State_Anvil_Menu,
64 e_Tutorial_State_Enderchests,
65 e_Tutorial_State_Horse,
66 e_Tutorial_State_Horse_Menu,
67 e_Tutorial_State_Hopper,
68 e_Tutorial_State_Hopper_Menu,
69 e_Tutorial_State_Beacon,
70 e_Tutorial_State_Beacon_Menu,
71 e_Tutorial_State_Fireworks,
72 e_Tutorial_State_Fireworks_Menu,
73
74 e_Tutorial_State_Max
75};
76
77// Hints added here should also be added in the Tutorial::staticCtor() if you wish to store completion in the profile data
78enum eTutorial_Hint
79{
80 e_Tutorial_Hint_Always_On = e_Tutorial_State_Max,
81
82 e_Tutorial_Hint_Hold_To_Mine,
83 e_Tutorial_Hint_Tool_Damaged,
84 e_Tutorial_Hint_Swim_Up,
85
86 e_Tutorial_Hint_Unused_2,
87 e_Tutorial_Hint_Unused_3,
88 e_Tutorial_Hint_Unused_4,
89 e_Tutorial_Hint_Unused_5,
90 e_Tutorial_Hint_Unused_6,
91 e_Tutorial_Hint_Unused_7,
92 e_Tutorial_Hint_Unused_8,
93 e_Tutorial_Hint_Unused_9,
94 e_Tutorial_Hint_Unused_10,
95
96 e_Tutorial_Hint_Rock,
97 e_Tutorial_Hint_Stone,
98 e_Tutorial_Hint_Planks,
99 e_Tutorial_Hint_Sapling,
100 e_Tutorial_Hint_Unbreakable,
101 e_Tutorial_Hint_Water,
102 e_Tutorial_Hint_Lava,
103 e_Tutorial_Hint_Sand,
104 e_Tutorial_Hint_Gravel,
105 e_Tutorial_Hint_Gold_Ore,
106 e_Tutorial_Hint_Iron_Ore,
107 e_Tutorial_Hint_Coal_Ore,
108 e_Tutorial_Hint_Tree_Trunk,
109 e_Tutorial_Hint_Leaves,
110 e_Tutorial_Hint_Glass,
111 e_Tutorial_Hint_Lapis_Ore,
112 e_Tutorial_Hint_Lapis_Block,
113 e_Tutorial_Hint_Dispenser,
114 e_Tutorial_Hint_Sandstone,
115 e_Tutorial_Hint_Note_Block,
116 e_Tutorial_Hint_Powered_Rail,
117 e_Tutorial_Hint_Detector_Rail,
118 e_Tutorial_Hint_Tall_Grass,
119 e_Tutorial_Hint_Wool,
120 e_Tutorial_Hint_Flower,
121 e_Tutorial_Hint_Mushroom,
122 e_Tutorial_Hint_Gold_Block,
123 e_Tutorial_Hint_Iron_Block,
124 e_Tutorial_Hint_Stone_Slab,
125 e_Tutorial_Hint_Red_Brick,
126 e_Tutorial_Hint_Tnt,
127 e_Tutorial_Hint_Bookshelf,
128 e_Tutorial_Hint_Moss_Stone,
129 e_Tutorial_Hint_Obsidian,
130 e_Tutorial_Hint_Torch,
131 e_Tutorial_Hint_MobSpawner,
132 e_Tutorial_Hint_Chest,
133 e_Tutorial_Hint_Redstone,
134 e_Tutorial_Hint_Diamond_Ore,
135 e_Tutorial_Hint_Diamond_Block,
136 e_Tutorial_Hint_Crafting_Table,
137 e_Tutorial_Hint_Crops,
138 e_Tutorial_Hint_Farmland,
139 e_Tutorial_Hint_Furnace,
140 e_Tutorial_Hint_Sign,
141 e_Tutorial_Hint_Door_Wood,
142 e_Tutorial_Hint_Ladder,
143 e_Tutorial_Hint_Stairs_Stone,
144 e_Tutorial_Hint_Rail,
145 e_Tutorial_Hint_Lever,
146 e_Tutorial_Hint_PressurePlate,
147 e_Tutorial_Hint_Door_Iron,
148 e_Tutorial_Hint_Redstone_Ore,
149 e_Tutorial_Hint_Redstone_Torch,
150 e_Tutorial_Hint_Button,
151 e_Tutorial_Hint_Snow,
152 e_Tutorial_Hint_Ice,
153 e_Tutorial_Hint_Cactus,
154 e_Tutorial_Hint_Clay,
155 e_Tutorial_Hint_Sugarcane,
156 e_Tutorial_Hint_Record_Player,
157 e_Tutorial_Hint_Pumpkin,
158 e_Tutorial_Hint_Hell_Rock,
159 e_Tutorial_Hint_Hell_Sand,
160 e_Tutorial_Hint_Glowstone,
161 e_Tutorial_Hint_Portal,
162 e_Tutorial_Hint_Pumpkin_Lit,
163 e_Tutorial_Hint_Cake,
164 e_Tutorial_Hint_Redstone_Repeater,
165 e_Tutorial_Hint_Trapdoor,
166 e_Tutorial_Hint_Piston,
167 e_Tutorial_Hint_Sticky_Piston,
168 e_Tutorial_Hint_Monster_Stone_Egg,
169 e_Tutorial_Hint_Stone_Brick_Smooth,
170 e_Tutorial_Hint_Huge_Mushroom,
171 e_Tutorial_Hint_Iron_Fence,
172 e_Tutorial_Hint_Thin_Glass,
173 e_Tutorial_Hint_Melon,
174 e_Tutorial_Hint_Vine,
175 e_Tutorial_Hint_Fence_Gate,
176 e_Tutorial_Hint_Mycel,
177 e_Tutorial_Hint_Water_Lily,
178 e_Tutorial_Hint_Nether_Brick,
179 e_Tutorial_Hint_Nether_Fence,
180 e_Tutorial_Hint_Nether_Stalk,
181 e_Tutorial_Hint_Enchant_Table,
182 e_Tutorial_Hint_Brewing_Stand,
183 e_Tutorial_Hint_Cauldron,
184 e_Tutorial_Hint_End_Portal,
185 e_Tutorial_Hint_End_Portal_Frame,
186
187 e_Tutorial_Hint_Squid,
188 e_Tutorial_Hint_Cow,
189 e_Tutorial_Hint_Sheep,
190 e_Tutorial_Hint_Chicken,
191 e_Tutorial_Hint_Pig,
192 e_Tutorial_Hint_Wolf,
193 e_Tutorial_Hint_Creeper,
194 e_Tutorial_Hint_Skeleton,
195 e_Tutorial_Hint_Spider,
196 e_Tutorial_Hint_Zombie,
197 e_Tutorial_Hint_Pig_Zombie,
198 e_Tutorial_Hint_Ghast,
199 e_Tutorial_Hint_Slime,
200 e_Tutorial_Hint_Enderman,
201 e_Tutorial_Hint_Silverfish,
202 e_Tutorial_Hint_Cave_Spider,
203 e_Tutorial_Hint_MushroomCow,
204 e_Tutorial_Hint_SnowMan,
205 e_Tutorial_Hint_IronGolem,
206 e_Tutorial_Hint_EnderDragon,
207 e_Tutorial_Hint_Blaze,
208 e_Tutorial_Hint_Lava_Slime,
209 e_Tutorial_Hint_Ozelot,
210 e_Tutorial_Hint_Villager,
211 e_Tutorial_Hint_Wither,
212 e_Tutorial_Hint_Witch,
213 e_Tutorial_Hint_Bat,
214 e_Tutorial_Hint_Horse,
215
216 e_Tutorial_Hint_Item_Shovel,
217 e_Tutorial_Hint_Item_Hatchet,
218 e_Tutorial_Hint_Item_Pickaxe,
219 e_Tutorial_Hint_Item_Flint_And_Steel,
220 e_Tutorial_Hint_Item_Apple,
221 e_Tutorial_Hint_Item_Bow,
222 e_Tutorial_Hint_Item_Arrow,
223 e_Tutorial_Hint_Item_Coal,
224 e_Tutorial_Hint_Item_Diamond,
225 e_Tutorial_Hint_Item_Iron_Ingot,
226 e_Tutorial_Hint_Item_Gold_Ingot,
227 e_Tutorial_Hint_Item_Sword,
228 e_Tutorial_Hint_Item_Stick,
229 e_Tutorial_Hint_Item_Bowl,
230 e_Tutorial_Hint_Item_Mushroom_Stew,
231 e_Tutorial_Hint_Item_String,
232 e_Tutorial_Hint_Item_Feather,
233 e_Tutorial_Hint_Item_Sulphur,
234 e_Tutorial_Hint_Item_Hoe,
235 e_Tutorial_Hint_Item_Seeds,
236 e_Tutorial_Hint_Item_Wheat,
237 e_Tutorial_Hint_Item_Bread,
238 e_Tutorial_Hint_Item_Helmet,
239 e_Tutorial_Hint_Item_Chestplate,
240 e_Tutorial_Hint_Item_Leggings,
241 e_Tutorial_Hint_Item_Boots,
242 e_Tutorial_Hint_Item_Flint,
243 e_Tutorial_Hint_Item_Porkchop_Raw,
244 e_Tutorial_Hint_Item_Porkchop_Cooked,
245 e_Tutorial_Hint_Item_Painting,
246 e_Tutorial_Hint_Item_Apple_Gold,
247 e_Tutorial_Hint_Item_Sign,
248 e_Tutorial_Hint_Item_Door_Wood,
249 e_Tutorial_Hint_Item_Bucket_Empty,
250 e_Tutorial_Hint_Item_Bucket_Water,
251 e_Tutorial_Hint_Item_Bucket_Lava,
252 e_Tutorial_Hint_Item_Minecart,
253 e_Tutorial_Hint_Item_Saddle,
254 e_Tutorial_Hint_Item_Door_Iron,
255 e_Tutorial_Hint_Item_Redstone,
256 e_Tutorial_Hint_Item_Snowball,
257 e_Tutorial_Hint_Item_Boat,
258 e_Tutorial_Hint_Item_Leather,
259 e_Tutorial_Hint_Item_Milk,
260 e_Tutorial_Hint_Item_Brick,
261 e_Tutorial_Hint_Item_Clay,
262 e_Tutorial_Hint_Item_Reeds,
263 e_Tutorial_Hint_Item_Paper,
264 e_Tutorial_Hint_Item_Book,
265 e_Tutorial_Hint_Item_Slimeball,
266 e_Tutorial_Hint_Item_Minecart_Chest,
267 e_Tutorial_Hint_Item_Minecart_Furnace,
268 e_Tutorial_Hint_Item_Egg,
269 e_Tutorial_Hint_Item_Compass,
270 e_Tutorial_Hint_Item_Clock,
271 e_Tutorial_Hint_Item_Yellow_Dust,
272 e_Tutorial_Hint_Item_Fish_Raw,
273 e_Tutorial_Hint_Item_Fish_Cooked,
274 e_Tutorial_Hint_Item_Dye_Powder,
275 e_Tutorial_Hint_Item_Bone,
276 e_Tutorial_Hint_Item_Sugar,
277 e_Tutorial_Hint_Item_Cake,
278 e_Tutorial_Hint_Item_Diode,
279 e_Tutorial_Hint_Item_Cookie,
280 e_Tutorial_Hint_Item_Map,
281 e_Tutorial_Hint_Item_Record,
282
283 e_Tutorial_Hint_White_Stone,
284 e_Tutorial_Hint_Dragon_Egg,
285 e_Tutorial_Hint_RedstoneLamp,
286 e_Tutorial_Hint_Cocoa,
287
288 e_Tutorial_Hint_EmeraldOre,
289 e_Tutorial_Hint_EmeraldBlock,
290 e_Tutorial_Hint_EnderChest,
291 e_Tutorial_Hint_TripwireSource,
292 e_Tutorial_Hint_Tripwire,
293 e_Tutorial_Hint_CobblestoneWall,
294 e_Tutorial_Hint_Flowerpot,
295 e_Tutorial_Hint_Anvil,
296 e_Tutorial_Hint_QuartzOre,
297 e_Tutorial_Hint_QuartzBlock,
298 e_Tutorial_Hint_WoolCarpet,
299
300 e_Tutorial_Hint_Potato,
301 e_Tutorial_Hint_Carrot,
302
303 e_Tutorial_Hint_CommandBlock,
304 e_Tutorial_Hint_Beacon,
305 e_Tutorial_Hint_Activator_Rail,
306 e_Tutorial_Hint_RedstoneBlock,
307 e_Tutorial_Hint_DaylightDetector,
308 e_Tutorial_Hint_Dropper,
309 e_Tutorial_Hint_Hopper,
310 e_Tutorial_Hint_Comparator,
311 e_Tutorial_Hint_ChestTrap,
312 e_Tutorial_Hint_HayBlock,
313 e_Tutorial_Hint_ClayHardened,
314 e_Tutorial_Hint_ClayHardenedColored,
315 e_Tutorial_Hint_CoalBlock,
316
317 e_Tutorial_Hint_Item_Max,
318};
319
320// We store the first time that we complete these tasks to be used in telemetry
321enum eTutorial_Telemetry
322{
323 eTutorial_Telemetry_None = e_Tutorial_Hint_Item_Max,
324
325 eTutorial_Telemetry_TrialStart,
326 eTutorial_Telemetry_Halfway,
327 eTutorial_Telemetry_Complete,
328
329 eTutorial_Telemetry_Unused_1,
330 eTutorial_Telemetry_Unused_2,
331 eTutorial_Telemetry_Unused_3,
332 eTutorial_Telemetry_Unused_4,
333 eTutorial_Telemetry_Unused_5,
334 eTutorial_Telemetry_Unused_6,
335 eTutorial_Telemetry_Unused_7,
336 eTutorial_Telemetry_Unused_8,
337 eTutorial_Telemetry_Unused_9,
338 eTutorial_Telemetry_Unused_10,
339};
340
341enum eTutorial_CompletionAction
342{
343 e_Tutorial_Completion_None,
344 e_Tutorial_Completion_Complete_State, // This will make the current tutorial state complete
345 e_Tutorial_Completion_Complete_State_Gameplay_Constraints, // This will make the current tutorial state complete, and move the delayed constraints to the gameplay state
346 e_Tutorial_Completion_Jump_To_Last_Task,
347};