Rotate miner south west to enter processor

art2432 processor faces more towards the south west compared to the art824 processor which faced basically south. The coordinates used for the fakeMiner animation have been modified to compensate for this and the miner now rotates to the south west before entering.
This commit is contained in:
Nathan Fulton 2017-04-29 23:04:07 -04:00
parent d64d09c1ad
commit 489399dfb4
2 changed files with 14 additions and 11 deletions

View File

@ -465,7 +465,7 @@ BeginStateMachine
// closest to the Processor's entrance.
pgobTarget->GetPosition(&m_wptTarget);
m_wptTarget.wx += kwcTile + kwcTileHalf;
m_wptTarget.wx += kwcTileHalf;
m_wptTarget.wy += (kwcTile * 2) + kwcTileHalf;
SetState(kstMinerMoveToProcessor);
} else {
@ -540,14 +540,14 @@ BeginStateMachine
OnUpdate
m_unvl.MinSkip();
// Rotate to face south
// Rotate to face south west
if (m_dir != kdir16S) {
m_dir = TurnToward16(kdir16S, m_dir);
if (m_dir != kdir16SW) {
m_dir = TurnToward16(kdir16SW, m_dir);
StartAnimation(&m_ani, m_pmuntc->anMovingStripIndices[m_dir], 0, kfAniLoop | kfAniIgnoreFirstAdvance);
} else {
// When facing south send message to Processor and switch to
// When facing south west send message to Processor and switch to
// guard state
Gob *pgobProcessor = ggobm.GetGob(m_gidTarget);

View File

@ -322,7 +322,7 @@ BeginStateMachine
Assert(pmnr != NULL, "out of memory!");
if (pmnr == NULL)
goto lbError;
if (!pmnr->Init(m_wx + kwcTile, m_wy + (kwcTile * 2), m_pplr, 0, 0, NULL)) {
if (!pmnr->Init(m_wx, m_wy + (kwcTile * 2), m_pplr, 0, 0, NULL)) {
delete pmnr;
goto lbError;
}
@ -337,6 +337,7 @@ BeginStateMachine
m_gidMiner = pmnr->GetId();
pmnr->GetCenter(&m_wptFakeMiner);
m_wptFakeMiner.wy = m_wy + WcFromTile16ths(15);
m_wptFakeMiner.wx = m_wx + WcFromTile16ths(27);
pmnr->Hide(true);
// Set / clear reservation / occupation bits
@ -366,7 +367,7 @@ lbError:
// We twiddle these flags on kmidGalaxiteDelivery and kstPutMiner
Assert(m_pstruc->ctx == 3 && m_pstruc->cty == 2);
gsim.GetLevel()->GetTerrainMap()->SetFlags(TcFromWc(m_wx) + 1,
gsim.GetLevel()->GetTerrainMap()->SetFlags(TcFromWc(m_wx),
TcFromWc(m_wy) + m_pstruc->cty, 1, 1, kbfStructure);
return StructGob::ProcessStateMachineMessage(st, pmsg);
@ -401,8 +402,9 @@ lbError:
}
}
if (m_wptFakeMiner.wy > m_wy + WcFromTile16ths(15)) {
if (m_wptFakeMiner.wy > m_wy + WcFromTile16ths(19)) {
m_wptFakeMiner.wy -= kwcTile16th;
m_wptFakeMiner.wx += kwcTile / 21;
MarkRedraw();
} else {
SetState(kstProcessorTakeGalaxite);
@ -516,8 +518,9 @@ lbError:
}
if (m_wptFakeMiner.wy < wptDst.wy) {
m_wptFakeMiner.wy += kwcTile16th;
MarkRedraw();
m_wptFakeMiner.wy += kwcTile16th;
m_wptFakeMiner.wx -= kwcTile / 21;
MarkRedraw();
} else {
SetState(kstIdle);
}
@ -555,7 +558,7 @@ lbError:
// We don't need to check anything, just clearing it is safe.
Assert(m_pstruc->ctx == 3 && m_pstruc->cty == 2);
gsim.GetLevel()->GetTerrainMap()->ClearFlags(TcFromWc(m_wx) + 1,
gsim.GetLevel()->GetTerrainMap()->ClearFlags(TcFromWc(m_wx),
TcFromWc(m_wy) + m_pstruc->cty, 1, 1, kbfStructure);
int nHandled = StructGob::ProcessStateMachineMessage(st, pmsg);