diff options
author | Eugene Sandulenko | 2014-05-12 05:14:39 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2014-05-12 05:14:39 +0300 |
commit | 3d81dd0a14d16dab0967ca57e8039c5285048518 (patch) | |
tree | 340d4f69d4f08be2076810c60e9fb42e6b289a71 /engines | |
parent | 81a863be5c2f50430f44ebd5bce2b43632f7515f (diff) | |
download | scummvm-rg350-3d81dd0a14d16dab0967ca57e8039c5285048518.tar.gz scummvm-rg350-3d81dd0a14d16dab0967ca57e8039c5285048518.tar.bz2 scummvm-rg350-3d81dd0a14d16dab0967ca57e8039c5285048518.zip |
FULLPIPE: More work on MovGraph::doWalkTo()
Diffstat (limited to 'engines')
-rw-r--r-- | engines/fullpipe/motion.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index 58d5055076..5137434a06 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -684,9 +684,11 @@ MessageQueue *MovGraph::doWalkTo(StaticANIObject *subj, int xpos, int ypos, int _items[idx]->movarr.clear(); - memcpy(_items[idx]->movarr, _items[idx]->items[arridx].movarr, 0x20u); - _items[idx]->movarr = (MovArr *)operator new(8 * _items[idx]->items[arridx].movarr->_movStepCount); - memcpy(_items[idx]->movarr, _items[idx]->items[arridx].movarr, 8 * _items[idx]->items[arridx].movarr->_movStepCount); + for (uint i = 0; i < _items[idx]->items[arridx].movarr->_movStepCount; i++) { + MovArr *m = new MovArr; + + *m = *_items[idx]->items[arridx].movarr[i]; + } _items[idx]->field_10 = -1; _items[idx]->field_14 = 0; @@ -1003,12 +1005,7 @@ bool MovGraph::calcChunk(int idx, int x, int y, MovArr *arr, int a6) { } if (idxmin != -1) { - arr->_afield_0 = (*movarr)[idxmin]->_afield_0; - arr->_afield_4 = (*movarr)[idxmin]->_afield_4; - arr->_afield_8 = (*movarr)[idxmin]->_afield_8; - arr->_link = (*movarr)[idxmin]->_link; - arr->_dist = (*movarr)[idxmin]->_dist; - arr->_point = (*movarr)[idxmin]->_point; + *arr = *(*movarr)[idxmin]; res = true; } |