diff options
author | johndoe123 | 2014-04-11 09:40:54 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | 2e149cf651ee9344ee96ea904c5dce5a444aeaff (patch) | |
tree | 5fb2c760d303a4db0856cbc4de7c94609d8b4238 /engines/illusions/cursor_duckman.cpp | |
parent | 67366aa04b723fadec300cc6ce1d5c6ee9241af7 (diff) | |
download | scummvm-rg350-2e149cf651ee9344ee96ea904c5dce5a444aeaff.tar.gz scummvm-rg350-2e149cf651ee9344ee96ea904c5dce5a444aeaff.tar.bz2 scummvm-rg350-2e149cf651ee9344ee96ea904c5dce5a444aeaff.zip |
ILLUSIONS: More work on Duckman
- Implement Duckman cursor and interaction handling
- Add more script opcodes
- Add TextDrawer and ScreenText (needs minor refactoring for BBDOU)
Diffstat (limited to 'engines/illusions/cursor_duckman.cpp')
-rw-r--r-- | engines/illusions/cursor_duckman.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/engines/illusions/cursor_duckman.cpp b/engines/illusions/cursor_duckman.cpp new file mode 100644 index 0000000000..d23c9ee02c --- /dev/null +++ b/engines/illusions/cursor_duckman.cpp @@ -0,0 +1,82 @@ +/* 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. + * + */ + +#include "illusions/illusions_duckman.h" +#include "illusions/actor.h" +#include "illusions/cursor_duckman.h" +#include "illusions/input.h" + +namespace Illusions { + +Cursor_Duckman::Cursor_Duckman(IllusionsEngine_Duckman *vm) + : _vm(vm) { + _status = 1; + _control = 0; + _x = 320; + _y = 240; + _cursorNum = 1; + _field_10 = 0; + _sequenceId = 0; +} + +void Cursor_Duckman::place(Control *control, uint32 sequenceId) { + _status = 2; + _control = control; + _cursorNum = 1; + _field_10 = 0; + _sequenceId = sequenceId; + _visibleCtr = 0; + _control->_flags |= 8; + setActorIndex(_cursorNum, 1, 0); + _vm->_input->setCursorPosition(_control->_actor->_position); +} + +void Cursor_Duckman::setActorIndex(int a2, int a3, int a4) { + _control->_actor->_actorIndex = 1;// TODO?!? *((_BYTE *)&stru_42C040[30].y + 2 * ((always0 != 0) + 2 * a2) + a3 + 1); +} + +void Cursor_Duckman::setControl(Control *control) { + _control = control; +} + +void Cursor_Duckman::show() { + ++_visibleCtr; + if (_visibleCtr > 0) { + _control->_flags |= 1; + _control->_actor->_flags |= 1; + if (_control->_actor->_frameIndex) { + _control->_actor->_flags |= 0x2000; + _control->_actor->_flags |= 0x4000; + } + _vm->_input->discardButtons(0xFFFF); + } +} + +void Cursor_Duckman::hide() { + --_visibleCtr; + if (_visibleCtr <= 0) { + _control->_flags &= ~1; + _control->_actor->_flags &= ~1; + } +} + +} // End of namespace Illusions |