183 lines
4.4 KiB
C++
183 lines
4.4 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#ifndef WORLD_ACTORS_ANIMATION_H
|
|
#define WORLD_ACTORS_ANIMATION_H
|
|
|
|
namespace Ultima {
|
|
namespace Ultima8 {
|
|
namespace Animation {
|
|
|
|
enum Sequence {
|
|
walk = 0,
|
|
run = 1,
|
|
stand = 2,
|
|
jumpUp = 3,
|
|
standUp = 4,
|
|
readyWeapon = 5,
|
|
unreadyWeapon = 6,
|
|
attack = 7,
|
|
advance = 8,
|
|
retreat = 9,
|
|
runningJump = 10,
|
|
shakeHead = 11,
|
|
step = 12,
|
|
stumbleBackwards = 13,
|
|
die = 14,
|
|
combatStand = 15,
|
|
land = 16,
|
|
jump = 17,
|
|
airwalkJump = 18,
|
|
//19-26: climbing up on increasingly high objects
|
|
climb16 = 19,
|
|
climb24 = 20,
|
|
climb32 = 21,
|
|
climb40 = 22,
|
|
climb48 = 23,
|
|
climb56 = 24,
|
|
climb64 = 25,
|
|
climb72 = 26,
|
|
//27-31: casting magic
|
|
cast1 = 27,
|
|
cast2 = 28,
|
|
cast3 = 29,
|
|
cast4 = 30,
|
|
cast5 = 31,
|
|
lookLeft = 32,
|
|
lookRight = 33,
|
|
startKneeling = 34,
|
|
kneel = 35,
|
|
//36: Vividos only: magic?
|
|
//37: Mythran only: magic?
|
|
//38: Vividos only: ?
|
|
//39: unused in u8
|
|
//40: ? - could be a slow attack or quick block ???
|
|
//41: unused in u8
|
|
keepBalance = 42,
|
|
//43: unused in u8
|
|
fallBackwards = 44,
|
|
hang = 45,
|
|
climbUp = 46,
|
|
idle1 = 47,
|
|
idle2 = 48,
|
|
kneel2 = 49,
|
|
stopKneeling = 50,
|
|
sitDownInChair = 51,
|
|
standUpFromChair = 52,
|
|
talk = 53,
|
|
//54: Mythran and Vividos only: magic?
|
|
work = 55,
|
|
drown = 56,
|
|
burn = 57,
|
|
kick = 58,
|
|
startBlock = 59,
|
|
stopBlock = 60,
|
|
//61: unused in u8
|
|
//62: unused in u8
|
|
//63: unused in u8
|
|
|
|
// All belowa are crusader-specific animations (some use the same IDs as above)
|
|
standCru = 0,
|
|
walkCru = 1,
|
|
retreatSmallWeapon = 2,
|
|
runCru = 3,
|
|
combatStandSmallWeapon = 4,
|
|
readySmallWeapon = 7,
|
|
fireSmallWeapon = 8,
|
|
reloadSmallWeapon = 10,
|
|
unreadySmallWeapon = 11,
|
|
readyLargeWeapon = 12,
|
|
fireLargeWeapon = 13,
|
|
reload = 14,
|
|
reloadLargeWeapon = 15,
|
|
unreadyLargeWeapon = 16,
|
|
fallBackwardsCru = 18,
|
|
fallForwardsCru = 20,
|
|
kneelCombatRollLeft = 23,
|
|
kneelCombatRollRight = 24,
|
|
stopRunningAndDrawLargeWeapon = 25,
|
|
kneelAndFire = 26,
|
|
slideLeft = 28,
|
|
slideRight = 29,
|
|
lookLeftCru = 30,
|
|
lookRightCru = 31,
|
|
teleportIn = 32,
|
|
teleportOut = 33,
|
|
startRunSmallWeapon = 34,
|
|
startRunLargeWeapon = 35,
|
|
advanceSmallWeapon = 36,
|
|
combatStandLargeWeapon = 37,
|
|
startRun = 38,
|
|
stopRunningAndDrawSmallWeapon = 39,
|
|
kneelStartCru = 40,
|
|
kneelEndCru = 41,
|
|
kneelAndFireSmallWeapon = 42,
|
|
kneelAndFireLargeWeapon = 43,
|
|
advanceLargeWeapon = 44,
|
|
retreatLargeWeapon = 45,
|
|
kneelingWithSmallWeapon = 46,
|
|
kneelingWithLargeWeapon = 47,
|
|
combatRunSmallWeapon = 48,
|
|
combatRunLargeWeapon = 49,
|
|
brightKneelAndFireLargeWeapon = 50,
|
|
kneelingRetreat = 51,
|
|
kneelingAdvance = 52,
|
|
kneelingSlowRetreat = 53,
|
|
brightFireLargeWpn = 54,
|
|
electrocuted = 55,
|
|
jumpForward = 56,
|
|
surrender = 57,
|
|
quickJumpCru = 58,
|
|
jumpLanding = 59,
|
|
surrenderStand = 60,
|
|
combatRollLeft = 61,
|
|
combatRollRight = 62,
|
|
finishFiring = 63,
|
|
|
|
/// A flag to say we want an exact number, don't do mapping from U8 animation
|
|
/// numbers. This is a bit of a hack because for most code we want to do
|
|
/// translations from U8 nums, but sometimes we have exact animation numbers
|
|
/// provided by usecode or from some translated code.
|
|
crusaderAbsoluteAnimFlag = 0x1000,
|
|
};
|
|
|
|
static inline Animation::Sequence absAnim(Animation::Sequence seq) {
|
|
return static_cast<Animation::Sequence>(seq | crusaderAbsoluteAnimFlag);
|
|
}
|
|
|
|
enum Result {
|
|
FAILURE = 0,
|
|
SUCCESS = 1,
|
|
END_OFF_LAND = 2
|
|
};
|
|
|
|
bool isCombatAnim(const Sequence anim);
|
|
bool isCombatAnimU8(const Sequence anim);
|
|
bool isCombatAnimCru(const Sequence anim);
|
|
bool isCastAnimU8(const Sequence anim);
|
|
Sequence checkWeapon(const Sequence nextanim, const Sequence lastanim);
|
|
|
|
} // End of namespace Animation
|
|
} // End of namespace Ultima8
|
|
} // End of namespace Ultima
|
|
|
|
#endif
|