sr2lua/demo_derby.lua

  1. -- Demo Derby Store Interface 
  2.  
  3. -- "global" variables 
  4. Demo_derby_car_slider_values = { } 
  5.  
  6. Demo_derby_offense_slider_values = { 
  7. 	num_values = 3, 
  8. 	cur_value = 0, 
  9. 	 
  10. 	[0] = { label = "NONE", }, 
  11. 	[1] = { label = "DEMO_DERBY_LEVEL_1", }, 
  12. 	[2] = { label = "DEMO_DERBY_LEVEL_2", }, 
  13. --	[3] = { label = "DEMO_DERBY_LEVEL_3", }, 
  14. } 
  15.  
  16. Demo_derby_defense_slider_values = { 
  17. 	num_values = 3, 
  18. 	cur_value = 0, 
  19. 	 
  20. 	[0] = { label = "NONE", }, 
  21. 	[1] = { label = "DEMO_DERBY_LEVEL_1", }, 
  22. 	[2] = { label = "DEMO_DERBY_LEVEL_2", }, 
  23. --	[3] = { label = "DEMO_DERBY_LEVEL_3", }, 
  24. } 
  25.  
  26. Demo_derby_speed_slider_values = { 
  27. 	num_values = 3, 
  28. 	cur_value = 0, 
  29. 	 
  30. 	[0] = { label = "NONE", }, 
  31. 	[1] = { label = "DEMO_DERBY_LEVEL_1", }, 
  32. 	[2] = { label = "DEMO_DERBY_LEVEL_2", }, 
  33. --	[3] = { label = "DEMO_DERBY_LEVEL_3", }, 
  34. } 
  35.  
  36. Demo_derby_footer = { } 
  37.  
  38. Demo_derby_max_points = 0 
  39. Demo_derby_points_spent = 0 
  40. Demo_derby_special = false 
  41. ---------------------- 
  42. --	SYSTEM FUNCTIONS -- 
  43. ---------------------- 
  44. --[ INITIALIZE AND SHUTDOWN ]-- 
  45. ------------------------------- 
  46. --	Initialize the menu 
  47. function demo_derby_init() 
  48. 	menu_init() 
  49. 	 
  50. 	 
  51. 	--Button tips 
  52. 	if Completion_is_coop() == true then 
  53. 		Demo_derby_btn_tips.b_button.enabled = false 
  54. 	end 
  55. 	 
  56. 	local which_menu = demo_derby_get_menu_type() 
  57. 	local interface_tracking_string = "Demo Derby" 
  58. 	 
  59. 	--Button tips 
  60. 	 
  61. 	local menu_to_use = { } 
  62. 	if which_menu == 0 then 
  63. 		Demo_derby_horz_menu[0].sub_menu = Demo_derby_menu 
  64. 		Demo_derby_horz_menu[0].label = "DEMO_DERBY_TITLE" 
  65. 		interface_tracking_string = "Demo Derby" 
  66. 	elseif which_menu == 1 then 
  67. 		Demo_derby_horz_menu[0].sub_menu = Demo_derby_bonus_derby_menu 
  68. 		Demo_derby_horz_menu[0].label = "DEMO_DERBY_BONUS_DERBY" 
  69. 		interface_tracking_string = "Demo Derby: Bonus" 
  70. 	elseif which_menu == 2 then 
  71. 		--Bonus vehicle menu 
  72. 		Demo_derby_horz_menu[0].sub_menu = Demo_derby_bonus_vehicle_menu 
  73. 		Demo_derby_horz_menu[0].label = "DEMO_DERBY_BONUS_DERBY" 
  74. 		interface_tracking_string = "Demo Derby: Vehicle Menu" 
  75. 	else 
  76. 		debug_print("vint", "Invalide Menu Choice\n") 
  77. 	end 
  78.  
  79. 	--menu_show(menu_to_use) 
  80. 	 
  81. 	menu_horz_init(Demo_derby_horz_menu) 
  82. 	 
  83. 	--Event Tracking 
  84. 	event_tracking_interface_enter(interface_tracking_string)	 
  85. end 
  86.  
  87. -- Shutdown and cleanup the menu 
  88. function demo_derby_cleanup() 
  89. 	 
  90. end 
  91.  
  92. -------------------------- 
  93. -- FOOTER FUNCTIONALITY -- 
  94. -------------------------- 
  95. function demo_derby_build_footer(menu_data) 
  96. 	local grp = vint_object_clone(vint_object_find("style_footer", nil, MENU_BASE_DOC_HANDLE), Menu_option_labels.control_parent) 
  97. 	vint_set_property(grp, "visible", true) 
  98.  
  99. 	if menu_data.footer ~= nil and menu_data.footer.footer_grp ~= nil and menu_data.footer.footer_grp ~= 0 then 
  100. 		vint_object_destroy(menu_data.footer.footer_grp) 
  101. 	end 
  102. 	 
  103. 	menu_data.footer = { } 
  104. 	menu_data.footer.footer_grp = grp 
  105. 	 
  106. 	Demo_derby_footer.label_h = vint_object_find("price_label", grp) 
  107. 	Demo_derby_footer.price_h = vint_object_find("price_amount", grp) 
  108. 	Demo_derby_footer.style_h = vint_object_find("style_amount", grp) 
  109. 	 
  110. 	vint_set_property(Demo_derby_footer.label_h , "visible", true) 
  111. 	vint_set_property(Demo_derby_footer.price_h , "visible", true) 
  112. 	vint_set_property(Demo_derby_footer.style_h, "visible", false) 
  113.  
  114. 	vint_set_property(Demo_derby_footer.label_h, "text_tag", "DEMO_DERBY_POINTS_INDICATOR") 
  115. end 
  116.  
  117. function demo_derby_update_footer() 
  118. 	if Demo_derby_special == false then 
  119. 		vint_set_property(Demo_derby_footer.price_h, "text_tag", Demo_derby_points_spent .. "[color:grey]/" .. Demo_derby_max_points) 
  120. 	 
  121. 		if Demo_derby_points_spent > Demo_derby_max_points then 
  122. 			vint_set_property(Demo_derby_footer.price_h, "tint", MENU_FOOTER_CASH_BROKE_COLOR.R, MENU_FOOTER_CASH_BROKE_COLOR.G, MENU_FOOTER_CASH_BROKE_COLOR.B) 
  123. 		else 
  124. 			vint_set_property(Demo_derby_footer.price_h, "tint", MENU_FOOTER_CASH_NORMAL_COLOR.R, MENU_FOOTER_CASH_NORMAL_COLOR.G, MENU_FOOTER_CASH_NORMAL_COLOR.B) 
  125. 		end 
  126. 	end 
  127. end 
  128.  
  129. function demo_derby_finalize_footer(menu_data) 
  130. 	if Demo_derby_special == false then 
  131. 		vint_set_property(Demo_derby_footer.price_h, "anchor", menu_data.menu_width - 20, 0) 
  132. 	end 
  133. end 
  134.  
  135. function demo_derby_release_footer(menu_data) 
  136. 	if menu_data.footer ~= nil then 
  137. 		vint_object_destroy(menu_data.footer.footer_grp) 
  138. 		menu_data.footer = nil 
  139. 	end 
  140. end 
  141. ---------------------------- 
  142. --	NORMAL DEMO DERBY MENU -- 
  143. ---------------------------- 
  144. function demo_derby_build_menu(menu_data) 
  145. 	Demo_derby_car_slider_values.num_values = 0 
  146.  
  147. 	--	The first parameter is the dataresponder in C 
  148. 	vint_dataresponder_request("demo_derby_populate_cars", "demo_derby_populate_cars", 0) 
  149. 	vint_dataresponder_request("demo_derby_set_levels", "demo_derby_set_levels", 0)	 
  150. 	 
  151. 	if Demo_derby_special == true then 
  152. 		for i = 1, 3 do 
  153. 			Demo_derby_menu[i].cur_value = 0 
  154. 			Demo_derby_menu[i].disabled = true 
  155. 			Demo_derby_menu[i].text_slider_values[0].label = "STORE_NOT_AVAILABLE" 
  156. 			Demo_derby_menu[i].text_slider_values.num_values = 1 
  157. 		end 
  158. 		 
  159. 		Demo_derby_menu[4].disabled = true 
  160. 	else 
  161. 		demo_derby_build_footer(menu_data) 
  162. 		demo_derby_update_footer() 
  163. 	end 
  164. end 
  165.  
  166. function demo_derby_populate_cars(label) 
  167. 	Demo_derby_car_slider_values[Demo_derby_car_slider_values.num_values] = { label = label } 
  168. 	Demo_derby_car_slider_values.num_values = Demo_derby_car_slider_values.num_values + 1 
  169. end 
  170.  
  171. function demo_derby_set_levels(offense_level, defense_level, speed_level, points_spent, max_points, special_tournament, derby_level) 
  172. 	 
  173. 	Demo_derby_menu[1].text_slider_values.cur_value = offense_level 
  174. 	Demo_derby_menu[2].text_slider_values.cur_value = defense_level 
  175. 	Demo_derby_menu[3].text_slider_values.cur_value = speed_level 
  176. 	 
  177. 	Demo_derby_max_points = max_points 
  178. 	Demo_derby_points_spent = points_spent 
  179. 	Demo_derby_special = special_tournament 
  180. 	 
  181. 	if derby_level == 0 then 
  182. 		Demo_derby_menu.header_label_str = "DEMO_DERBY_TITLE" 
  183. 	else 
  184. 		local insert_values = { [0] = derby_level } 
  185. 		Demo_derby_menu.header_label_str = vint_insert_values_in_string("DEMO_DERBY_TITLE_LEVEL", insert_values) 
  186. 	end 
  187. end 
  188.  
  189. function demo_derby_update(menu_label, menu_data) 
  190. 	if (Demo_derby_special == true and menu_data.id == 0) or Demo_derby_special == false then 
  191. 		local points = demo_derby_update_options(menu_data.id, menu_data.text_slider_values.cur_value) 
  192. 		 
  193. 		if points ~= nil and Demo_derby_special == false then 
  194. 			Demo_derby_points_spent = points 
  195. 			demo_derby_update_footer() 
  196. 		end 
  197. 	end	 
  198. end 
  199.  
  200. function demo_derby_reset_upgrades(menu_label, menu_data) 
  201. 	Demo_derby_menu[1].text_slider_values.cur_value = 0 
  202. 	Demo_derby_menu[2].text_slider_values.cur_value = 0 
  203. 	Demo_derby_menu[3].text_slider_values.cur_value = 0 
  204. 	 
  205. 	menu_text_slider_update_value(Menu_option_labels[1], Demo_derby_menu[1])	-- This will change if it ever scrolls 
  206. 	menu_text_slider_update_value(Menu_option_labels[2], Demo_derby_menu[2]) 
  207. 	menu_text_slider_update_value(Menu_option_labels[3], Demo_derby_menu[3]) 
  208. 	 
  209. 	demo_derby_update_options(1, 0) 
  210. 	demo_derby_update_options(2, 0) 
  211. 	demo_derby_update_options(3, 0) 
  212. 	Demo_derby_points_spent = 0 
  213. 	demo_derby_update_footer() 
  214. end 
  215.  
  216. function demo_derby_enter_derby(menu_label, menu_data) 
  217. 	 
  218. 	if Demo_derby_points_spent > Demo_derby_max_points and demo_derby_validate_points() == true then  
  219. 		dialog_box_message("MENU_TITLE_NOTICE", "DEMO_DERBY_NOT_ENOUGH_POINTS") 
  220. 	else  
  221. 		dialog_box_confirmation("DEMO_DERBY_ENTER_DERBY_TITLE", "DEMO_DERBY_ENTER_DERBY_PROMPT", "demo_derby_enter_derby_confirm") 
  222. 	end 
  223. end	 
  224.  
  225. function demo_derby_enter_derby_confirm(result, action)  
  226. 	if action ~= DIALOG_ACTION_CLOSE then 
  227. 		return 
  228. 	end 
  229. 	 
  230. 	if result == 0 then 
  231. 		menu_close(demo_derby_enter_derby_final) 
  232. 	end 
  233. end 
  234.  
  235. function demo_derby_enter_derby_final() 
  236. 	vint_document_unload(vint_document_find("demo_derby"))	 
  237. end 
  238.  
  239. ---------------------- 
  240. -- BONUS DERBY MENU -- 
  241. ---------------------- 
  242. function demo_derby_build_bonus_menu(menu_data) 
  243. 	Demo_derby_bonus_derby_menu.num_items = 0 
  244. 	vint_dataresponder_request("demo_derby_populate_bonus_menu", "demo_derby_populate_bonus_menu", 0, 0) -- 0 = Populate derby menu 
  245. end 
  246.  
  247. function demo_derby_select_bonus_derby(menu_label, menu_data) 
  248. 	demo_derby_sp_tournament_select(menu_data.id) 
  249. 	demo_derby_enter_derby_final() 
  250. end 
  251.  
  252. function demo_derby_populate_bonus_menu(label)  
  253. 	Demo_derby_bonus_derby_menu[Demo_derby_bonus_derby_menu.num_items] = { label = label,  
  254. 		type = MENU_ITEM_TYPE_SELECTABLE, on_select = demo_derby_select_bonus_derby, id = Demo_derby_bonus_derby_menu.num_items } 
  255. 	 
  256. 	Demo_derby_bonus_derby_menu.num_items = Demo_derby_bonus_derby_menu.num_items + 1 
  257. end 
  258.  
  259. function demo_derby_start_vehicle_menu() 
  260. 	menu_show(Demo_derby_bonus_vehicle_menu, MENU_TRANSITION_SWAP) 
  261. end 
  262.  
  263. function demo_derby_build_vehicle_menu(menu_data)  
  264. 	Demo_derby_bonus_vehicle_menu.num_items = 0  
  265. 	vint_dataresponder_request("demo_derby_populate_bonus_menu", "demo_derby_populate_vehicle_menu", 0, 1) -- 0 = Populate vehicle menu 
  266. end 
  267.  
  268. function demo_derby_nav_vehicle(menu_data) 
  269. --	demo_derby_select_vehicle(menu_data.highlighted_item)  
  270. 	if menu_data[menu_data.highlighted_item].id ~= -1 then 
  271. 		local points = demo_derby_update_options(0, menu_data.highlighted_item) 
  272. 	end 
  273. end 
  274.  
  275. function demo_derby_vehicle_select(menu_label, menu_data) 
  276. 	menu_close() 
  277.  
  278. 	--	These should probably be in menu_close and not menu_horz close. 
  279. 	menu_release_input() 
  280.  
  281. 	vint_document_unload(vint_document_find("demo_derby"))	 
  282. end 
  283.  
  284. function demo_derby_populate_vehicle_menu(label) 
  285. 	Demo_derby_bonus_vehicle_menu[Demo_derby_bonus_vehicle_menu.num_items] = { label = label,  
  286. 		type = MENU_ITEM_TYPE_SELECTABLE, on_select = demo_derby_vehicle_select } 
  287. 	Demo_derby_bonus_vehicle_menu.num_items = Demo_derby_bonus_vehicle_menu.num_items + 1 
  288. end 
  289.  
  290. function demo_derby_cancel_derby_confirm(result,action) 
  291. 	if action ~= DIALOG_ACTION_CLOSE then 
  292. 		return 
  293. 	end 
  294. 	 
  295. 	if result == 0 then 
  296. 		demo_derby_cancel() 
  297. 	end 
  298. end 
  299.  
  300. function demo_derby_cancel_derby() 
  301. 	if Completion_is_coop() == true then 
  302. 		return 
  303. 	end 
  304. 	dialog_box_confirmation("DEMO_DERBY_EXIT_DERBY_TITLE", "DEMO_DERBY_EXIT_DERBY_PROMPT", "demo_derby_cancel_derby_confirm")	 
  305.  
  306. end 
  307.  
  308.  
  309. function Demo_derby_coop_quit() 
  310. 	if Completion_is_coop() == true then 
  311. 		dialog_open_pause_display(true)	-- Call C-side for disconnect functionality 
  312. 	end 
  313. end 
  314.  
  315. --------------- 
  316. -- MENU DATA -- 
  317. --------------- 
  318. Demo_derby_btn_tips = { 
  319. 	a_button 	= 	{ label = "CONTROL_SELECT",		enabled = btn_tips_default_a, }, 
  320. 	b_button 	= 	{ label = "COMPLETION_EXIT",	enabled = btn_tips_default_b, }, 
  321. 	right_stick =  	{ label = "CONTROL_ROTATE", 	enabled = true }, 
  322. } 
  323.  
  324. Demo_derby_menu = { 
  325. 	header_label_str = "ACT_DEMO_DERBY_MAIN_MENU", 
  326. 	on_show = demo_derby_build_menu, 
  327. 	on_post_show = demo_derby_finalize_footer, 
  328. 	on_back = demo_derby_cancel_derby, 
  329. 	btn_tips = Demo_derby_btn_tips, 
  330. 	on_pause = Demo_derby_coop_quit, 
  331. 	num_items = 6, 
  332. 	 
  333. 	[0] = { label = "DEMO_DERBY_CAR_OPTION", 				type = MENU_ITEM_TYPE_TEXT_SLIDER, text_slider_values = Demo_derby_car_slider_values, on_value_update = demo_derby_update, id = 0 }, 
  334. 	[1] = { label = "DEMO_DERBY_OFFENSE_OPT", 			type = MENU_ITEM_TYPE_TEXT_SLIDER, text_slider_values = Demo_derby_offense_slider_values, on_value_update = demo_derby_update, id = 1 }, 
  335. 	[2] = { label = "DEMO_DERBY_DEFENSE_OPT", 			type = MENU_ITEM_TYPE_TEXT_SLIDER, text_slider_values = Demo_derby_defense_slider_values, on_value_update = demo_derby_update, id = 2 }, 
  336. 	[3] = { label = "DEMO_DERBY_SPEED_OPT", 				type = MENU_ITEM_TYPE_TEXT_SLIDER, text_slider_values = Demo_derby_speed_slider_values, on_value_update = demo_derby_update, id = 3 }, 
  337. 	[4] = { label = "DEMO_DERBY_RESET_UPGRADES_OPT",	type = MENU_ITEM_TYPE_SELECTABLE, on_select = demo_derby_reset_upgrades }, 
  338. 	[5] = { label = "DEMO_DERBY_ENTER_DERBY_OPT", 		type = MENU_ITEM_TYPE_SELECTABLE, on_select = demo_derby_enter_derby }, 
  339. 	 
  340. 	footer_height = 40 
  341. } 
  342.  
  343. Demo_derby_bonus_derby_menu = { 
  344. 	header_label_str = "DEMO_DERBY_BONUS_DERBY", 
  345. 	on_show = demo_derby_build_bonus_menu, 
  346. 	on_nav = demo_derby_nav_vehicle, 
  347. 	on_back = demo_derby_cancel_derby, 
  348. 	btn_tips = Demo_derby_btn_tips, 
  349. } 
  350.  
  351. Demo_derby_bonus_vehicle_menu = { 
  352. 	header_label_str = "DEMO_DERBY_SELECT_VEHICLE", 
  353. 	on_show = demo_derby_build_vehicle_menu, 
  354. 	on_nav = demo_derby_nav_vehicle, 
  355. 	on_back = demo_derby_cancel_derby, 
  356. 	btn_tips = Demo_derby_btn_tips, 
  357. } 
  358.  
  359. Demo_derby_horz_menu = { 
  360. 	num_items = 1, 
  361. 	current_selection = 0, 
  362. 	[0] = { label = "DEMO_DERBY_BONUS_DERBY", 		sub_menu = Demo_derby_menu}, 
  363. } 
  364.