package joshie.harvest.calendar.data;
import joshie.harvest.api.calendar.CalendarDate;
import joshie.harvest.api.calendar.Season;
import joshie.harvest.api.calendar.SeasonProvider;
import joshie.harvest.api.calendar.Weather;
import joshie.harvest.calendar.CalendarAPI;
import joshie.harvest.core.util.HFTracker;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nullable;
import static joshie.harvest.api.calendar.Weather.SUNNY;
public abstract class Calendar extends HFTracker implements SeasonProvider {
public abstract CalendarDate getDate();
@Override
public Season getSeasonAtPos(World world, @Nullable BlockPos pos) {
return getDate().getSeason();
}
/* ############# Season Data ################*/
private SeasonData data;
public SeasonData getSeasonData() {
if (data == null) {
onSeasonChanged();
}
return data;
}
public void onSeasonChanged() {
this.data = CalendarAPI.INSTANCE.getDataForSeason(getDate().getSeason());
}
/* ############# Weather ################*/
Weather[] forecast = new Weather[7];
int rainStrength;
int stormStrength;
public Calendar() {
for (int i = 0; i < 7; i++) {
forecast[i] = Weather.SUNNY;
}
}
public Weather getTodaysWeather() {
return forecast[0] != null ? forecast[0] : SUNNY;
}
public int getTodaysRainStrength() {
return rainStrength;
}
public int getTodaysStormStrength() {
return stormStrength;
}
void updateWeatherStrength() {
switch (forecast[0]) {
case SUNNY:
rainStrength = 0;
stormStrength = 0;
break;
case RAIN:
case SNOW:
rainStrength = 100;
stormStrength = 0;
break;
case TYPHOON:
rainStrength = 20;
stormStrength = 100;
break;
case BLIZZARD:
rainStrength = 20;
stormStrength = 0;
break;
default:
break;
}
}
}