Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static evdate_u decode_date(evdate_u* enc_date) {
- evdate_u date;
- date.d.month = enc_date->d.month;
- /* Check for event that happens month */
- if (date.d.month == EV_SPDATE_EVERYMONTH) {
- date.d.month = ZCommonGet(time.rtcTime.month);
- }
- date.d.day = enc_date->d.day;
- /* Check for last day of month event */
- if (date.d.day == EV_SPDATE_LASTDAY) {
- date.d.day = last_day_of_month(date.d.month);
- }
- /* Check if the event's date is a "cached" day in the game save */
- if (date.d.month > EV_SPDATE_LASTDAY) {
- date.v = SaveGet(
- event.xday[date.d.month - 100]); /* Save data is month-day pairing */
- }
- date.d.flag = enc_date->d.flag;
- date.d.hour = enc_date->d.hour;
- /* Check if the event's hour is a "cached" time in the game save */
- if ((date.d.hour & 0x20) != 0) {
- date.d.hour =
- (char)SaveGet(event.xday[date.d.hour & 0x1F]) | (date.d.hour & 0xC0);
- }
- /* Check if date is Japanese Lunar Calendar format */
- if (date.d.month >= 80) {
- date.d.month -= 80;
- if (date.d.month < lbRk_KYUU_LEAP_MONTH) {
- date.v = kyu2sei(&date); /* Standard Lunar conversion */
- } else {
- /* Calculate Lunar New Year */
- evdate_u lunar_newyear;
- lunar_newyear.d.month = lbRk_KYUU_MONTH_START;
- lunar_newyear.d.day = DAY_01;
- lunar_newyear.d.flag = 0;
- lunar_newyear.d.flag = TIME_00;
- /* Lunar New Year date conversion */
- lunar_newyear.v = kyu2sei(&lunar_newyear);
- if (date.d.day == DAY_30) {
- if (lunar_newyear.v != to_ev_month_day(FEBRUARY, DAY_01)) {
- date.d.month = lunar_newyear.d.month;
- date.d.day = lunar_newyear.d.day - 1;
- } else {
- date.d.day = DAY_31;
- date.d.month = JANUARY;
- }
- } else if (date.d.day == 29) {
- if (lunar_newyear.v == to_ev_month_day(FEBRUARY, DAY_02)) {
- date.d.day = DAY_31;
- date.d.month = JANUARY;
- } else if (lunar_newyear.v == to_ev_month_day(FEBRUARY, DAY_01)) {
- date.d.day = DAY_30;
- date.d.month = JANUARY;
- } else {
- date.d.month = lunar_newyear.d.month;
- date.d.day = lunar_newyear.d.day - 2;
- }
- } else if (date.d.day == DAY_25) {
- if (lunar_newyear.v == to_ev_month_day(FEBRUARY, DAY_05)) {
- date.d.day = DAY_31;
- date.d.month = JANUARY;
- } else if (lunar_newyear.v == to_ev_month_day(FEBRUARY, DAY_04)) {
- date.d.day = DAY_30;
- date.d.month = JANUARY;
- } else if (lunar_newyear.v == to_ev_month_day(FEBRUARY, DAY_03)) {
- date.d.day = DAY_29;
- date.d.month = JANUARY;
- } else if (lunar_newyear.v == to_ev_month_day(FEBRUARY, DAY_02)) {
- date.d.day = DAY_28;
- date.d.month = JANUARY;
- } else if (lunar_newyear.v == to_ev_month_day(FEBRUARY, DAY_01)) {
- date.d.day = DAY_27;
- date.d.month = JANUARY;
- } else if (lunar_newyear.v == to_ev_month_day(JANUARY, DAY_05)) {
- date.d.day = DAY_31;
- date.d.month = DECEMBER;
- } else if (lunar_newyear.v == to_ev_month_day(JANUARY, DAY_04)) {
- date.d.day = DAY_30;
- date.d.month = DECEMBER;
- } else if (lunar_newyear.v == to_ev_month_day(JANUARY, DAY_03)) {
- date.d.day = DAY_29;
- date.d.month = DECEMBER;
- } else if (lunar_newyear.v == to_ev_month_day(JANUARY, DAY_02)) {
- date.d.day = DAY_28;
- date.d.month = DECEMBER;
- } else if (lunar_newyear.v == to_ev_month_day(JANUARY, DAY_01)) {
- date.d.day = DAY_27;
- date.d.month = DECEMBER;
- } else {
- date.d.day = lunar_newyear.d.day - 5;
- date.d.month = lunar_newyear.d.month;
- }
- }
- }
- }
- /* Check for day of week event */
- if ((date.d.day & 0x80) != 0) {
- date.d.day = m_weekday2day(date.d.month, date.d.day);
- }
- return date;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement