Skip to content

Commit

Permalink
Allow configuration of minimum and maximum camera distance in main ga…
Browse files Browse the repository at this point in the history
…me screen (#7603)

* Variable min and max zoom

* Variable min and max zoom

* Variable min and max zoom

---------

Co-authored-by: ivan <[email protected]>
Co-authored-by: Anuken <[email protected]>
  • Loading branch information
3 people authored Feb 10, 2025
1 parent 0db7c1e commit 0d96a68
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
3 changes: 3 additions & 0 deletions core/assets/bundles/bundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1262,6 +1262,9 @@ setting.macnotch.name = Adapt interface to display notch
setting.macnotch.description = Restart required to apply changes
steam.friendsonly = Friends Only
steam.friendsonly.tooltip = Whether only Steam friends will be able to join your game.\nUnchecking this box will make your game public - anyone can join.
setting.maxmagnificationmultiplierpercent.name = Min Camera Distance
setting.minmagnificationmultiplierpercent.name = Max Camera Distance
setting.minmagnificationmultiplierpercent.description = High values may cause performance issues.
public.beta = Note that beta versions of the game cannot make public lobbies.
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
uiscale.cancel = Cancel & Exit
Expand Down
13 changes: 10 additions & 3 deletions core/src/mindustry/core/Renderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,11 @@ public class Renderer implements ApplicationListener{
public FrameBuffer effectBuffer = new FrameBuffer();
public boolean animateShields, drawWeather = true, drawStatus, enableEffects, drawDisplays = true, drawLight = true, pixelate = false;
public float weatherAlpha;
/** minZoom = zooming out, maxZoom = zooming in */
/** minZoom = zooming out, maxZoom = zooming in, used by cutscenes */
public float minZoom = 1.5f, maxZoom = 6f;

/** minZoom = zooming out, maxZoom = zooming in, used by actual gameplay zoom and regulated by settings **/
public float minZoomInGame = 0.5f, maxZoomInGame = 6f;
public Seq<EnvRenderer> envRenderers = new Seq<>();
public ObjectMap<String, Runnable> customBackgrounds = new ObjectMap<>();
public TextureRegion[] bubbles = new TextureRegion[16], splashes = new TextureRegion[12];
Expand Down Expand Up @@ -165,6 +168,8 @@ public void update(){
drawStatus = settings.getBool("blockstatus");
enableEffects = settings.getBool("effects");
drawDisplays = !settings.getBool("hidedisplays");
maxZoomInGame = settings.getFloat("maxzoomingamemultiplier", 1) * maxZoom;
minZoomInGame = minZoom / settings.getFloat("minzoomingamemultiplier", 1);
drawLight = settings.getBool("drawlight", true);
pixelate = settings.getBool("pixelate");

Expand Down Expand Up @@ -486,11 +491,13 @@ public float getDisplayScale(){
}

public float minScale(){
return Scl.scl(minZoom);
if(control.input.logicCutscene) return Scl.scl(minZoom);
return Scl.scl(minZoomInGame);
}

public float maxScale(){
return Mathf.round(Scl.scl(maxZoom));
if(control.input.logicCutscene) return Mathf.round(Scl.scl(maxZoom));
return Mathf.round(Scl.scl(maxZoomInGame));
}

public float getScale(){
Expand Down
15 changes: 15 additions & 0 deletions core/src/mindustry/ui/dialogs/SettingsMenuDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -397,8 +397,23 @@ void addSettings(){
}
return s + "%";
});

graphics.sliderPref("unitlaseropacity", 100, 0, 100, 5, s -> s + "%");
graphics.sliderPref("bridgeopacity", 100, 0, 100, 5, s -> s + "%");

graphics.sliderPref("maxmagnificationmultiplierpercent", 100, 100, 200, 25, s -> {
if(ui.settings != null){
Core.settings.put("maxzoomingamemultiplier", (float)s / 100.0f);
}
return s + "%";
});

graphics.sliderPref("minmagnificationmultiplierpercent", 100, 100, 300, 25, s -> {
if(ui.settings != null){
Core.settings.put("minzoomingamemultiplier", (float)s / 100.0f);
}
return s + "%";
});

if(!mobile){
graphics.checkPref("vsync", true, b -> Core.graphics.setVSync(b));
Expand Down

0 comments on commit 0d96a68

Please sign in to comment.