void Game_Event::Update() { if (!data.active) { return; } CheckEventTriggerAuto(); if (interpreter) { if (!interpreter->IsRunning()) { interpreter->Setup(list, event.ID, -event.x, event.y); } else { interpreter->Update(); } } else if (starting && !Game_Map::GetInterpreter().IsRunning()) { Game_Map::GetInterpreter().SetupStartingEvent(this); running = true; } Game_Character::Update(); if (halting) { running = false; halting = false; } }
void Game_Event::SetupFromSave(RPG::EventPage* new_page) { page = new_page; if (page == NULL) { tile_id = 0; through = true; trigger = -1; list.clear(); interpreter.reset(); return; } data.Fixup(*new_page); 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; original_move_route = page->move_route; animation_type = page->animation_type; trigger = page->trigger; list = page->event_commands; // Trigger parallel events when the interpreter wasn't already running // (because it was the middle of a parallel event while saving) if (!interpreter && trigger == RPG::EventPage::Trigger_parallel) { interpreter.reset(new Game_Interpreter_Map()); } CheckEventTriggerAuto(); }
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_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(); }
void Game_Event::Update() { if (!data.active) { return; } Game_Character::Update(); CheckEventTriggerAuto(); if (interpreter) { if (!interpreter->IsRunning()) { interpreter->Setup(list, event.ID, -event.x, event.y); } else { interpreter->Update(); } } }
void Game_Event::Update() { if (!data.active) { return; } // Workaround to make sure the event can't start again in the same frame it ended. // TODO: Find a better way to do this. See: https://github.com/EasyRPG/Player/pull/469 ready2 = ready1; ready1 = true; Game_Character::Update(); CheckEventTriggerAuto(); if (interpreter) { if (!interpreter->IsRunning()) { interpreter->Setup(list, event.ID, -event.x, event.y); } else { interpreter->Update(); } } }