Allow PlaySound To Work Normally With High IPT World Processor (#10083)
* allow global sound to play more than once per frame might need an arc pr for the positional * carhash * thing * extra field * change "check frame" to "limit" * description * Update core/assets/bundles/bundle.properties --------- Co-authored-by: Anuken <arnukren@gmail.com>
This commit is contained in:
@@ -2563,6 +2563,8 @@ unitlocate.outx = Output X coordinate.
|
|||||||
unitlocate.outy = Output Y coordinate.
|
unitlocate.outy = Output Y coordinate.
|
||||||
unitlocate.group = Building group to look for.
|
unitlocate.group = Building group to look for.
|
||||||
|
|
||||||
|
playsound.limit = If true, prevents this sound from playing\nif it has already been played in the same frame.
|
||||||
|
|
||||||
lenum.idle = Don't move, but keep building/mining.\nThe default state.
|
lenum.idle = Don't move, but keep building/mining.\nThe default state.
|
||||||
lenum.stop = Stop moving/mining/building.
|
lenum.stop = Stop moving/mining/building.
|
||||||
lenum.unbind = Completely disable logic control.\nResume standard AI.
|
lenum.unbind = Completely disable logic control.\nResume standard AI.
|
||||||
|
|||||||
@@ -1919,12 +1919,12 @@ public class LExecutor{
|
|||||||
|
|
||||||
public static class PlaySoundI implements LInstruction{
|
public static class PlaySoundI implements LInstruction{
|
||||||
public boolean positional;
|
public boolean positional;
|
||||||
public LVar id, volume, pitch, pan, x, y;
|
public LVar id, volume, pitch, pan, x, y, limit;
|
||||||
|
|
||||||
public PlaySoundI(){
|
public PlaySoundI(){
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlaySoundI(boolean positional, LVar id, LVar volume, LVar pitch, LVar pan, LVar x, LVar y){
|
public PlaySoundI(boolean positional, LVar id, LVar volume, LVar pitch, LVar pan, LVar x, LVar y, LVar limit){
|
||||||
this.positional = positional;
|
this.positional = positional;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.volume = volume;
|
this.volume = volume;
|
||||||
@@ -1932,6 +1932,7 @@ public class LExecutor{
|
|||||||
this.pan = pan;
|
this.pan = pan;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
|
this.limit = limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1940,9 +1941,9 @@ public class LExecutor{
|
|||||||
if(sound == null || sound == Sounds.swish) sound = Sounds.none; //no.
|
if(sound == null || sound == Sounds.swish) sound = Sounds.none; //no.
|
||||||
|
|
||||||
if(positional){
|
if(positional){
|
||||||
sound.at(World.unconv(x.numf()), World.unconv(y.numf()), pitch.numf(), Math.min(volume.numf(), 2f));
|
sound.at(World.unconv(x.numf()), World.unconv(y.numf()), pitch.numf(), Math.min(volume.numf(), 2f), limit.bool());
|
||||||
}else{
|
}else{
|
||||||
sound.play(Math.min(volume.numf() * (Core.settings.getInt("sfxvol") / 100f), 2f), pitch.numf(), pan.numf());
|
sound.play(Math.min(volume.numf() * (Core.settings.getInt("sfxvol") / 100f), 2f), pitch.numf(), pan.numf(), false, limit.bool());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2127,7 +2127,7 @@ public class LStatements{
|
|||||||
@RegisterStatement("playsound")
|
@RegisterStatement("playsound")
|
||||||
public static class PlaySoundStatement extends LStatement{
|
public static class PlaySoundStatement extends LStatement{
|
||||||
public boolean positional;
|
public boolean positional;
|
||||||
public String id = "@sfx-pew", volume = "1", pitch = "1", pan = "0", x = "@thisx", y = "@thisy";
|
public String id = "@sfx-pew", volume = "1", pitch = "1", pan = "0", x = "@thisx", y = "@thisy", limit = "true";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(Table table){
|
public void build(Table table){
|
||||||
@@ -2169,6 +2169,10 @@ public class LStatements{
|
|||||||
}else{
|
}else{
|
||||||
fieldst(table, "pan", pan, str -> pan = str);
|
fieldst(table, "pan", pan, str -> pan = str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.row();
|
||||||
|
|
||||||
|
fieldst(table, "limit", limit, str -> limit = str);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -2178,7 +2182,7 @@ public class LStatements{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LInstruction build(LAssembler builder){
|
public LInstruction build(LAssembler builder){
|
||||||
return new PlaySoundI(positional, builder.var(id), builder.var(volume), builder.var(pitch), builder.var(pan), builder.var(x), builder.var(y));
|
return new PlaySoundI(positional, builder.var(id), builder.var(volume), builder.var(pitch), builder.var(pan), builder.var(x), builder.var(y), builder.var(limit));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user