mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-04-18 02:06:43 +00:00
81 lines
1.8 KiB
Java
81 lines
1.8 KiB
Java
package net.simon987.npcplugin;
|
|
|
|
import net.simon987.server.GameServer;
|
|
import net.simon987.server.game.objects.MessageReceiver;
|
|
import net.simon987.server.game.objects.Structure;
|
|
import net.simon987.server.game.objects.Updatable;
|
|
import org.bson.Document;
|
|
import org.json.simple.JSONArray;
|
|
import org.json.simple.JSONObject;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
public class RadioTower extends Structure implements MessageReceiver, Updatable {
|
|
|
|
private static final int MAP_INFO = 0x0901;
|
|
|
|
public static final int MAX_RANGE = GameServer.INSTANCE.getConfig().getInt("radio_tower_range");
|
|
|
|
private static final int MAX_MESSAGES = 16;
|
|
|
|
public RadioTower() {
|
|
super(1, 1);
|
|
}
|
|
|
|
public RadioTower(Document document) {
|
|
super(document, 1, 1);
|
|
NpcPlugin.getRadioTowers().add(this);
|
|
}
|
|
|
|
@Override
|
|
public char getMapInfo() {
|
|
return MAP_INFO;
|
|
}
|
|
|
|
/**
|
|
* Messages from the current tick
|
|
*/
|
|
private ArrayList<char[]> messages = new ArrayList<>(4);
|
|
|
|
/**
|
|
* Messages from the last tick
|
|
*/
|
|
private ArrayList<char[]> lastMessages = new ArrayList<>(4);
|
|
|
|
@Override
|
|
public void update() {
|
|
lastMessages = new ArrayList<>(messages);
|
|
messages.clear();
|
|
}
|
|
|
|
@Override
|
|
public boolean sendMessage(char[] message) {
|
|
|
|
if (message.length < MAX_MESSAGES) {
|
|
messages.add(message);
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
ArrayList<char[]> getMessages() {
|
|
return lastMessages;
|
|
}
|
|
|
|
@Override
|
|
public JSONObject debugJsonSerialise() {
|
|
JSONObject json = super.debugJsonSerialise();
|
|
|
|
JSONArray messages = new JSONArray();
|
|
|
|
for (char[] message : this.messages) {
|
|
messages.add(new String(message));
|
|
}
|
|
|
|
json.put("messages", messages);
|
|
|
|
return json;
|
|
}
|
|
}
|