2012-05-01 13:44:02 +00:00
|
|
|
/* 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 2
|
|
|
|
* 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, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*
|
|
|
|
*/
|
2012-05-14 05:43:50 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* This code is based on original Tony Tough source code
|
|
|
|
*
|
|
|
|
* Copyright (c) 1997-2003 Nayma Software
|
|
|
|
*/
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
#include "tony/mpal/memory.h"
|
|
|
|
#include "tony/mpal/mpalutils.h"
|
|
|
|
#include "tony/game.h"
|
|
|
|
#include "tony/tonychar.h"
|
|
|
|
#include "tony/tony.h"
|
|
|
|
|
|
|
|
namespace Tony {
|
|
|
|
|
|
|
|
/****************************************************************************\
|
|
|
|
* Metodi di RMTony
|
|
|
|
\****************************************************************************/
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
bool RMTony::_bAction = false;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-05 06:39:55 +00:00
|
|
|
void RMTony::initStatics() {
|
2012-06-07 05:58:01 +00:00
|
|
|
_bAction = false;
|
2012-05-13 13:05:41 +00:00
|
|
|
}
|
|
|
|
|
2012-05-12 00:34:52 +00:00
|
|
|
RMTony::RMTony() {
|
2012-06-07 05:58:01 +00:00
|
|
|
_bShow = false;
|
|
|
|
_bShowOmbra = false;
|
|
|
|
_bCorpoDavanti = false;
|
|
|
|
_bActionPending = false;
|
|
|
|
_ActionItem = NULL;
|
|
|
|
_Action = 0;
|
|
|
|
_ActionParm = 0;
|
|
|
|
_bPastorella = false;
|
|
|
|
_bIsStaticTalk = false;
|
|
|
|
_bIsTalking = false;
|
|
|
|
_nPatB4Talking = 0;
|
|
|
|
_nTalkType = TALK_NORMAL;
|
|
|
|
_TalkDirection = UP;
|
|
|
|
_nTimeLastStep = 0;
|
2012-05-12 00:34:52 +00:00
|
|
|
hActionThread = CORO_INVALID_PID_VALUE;
|
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::waitEndOfAction(CORO_PARAM, const void *param) {
|
2012-05-06 05:18:03 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
uint32 pid = *(const uint32 *)param;
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
2012-05-11 13:15:59 +00:00
|
|
|
CORO_INVOKE_2(CoroScheduler.waitForSingleObject, pid, CORO_INFINITE);
|
2012-05-06 05:18:03 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bAction = false;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-06 05:18:03 +00:00
|
|
|
CORO_END_CODE;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
RMGfxSourceBuffer *RMTony::newItemSpriteBuffer(int dimx, int dimy, bool bPreRLE) {
|
2012-05-01 13:44:02 +00:00
|
|
|
RMGfxSourceBuffer8RLE *spr;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
assert(_cm == CM_256);
|
2012-05-01 13:44:02 +00:00
|
|
|
spr = new RMGfxSourceBuffer8RLEByteAA;
|
2012-06-05 06:39:55 +00:00
|
|
|
spr->setAlphaBlendColor(1);
|
2012-05-01 13:44:02 +00:00
|
|
|
if (bPreRLE)
|
2012-06-05 06:39:55 +00:00
|
|
|
spr->setAlreadyCompressed();
|
2012-05-01 13:44:02 +00:00
|
|
|
return spr;
|
|
|
|
}
|
|
|
|
|
2012-06-05 06:39:55 +00:00
|
|
|
void RMTony::init(void) {
|
2012-05-01 13:44:02 +00:00
|
|
|
RMRes tony(0);
|
|
|
|
RMRes body(9999);
|
|
|
|
RMDataStream ds;
|
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Tony is shown by default
|
2012-06-07 05:58:01 +00:00
|
|
|
_bShow = _bShowOmbra = true;
|
2012-05-04 23:31:21 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// No action pending
|
2012-06-07 05:58:01 +00:00
|
|
|
_bActionPending = false;
|
|
|
|
_bAction = false;
|
2012-05-04 23:31:21 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bPastorella = false;
|
|
|
|
_bIsTalking = false;
|
|
|
|
_bIsStaticTalk = false;
|
2012-05-04 23:31:21 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Opens the buffer
|
2012-06-07 06:42:35 +00:00
|
|
|
ds.openBuffer(tony);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Reads his details from the stream
|
2012-06-07 05:58:01 +00:00
|
|
|
readFromStream(ds, true);
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Closes the buffer
|
2012-06-07 06:42:35 +00:00
|
|
|
ds.close();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Reads Tony's body
|
2012-06-07 06:42:35 +00:00
|
|
|
ds.openBuffer(body);
|
2012-06-07 05:58:01 +00:00
|
|
|
_body.readFromStream(ds, true);
|
2012-06-07 06:42:35 +00:00
|
|
|
ds.close();
|
2012-06-07 05:58:01 +00:00
|
|
|
_body.setPattern(0);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_nTimeLastStep = _vm->getTime();
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::close(void) {
|
2012-05-20 03:54:59 +00:00
|
|
|
// Disalloca @@@ Deallocation of missing item
|
2012-06-07 05:58:01 +00:00
|
|
|
_ombra.destroy();
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::doFrame(CORO_PARAM, RMGfxTargetBuffer *bigBuf, int curLoc) {
|
2012-05-10 14:09:34 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
2012-05-21 21:53:13 +00:00
|
|
|
int time;
|
2012-05-10 14:09:34 +00:00
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (!_nInList && _bShow)
|
2012-06-05 06:39:55 +00:00
|
|
|
bigBuf->addPrim(new RMGfxPrimitive(this));
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-08 22:52:38 +00:00
|
|
|
setSpeed(GLOBALS._nCfgTonySpeed);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Runs the normal character movement
|
2012-06-04 21:45:36 +00:00
|
|
|
_ctx->time = _vm->getTime();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-03 13:08:19 +00:00
|
|
|
do {
|
2012-06-07 05:58:01 +00:00
|
|
|
_nTimeLastStep += (1000 / 40);
|
|
|
|
CORO_INVOKE_2(RMCharacter::doFrame, bigBuf, curLoc);
|
|
|
|
} while (_ctx->time > _nTimeLastStep + (1000 / 40));
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Check if we are at the end of a path
|
2012-06-07 05:58:01 +00:00
|
|
|
if (endOfPath() && _bActionPending) {
|
2012-05-20 03:54:59 +00:00
|
|
|
// Must perform the action on which we clicked
|
2012-06-07 05:58:01 +00:00
|
|
|
_bActionPending = false;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bIsTalking || _bIsStaticTalk)
|
|
|
|
_body.doFrame(bigBuf, false);
|
2012-05-10 14:09:34 +00:00
|
|
|
|
|
|
|
CORO_END_CODE;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::show(void) {
|
|
|
|
_bShow = true;
|
|
|
|
_bShowOmbra = true;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::hide(bool bShowOmbra) {
|
|
|
|
_bShow = false;
|
|
|
|
_bShowOmbra = bShowOmbra;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-05 06:39:55 +00:00
|
|
|
void RMTony::draw(CORO_PARAM, RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *prim) {
|
2012-05-12 10:49:36 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
2012-05-20 06:03:09 +00:00
|
|
|
// Call the Draw() of the parent class if Tony is visible
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bShow && bDrawNow) {
|
|
|
|
if (_bCorpoDavanti) {
|
2012-06-07 19:14:59 +00:00
|
|
|
prim->getDst().setEmpty();
|
|
|
|
prim->getDst().offset(-44, -134);
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bPastorella)
|
2012-06-07 19:14:59 +00:00
|
|
|
prim->getDst().offset(1, 4);
|
2012-06-05 06:39:55 +00:00
|
|
|
CORO_INVOKE_2(RMCharacter::draw, bigBuf, prim);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bIsTalking || _bIsStaticTalk) {
|
2012-05-20 06:03:09 +00:00
|
|
|
// Offest direction from scrolling
|
2012-06-07 19:14:59 +00:00
|
|
|
prim->getDst().setEmpty();
|
|
|
|
prim->getDst().offset(-_curScroll);
|
|
|
|
prim->getDst().offset(_pos);
|
|
|
|
prim->getDst().offset(-44, -134);
|
|
|
|
prim->getDst() += _nBodyOffset;
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_2(_body.draw, bigBuf, prim);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (!_bCorpoDavanti) {
|
2012-06-07 19:14:59 +00:00
|
|
|
prim->getDst().setEmpty();
|
|
|
|
prim->getDst().offset(-44, -134);
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bPastorella)
|
2012-06-07 19:14:59 +00:00
|
|
|
prim->getDst().offset(0, 3);
|
2012-06-05 06:39:55 +00:00
|
|
|
CORO_INVOKE_2(RMCharacter::draw, bigBuf, prim);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
}
|
2012-05-12 10:49:36 +00:00
|
|
|
|
|
|
|
CORO_END_CODE;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::moveAndDoAction(CORO_PARAM, RMPoint dst, RMItem *item, int nAction, int nActionParm) {
|
2012-05-10 14:09:34 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
2012-05-21 21:53:13 +00:00
|
|
|
bool result;
|
2012-05-10 14:09:34 +00:00
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
2012-05-20 06:03:09 +00:00
|
|
|
// Makes normal movement, but remember if you must then perform an action
|
2012-05-01 13:44:02 +00:00
|
|
|
if (item == NULL) {
|
2012-06-07 05:58:01 +00:00
|
|
|
_bActionPending = false;
|
|
|
|
_ActionItem = NULL;
|
2012-05-01 13:44:02 +00:00
|
|
|
} else {
|
2012-06-07 05:58:01 +00:00
|
|
|
_ActionItem = item;
|
|
|
|
_Action = nAction;
|
|
|
|
_ActionParm = nActionParm;
|
|
|
|
_bActionPending = true;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_2(RMCharacter::move, dst, &_ctx->result);
|
2012-05-10 14:09:34 +00:00
|
|
|
if (!_ctx->result) {
|
2012-06-07 05:58:01 +00:00
|
|
|
_bActionPending = false;
|
|
|
|
_ActionItem = NULL;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
2012-05-10 14:09:34 +00:00
|
|
|
|
|
|
|
CORO_END_CODE;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::executeAction(int nAction, int nActionItem, int nParm) {
|
2012-05-06 05:18:03 +00:00
|
|
|
uint32 pid;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
if (nAction == TA_COMBINE) {
|
2012-05-09 13:15:41 +00:00
|
|
|
pid = mpalQueryDoAction(TA_COMBINE, nParm, nActionItem);
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// If you failed the combine, we have RECEIVECOMBINE as a fallback
|
2012-05-11 13:15:59 +00:00
|
|
|
if (pid == CORO_INVALID_PID_VALUE) {
|
2012-05-21 21:53:13 +00:00
|
|
|
pid = mpalQueryDoAction(TA_RECEIVECOMBINE, nActionItem, nParm);
|
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// If you failed with that, go with the generic
|
2012-05-01 13:44:02 +00:00
|
|
|
// @@@ CombineGive!
|
2012-05-11 13:15:59 +00:00
|
|
|
if (pid == CORO_INVALID_PID_VALUE) {
|
2012-05-09 13:15:41 +00:00
|
|
|
pid = mpalQueryDoAction(TA_COMBINE, nParm, 0);
|
2012-05-21 21:53:13 +00:00
|
|
|
|
|
|
|
if (pid == CORO_INVALID_PID_VALUE) {
|
2012-05-09 13:15:41 +00:00
|
|
|
pid = mpalQueryDoAction(TA_RECEIVECOMBINE, nActionItem, 0);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
2012-05-06 02:21:29 +00:00
|
|
|
// Perform the action
|
2012-05-21 21:53:13 +00:00
|
|
|
pid = mpalQueryDoAction(nAction, nActionItem, 0);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-11 13:15:59 +00:00
|
|
|
if (pid != CORO_INVALID_PID_VALUE) {
|
2012-06-07 05:58:01 +00:00
|
|
|
_bAction = true;
|
|
|
|
CoroScheduler.createProcess(waitEndOfAction, &pid, sizeof(uint32));
|
2012-05-08 14:42:27 +00:00
|
|
|
hActionThread = pid;
|
2012-05-01 13:44:02 +00:00
|
|
|
} else if (nAction != TA_GOTO) {
|
|
|
|
if (nAction == TA_TALK) {
|
2012-05-21 21:53:13 +00:00
|
|
|
pid = mpalQueryDoAction(6, 1, 0);
|
2012-06-07 05:58:01 +00:00
|
|
|
_bAction = true;
|
|
|
|
CoroScheduler.createProcess(waitEndOfAction, &pid, sizeof(uint32));
|
2012-05-21 21:53:13 +00:00
|
|
|
hActionThread = pid;
|
2012-05-01 13:44:02 +00:00
|
|
|
} else if (nAction == TA_PALESATI) {
|
2012-05-09 13:15:41 +00:00
|
|
|
pid = mpalQueryDoAction(7, 1, 0);
|
2012-06-07 05:58:01 +00:00
|
|
|
_bAction = true;
|
|
|
|
CoroScheduler.createProcess(waitEndOfAction, &pid, sizeof(uint32));
|
2012-05-21 21:53:13 +00:00
|
|
|
hActionThread = pid;
|
2012-05-01 13:44:02 +00:00
|
|
|
} else {
|
2012-05-21 21:53:13 +00:00
|
|
|
pid = mpalQueryDoAction(5, 1, 0);
|
2012-06-07 05:58:01 +00:00
|
|
|
_bAction = true;
|
|
|
|
CoroScheduler.createProcess(waitEndOfAction, &pid, sizeof(uint32));
|
2012-05-08 14:42:27 +00:00
|
|
|
hActionThread = pid;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::stopNoAction(CORO_PARAM) {
|
2012-05-08 14:42:27 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bAction)
|
2012-05-11 13:15:59 +00:00
|
|
|
CORO_INVOKE_2(CoroScheduler.waitForSingleObject, hActionThread, CORO_INFINITE);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bActionPending = false;
|
|
|
|
_ActionItem = NULL;
|
|
|
|
CORO_INVOKE_0(stop);
|
2012-05-08 14:42:27 +00:00
|
|
|
|
|
|
|
CORO_END_CODE;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::stop(CORO_PARAM) {
|
2012-05-08 14:42:27 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
2012-05-21 21:53:13 +00:00
|
|
|
uint32 pid;
|
2012-05-08 14:42:27 +00:00
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_ActionItem != NULL) {
|
2012-05-20 03:54:59 +00:00
|
|
|
// Call MPAL to choose the direction
|
2012-06-07 05:58:01 +00:00
|
|
|
_ctx->pid = mpalQueryDoAction(21, _ActionItem->mpalCode(), 0);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-11 13:15:59 +00:00
|
|
|
if (_ctx->pid == CORO_INVALID_PID_VALUE)
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(RMCharacter::stop);
|
2012-05-01 13:44:02 +00:00
|
|
|
else {
|
2012-05-21 21:53:13 +00:00
|
|
|
bNeedToStop = false; // If we make the OnWhichDirection, we don't need at least after the Stop().
|
2012-05-01 13:44:02 +00:00
|
|
|
bMoving = false;
|
2012-05-20 03:54:59 +00:00
|
|
|
CORO_INVOKE_2(CoroScheduler.waitForSingleObject, _ctx->pid, CORO_INFINITE); // @@@ Put an assert after 10 seconds
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
} else {
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(RMCharacter::stop);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (!_bActionPending)
|
2012-05-01 13:44:02 +00:00
|
|
|
return;
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bActionPending = false;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
executeAction(_Action, _ActionItem->mpalCode(), _ActionParm);
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_ActionItem = NULL;
|
2012-05-08 14:42:27 +00:00
|
|
|
|
|
|
|
CORO_END_CODE;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
int RMTony::getCurPattern(void) {
|
|
|
|
int nPatt = RMCharacter::getCurPattern();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (!_bPastorella)
|
2012-05-01 13:44:02 +00:00
|
|
|
return nPatt;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
switch (nPatt) {
|
|
|
|
case PAT_PAST_STANDUP:
|
|
|
|
return PAT_STANDUP;
|
|
|
|
case PAT_PAST_STANDDOWN:
|
|
|
|
return PAT_STANDDOWN;
|
|
|
|
case PAT_PAST_STANDLEFT:
|
|
|
|
return PAT_STANDLEFT;
|
|
|
|
case PAT_PAST_STANDRIGHT:
|
|
|
|
return PAT_STANDRIGHT;
|
|
|
|
case PAT_PAST_WALKUP:
|
|
|
|
return PAT_WALKUP;
|
|
|
|
case PAT_PAST_WALKDOWN:
|
|
|
|
return PAT_WALKDOWN;
|
|
|
|
case PAT_PAST_WALKLEFT:
|
|
|
|
return PAT_WALKLEFT;
|
|
|
|
case PAT_PAST_WALKRIGHT:
|
|
|
|
return PAT_WALKRIGHT;
|
|
|
|
}
|
|
|
|
|
|
|
|
return nPatt;
|
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::setPattern(int nPatt, bool bPlayP0) {
|
|
|
|
if (_bPastorella) {
|
2012-05-01 13:44:02 +00:00
|
|
|
switch (nPatt) {
|
|
|
|
case PAT_STANDUP:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_STANDUP;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case PAT_STANDDOWN:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_STANDDOWN;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case PAT_STANDLEFT:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_STANDLEFT;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case PAT_STANDRIGHT:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_STANDRIGHT;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case PAT_WALKUP:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_WALKUP;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case PAT_WALKDOWN:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_WALKDOWN;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case PAT_WALKLEFT:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_WALKLEFT;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case PAT_WALKRIGHT:
|
2012-05-21 21:53:13 +00:00
|
|
|
nPatt = PAT_PAST_WALKRIGHT;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
RMCharacter::setPattern(nPatt, bPlayP0);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::take(int nWhere, int nPart) {
|
2012-05-01 13:44:02 +00:00
|
|
|
if (nPart == 0) {
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (getCurPattern()) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case PAT_STANDDOWN:
|
2012-05-21 21:53:13 +00:00
|
|
|
assert(0); // Not while you're doing a StandDown
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_STANDUP:
|
|
|
|
switch (nWhere) {
|
|
|
|
case 0:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKEUP_UP1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 1:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKEUP_MID1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKEUP_DOWN1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_STANDRIGHT:
|
|
|
|
switch (nWhere) {
|
|
|
|
case 0:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKERIGHT_UP1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 1:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKERIGHT_MID1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKERIGHT_DOWN1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_STANDLEFT:
|
|
|
|
switch (nWhere) {
|
|
|
|
case 0:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKELEFT_UP1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 1:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKELEFT_MID1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_TAKELEFT_DOWN1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else if (nPart == 1) {
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(getCurPattern() + 1);
|
2012-05-01 13:44:02 +00:00
|
|
|
} else if (nPart == 2) {
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (getCurPattern()) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case PAT_TAKEUP_UP2:
|
|
|
|
case PAT_TAKEUP_MID2:
|
|
|
|
case PAT_TAKEUP_DOWN2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_STANDUP);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_TAKELEFT_UP2:
|
|
|
|
case PAT_TAKELEFT_MID2:
|
|
|
|
case PAT_TAKELEFT_DOWN2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_STANDLEFT);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_TAKERIGHT_UP2:
|
|
|
|
case PAT_TAKERIGHT_MID2:
|
|
|
|
case PAT_TAKERIGHT_DOWN2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_STANDRIGHT);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::put(int nWhere, int nPart) {
|
2012-05-01 13:44:02 +00:00
|
|
|
if (nPart == 0) {
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (getCurPattern()) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case PAT_STANDDOWN:
|
2012-05-20 03:54:59 +00:00
|
|
|
//assert(0);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_STANDUP:
|
|
|
|
switch (nWhere) {
|
|
|
|
case 0:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTUP_UP1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 1:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTUP_MID1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTUP_DOWN1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_STANDRIGHT:
|
|
|
|
switch (nWhere) {
|
|
|
|
case 0:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTRIGHT_UP1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 1:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTRIGHT_MID1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTRIGHT_DOWN1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_STANDLEFT:
|
|
|
|
switch (nWhere) {
|
|
|
|
case 0:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTLEFT_UP1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 1:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTLEFT_MID1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
case 2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PUTLEFT_DOWN1);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else if (nPart == 1) {
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(getCurPattern() + 1);
|
2012-05-01 13:44:02 +00:00
|
|
|
} else if (nPart == 2) {
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (getCurPattern()) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case PAT_PUTUP_UP2:
|
|
|
|
case PAT_PUTUP_MID2:
|
|
|
|
case PAT_PUTUP_DOWN2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_STANDUP);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_PUTLEFT_UP2:
|
|
|
|
case PAT_PUTLEFT_MID2:
|
|
|
|
case PAT_PUTLEFT_DOWN2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_STANDLEFT);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_PUTRIGHT_UP2:
|
|
|
|
case PAT_PUTRIGHT_MID2:
|
|
|
|
case PAT_PUTRIGHT_DOWN2:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_STANDRIGHT);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
bool RMTony::startTalkCalculate(TALKTYPE nTalkType, int &headStartPat, int &bodyStartPat,
|
2012-05-21 21:53:13 +00:00
|
|
|
int &headLoopPat, int &bodyLoopPat) {
|
2012-06-07 05:58:01 +00:00
|
|
|
assert(!_bIsTalking);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bIsTalking = true;
|
|
|
|
_nPatB4Talking = getCurPattern();
|
|
|
|
_nTalkType = nTalkType;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Set the direction of speech ONLY if we are not in a static animation (since it would have already been done)
|
2012-06-07 05:58:01 +00:00
|
|
|
if (!_bIsStaticTalk) {
|
|
|
|
switch (_nPatB4Talking) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case PAT_STANDDOWN:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = DOWN;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_TAKELEFT_UP2:
|
|
|
|
case PAT_TAKELEFT_MID2:
|
|
|
|
case PAT_TAKELEFT_DOWN2:
|
|
|
|
case PAT_SIRIALZALEFT:
|
|
|
|
case PAT_STANDLEFT:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = LEFT;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
case PAT_TAKERIGHT_UP2:
|
|
|
|
case PAT_TAKERIGHT_MID2:
|
|
|
|
case PAT_TAKERIGHT_DOWN2:
|
|
|
|
case PAT_SIRIALZARIGHT:
|
|
|
|
case PAT_STANDRIGHT:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = RIGHT;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_TAKEUP_UP2:
|
|
|
|
case PAT_TAKEUP_MID2:
|
|
|
|
case PAT_TAKEUP_DOWN2:
|
|
|
|
case PAT_STANDUP:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = UP;
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Puts the body in front by default
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = true;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bPastorella) {
|
2012-05-20 03:54:59 +00:00
|
|
|
// Talking whilst a shepherdess
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PAST_TALKUP);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PAST_TALKDOWN);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PAST_TALKLEFT);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(PAT_PAST_TALKRIGHT);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-07 22:25:33 +00:00
|
|
|
return false;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
headStartPat = bodyStartPat = 0;
|
|
|
|
bodyLoopPat = 0;
|
|
|
|
|
|
|
|
switch (nTalkType) {
|
2012-05-21 21:53:13 +00:00
|
|
|
case TALK_NORMAL:
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = false;
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = 0;
|
|
|
|
bodyStartPat = 0;
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case DOWN:
|
|
|
|
headLoopPat = PAT_TALK_DOWN;
|
|
|
|
bodyLoopPat = BPAT_STANDDOWN;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(4, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_STANDLEFT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_STANDRIGHT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case UP:
|
|
|
|
headLoopPat = PAT_TALK_UP;
|
|
|
|
bodyLoopPat = BPAT_STANDUP;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
2012-05-21 21:53:13 +00:00
|
|
|
case TALK_FIANCHI:
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = false;
|
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(2, 42);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_TESTA_UP;
|
|
|
|
bodyStartPat = BPAT_FIANCHIUP_START;
|
|
|
|
headLoopPat = PAT_TALK_UP;
|
|
|
|
bodyLoopPat = BPAT_FIANCHIUP_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(2, 48);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_TESTA_DOWN;
|
|
|
|
bodyStartPat = BPAT_FIANCHIDOWN_START;
|
|
|
|
headLoopPat = PAT_TALK_DOWN;
|
|
|
|
bodyLoopPat = BPAT_FIANCHIDOWN_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-3, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_TESTA_LEFT;
|
|
|
|
bodyStartPat = BPAT_FIANCHILEFT_START;
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_FIANCHILEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(2, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_TESTA_RIGHT;
|
|
|
|
bodyStartPat = BPAT_FIANCHIRIGHT_START;
|
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_FIANCHIRIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case TALK_CANTA:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-10, 25);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_TESTA_LEFT;
|
|
|
|
bodyStartPat = BPAT_CANTALEFT_START;
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_CANTALEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_RIDE:
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = false;
|
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case DOWN:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_RIDELEFT_START;
|
|
|
|
bodyStartPat = BPAT_STANDLEFT;
|
|
|
|
headLoopPat = PAT_RIDELEFT_LOOP;
|
|
|
|
bodyLoopPat = BPAT_RIDELEFT;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_RIDERIGHT_START;
|
|
|
|
bodyStartPat = BPAT_STANDRIGHT;
|
|
|
|
headLoopPat = PAT_RIDERIGHT_LOOP;
|
|
|
|
bodyLoopPat = BPAT_RIDERIGHT;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_RIDE2:
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = false;
|
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case DOWN:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_RIDELEFT_START;
|
|
|
|
bodyStartPat = BPAT_STANDLEFT;
|
|
|
|
headLoopPat = PAT_RIDELEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_RIDERIGHT_START;
|
|
|
|
bodyStartPat = BPAT_STANDRIGHT;
|
|
|
|
headLoopPat = PAT_RIDERIGHT_LOOP;
|
|
|
|
bodyLoopPat = BPAT_RIDERIGHT;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case TALK_SIINDICA:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case DOWN:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-4, 40);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_SIINDICALEFT;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(5, 40);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_SIINDICARIGHT;
|
2012-05-21 21:53:13 +00:00
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-4, -11);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_TESTA_UP;
|
|
|
|
bodyStartPat = BPAT_SPAVENTOUP_START;
|
|
|
|
headLoopPat = PAT_TALK_UP;
|
|
|
|
bodyLoopPat = BPAT_SPAVENTOUP_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-5, 45);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_SPAVENTODOWN_START;
|
|
|
|
bodyStartPat = BPAT_SPAVENTODOWN_START;
|
|
|
|
headLoopPat = PAT_SPAVENTODOWN_LOOP;
|
|
|
|
bodyLoopPat = BPAT_SPAVENTODOWN_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-4, 41);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_SPAVENTORIGHT_START;
|
|
|
|
bodyStartPat = BPAT_SPAVENTORIGHT_START;
|
|
|
|
headLoopPat = PAT_SPAVENTORIGHT_LOOP;
|
|
|
|
bodyLoopPat = BPAT_SPAVENTORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-10, 41);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_SPAVENTOLEFT_START;
|
|
|
|
bodyStartPat = BPAT_SPAVENTOLEFT_START;
|
|
|
|
headLoopPat = PAT_SPAVENTOLEFT_LOOP;
|
|
|
|
bodyLoopPat = BPAT_SPAVENTOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATO2:
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = false;
|
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
bodyStartPat = BPAT_STANDUP;
|
|
|
|
bodyLoopPat = BPAT_STANDUP;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headStartPat = PAT_TESTA_UP;
|
|
|
|
headLoopPat = PAT_TALK_UP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
bodyStartPat = BPAT_STANDDOWN;
|
|
|
|
bodyLoopPat = BPAT_STANDDOWN;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(4, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headStartPat = PAT_SPAVENTODOWN_START;
|
|
|
|
headLoopPat = PAT_SPAVENTODOWN_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
bodyStartPat = BPAT_STANDRIGHT;
|
|
|
|
bodyLoopPat = BPAT_STANDRIGHT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headStartPat = PAT_SPAVENTORIGHT_START;
|
|
|
|
headLoopPat = PAT_SPAVENTORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
bodyStartPat = BPAT_STANDLEFT;
|
|
|
|
bodyLoopPat = BPAT_STANDLEFT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headStartPat = PAT_SPAVENTOLEFT_START;
|
|
|
|
headLoopPat = PAT_SPAVENTOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONBICCHIERE:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(4, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_DOWN;
|
|
|
|
bodyLoopPat = BPAT_BICCHIERE;
|
|
|
|
break;
|
|
|
|
case TALK_CONVERME:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(9, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_VERME;
|
|
|
|
break;
|
|
|
|
case TALK_CONMARTELLO:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MARTELLO;
|
|
|
|
break;
|
|
|
|
case TALK_CONCORDA:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-3, 38);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_CORDA;
|
|
|
|
break;
|
|
|
|
case TALK_CONSEGRETARIA:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-17, 12);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_CONSEGRETARIA;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONCONIGLIO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-21, -5);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCONIGLIOLEFT_START;
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_CONCONIGLIOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-4, -5);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCONIGLIORIGHT_START;
|
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_CONCONIGLIORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONRICETTA:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-61, -7);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONRICETTALEFT_START;
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_CONRICETTALEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-5, -7);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONRICETTARIGHT_START;
|
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_CONRICETTARIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONCARTE:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-34, -2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCARTELEFT_START;
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_CONCARTELEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-4, -2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCARTERIGHT_START;
|
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_CONCARTERIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONPUPAZZO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-35, 2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONPUPAZZOLEFT_START;
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_CONPUPAZZOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-14, 2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONPUPAZZORIGHT_START;
|
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_CONPUPAZZORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONPUPAZZOSTATIC:
|
|
|
|
case TALK_CONRICETTASTATIC:
|
|
|
|
case TALK_CONCONIGLIOSTATIC:
|
|
|
|
case TALK_CONCARTESTATIC:
|
|
|
|
case TALK_CONTACCUINOSTATIC:
|
|
|
|
case TALK_CONMEGAFONOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
headLoopPat = PAT_TALK_RIGHT;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
2012-05-21 21:53:13 +00:00
|
|
|
// The beard is the only case in which the head is animated separately while the body is the standard
|
2012-05-01 13:44:02 +00:00
|
|
|
case TALK_CONBARBASTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
|
|
|
headLoopPat = PAT_TALKBARBA_LEFT;
|
|
|
|
bodyLoopPat = BPAT_STANDLEFT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
headLoopPat = PAT_TALKBARBA_RIGHT;
|
|
|
|
bodyLoopPat = BPAT_STANDRIGHT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
case TALK_SCHIFATO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_SCHIFATOLEFT_START;
|
|
|
|
bodyStartPat = BPAT_STANDLEFT;
|
|
|
|
headLoopPat = PAT_SCHIFATOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_SCHIFATORIGHT_START;
|
|
|
|
bodyStartPat = BPAT_STANDRIGHT;
|
|
|
|
headLoopPat = PAT_SCHIFATORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_NAAH:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
case UP:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_NAAHLEFT_START;
|
|
|
|
bodyStartPat = BPAT_STANDLEFT;
|
|
|
|
headLoopPat = PAT_NAAHLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
headStartPat = PAT_NAAHRIGHT_START;
|
|
|
|
bodyStartPat = BPAT_STANDRIGHT;
|
|
|
|
headLoopPat = PAT_NAAHRIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_MACBETH1:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH1;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH2:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH2;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH3:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH3;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH4:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH4;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH5:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH5;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH6:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH6;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH7:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH7;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH8:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH8;
|
|
|
|
break;
|
|
|
|
case TALK_MACBETH9:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-33, -1);
|
2012-05-01 13:44:02 +00:00
|
|
|
headLoopPat = PAT_TALK_LEFT;
|
|
|
|
bodyLoopPat = BPAT_MACBETH9;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = false;
|
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case DOWN:
|
|
|
|
bodyStartPat = BPAT_STANDDOWN;
|
|
|
|
bodyLoopPat = BPAT_STANDDOWN;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(4, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headStartPat = PAT_SPAVENTODOWN_STAND;
|
|
|
|
headLoopPat = PAT_SPAVENTODOWN_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
bodyStartPat = BPAT_STANDRIGHT;
|
|
|
|
bodyLoopPat = BPAT_STANDRIGHT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headStartPat = PAT_SPAVENTORIGHT_STAND;
|
|
|
|
headLoopPat = PAT_SPAVENTORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
bodyStartPat = BPAT_STANDLEFT;
|
|
|
|
bodyLoopPat = BPAT_STANDLEFT;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headStartPat = PAT_SPAVENTOLEFT_STAND;
|
|
|
|
headLoopPat = PAT_SPAVENTOLEFT_LOOP;
|
|
|
|
break;
|
2012-05-04 12:58:42 +00:00
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
break;
|
2012-05-07 23:32:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
2012-05-07 22:25:33 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::startTalk(CORO_PARAM, TALKTYPE nTalkType) {
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
2012-05-21 21:53:13 +00:00
|
|
|
int headStartPat, bodyStartPat;
|
|
|
|
int headLoopPat, bodyLoopPat;
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
|
|
|
_ctx->headStartPat = _ctx->bodyStartPat = 0;
|
|
|
|
_ctx->headLoopPat = _ctx->bodyLoopPat = 0;
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (!startTalkCalculate(nTalkType, _ctx->headStartPat, _ctx->bodyStartPat,
|
2012-05-21 21:53:13 +00:00
|
|
|
_ctx->headLoopPat, _ctx->bodyLoopPat))
|
2012-05-07 22:25:33 +00:00
|
|
|
return;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Perform the set pattern
|
2012-05-07 22:25:33 +00:00
|
|
|
if (_ctx->headStartPat != 0 || _ctx->bodyStartPat != 0) {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headStartPat);
|
|
|
|
_body.setPattern(_ctx->bodyStartPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-07 22:25:33 +00:00
|
|
|
if (_ctx->bodyStartPat != 0)
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-07 22:25:33 +00:00
|
|
|
if (_ctx->headStartPat != 0)
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headLoopPat);
|
2012-05-07 22:25:33 +00:00
|
|
|
if (_ctx->bodyLoopPat)
|
2012-06-07 05:58:01 +00:00
|
|
|
_body.setPattern(_ctx->bodyLoopPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_END_CODE;
|
|
|
|
}
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
bool RMTony::endTalkCalculate(int &headStandPat, int &headEndPat, int &bodyEndPat, int &finalPat, bool &bStatic) {
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyEndPat = 0;
|
|
|
|
headEndPat = 0;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
finalPat = PAT_STANDUP;
|
|
|
|
headStandPat = PAT_TESTA_UP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
finalPat = PAT_STANDDOWN;
|
|
|
|
headStandPat = PAT_TESTA_DOWN;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
finalPat = PAT_STANDLEFT;
|
|
|
|
headStandPat = PAT_TESTA_LEFT;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
finalPat = PAT_STANDRIGHT;
|
|
|
|
headStandPat = PAT_TESTA_RIGHT;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bPastorella) {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(finalPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
_bIsTalking = false;
|
2012-05-07 22:25:33 +00:00
|
|
|
return false;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bStatic = false;
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_nTalkType) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case TALK_NORMAL:
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_FIANCHI:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
bodyEndPat = BPAT_FIANCHIUP_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
bodyEndPat = BPAT_FIANCHIDOWN_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
bodyEndPat = BPAT_FIANCHILEFT_END;
|
|
|
|
break;
|
|
|
|
|
2012-05-21 21:53:13 +00:00
|
|
|
case RIGHT:
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyEndPat = BPAT_FIANCHIRIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CANTA:
|
|
|
|
bodyEndPat = BPAT_CANTALEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_RIDE:
|
|
|
|
case TALK_RIDE2:
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_TalkDirection == LEFT)
|
2012-05-01 13:44:02 +00:00
|
|
|
headEndPat = PAT_RIDELEFT_END;
|
2012-06-07 05:58:01 +00:00
|
|
|
else if (_TalkDirection == RIGHT)
|
2012-05-01 13:44:02 +00:00
|
|
|
headEndPat = PAT_RIDERIGHT_END;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SCHIFATO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
headEndPat = PAT_SCHIFATOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
headEndPat = PAT_SCHIFATORIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_NAAH:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
headEndPat = PAT_NAAHLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
headEndPat = PAT_NAAHRIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SIINDICA:
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
bodyEndPat = BPAT_SPAVENTOUP_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
headEndPat = PAT_SPAVENTODOWN_END;
|
|
|
|
bodyEndPat = BPAT_SPAVENTODOWN_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
headEndPat = PAT_SPAVENTORIGHT_END;
|
|
|
|
bodyEndPat = BPAT_SPAVENTORIGHT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
headEndPat = PAT_SPAVENTOLEFT_END;
|
|
|
|
bodyEndPat = BPAT_SPAVENTOLEFT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATO2:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
headEndPat = PAT_SPAVENTODOWN_END;
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
headEndPat = PAT_SPAVENTORIGHT_END;
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
headEndPat = PAT_SPAVENTOLEFT_END;
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONCONIGLIO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
finalPat = PAT_STANDLEFT;
|
|
|
|
bodyEndPat = BPAT_CONCONIGLIOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
case DOWN:
|
|
|
|
finalPat = PAT_STANDRIGHT;
|
|
|
|
bodyEndPat = BPAT_CONCONIGLIORIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONRICETTA:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
finalPat = PAT_STANDLEFT;
|
|
|
|
bodyEndPat = BPAT_CONRICETTALEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
case DOWN:
|
|
|
|
finalPat = PAT_STANDRIGHT;
|
|
|
|
bodyEndPat = BPAT_CONRICETTARIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONCARTE:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
finalPat = PAT_STANDLEFT;
|
|
|
|
bodyEndPat = BPAT_CONCARTELEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
case DOWN:
|
|
|
|
finalPat = PAT_STANDRIGHT;
|
|
|
|
bodyEndPat = BPAT_CONCARTERIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONPUPAZZO:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
finalPat = PAT_STANDLEFT;
|
|
|
|
bodyEndPat = BPAT_CONPUPAZZOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
case DOWN:
|
|
|
|
finalPat = PAT_STANDRIGHT;
|
|
|
|
bodyEndPat = BPAT_CONPUPAZZORIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONVERME:
|
|
|
|
finalPat = PAT_CONVERME;
|
|
|
|
break;
|
|
|
|
case TALK_CONCORDA:
|
|
|
|
finalPat = PAT_CONCORDA;
|
|
|
|
break;
|
|
|
|
case TALK_CONSEGRETARIA:
|
|
|
|
finalPat = PAT_CONSEGRETARIA;
|
|
|
|
break;
|
|
|
|
case TALK_CONMARTELLO:
|
|
|
|
finalPat = PAT_CONMARTELLO;
|
|
|
|
break;
|
|
|
|
case TALK_CONBICCHIERE:
|
|
|
|
finalPat = PAT_CONBICCHIERE;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_MACBETH1:
|
|
|
|
case TALK_MACBETH2:
|
|
|
|
case TALK_MACBETH3:
|
|
|
|
case TALK_MACBETH4:
|
|
|
|
case TALK_MACBETH5:
|
|
|
|
case TALK_MACBETH6:
|
|
|
|
case TALK_MACBETH7:
|
|
|
|
case TALK_MACBETH8:
|
|
|
|
finalPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case DOWN:
|
|
|
|
headStandPat = PAT_SPAVENTODOWN_STAND;
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
headStandPat = PAT_SPAVENTORIGHT_STAND;
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
headStandPat = PAT_SPAVENTOLEFT_STAND;
|
|
|
|
bodyEndPat = 0;
|
|
|
|
break;
|
2012-05-04 12:58:42 +00:00
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
break;
|
2012-05-04 12:28:51 +00:00
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-05-07 22:25:33 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::endTalk(CORO_PARAM) {
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
2012-05-21 21:53:13 +00:00
|
|
|
int headStandPat, headEndPat;
|
|
|
|
int bodyEndPat, finalPat;
|
|
|
|
bool bStatic;
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
|
|
|
_ctx->headStandPat = _ctx->headEndPat = 0;
|
|
|
|
_ctx->bodyEndPat = _ctx->finalPat = 0;
|
|
|
|
_ctx->bStatic = false;
|
|
|
|
|
|
|
|
_ctx->bodyEndPat = 0;
|
|
|
|
_ctx->headEndPat = 0;
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
if (!endTalkCalculate(_ctx->headStandPat, _ctx->headEndPat, _ctx->bodyEndPat, _ctx->finalPat, _ctx->bStatic))
|
2012-05-07 22:25:33 +00:00
|
|
|
return;
|
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Handles the end of an animated and static, leaving everything unchanged
|
2012-06-07 05:58:01 +00:00
|
|
|
if (_bIsStaticTalk) {
|
|
|
|
if (_nTalkType == TALK_CONBARBASTATIC) {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(0);
|
|
|
|
if (_TalkDirection == UP || _TalkDirection == LEFT) {
|
|
|
|
_body.setPattern(BPAT_CONBARBALEFT_STATIC);
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-41, -14);
|
2012-06-07 05:58:01 +00:00
|
|
|
} else if (_TalkDirection == DOWN || _TalkDirection == RIGHT) {
|
|
|
|
_body.setPattern(BPAT_CONBARBARIGHT_STATIC);
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-26, -14);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
} else {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headStandPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bIsTalking = false;
|
2012-05-01 13:44:02 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2012-05-20 03:54:59 +00:00
|
|
|
// Set the pattern
|
2012-05-07 22:25:33 +00:00
|
|
|
if (_ctx->headEndPat != 0 && _ctx->bodyEndPat != 0) {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headEndPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
_body.setPattern(_ctx->bodyEndPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(waitForEndPattern);
|
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-07 22:25:33 +00:00
|
|
|
} else if (_ctx->bodyEndPat != 0) {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headStandPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
_body.setPattern(_ctx->bodyEndPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-07 22:25:33 +00:00
|
|
|
} else if (_ctx->headEndPat != 0) {
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headEndPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
} else {
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-05-07 22:25:33 +00:00
|
|
|
if (_ctx->finalPat != 0) {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
_body.setPattern(0);
|
|
|
|
setPattern(_ctx->finalPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bIsTalking = false;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_END_CODE;
|
|
|
|
}
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::startStaticCalculate(TALKTYPE nTalk, int &headPat, int &headLoopPat,
|
2012-05-21 21:53:13 +00:00
|
|
|
int &bodyStartPat, int &bodyLoopPat) {
|
2012-06-07 05:58:01 +00:00
|
|
|
int nPat = getCurPattern();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
headLoopPat = -1;
|
|
|
|
|
|
|
|
switch (nPat) {
|
|
|
|
case PAT_STANDDOWN:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = DOWN;
|
2012-05-01 13:44:02 +00:00
|
|
|
headPat = PAT_TESTA_RIGHT;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_TAKELEFT_UP2:
|
|
|
|
case PAT_TAKELEFT_MID2:
|
|
|
|
case PAT_TAKELEFT_DOWN2:
|
|
|
|
case PAT_SIRIALZALEFT:
|
|
|
|
case PAT_STANDLEFT:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = LEFT;
|
2012-05-01 13:44:02 +00:00
|
|
|
headPat = PAT_TESTA_LEFT;
|
|
|
|
break;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
case PAT_TAKERIGHT_UP2:
|
|
|
|
case PAT_TAKERIGHT_MID2:
|
|
|
|
case PAT_TAKERIGHT_DOWN2:
|
|
|
|
case PAT_SIRIALZARIGHT:
|
|
|
|
case PAT_STANDRIGHT:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = RIGHT;
|
2012-05-01 13:44:02 +00:00
|
|
|
headPat = PAT_TESTA_RIGHT;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PAT_TAKEUP_UP2:
|
|
|
|
case PAT_TAKEUP_MID2:
|
|
|
|
case PAT_TAKEUP_DOWN2:
|
|
|
|
case PAT_STANDUP:
|
2012-06-07 05:58:01 +00:00
|
|
|
_TalkDirection = UP;
|
2012-05-01 13:44:02 +00:00
|
|
|
headPat = PAT_TESTA_LEFT;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bCorpoDavanti = true;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
switch (nTalk) {
|
|
|
|
case TALK_CONCONIGLIOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-21, -5);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCONIGLIOLEFT_START;
|
|
|
|
bodyLoopPat = BPAT_CONCONIGLIOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-4, -5);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCONIGLIORIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_CONCONIGLIORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONCARTESTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-34, -2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCARTELEFT_START;
|
|
|
|
bodyLoopPat = BPAT_CONCARTELEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-4, -2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONCARTERIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_CONCARTERIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONRICETTASTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-61, -7);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONRICETTALEFT_START;
|
|
|
|
bodyLoopPat = BPAT_CONRICETTALEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-5, -7);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONRICETTARIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_CONRICETTARIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONPUPAZZOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-35, 2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONPUPAZZOLEFT_START;
|
|
|
|
bodyLoopPat = BPAT_CONPUPAZZOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-14, 2);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONPUPAZZORIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_CONPUPAZZORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONTACCUINOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-16, -9);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONTACCUINOLEFT_START;
|
|
|
|
bodyLoopPat = BPAT_CONTACCUINOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-6, -9);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONTACCUINORIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_CONTACCUINORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONMEGAFONOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-41, -8);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONMEGAFONOLEFT_START;
|
|
|
|
bodyLoopPat = BPAT_CONMEGAFONOLEFT_LOOP;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-14, -8);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONMEGAFONORIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_CONMEGAFONORIGHT_LOOP;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONBARBASTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-41, -14);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONBARBALEFT_START;
|
|
|
|
bodyLoopPat = BPAT_STANDLEFT;
|
|
|
|
headLoopPat = PAT_TALKBARBA_LEFT;
|
|
|
|
headPat = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(-26, -14);
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyStartPat = BPAT_CONBARBARIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_STANDRIGHT;
|
|
|
|
headLoopPat = PAT_TALKBARBA_RIGHT;
|
|
|
|
headPat = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case DOWN:
|
|
|
|
headPat = PAT_SPAVENTODOWN_START;
|
|
|
|
bodyLoopPat = BPAT_STANDDOWN;
|
|
|
|
bodyStartPat = BPAT_STANDDOWN;
|
|
|
|
headLoopPat = PAT_SPAVENTODOWN_STAND;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(4, 53);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case LEFT:
|
|
|
|
headPat = PAT_SPAVENTOLEFT_START;
|
|
|
|
bodyLoopPat = BPAT_STANDLEFT;
|
|
|
|
bodyStartPat = BPAT_STANDLEFT;
|
|
|
|
headLoopPat = PAT_SPAVENTOLEFT_STAND;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
headPat = PAT_SPAVENTORIGHT_START;
|
|
|
|
bodyLoopPat = BPAT_STANDRIGHT;
|
|
|
|
bodyStartPat = BPAT_STANDRIGHT;
|
|
|
|
headLoopPat = PAT_SPAVENTORIGHT_STAND;
|
2012-06-07 06:42:35 +00:00
|
|
|
_nBodyOffset.set(6, 56);
|
2012-05-01 13:44:02 +00:00
|
|
|
break;
|
2012-05-04 12:58:42 +00:00
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
2012-05-04 12:28:51 +00:00
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
2012-05-07 22:25:33 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::startStatic(CORO_PARAM, TALKTYPE nTalk) {
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
2012-05-21 21:53:13 +00:00
|
|
|
int headPat, headLoopPat;
|
|
|
|
int bodyStartPat, bodyLoopPat;
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_END_CONTEXT(_ctx);
|
|
|
|
|
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
|
|
|
_ctx->headPat = _ctx->headLoopPat = 0;
|
|
|
|
_ctx->bodyStartPat = _ctx->bodyLoopPat = 0;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
// e vai con i pattern
|
2012-06-07 05:58:01 +00:00
|
|
|
_bIsStaticTalk = true;
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headPat);
|
|
|
|
_body.setPattern(_ctx->bodyStartPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
|
|
|
CORO_INVOKE_0(waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-05-07 22:25:33 +00:00
|
|
|
if (_ctx->headLoopPat != -1)
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headLoopPat);
|
|
|
|
_body.setPattern(_ctx->bodyLoopPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_END_CODE;
|
|
|
|
}
|
2012-05-01 13:44:02 +00:00
|
|
|
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::endStaticCalculate(TALKTYPE nTalk, int &bodyEndPat, int &finalPat, int &headEndPat) {
|
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
finalPat = PAT_STANDLEFT;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
case DOWN:
|
|
|
|
finalPat = PAT_STANDRIGHT;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (nTalk) {
|
|
|
|
case TALK_CONPUPAZZOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-21 21:53:13 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
2012-05-01 13:44:02 +00:00
|
|
|
bodyEndPat = BPAT_CONPUPAZZOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
bodyEndPat = BPAT_CONPUPAZZORIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONRICETTASTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
bodyEndPat = BPAT_CONRICETTALEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
bodyEndPat = BPAT_CONRICETTARIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONCONIGLIOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
bodyEndPat = BPAT_CONCONIGLIOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
bodyEndPat = BPAT_CONCONIGLIORIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-05-01 13:44:02 +00:00
|
|
|
case TALK_CONCARTESTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
bodyEndPat = BPAT_CONCARTELEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
bodyEndPat = BPAT_CONCARTERIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONTACCUINOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
bodyEndPat = BPAT_CONTACCUINOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
bodyEndPat = BPAT_CONTACCUINORIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONMEGAFONOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
bodyEndPat = BPAT_CONMEGAFONOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
bodyEndPat = BPAT_CONMEGAFONORIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_CONBARBASTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case UP:
|
|
|
|
case LEFT:
|
|
|
|
bodyEndPat = BPAT_CONBARBALEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
case RIGHT:
|
|
|
|
bodyEndPat = BPAT_CONBARBARIGHT_END;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TALK_SPAVENTATOSTATIC:
|
2012-06-07 05:58:01 +00:00
|
|
|
switch (_TalkDirection) {
|
2012-05-01 13:44:02 +00:00
|
|
|
case LEFT:
|
|
|
|
headEndPat = PAT_SPAVENTOLEFT_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case DOWN:
|
|
|
|
headEndPat = PAT_SPAVENTODOWN_END;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RIGHT:
|
|
|
|
headEndPat = PAT_SPAVENTORIGHT_END;
|
|
|
|
break;
|
2012-05-04 12:28:51 +00:00
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
break;
|
2012-05-04 12:28:51 +00:00
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
2012-05-07 22:25:33 +00:00
|
|
|
}
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
void RMTony::endStatic(CORO_PARAM, TALKTYPE nTalk) {
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_BEGIN_CONTEXT;
|
2012-05-21 21:53:13 +00:00
|
|
|
int bodyEndPat;
|
|
|
|
int finalPat;
|
|
|
|
int headEndPat;
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_END_CONTEXT(_ctx);
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-05-07 22:25:33 +00:00
|
|
|
CORO_BEGIN_CODE(_ctx);
|
|
|
|
|
|
|
|
_ctx->bodyEndPat = 0;
|
|
|
|
_ctx->finalPat = 0;
|
|
|
|
_ctx->headEndPat = 0;
|
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
endStaticCalculate(nTalk, _ctx->bodyEndPat, _ctx->finalPat, _ctx->headEndPat);
|
2012-05-07 22:25:33 +00:00
|
|
|
|
|
|
|
if (_ctx->headEndPat != 0) {
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->headEndPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
} else {
|
|
|
|
// Play please
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
_body.setPattern(_ctx->bodyEndPat);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-01 13:44:02 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
CORO_INVOKE_0(_body.waitForEndPattern);
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
2012-06-04 23:15:25 +00:00
|
|
|
mainFreeze();
|
2012-06-07 05:58:01 +00:00
|
|
|
setPattern(_ctx->finalPat);
|
|
|
|
_body.setPattern(0);
|
2012-06-04 23:15:25 +00:00
|
|
|
mainUnfreeze();
|
2012-05-21 21:53:13 +00:00
|
|
|
|
2012-06-07 05:58:01 +00:00
|
|
|
_bIsStaticTalk = false;
|
2012-05-07 22:25:33 +00:00
|
|
|
|
|
|
|
CORO_END_CODE;
|
2012-05-01 13:44:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
} // End of namespace Tony
|