Beispiel #1
0
        public static void UpdateAlertIcon(object osobj)
        {
            OS     os = (OS)osobj;
            string flagStartingWith1 = os.Flags.GetFlagStartingWith("_changeAlertIconType:");
            string flagStartingWith2 = os.Flags.GetFlagStartingWith("_changeAlertIconTarget:");

            if (flagStartingWith1 == null || flagStartingWith2 == null)
            {
                return;
            }
            string   str = flagStartingWith1.Substring("_changeAlertIconType:".Length);
            string   ip_Or_ID_or_Name = flagStartingWith2.Substring("_changeAlertIconTarget:".Length);
            Computer computer         = Programs.getComputer(os, ip_Or_ID_or_Name);

            switch (str.ToLower())
            {
            case "mail":
                MailServer daemon1 = (MailServer)computer.getDaemon(typeof(MailServer));
                bool       flag    = false;
                for (int index = 0; index < daemon1.comp.users.Count; ++index)
                {
                    if (daemon1.comp.users[index].name == os.defaultUser.name)
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    throw new FormatException("Mail server " + ip_Or_ID_or_Name + " does not have a user account for the player!\nA mail server must have a player account to be used as the alert icon");
                }
                os.mailicon.UpdateTargetServer(daemon1);
                os.ShowDLCAlertsIcon = false;
                break;

            case "irc":
                IRCDaemon daemon2 = (IRCDaemon)computer.getDaemon(typeof(IRCDaemon));
                os.ShowDLCAlertsIcon = true;
                os.hubServerAlertsIcon.UpdateTarget((object)daemon2, (object)daemon2.comp);
                break;

            case "irchub":
                DLCHubServer daemon3 = (DLCHubServer)computer.getDaemon(typeof(DLCHubServer));
                os.ShowDLCAlertsIcon = true;
                os.hubServerAlertsIcon.UpdateTarget((object)daemon3, (object)daemon3.comp);
                break;

            case "board":
                MessageBoardDaemon daemon4 = (MessageBoardDaemon)computer.getDaemon(typeof(MessageBoardDaemon));
                os.ShowDLCAlertsIcon = true;
                os.hubServerAlertsIcon.UpdateTarget((object)daemon4, (object)daemon4.comp);
                break;
            }
        }
Beispiel #2
0
        public override void Trigger(object os_obj)
        {
            Computer computer = Programs.getComputer((OS)os_obj, this.TargetComp);

            if (computer == null)
            {
                throw new NullReferenceException("Computer " + this.TargetComp + " could not be found for SAAddIRCMessage Function, adding message: " + this.Message);
            }
            IRCDaemon daemon1 = computer.getDaemon(typeof(IRCDaemon)) as IRCDaemon;
            IRCSystem ircSystem;

            if (daemon1 != null)
            {
                ircSystem = daemon1.System;
            }
            else
            {
                DLCHubServer daemon2 = computer.getDaemon(typeof(DLCHubServer)) as DLCHubServer;
                if (daemon2 == null)
                {
                    throw new NullReferenceException("Computer " + this.TargetComp + " does not contain an IRC server daemon for SAAddIRCMessage function adding message: " + this.Message);
                }
                ircSystem = daemon2.IRCSystem;
            }
            if ((double)this.Delay <= 0.0)
            {
                if ((double)Math.Abs(this.Delay) < 1.0 / 1000.0)
                {
                    ircSystem.AddLog(this.Author, this.Message, (string)null);
                }
                else
                {
                    DateTime dateTime  = DateTime.Now - TimeSpan.FromSeconds((double)this.Delay);
                    string   timestamp = dateTime.Hour.ToString("00") + ":" + dateTime.Minute.ToString("00");
                    ircSystem.AddLog(this.Author, this.Message, timestamp);
                }
            }
            else
            {
                float delay = this.Delay;
                this.Delay = -1f;
                DelayableActionSystem.FindDelayableActionSystemOnComputer(computer).AddAction((SerializableAction)this, delay);
            }
        }
        internal static DelayableActionSystem FindDelayableActionSystemOnComputer(Computer c)
        {
            IRCDaemon daemon1 = c.getDaemon(typeof(IRCDaemon)) as IRCDaemon;

            if (daemon1 != null)
            {
                return(daemon1.DelayedActions);
            }
            DLCHubServer daemon2 = c.getDaemon(typeof(DLCHubServer)) as DLCHubServer;

            if (daemon2 != null)
            {
                return(daemon2.DelayedActions);
            }
            FastActionHost daemon3 = c.getDaemon(typeof(FastActionHost)) as FastActionHost;

            if (daemon3 != null)
            {
                return((DelayableActionSystem)daemon3.DelayedActions);
            }
            throw new InvalidOperationException("Target computer " + c.name + " does not contain a Daemon that supports delayable actions");
        }