Package mekanism.client

Source Code of mekanism.client.HolidayManager$YearlyDate

package mekanism.client;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import mekanism.api.EnumColor;
import mekanism.common.Mekanism;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText;

public final class HolidayManager
{
  private static Calendar calendar = Calendar.getInstance();
  private static Minecraft mc = Minecraft.getMinecraft();

  public static List<Holiday> holidays = new ArrayList<Holiday>();
  private static List<Holiday> holidaysNotified = new ArrayList<Holiday>();

  public static void init()
  {
    if(MekanismClient.holidays)
    {
      holidays.add(new Christmas());
      holidays.add(new NewYear());
    }

    Mekanism.logger.info("Initialized HolidayManager.");
  }

  public static void check()
  {
    try {
      YearlyDate date = getDate();

      for(Holiday holiday : holidays)
      {
        if(!holidaysNotified.contains(holiday))
        {
          if(holiday.getDate().equals(date))
          {
            holiday.onEvent(mc.thePlayer);
            holidaysNotified.add(holiday);
          }
        }
      }
    } catch(Exception e) {}
  }

  public static String filterSound(String sound)
  {
    if(!MekanismClient.holidays)
    {
      return sound;
    }

    try {
      YearlyDate date = getDate();

      for(Holiday holiday : holidays)
      {
        if(holiday.getDate().equals(date))
        {
          return holiday.filterSound(sound);
        }
      }
    } catch(Exception e) {}

    return sound;
  }

  private static YearlyDate getDate()
  {
    return new YearlyDate(calendar.get(Calendar.MONTH)+1, calendar.get(Calendar.DAY_OF_MONTH));
  }

  public static abstract class Holiday
  {
    public abstract YearlyDate getDate();

    public abstract void onEvent(EntityPlayer player);

    public String filterSound(String sound)
    {
      return sound;
    }
  }

  private static class Christmas extends Holiday
  {
    private String[] nutcracker = new String[] {"holiday/Nutcracker1.ogg", "holiday/Nutcracker2.ogg", "holiday/Nutcracker3.ogg", "holiday/Nutcracker4.ogg", "holiday/Nutcracker5.ogg"};

    @Override
    public YearlyDate getDate()
    {
      return new YearlyDate(12, 25);
    }

    @Override
    public void onEvent(EntityPlayer player)
    {
      String themedLines = getThemedLines(new EnumColor[] {EnumColor.DARK_GREEN, EnumColor.DARK_RED}, 13);
      player.addChatMessage(new ChatComponentText(themedLines + EnumColor.DARK_BLUE + "[Mekanism]" + themedLines));
      player.addChatMessage(new ChatComponentText(EnumColor.RED + "Merry Christmas, " + EnumColor.DARK_BLUE + player.getCommandSenderName() + EnumColor.RED + "!"));
      player.addChatMessage(new ChatComponentText(EnumColor.RED + "May you have plenty of Christmas cheer"));
      player.addChatMessage(new ChatComponentText(EnumColor.RED + "and have a relaxing holiday with your"));
      player.addChatMessage(new ChatComponentText(EnumColor.RED + "family :)"));
      player.addChatMessage(new ChatComponentText(EnumColor.DARK_GREY + "-aidancbrady"));
      player.addChatMessage(new ChatComponentText(themedLines + EnumColor.DARK_BLUE + "[=======]" + themedLines));
    }

    @Override
    public String filterSound(String sound)
    {
      if(sound.equals("Chamber.ogg"))
      {
        return nutcracker[0];
      }
      else if(sound.equals("MetallurgicInfuser.ogg"))
      {
        return nutcracker[1];
      }
      else if(sound.equals("PurificationChamber.ogg"))
      {
        return nutcracker[2];
      }
      else if(sound.equals("Smelter.ogg"))
      {
        return nutcracker[3];
      }
      else if(sound.equals("HeatGenerator.ogg"))
      {
        return nutcracker[4];
      }

      return sound;
    }
  }

  private static class NewYear extends Holiday
  {
    @Override
    public YearlyDate getDate()
    {
      return new YearlyDate(1, 1);
    }

    @Override
    public void onEvent(EntityPlayer player)
    {
      String themedLines = getThemedLines(new EnumColor[] {EnumColor.WHITE, EnumColor.YELLOW}, 13);
      player.addChatMessage(new ChatComponentText(themedLines + EnumColor.DARK_BLUE + "[Mekanism]" + themedLines));
      player.addChatMessage(new ChatComponentText(EnumColor.AQUA + "Happy New Year, " + EnumColor.DARK_BLUE + player.getCommandSenderName() + EnumColor.RED + "!"));
      player.addChatMessage(new ChatComponentText(EnumColor.AQUA + "Best wishes to you as we enter this"));
      player.addChatMessage(new ChatComponentText(EnumColor.AQUA + "new and exciting year of " + calendar.get(Calendar.YEAR) + "! :)"));
      player.addChatMessage(new ChatComponentText(EnumColor.DARK_GREY + "-aidancbrady"));
      player.addChatMessage(new ChatComponentText(themedLines + EnumColor.DARK_BLUE + "[=======]" + themedLines));
    }
  }

  public static enum Month
  {
    JANUARY("January"),
    FEBRUARY("February"),
    MARCH("March"),
    APRIL("April"),
    MAY("May"),
    JUNE("June"),
    JULY("July"),
    AUGUST("August"),
    SEPTEMBER("September"),
    OCTOBER("October"),
    NOVEMBER("November"),
    DECEMBER("December");

    private final String name;

    private Month(String n)
    {
      name = n;
    }

    public String getName()
    {
      return name;
    }

    public int month()
    {
      return ordinal()+1;
    }
  }

  public static class YearlyDate
  {
    public Month month;

    public int day;

    public YearlyDate(Month m, int d)
    {
      month = m;
      day = d;
    }

    public YearlyDate(int m, int d)
    {
      this(Month.values()[m-1], d);
    }

    @Override
    public boolean equals(Object obj)
    {
      return obj instanceof YearlyDate && ((YearlyDate)obj).month == month && ((YearlyDate)obj).day == day;
    }

    @Override
    public int hashCode()
    {
      int code = 1;
      code = 31 * code + month.ordinal();
      code = 31 * code + day;
      return code;
    }
  }

  private static String getThemedLines(EnumColor[] colors, int amount)
  {
    StringBuilder builder = new StringBuilder();

    for(int i = 0; i < amount; i++)
    {
      builder.append(colors[i%colors.length] + "-");
    }

    return builder.toString();
  }
}
TOP

Related Classes of mekanism.client.HolidayManager$YearlyDate

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.