/src/common/logic/main/menu/selection/animation/select/shy_select.hpp

https://code.google.com/p/smoothernity/ · C++ Header · 136 lines · 113 code · 23 blank · 0 comment · 3 complexity · c4d8a7b4dad7763dec353e19eb0d1015 MD5 · raw file

  1. namespace shy_guts
  2. {
  3. namespace logic_main_menu_selection_animation_select_transform_state
  4. {
  5. static so_called_platform_math_num_fract_type horizontal_scale ;
  6. static so_called_platform_math_num_fract_type vertical_scale ;
  7. }
  8. namespace logic_main_menu_update_state
  9. {
  10. static so_called_platform_math_num_whole_type select_started ;
  11. static so_called_platform_math_num_fract_type time ;
  12. }
  13. static void compute_horizontal_scale ( ) ;
  14. static void compute_vertical_scale ( ) ;
  15. static void compute_identity_scale ( ) ;
  16. static void reply_computed_transform ( ) ;
  17. }
  18. typedef so_called_platform_scheduler :: scheduled_context < _shy_common_logic_main_menu_selection_animation_select > _scheduled_context_type ;
  19. template < > _scheduled_context_type _scheduled_context_type :: _singleton = _scheduled_context_type ( ) ;
  20. void shy_guts :: compute_horizontal_scale ( )
  21. {
  22. so_called_platform_math_num_fract_type horizontal_scale_time_to_begin ;
  23. so_called_platform_math_num_fract_type horizontal_scale_time_from_begin_to_end ;
  24. so_called_platform_math_num_fract_type time_begin ;
  25. so_called_platform_math_num_fract_type time_end ;
  26. horizontal_scale_time_to_begin = so_called_common_logic_main_menu_selection_animation_consts :: select_horizontal_scale_time_to_begin ;
  27. horizontal_scale_time_from_begin_to_end = so_called_common_logic_main_menu_selection_animation_consts :: select_horizontal_scale_time_from_begin_to_end ;
  28. time_begin = horizontal_scale_time_to_begin ;
  29. so_called_platform_math :: add_fracts ( time_end , time_begin , horizontal_scale_time_from_begin_to_end ) ;
  30. so_called_common_engine_math_stateless :: hard_in_easy_out
  31. ( shy_guts :: logic_main_menu_selection_animation_select_transform_state :: horizontal_scale
  32. , shy_guts :: logic_main_menu_update_state :: time
  33. , so_called_common_logic_main_menu_selection_animation_consts :: select_horizontal_scale_value_begin
  34. , time_begin
  35. , so_called_common_logic_main_menu_selection_animation_consts :: select_horizontal_scale_value_end
  36. , time_end
  37. ) ;
  38. }
  39. void shy_guts :: compute_vertical_scale ( )
  40. {
  41. so_called_platform_math_num_fract_type vertical_scale_time_to_begin ;
  42. so_called_platform_math_num_fract_type vertical_scale_time_from_begin_to_end ;
  43. so_called_platform_math_num_fract_type time_begin ;
  44. so_called_platform_math_num_fract_type time_end ;
  45. vertical_scale_time_to_begin = so_called_common_logic_main_menu_selection_animation_consts :: select_vertical_scale_time_to_begin ;
  46. vertical_scale_time_from_begin_to_end = so_called_common_logic_main_menu_selection_animation_consts :: select_vertical_scale_time_from_begin_to_end ;
  47. time_begin = vertical_scale_time_to_begin ;
  48. so_called_platform_math :: add_fracts ( time_end , time_begin , vertical_scale_time_from_begin_to_end ) ;
  49. so_called_common_engine_math_stateless :: hard_in_easy_out
  50. ( shy_guts :: logic_main_menu_selection_animation_select_transform_state :: vertical_scale
  51. , shy_guts :: logic_main_menu_update_state :: time
  52. , so_called_common_logic_main_menu_selection_animation_consts :: select_vertical_scale_value_begin
  53. , time_begin
  54. , so_called_common_logic_main_menu_selection_animation_consts :: select_vertical_scale_value_end
  55. , time_end
  56. ) ;
  57. }
  58. void shy_guts :: compute_identity_scale ( )
  59. {
  60. shy_guts :: logic_main_menu_selection_animation_select_transform_state :: vertical_scale = so_called_platform_math_consts :: fract_1 ;
  61. shy_guts :: logic_main_menu_selection_animation_select_transform_state :: horizontal_scale = so_called_platform_math_consts :: fract_1 ;
  62. }
  63. void shy_guts :: reply_computed_transform ( )
  64. {
  65. so_called_common_logic_main_menu_selection_animation_select_transform_reply_message msg ;
  66. msg . scale_x = shy_guts :: logic_main_menu_selection_animation_select_transform_state :: horizontal_scale ;
  67. msg . scale_y = shy_guts :: logic_main_menu_selection_animation_select_transform_state :: vertical_scale ;
  68. so_called_common_logic_main_menu_selection_animation_select_transform_reply_sender :: send ( msg ) ;
  69. }
  70. void _shy_common_logic_main_menu_selection_animation_select :: receive ( so_called_common_init_message )
  71. {
  72. shy_guts :: logic_main_menu_update_state :: select_started = so_called_platform_math_consts :: whole_false ;
  73. shy_guts :: logic_main_menu_update_state :: time = so_called_platform_math_consts :: fract_0 ;
  74. }
  75. void _shy_common_logic_main_menu_selection_animation_select :: receive ( so_called_common_logic_main_menu_selection_animation_select_start_message )
  76. {
  77. shy_guts :: logic_main_menu_update_state :: select_started = so_called_platform_math_consts :: whole_true ;
  78. shy_guts :: logic_main_menu_update_state :: time = so_called_platform_math_consts :: fract_0 ;
  79. }
  80. void _shy_common_logic_main_menu_selection_animation_select :: receive ( so_called_common_logic_main_menu_selection_animation_select_transform_request_message )
  81. {
  82. if ( so_called_platform_conditions :: whole_is_true ( shy_guts :: logic_main_menu_update_state :: select_started ) )
  83. {
  84. shy_guts :: compute_horizontal_scale ( ) ;
  85. shy_guts :: compute_vertical_scale ( ) ;
  86. }
  87. else
  88. shy_guts :: compute_identity_scale ( ) ;
  89. shy_guts :: reply_computed_transform ( ) ;
  90. }
  91. void _shy_common_logic_main_menu_selection_animation_select :: receive ( so_called_common_logic_main_menu_update_message )
  92. {
  93. if ( so_called_platform_conditions :: whole_is_true ( shy_guts :: logic_main_menu_update_state :: select_started ) )
  94. {
  95. so_called_platform_math_num_fract_type time_step ;
  96. so_called_platform_math_num_fract_type time ;
  97. so_called_platform_math_num_fract_type total_animation_time ;
  98. time = shy_guts :: logic_main_menu_update_state :: time ;
  99. total_animation_time = so_called_common_logic_main_menu_selection_animation_consts :: select_total_animation_time ;
  100. so_called_platform_math :: make_num_fract ( time_step , 1 , so_called_platform_consts :: frames_per_second ) ;
  101. so_called_platform_math :: add_to_fract ( time , time_step ) ;
  102. if ( so_called_platform_conditions :: fract_greater_than_fract ( time , total_animation_time ) )
  103. {
  104. shy_guts :: logic_main_menu_update_state :: select_started = so_called_platform_math_consts :: whole_false ;
  105. so_called_common_logic_main_menu_selection_animation_select_finished_sender :: send ( so_called_common_logic_main_menu_selection_animation_select_finished_message ( ) ) ;
  106. }
  107. shy_guts :: logic_main_menu_update_state :: time = time ;
  108. }
  109. }
  110. void _shy_common_logic_main_menu_selection_animation_select :: register_in_scheduler ( )
  111. {
  112. _scheduled_context_type :: register_in_scheduler ( ) ;
  113. }