// I don't like my while loop method for doing this, but it works for now. // should use an event, basically use the waitforsingleobject as the 'while loop' bool DMWorker::WaitForUnPaused() { while (IsPaused() && !IsStopping()) { Sleep(1); } if (IsStopping()) return false; else return true; }
void CDMDialog::DoWork() { if (!workmtx.try_lock()) return; boost::lock_guard<boost::mutex> lock(workmtx, boost::adopt_lock_t()); while (!IsStopping()) { if (!buildermtx.try_lock()) return; //boost::lock_guard<boost::mutex> lockb(buildermtx, boost::adopt_lock_t()); std::list<boost::shared_ptr<StackBuilder>>::iterator it = builders.begin(); while (it != builders.end()) { boost::shared_ptr<StackBuilder> currentbuilder = *it; // crash here on closing DM (in debug mode) bool isopen = currentbuilder->IsImageOpen(); unsigned long id = currentbuilder->GetImageID(); if (isopen) ++it; else { //erase from list control removeListID(id); // erase from list it = builders.erase(it); } } buildermtx.unlock(); // spam this!! //DMresult << "Number watched: " << builders.size() << DMendl; Sleep(100); } }
void Game_Character::MoveTypeCycleLeftRight() { if (IsStopping()) { cycle_stat ? MoveLeft() : MoveRight(); cycle_stat = move_failed ? !cycle_stat : cycle_stat; } }
int MousePs2::Run() { if(FILE* fmouse = fopen(mDev, "wb+")) { Disable(fmouse); InitModeIm(fmouse); Enable(fmouse); MouseData data; while(!IsStopping()) { // Read data data.ReadIm(fmouse); // Process data x += data.deltaX; y += data.deltaY; z += data.deltaZ; LOG(mLog, "X: " << x << " Y: " << y << " Z: " << z); LOG(mLog, "L: " << data.btnL << " M: " << data.btnL << " R: " << data.btnR); LOG(mLog, "4: " << data.btn4 << " 5: " << data.btn5); //LOG(mLog, "sX: " << data.signX << " sY: " << data.signY); //LOG(mLog, "oX: " << data.overflowX << " oY: " << data.overflowY); } fclose(fmouse); } return 0; }
void Game_Character::MoveTypeCycleUpDown() { if (IsStopping()) { cycle_stat ? MoveUp() : MoveDown(); cycle_stat = move_failed ? !cycle_stat : cycle_stat; } }
void CEodLoadFutOptClosePriceFromPp::OnLastQuote(EODPP::CPpPriceRequestKey* pReq, struct PP::QuoteUpdateInfo* pResult) { if(IsStopping()) return; Trace(EODCO::enTrLogDebug,__FUNCTION__,_T("%s"), pReq->m_sSymbol); EODMS::CMsFutureOptionCollPtr spOptColl(m_spIndexCurr->FutureOptionWithPos()); ATLASSERT(spOptColl); EODMS::CMsFutureOptionPtr spOpt(GetCollectionItem<EODMS::CMsFutureOptionPtr>(spOptColl, pReq->m_sSymbol)); if(spOpt) { if(!EODCO::IsBadValue(pResult->ClosePrice)) { try { CStoredProc<> spPriceSave(m_spDB, L"usp_EodOptClosePrice_Save"); spPriceSave << spOpt->m_nID; spPriceSave << pResult->ClosePrice; spPriceSave.Execute(); spOpt->m_dPriceClose = pResult->ClosePrice; m_spIndexCurr->m_nFutOptClosePriceUpdated++; } catch (exception& e) { Trace(EODCO::enTrLogError,__FUNCTION__,_T("Exception in usp_EodOptClosePrice_Save : %s, %s"), typeid(e).name(), e.what()); } } else Trace(EODCO::enTrLogDebug,__FUNCTION__,_T("'%s' future option of '%s' index has no close price on Price Provider"), spOpt->m_sSymbol, m_spIndexCurr->m_sSymbol); } }
void Game_Event::UpdateSelfMovement() { if (running) return; if (!Game_Message::GetContinueEvents() && Game_Map::GetInterpreter().IsRunning()) return; if (!IsStopping()) return; switch (move_type) { case RPG::EventPage::MoveType_random: MoveTypeRandom(); break; case RPG::EventPage::MoveType_vertical: MoveTypeCycleUpDown(); break; case RPG::EventPage::MoveType_horizontal: MoveTypeCycleLeftRight(); break; case RPG::EventPage::MoveType_toward: MoveTypeTowardsPlayer(); break; case RPG::EventPage::MoveType_away: MoveTypeAwayFromPlayer(); break; case RPG::EventPage::MoveType_custom: MoveTypeCustom(); break; } }
void CEodLoadFutOptClosePriceFromPp::OnLastQuoteError( PP::ErrorNumberEnum enErrorNumber, BSTR bsDescription, EODPP::CPpPriceRequestKey* pReq ) { if(IsStopping()) return; Trace(EODCO::enTrLogError,__FUNCTION__,(LPCTSTR)_bstr_t(bsDescription)); Report(StepMask(), enRpMtWarning, _T("Future option close price uploading error %d - %s for '%s'"), enErrorNumber, (LPCTSTR)_bstr_t(bsDescription), pReq->m_sSymbol); }
void CEodLoadFutOptClosePriceFromPp::OnDisconnect( PP::ErrorNumberEnum enErrorNumber, BSTR bsDescription ) { if(IsStopping()) return; Trace(EODCO::enTrLogError,__FUNCTION__,(LPCTSTR)_bstr_t(bsDescription)); Report(StepMask(), enRpMtError, _T("Disconnect from Price provider: %d %s"),enErrorNumber, (LPCTSTR)_bstr_t(bsDescription)); SetEvent(m_hDisconnect); }
void Game_Character::Update() { if (IsJumping()) { UpdateJump(); if (IsSpinning()) anime_count++; } else if (IsMoving()) { remaining_step -= 1 << (1 + GetMoveSpeed()); if (IsSpinning() || (animation_type != RPG::EventPage::AnimType_fixed_graphic && walk_animation)) anime_count++; } else { stop_count++; if (IsSpinning() || IsContinuous() || pattern != original_pattern) anime_count++; } if (anime_count >= GetSteppingSpeed()) { if (IsSpinning()) { SetSpriteDirection((GetSpriteDirection() + 1) % 4); } else if (!IsContinuous() && IsStopping()) { pattern = original_pattern; last_pattern = last_pattern == RPG::EventPage::Frame_left ? RPG::EventPage::Frame_right : RPG::EventPage::Frame_left; } else { if (last_pattern == RPG::EventPage::Frame_left) { if (pattern == RPG::EventPage::Frame_right) { pattern = RPG::EventPage::Frame_middle; last_pattern = RPG::EventPage::Frame_right; } else { pattern = RPG::EventPage::Frame_right; } } else { if (pattern == RPG::EventPage::Frame_left) { pattern = RPG::EventPage::Frame_middle; last_pattern = RPG::EventPage::Frame_left; } else { pattern = RPG::EventPage::Frame_left; } } } anime_count = 0; } if (wait_count > 0) { wait_count -= 1; return; } if (stop_count >= max_stop_count) { if (IsMoveRouteOverwritten()) { MoveTypeCustom(); } else { // Only events UpdateSelfMovement(); } } }
void Game_Character::Update() { if (IsJumping()) { UpdateJump(); anime_count += (IsSpinning() ? 1.0 : 0); } else if (IsContinuous() || IsSpinning()) { UpdateMove(); UpdateStop(); } else { if (IsMoving()) { UpdateMove(); } else { UpdateStop(); } } if (anime_count > 36.0/(GetMoveSpeed()+1)) { if (IsSpinning()) { SetPrelockDirection((GetPrelockDirection() + 1) % 4); } else if (!IsContinuous() && IsStopping()) { pattern = original_pattern; last_pattern = last_pattern == RPG::EventPage::Frame_left ? RPG::EventPage::Frame_right : RPG::EventPage::Frame_left; } else { if (last_pattern == RPG::EventPage::Frame_left) { if (pattern == RPG::EventPage::Frame_right) { pattern = RPG::EventPage::Frame_middle; last_pattern = RPG::EventPage::Frame_right; } else { pattern = RPG::EventPage::Frame_right; } } else { if (pattern == RPG::EventPage::Frame_left) { pattern = RPG::EventPage::Frame_middle; last_pattern = RPG::EventPage::Frame_left; } else { pattern = RPG::EventPage::Frame_left; } } } anime_count = 0; } if (wait_count > 0) { wait_count -= 1; return; } if (stop_count >= ((GetMoveFrequency() > 7) ? 0 : pow(2.0, 9 - GetMoveFrequency()))) { if (IsMoveRouteOverwritten()) { MoveTypeCustom(); } else if (Game_Message::GetContinueEvents() || !Game_Message::message_waiting) { UpdateSelfMovement(); } } }
void Game_Character::MoveTypeCycleLeftRight() { if (IsStopping()) { cycle_stat ? MoveLeft() : MoveRight(); if (move_failed) { Wait(); stop_count = 0; // TODO: After waiting, try once more in the same direction cycle_stat = move_failed ? !cycle_stat : cycle_stat; } } }
void Game_Character::MoveTypeCycleUpDown() { if (IsStopping()) { cycle_stat ? MoveUp() : MoveDown(); if (move_failed) { Wait(); stop_count = 0; // TODO: After waiting, try once more in the same direction cycle_stat = !cycle_stat; } } }
void CEodLoadFutOptClosePriceFromPp::OnLastQuoteDone() { if(IsStopping()) return; m_itNextIndex++; _IncrementImportFuturesProgress(); if(m_spIndexCurr->m_nFutOptClosePriceUpdated != m_spIndexCurr->FutureOptionWithPos()->size()) Report(StepMask(),enRpMtMessage, _T("Can't upload all futures options close prices for %s index from Price Provider"), m_spIndexCurr->m_sSymbol); SetEvent(m_hIndexReceived); }
void Game_Character::MoveTypeRandom() { if (IsStopping()) { switch (rand() % 6) { case 0: stop_count = 0; break; case 1: case 2: MoveRandom(); break; default: MoveForward(); } } }
void CEodStepLoadIvBands::OnIvData(EODIV::CIvIvBandsResultPtr pResult) { if(_IsCancel() || IsStopping()) throw EODCO::CEodStopException(); Trace(EODCO::enTrLogDebug,__FUNCTION__,_T("Start")); EODMS::CMsUndCollPtr spUndColl = m_Request.Und(); ATLASSERT(spUndColl); EODMS::CMsUndPtr spUnd(GetCollectionItem<EODMS::CMsUndPtr>(spUndColl, pResult->m_strUndSymbol)); ATLASSERT(spUnd); if(spUnd) { if(!EODCO::IsBadValue(pResult->m_dIVBandHigh) && !EODCO::IsBadValue(pResult->m_dIVBandLow)) { CString sExecQuery; sExecQuery.Format(_T("exec usp_EodVolaBands_Save %d,%d,%f,%f,%f;"),spUnd->m_nID,pResult->m_nExpPeriod, (100. + static_cast<double>(pResult->m_nStrikeMoneyness)) / 100. , pResult->m_dIVBandLow, pResult->m_dIVBandHigh); m_nUndInQuery++; m_sQueryBuffer += sExecQuery; if(m_nUndInQuery >= 200L) _SaveBuffer(); } size_t nAllUnd = spUndColl->size(); size_t nProgress = 100 * m_Request.UndSend() / nAllUnd; if(m_nProgress != nProgress) { m_nProgress = nProgress; Report(StepMask(),enRpMtProgress, _T("%d"), m_nProgress); CEodServer::s_pEodServer->StepsMgr()->IncProgress(); } } Trace(EODCO::enTrLogDebug,__FUNCTION__,_T("Completed")); }
void Game_Character::UpdateSprite() { if (IsJumping()) { UpdateJump(); if (IsSpinning()) anime_count++; } else if (IsMoving()) { remaining_step -= min(1 << (1 + GetMoveSpeed()), remaining_step); if (IsSpinning() || (animation_type != RPG::EventPage::AnimType_fixed_graphic && walk_animation)) anime_count++; } else { stop_count++; if ((walk_animation && (IsSpinning() || IsContinuous())) || pattern != original_pattern) anime_count++; } if (anime_count >= GetSteppingSpeed()) { if (IsSpinning()) { SetSpriteDirection((GetSpriteDirection() + 1) % 4); } else if (!IsContinuous() && IsStopping()) { pattern = original_pattern; last_pattern = last_pattern == RPG::EventPage::Frame_left ? RPG::EventPage::Frame_right : RPG::EventPage::Frame_left; } else { if (last_pattern == RPG::EventPage::Frame_left) { if (pattern == RPG::EventPage::Frame_right) { pattern = RPG::EventPage::Frame_middle; last_pattern = RPG::EventPage::Frame_right; } else { pattern = RPG::EventPage::Frame_right; } } else { if (pattern == RPG::EventPage::Frame_left) { pattern = RPG::EventPage::Frame_middle; last_pattern = RPG::EventPage::Frame_left; } else { pattern = RPG::EventPage::Frame_left; } } } anime_count = 0; } }
void Game_Character::MoveTypeAwayFromPlayer() { if (IsStopping()) { int sx = x - Main_Data::game_player->GetX(); int sy = y - Main_Data::game_player->GetY(); if ( std::abs(sx) + std::abs(sy) >= 20 ) { MoveRandom(); } else { switch (rand() % 6) { case 0: MoveRandom(); break; case 1: MoveForward(); break; default: MoveAwayFromPlayer(); } } } }
void Game_Vehicle::Update(bool process_movement) { if (!process_movement) { return; } if (IsAboard()) { SyncWithPlayer(); } else { Game_Character::UpdateMovement(); } if (type == Airship) { if (IsStopping()) { if (IsAscending()) { data()->remaining_ascent = data()->remaining_ascent - 8; } else if (IsDescending()) { data()->remaining_descent = data()->remaining_descent - 8; if (!IsDescending()) { if (CanLand()) { Main_Data::game_player->UnboardingFinished(); SetFlying(false); Main_Data::game_player->SetFlying(false); } else { // Can't land here, ascend again data()->remaining_ascent = SCREEN_TILE_SIZE; } } } } } if (type == Airship) { UpdateAnimationAirship(); } else { UpdateAnimationShip(); } }
void Game_Character::MoveTypeCustom() { // Detect if custom movement or event overwrite const RPG::MoveRoute* active_route; int active_route_index; bool overwrite_changed = IsMoveRouteOverwritten(); if (IsMoveRouteOverwritten()) { active_route = &GetMoveRoute(); active_route_index = GetMoveRouteIndex(); } else { active_route = &original_move_route; active_route_index = GetOriginalMoveRouteIndex(); } if (IsStopping()) { move_failed = false; if ((size_t)active_route_index >= active_route->move_commands.size()) { // End of Move list if (active_route->repeat) { active_route_index = 0; SetMoveRouteRepeated(true); } else if (IsMoveRouteOverwritten()) { SetMoveRouteOverwritten(false); EndMoveRoute(); stop_count = 0; } } else { do { const RPG::MoveCommand& move_command = active_route->move_commands[active_route_index]; int command_id = move_command.command_id; if (!jumping && command_id == RPG::MoveCommand::Code::begin_jump) { active_route_index = BeginJump(active_route, active_route_index); } switch (move_command.command_id) { case RPG::MoveCommand::Code::move_up: MoveUp(); break; case RPG::MoveCommand::Code::move_right: MoveRight(); break; case RPG::MoveCommand::Code::move_down: MoveDown(); break; case RPG::MoveCommand::Code::move_left: MoveLeft(); break; case RPG::MoveCommand::Code::move_upright: MoveUpRight(); break; case RPG::MoveCommand::Code::move_downright: MoveDownRight(); break; case RPG::MoveCommand::Code::move_downleft: MoveDownLeft(); break; case RPG::MoveCommand::Code::move_upleft: MoveUpLeft(); break; case RPG::MoveCommand::Code::move_random: MoveRandom(); break; case RPG::MoveCommand::Code::move_towards_hero: MoveTowardsPlayer(); break; case RPG::MoveCommand::Code::move_away_from_hero: MoveAwayFromPlayer(); break; case RPG::MoveCommand::Code::move_forward: MoveForward(); break; case RPG::MoveCommand::Code::face_up: TurnUp(); break; case RPG::MoveCommand::Code::face_right: TurnRight(); break; case RPG::MoveCommand::Code::face_down: TurnDown(); break; case RPG::MoveCommand::Code::face_left: TurnLeft(); break; case RPG::MoveCommand::Code::turn_90_degree_right: Turn90DegreeRight(); break; case RPG::MoveCommand::Code::turn_90_degree_left: Turn90DegreeLeft(); break; case RPG::MoveCommand::Code::turn_180_degree: Turn180Degree(); break; case RPG::MoveCommand::Code::turn_90_degree_random: Turn90DegreeLeftOrRight(); break; case RPG::MoveCommand::Code::face_random_direction: FaceRandomDirection(); break; case RPG::MoveCommand::Code::face_hero: TurnTowardHero(); break; case RPG::MoveCommand::Code::face_away_from_hero: TurnAwayFromHero(); break; case RPG::MoveCommand::Code::wait: Wait(); break; case RPG::MoveCommand::Code::begin_jump: // Multiple BeginJumps are ignored break; case RPG::MoveCommand::Code::end_jump: active_route_index = EndJump(active_route, active_route_index); break; case RPG::MoveCommand::Code::lock_facing: SetFacingLocked(true); break; case RPG::MoveCommand::Code::unlock_facing: SetFacingLocked(false); break; case RPG::MoveCommand::Code::increase_movement_speed: SetMoveSpeed(min(GetMoveSpeed() + 1, 6)); break; case RPG::MoveCommand::Code::decrease_movement_speed: SetMoveSpeed(max(GetMoveSpeed() - 1, 1)); break; case RPG::MoveCommand::Code::increase_movement_frequence: SetMoveFrequency(min(GetMoveFrequency() + 1, 8)); break; case RPG::MoveCommand::Code::decrease_movement_frequence: SetMoveFrequency(max(GetMoveFrequency() - 1, 1)); break; case RPG::MoveCommand::Code::switch_on: // Parameter A: Switch to turn on Game_Switches[move_command.parameter_a] = true; Game_Map::SetNeedRefresh(true); break; case RPG::MoveCommand::Code::switch_off: // Parameter A: Switch to turn off Game_Switches[move_command.parameter_a] = false; Game_Map::SetNeedRefresh(true); break; case RPG::MoveCommand::Code::change_graphic: // String: File, Parameter A: index SetGraphic(move_command.parameter_string, move_command.parameter_a); break; case RPG::MoveCommand::Code::play_sound_effect: // String: File, Parameters: Volume, Tempo, Balance if (move_command.parameter_string != "(OFF)") { Audio().SE_Play(move_command.parameter_string, move_command.parameter_a, move_command.parameter_b); } break; case RPG::MoveCommand::Code::walk_everywhere_on: through = true; break; case RPG::MoveCommand::Code::walk_everywhere_off: through = false; break; case RPG::MoveCommand::Code::stop_animation: walk_animation = false; break; case RPG::MoveCommand::Code::start_animation: walk_animation = true; break; case RPG::MoveCommand::Code::increase_transp: SetOpacity(max(40, GetOpacity() - 45)); break; case RPG::MoveCommand::Code::decrease_transp: SetOpacity(GetOpacity() + 45); break; } if (active_route->skippable || !move_failed) { ++active_route_index; } } while (jumping); if ((size_t)active_route_index >= active_route->move_commands.size()) { stop_count = (active_route->repeat ? 0 : 256); } } } // When the overwrite status changed the active_index belongs to the // current non-active move route if (overwrite_changed != IsMoveRouteOverwritten()) { if (IsMoveRouteOverwritten()) { SetOriginalMoveRouteIndex(active_route_index); } else { SetMoveRouteIndex(active_route_index); } } else { if (IsMoveRouteOverwritten()) { SetMoveRouteIndex(active_route_index); } else { SetOriginalMoveRouteIndex(active_route_index); } } }
void CEodLoadFutOptClosePriceFromPp::OnError( PP::ErrorNumberEnum enErrorNumber, BSTR bsDescription ) { if(IsStopping()) return; Trace(EODCO::enTrLogError,__FUNCTION__,(LPCTSTR)_bstr_t(bsDescription)); }
void Game_Character::MoveTypeCustom() { // Detect if custom movement or event overwrite const RPG::MoveRoute* active_route; int active_route_index; bool overwrite_changed = IsMoveRouteOverwritten(); if (IsMoveRouteOverwritten()) { active_route = &GetMoveRoute(); active_route_index = GetMoveRouteIndex(); } else { active_route = &original_move_route; active_route_index = GetOriginalMoveRouteIndex(); } if (IsStopping()) { move_failed = false; for (; (size_t)active_route_index < active_route->move_commands.size(); ++active_route_index) { if (!IsStopping() || wait_count > 0 || stop_count < max_stop_count) break; const RPG::MoveCommand& move_command = active_route->move_commands[active_route_index]; switch (move_command.command_id) { case RPG::MoveCommand::Code::move_up: case RPG::MoveCommand::Code::move_right: case RPG::MoveCommand::Code::move_down: case RPG::MoveCommand::Code::move_left: case RPG::MoveCommand::Code::move_upright: case RPG::MoveCommand::Code::move_downright: case RPG::MoveCommand::Code::move_downleft: case RPG::MoveCommand::Code::move_upleft: Move(move_command.command_id); break; case RPG::MoveCommand::Code::move_random: MoveRandom(); break; case RPG::MoveCommand::Code::move_towards_hero: MoveTowardsPlayer(); break; case RPG::MoveCommand::Code::move_away_from_hero: MoveAwayFromPlayer(); break; case RPG::MoveCommand::Code::move_forward: MoveForward(); break; case RPG::MoveCommand::Code::face_up: Turn(Up); break; case RPG::MoveCommand::Code::face_right: Turn(Right); break; case RPG::MoveCommand::Code::face_down: Turn(Down); break; case RPG::MoveCommand::Code::face_left: Turn(Left); break; case RPG::MoveCommand::Code::turn_90_degree_right: Turn90DegreeRight(); break; case RPG::MoveCommand::Code::turn_90_degree_left: Turn90DegreeLeft(); break; case RPG::MoveCommand::Code::turn_180_degree: Turn180Degree(); break; case RPG::MoveCommand::Code::turn_90_degree_random: Turn90DegreeLeftOrRight(); break; case RPG::MoveCommand::Code::face_random_direction: FaceRandomDirection(); break; case RPG::MoveCommand::Code::face_hero: TurnTowardHero(); break; case RPG::MoveCommand::Code::face_away_from_hero: TurnAwayFromHero(); break; case RPG::MoveCommand::Code::wait: Wait(); break; case RPG::MoveCommand::Code::begin_jump: BeginJump(active_route, &active_route_index); break; case RPG::MoveCommand::Code::end_jump: // EndJump(); break; case RPG::MoveCommand::Code::lock_facing: SetFacingLocked(true); break; case RPG::MoveCommand::Code::unlock_facing: SetFacingLocked(false); break; case RPG::MoveCommand::Code::increase_movement_speed: SetMoveSpeed(min(GetMoveSpeed() + 1, 6)); break; case RPG::MoveCommand::Code::decrease_movement_speed: SetMoveSpeed(max(GetMoveSpeed() - 1, 1)); break; case RPG::MoveCommand::Code::increase_movement_frequence: SetMoveFrequency(min(GetMoveFrequency() + 1, 8)); break; case RPG::MoveCommand::Code::decrease_movement_frequence: SetMoveFrequency(max(GetMoveFrequency() - 1, 1)); break; case RPG::MoveCommand::Code::switch_on: // Parameter A: Switch to turn on Game_Switches[move_command.parameter_a] = true; Game_Map::SetNeedRefresh(Game_Map::Refresh_All); break; case RPG::MoveCommand::Code::switch_off: // Parameter A: Switch to turn off Game_Switches[move_command.parameter_a] = false; Game_Map::SetNeedRefresh(Game_Map::Refresh_All); break; case RPG::MoveCommand::Code::change_graphic: // String: File, Parameter A: index SetGraphic(move_command.parameter_string, move_command.parameter_a); break; case RPG::MoveCommand::Code::play_sound_effect: // String: File, Parameters: Volume, Tempo, Balance if (move_command.parameter_string != "(OFF)" && move_command.parameter_string != "(Brak)") { RPG::Sound sound; sound.name = move_command.parameter_string; sound.volume = move_command.parameter_a; sound.tempo = move_command.parameter_b; sound.balance = move_command.parameter_c; Game_System::SePlay(sound); } break; case RPG::MoveCommand::Code::walk_everywhere_on: through = true; break; case RPG::MoveCommand::Code::walk_everywhere_off: through = false; break; case RPG::MoveCommand::Code::stop_animation: walk_animation = false; break; case RPG::MoveCommand::Code::start_animation: walk_animation = true; break; case RPG::MoveCommand::Code::increase_transp: SetOpacity(max(40, GetOpacity() - 45)); break; case RPG::MoveCommand::Code::decrease_transp: SetOpacity(GetOpacity() + 45); break; } last_move_failed = move_failed; if (move_failed) { if (active_route->skippable) { last_move_failed = false; continue; } break; } } if ((size_t)active_route_index >= active_route->move_commands.size() && IsStopping()) { // End of Move list if (active_route->repeat) { active_route_index = 0; SetMoveRouteRepeated(true); } else if (IsMoveRouteOverwritten()) { CancelMoveRoute(); Game_Map::RemovePendingMove(this); stop_count = 0; } } } // When the overwrite status changed the active_index belongs to the // current non-active move route if (overwrite_changed != IsMoveRouteOverwritten()) { if (IsMoveRouteOverwritten()) { SetOriginalMoveRouteIndex(active_route_index); } else { SetMoveRouteIndex(active_route_index); } } else { if (IsMoveRouteOverwritten()) { SetMoveRouteIndex(active_route_index); } else { SetOriginalMoveRouteIndex(active_route_index); } } }
void Game_Character::MoveTypeCustom() { if (IsStopping()) { move_failed = false; if ((size_t)move_route_index >= move_route->move_commands.size()) { // End of Move list if (move_route->repeat) { move_route_index = 0; } else if (move_route_forcing) { move_route_forcing = false; if (move_route_owner != NULL) { move_route_owner->EndMoveRoute(move_route); } move_route = original_move_route; move_route_index = original_move_route_index; original_move_route = NULL; } } else { RPG::MoveCommand& move_command = move_route->move_commands[move_route_index]; switch (move_command.command_id) { case RPG::MoveCommand::Code::move_up: MoveUp(); break; case RPG::MoveCommand::Code::move_right: MoveRight(); break; case RPG::MoveCommand::Code::move_down: MoveDown(); break; case RPG::MoveCommand::Code::move_left: MoveLeft(); break; case RPG::MoveCommand::Code::move_upright: break; case RPG::MoveCommand::Code::move_downright: break; case RPG::MoveCommand::Code::move_downleft: break; case RPG::MoveCommand::Code::move_upleft: break; case RPG::MoveCommand::Code::move_random: MoveRandom(); break; case RPG::MoveCommand::Code::move_towards_hero: MoveTowardsPlayer(); break; case RPG::MoveCommand::Code::move_away_from_hero: MoveAwayFromPlayer(); break; case RPG::MoveCommand::Code::move_forward: MoveForward(); break; case RPG::MoveCommand::Code::face_up: TurnUp(); break; case RPG::MoveCommand::Code::face_right: TurnRight(); break; case RPG::MoveCommand::Code::face_down: TurnDown(); break; case RPG::MoveCommand::Code::face_left: TurnLeft(); break; case RPG::MoveCommand::Code::turn_90_degree_right: Turn90DegreeRight(); break; case RPG::MoveCommand::Code::turn_90_degree_left: Turn90DegreeLeft(); break; case RPG::MoveCommand::Code::turn_180_degree: Turn180Degree(); break; case RPG::MoveCommand::Code::turn_90_degree_random: Turn90DegreeLeftOrRight(); break; case RPG::MoveCommand::Code::face_random_direction: break; case RPG::MoveCommand::Code::face_hero: break; case RPG::MoveCommand::Code::face_away_from_hero: break; case RPG::MoveCommand::Code::wait: break; case RPG::MoveCommand::Code::begin_jump: break; case RPG::MoveCommand::Code::end_jump: break; case RPG::MoveCommand::Code::lock_facing: Lock(); break; case RPG::MoveCommand::Code::unlock_facing: Unlock(); break; case RPG::MoveCommand::Code::increase_movement_speed: move_speed = min(move_speed + 1, 6); break; case RPG::MoveCommand::Code::decrease_movement_speed: move_speed = max(move_speed - 1, 1); break; case RPG::MoveCommand::Code::increase_movement_frequence: break; case RPG::MoveCommand::Code::decrease_movement_frequence: break; case RPG::MoveCommand::Code::switch_on: // Parameter A: Switch to turn on Game_Switches[move_command.parameter_a] = true; Game_Map::SetNeedRefresh(true); break; case RPG::MoveCommand::Code::switch_off: // Parameter A: Switch to turn off Game_Switches[move_command.parameter_a] = false; Game_Map::SetNeedRefresh(true); break; case RPG::MoveCommand::Code::change_graphic: // String: File, Parameter A: index character_name = move_command.parameter_string; character_index = move_command.parameter_a; break; case RPG::MoveCommand::Code::play_sound_effect: // String: File, Parameters: Volume, Tempo, Balance if (move_command.parameter_string != "(OFF)") { Audio().SE_Play(move_command.parameter_string, move_command.parameter_a, move_command.parameter_b); } break; case RPG::MoveCommand::Code::walk_everywhere_on: through = true; break; case RPG::MoveCommand::Code::walk_everywhere_off: through = false; break; case RPG::MoveCommand::Code::stop_animation: break; case RPG::MoveCommand::Code::start_animation: break; case RPG::MoveCommand::Code::increase_transp: break; // ??? case RPG::MoveCommand::Code::decrease_transp: break; // ??? } if (move_route->skippable || !move_failed) { ++move_route_index; } } } }
bool DMWorker::ContinueWorking() { return WaitForUnPaused() && !IsStopping(); }