Package com.prupe.mcpatcher.sky

Source Code of com.prupe.mcpatcher.sky.SkyRenderer$WorldEntry

package com.prupe.mcpatcher.sky;

import com.prupe.mcpatcher.TexturePackAPI;
import com.prupe.mcpatcher.sky.SkyRenderer$Layer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import net.minecraft.src.ResourceLocation;
import net.minecraft.src.Tessellator;

class SkyRenderer$WorldEntry {
  private final int worldType;
  private final List<SkyRenderer$Layer> skies = new ArrayList();
  private final Map<ResourceLocation, SkyRenderer$Layer> objects = new HashMap();
  private final Set<ResourceLocation> textures = new HashSet();

  SkyRenderer$WorldEntry(int worldType) {
    this.worldType = worldType;
    this.loadSkies();
    this.loadCelestialObject("sun");
    this.loadCelestialObject("moon_phases");
  }

  private void loadSkies() {
    int i = -1;

    while (true) {
      String path = "sky/world" + this.worldType + "/sky" + (i < 0 ? "" : String.valueOf(i)) + ".properties";
      ResourceLocation resource = TexturePackAPI.newMCPatcherResourceLocation(path);
      SkyRenderer$Layer layer = SkyRenderer$Layer.create(resource);

      if (layer == null) {
        if (i > 0) {
          return;
        }
      } else if (layer.valid) {
        SkyRenderer.access$400().fine("loaded %s", new Object[] {resource});
        this.skies.add(layer);
        this.textures.add(SkyRenderer$Layer.access$300(layer));
      }

      ++i;
    }
  }

  private void loadCelestialObject(String objName) {
    ResourceLocation textureName = new ResourceLocation("textures/environment/" + objName + ".png");
    ResourceLocation resource = TexturePackAPI.newMCPatcherResourceLocation("sky/world0/" + objName + ".properties");
    Properties properties = TexturePackAPI.getProperties(resource);

    if (properties != null) {
      properties.setProperty("fade", "false");
      properties.setProperty("rotate", "true");
      SkyRenderer$Layer layer = new SkyRenderer$Layer(resource, properties);

      if (layer.valid) {
        SkyRenderer.access$400().fine("using %s (%s) for the %s", new Object[] {resource, SkyRenderer$Layer.access$300(layer), objName});
        this.objects.put(textureName, layer);
      }
    }
  }

  boolean active() {
    return !this.skies.isEmpty() || !this.objects.isEmpty();
  }

  void renderAll(Tessellator tessellator) {
    HashSet texturesNeeded = new HashSet();
    Iterator texturesToUnload = this.skies.iterator();

    while (texturesToUnload.hasNext()) {
      SkyRenderer$Layer i$ = (SkyRenderer$Layer)texturesToUnload.next();

      if (i$.prepare()) {
        texturesNeeded.add(SkyRenderer$Layer.access$300(i$));
      }
    }

    HashSet texturesToUnload1 = new HashSet();
    texturesToUnload1.addAll(this.textures);
    texturesToUnload1.removeAll(texturesNeeded);
    Iterator i$1 = texturesToUnload1.iterator();

    while (i$1.hasNext()) {
      ResourceLocation layer = (ResourceLocation)i$1.next();
      TexturePackAPI.unloadTexture(layer);
    }

    i$1 = this.skies.iterator();

    while (i$1.hasNext()) {
      SkyRenderer$Layer layer1 = (SkyRenderer$Layer)i$1.next();

      if (layer1.brightness > 0.0F) {
        layer1.render(tessellator);
        SkyRenderer$Layer.clearBlendingMethod();
      }
    }
  }

  SkyRenderer$Layer getCelestialObject(ResourceLocation defaultTexture) {
    return (SkyRenderer$Layer)this.objects.get(defaultTexture);
  }

  void unloadTextures() {
    Iterator i$ = this.skies.iterator();

    while (i$.hasNext()) {
      SkyRenderer$Layer layer = (SkyRenderer$Layer)i$.next();
      TexturePackAPI.unloadTexture(SkyRenderer$Layer.access$300(layer));
    }
  }
}
TOP

Related Classes of com.prupe.mcpatcher.sky.SkyRenderer$WorldEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.