Make a new class to model folder called DialogueQueue
Code:
package com.rs2hd.model;
import com.rs2hd.definitionhandling.DefinitionHandler;
public class DialogueQueue {
/**
* Whos dialogues are we dealing with?
*/
private Player player;
/**
* The id of dialogue that's currently being displayed
*/
private int currentId;
/**
* Array where all dialogues are stored.
*/
private Dialogue[] dialogueArray = new Dialogue[100];
public DialogueQueue(Player player) {
this.player = player;
}
public void add(Dialogue d) {
dialogueArray[getId()] = d;
display(d);
}
public void add(Dialogue[] d) {
dialogueArray = d;
currentId = 0;
display(dialogueArray[currentId]);
}
public Dialogue getNext() {
currentId += 1;
if(currentId >= dialogueArray.length) {
currentId = -1;
clear();
return null;
}
display(dialogueArray[currentId]);
return dialogueArray[currentId];
}
public int getId() {
for(int i = 0; i < dialogueArray.length;i++) {
if(dialogueArray[i] == null) {
return i;
}
}
return -1;
}
public void display(Dialogue d) {
if(d.getNpcId() > -1) {
String npcName = DefinitionHandler.getNPCDef(d.getNpcId()).getName() == null ? "Unknown" : DefinitionHandler.getNPCDef(d.getNpcId()).getName();
player.getActionSender().sendNpcHead(d.getNpcId(), 241, 2);
player.getActionSender().sendString(npcName, 241, 3);
} else {
player.getActionSender().sendString(player.getUsername(), 241, 3);
player.getActionSender().sendPlayerHead(241, 2);
}
player.getActionSender().sendChatboxInterface(241);
player.getActionSender().animateInterface(9847, 241, 2);
player.getActionSender().sendString(d.getText(), 241, 4);
}
public void clear() {
dialogueArray = null;
}
}
And a class called Dialogue
Code:
package com.rs2hd.model;
public class Dialogue {
private Player owner;
private String text;
private int npcId;
public Dialogue(Player p, String str, int npcId) {
this.owner = p;
this.text = str;
this.npcId = npcId;
}
public String getText() {
return text;
}
public int getNpcId() {
return npcId;
}
public Player getOwner() {
return owner;
}
}
Add this to player class:
Code:
/**
* Dialogues
*/
private transient DialogueQueue dialogueQueue;
/**
* Handles player dialogues.
*/
public DialogueQueue getDialogueQueue() {
return dialogueQueue;
}
Declare this where you set constructors:
Code:
dialogueQueue = new DialogueQueue(this);
Add this to where you handle buttons for interfaces/chatboxinterfaces
Code:
case 241:
if(button == 5) {
player.getActionSender().sendCloseChatboxInterface();
player.getDialogueQueue().getNext();
}
break;
Have fun.
Usage:
Code:
player.getDialogueQueue().add(new Dialogue[]{
new Dialogue(player, "Hello!", -1),
new Dialogue(player, "Hi!", affectedNpc.getId()),
new Dialogue(player, "How's it going?", -1),
new Dialogue(player, "I'm fine thank you.", affectedNpc.getId())});
or single dialogue:
Code:
player.getDialogueQueue().add(new Dialogue(player, "Hello!", -1));