./tutorial.lua

  1.  
  2. local TUTORIAL_HINT_PADDING = 5 
  3. local TUTORIAL_HINT_SPACING = -1 
  4. local TUTORIAL_HEADER_PADDING = 14 
  5. Tutorial = {} 
  6. Tutorial_content = {} 
  7. Outline_anims = {} 
  8. Max_outlines = 5 
  9.  
  10. Tutorial_first_time = true 
  11. Tutorial_show_scanimate = true 
  12.  
  13. Tutorial_frame_values = -1 
  14.  
  15. Tutorial_current_window = 1		--id to control the current content frame... 
  16.  
  17. local Input_tracker 
  18.  
  19. function tutorial_init() 
  20. 	--Find Objects 
  21. 	Tutorial.window_h 		= vint_object_find("tutorial")	--Main window 
  22. 	Tutorial.bg_body_h 		= vint_object_find("bg_body")	--Body Element... 
  23. 	Tutorial.bg_top 			= vint_object_find("bg_top")			--background for title bar 
  24. 	Tutorial.content_clip_h = vint_object_find("content_clip")			--background for title bar 
  25. 	 
  26. 	local hint_data = { 
  27. 		{CTRL_MENU_BUTTON_BACK, "TUT_DISMISS"}, 
  28. 	} 
  29. 	 
  30. 	--Content Elements 
  31. 	local h = vint_object_find("content_1") 
  32. 	Tutorial_content[1] = { 
  33. 		h = h, 
  34. 		hint_bar = Vdo_hint_bar:new("tutorial_hint", h),	 
  35. 		header_text_h = vint_object_find("tutorial_header_text", h), 
  36. 		body_text_h = vint_object_find("tutorial_body_text", h), 
  37. 		illustration_h = vint_object_find("illustration", h), 
  38. 	} 
  39.  
  40. 	Tutorial_content[1].hint_bar:set_hints(hint_data) 
  41. 	Tutorial_content[1].hint_bar:set_visible(false) 
  42. 	Tutorial_content[1].hint_bar:enable_text_shadow(true) 
  43.  
  44. 	local h = vint_object_find("content_2") 
  45. 	Tutorial_content[2] = { 
  46. 		h = h, 
  47. 		hint_bar = Vdo_hint_bar:new("tutorial_hint", h), 
  48. 		header_text_h = vint_object_find("tutorial_header_text", h), 
  49. 		body_text_h = vint_object_find("tutorial_body_text", h), 
  50. 		illustration_h = vint_object_find("illustration", h), 
  51. 	} 
  52. 	 
  53. 	Tutorial_content[2].hint_bar:set_hints(hint_data) 
  54. 	Tutorial_content[2].hint_bar:set_visible(false) 
  55. 	Tutorial_content[2].hint_bar:enable_text_shadow(true) 
  56.  
  57. 	--Initialize Frame size 
  58. 	Tutorial.start_x, Tutorial.start_y = vint_get_property(Tutorial.window_h, "anchor") 
  59. 	Tutorial.scaler = vint_get_property(Tutorial.window_h, "scale") 
  60. 	Tutorial.scaler = 1 * Tutorial.scaler 
  61. 	Tutorial.body_text_x, Tutorial.body_text_y = vint_get_property(Tutorial_content[1].body_text_h, "anchor") 
  62.  
  63. 	--Fade out tween callback... 
  64. 	local anim_h = vint_object_find("fade_out_anim") 
  65. 	local twn_h = vint_object_find("tutorial_alpha_twn", anim_h) 
  66. 	vint_set_property(twn_h, "end_event", "tutorial_wipe_old_values") 
  67. 	 
  68. 	Input_tracker = Vdo_input_tracker:new() 
  69. 	Input_tracker:add_input("map", "tutorial_advance", 500) 
  70. 	Input_tracker:subscribe(false) 
  71. 	 
  72. 	--Hide frame 
  73. 	vint_set_property(Tutorial.window_h, "alpha", 0) 
  74. end 
  75.  
  76. --Standard Cleanup function... 
  77. function tutorial_cleanup() 
  78. 	Input_tracker:subscribe(false) 
  79. end 
  80.  
  81. -- Opens the tutorisl 
  82. function tutorial_open() 
  83. 	--Populate and show the tutorial window 
  84. 	vint_dataresponder_request("tutorial_responder", "tutorial_update", 0, 1) 
  85. end 
  86.  
  87. --	Advances the tutorial... This is called by c when we want to show the next tutorial in sequence... 
  88. function tutorial_advance() -- called from c when it is time to request more data 
  89. 	-- Find out if there are any more tutorials 
  90. 	vint_dataresponder_request("tutorial_responder", "tutorial_update", 0) 
  91. end 
  92.  
  93. --	Closes the tutorial... This is called by c when the game wants the tutorial to die. 
  94. function tutorial_close(force) 
  95. 	Input_tracker:subscribe(false) 
  96. 	 
  97. 	--Stop Fadein 
  98. 	local fade_in_anim_h = vint_object_find("fade_in_anim")		 
  99. 	vint_set_property(fade_in_anim_h, "is_paused", true) 
  100.  
  101. 	Tutorial_first_time = true 
  102. 	Tutorial_show_scanimate = true 
  103. 	 
  104. 	if force == true then 
  105. 		tutorial_set_hud_help_closing(false) 
  106. 	 
  107. 		-- Stop fade out in case its playing 
  108. 		local fade_out_anim_h = vint_object_find("fade_out_anim") 
  109. 		vint_set_property(fade_out_anim_h, "is_paused", true) 
  110. 		 
  111. 		vint_set_property(Tutorial.window_h, "alpha", 0)	 
  112. 	else  
  113. 		-- Reset the fade out's start value 
  114. 		local alpha = vint_get_property(Tutorial.window_h, "alpha") 
  115. 		 
  116. 		-- If the window's already at 0, then we don't need to fade out 
  117. 		if alpha > 0 then 
  118. 			tutorial_set_hud_help_closing(true) 
  119. 			local fade_out_anim_h = vint_object_find("fade_out_anim") 
  120. 			local twn_h = vint_object_find("tutorial_alpha_twn", fade_out_anim_h) 
  121. 			vint_set_property(twn_h, "start_value", alpha) 
  122. 		 
  123. 			--Fade out window 
  124. 			lua_play_anim(fade_out_anim_h) 
  125. 		else 
  126. 			tutorial_set_hud_help_closing(false) 
  127. 		end 
  128. 	end 
  129. end 
  130.  
  131. --Update callback function for the tutorial responder... 
  132. -- 
  133. -- @param 	tutorial_ready 	true, if there is another tutorial and false, if we close.; 
  134. -- @param	header_txt			Title of tutorial 
  135. -- @param	body_txt				Body of the tutorial 
  136. -- @param	tutorial_type		Enum of the tutorial 
  137. -- @param	image_name			Name of the image that should load with the tutorial...		 
  138. function tutorial_update(tutorial_ready, header_txt, body_txt, tutorial_type, image_name, use_back_button) 
  139. 	--	We don't have any tutorials left to display so exit. 
  140. 	if tutorial_ready == false then 
  141. 		tutorial_close() 
  142. 		return 
  143. 	end 
  144. 		 
  145. 	--Get next window content... 
  146. 	local tutorial_content_id = tutorial_advance_window() 
  147. 	local content = Tutorial_content[tutorial_content_id] 
  148. 	 
  149. 	--Update the window Text Elements... 
  150. 	vint_set_property(content.body_text_h, "text_tag", body_txt) 
  151.  
  152. 	--Some tutorials should not have headers 
  153. 	if header_txt == "" or header_txt == nil then 
  154. 		vint_set_property(Tutorial.bg_top, "visible", false) 
  155. 		vint_set_property(content.header_text_h, "visible", false) 
  156. 		Tutorial_show_scanimate = false 
  157. 		 
  158. 		tutorial_enable_text_shadow(true, content.body_text_h) 
  159. 	else 
  160. 		vint_set_property(content.header_text_h, "text_tag", header_txt) 
  161. 		vint_set_property(Tutorial.bg_top, "visible", true) 
  162. 		vint_set_property(content.header_text_h, "visible", true) 
  163. 		 
  164. 		tutorial_enable_text_shadow(false, content.body_text_h) 
  165. 		 
  166. 		--Reset scale of header text... 
  167. 		vint_set_property(content.header_text_h, "scale", 1, 1) 
  168. 		 
  169. 		--Test sizes and scale if needed. 
  170. 		local bg_top_w, bg_top_h = element_get_actual_size(Tutorial.bg_top) 
  171. 		local text_width, text_height = element_get_actual_size(content.header_text_h) 
  172. 		local max_width = bg_top_w - TUTORIAL_HEADER_PADDING 
  173. 		local scale_x, scale_y = 1, 1	--Scale defaults 
  174. 	 
  175. 		if text_width > max_width then 
  176. 			--need to scale down header text to fit... 
  177. 			scale_x =  max_width / text_width --only scale the x direction(text is squished but otherwise too small!) 
  178. 		end 
  179. 		 
  180. 		--Set scale... ( 
  181. 		vint_set_property(content.header_text_h, "scale", scale_x, scale_y) 
  182. 	end 
  183. 	 
  184. 	--Set image if it exists... 
  185. 	local image_width = 0 
  186. 	local image_height = 0 
  187. 	if image_name == "" or image_name == nil then 
  188. 		--No Image... 
  189. 		vint_set_property(content.illustration_h, "visible", false) 
  190. 		 
  191. 		--Reset text position to default... 
  192. 		vint_set_property(content.body_text_h, "anchor", Tutorial.body_text_x, Tutorial.body_text_y) 
  193. 	else 
  194. 		--Show image and set name... 
  195. 		vint_set_property(content.illustration_h, "visible", true) 
  196. 		vint_set_property(content.illustration_h, "image", image_name) 
  197. 		 
  198. 		--Reposition text below the image... 
  199. 		image_width, image_height = element_get_actual_size(content.illustration_h) 
  200. 		vint_set_property(content.body_text_h, "anchor", Tutorial.body_text_x, Tutorial.body_text_y + image_height) 
  201. 	end 
  202. 	 
  203. 	--Resize tutorial frame and prepare animations... 
  204. 	--Prepare some numbers to resize the window below... 
  205. 	local clip_offset_y = 25 --the distance from the groups origin to the body text box... 
  206.  
  207. 	local width, height = element_get_actual_size(content.body_text_h) 
  208. 	height = (height) + (image_height) + 12 --	Height of tutorial window... 
  209.  
  210. 	-- Show back button 
  211. 	if use_back_button == true then  
  212. 		content.hint_bar:set_visible(true) 
  213. 		Input_tracker:subscribe(true) 
  214. 		local hint_width, hint_height = content.hint_bar:get_size() 
  215. 		height = height + hint_height + TUTORIAL_HINT_PADDING 
  216. 		content.hint_bar:set_anchor(24,height + (hint_height / 2) + TUTORIAL_HINT_SPACING) 
  217. 	else 
  218. 		content.hint_bar:set_visible(false) 
  219. 	end 
  220. 	 
  221. 	--Target box scale... 
  222. 	local body_bg_width, body_bg_height = element_get_actual_size(Tutorial.bg_body_h) 
  223. 	local scale_x, scale_y = element_get_scale_from_size(Tutorial.bg_body_h, body_bg_width, height) 
  224. 	 
  225. 	--Target Clip Size 
  226. 	local clip_width = body_bg_width  
  227. 	local clip_height = 	height + clip_offset_y 
  228. 	 
  229. 	--Target positions 
  230. 	local x = Tutorial.start_x 
  231. 	local y = Tutorial.start_y - (height * Tutorial.scaler)	--The scaler is used for translation... 
  232.  
  233. 	--Resize Clip Tween 
  234.  
  235. 	--Do Alpha Transitions 
  236. 	local content_1_alpha_twn_h 		= vint_object_find("content_1_alpha_twn") 
  237. 	local content_2_alpha_twn_h		= vint_object_find("content_2_alpha_twn") 
  238. 	local clip_size_twn_h				= vint_object_find("clip_size_twn") 
  239. 	local body_scale_twn_h				= vint_object_find("body_scale_twn") 
  240. 	local window_anchor_twn_h			= vint_object_find("window_anchor_twn") 
  241. 	 
  242. 	--Reset values if the tutorial box is new... 
  243. 	local previous_content_alpha = 1		--Value for fading the previous content out... gets set to zero if there was no previous content...  
  244. 	local next_frame_values = { 
  245. 		clip_size_x = clip_width, 
  246. 		clip_size_y = clip_height, 
  247. 		scale_x = scale_x, 
  248. 		scale_y = scale_y, 
  249. 		start_x = Tutorial.start_x, 
  250. 		start_y = y, 
  251. 	} 
  252. 	 
  253. 	if Tutorial_frame_values == -1 then 
  254. 		--Start values same as next values... 
  255. 		Tutorial_frame_values = table_clone(next_frame_values) 
  256. 		 
  257. 		--Have clip mask fade in from left... 
  258. 		Tutorial_frame_values.clip_size_x = 10		 
  259. 		 
  260. 		--Do not allow previous content in view... 
  261. 		previous_content_alpha = 0 						 
  262. 	end 
  263. 	 
  264. 	if tutorial_content_id == 1 then 
  265. 		--Set alpha fades 
  266. 		vint_set_property(content_1_alpha_twn_h, "start_value", 0) 
  267. 		vint_set_property(content_1_alpha_twn_h, "end_value", 1) 
  268. 		vint_set_property(content_2_alpha_twn_h, "start_value", previous_content_alpha) 
  269. 		vint_set_property(content_2_alpha_twn_h, "end_value", 0) 
  270. 	elseif tutorial_content_id == 2 then 
  271. 		--Set alpha fades 
  272. 		vint_set_property(content_1_alpha_twn_h, "start_value", previous_content_alpha) 
  273. 		vint_set_property(content_1_alpha_twn_h, "end_value", 0) 
  274. 		vint_set_property(content_2_alpha_twn_h, "start_value", 0) 
  275. 		vint_set_property(content_2_alpha_twn_h, "end_value", 1)	 
  276. 	end	 
  277. 	 
  278. 	--Animate Clip 
  279. 	vint_set_property(clip_size_twn_h, "start_value", Tutorial_frame_values.clip_size_x, Tutorial_frame_values.clip_size_y) 
  280. 	vint_set_property(clip_size_twn_h, "end_value",  next_frame_values.clip_size_x, next_frame_values.clip_size_y) 
  281. 	 
  282. 	--Animate Body Scale 
  283. 	vint_set_property(body_scale_twn_h, "start_value", Tutorial_frame_values.scale_x, Tutorial_frame_values.scale_y) 
  284. 	vint_set_property(body_scale_twn_h, "end_value", next_frame_values.scale_x, next_frame_values.scale_y) 
  285. 	 
  286. 	--Animate window position 
  287. 	vint_set_property(window_anchor_twn_h, "start_value", Tutorial_frame_values.start_x, Tutorial_frame_values.start_y) 
  288. 	vint_set_property(window_anchor_twn_h, "end_value", Tutorial_frame_values.start_x, next_frame_values.start_y) 
  289. 	 
  290. 	Tutorial_frame_values = next_frame_values 
  291. 	 
  292. 	--play animation 
  293. 	local box_morph_anim_h = vint_object_find("box_morph_anim") 
  294. 	lua_play_anim(box_morph_anim_h)	 
  295. 	 
  296. 	--Stop Fadeout 
  297. 	local fade_out_anim_h = vint_object_find("fade_out_anim") 
  298. 	vint_set_property(fade_out_anim_h, "is_paused", true) 
  299.  
  300. 	--if the tutorial is not already visible then do a seperate/different animation 
  301. 	--and if it's really a tutorial and not help text (DAD 3/21/11) 
  302. 	if Tutorial_first_time and Tutorial_show_scanimate then 
  303. 		local drop_in_anim_h = vint_object_find("drop_in") 
  304. 		--start the frame x far to the right so it animates in centered 
  305. 		--Tutorial_frame_values.start_x = 76 
  306. 		--set the outlines up, they are only used for the first tutorial 
  307. 		tutorial_set_outlines(height, next_frame_values.start_y) 
  308.  
  309. 		--loop through, offset and play the scanimations 
  310. 		for i=1,Max_outlines do 
  311. 			lua_play_anim( Outline_anims[i].anim.handle, (i-1) * 0.06 ) 
  312. 		end 
  313. 		 
  314. 		--play audio for scanimate type 
  315. 		game_UI_audio_play("UI_HUD_Tutorial") 
  316. 		 
  317. 		lua_play_anim(drop_in_anim_h) 
  318. 		--until tutorial_wipe_old_values() or tutorial_close(true) happen we have an open tutorial  
  319. 		Tutorial_first_time = false 
  320. 	elseif Tutorial_first_time then 
  321. 		--play audio for help type 
  322. 		game_UI_audio_play("UI_HUD_Help") 
  323. 	end 
  324. 	 
  325. 	-- tutorial may already be up (or it's a hud help message) attempt to fade in 
  326. 	local	fade_in_anim_h = vint_object_find("fade_in_anim") 
  327. 	local twn_h = vint_object_find("tutorial_alpha_twn") 
  328. 	local alpha = vint_get_property(Tutorial.window_h, "alpha") 
  329. 	vint_set_property(twn_h, "start_value", alpha) 
  330.  
  331. 	lua_play_anim(fade_in_anim_h) 
  332. end 
  333.  
  334. --Setup all the outlines for the scanimation spectacular... 
  335. -- 
  336. -- @param 	height 				height of the black bg box calculated in tutorial_update() 
  337. -- @param	window_end_y		new tutorial window y value calculated in tutorial_update() 
  338. function tutorial_set_outlines( height, window_end_y ) 
  339.  
  340. 	--clear out the clones if we have any 
  341. 	if #Outline_anims > 1 then 
  342. 		for i = 1,Max_outlines do 
  343. 			Outline_anims[i].anim:object_destroy() 
  344. 			Outline_anims[i].outlines_clone:object_destroy()	 
  345. 		end 
  346. 	end 
  347. 	Outline_anims = {} 
  348.  
  349. 	local outlines = Vdo_base_object:new( "outlines" ) 
  350. 	outlines:set_visible(false) 
  351.  
  352. 	local bg_top_w, bg_top_h = element_get_actual_size( Tutorial.bg_top ) 
  353. 	local total_h = height + bg_top_h 
  354. 	--how big the outlines start out at 
  355. 	local scale_amount = 4.0  
  356. 	--base size of the square image the outlines are made of 
  357. 	local base_square_root_scale = 16  
  358. 	--pixel thickness of the lines, if you change this you must change magic_x_offset and magic_y_offset 
  359. 	local line_thickness = 3  
  360. 	--creates a scale value out of a pixel size 
  361. 	local line_scale = line_thickness / base_square_root_scale  
  362. 	--center y value for the outline group 
  363. 	local outline_y_center = window_end_y - line_thickness + (total_h * 0.5) 
  364. 	--center x value for the outline group 
  365. 	local outline_x_center = Tutorial.start_x + (bg_top_w * 0.5) 
  366. 	--how many pixels we want the lines to stop at before/after they reach the tutorial box 
  367. 	local end_position_offset = 10 
  368. 	 
  369. 	--these numbers adjust the line widths so that their tips do not overlap 
  370. 	local magic_x_offset = 13 
  371. 	local magic_y_offset = 7 
  372. 	 
  373. 	--set up the anchor tweens 
  374. 	local outline_start_y = total_h * scale_amount  
  375. 	local outline_end_y = (total_h + end_position_offset) * 0.5 
  376. 	local outline_start_x = bg_top_w * scale_amount  
  377. 	local outline_end_x = (bg_top_w + end_position_offset) * 0.5  
  378. 	 
  379. 	vint_set_property( outlines, "anchor", outline_x_center, outline_y_center ) 
  380. 		 
  381. 	local tween = Vdo_tween_object:new( "top_line_anchor") 
  382. 	vint_set_property(tween.handle, "start_value", 0, -1 * outline_start_y) 
  383. 	vint_set_property(tween.handle, "end_value", 0, -1 * outline_end_y) 
  384. 	 
  385. 	tween = Vdo_tween_object:new( "bottom_line_anchor"  ) 
  386. 	vint_set_property(tween.handle, "start_value", 0, outline_start_y) 
  387. 	vint_set_property(tween.handle, "end_value", 0, outline_end_y) 
  388. 	 
  389. 	tween = Vdo_tween_object:new( "left_line_anchor"  ) 
  390. 	vint_set_property(tween.handle, "start_value", -1 * outline_start_x, 0 ) 
  391. 	vint_set_property(tween.handle, "end_value", -1 * outline_end_x, 0 ) 
  392. 	 
  393. 	tween = Vdo_tween_object:new( "right_line_anchor"  ) 
  394. 	vint_set_property(tween.handle, "start_value", outline_start_x, 0 ) 
  395. 	vint_set_property(tween.handle, "end_value", outline_end_x, 0 ) 
  396. 	 
  397. 	--set up the scale tweens 
  398. 	local start_scale_x = line_scale 
  399. 	local start_scale_y = ((total_h) / base_square_root_scale) * ( scale_amount * 2 ) 
  400. 	local end_scale_x = start_scale_x 
  401. 	local end_scale_y = ((total_h + magic_y_offset) / base_square_root_scale) 
  402. 	 
  403. 	tween = Vdo_tween_object:new( "left_line_scale"  ) 
  404. 	vint_set_property(tween.handle, "start_value", start_scale_x, start_scale_y) 
  405. 	vint_set_property(tween.handle, "end_value", end_scale_x, end_scale_y) 
  406. 	 
  407. 	tween = Vdo_tween_object:new( "right_line_scale" ) 
  408. 	vint_set_property(tween.handle, "start_value", start_scale_x, start_scale_y) 
  409. 	vint_set_property(tween.handle, "end_value", end_scale_x, end_scale_y) 
  410. 	 
  411. 	start_scale_x = ((bg_top_w) / base_square_root_scale) * ( scale_amount * 2 ) 
  412. 	start_scale_y = line_scale 
  413. 	end_scale_x = ((bg_top_w + magic_x_offset) / base_square_root_scale) 
  414. 	end_scale_y = start_scale_y 
  415. 	 
  416. 	tween = Vdo_tween_object:new( "top_line_scale" ) 
  417. 	vint_set_property(tween.handle, "start_value", start_scale_x, start_scale_y) 
  418. 	vint_set_property(tween.handle, "end_value", end_scale_x, end_scale_y) 
  419. 	 
  420. 	tween = Vdo_tween_object:new( "bottom_line_scale"  ) 
  421. 	vint_set_property(tween.handle, "start_value", start_scale_x, start_scale_y) 
  422. 	vint_set_property(tween.handle, "end_value", end_scale_x, end_scale_y) 
  423. 		 
  424.  
  425. 	 
  426. 	-- Clone outline animation and group. Then Retarget and store handles for later... 
  427. 	local outline_anim = Vdo_anim_object:new("scanimation") 
  428. 	for index = 1, Max_outlines do 
  429. 		local outlines_clone = Vdo_base_object:clone(outlines.handle) 
  430. 		outlines_clone:set_visible(true) 
  431. 		outlines_clone:set_alpha(0) 
  432. 		local anim = Vdo_anim_object:clone(outline_anim.handle) 
  433. 		anim:set_target_handle(outlines_clone.handle) 
  434. 		anim:stop() 
  435. 		Outline_anims[index] = { 
  436. 			anim = anim, 
  437. 			outlines_clone = outlines_clone, 
  438. 		}  
  439. 		vint_set_property( outlines_clone.handle, "anchor", outline_x_center, outline_y_center ) 
  440. 	end 
  441. 	 
  442. end 
  443.  
  444. -- Callback function for wiping any stagnant window position and size values. 
  445. -- This is used only when the window fully fades out so it is tied as a callback 
  446. -- to the window fadout animation. 
  447. function tutorial_wipe_old_values() 
  448. 	Tutorial_frame_values = -1 
  449. 	-- DAD - 2/22/11 - For the hud help region that uses the tutorial box, need to notify it the fade is done 
  450. 	tutorial_set_hud_help_closing(false) 
  451. 	--reset the flag for checking whether the popup is up or not 
  452. 	Tutorial_first_time = true 
  453. 	Tutorial_show_scanimate = true 
  454. end 
  455.  
  456. -- Advances window id saftely. 
  457. -- 
  458. --@return id of next window... 
  459. function tutorial_advance_window() 
  460. 	Tutorial_current_window = Tutorial_current_window + 1 
  461. 	if Tutorial_current_window == 3 then 
  462. 		Tutorial_current_window = 1 
  463. 	end 
  464. 	return Tutorial_current_window 
  465. end 
  466.  
  467. ----------------------------------------------------------------------------- 
  468. -- Enables super text shadow on  
  469. ----------------------------------------------------------------------------- 
  470. function tutorial_enable_text_shadow(enabled, text_object_h) 
  471. 	if enabled then 
  472. 		vint_set_property(text_object_h, "line_frame_w", "ui_fnt_body_s_w") 
  473. 		vint_set_property(text_object_h, "line_frame_m", "ui_fnt_body_s_m") 
  474. 		vint_set_property(text_object_h, "line_frame_e", "ui_fnt_body_s_e") 
  475. 		vint_set_property(text_object_h, "line_frame_enable", true) 
  476. 		vint_set_property(Tutorial.bg_body_h, "visible", false) 
  477. 		vint_set_property(Tutorial.content_clip_h, "clip_enabled", false) 
  478. 	else 
  479. 		vint_set_property(text_object_h, "line_frame_enable", false) 
  480. 		vint_set_property(Tutorial.bg_body_h, "visible", true) 
  481. 		vint_set_property(Tutorial.content_clip_h, "clip_enabled", true) 
  482. 	end 
  483. end