void Game_Event::Setup(RPG::EventPage* new_page) { bool from_null = page == NULL; page = new_page; // Free resources if needed if (interpreter) { // If the new page is null and the interpreter is running, it should // carry on executing its command list during this frame if (page) interpreter->Clear(); Game_Map::ReserveInterpreterDeletion(interpreter); interpreter.reset(); } if (page == NULL) { tile_id = 0; SetSpriteName(""); SetSpriteIndex(0); SetDirection(RPG::EventPage::Direction_down); //move_type = 0; trigger = -1; list.clear(); return; } SetSpriteName(page->character_name); SetSpriteIndex(page->character_index); tile_id = page->character_name.empty() ? page->character_index : 0; if (original_pattern != page->character_pattern) { pattern = page->character_pattern; original_pattern = pattern; } move_type = page->move_type; SetMoveSpeed(page->move_speed); SetMoveFrequency(page->move_frequency); max_stop_count = (GetMoveFrequency() > 7) ? 0 : (int)pow(2.0, 8 - GetMoveFrequency()); original_move_frequency = page->move_frequency; original_move_route = page->move_route; SetOriginalMoveRouteIndex(0); bool last_direction_fixed = IsDirectionFixed() || IsFacingLocked(); animation_type = page->animation_type; if (from_null || !(last_direction_fixed || IsMoving()) || IsDirectionFixed()) SetSpriteDirection(page->character_direction); if (!IsMoving()) SetDirection(page->character_direction); SetOpacity(page->translucent ? 160 : 255); SetLayer(page->layer); data.overlap_forbidden = page->overlap_forbidden; trigger = page->trigger; list = page->event_commands; if (trigger == RPG::EventPage::Trigger_parallel) { interpreter.reset(new Game_Interpreter_Map()); } }
bool Game_Player::GetOnVehicle() { int front_x = Game_Map::XwithDirection(GetX(), GetDirection()); int front_y = Game_Map::YwithDirection(GetY(), GetDirection()); Game_Vehicle::Type type; if (Game_Map::GetVehicle(Game_Vehicle::Airship)->IsInPosition(GetX(), GetY())) type = Game_Vehicle::Airship; else if (Game_Map::GetVehicle(Game_Vehicle::Ship)->IsInPosition(front_x, front_y)) type = Game_Vehicle::Ship; else if (Game_Map::GetVehicle(Game_Vehicle::Boat)->IsInPosition(front_x, front_y)) type = Game_Vehicle::Boat; else return false; location.vehicle = type; location.preboard_move_speed = GetMoveSpeed(); if (type != Game_Vehicle::Airship) { location.boarding = true; through = true; MoveForward(); through = false; } else { location.aboard = true; SetMoveSpeed(GetVehicle()->GetMoveSpeed()); SetDirection(RPG::EventPage::Direction_left); } walking_bgm = Game_System::GetCurrentBGM(); GetVehicle()->GetOn(); return true; }
bool Game_Player::GetOffVehicle() { if (InAirship()) { if (!AirshipLandOk(GetX(), GetY())) return false; } else { int front_x = Game_Map::XwithDirection(GetX(), GetDirection()); int front_y = Game_Map::YwithDirection(GetY(), GetDirection()); if (!CanWalk(front_x, front_y)) return false; } Game_Map::GetVehicle((Game_Vehicle::Type) vehicle_type)->GetOff(); if (InAirship()) SetDirection(RPG::EventPage::Direction_down); else { // TODO // ForceMoveForward(); opacity = 255; } vehicle_getting_off = true; SetMoveSpeed(4); through = false; Game_System::BgmPlay(walking_bgm); return true; }
Game_Player::Game_Player(): location(Main_Data::game_data.party_location), teleporting(false), new_map_id(0), new_x(0), new_y(0), last_pan_x(0), last_pan_y(0) { SetDirection(RPG::EventPage::Direction_down); SetMoveSpeed(4); }
void Game_Event::Setup(RPG::EventPage* new_page) { page = new_page; // Free resources if needed if (interpreter) { interpreter->Clear(); Game_Map::ReserveInterpreterDeletion(interpreter); interpreter.reset(); } if (page == NULL) { tile_id = 0; SetSpriteName(""); SetSpriteIndex(0); SetDirection(RPG::EventPage::Direction_down); //move_type = 0; trigger = -1; list.clear(); return; } SetSpriteName(page->character_name); SetSpriteIndex(page->character_index); tile_id = page->character_name.empty() ? page->character_index : 0; if (GetDirection() != page->character_direction) { SetDirection(page->character_direction); SetSpriteDirection(page->character_direction); } if (original_pattern != page->character_pattern) { pattern = page->character_pattern; original_pattern = pattern; } move_type = page->move_type; SetMoveSpeed(page->move_speed); SetMoveFrequency(page->move_frequency); max_stop_count = (GetMoveFrequency() > 7) ? 0 : pow(2.0, 8 - GetMoveFrequency()); original_move_frequency = page->move_frequency; original_move_route = page->move_route; SetOriginalMoveRouteIndex(0); animation_type = page->animation_type; SetOpacity(page->translucent ? 160 : 255); SetLayer(page->layer); trigger = page->trigger; list = page->event_commands; if (trigger == RPG::EventPage::Trigger_parallel) { interpreter.reset(new Game_Interpreter_Map()); } CheckEventTriggerAuto(); }
void Game_Vehicle::Refresh() { if (IsInUse()) { SetMapId(Game_Map::GetMapId()); } else if (IsInCurrentMap()) { SetProcessed(true); // RPG_RT compatibility MoveTo(GetX(), GetY()); } switch (type) { case None: break; case Boat: case Ship: SetMoveSpeed(RPG::EventPage::MoveSpeed_normal); break; case Airship: SetMoveSpeed(RPG::EventPage::MoveSpeed_double); break; } }
void Game_Event::Setup(RPG::EventPage* new_page) { page = new_page; if (page == NULL) { tile_id = 0; SetSpriteName(""); SetSpriteIndex(0); SetDirection(RPG::EventPage::Direction_down); //move_type = 0; through = true; trigger = -1; list.clear(); interpreter.reset(); return; } SetSpriteName(page->character_name); SetSpriteIndex(page->character_index); tile_id = page->character_name.empty() ? page->character_index : 0; if (GetDirection() != page->character_direction) { SetDirection(page->character_direction); SetPrelockDirection(page->character_direction); } if (original_pattern != page->character_pattern) { pattern = page->character_pattern; original_pattern = pattern; } //opacity = page.opacity; //opacity = page.translucent ? 192 : 255; //blend_type = page.blend_type; move_type = page->move_type; SetMoveSpeed(page->move_speed); SetMoveFrequency(page->move_frequency); original_move_route = page->move_route; SetOriginalMoveRouteIndex(0); animation_type = page->animation_type; SetLayer(page->layer); trigger = page->trigger; list = page->event_commands; through = false; // Free resources if needed interpreter.reset(); if (trigger == RPG::EventPage::Trigger_parallel) { interpreter.reset(new Game_Interpreter_Map()); } CheckEventTriggerAuto(); }
//no utilizada CZombie& CZombie::operator = (CZombie& z) { SetHealth(z.GetHealth()); SetInstance(z.GetInstance()); SetModelFilename(z.GetModelFilename()); SetMoveSpeed(z.GetMoveSpeed()); SetRotSpeed(z.GetRotSpeed()); GetInstance()->SetScalar(z.GetInstance()->GetScalarX(),z.GetInstance()->GetScalarX(),z.GetInstance()->GetScalarX()); SetRadiusSmelling(z.GetRadiusSmelling()); SetRadiuwViewing(z.GetRadiusViewing()); GetInstance()->SetName(z.GetInstance()->GetName()); SetEjeMovimientoIA(z.GetEjeMovimientoIA()); return *this; }
void Game_Vehicle::Refresh() { if (!driving && Main_Data::game_player->GetVehicle() == this) driving = true; if (driving) SetMapId(Game_Map::GetMapId()); else if (IsInCurrentMap()) MoveTo(GetX(), GetY()); switch (type) { case None: break; case Boat: case Ship: SetLayer(RPG::EventPage::Layers_same); SetMoveSpeed(RPG::EventPage::MoveSpeed_normal); break; case Airship: SetLayer(driving ? RPG::EventPage::Layers_above : RPG::EventPage::Layers_below); SetMoveSpeed(RPG::EventPage::MoveSpeed_double); break; } walk_animation = (type != Airship) || driving; }
void CPartyIconMoveInfo::SetMoveInfo(PARTYICON_MOVEINFO* pMoveInfo) { m_cPos = pMoveInfo->cPos; m_tgMaxIndex = pMoveInfo->tgCount; memset(m_tPos, 0, sizeof(MoveCoord)*MAX_CHARTARGETPOSBUF_SIZE); for(int i=0; i<m_tgMaxIndex; i++) { m_tPos[i].posX = pMoveInfo->tgPos[i].posX; m_tPos[i].posZ = pMoveInfo->tgPos[i].posZ; } m_KyungGongIdx = pMoveInfo->KyungGongIdx; m_Speed = pMoveInfo->fSpeed; m_tgIndex = 0; SetMoveSpeed(); }
void CCameraFlight::InitFlight(const Vec3 &vRefPos, IEntity *pRefEntity) { //data is relative to this spot m_vRefPos = vRefPos; m_vRefPos2 = Vec3Constants<float>::fVec3_Zero; m_pRefEnt = pRefEntity; //progress and fading m_fFlightProgress = 0.0f; m_fCourseLengthOverwrite = 0.0f; m_vTargetFadePos = m_vRefPos; m_fFadeProgress = 0.0f; m_bUseRefDir = false; m_eState = eCFS_NONE; //update course speed SetMoveSpeed(m_fMoveSpeedMps); }
Character::Character(Settings *settings, int mapWidth, int mapHeight, std::vector<std::vector<Cell>> *cellMap) { hasText_ = false; movespeed_ = 0; currentRotation_ = 0; hasImage_ = false; hasColor_ = false; hasImageReference_ = false; aiEnabled_ = true; mapWidth_ = mapWidth; mapHeight_ = mapHeight; cellMap_ = cellMap; settings_ = settings; KeyLeft_ = false; KeyRight_ = false; KeySpace_ = false; SetCurrentPosition(mapWidth_ / Constants::TileSize() + 1, mapHeight_ / Constants::TileSize() + 1); SetColor(al_map_rgb_f(1, 1, 1)); SetWidth(0.8); SetHeight(0.8); SetGravityY(-9.8); SetVelocityY(0.125); SetMaxVelocityY(1); SetAccelerationY(0.03125); SetMoveSpeedDelta(0.0625); SetMoveSpeed(30); SetJumpSpeed(12); font30_ = al_load_font("arial.ttf", Constants::TileSize(), 0); SetCharacterYAxisState(CHARACTERYAXISSTATES::CHARACTERFALLING); }
bool CClientVehicle::Deserialize(CBitStream * pBitStream) { // Read the vehicle position CVector3 vecPosition; if(!pBitStream->Read(vecPosition)) return false; SetPosition(vecPosition); // Read the vehicle rotation CVector3 vecRotation; if(!pBitStream->Read(vecRotation)) return false; SetRotation(vecRotation); // Read the vehicle move speed CVector3 vecMoveSpeed; if(!pBitStream->Read(vecMoveSpeed)) return false; SetMoveSpeed(vecMoveSpeed); // Read the vehicle turn speed CVector3 vecTurnSpeed; if(!pBitStream->Read(vecTurnSpeed)) return false; SetTurnSpeed(vecTurnSpeed); // Read the vehicle health float fHealth; if(!pBitStream->Read(fHealth)) return false; SetHealth(fHealth); return true; }
void CCameraFlight::Reset() { m_cameraCourse.clear(); SetMoveSpeed(); m_fFlightProgress = 0.0f; m_eMovementMode = eCFM_NONE; m_pRefEnt = NULL; m_eFadeMode = eCFFM_NONE; m_vRefPos = Vec3Constants<float>::fVec3_Zero; m_vRefPos2 = Vec3Constants<float>::fVec3_Zero; m_vRefDir = Vec3Constants<float>::fVec3_OneY; m_vLookingDirection = Vec3Constants<float>::fVec3_OneY; m_vTargetFadePos = Vec3Constants<float>::fVec3_Zero; m_bPaused = false; m_bUseRefDir = false; m_fCourseLengthOverwrite = 0.0f; m_fFadeTime = 0.0f; m_qFadeOrientation.SetIdentity(); m_fFadeProgress = 0.0f; m_eState = eCFS_NONE; }
bool CZombieOlfateador::Init(CZombie &z) { bool bIsOk = Inherited::Init(z); if (!bIsOk) { printf("a CZombieOlfateador instace couldnt allocate memory"); Done(); //We call Done() to release before the parent class } else { SetHealth(z.GetHealth()); SetInstance(z.GetInstance()); SetModelFilename(z.GetModelFilename()); SetMoveSpeed(z.GetMoveSpeed()); SetRotSpeed(z.GetRotSpeed()); GetInstance()->SetScalar(z.GetInstance()->GetScalarX(),z.GetInstance()->GetScalarY(),z.GetInstance()->GetScalarZ()); SetSiguiendoRuta(false); } return bIsOk; }
bool Enemy::InitData(const string& name) { EnemyInfo* info = PlaneManager::getInstance()->GetEnemyInfo(name); SetName(name); ChangeBulletType(info->bulletType); SetHpMax(info->hpMax); SetHp(GetHpMax()); _duration = info->duration; _stayTime = info->stayTime; SetMoveSpeed(info->moveSpeed); _score = info->score; _itemID = info->itemID; switch (info->layer) { case 1: SetOrder(LAYER_ENEMY_1); break; case 2: SetOrder(LAYER_ENEMY_2); break; case 3: SetOrder(LAYER_ENEMY_3); break; default: SetOrder(LAYER_ENEMY_1); break; } ChangeMoveState(info->moveStateID); SetMoveEnable(true); if (InitWithFile(info->imgPath)) { return true; } return false; }
void Game_Player::UpdateNonMoving(bool last_moving) { if (IsMoving() || IsMoveRouteOverwritten()) return; if (last_moving && location.boarding) { // Boarding completed location.aboard = true; location.boarding = false; SetMoveSpeed(GetVehicle()->GetMoveSpeed()); SetDirection(GetVehicle()->GetDirection()); return; } if (last_moving && location.unboarding) { // Unboarding completed location.unboarding = false; location.vehicle = Game_Vehicle::None; CheckTouchEvent(); return; } if (InAirship() && !GetVehicle()->IsInUse()) { // Airship has landed Unboard(); location.vehicle = Game_Vehicle::None; SetDirection(RPG::EventPage::Direction_down); } if (last_moving && CheckTouchEvent()) return; if (!Game_Message::visible && Input::IsTriggered(Input::DECISION)) { if ( GetOnOffVehicle() ) return; if ( CheckActionEvent() ) return; } if (last_moving) Game_Map::UpdateEncounterSteps(); }
void CClientVehicle::StreamIn() { // Attempt to create the vehicle if(Create()) { // Set the position Teleport(m_vecPosition); // Set the rotation SetRotation(m_vecRotation); // Set the move speed SetMoveSpeed(m_vecMoveSpeed); // Set the turn speed SetTurnSpeed(m_vecTurnSpeed); // Set the colors SetColors(m_byteColors[0], m_byteColors[1], m_byteColors[2], m_byteColors[3]); // Set the health SetHealth(m_fHealth); } }
void CVehicleEntity::StopMoving() { SetMoveSpeed(CVector3()); }
void Game_Player::Update() { int cur_frame_count = Player::GetFrames(); // Only update the event once per frame if (cur_frame_count == frame_count_at_last_update_parallel) { return; } frame_count_at_last_update_parallel = cur_frame_count; bool last_moving = IsMoving() || IsJumping(); // Workaround: If a blocking move route ends in this frame, Game_Player::CancelMoveRoute decides // which events to start. was_blocked is used to avoid triggering events the usual way. bool was_blocked = IsBlockedByMoveRoute(); Game_Character::Update(); if (!Game_Map::GetInterpreter().IsRunning() && !Game_Map::IsAnyEventStarting()) { if (IsMovable()) { switch (Input::dir4) { case 2: Move(Down); break; case 4: Move(Left); break; case 6: Move(Right); break; case 8: Move(Up); } } // ESC-Menu calling if (Game_System::GetAllowMenu() && !Game_Message::message_waiting && Input::IsTriggered(Input::CANCEL)) { Game_Temp::menu_calling = true; } } Game_Character::UpdateSprite(); UpdateScroll(); if (location.aboard) GetVehicle()->SyncWithPlayer(); if (IsMoving() || was_blocked) return; if (last_moving && location.boarding) { // Boarding completed location.aboard = true; location.boarding = false; SetMoveSpeed(GetVehicle()->GetMoveSpeed()); SetDirection(GetVehicle()->GetDirection()); return; } if (last_moving && location.unboarding) { // Unboarding completed location.unboarding = false; location.vehicle = Game_Vehicle::None; CheckTouchEvent(); return; } if (InAirship() && !GetVehicle()->IsInUse()) { // Airship has landed Unboard(); location.vehicle = Game_Vehicle::None; SetDirection(RPG::EventPage::Direction_down); } if (last_moving && CheckTouchEvent()) return; if (!Game_Map::GetInterpreter().IsRunning() && !Game_Map::IsAnyEventStarting()) { if (!Game_Message::visible && Input::IsTriggered(Input::DECISION)) { if ( GetOnOffVehicle() ) return; if ( CheckActionEvent() ) return; } } if (last_moving) Game_Map::UpdateEncounterSteps(); }
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 Game_Player::Unboard() { location.aboard = false; SetMoveSpeed(location.preboard_move_speed); Game_System::BgmPlay(walking_bgm); }
void CPartyIconMoveInfo::SetKoungGongIdx(int Index) { m_KyungGongIdx = Index; SetMoveSpeed(); }
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 CPartyIconMoveInfo::SetMoveState(int State) { SetMoveSpeed(); }
void CMinotaur::CollisionResponse(IObject* _cCollidedObject) { //DBG_UNREFERENCED_PARAMETER(_cCollidedObject); /*if (_cCollidedObject->GetTag() == "Floor" || _cCollidedObject->GetTag() == "SafeHavenFloor") { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[0]); } }*/ if (_cCollidedObject->GetTag() == "Wall" || _cCollidedObject->GetTag() == "Door" || _cCollidedObject->GetTag() == "CrackedWall" || _cCollidedObject->GetTag() == "Enemy Cave Wall") { for (size_t i = 1; i < _cCollidedObject->GetColliders().size(); i++) { if (_cCollidedObject->GetColliders()[i]->GetCollided()) { if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::AABB) { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); } else if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::Plane) { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); m_bIsGrounded = true; } } } } } else if (_cCollidedObject->GetTag() == "MinotaurSpawn") { for (size_t i = 1; i < _cCollidedObject->GetColliders().size(); i++) { if (_cCollidedObject->GetColliders()[i]->GetCollided()) { if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::AABB) { CAABB* bounds = (CAABB*)(_cCollidedObject->GetColliders()[i]->GetBounds()); CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); } else if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::Plane) { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); m_bIsGrounded = true; } } } } } else if (_cCollidedObject->GetTag() == "SmallPit") { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[_cCollidedObject->GetColliders().size() - 1]); _cCollidedObject->GetColliders()[_cCollidedObject->GetColliders().size() - 1]->SetCollided(false); m_bIsGrounded = true; } else if (m_f3Velocity.y < 0.0f) { m_bIsGrounded = true; for (size_t i = 1; i < _cCollidedObject->GetColliders().size() - 1; i++) { if (_cCollidedObject->GetColliders()[i]->GetCollided()) { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); } } } //CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[GetColliders().size() - 1]); } else if (_cCollidedObject->GetTag() == "BigPit") { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[_cCollidedObject->GetColliders().size() - 1]); _cCollidedObject->GetColliders()[_cCollidedObject->GetColliders().size() - 1]->SetCollided(false); m_bIsGrounded = true; } else if (m_f3Velocity.y < 0.0f) { for (size_t i = 1; i < _cCollidedObject->GetColliders().size() - 1; i++) { if (_cCollidedObject->GetColliders()[i]->GetCollided()) { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); } } } } else if (_cCollidedObject->GetTag() == "CaveSpawn") { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[0]); _cCollidedObject->GetColliders()[0]->SetCollided(false); } else if (_cCollidedObject->GetTag() == "Player") { CPlayer* player = reinterpret_cast<CPlayer*>(GetPlayer()); player->TakeDamage(200); if (player->GetHealth() > 0) { XMFLOAT3 pos = *GetPosition(); XMFLOAT3 playerPos = *player->GetPosition(); AudioSystemWwise::Get()->PostEvent(AK::EVENTS::MINOGRUNT, pos); AudioSystemWwise::Get()->PostEvent(AK::EVENTS::PLAYERTRAMPLE, playerPos); } //_cCollidedObject->GetColliders()[1]->SetCollided(false); } else if (_cCollidedObject->GetTag() == "SafeHavenFloor") { ChangeState(eDeadState); } else if (_cCollidedObject->GetTag() == "Floor") { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[0]); m_bIsGrounded = true; } } else if (_cCollidedObject->GetTag() == "SpikeTrap" || _cCollidedObject->GetTag() == "SpinningBlade") { if (m_fSlowTimer >= 0.0f) { m_fSlowTimer = SLOW_TIME; SetMoveSpeed(GetMoveSpeed() * 0.5f); m_fCurrentHealth -= 10.0f; } } else if (_cCollidedObject->GetTag() == "TrapPrefab") { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[0]); m_bIsGrounded = true; /*for (size_t i = 1; i < _cCollidedObject->GetColliders().size(); i++) { if (_cCollidedObject->GetColliders()[i]->GetCollided()) { if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::AABB) { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); else CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); m_bIsGrounded = true; _cCollidedObject->GetColliders()[i]->SetCollided(false); } else if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::Plane) { if (m_mWorld.m[3][1] > -20.0f && m_f3Velocity.y < 0.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); m_bIsGrounded = true; } } } }*/ } else if (_cCollidedObject->GetTag() == "ExitDoor") { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[0]); _cCollidedObject->GetColliders()[0]->SetCollided(false); } else if (_cCollidedObject->GetTag() == "Bridge") { CBridge* curBridge = reinterpret_cast<CBridge*>(_cCollidedObject); if (curBridge->IsActive() && curBridge->IsIntact()) { if (curBridge->IsActive() && curBridge->IsIntact()) { if (_cCollidedObject->GetColliders()[1]->GetCollided()) { CAABB* bounds = ((CAABB*)_cCollidedObject->GetColliders()[1]->GetBounds()); if ((bounds->GetExtents().x == 250.0f && bounds->GetExtents().y == 150.0f && bounds->GetExtents().z == 50.0f) || (bounds->GetExtents().x == 50.0f && bounds->GetExtents().y == 150.0f && bounds->GetExtents().z == 250.0f)) { CBridge* bridge = (CBridge*)_cCollidedObject; bridge->Destroy(); m_bIsGrounded = false; ChangeState(EMinotaurStates::eDeadState); } _cCollidedObject->GetColliders()[1]->SetCollided(false); } for (size_t i = 2; i < 10; i++) { if (_cCollidedObject->GetColliders()[i]->GetCollided()) { if (GetPosition()->y < 20.0f) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); m_bIsGrounded = true; } else { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); } } } for (size_t i = 10; i < _cCollidedObject->GetColliders().size(); i++) { if (_cCollidedObject->GetColliders()[i]->GetCollided()) { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); } } //for (size_t i = 1; i < _cCollidedObject->GetColliders().size(); i++) //{ // if (_cCollidedObject->GetColliders()[i]->GetCollided()) // { // //CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); // _cCollidedObject->GetColliders()[i]->SetCollided(false); // } //} //if (_cCollidedObject->GetColliders()[0]->GetCollided()) //{ // //CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[0]); // _cCollidedObject->GetColliders()[0]->SetCollided(false); // m_bIsGrounded = true; //} } } } else if (_cCollidedObject->GetTag() == "CrackedWall") { for (size_t i = 0; i < _cCollidedObject->GetColliders().size() - 4; i++) { if ((_cCollidedObject->GetColliders()[i])->GetCollided()) { if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::AABB) { CapsuleToWall(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); } else if (_cCollidedObject->GetColliders()[i]->GetType() == Bounds::Plane) { CapsuleToFloor(this, m_pvColliders[1], _cCollidedObject->GetColliders()[i]); _cCollidedObject->GetColliders()[i]->SetCollided(false); m_bIsGrounded = true; } } } } else if (_cCollidedObject->GetTag() == "Minotaur") { CapsuleToCapsule(this, m_pvColliders[1], _cCollidedObject->GetColliders()[1]); } else if (_cCollidedObject->GetTag() == "Skeleton") { reinterpret_cast<CSkeleton*>(_cCollidedObject)->TakeDamage(200); } else if (_cCollidedObject->GetTag() == "PitWall") { // m_f3Velocity.y = 1000.0f; } }
Game_Player::Game_Player(): location(Main_Data::game_data.party_location) { SetDirection(RPG::EventPage::Direction_down); SetMoveSpeed(4); }