//--------------------------------------------------------------------- // Mech Gesture State Table for all Mecha. // //---------------------------------------------------------------------------// // Copyright (C) Microsoft Corporation. All rights reserved. // //===========================================================================// #ifndef MSTATES_H #define MSTATES_H //****************************************************************************************** // Gesture States which the mech can be in. These are used to determine where the // mech is looping and how to get to any other state. // 0 -- Park // 1 -- Stand // 2 -- Walk (from normal walk speed to 1/2 walk speed) // 3 -- Run // 4 -- Reverse (1/2 walk speed) // 5 -- Limp // 6 -- Jump // 7 -- Fallen Forward // 8 -- Fallen Back // // Actual Gestures are: // 0 -- Park // 1 -- ParkToStand // 2 -- Stand // 3 -- StandToWalk // 4 -- Walk // 5 -- StandToPark // 6 -- WalkToRun // 7 -- Run // 8 -- RunToWalk // 9 -- Reverse // 10 -- StandToReverse // 11 -- LimpLeft // 12 -- LimpRight // 13 -- Idle // 14 -- FallBackward // 15 -- FallForward // 16 -- HitFront // 17 -- HitBack // 18 -- HitLeft // 19 -- HitRight // 20 -- Jump // 21 -- Rollover from FallBack to FallForward // 22 -- Get up from FallForward // 23 -- Fallen Forward (Single Frame, mech on ground) // 24 -- Fallen Backward (Single Frame, mech on ground) //--------------------------------------------------------------- // This array is pretty damned huge. It shows how the mech can // move from any one state to any other state. Since there are // 9 states which a mech can be in and 9 others it can get to, // this table is 9*9*MAX_TRANSITION_GESTURES in size. #define MAX_TRANSITION_GESTURES 10 char hotSpotFinderArray[28] = { // 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 0,0,0,1,2,3,4,5,6,2, 3, 7, 8, 9,10,11,12,13,14,15,16,17,18,11,10, 0,19,19 }; char mechSpeedStateArray[28] = { 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0 }; char transitionArray[1000] = { //-------------------------------------------------------------------------------- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //0,0 From Park to Park (NULL) 1, 2,-1,-1,-1,-1,-1,-1,-1,-1, //0,1 From Park to Stand 1, 2, 4,-1,-1,-1,-1,-1,-1,-1, //0,2 From Park to Walk 1, 2, 4, 7,-1,-1,-1,-1,-1,-1, //0,3 From Park to Run 1, 2, 9,-1,-1,-1,-1,-1,-1,-1, //0,4 From Park to Reverse 1, 2,11,-1,-1,-1,-1,-1,-1,-1, //0,5 From Park to LimpLeft 1, 2,20, 2,-1,-1,-1,-1,-1,-1, //0,6 From Park to Jump 15,23,-1,-1,-1,-1,-1,-1,-1,-1, //0,7 From Park to Fall Forward 14,24,-1,-1,-1,-1,-1,-1,-1,-1, //0,8 From Park to Fall Backward 1, 2,12,-1,-1,-1,-1,-1,-1,-1, //0,9 From Park to LimpRight //-------------------------------------------------------------------------------- 5, 0,-1,-1,-1,-1,-1,-1,-1,-1, //1,0 From Stand to Park -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //1,1 From Stand to Stand (NULL) 4,-1,-1,-1,-1,-1,-1,-1,-1,-1, //1,2 From Stand to Walk 7,-1,-1,-1,-1,-1,-1,-1,-1,-1, //1,3 From Stand to Run 9,-1,-1,-1,-1,-1,-1,-1,-1,-1, //1,4 From Stand to Reverse 11,-1,-1,-1,-1,-1,-1,-1,-1,-1, //1,5 From Stand to LimpLeft 20, 2,-1,-1,-1,-1,-1,-1,-1,-1, //1,6 From Stand to Jump 15,23,-1,-1,-1,-1,-1,-1,-1,-1, //1,7 From Stand to Fall Forward 14,24,-1,-1,-1,-1,-1,-1,-1,-1, //1,8 From Stand to Fall Backward 12,-1,-1,-1,-1,-1,-1,-1,-1,-1, //1,5 From Stand to LimpRight //-------------------------------------------------------------------------------- 2, 5, 0,-1,-1,-1,-1,-1,-1,-1, //2,0 From Walk to Park 2,-1,-1,-1,-1,-1,-1,-1,-1,-1, //2,1 From Walk to Stand -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //2,2 From Walk to Walk (NULL) 7,-1,-1,-1,-1,-1,-1,-1,-1,-1, //2,3 From Walk to Run 9,-1,-1,-1,-1,-1,-1,-1,-1,-1, //2,4 From Walk to Reverse 11,-1,-1,-1,-1,-1,-1,-1,-1,-1, //2,5 From Walk to LimpLeft 20, 2,-1,-1,-1,-1,-1,-1,-1,-1, //2,6 From Walk to Jump 15,23,-1,-1,-1,-1,-1,-1,-1,-1, //2,7 From Walk to Fall Forward 14,24,-1,-1,-1,-1,-1,-1,-1,-1, //2,8 From Walk to Fall Backward 12,-1,-1,-1,-1,-1,-1,-1,-1,-1, //2,5 From Walk to LimpRight //-------------------------------------------------------------------------------- 2, 5, 0,-1,-1,-1,-1,-1,-1,-1, //3,0 From Run to Park 2,-1,-1,-1,-1,-1,-1,-1,-1,-1, //3,1 From Run to Stand 4,-1,-1,-1,-1,-1,-1,-1,-1,-1, //3,2 From Run to Walk -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //3,3 From Run to Run (NULL) 9,-1,-1,-1,-1,-1,-1,-1,-1,-1, //3,4 From Run to Reverse 11,-1,-1,-1,-1,-1,-1,-1,-1,-1, //3,5 From Run to LimpLeft 20, 2,-1,-1,-1,-1,-1,-1,-1,-1, //3,6 From Run to Jump 15,23,-1,-1,-1,-1,-1,-1,-1,-1, //3,7 From Run to Fall Forward 14,24,-1,-1,-1,-1,-1,-1,-1,-1, //3,8 From Run to Fall Backward 12,-1,-1,-1,-1,-1,-1,-1,-1,-1, //3,5 From Run to LimpRight //-------------------------------------------------------------------------------- 2, 5, 0,-1,-1,-1,-1,-1,-1,-1, //4,0 From Reverse to Park 2,-1,-1,-1,-1,-1,-1,-1,-1,-1, //4,1 From Reverse to Stand 4,-1,-1,-1,-1,-1,-1,-1,-1,-1, //4,2 From Reverse to Walk 7,-1,-1,-1,-1,-1,-1,-1,-1,-1, //4,3 From Reverse to Run -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //4,4 From Reverse to Reverse (NULL) 11,-1,-1,-1,-1,-1,-1,-1,-1,-1, //4,5 From Reverse to LimpLeft 20, 2,-1,-1,-1,-1,-1,-1,-1,-1, //4,6 From Reverse to Jump 15,23,-1,-1,-1,-1,-1,-1,-1,-1, //4,7 From Reverse to Fall Forward 14,24,-1,-1,-1,-1,-1,-1,-1,-1, //4,8 From Reverse to Fall backward 12,-1,-1,-1,-1,-1,-1,-1,-1,-1, //4,5 From Reverse to LimpRight //-------------------------------------------------------------------------------- 2, 5, 0,-1,-1,-1,-1,-1,-1,-1, //5,0 From Limp to Park 2,-1,-1,-1,-1,-1,-1,-1,-1,-1, //5,1 From Limp to Stand 4,-1,-1,-1,-1,-1,-1,-1,-1,-1, //5,2 From Limp to Walk 7,-1,-1,-1,-1,-1,-1,-1,-1,-1, //5,3 From Limp to Run 9,-1,-1,-1,-1,-1,-1,-1,-1,-1, //5,4 From Limp to Reverse -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //5,5 From Limp to LimpLeft (NULL) 20, 2,-1,-1,-1,-1,-1,-1,-1,-1, //5,6 From Limp to Jump 15,23,-1,-1,-1,-1,-1,-1,-1,-1, //5,7 From Limp to Fall Forward 14,24,-1,-1,-1,-1,-1,-1,-1,-1, //5,8 From Limp to Fall Backward 12,-1,-1,-1,-1,-1,-1,-1,-1,-1, //5,5 From Limp to LimpRight //-------------------------------------------------------------------------------- 5, 0,-1,-1,-1,-1,-1,-1,-1,-1, //6,0 From Jump to Park -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,1 From Jump to Stand (NULL) 4,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,2 From Jump to Walk 7,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,3 From Jump to Run 9,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,4 From Jump to Reverse 11,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,5 From Jump to LimpLeft -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,6 From Jump to Jump (NULL) -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,7 From Jump to Fall Forward -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,8 From Jump to Fall Backward 12,-1,-1,-1,-1,-1,-1,-1,-1,-1, //6,5 From Jump to LimpRight //-------------------------------------------------------------------------------- 22, 2, 5, 0,-1,-1,-1,-1,-1,-1, //7,0 From Fall Forward to Park 22, 2,-1,-1,-1,-1,-1,-1,-1,-1, //7,1 From Fall Forward to Stand 22, 2, 4,-1,-1,-1,-1,-1,-1,-1, //7,2 From Fall Forward to Walk 22, 2, 7,-1,-1,-1,-1,-1,-1,-1, //7,3 From Fall Forward to Run 22, 2, 9,-1,-1,-1,-1,-1,-1,-1, //7,4 From Fall Forward to Reverse 22, 2,11,-1,-1,-1,-1,-1,-1,-1, //7,5 From Fall Forward to LimpLeft 22, 2,20, 2,-1,-1,-1,-1,-1,-1, //7,6 From Fall Forward to Jump -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //7,7 From Fall Forward to Fall Forward (NULL) -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //7,8 From Fall Forward to Fall Backward (NULL) 22, 2,12,-1,-1,-1,-1,-1,-1,-1, //7,5 From Fall Forward to LimpRight //-------------------------------------------------------------------------------- 21, 2, 5, 0,-1,-1,-1,-1,-1,-1, //8,0 From Fall Backward to Park 21, 2,-1,-1,-1,-1,-1,-1,-1,-1, //8,1 From Fall Backward to Stand 21, 2, 4,-1,-1,-1,-1,-1,-1,-1, //8,2 From Fall Backward to Walk 21, 2, 7,-1,-1,-1,-1,-1,-1,-1, //8,3 From Fall Backward to Run 21, 2, 9,-1,-1,-1,-1,-1,-1,-1, //8,4 From Fall Backward to Reverse 21, 2,11,-1,-1,-1,-1,-1,-1,-1, //8,5 From Fall Backward to LimpLeft 21, 2,20, 2,-1,-1,-1,-1,-1,-1, //8,6 From Fall Backward to Jump -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //8,7 From Fall Backward to Fall Forward (NULL) -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //8,8 From Fall Backward to Fall Backward (NULL) 21, 2,12,-1,-1,-1,-1,-1,-1,-1, //8,5 From Fall Backward to LimpRight //-------------------------------------------------------------------------------- 2, 5, 0,-1,-1,-1,-1,-1,-1,-1, //9,0 From LimpRight to Park 2,-1,-1,-1,-1,-1,-1,-1,-1,-1, //9,1 From LimpRight to Stand 4,-1,-1,-1,-1,-1,-1,-1,-1,-1, //9,2 From LimpRight to Walk 7,-1,-1,-1,-1,-1,-1,-1,-1,-1, //9,3 From LimpRight to Run 9,-1,-1,-1,-1,-1,-1,-1,-1,-1, //9,4 From LimpRight to Reverse 11,-1,-1,-1,-1,-1,-1,-1,-1,-1, //9,5 From LimpRight to LimpLeft 20, 2,-1,-1,-1,-1,-1,-1,-1,-1, //9,6 From LimpRight to Jump 15,23,-1,-1,-1,-1,-1,-1,-1,-1, //9,7 From LimpRight to Fall Forward 14,24,-1,-1,-1,-1,-1,-1,-1,-1, //9,8 From LimpRight to Fall Backward -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 //9,5 From LimpRight to LimpRight //-------------------------------------------------------------------------------- }; #define GESTURE_OFFSET_SIZE 100 //----------------------------------------------------------------------------- #endif