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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. import bge
  2. import actionsFSMlist
  3. dict = bge.logic.globalDict
  4. zero_blend = False
  5. def actionPlayer(ac):
  6. scene = bge.logic.getCurrentScene()
  7. skater = dict['p1']
  8. deck = dict['p1d']
  9. a = getattr(actionsFSMlist.reg_walk, 'name')
  10. name = getattr(ac, 'name')
  11. dname = getattr(ac, 'dname')
  12. start = getattr(ac, 'start')
  13. end = getattr(ac, 'end')
  14. dstart = getattr(ac, 'dstart')
  15. dend = getattr(ac, 'dend')
  16. layer = getattr(ac, 'layer')
  17. mode = getattr(ac, 'mode')
  18. speed = getattr(ac, 'speed')
  19. blendin = getattr(ac, 'blendin')
  20. #--------------------------------
  21. if zero_blend:
  22. blendin = 0
  23. print('zeroing blend')
  24. skater.playAction(name, start,end, layer=layer, play_mode=mode, speed=speed, blendin=blendin)
  25. deck.playAction(dname, dstart,dend, layer=layer, play_mode=mode, speed=speed, blendin=blendin)
  26. print('playing', name, get_frame(ac))
  27. def get_frame(ac):
  28. skater = dict['p1']
  29. layer = getattr(ac, 'layer')
  30. print('getting frame', skater.getActionFrame(layer))
  31. return skater.getActionFrame(layer)
  32. def set_frame(ac, frame):
  33. skater = dict['p1']
  34. deck = dict['p1d']
  35. layer = getattr(ac, 'layer')
  36. skater.setActionFrame(frame, layer)
  37. deck.setActionFrame(frame, layer)
  38. print('setting frame', frame)
  39. def check_exit(aState, rA, timer, ac):
  40. exits = getattr(ac, 'exits')
  41. force = getattr(ac, 'force_exit')
  42. fe = getattr(ac, 'fef')
  43. if rA in exits:
  44. return rA
  45. else:
  46. return aState
  47. if force != None and fe >= timer:
  48. print('doing exit timer')
  49. return force
  50. def state_timer(own):
  51. if own['aState'] == own['l_aState']:
  52. own['stateTimer'] += 1
  53. else:
  54. own['stateTimer'] = 0
  55. def check_land(rA, aState, own):
  56. #check if manualling
  57. if rA in actionsFSMlist.reg_manuallist or rA in actionsFSMlist.reg_grindlist:
  58. aState = rA
  59. own['stateTimer'] = 0
  60. own['aState'] = rA
  61. #otherwise, force land, offboard or fliptrick
  62. elif 'land' in rA or 'onboard' in rA or 'offboard' in rA or rA in actionsFSMlist.reg_fliplist:
  63. print('landing________________________', rA)
  64. aState = rA
  65. own['stateTimer'] = 0
  66. own['aState'] = rA
  67. return aState
  68. def main(cont):
  69. own = cont.owner
  70. dict = bge.logic.globalDict
  71. #initial state
  72. if 'aState' not in own:
  73. own['aState'] = 'reg_idle'
  74. own['l_aState'] = None
  75. own['stateTimer'] = 0
  76. aState = own['aState']
  77. rA = own['requestAction']
  78. timer = own['stateTimer']
  79. newState = own['aState']
  80. aState = check_land(rA, aState, own)
  81. newState = aState
  82. og_state = own['aState']
  83. print(aState, 'cur aState')
  84. if own['l_aState'] in actionsFSMlist.reg_fliplist:
  85. zero_blend = True
  86. #-----------------------
  87. check_state = 'reg_idle'
  88. if aState == check_state:
  89. action = getattr(actionsFSMlist, check_state)
  90. actionPlayer(action)
  91. newState = check_exit(aState, rA, timer, action)
  92. check_state = 'reg_idle2'
  93. if aState == check_state:
  94. action = getattr(actionsFSMlist, check_state)
  95. actionPlayer(action)
  96. newState = check_exit(aState, rA, timer, action)
  97. check_state = 'reg_idle3'
  98. if aState == check_state:
  99. action = getattr(actionsFSMlist, check_state)
  100. actionPlayer(action)
  101. newState = check_exit(aState, rA, timer, action)
  102. check_state = 'reg_idle4'
  103. if aState == check_state:
  104. action = getattr(actionsFSMlist, check_state)
  105. actionPlayer(action)
  106. newState = check_exit(aState, rA, timer, action)
  107. check_state = 'reg_idle5'
  108. if aState == check_state:
  109. action = getattr(actionsFSMlist, check_state)
  110. actionPlayer(action)
  111. newState = check_exit(aState, rA, timer, action)
  112. check_state = 'reg_jump'
  113. if aState == check_state:
  114. action = getattr(actionsFSMlist, check_state)
  115. actionPlayer(action)
  116. if own['stateTimer'] > getattr(action, 'fef'):
  117. newState = check_exit(aState, rA, timer, action)
  118. check_state = 'reg_walk_air'
  119. if aState == check_state:
  120. action = getattr(actionsFSMlist, check_state)
  121. actionPlayer(action)
  122. if aState != rA:
  123. newState = getattr(action, 'exits')[0]
  124. check_state = 'reg_walk_air_out'
  125. if aState == check_state:
  126. action = getattr(actionsFSMlist, check_state)
  127. actionPlayer(action)
  128. print(own['stateTimer'], getattr(action, 'fef'))
  129. if own['stateTimer'] > getattr(action, 'fef'):
  130. newState = getattr(action, 'force_exit')
  131. check_state = 'reg_sit'
  132. if aState == check_state:
  133. action = getattr(actionsFSMlist, check_state)
  134. #if own['stateTimer'] < 19:
  135. if own['stateTimer'] < getattr(action, 'intro_frames'):
  136. actionPlayer(getattr(actionsFSMlist, 'intro'))
  137. else:
  138. actionPlayer(action)
  139. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_sit)
  140. #-----------------------
  141. check_state = 'reg_walk'
  142. if aState == check_state:
  143. action = getattr(actionsFSMlist, check_state)
  144. if own['l_aState'] == 'reg_walkFast':
  145. frame = get_frame(actionsFSMlist.reg_walkFast)
  146. actionPlayer(action)
  147. set_frame(actionsFSMlist.reg_walk, frame)
  148. else:
  149. frame = actionPlayer(action)
  150. newState = check_exit(aState, rA, timer, action)
  151. #-----------------------
  152. check_state = 'reg_walkFast'
  153. if aState == check_state:
  154. action = getattr(actionsFSMlist, check_state)
  155. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_walkFast)
  156. if own['l_aState'] == 'reg_walk':
  157. frame = get_frame(actionsFSMlist.reg_walk)
  158. actionPlayer(action)
  159. set_frame(actionsFSMlist.reg_walkFast, frame)
  160. else:
  161. actionPlayer(action)
  162. #print(frame)
  163. check_state = 'reg_onboard'
  164. if aState == check_state:
  165. action = getattr(actionsFSMlist, check_state)
  166. actionPlayer(action)
  167. print('checking onbaord state')
  168. #if own['stateTimer'] > 10:
  169. #newState = check_exit(aState, rA, timer, actionsFSMlist.reg_onboard)
  170. if own['stateTimer'] > getattr(action, 'fef'):
  171. newState = getattr(action, 'force_exit')
  172. check_state = 'reg_offboard'
  173. if aState == check_state:
  174. action = getattr(actionsFSMlist, check_state)
  175. actionPlayer(action)
  176. if own['stateTimer'] > 20:
  177. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_offboard)
  178. check_state = 'reg_roll'
  179. if aState == check_state:
  180. action = getattr(actionsFSMlist, check_state)
  181. actionPlayer(action)
  182. newState = check_exit(aState, rA, timer, action)
  183. check_state = 'reg_turnLeft'
  184. if aState == check_state:
  185. action = getattr(actionsFSMlist, check_state)
  186. actionPlayer(action)
  187. newState = check_exit(aState, rA, timer, action)
  188. check_state = 'reg_turnRight'
  189. if aState == check_state:
  190. action = getattr(actionsFSMlist, check_state)
  191. actionPlayer(action)
  192. newState = check_exit(aState, rA, timer, action)
  193. check_state = 'reg_opos'
  194. if aState == check_state:
  195. action = getattr(actionsFSMlist, check_state)
  196. actionPlayer(action)
  197. newState = check_exit(aState, rA, timer, action)
  198. check_state = 'reg_nopos'
  199. if aState == check_state:
  200. action = getattr(actionsFSMlist, check_state)
  201. actionPlayer(action)
  202. newState = check_exit(aState, rA, timer, action)
  203. check_state = 'reg_pump'
  204. if aState == check_state:
  205. action = getattr(actionsFSMlist, check_state)
  206. actionPlayer(action)
  207. newState = check_exit(aState, rA, timer, action)
  208. check_state = 'reg_pump_left'
  209. if aState == check_state:
  210. action = getattr(actionsFSMlist, check_state)
  211. actionPlayer(action)
  212. newState = check_exit(aState, rA, timer, action)
  213. check_state = 'reg_pump_right'
  214. if aState == check_state:
  215. action = getattr(actionsFSMlist, check_state)
  216. actionPlayer(action)
  217. newState = check_exit(aState, rA, timer, action)
  218. check_state = 'reg_push'
  219. if aState == check_state:
  220. action = getattr(actionsFSMlist, check_state)
  221. actionPlayer(action)
  222. if own['stateTimer'] > 70:
  223. newState = 'reg_roll'
  224. check_state = 'reg_push_goof'
  225. if aState == check_state:
  226. action = getattr(actionsFSMlist, check_state)
  227. actionPlayer(action)
  228. if own['stateTimer'] > 70:
  229. newState = 'reg_roll'
  230. check_state = 'reg_powerslide'
  231. if aState == check_state:
  232. action = getattr(actionsFSMlist, check_state)
  233. # if own['stateTimer'] < 20:
  234. # actionPlayer(actionsFSMlist.reg_powerslide_in)
  235. if own['stateTimer'] < getattr(action, 'intro_frames'):
  236. intro = getattr(action, 'intro')
  237. actionPlayer(getattr(actionsFSMlist, intro))
  238. else:
  239. actionPlayer(action)
  240. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_powerslide)
  241. check_state = 'reg_fs_powerslide'
  242. if aState == check_state:
  243. action = getattr(actionsFSMlist, check_state)
  244. # if own['stateTimer'] < 20:
  245. # actionPlayer(actionsFSMlist.reg_fs_powerslide_in)
  246. if own['stateTimer'] < getattr(action, 'intro_frames'):
  247. intro = getattr(action, 'intro')
  248. actionPlayer(getattr(actionsFSMlist, intro))
  249. else:
  250. actionPlayer(action)
  251. newState = check_exit(aState, rA, timer, actionsFSMlist.reg_fs_powerslide)
  252. check_state = 'reg_manual'
  253. if aState == check_state:
  254. action = getattr(actionsFSMlist, check_state)
  255. actionPlayer(action)
  256. newState = check_exit(aState, rA, timer, action)
  257. check_state = 'reg_nmanual'
  258. if aState == check_state:
  259. action = getattr(actionsFSMlist, check_state)
  260. actionPlayer(action)
  261. newState = check_exit(aState, rA, timer, action)
  262. check_state = 'reg_land'
  263. if aState == check_state:
  264. action = getattr(actionsFSMlist, check_state)
  265. actionPlayer(action)
  266. if own['stateTimer'] > getattr(action, 'fef'):
  267. newState = getattr(action, 'force_exit')
  268. check_state = 'reg_landL'
  269. if aState == check_state:
  270. action = getattr(actionsFSMlist, check_state)
  271. actionPlayer(action)
  272. if own['stateTimer'] > getattr(action, 'fef'):
  273. newState = getattr(action, 'force_exit')
  274. check_state = 'reg_landLb'
  275. if aState == check_state:
  276. action = getattr(actionsFSMlist, check_state)
  277. actionPlayer(action)
  278. if own['stateTimer'] > getattr(action, 'fef'):
  279. newState = getattr(action, 'force_exit')
  280. check_state = 'reg_landR'
  281. if aState == check_state:
  282. action = getattr(actionsFSMlist, check_state)
  283. actionPlayer(action)
  284. if own['stateTimer'] > getattr(action, 'fef'):
  285. newState = getattr(action, 'force_exit')
  286. check_state = 'reg_landRb'
  287. if aState == check_state:
  288. action = getattr(actionsFSMlist, check_state)
  289. actionPlayer(action)
  290. if own['stateTimer'] > getattr(action, 'fef'):
  291. newState = getattr(action, 'force_exit')
  292. check_state = 'reg_air'
  293. if aState == check_state:
  294. action = getattr(actionsFSMlist, check_state)
  295. actionPlayer(action)
  296. newState = check_exit(aState, rA, timer, action)
  297. check_state = 'reg_air_nose'
  298. if aState == check_state:
  299. action = getattr(actionsFSMlist, check_state)
  300. actionPlayer(action)
  301. newState = check_exit(aState, rA, timer, action)
  302. check_state = 'reg_air_tail'
  303. if aState == check_state:
  304. action = getattr(actionsFSMlist, check_state)
  305. actionPlayer(action)
  306. newState = check_exit(aState, rA, timer, action)
  307. check_state = 'reg_ollie'
  308. if aState == check_state:
  309. action = getattr(actionsFSMlist, check_state)
  310. actionPlayer(action)
  311. if own['stateTimer'] > getattr(action, 'fef'):
  312. newState = getattr(action, 'force_exit')
  313. check_state = 'reg_kickflip'
  314. if aState == check_state:
  315. action = getattr(actionsFSMlist, check_state)
  316. actionPlayer(action)
  317. if own['stateTimer'] > getattr(action, 'fef'):
  318. newState = getattr(action, 'force_exit')
  319. check_state = 'reg_heelflip'
  320. if aState == check_state:
  321. action = getattr(actionsFSMlist, check_state)
  322. actionPlayer(action)
  323. if own['stateTimer'] > getattr(action, 'fef'):
  324. newState = getattr(action, 'force_exit')
  325. check_state = 'reg_shuvit'
  326. if aState == check_state:
  327. action = getattr(actionsFSMlist, check_state)
  328. actionPlayer(action)
  329. if own['stateTimer'] > getattr(action, 'fef'):
  330. newState = getattr(action, 'force_exit')
  331. check_state = 'reg_shuvit360'
  332. if aState == check_state:
  333. action = getattr(actionsFSMlist, check_state)
  334. actionPlayer(action)
  335. if own['stateTimer'] > getattr(action, 'fef'):
  336. newState = getattr(action, 'force_exit')
  337. check_state = 'reg_fsshuvit'
  338. if aState == check_state:
  339. action = getattr(actionsFSMlist, check_state)
  340. actionPlayer(action)
  341. if own['stateTimer'] > getattr(action, 'fef'):
  342. newState = getattr(action, 'force_exit')
  343. check_state = 'reg_fsshuvit360'
  344. if aState == check_state:
  345. action = getattr(actionsFSMlist, check_state)
  346. actionPlayer(action)
  347. if own['stateTimer'] > getattr(action, 'fef'):
  348. newState = getattr(action, 'force_exit')
  349. check_state = 'reg_5050'
  350. if aState == check_state:
  351. action = getattr(actionsFSMlist, check_state)
  352. actionPlayer(action)
  353. newState = check_exit(aState, rA, timer, action)
  354. check_state = 'reg_bsboard'
  355. if aState == check_state:
  356. action = getattr(actionsFSMlist, check_state)
  357. actionPlayer(action)
  358. newState = check_exit(aState, rA, timer, action)
  359. check_state = 'reg_fsboard'
  360. if aState == check_state:
  361. action = getattr(actionsFSMlist, check_state)
  362. actionPlayer(action)
  363. newState = check_exit(aState, rA, timer, action)
  364. check_state = 'reg_tailg'
  365. if aState == check_state:
  366. action = getattr(actionsFSMlist, check_state)
  367. actionPlayer(action)
  368. newState = check_exit(aState, rA, timer, action)
  369. check_state = 'reg_tailgr'
  370. if aState == check_state:
  371. action = getattr(actionsFSMlist, check_state)
  372. actionPlayer(action)
  373. newState = check_exit(aState, rA, timer, action)
  374. check_state = 'reg_tailgl'
  375. if aState == check_state:
  376. action = getattr(actionsFSMlist, check_state)
  377. actionPlayer(action)
  378. newState = check_exit(aState, rA, timer, action)
  379. check_state = 'reg_noseg'
  380. if aState == check_state:
  381. action = getattr(actionsFSMlist, check_state)
  382. actionPlayer(action)
  383. newState = check_exit(aState, rA, timer, action)
  384. check_state = 'reg_nosegr'
  385. if aState == check_state:
  386. action = getattr(actionsFSMlist, check_state)
  387. actionPlayer(action)
  388. newState = check_exit(aState, rA, timer, action)
  389. check_state = 'reg_nosegl'
  390. if aState == check_state:
  391. action = getattr(actionsFSMlist, check_state)
  392. actionPlayer(action)
  393. newState = check_exit(aState, rA, timer, action)
  394. check_state = 'reg_tailslide'
  395. if aState == check_state:
  396. action = getattr(actionsFSMlist, check_state)
  397. actionPlayer(action)
  398. newState = check_exit(aState, rA, timer, action)
  399. check_state = 'reg_noseslide'
  400. if aState == check_state:
  401. action = getattr(actionsFSMlist, check_state)
  402. actionPlayer(action)
  403. newState = check_exit(aState, rA, timer, action)
  404. check_state = 'frontside_grab'
  405. if aState == check_state:
  406. action = getattr(actionsFSMlist, check_state)
  407. if own['stateTimer'] < getattr(action, 'intro_frames'):
  408. intro = getattr(action, 'intro')
  409. actionPlayer(getattr(actionsFSMlist, intro))
  410. else:
  411. actionPlayer(action)
  412. newState = check_exit(aState, rA, timer, action)
  413. check_state = 'backside_grab'
  414. if aState == check_state:
  415. action = getattr(actionsFSMlist, check_state)
  416. if own['stateTimer'] < getattr(action, 'intro_frames'):
  417. intro = getattr(action, 'intro')
  418. actionPlayer(getattr(actionsFSMlist, intro))
  419. else:
  420. actionPlayer(action)
  421. newState = check_exit(aState, rA, timer, action)
  422. check_state = 'frontside_nose_grab'
  423. if aState == check_state:
  424. action = getattr(actionsFSMlist, check_state)
  425. if own['stateTimer'] < getattr(action, 'intro_frames'):
  426. intro = getattr(action, 'intro')
  427. actionPlayer(getattr(actionsFSMlist, intro))
  428. else:
  429. actionPlayer(action)
  430. newState = check_exit(aState, rA, timer, action)
  431. check_state = 'backside_nose_grab'
  432. if aState == check_state:
  433. action = getattr(actionsFSMlist, check_state)
  434. if own['stateTimer'] < getattr(action, 'intro_frames'):
  435. intro = getattr(action, 'intro')
  436. actionPlayer(getattr(actionsFSMlist, intro))
  437. else:
  438. actionPlayer(action)
  439. newState = check_exit(aState, rA, timer, action)
  440. check_state = 'frontside_tail_grab'
  441. if aState == check_state:
  442. action = getattr(actionsFSMlist, check_state)
  443. if own['stateTimer'] < getattr(action, 'intro_frames'):
  444. intro = getattr(action, 'intro')
  445. actionPlayer(getattr(actionsFSMlist, intro))
  446. else:
  447. actionPlayer(action)
  448. newState = check_exit(aState, rA, timer, action)
  449. check_state = 'backside_tail_grab'
  450. if aState == check_state:
  451. action = getattr(actionsFSMlist, check_state)
  452. if own['stateTimer'] < getattr(action, 'intro_frames'):
  453. intro = getattr(action, 'intro')
  454. actionPlayer(getattr(actionsFSMlist, intro))
  455. else:
  456. actionPlayer(action)
  457. newState = check_exit(aState, rA, timer, action)
  458. check_state = 'reg_ollie_north'
  459. if aState == check_state:
  460. action = getattr(actionsFSMlist, check_state)
  461. if own['stateTimer'] < getattr(action, 'intro_frames'):
  462. intro = getattr(action, 'intro')
  463. actionPlayer(getattr(actionsFSMlist, intro))
  464. else:
  465. actionPlayer(action)
  466. newState = check_exit(aState, rA, timer, action)
  467. check_state = 'reg_ollie_south'
  468. if aState == check_state:
  469. action = getattr(actionsFSMlist, check_state)
  470. if own['stateTimer'] < getattr(action, 'intro_frames'):
  471. intro = getattr(action, 'intro')
  472. actionPlayer(getattr(actionsFSMlist, intro))
  473. else:
  474. actionPlayer(action)
  475. newState = check_exit(aState, rA, timer, action)
  476. #-----------------------
  477. #own['aState'] = aState
  478. if newState != '':
  479. own['aState'] = newState
  480. #print(own['l_aState'], '----l_aState', own['aState'])
  481. own['l_aState'] = og_state
  482. #own['l_aState'] = newState
  483. print(own['l_aState'], '----l_aState', own['aState'], 'rA', rA)
  484. state_timer(own)