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 7.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  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. #print('playing', name)
  23. def get_frame(ac):
  24. skater = dict['p1']
  25. layer = getattr(ac, 'layer')
  26. print('getting frame', skater.getActionFrame(layer))
  27. return skater.getActionFrame(layer)
  28. def set_frame(ac, frame):
  29. skater = dict['p1']
  30. deck = dict['p1d']
  31. layer = getattr(ac, 'layer')
  32. skater.setActionFrame(frame, layer)
  33. deck.setActionFrame(frame, layer)
  34. print('setting frame', frame)
  35. def check_exit(aState, rA, timer, ac):
  36. exits = getattr(ac, 'exits')
  37. force = getattr(ac, 'force_exit')
  38. fe = getattr(ac, 'fef')
  39. if rA in exits:
  40. return rA
  41. else:
  42. return aState
  43. if force != None and fe >= timer:
  44. return force
  45. def state_timer(own):
  46. if own['aState'] == own['l_aState']:
  47. own['stateTimer'] += 1
  48. else:
  49. own['stateTimer'] = 0
  50. def main(cont):
  51. own = cont.owner
  52. dict = bge.logic.globalDict
  53. #initial state
  54. if 'aState' not in own:
  55. own['aState'] = 'reg_idle'
  56. own['l_aState'] = None
  57. own['stateTimer'] = 0
  58. og_state = own['aState']
  59. aState = own['aState']
  60. rA = own['requestAction']
  61. timer = own['stateTimer']
  62. newState = own['aState']
  63. #-----------------------
  64. check_state = 'reg_idle'
  65. if aState == check_state:
  66. cl = getattr(actionsFSMlist, check_state)
  67. actionPlayer(cl)
  68. newState = check_exit(aState, rA, timer, cl)
  69. check_state = 'reg_idle2'
  70. if aState == check_state:
  71. cl = getattr(actionsFSMlist, check_state)
  72. actionPlayer(cl)
  73. newState = check_exit(aState, rA, timer, cl)
  74. check_state = 'reg_idle3'
  75. if aState == check_state:
  76. cl = getattr(actionsFSMlist, check_state)
  77. actionPlayer(cl)
  78. newState = check_exit(aState, rA, timer, cl)
  79. check_state = 'reg_idle4'
  80. if aState == check_state:
  81. cl = getattr(actionsFSMlist, check_state)
  82. actionPlayer(cl)
  83. newState = check_exit(aState, rA, timer, cl)
  84. check_state = 'reg_idle5'
  85. if aState == check_state:
  86. cl = getattr(actionsFSMlist, check_state)
  87. actionPlayer(cl)
  88. newState = check_exit(aState, rA, timer, cl)
  89. check_state = 'reg_jump'
  90. if aState == check_state:
  91. cl = getattr(actionsFSMlist, check_state)
  92. actionPlayer(cl)
  93. if own['stateTimer'] > getattr(cl, 'fef'):
  94. nl = getattr(cl, 'force_exit')
  95. na = getattr(actionsFSMlist, nl)
  96. newState = check_exit(aState, rA, timer, cl)
  97. check_state = 'reg_walk_air'
  98. if aState == check_state:
  99. cl = getattr(actionsFSMlist, check_state)
  100. actionPlayer(cl)
  101. if aState != rA:
  102. newState = 'reg_walk_air_out'
  103. check_state = 'reg_walk_air_out'
  104. if aState == check_state:
  105. cl = getattr(actionsFSMlist, check_state)
  106. actionPlayer(cl)
  107. print(own['stateTimer'], getattr(cl, 'fef'))
  108. if own['stateTimer'] > getattr(cl, 'fef'):
  109. #newState = check_exit(aState, rA, timer, actionsFSMlist.reg_idle)
  110. newState = getattr(cl, 'force_exit')
  111. check_state = 'reg_sit'
  112. if aState == check_state:
  113. cl = getattr(actionsFSMlist, check_state)
  114. if own['stateTimer'] < 19:
  115. actionPlayer(actionsFSMlist.reg_sit_in)
  116. else:
  117. actionPlayer(cl)
  118. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_sit)
  119. #-----------------------
  120. check_state = 'reg_walk'
  121. if aState == check_state:
  122. cl = getattr(actionsFSMlist, check_state)
  123. if own['l_aState'] == 'reg_walkFast':
  124. print('--------------------doing last frame')
  125. frame = get_frame(actionsFSMlist.reg_walkFast)
  126. actionPlayer(cl)
  127. set_frame(actionsFSMlist.reg_walk, frame)
  128. else:
  129. frame = actionPlayer(cl)
  130. newState = check_exit(aState, rA, timer, cl)
  131. #-----------------------
  132. check_state = 'reg_walkFast'
  133. if aState == check_state:
  134. cl = getattr(actionsFSMlist, check_state)
  135. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_walkFast)
  136. if own['l_aState'] == 'reg_walk':
  137. print('--------------------doing last framebbbb')
  138. frame = get_frame(actionsFSMlist.reg_walk)
  139. actionPlayer(cl)
  140. set_frame(actionsFSMlist.reg_walkFast, frame)
  141. else:
  142. actionPlayer(cl)
  143. #print(frame)
  144. check_state = 'reg_onboard'
  145. if aState == check_state:
  146. cl = getattr(actionsFSMlist, check_state)
  147. actionPlayer(cl)
  148. if own['stateTimer'] > 10:
  149. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_onboard)
  150. check_state = 'reg_offboard'
  151. if aState == check_state:
  152. cl = getattr(actionsFSMlist, check_state)
  153. actionPlayer(cl)
  154. if own['stateTimer'] > 20:
  155. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_offboard)
  156. check_state = 'reg_roll'
  157. if aState == check_state:
  158. cl = getattr(actionsFSMlist, check_state)
  159. actionPlayer(cl)
  160. newState = check_exit(aState, rA, timer, cl)
  161. check_state = 'reg_turnLeft'
  162. if aState == check_state:
  163. cl = getattr(actionsFSMlist, check_state)
  164. actionPlayer(cl)
  165. newState = check_exit(aState, rA, timer, cl)
  166. check_state = 'reg_turnRight'
  167. if aState == check_state:
  168. cl = getattr(actionsFSMlist, check_state)
  169. actionPlayer(cl)
  170. newState = check_exit(aState, rA, timer, cl)
  171. check_state = 'reg_opos'
  172. if aState == check_state:
  173. cl = getattr(actionsFSMlist, check_state)
  174. actionPlayer(cl)
  175. newState = check_exit(aState, rA, timer, cl)
  176. check_state = 'reg_nopos'
  177. if aState == check_state:
  178. cl = getattr(actionsFSMlist, check_state)
  179. actionPlayer(cl)
  180. newState = check_exit(aState, rA, timer, cl)
  181. check_state = 'reg_pump'
  182. if aState == check_state:
  183. cl = getattr(actionsFSMlist, check_state)
  184. actionPlayer(cl)
  185. newState = check_exit(aState, rA, timer, cl)
  186. check_state = 'reg_push'
  187. if aState == check_state:
  188. cl = getattr(actionsFSMlist, check_state)
  189. actionPlayer(cl)
  190. if own['stateTimer'] > 70:
  191. newState = 'reg_roll'
  192. check_state = 'reg_push_goof'
  193. if aState == check_state:
  194. cl = getattr(actionsFSMlist, check_state)
  195. actionPlayer(cl)
  196. if own['stateTimer'] > 70:
  197. newState = 'reg_roll'
  198. check_state = 'reg_powerslide'
  199. if aState == check_state:
  200. cl = getattr(actionsFSMlist, check_state)
  201. if own['stateTimer'] < 20:
  202. actionPlayer(actionsFSMlist.reg_powerslide_in)
  203. else:
  204. actionPlayer(cl)
  205. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_powerslide)
  206. check_state = 'reg_fs_powerslide'
  207. if aState == check_state:
  208. cl = getattr(actionsFSMlist, check_state)
  209. if own['stateTimer'] < 20:
  210. actionPlayer(actionsFSMlist.reg_fs_powerslide_in)
  211. else:
  212. actionPlayer(cl)
  213. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_fs_powerslide)
  214. check_state = 'reg_manual'
  215. if aState == check_state:
  216. cl = getattr(actionsFSMlist, check_state)
  217. actionPlayer(cl)
  218. newState = check_exit(aState, rA, timer, cl)
  219. check_state = 'reg_nmanual'
  220. if aState == check_state:
  221. cl = getattr(actionsFSMlist, check_state)
  222. actionPlayer(cl)
  223. newState = check_exit(aState, rA, timer, cl)
  224. #-----------------------
  225. #own['aState'] = aState
  226. if newState != '':
  227. own['aState'] = newState
  228. #print(own['l_aState'], '----l_aState', own['aState'])
  229. own['l_aState'] = og_state
  230. print(own['l_aState'], '----l_aState', own['aState'], 'rA', rA)
  231. state_timer(own)