Skip to content

Commit

Permalink
Allow use by other overlays
Browse files Browse the repository at this point in the history
  • Loading branch information
dima-dencep committed Jan 23, 2024
1 parent 13770fa commit 8cde785
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 25 deletions.
Expand Up @@ -15,13 +15,10 @@

@SuppressWarnings("unused")
public interface OverlayExtender {
default OverlayHelper.State rrls$getState() {
return OverlayHelper.State.DEFAULT;
}

default void rrls$setState(OverlayHelper.State state) {
}
OverlayHelper.State rrls$getState();
void rrls$setState(OverlayHelper.State state);

default void rrls$miniRender(DrawContext context) {
throw new UnsupportedOperationException("The '" + getClass().getCanonicalName() + "' overlay doesn't have a mini-render!");
}
}
Expand Up @@ -39,8 +39,6 @@

@Mixin(SplashOverlay.class)
public abstract class SplashOverlayMixin extends Overlay {
@Unique
public OverlayHelper.State rrls$state = OverlayHelper.State.DEFAULT;
@Shadow
public float progress;
@Shadow
Expand All @@ -57,17 +55,7 @@ public abstract class SplashOverlayMixin extends Overlay {
)
)
private void rrls$init(MinecraftClient client, ResourceReload monitor, Consumer<Optional<Throwable>> exceptionHandler, boolean reloading, CallbackInfo ci) {
this.rrls$state = OverlayHelper.lookupState(client.currentScreen, reloading);
}

@Override
public OverlayHelper.State rrls$getState() {
return this.rrls$state;
}

@Override
public void rrls$setState(OverlayHelper.State state) {
rrls$state = state;
rrls$setState(OverlayHelper.lookupState(client.currentScreen, reloading));
}

@Override
Expand Down Expand Up @@ -97,8 +85,8 @@ public abstract class SplashOverlayMixin extends Overlay {
)
)
public void rrls$render(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (rrls$state != OverlayHelper.State.DEFAULT) // Update attach (Optifine ❤️)
this.rrls$state = OverlayHelper.lookupState(client.currentScreen, this.rrls$state != OverlayHelper.State.WAIT);
if (rrls$getState() != OverlayHelper.State.DEFAULT) // Update attach (Optifine ❤️)
rrls$setState(OverlayHelper.lookupState(client.currentScreen, rrls$getState() != OverlayHelper.State.WAIT));
}

@WrapWithCondition(
Expand Down Expand Up @@ -182,7 +170,7 @@ public abstract class SplashOverlayMixin extends Overlay {
);
}

if (ConfigExpectPlatform.rgbProgress() && this.rrls$state != OverlayHelper.State.DEFAULT) {
if (ConfigExpectPlatform.rgbProgress() && rrls$getState() != OverlayHelper.State.DEFAULT) {
int baseColor = ThreadLocalRandom.current().nextInt(0, 0xFFFFFF);

return ColorHelper.Argb.getArgb(
Expand Down
Expand Up @@ -11,6 +11,7 @@
package com.github.dimadencep.mods.rrls.mixins.compat;

import com.github.dimadencep.mods.rrls.ConfigExpectPlatform;
import com.github.dimadencep.mods.rrls.Rrls;
import com.github.dimadencep.mods.rrls.utils.DummyDrawContext;
import com.github.dimadencep.mods.rrls.utils.OverlayHelper;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
Expand Down Expand Up @@ -58,9 +59,14 @@ public class GameRendererMixin {
)
)
public void rrls$miniRender(float tickDelta, long startTime, boolean tick, CallbackInfo ci, @Local(ordinal = 0) DrawContext drawContext) {
Overlay overlay = this.client.getOverlay();
try {
Overlay overlay = this.client.getOverlay();

if (ConfigExpectPlatform.miniRender() && OverlayHelper.isRenderingState(overlay))
overlay.rrls$miniRender(drawContext);
if (ConfigExpectPlatform.miniRender() && OverlayHelper.isRenderingState(overlay))
overlay.rrls$miniRender(drawContext);

} catch (RuntimeException ex) {
Rrls.LOGGER.error(ex);
}
}
}
Expand Up @@ -11,13 +11,28 @@
package com.github.dimadencep.mods.rrls.mixins.compat;

import com.github.dimadencep.mods.rrls.duck.OverlayExtender;
import com.github.dimadencep.mods.rrls.utils.OverlayHelper;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import net.minecraft.client.gui.screen.Overlay;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(Overlay.class)
public class OverlayMixin implements OverlayExtender {
@Unique
public OverlayHelper.State rrls$state = OverlayHelper.State.DEFAULT;

@Override
public OverlayHelper.State rrls$getState() {
return rrls$state;
}

@Override
public void rrls$setState(OverlayHelper.State state) {
this.rrls$state = state;
}

@ModifyReturnValue(
method = "pausesGame",
at = @At(
Expand Down

0 comments on commit 8cde785

Please sign in to comment.