diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2021-01-23 00:36:13 +0100 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2021-01-23 00:36:13 +0100 |
commit | 917cf44defae5d304f590c8754e448b875d56357 (patch) | |
tree | a4efb80b549ef19089d70c2634b7ab07172b7588 /src/control/Script8.cpp | |
parent | fix (diff) | |
download | re3-917cf44defae5d304f590c8754e448b875d56357.tar re3-917cf44defae5d304f590c8754e448b875d56357.tar.gz re3-917cf44defae5d304f590c8754e448b875d56357.tar.bz2 re3-917cf44defae5d304f590c8754e448b875d56357.tar.lz re3-917cf44defae5d304f590c8754e448b875d56357.tar.xz re3-917cf44defae5d304f590c8754e448b875d56357.tar.zst re3-917cf44defae5d304f590c8754e448b875d56357.zip |
Diffstat (limited to 'src/control/Script8.cpp')
-rw-r--r-- | src/control/Script8.cpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/control/Script8.cpp b/src/control/Script8.cpp index 55a56b2f..53e39b68 100644 --- a/src/control/Script8.cpp +++ b/src/control/Script8.cpp @@ -601,19 +601,36 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command) case COMMAND_CREATE_SCRIPT_CORONA: { CollectParameters(&m_nIp, 9); - static bool bShowed = false; - if (!bShowed) { - debug("CREATE_SCRIPT_CORONA not implemented"); - bShowed = true; - } - SET_INTEGER_PARAM(0, -1); + base::cSList<script_corona>::tSItem* pCorona = new base::cSList<script_corona>::tSItem(); + pCorona->item.x = GET_FLOAT_PARAM(0); + pCorona->item.y = GET_FLOAT_PARAM(1); + pCorona->item.z = GET_FLOAT_PARAM(2); + pCorona->item.id = CTheScripts::NextScriptCoronaID++; + if (pCorona->item.z <= MAP_Z_LOW_LIMIT) + pCorona->item.z = CWorld::FindGroundZForCoord(pCorona->item.x, pCorona->item.y); + pCorona->item.size = GET_FLOAT_PARAM(3); + pCorona->item.r = GET_INTEGER_PARAM(6); + pCorona->item.g = GET_INTEGER_PARAM(7); + pCorona->item.b = GET_INTEGER_PARAM(8); + pCorona->item.type = GET_INTEGER_PARAM(4); + pCorona->item.flareType = GET_INTEGER_PARAM(5); + SET_INTEGER_PARAM(0, pCorona->item.id); + CTheScripts::mCoronas.Insert(pCorona); StoreParameters(&m_nIp, 1); return 0; } case COMMAND_REMOVE_SCRIPT_CORONA: + { CollectParameters(&m_nIp, 1); - // TODO + for (base::cSList<script_corona>::tSItem* i = CTheScripts::mCoronas.first; i; i = i->next) { + if (i->item.id == GET_INTEGER_PARAM(0)) { + CTheScripts::mCoronas.Remove(i); + delete i; + break; + } + } return 0; + } case COMMAND_IS_BOAT_IN_WATER: { CollectParameters(&m_nIp, 1); |