Пример #1
0
 public void DelayNotice(DecisionId id, NoticeAction act, TimeSpan span)
 {
     _delayedNotices.RemoveAll(n => n.Id == id);
     _delayedNotices.Add(new DelayedNotice {
         Id = id, Time = Date.Add(span), Action = act
     });
 }
Пример #2
0
    void UpdateEvents()
    {
        if (UnityEngine.Random.value > _parameters.RanomEventChance)
        {
            return;
        }
        var availableEvents = GetAvailableEvents();

        if (availableEvents.Count > 0)
        {
            var ev = availableEvents[UnityEngine.Random.Range(0, availableEvents.Count)];
            _usedEvents.Add(ev);
            var msg = ev.EventMessage;
            var act = new NoticeAction(msg, LowPriority, ev.Cancelable, ok => {
                if (ok)
                {
                    if (!string.IsNullOrWhiteSpace(ev.OkMessage.Title))
                    {
                        EnqueNotice(new NoticeAction(ev.OkMessage, LowPriority));
                    }
                    ApplyDecision(ev.Decision, false);
                }
                else
                {
                    if (!string.IsNullOrWhiteSpace(ev.CancelMessage.Title))
                    {
                        EnqueNotice(new NoticeAction(ev.CancelMessage, LowPriority));
                    }
                }
            });
            EnqueNotice(act);
        }
    }
Пример #3
0
 public void Init(NoticeAction action)
 {
     Header.text = action.Title;
     _callback   = action.Callback;
     CancelButton.gameObject.SetActive(action.Cancelable);
     Show.Invoke();
     ContentEffect.SetupText(action.Content);
 }
Пример #4
0
 public void EnqueNoticeOnce(NoticeAction act)
 {
     if (_oneTimeNotices.Contains(act.Title))
     {
         return;
     }
     _oneTimeNotices.Add(act.Title);
     EnqueNotice(act);
 }
Пример #5
0
        public async Task Run()
        {
            var nickName = configuration["NickName"];
            var userName = configuration["UserName"];
            var realName = configuration["RealName"];
            var channels = configuration["Channels"].Split(',').Select(x => x.Trim()).ToList();

            ircLayer = new IrcLayer(configuration);

            var server = configuration["Server"];

            if (string.IsNullOrWhiteSpace(server))
            {
                throw new Exception("No server given");
            }

            var hasPort = int.TryParse(configuration["Port"], out var port);

            bool.TryParse(configuration["UseSsl"], out var useSsl);

            if (!hasPort)
            {
                port = useSsl ? 6697 : 6667;
            }

            nexmo = new NexmoClient(configuration);
            noticeActions.AddRange(NoticeAction.GetAll(ircLayer, nexmo, configuration));
            channelActions.AddRange(ChannelAction.GetAll(ircLayer, nexmo, configuration));
            channelCommands.AddRange(Command.GetAll(ircLayer, nexmo, configuration));

            ircLayer.OnMessageReceived += IrcLayerOnOnMessageReceived;
            ircLayer.OnNoticeReceived  += IrcLayerOnOnNoticeReceived;
            ircLayer.OnQueryReceived   += IrcLayerOnOnQueryReceived;
            ircLayer.Disconnected      += IrcLayerDisconnected;
            await ircLayer.Connect(server, port, useSsl, nickName, userName, realName, channels);

            IsConnected = true;
        }
Пример #6
0
    public GameState(Messages messges, Environment environment, Parameters parameters, Events events, Action onUpdated)
    {
        _messages    = messges;
        _environment = environment;
        _parameters  = parameters;
        _events      = events;
        _onUpdated   = onUpdated;

        _decisionLogic = new DecisionLogic(_messages, environment, _parameters, this);

        _startDate          = DateTime.MinValue.AddDays(_parameters.StartDay);
        Date                = _startDate;
        Traits[Trait.Money] = _parameters.StartMoney;

        _lastPayDate     = Date;
        _lastInflateDate = Date;

        var startAct = new NoticeAction(_messages.Welcome, HighPriority);

        EnqueNoticeOnce(startAct);

        Analytics.enabled = !Application.isEditor;
        AnalyticsEvent.GameStart();
    }
Пример #7
0
 public void EnqueNotice(NoticeAction act)
 {
     Notices.Add(act);
     Notices.Sort((a, b) => a.Priority.CompareTo(b.Priority));
 }