Shuvit game master repo. http://shuvit.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

actionPlayer.py 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. import bge
  2. import actionsFSMlist
  3. dict = bge.logic.globalDict
  4. def actionPlayer(ac):
  5. scene = bge.logic.getCurrentScene()
  6. skater = dict['p1']
  7. deck = dict['p1d']
  8. a = getattr(actionsFSMlist.reg_walk, 'name')
  9. name = getattr(ac, 'name')
  10. dname = getattr(ac, 'dname')
  11. start = getattr(ac, 'start')
  12. end = getattr(ac, 'end')
  13. dstart = getattr(ac, 'dstart')
  14. dend = getattr(ac, 'dend')
  15. layer = getattr(ac, 'layer')
  16. mode = getattr(ac, 'mode')
  17. speed = getattr(ac, 'speed')
  18. blendin = getattr(ac, 'blendin')
  19. #--------------------------------
  20. skater.playAction(name, start,end, layer=layer, play_mode=mode, speed=speed, blendin=blendin)
  21. deck.playAction(dname, dstart,dend, layer=layer, play_mode=mode, speed=speed, blendin=blendin)
  22. def get_frame(ac):
  23. skater = dict['p1']
  24. layer = getattr(ac, 'layer')
  25. print('getting frame', skater.getActionFrame(layer))
  26. return skater.getActionFrame(layer)
  27. def set_frame(ac, frame):
  28. skater = dict['p1']
  29. deck = dict['p1d']
  30. layer = getattr(ac, 'layer')
  31. skater.setActionFrame(frame, layer)
  32. deck.setActionFrame(frame, layer)
  33. print('setting frame', frame)
  34. def check_exit(aState, rA, ac):
  35. exits = getattr(ac, 'exits')
  36. if rA in exits:
  37. return rA
  38. else:
  39. return aState
  40. def state_timer(own):
  41. if own['aState'] == own['l_aState']:
  42. own['stateTimer'] += 1
  43. else:
  44. own['stateTimer'] = 0
  45. def main(cont):
  46. own = cont.owner
  47. dict = bge.logic.globalDict
  48. #initial state
  49. if 'aState' not in own:
  50. own['aState'] = 'reg_idle'
  51. own['l_aState'] = None
  52. own['stateTimer'] = 0
  53. og_state = own['aState']
  54. aState = own['aState']
  55. rA = own['requestAction']
  56. #-----------------------
  57. if aState == 'reg_idle':
  58. actionPlayer(actionsFSMlist.reg_idle)
  59. aState = check_exit(aState, rA, actionsFSMlist.reg_idle)
  60. elif aState == 'reg_idle2':
  61. actionPlayer(actionsFSMlist.reg_idle2)
  62. aState = check_exit(aState, rA, actionsFSMlist.reg_idle2)
  63. elif aState == 'reg_idle3':
  64. actionPlayer(actionsFSMlist.reg_idle3)
  65. aState = check_exit(aState, rA, actionsFSMlist.reg_idle3)
  66. elif aState == 'reg_idle4':
  67. actionPlayer(actionsFSMlist.reg_idle4)
  68. aState = check_exit(aState, rA, actionsFSMlist.reg_idle4)
  69. elif aState == 'reg_idle5':
  70. actionPlayer(actionsFSMlist.reg_idle5)
  71. aState = check_exit(aState, rA, actionsFSMlist.reg_idle5)
  72. elif aState == 'reg_jump':
  73. actionPlayer(actionsFSMlist.reg_jump)
  74. aState = check_exit(aState, rA, actionsFSMlist.reg_jump)
  75. elif aState == 'reg_walk_air':
  76. actionPlayer(actionsFSMlist.reg_walk_air)
  77. if aState != rA:
  78. aState = 'reg_walk_air_out'
  79. elif aState == 'reg_walk_air_out':
  80. actionPlayer(actionsFSMlist.reg_walk_air_out)
  81. if own['stateTimer'] > 7:
  82. aState = check_exit(aState, rA, actionsFSMlist.reg_walk_air_out)
  83. elif aState == 'reg_sit':
  84. if own['stateTimer'] < 19:
  85. actionPlayer(actionsFSMlist.reg_sit_in)
  86. else:
  87. actionPlayer(actionsFSMlist.reg_sit)
  88. aState = check_exit(aState, rA, actionsFSMlist.reg_sit)
  89. #-----------------------
  90. elif aState == 'reg_walk':
  91. if own['l_aState'] == 'reg_walkFast':
  92. print('--------------------doing last frame')
  93. frame = get_frame(actionsFSMlist.reg_walkFast)
  94. actionPlayer(actionsFSMlist.reg_walk)
  95. set_frame(actionsFSMlist.reg_walk, frame)
  96. else:
  97. frame = actionPlayer(actionsFSMlist.reg_walk)
  98. aState = check_exit(aState, rA, actionsFSMlist.reg_walk)
  99. #-----------------------
  100. elif aState == 'reg_walkFast':
  101. aState = check_exit(aState, rA, actionsFSMlist.reg_walkFast)
  102. if own['l_aState'] == 'reg_walk':
  103. print('--------------------doing last framebbbb')
  104. frame = get_frame(actionsFSMlist.reg_walk)
  105. actionPlayer(actionsFSMlist.reg_walkFast)
  106. set_frame(actionsFSMlist.reg_walkFast, frame)
  107. else:
  108. actionPlayer(actionsFSMlist.reg_walkFast)
  109. #print(frame)
  110. elif aState == 'reg_onboard':
  111. actionPlayer(actionsFSMlist.reg_onboard)
  112. if own['stateTimer'] > 10:
  113. aState = check_exit(aState, rA, actionsFSMlist.reg_onboard)
  114. elif aState == 'reg_offboard':
  115. actionPlayer(actionsFSMlist.reg_offboard)
  116. if own['stateTimer'] > 20:
  117. aState = check_exit(aState, rA, actionsFSMlist.reg_offboard)
  118. elif aState == 'reg_roll':
  119. actionPlayer(actionsFSMlist.reg_roll)
  120. aState = check_exit(aState, rA, actionsFSMlist.reg_roll)
  121. elif aState == 'reg_turnLeft':
  122. actionPlayer(actionsFSMlist.reg_turnLeft)
  123. aState = check_exit(aState, rA, actionsFSMlist.reg_turnLeft)
  124. elif aState == 'reg_turnRight':
  125. actionPlayer(actionsFSMlist.reg_turnRight)
  126. aState = check_exit(aState, rA, actionsFSMlist.reg_turnRight)
  127. elif aState == 'reg_opos':
  128. actionPlayer(actionsFSMlist.reg_opos)
  129. aState = check_exit(aState, rA, actionsFSMlist.reg_opos)
  130. elif aState == 'reg_nopos':
  131. actionPlayer(actionsFSMlist.reg_nopos)
  132. aState = check_exit(aState, rA, actionsFSMlist.reg_nopos)
  133. elif aState == 'reg_pump':
  134. actionPlayer(actionsFSMlist.reg_pump)
  135. aState = check_exit(aState, rA, actionsFSMlist.reg_pump)
  136. elif aState == 'reg_push':
  137. actionPlayer(actionsFSMlist.reg_push)
  138. if own['stateTimer'] > 70:
  139. aState = 'reg_roll'
  140. elif aState == 'reg_push_goof':
  141. actionPlayer(actionsFSMlist.reg_push_goof)
  142. if own['stateTimer'] > 70:
  143. aState = 'reg_roll'
  144. elif aState == 'reg_powerslide':
  145. if own['stateTimer'] < 20:
  146. actionPlayer(actionsFSMlist.reg_powerslide_in)
  147. else:
  148. actionPlayer(actionsFSMlist.reg_powerslide)
  149. aState = check_exit(aState, rA, actionsFSMlist.reg_powerslide)
  150. elif aState == 'reg_fs_powerslide':
  151. if own['stateTimer'] < 20:
  152. actionPlayer(actionsFSMlist.reg_fs_powerslide_in)
  153. else:
  154. actionPlayer(actionsFSMlist.reg_fs_powerslide)
  155. aState = check_exit(aState, rA, actionsFSMlist.reg_fs_powerslide)
  156. elif aState == 'reg_manual':
  157. actionPlayer(actionsFSMlist.reg_manual)
  158. aState = check_exit(aState, rA, actionsFSMlist.reg_manual)
  159. elif aState == 'reg_nmanual':
  160. actionPlayer(actionsFSMlist.reg_nmanual)
  161. aState = check_exit(aState, rA, actionsFSMlist.reg_nmanual)
  162. #-----------------------
  163. own['aState'] = aState
  164. print(own['l_aState'], '----l_aState', own['aState'])
  165. own['l_aState'] = og_state
  166. state_timer(own)