/* * This file is part of Spoutcraft (http://wiki.getspout.org/). * * Spoutcraft is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Spoutcraft is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.getspout.spout.player; import net.minecraft.client.Minecraft; import org.getspout.spout.io.CustomTextureManager; import org.getspout.spout.client.SpoutClient; import org.getspout.spout.gui.Color; public class SimpleSkyManager implements SkyManager{ private int cloudHeight = -999; private int starFrequency = 1500; private int sunPercent = 100; private int moonPercent = 100; private String sunUrl = null; private String moonUrl = null; private Color skyColor = null, fogColor = null, cloudColor = null; @Override public int getCloudHeight() { if (cloudHeight == -999) { return (int)SpoutClient.getHandle().theWorld.worldProvider.getCloudHeight(); } return cloudHeight; } @Override public void setCloudHeight(int y) { this.cloudHeight = y; } @Override public boolean isCloudsVisible() { return getCloudHeight() > -1; } @Override public void setCloudsVisible(boolean visible) { if (isCloudsVisible() != visible) { setCloudHeight(visible ? 108 : -1); } } @Override public int getStarFrequency() { return starFrequency; } @Override public void setStarFrequency(int frequency) { starFrequency = frequency; starFrequency = Math.min(starFrequency, 1000000); Minecraft.theMinecraft.renderGlobal.refreshStars(); } @Override public boolean isStarsVisible() { return starFrequency > -1; } @Override public void setStarsVisible(boolean visible) { if (isStarsVisible() != visible) { setStarFrequency(visible ? 1500 : -1); } } @Override public int getSunSizePercent() { return sunPercent; } @Override public void setSunSizePercent(int percent) { sunPercent = percent; } @Override public boolean isSunVisible() { return sunPercent > -1; } @Override public void setSunVisible(boolean visible) { if (isSunVisible() != visible) { setSunSizePercent(visible ? 100 : -1); } } @Override public String getSunTextureUrl() { return sunUrl; } @Override public void setSunTextureUrl(String Url) { if (sunUrl != null) { //TODO release image? } sunUrl = Url; if (Url != null) { CustomTextureManager.downloadTexture(Url); } } @Override public int getMoonSizePercent() { return moonPercent; } @Override public void setMoonSizePercent(int percent) { moonPercent = percent; } @Override public boolean isMoonVisible() { return moonPercent > -1; } @Override public void setMoonVisible(boolean visible) { if (isMoonVisible() != visible) { setMoonSizePercent(visible ? 100 : -1); } } @Override public String getMoonTextureUrl() { return moonUrl; } @Override public void setMoonTextureUrl(String Url) { if (moonUrl != null) { //TODO release image? } moonUrl = Url; if (Url != null) { CustomTextureManager.downloadTexture(Url); } } @Override public void setSkyColor(float red, float green, float blue) { skyColor.setRed(red).setGreen(green).setBlue(blue); } @Override public void setSkyColor(Color color) { if(color!=null) skyColor = color.clone(); else skyColor = null; } @Override public Color getSkyColor() { if(skyColor == null){ return null; } return skyColor.clone(); } @Override public void setFogColor(Color color) { if(color!=null) this.fogColor = color.clone(); else fogColor = null; } @Override public Color getFogColor() { if(fogColor == null){ return null; } return fogColor.clone(); } @Override public void setCloudColor(Color color){ if(color!=null) this.cloudColor = color.clone(); else cloudColor = null; } @Override public Color getCloudColor(){ return this.cloudColor; } }