Пример #1
0
        public void Execute(PartyVO party)
        {
            CalendarModel calendar = AmbitionApp.Calendar;

            if (party == null || party.Day < calendar.Day)
            {
                return;
            }

            PartyModel     model   = AmbitionApp.GetModel <PartyModel>();
            List <PartyVO> parties = new List <PartyVO>(calendar.GetOccasions <PartyVO>(party.Day));

            RendezVO[] rendezs = calendar.GetOccasions <RendezVO>(party.Day);
            parties.Remove(party);
            if (party.RSVP == RSVP.Required || (!parties.Exists(p => p.IsAttending) && !Array.Exists(rendezs, r => r.IsAttending)))
            {
                parties.ForEach(p => AmbitionApp.SendMessage(PartyMessages.DECLINE_INVITATION, p));
                Array.ForEach(rendezs, p => AmbitionApp.SendMessage(PartyMessages.DECLINE_INVITATION, p));
                if (party.RSVP != RSVP.Required)
                {
                    party.RSVP = RSVP.Accepted;
                }
                if (party.RSVP != RSVP.Required && party.Created == calendar.Day)
                {
                    CommodityVO reward = new CommodityVO(CommodityType.Credibility, model.AcceptInvitationBonus);
                    AmbitionApp.SendMessage(reward);
                }
                AmbitionApp.SendMessage(CalendarMessages.SCHEDULE, party); // Dispatches Broadcast()
            }
            else
            {
                AmbitionApp.SendMessage(PartyMessages.DECLINE_INVITATION, party);
            }
        }
Пример #2
0
        private bool CheckMissedEvents()
        {
            CalendarModel cal = AmbitionApp.Calendar;

            PartyVO[] parties = cal.GetOccasions <PartyVO>(cal.Day - 1);
            if (Array.Exists(parties, p => p.RSVP == RSVP.New))
            {
                return(true);
            }
            RendezVO[] dates = cal.GetOccasions <RendezVO>(cal.Day - 1);
            return(Array.Exists(dates, r => r.RSVP == RSVP.New && !r.IsCaller));
        }
Пример #3
0
        public override void OnEnter()
        {
            CalendarModel cal = AmbitionApp.Calendar;

            PartyVO[] parties = cal.GetOccasions <PartyVO>(cal.Day - 1);
            PartyVO   party   = Array.Find(parties, p => p.RSVP == RSVP.New);

            if (party != null)
            {
                CommodityVO penalty = new CommodityVO(CommodityType.Credibility, AmbitionApp.GetModel <PartyModel>().IgnoreInvitationPenalty);
                Dictionary <string, string> subs = new Dictionary <string, string>();
                LocalizationModel           loc  = AmbitionApp.GetModel <LocalizationModel>();
                party.RSVP           = RSVP.Declined;
                subs["$PARTYNAME"]   = loc.GetPartyName(party);
                subs["$CREDIBILITY"] = penalty.Value.ToString();
                AmbitionApp.OpenDialog(DialogConsts.MISSED_RSVP_DIALOG, subs);
                AmbitionApp.SendMessage(penalty);
            }
            else
            {
                RendezVO[] dates = cal.GetOccasions <RendezVO>(cal.Day - 1);
                RendezVO   date  = Array.Find(dates, d => d.RSVP == RSVP.New);
                if (date != null)
                {
                    CharacterModel characters  = AmbitionApp.GetModel <CharacterModel>();
                    CharacterVO    character   = characters.GetCharacter(date.Character);
                    bool           isPenalized = !date.IsCaller;
                    date.RSVP = RSVP.Declined;
                    if (character != null)
                    {
                        character.LiaisonDay = -1;
                    }
                    AmbitionApp.SendMessage(date);
                    if (isPenalized)
                    {
                        int         penalty      = characters.MissedRendezvousPenalty;
                        CommodityVO favorPenalty = new CommodityVO()
                        {
                            Type  = CommodityType.Favor,
                            ID    = date.Character,
                            Value = penalty
                        };
                        AmbitionApp.SendMessage(favorPenalty);
                        Dictionary <string, string> subs = new Dictionary <string, string>();
                        subs["$SHORTNAME"] = AmbitionApp.GetModel <LocalizationModel>().GetShortName(character, date.Character);
                        subs["$FAVOR"]     = penalty.ToString();
                        AmbitionApp.OpenDialog(DialogConsts.MISSED_RENDEZVOUS_DIALOG, subs);
                    }
                }
            }
        }
Пример #4
0
        private void HandleCalendarRefresh(CalendarModel calendar)
        {
            PartyVO[]  parties  = calendar.GetOccasions <PartyVO>();
            RendezVO[] liaisons = calendar.GetOccasions <RendezVO>();

            if (Array.Exists(parties, p => p.IsAttending))
            {
                ExitText.text = AmbitionApp.Localize(LocalizationConsts.EXIT_PARTY);
                _needsOutfit  = true;
            }
            else if (Array.Exists(liaisons, r => r.IsAttending))
            {
                ExitText.text = AmbitionApp.Localize(LocalizationConsts.EXIT_RENDEZVOUS);
                _needsOutfit  = true;
            }
            else
            {
                ExitText.text = AmbitionApp.Localize(LocalizationConsts.EXIT_PARIS);
                _needsOutfit  = false;
            }
        }
Пример #5
0
        public void Execute(DateTime date)
        {
            CalendarModel calendar = AmbitionApp.GetModel <CalendarModel>();
            PartyModel    model    = AmbitionApp.GetModel <PartyModel>();

            PartyVO[]  parties = calendar.GetOccasions <PartyVO>(date);
            RendezVO[] dates   = calendar.GetOccasions <RendezVO>(date);
            if (parties.Length + dates.Length > 0)
            {
                PartyVO  party  = Array.Find(parties, p => p.IsAttending);
                RendezVO rendez = Array.Find(dates, p => p.IsAttending);
                if (party != null)
                {
                    AmbitionApp.OpenDialog(DialogConsts.RSVP, new CalendarEvent[] { party });
                }
                else if (rendez != null)
                {
                    AmbitionApp.OpenDialog(DialogConsts.RSVP, new CalendarEvent[] { rendez });
                }
                else
                {
                    List <CalendarEvent> events = new List <CalendarEvent>(parties);
                    events.AddRange(dates);
                    AmbitionApp.OpenDialog(DialogConsts.RSVP, events.ToArray());
                }
            }
            else if (date.Subtract(calendar.Today).Days >= 1 && AmbitionApp.Paris.Rendezvous.Count > 0)
            {
                CharacterModel cModel = AmbitionApp.GetModel <CharacterModel>();
                foreach (CharacterVO character in cModel.Characters.Values)
                {
                    if (character.IsDateable && !character.IsRendezvousScheduled)
                    {
                        AmbitionApp.OpenDialog(DialogConsts.CREATE_RENDEZVOUS, date);
                        break;
                    }
                }
            }
        }