Fixed the unlocking of region-wide music tracks

This commit is contained in:
Player Name
2024-10-06 09:32:57 +00:00
committed by Ryan
parent cc47f4b488
commit f94221918f
4 changed files with 11 additions and 15 deletions
@@ -10,9 +10,7 @@ import core.net.packet.context.StringContext;
import core.net.packet.out.MusicPacket; import core.net.packet.out.MusicPacket;
import core.net.packet.out.StringPacket; import core.net.packet.out.StringPacket;
import java.util.HashMap; import java.util.*;
import java.util.Map;
import java.util.Random;
import static core.api.ContentAPIKt.*; import static core.api.ContentAPIKt.*;
@@ -199,10 +197,9 @@ public final class MusicPlayer {
public void unlock(int id, boolean play) { public void unlock(int id, boolean play) {
MusicEntry entry = MusicEntry.forId(id); MusicEntry entry = MusicEntry.forId(id);
if (entry == null) { if (entry == null) {
return; return;
} }
if (!unlocked.containsKey(entry.getIndex())) { if (!entry.getName().equals(" ") && !unlocked.containsKey(entry.getIndex())) {
unlocked.put(entry.getIndex(), entry); unlocked.put(entry.getIndex(), entry);
player.getPacketDispatch().sendMessage("<col=FF0000>You have unlocked a new music track: " + entry.getName() + ".</col>"); player.getPacketDispatch().sendMessage("<col=FF0000>You have unlocked a new music track: " + entry.getName() + ".</col>");
refreshList(); refreshList();
@@ -40,7 +40,7 @@ class MusicConfigLoader {
val e = config as JSONObject val e = config as JSONObject
val region = Integer.parseInt(e["region"].toString()) val region = Integer.parseInt(e["region"].toString())
val id = Integer.parseInt(e["id"].toString()) val id = Integer.parseInt(e["id"].toString())
RegionManager.forId(region).music = MusicEntry.forId(id) RegionManager.forId(region).music = id
count++ count++
} }
log(this::class.java, Log.FINE, "Parsed $count region music configs.") log(this::class.java, Log.FINE, "Parsed $count region music configs.")
@@ -3,7 +3,6 @@ package core.game.world.map;
import core.cache.Cache; import core.cache.Cache;
import core.game.node.entity.npc.NPC; import core.game.node.entity.npc.NPC;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.music.MusicEntry;
import core.game.node.entity.player.link.music.MusicZone; import core.game.node.entity.player.link.music.MusicZone;
import core.game.system.communication.CommunicationInfo; import core.game.system.communication.CommunicationInfo;
import core.game.system.task.Pulse; import core.game.system.task.Pulse;
@@ -62,9 +61,9 @@ public class Region {
private final List<RegionZone> regionZones = new ArrayList<>(20); private final List<RegionZone> regionZones = new ArrayList<>(20);
/** /**
* The region-wide music track for this region. * The region-wide music track ID for this region.
*/ */
private MusicEntry music = null; private int music = -1;
/** /**
* Any tile-specific music zones lying in this region. * Any tile-specific music zones lying in this region.
@@ -481,15 +480,15 @@ public class Region {
/** /**
* Sets the region-wide music track. * Sets the region-wide music track.
*/ */
public void setMusic(MusicEntry music) { public void setMusic(int music) {
this.music = music; this.music = music;
} }
/** /**
* Gets the region-wide music track * Gets the region-wide music track
* @return The music entry * @return The music entry ID
*/ */
public MusicEntry getMusic() { public int getMusic() {
return this.music; return this.music;
} }
@@ -410,13 +410,13 @@ public final class ZoneMonitor {
return; return;
} }
} }
MusicEntry music = r.getMusic(); int music = r.getMusic();
if (music == null) { if (music == -1) {
if (!player.getMusicPlayer().isPlaying()) { if (!player.getMusicPlayer().isPlaying()) {
player.getMusicPlayer().playDefault(); player.getMusicPlayer().playDefault();
} }
} else { } else {
player.getMusicPlayer().play(music); player.getMusicPlayer().unlock(music, true);
} }
} }