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; } }
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; } } }
/// <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); }
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); }
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); } } }
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 }; }
// 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."); } }
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); } }
/// <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); } }
/// <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); }
void SceneManager_sceneLoaded(Scene scene, LoadSceneMode loadMode) { if (scene.name == "MenuViewControllers") { PluginUI.CreateSettingsUI(); } }
public TraceHandler(PluginUI pluginUI) { this.ui = pluginUI; implementation = new FlexUnitMessageHandler(pluginUI); lastLogIndex = 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; }
private void MenuSceneLoadedFresh() { ModelSaberAPI.HashAllAvatars(); PluginUI.OnLoad(); InGameOnlineController.OnLoad(); SpectatingController.OnLoad(); GetUserInfo.UpdateUserInfo(); }
/// <summary> /// 恢复暂存标点 /// </summary> public void LoadWaymark() { if (tempMarks == null) { return; } DoWaymarks(tempMarks); PluginUI.Log("恢复暂存标点"); }
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(); } }
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/.]*)"); }
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; }
/// <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; } }
/// <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(); }
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}"); } }
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); }
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); }
/// <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; }
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); } }
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; } }
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(); }
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")) }); }
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); } }
/// <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); }