예제 #1
0
        public void DoWaymarks(string waymarksStr)
        {
            if (!isReady)
            {
                PluginUI.Log("执行错误:接收到指令,但是没有对应的游戏进程");
                throw new Exception("没有对应的游戏进程");
            }

            if (waymarksStr == "")
            {
                throw new Exception("指令为空");
            }

            switch (waymarksStr.ToLower())
            {
            case "save":
            case "backup":
                SaveWaymark();
                break;

            case "load":
            case "restore":
                LoadWaymark();
                break;

            default:
                var waymarks = JsonConvert.DeserializeObject <WayMarks>(waymarksStr);
                PluginUI.Log(waymarksStr);
                DoWaymarks(waymarks);
                break;
            }
        }
예제 #2
0
        private void AddMembers(TreeNodeCollection nodes, MemberList members)
        {
            bool   wholeWord              = settings.OutlineFormWholeWord;
            bool   matchCase              = settings.OutlineFormMatchCase;
            string searchedText           = matchCase ? textBox.Text.Trim() : textBox.Text.ToLower().Trim();
            bool   searchedTextIsNotEmpty = !string.IsNullOrEmpty(searchedText);

            foreach (MemberModel member in members)
            {
                string memberText = matchCase ? member.ToString() : member.ToString().ToLower();

                if (searchedTextIsNotEmpty && (!wholeWord && memberText.IndexOf(searchedText) == -1 || wholeWord && !memberText.StartsWith(searchedText)))
                {
                    continue;
                }

                MemberTreeNode node = null;
                if ((member.Flags & (FlagType.Constant | FlagType.Variable | FlagType.Function | FlagType.Getter | FlagType.Setter)) > 0)
                {
                    node = new MemberTreeNode(member, PluginUI.GetIcon(member.Flags, member.Access));
                    nodes.Add(node);
                }

                if (tree.SelectedNode == null)
                {
                    tree.SelectedNode = node;
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Creates a new results panel.
        /// </summary>
        /// <param name="groupData">
        /// The trace group of the results panel.
        /// <para/>
        /// Format: <c>GroupID:arg1,arg2,...</c>
        /// </param>
        private static PluginUI AddResultsPanel(string groupData, string groupId, string[] args)
        {
            var traceGroup = TraceManager.GetTraceGroup(groupId); // Group must exist
            var ui         = new PluginUI(main, groupData, groupId, traceGroup.ShowFilterButtons, traceGroup.AllowMultiplePanels);

            ui.Text            = string.Format(traceGroup.Title ?? TextHelper.GetString("Title.PluginPanel"), args);
            ui.ParentPanel     = PluginBase.MainForm.CreateDynamicPersistDockablePanel(ui, main.Guid, groupId, traceGroup.Icon ?? main.pluginImage, DockState.DockBottomAutoHide);
            ui.ParentPanel.Tag = ui;
            ui.ParentPanel.DockStateChanged   += ParentPanel_DockStateChanged;
            ui.ParentPanel.IsActivatedChanged += ParentPanel_IsActivatedChanged;

            if (args.Length > 0) // Possible multiple instances for one group id
            {
                for (int i = 0; i < pluginUIs.Count; i++)
                {
                    if (pluginUIs[i].GroupId == groupId && pluginUIs[i].ParentPanel.IsHidden)
                    {
                        CloseResultsPanel(pluginUIs[i]);
                        break; // There should only be one panel hidden without being closed
                    }
                }
            }
            pluginUIs.Add(ui);

            return(ui);
        }
예제 #4
0
        public void FixtureSetUp()
        {
            mainForm                 = new MainForm();
            settings                 = Substitute.For <ISettings>();
            settings.UseTabs         = true;
            settings.IndentSize      = 4;
            settings.SmartIndentType = SmartIndent.CPP;
            settings.TabIndents      = true;
            settings.TabWidth        = 4;
            doc = Substitute.For <ITabbedDocument>();
            mainForm.Settings        = settings;
            mainForm.CurrentDocument = doc;
            mainForm.StandaloneMode  = true;
            PluginBase.Initialize(mainForm);
            ScintillaManager.LoadConfiguration();
            var pluginMain = Substitute.For <ASCompletion.PluginMain>();
            var pluginUI   = new PluginUI(pluginMain);

            pluginMain.MenuItems.Returns(new List <ToolStripItem>());
            pluginMain.Settings.Returns(new GeneralSettings());
            pluginMain.Panel.Returns(pluginUI);
            #region ASContext.GlobalInit(pluginMain);
            var method = typeof(ASContext).GetMethod("GlobalInit", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static);
            method.Invoke(null, new[] { pluginMain });
            #endregion
            ASContext.Context = Substitute.For <IASContext>();
            Sci = GetBaseScintillaControl();
            doc.SciControl.Returns(Sci);
        }
예제 #5
0
        private void DoMarkingByActorID(uint ActorID, MarkType markingType, bool localOnly = false)
        {
            var combatant = FFXIV_ACT_Plugin.DataRepository.GetCombatantList().FirstOrDefault(i => i.ID == ActorID);

            if (combatant == null)
            {
                throw new Exception($"未能找到{ActorID}");
            }
            PluginUI.Log($"ActorID={ActorID:X},markingType={(int)markingType},LocalOnly={localOnly}");
            var assemblyLock = Memory.Executor.AssemblyLock;
            var flag         = false;

            try {
                Monitor.Enter(assemblyLock, ref flag);
                if (!localOnly)
                {
                    _ = Memory.CallInjected64 <char>(MarkingFunc, MarkingController, markingType, ActorID);
                }
                else //本地标点的markingType从0开始,因此需要-1
                {
                    _ = Memory.CallInjected64 <char>(LocalMarkingFunc, MarkingController, markingType - 1, ActorID, 0);
                }
            }
            finally {
                if (flag)
                {
                    Monitor.Exit(assemblyLock);
                }
            }
        }
예제 #6
0
        public HealthFrame(DalamudPluginInterface pi, PluginUI ui)
        {
            Ui                  = ui;
            Pi                  = pi;
            HealthY             = 0;
            HealthVerticalSpeed = 0f;
            Timer               = Stopwatch.StartNew();
            var imagesPath = "" + Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            HealthRingSegmentTexture = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_health_segment.png"));
            RingValueSegmentTexture  = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_value_segment.png"));
            RingOutlineTexture       = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_outline_segment.png"));
            RingTrackTexture         = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_track.png"));
            RingBaseTexture          = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_base_edge.png"));
            RingEndTexture           = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_end_edge.png"));
            RingExperienceTexture    = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_experience_segment.png"));
            RingExperienceBgTexture  = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\ring_experience_outline.png"));
            BarTextures      = pi.UiBuilder.LoadImage(Path.Combine(imagesPath, @"Textures\bar_textures.png"));
            HealthRingBg     = new Ring(RingValueSegmentTexture, 0.07843f, 0.07843f, 0.0745f);
            HealthLostRing   = new Ring(RingValueSegmentTexture, 1, 0, 0);
            RingOutline      = new Ring(RingOutlineTexture);
            ExperienceRing   = new Ring(RingExperienceTexture);
            ExperienceRingBg = new Ring(RingExperienceTexture)
            {
                Flip = true
            };
            HealthRing         = new Ring(HealthRingSegmentTexture);
            HealthRestoredRing = new Ring(HealthRingSegmentTexture)
            {
                Flip = true
            };
        }
예제 #7
0
        //	Initialization
        public void Initialize(DalamudPluginInterface pluginInterface)
        {
            //	Configuration
            mPluginInterface = pluginInterface;
            mConfiguration   = mPluginInterface.GetPluginConfig() as Configuration ?? new Configuration();
            mConfiguration.Initialize(mPluginInterface);
            MemoryHandler.Init(mPluginInterface);
            ZoneInfoHandler.Init(mPluginInterface);

            //	Text Command Initialization
            mPluginInterface.CommandManager.AddHandler(mTextCommandName, new CommandInfo(ProcessTextCommand)
            {
                HelpMessage = "Performs waymark preset commands.  Use \"/pwaymark help\" for detailed usage information."
            });

            //	UI Initialization
            mUI = new PluginUI(mConfiguration, mPluginInterface);
            mPluginInterface.UiBuilder.OnBuildUi      += DrawUI;
            mPluginInterface.UiBuilder.OnOpenConfigUi += (sender, args) => DrawConfigUI();
            mUI.SetCurrentTerritoryTypeID(mPluginInterface.ClientState.TerritoryType);
            mUI.Initialize();

            //	Event Subscription
            mPluginInterface.ClientState.TerritoryChanged += OnTerritoryChanged;

            //	Tell the user if there's something out of the ordinary.
            if (!MemoryHandler.FoundSavedPresetSigs())
            {
                mPluginInterface.Framework.Gui.Chat.Print("Error initializing WaymarkPresetPlugin: Cannot write to or read from game.");
            }
        }
예제 #8
0
        private void SceneLoaded(Scene to, LoadSceneMode mode)
        {
            Logger.Debug($"Scene loaded: \"{to.name}\"");

            if (to.name == "MenuCore")
            {
                PluginUI.Init();

                GameController.Init(to);
                LeaderboardController.Init(to);
                Controllers.PlayerController.Init(to);
                VoiceChatWorker.Init();
            }

            try
            {
                if (to.name == "MenuCore" && SteamAPI.getLobbyID().m_SteamID > 0)
                {
                    Logger.Debug("Creating new lobby");
                    SteamAPI.CreateLobby(!Config.Instance.IsPublic);
                    Controllers.PlayerController.Instance.DestroyAvatars();
                }
            } catch (Exception e)
            {
                Logger.Error(e);
            }
        }
예제 #9
0
        /// <summary>
        ///     暂存当前标点
        /// </summary>
        public void SaveWaymark()
        {
            tempMarks = new WayMarks();

            Waymark ReadWaymark(IntPtr addr, WaymarkID id) => new()
            {
                X      = Memory.Read <float>(addr),
                Y      = Memory.Read <float>(addr + 0x4),
                Z      = Memory.Read <float>(addr + 0x8),
                Active = Memory.Read <byte>(addr + 0x1C) == 1,
                ID     = id
            };

            try {
                tempMarks.A     = ReadWaymark(Waymarks + 0x00, WaymarkID.A);
                tempMarks.B     = ReadWaymark(Waymarks + 0x20, WaymarkID.B);
                tempMarks.C     = ReadWaymark(Waymarks + 0x40, WaymarkID.C);
                tempMarks.D     = ReadWaymark(Waymarks + 0x60, WaymarkID.D);
                tempMarks.One   = ReadWaymark(Waymarks + 0x80, WaymarkID.One);
                tempMarks.Two   = ReadWaymark(Waymarks + 0xA0, WaymarkID.Two);
                tempMarks.Three = ReadWaymark(Waymarks + 0xC0, WaymarkID.Three);
                tempMarks.Four  = ReadWaymark(Waymarks + 0xE0, WaymarkID.Four);
                PluginUI.Log("暂存当前标点");
            }
            catch (Exception ex) {
                throw new Exception("保存标记错误:" + ex.Message);
            }
        }
예제 #10
0
 /// <summary>
 /// Close the panel and remove it from the list.
 /// </summary>
 private static void CloseResultsPanel(PluginUI ui)
 {
     ui.ParentPanel.DockStateChanged   -= ParentPanel_DockStateChanged;
     ui.ParentPanel.IsActivatedChanged -= ParentPanel_IsActivatedChanged;
     ui.ParentPanel.Close();
     pluginUIs.Remove(ui);
 }
예제 #11
0
 void SceneManager_sceneLoaded(Scene scene, LoadSceneMode loadMode)
 {
     if (scene.name == "MenuViewControllers")
     {
         PluginUI.CreateSettingsUI();
     }
 }
예제 #12
0
        public TraceHandler(PluginUI pluginUI)
        {
            this.ui = pluginUI;

            implementation = new FlexUnitMessageHandler(pluginUI);

            lastLogIndex = 0;
        }
예제 #13
0
 /// <summary>
 /// Creates a plugin panel for the plugin
 /// </summary>
 public void CreatePluginPanel()
 {
     this.pluginUI      = new PluginUI(this);
     this.pluginUI.Text = "Advanced F&R";
     this.pluginPanel   = PluginBase.MainForm.CreateDockablePanel(this.pluginUI, this.pluginGuid, this.pluginImage, DockState.DockBottomAutoHide);
     PluginBase.MainForm.DockPanel.ActiveContentChanged += pluginUI.PluginUI_FocusHandle;
     this.Panel.DockHandler.DockStateChanged            += pluginUI.DockHandler_DockStateChanged;
 }
예제 #14
0
 private void MenuSceneLoadedFresh()
 {
     ModelSaberAPI.HashAllAvatars();
     PluginUI.OnLoad();
     InGameOnlineController.OnLoad();
     SpectatingController.OnLoad();
     GetUserInfo.UpdateUserInfo();
 }
예제 #15
0
 /// <summary>
 ///     恢复暂存标点
 /// </summary>
 public void LoadWaymark()
 {
     if (tempMarks == null)
     {
         return;
     }
     DoWaymarks(tempMarks);
     PluginUI.Log("恢复暂存标点");
 }
예제 #16
0
        private void SceneManager_activeSceneChanged(Scene from, Scene to)
        {
            log.Info($"Scene change from {@from.name} to {to.name}");

            if (to.name.ToLower().Contains("menu"))
            {
                PluginUI.Init();
            }
        }
예제 #17
0
        public FlexUnitMessageHandler(PluginUI pluginUI)
        {
            this.ui = pluginUI;

            testResultPattern    = new Regex("([A-Z]{1}[A-Za-z0-9.]{5,}) ([.|F])$");
            testErrorPattern     = new Regex("^[0-9]+ [a-zA-Z]*::([a-zA-Z0-9.]+) ([a-zA-Z0-9:<> ]+)");
            testErrorFilePattern = new Regex("([a-zA-Z0-9]*/([a-zA-Z0-9]*))[()]{2}.(.*.as):([0-9]+)]");
            testTimePattern      = new Regex("Time: ([0-9/.]*)");
        }
예제 #18
0
        internal static void Initialize(PluginMain pluginMain, PluginUI pluginUI)
        {
            main      = pluginMain;
            mainUI    = pluginUI;
            pluginUIs = new List <PluginUI>();
            ActiveUI  = mainUI;

            mainUI.ParentPanel.Tag = mainUI;
            mainUI.ParentPanel.IsActivatedChanged += ParentPanel_IsActivatedChanged;
        }
예제 #19
0
 /// <summary>
 /// Update an existing panel to use for a new group data.
 /// </summary>
 private static void UpdateResultsPanel(PluginUI ui, string groupData, string groupId, string[] args)
 {
     if (ui.GroupData != groupData)
     {
         var traceGroup = TraceManager.GetTraceGroup(groupId);
         ui.GroupData        = groupData;
         ui.Text             = string.Format(traceGroup.Title ?? TextHelper.GetString("Title.PluginPanel"), args);
         ui.ParentPanel.Text = ui.Text;
     }
 }
예제 #20
0
 /// <summary>
 /// Creates a plugin panel for the plugin
 /// </summary>
 void CreatePluginPanel()
 {
     ui = new PluginUI()
     {
         Text = LocalizationHelper.GetString("PluginPanel")
     };
     panel          = PluginBase.MainForm.CreateDockablePanel(ui, Guid, image, DockState.DockRight);
     processHandler = new ProcessEventHandler(ui);
     traceHandler   = new TraceHandler(ui);
     commandHandler = new CommandHandler();
 }
예제 #21
0
 private void OnMenuSceneLoadedFresh(ScenesTransitionSetupDataSO data)
 {
     try
     {
         PluginUI.SetupLevelDetailClone();
         Loader.SongsLoadedEvent += Loader_SongsLoadedEvent;
     }
     catch (Exception e)
     {
         Log.Critical($"Exception on fresh menu scene change:\n{e}");
     }
 }
예제 #22
0
 private void OnMenuSceneLoadedFresh(ScenesTransitionSetupDataSO data)
 {
     try
     {
         PluginUI.SetupLevelDetailClone();
         Settings.SetupSettings();
         SongCore.Loader.SongsLoadedEvent += Loader_SongsLoadedEvent;
     }
     catch (Exception e)
     {
         Plugin.log.Critical("Exception on fresh menu scene change: " + e);
     }
 }
        public static TreeNode CreateTreeNode(FileModel inFile, bool isHaxe, MemberModel it)
        {
            var flags      = it.Flags;
            var icon       = PluginUI.GetIcon(flags, it.Access);
            var constrDecl = isHaxe && (flags & FlagType.Constructor) > 0 ? "new" : it.FullName;
            var node       = new MemberNode(it.ToString(), icon, icon)
            {
                InFile = inFile,
                Tag    = $"{constrDecl}@{it.LineFrom}"
            };

            return(node);
        }
예제 #24
0
        private MemberTreeNode GetMemberTreeNode(MemberModel memberModel, ClassModel classModel)
        {
            MemberTreeNode node       = null;
            int            imageIndex = PluginUI.GetIcon(memberModel.Flags, memberModel.Access);

            if (imageIndex != 0)
            {
                node = classModel == null ? new MemberTreeNode(memberModel, imageIndex, _settings.LabelPropertiesLikeFunctions) :
                       new InheritedMemberTreeNode(classModel, memberModel, imageIndex, _settings.LabelPropertiesLikeFunctions);
            }

            return(node);
        }
예제 #25
0
파일: CheckInForm.cs 프로젝트: chrfin/fdTFS
        /// <summary>
        /// Initializes a new instance of the <see cref="CheckInForm"/> class.
        /// </summary>
        /// <param name="manager">The manager.</param>
        /// <param name="preselection">The preselection.</param>
        /// <remarks>Documented by CFI, 2011-01-07</remarks>
        public CheckInForm(TfsManager manager, List <string> preselection)
        {
            InitializeComponent();

            pluginUI = new PluginUI(manager);

            pluginUI.Dock       = System.Windows.Forms.DockStyle.Fill;
            pluginUI.CheckedIn += new EventHandler(pluginUI_CheckedIn);
            pluginUI.Name       = "pluginUI";
            pluginUI.TabIndex   = 0;
            Controls.Add(this.pluginUI);

            this.preselection = preselection;
        }
예제 #26
0
 private void OnMenuSceneLoadedFresh()
 {
     try
     {
         PluginUI.SetupLevelDetailClone();
         Settings.SetupSettings();
         SongCore.Loader.SongsLoadedEvent += Loader_SongsLoadedEvent;
         GetUserInfo.GetUserName();
     }
     catch (Exception e)
     {
         Plugin.log.Critical("Exception on fresh menu scene change: " + e);
     }
 }
예제 #27
0
        private void MenuSceneLoadedFresh()
        {
            ModelSaberAPI.HashAllAvatars();
            PluginUI.OnLoad();
            InGameOnlineController.OnLoad();
            SpectatingController.OnLoad();
            GetUserInfo.UpdateUserInfo();

            if (joinAfterRestart)
            {
                joinAfterRestart = false;
                SharedCoroutineStarter.instance.StartCoroutine(PluginUI.instance.JoinGameWithSecret(joinSecret));
                joinSecret = string.Empty;
            }
        }
예제 #28
0
파일: frmMain.cs 프로젝트: radtek/geosufan
 public frmMain()
 {
     InitializeComponent();
     //等待窗体
     _frmTemp = new frmLoadProgress();
     _frmTemp.Show(this);
     m_MainPluginUI = new PluginUI(Mod.m_LoginUser);
     m_MainPluginUI.SysLogInfoChnaged    += new SysLogInfoChangedHandle(SysLogInfoChnaged);
     this.mainRibbon.SelectedPageChanged += MainRibbon_SelectedPageChanged;
     //加载界面信息
     InitialFrm();
     MainSysConfig = new SysConfig(Mod.m_SysDbOperate);
     SetLonginBarText(string.Format("当前登录用户:{0}", Mod.m_LoginUser.UserName));
     _frmTemp.Close();
 }
예제 #29
0
 private void InitializeIcons()
 {
     //Pull the member icons from the resources;
     _icons = new ImageList();
     _icons.TransparentColor = Color.Transparent;
     _icons.ImageSize        = ScaleHelper.Scale(new Size(16, 16));
     _icons.Images.AddRange(new Bitmap[] {
         new Bitmap(PluginUI.GetStream("FilePlain.png")),
         new Bitmap(PluginUI.GetStream("FolderClosed.png")),
         new Bitmap(PluginUI.GetStream("FolderOpen.png")),
         new Bitmap(PluginUI.GetStream("CheckAS.png")),
         new Bitmap(PluginUI.GetStream("QuickBuild.png")),
         new Bitmap(PluginUI.GetStream("Package.png")),
         new Bitmap(PluginUI.GetStream("Interface.png")),
         new Bitmap(PluginUI.GetStream("Intrinsic.png")),
         new Bitmap(PluginUI.GetStream("Class.png")),
         new Bitmap(PluginUI.GetStream("Variable.png")),
         new Bitmap(PluginUI.GetStream("VariableProtected.png")),
         new Bitmap(PluginUI.GetStream("VariablePrivate.png")),
         new Bitmap(PluginUI.GetStream("VariableStatic.png")),
         new Bitmap(PluginUI.GetStream("VariableStaticProtected.png")),
         new Bitmap(PluginUI.GetStream("VariableStaticPrivate.png")),
         new Bitmap(PluginUI.GetStream("Const.png")),
         new Bitmap(PluginUI.GetStream("ConstProtected.png")),
         new Bitmap(PluginUI.GetStream("ConstPrivate.png")),
         new Bitmap(PluginUI.GetStream("Const.png")),
         new Bitmap(PluginUI.GetStream("ConstProtected.png")),
         new Bitmap(PluginUI.GetStream("ConstPrivate.png")),
         new Bitmap(PluginUI.GetStream("Method.png")),
         new Bitmap(PluginUI.GetStream("MethodProtected.png")),
         new Bitmap(PluginUI.GetStream("MethodPrivate.png")),
         new Bitmap(PluginUI.GetStream("MethodStatic.png")),
         new Bitmap(PluginUI.GetStream("MethodStaticProtected.png")),
         new Bitmap(PluginUI.GetStream("MethodStaticPrivate.png")),
         new Bitmap(PluginUI.GetStream("Property.png")),
         new Bitmap(PluginUI.GetStream("PropertyProtected.png")),
         new Bitmap(PluginUI.GetStream("PropertyPrivate.png")),
         new Bitmap(PluginUI.GetStream("PropertyStatic.png")),
         new Bitmap(PluginUI.GetStream("PropertyStaticProtected.png")),
         new Bitmap(PluginUI.GetStream("PropertyStaticPrivate.png")),
         new Bitmap(PluginUI.GetStream("Template.png")),
         new Bitmap(PluginUI.GetStream("Declaration.png"))
     });
 }
예제 #30
0
        private void ActiveSceneChanged(Scene from, Scene to)
        {
            Logger.Debug($"Active scene changed from \"{from.name}\" to \"{to.name}\"");
            CurrentScene = to.name;
            if (from.name == "EmptyTransition" && to.name == "Menu")
            {
                PluginUI.Init();

                GameController.Init(to);
                LeaderboardController.Init(to);
                Controllers.PlayerController.Init(to);
                VoiceChatWorker.Init();
            }
            else
            {
                GameController.Instance?.ActiveSceneChanged(from, to);
                LeaderboardController.Instance?.ActiveSceneChanged(from, to);
            }
        }
예제 #31
0
 /// <summary>
 /// Creates a plugin panel for the plugin
 /// </summary>
 public void CreatePluginPanel()
 {
     this.pluginUI = new PluginUI(this);
     this.pluginUI.Text = LocaleHelper.GetString("Title.PluginPanel");
     this.pluginPanel = PluginBase.MainForm.CreateDockablePanel(this.pluginUI, this.pluginGuid, this.pluginImage, DockState.DockRight);
 }