public EffectsMapObject(Map map, int x1, int y1, int x2, int y2) : base(map, x1, y1, x2, y2) { m_SpringDate = new DatePropsObject(); m_SummerDate = new DatePropsObject(); m_FallDate = new DatePropsObject(); m_WinterDate = new DatePropsObject(); m_SpringDate.Season = Season.Spring; m_SummerDate.Season = Season.Summer; m_FallDate.Season = Season.Fall; m_WinterDate.Season = Season.Winter; }
public Season GetLateralSeason(Map map, int x, int y) { if (!Data.UseSeasons || !m_UseSeasons || !IsIn(map, x, y) || ContainsInvalidDate()) { return Season.None; } DatePropsObject[] dpos = new DatePropsObject[] { m_SpringDate, m_SummerDate, m_FallDate, m_WinterDate }; Season season = Season.None; DatePropsObject dateProps = new DatePropsObject(); for (int i = 0; i < dpos.Length; i++) { DatePropsObject dpo = dpos[i]; if ((dpo.Month == dateProps.Month && dpo.Day > dateProps.Day) || dpo.Month > dateProps.Month) { dateProps.Month = dpo.Month; dateProps.Day = dpo.Day; season = dpo.Season; if (UseLatitude) { int height = Y2 - Y1; int middleLatitude = Y1 + (int)(height / 2); if (y > middleLatitude) { season = dpo.OppositeSeason(); } } } } int month = 0, day = 0; TimeEngine.GetTimeMonthDay(map, x, out month, out day); int setMonth = 0; for (int i = 0; i < dpos.Length; i++) { DatePropsObject dpo = dpos[i]; int seasonMonth = dpo.Month; int seasonDay = dpo.Day; if ((month == seasonMonth && day >= seasonDay) || month > seasonMonth) { if (setMonth <= seasonMonth) { setMonth = seasonMonth; season = dpo.Season; if (UseLatitude) { int height = Y2 - Y1; int middleLatitude = Y1 + (int)(height / 2); if (y > middleLatitude) { season = dpo.OppositeSeason(); } } } } } return season; }
public bool ContainsInvalidDate() { DatePropsObject[] dpos = new DatePropsObject[] { m_SpringDate, m_SummerDate, m_FallDate, m_WinterDate }; for (int i = 0; i < dpos.Length; i++) { DatePropsObject dpo = dpos[i]; if (dpo != null) { if (!IsValidDate(dpo.Month, dpo.Day)) { return true; } } else { return true; } } return false; }