55public abstract class CutsceneActivity
extends Activity {
57 protected static final int[] HIDDEN_TABS =
new int[] { 0, 1, 2, 3, 4, 5, 6, 11, 12 };
59 protected final List<Npc> npcs =
new ArrayList<>();
61 private final boolean fadeIn;
67 private int fadeStage = 0;
69 public CutsceneActivity(
Player player,
int cooldown,
boolean fadeIn) {
70 super(cooldown,
Mob.DEFAULT_INSTANCE);
75 public CutsceneActivity(
Player player,
int cooldown) {
76 this(player, cooldown,
true);
85 originalPosition = player.getPosition().copy();
86 player.locking.lock();
89 executeStartSequence();
95 private void executeStartSequence() {
100 private void handleFadeIn() {
101 switch (fadeStage++) {
113 private void immediateStart() {
118 private void setupCutscene() {
119 player.send(
new SendMinimapState(SendMinimapState.MinimapState.HIDDEN));
121 player.
move(getStartPosition());
122 player.movement.
reset();
123 player.interfaceManager.close();
131 executeEndSequence();
137 private void executeEndSequence() {
142 private void handleFadeOut() {
143 switch (fadeStage++) {
155 private void immediateEnd() {
161 private void restorePlayer() {
162 if (originalPosition !=
null) {
163 player.
move(originalPosition);
165 player.send(
new SendMinimapState(SendMinimapState.MinimapState.NORMAL));
167 player.send(
new SendCameraReset());
169 player.movement.
reset();
174 for (
Npc npc : npcs) {
175 if (npc !=
null && npc.isRegistered()) {
182 protected void spawnNpc(
int id,
Position position) {
183 Npc npc =
new Npc(
id, position);
188 protected void spawnNpc(
int id,
int x,
int y,
int z) {
189 spawnNpc(
id,
new Position(x, y, z));
192 protected void camera(
int x,
int y,
int xRot,
int yRot,
int height,
int speed) {
195 player.send(
new CameraViewPacket(
new CameraContext(player, CameraType.POSITION, loc.
getX(), loc.
getY(), height, speed, 1)));
198 protected void shakeCamera(
int intensity,
int duration) {
202 protected void resetCamera() {
203 player.send(
new SendCameraReset());
206 protected void moveCamera(Position position,
int height,
int speed) {
207 player.send(
new CameraViewPacket(
new CameraContext(player, CameraType.POSITION, position.getX(), position.getY(), height, speed, 1)));
210 protected void hideTabs() {
211 for (
int tab : getHiddenTabs()) {
212 player.interfaceManager.setSidebar(tab, -1);
216 protected void restoreTabs() {
217 player.playerAssistant.setSidebar(
false,
false);
220 protected void dialogue(String... messages) {
221 if (messages.length == 0) {
225 player.dialogueFactory.sendStatement(messages).execute();
228 protected void playerDialogue(String... messages) {
229 player.dialogueFactory.sendPlayerChat(messages).execute();
232 protected void npcDialogue(
int npcId, String... messages) {
233 player.dialogueFactory.sendNpcChat(npcId, messages).execute();
237 public boolean canLogout(Player player) {
242 public ActivityType getType() {
243 return ActivityType.CUTSCENE;
246 protected abstract void onFadeIn();
248 protected void onFadeOut() {
252 protected abstract Position getStartPosition();
254 protected int[] getHiddenTabs() {
258 public static CutsceneActivity create(Player player) {
259 CutsceneActivity activity = createInstance(player);
260 activity.add(player);
261 activity.resetCooldown();
265 protected static CutsceneActivity createInstance(Player player) {
Activity(int cooldown, int instance)