예제 #1
0
        public static void Toggle(string input) //? Switch a module ON/OFF
        {
            void ToggleList()                   //! Write Activated/Desactivated IModules
            {
                foreach (IModule mod in Module.ModulesList)
                {
                    if (mod.IsActivated)
                    {
                        Shell.WriteLine(ConsoleColor.Green, mod.GetType().Name);
                    }
                    else
                    {
                        Shell.WriteLine(ConsoleColor.Red, mod.GetType().Name);
                    }
                }
            }

            string[] split = input.Split(' ');

            if (split.Length == 1 || (split.Length > 1 && split[1] == "list"))
            {
                ToggleList();
                return;
            }

            if (split.Length < 2)
            {
                Shell.WriteLine("Invalid arguments, please try with \"toggle <module>\"");
            }

            foreach (string str in split) // Support toggling multiple modules at a time
            {
                if (str.Equals("toggle", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                IModule m = Module.GetModule(str);

                if (m == null)
                {
                    Shell.WriteLineError("Module " + str + " don't exist.");
                    return;
                }

                if (!m.IsActivated)
                {
                    m.IsActivated = true;
                    m.Activate();
                    Shell.WriteLine(ConsoleColor.Cyan, "Module " + m.GetType().Name + " activated");
                }
                else
                {
                    m.IsActivated = false;
                    m.Desactivate();
                    Shell.WriteLine(ConsoleColor.Cyan, "Module " + m.GetType().Name + " desactivated");
                }
            }
        }
예제 #2
0
 public static void UtilityPulse()
 {
     foreach (Module moduleObject in modules)
     {
         if (moduleObject is Module.TrackingComputer)
         {
             Module.TrackingComputer trackingComputerObject = moduleObject as Module.TrackingComputer;
             IModule module = Daedalus.myShip.Module(SlotType.MedSlot, trackingComputerObject.Slot_Index);
             if (!module.IsActive && module.IsOnline)
             {
                 module.Activate();
             }
         }
     }
 }
예제 #3
0
 public static void PropulsionPulse()
 {
     foreach (Module moduleObject in modules)
     {
         if (moduleObject is Module.Afterburner)
         {
             Module.Afterburner afterburnerObject = moduleObject as Module.Afterburner;
             IModule            module            = Daedalus.myShip.Module(SlotType.MedSlot, afterburnerObject.Slot_Index);
             if (!module.IsActive && module.IsOnline)
             {
                 module.Activate();
             }
         }
     }
 }
        private void Open(string _name)
        {
            Type _t = Type.GetType(_name, true);

            //判断继承接口
            if (_t.GetInterface("IModule") == null)
            {
                return;
            }

            foreach (var _v in modules)
            {
                if (_v.Value.GetType() == _t)
                {
                    _v.Value.Activate();
                    return;
                }
            }

            //遍历程序集
            object _o = null;

            for (int i = 0; i < assembly.Count; i++)
            {
                _o = assembly[i].CreateInstance(_t.ToString(), true);
                if (_o != null)
                {
                    break;
                }
            }
            if (_o == null)
            {
                Utility.LogError("没有找到名称为", _name, "的模块!");
                return;
            }
            IModule _im = _o as IModule;

            modules.Add(_im.id, _im);
            _im.Init(idModel.GetLongId);
            _im.Activate();
        }
예제 #5
0
 public static void OffensePulse(Entity target)
 {
     foreach (Module moduleObject in modules)
     {
         if (moduleObject is Module.MissileLauncher)
         {
             Module.MissileLauncher missileLauncherObject = moduleObject as Module.MissileLauncher;
             IModule module = Daedalus.myShip.Module(missileLauncherObject.slotType, missileLauncherObject.slotIndex);
             if (module.IsValid && !module.IsActive && !module.IsReloadingAmmo && module.IsOnline)
             {
                 double engageRange      = (module.Charge.MaxFlightTime + module.Charge.MaxVelocity);
                 double distanceToTarget = f_Entities.GetDistanceBetween(target);
                 if (distanceToTarget < engageRange)
                 {
                     module.Activate();
                 }
             }
         }
         else if (moduleObject is Module.Turret)
         {
             Module.Turret turretObject = moduleObject as Module.Turret;
             IModule       module       = Daedalus.myShip.Module(turretObject.slotType, turretObject.slotIndex);
             if (module.IsValid && !module.IsActive && !module.IsReloadingAmmo && module.IsOnline)
             {
                 double?falloffRange     = (module.AccuracyFalloff * 1.5);
                 double?optimalRange     = module.OptimalRange;
                 double?engageRange      = (falloffRange + optimalRange);
                 double distanceToTarget = f_Entities.GetDistanceBetween(target);
                 if (distanceToTarget < engageRange)
                 {
                     module.Activate();
                 }
             }
         }
     }
 }
예제 #6
0
        public static void Reload(string input) //? Reload Modules
        {
            string[] args = input.Split(' ');

            if (args.Length < 2) //! Reload all modules
            {
                foreach (IModule module in Module.ModulesList)
                {
                    if (module.IsActivated)
                    {
                        module.Desactivate();
                        module.Activate();
                    }
                }

                Shell.Write(ConsoleColor.DarkCyan, "[Reload] ");
                Shell.WriteLine("All modules have been reloaded");
                Log.SendLog("[Reload] All modules have been reloader");
            }
            else //! Reload specified modules
            {
                foreach (string str in args.SubArray(1))
                {
                    IModule module = Module.GetModule(str);

                    if (module != null && module.IsActivated)
                    {
                        module.Desactivate();
                        module.Activate();
                        Shell.Write(ConsoleColor.DarkCyan, "[Reload] ");
                        Shell.WriteLine($"Module {module.GetType().Name} reloaded");
                        Log.SendLog($"[Reload] Module {module.GetType().Name} reloaded");
                    }
                }
            }
        }
예제 #7
0
 public static void DefensePulse()
 {
     foreach (Module moduleObject in modules)
     {
         if (moduleObject is Module.ArmorHardener)
         {
             Module.ArmorHardener armorHardenerObject = moduleObject as Module.ArmorHardener;
             IModule module = Daedalus.myShip.Module(SlotType.LoSlot, armorHardenerObject.Slot_Index);
             if (!module.IsActive && module.IsOnline)
             {
                 module.Activate();
             }
         }
         else if (moduleObject is Module.ArmorRepairer)
         {
             Module.ArmorRepairer armorRepairerObject = moduleObject as Module.ArmorRepairer;
             IModule module       = Daedalus.myShip.Module(SlotType.LoSlot, armorRepairerObject.Slot_Index);
             double  currentArmor = c_Status.armorCurrent;
             double  maximumArmor = c_Status.armorMaximum;
             double  deficit      = (maximumArmor - currentArmor);
             if (deficit > armorRepairerObject.Repair_Amount && !module.IsActive && !module.IsDeactivating && module.IsOnline)
             {
                 module.Activate();
             }
             else if (deficit < armorRepairerObject.Repair_Amount && module.IsActive && !module.IsDeactivating && module.IsOnline)
             {
                 module.Deactivate();
             }
         }
         else if (moduleObject is Module.BastionModule)
         {
             Module.BastionModule bastionModuleObject = moduleObject as Module.BastionModule;
             IModule module = Daedalus.myShip.Module(SlotType.HiSlot, bastionModuleObject.Slot_Index);
             if (!module.IsActive && module.IsOnline && bastionAppropriate)
             {
                 module.Activate();
             }
             else if (module.IsActive && !bastionAppropriate)
             {
                 module.Deactivate();
             }
         }
         else if (moduleObject is Module.ShieldBooster)
         {
             Module.ShieldBooster shieldBoosterObject = moduleObject as Module.ShieldBooster;
             IModule module        = Daedalus.myShip.Module(SlotType.MedSlot, shieldBoosterObject.Slot_Index);
             double  currentShield = c_Status.shieldCurrent;
             double  maximumShield = c_Status.shieldMaximum;
             double  deficit       = (maximumShield - currentShield);
             if (deficit > shieldBoosterObject.Boost_Amount && !module.IsActive && !module.IsDeactivating && module.IsOnline)
             {
                 module.Activate();
             }
             else if (deficit < shieldBoosterObject.Boost_Amount && module.IsActive && !module.IsDeactivating && module.IsOnline)
             {
                 module.Deactivate();
             }
         }
         else if (moduleObject is Module.ShieldHardener)
         {
             Module.ShieldHardener shieldHardenerObject = moduleObject as Module.ShieldHardener;
             IModule module = Daedalus.myShip.Module(SlotType.MedSlot, shieldHardenerObject.Slot_Index);
             if (!module.IsActive && module.IsOnline)
             {
                 module.Activate();
             }
         }
     }
 }
예제 #8
0
 private void SetCurrentModule(IModule module)
 {
     CurrentModule?.Deactivate();
     CurrentModule = module;
     CurrentModule?.Activate();
 }
예제 #9
0
        public Shell()
        {
            // Commented below 2 lines as Logon function has been moved to ModuleSelectionPresenter.cs
            // Modified By JK on 01/09/12
            //LogOnKioskResponse logonResponse = new LogOnKioskResponse();
            //LogonServiceClient logonproxy = null;
            bool LoadApp = true;
            //this.ScrollerText = string.Empty;
               // System.Configuration.Configuration config;

            bool showCursor = (ConfigurationManager.AppSettings["ShowCursor"] == null) ? false : Convert.ToBoolean(ConfigurationManager.AppSettings["ShowCursor"]);

            if (showCursor)
                this.Cursor = System.Windows.Input.Cursors.Arrow;
            else
                this.Cursor = System.Windows.Input.Cursors.None;

            InitializeComponent();

            //if (LoadApp)
            //{
            //    // Init cash acceptor device and printer devices.

                //DeviceAgent.GetInstance().Init();
                //string result = Logger.GetRecentScrollers();
                //if ((!string.IsNullOrEmpty(result)) &&
                //    (KioskAppConfig.Scrollers != result))
                //{
                //    KioskAppConfig.Scrollers = result;

                //}
                moduleManager = ModuleManager.GetInstance();
                currentModule = moduleManager.GetDefaultModule();
                currentModule.ModuleLayoutUpdatedEvent += OnModuleLayoutUpdated;
                currentModule.ModuleSelectionChangedEvent += OnModuleSelectionChanged;
                currentModule.Activate();
                this.BeginInit();
                try
                {
                    this.ccModule.Content = null;
                    this.ccModule.Content = currentModule.ShellGrid;

                }
                finally
                {
                    this.EndInit();
                    this.UpdateLayout();
                }
            //}
            //else
            //{
            //    if (log.IsErrorEnabled) log.ErrorFormat("Logon not Successfull");
            //    Application.Current.Shutdown(1);
            //}
        }
예제 #10
0
        private void OnModuleSelectionChanged(ModuleSelectionChangedEventArgs obj)
        {
            IModule newModule;
            newModule = ModuleManager.GetInstance().SwitchToModule(obj.NewModule);

            if (newModule != null)
            {
                textBlock.Text = KioskAppConfig.GetCurrentScrollerText(obj.NewModule.ToLower().Replace("module", string.Empty));

                if (KioskAppConfig.ShowScroller)
                    grScroller.Visibility = System.Windows.Visibility.Visible;
                else
                    grScroller.Visibility = System.Windows.Visibility.Collapsed;

                currentModule.ModuleSelectionChangedEvent -= OnModuleSelectionChanged;
                currentModule.ModuleLayoutUpdatedEvent -= OnModuleLayoutUpdated;
                currentModule.Deactivate();

                currentModule = newModule;
                currentModule.ModuleLayoutUpdatedEvent += OnModuleLayoutUpdated;
                currentModule.ModuleSelectionChangedEvent += OnModuleSelectionChanged;
                currentModule.Activate(obj.DispatcherAction);
                this.BeginInit();
                try
                {
                    this.ccModule.Content = currentModule.ShellGrid;
                }
                finally
                {
                    this.EndInit();
                    this.UpdateLayout();
                }
            }
        }