Added setting metastate from plugin as well as !report

This commit is contained in:
erikn 2025-04-08 08:31:23 +02:00
parent dceefc3335
commit f66b15ac57
19 changed files with 1262 additions and 16 deletions

45
GearCycler/GearCore.cs Normal file
View file

@ -0,0 +1,45 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using Decal.Adapter;
using Decal.Adapter.Wrappers;
using VirindiViewService;
using VirindiViewService.Controls;
namespace GearCycler
{
[ComVisible(true)]
[Guid("9b6a07e1-ae78-47f4-b09c-174f6a27d7a3")] // Replace with your own unique GUID if needed
[FriendlyName("GearCycler")]
public class GearCore : PluginBase
{
public HudView view;
private HudButton btnCycle;
protected override void Startup()
{
try
{
string xml = File.ReadAllText("ViewXML\\mainview.xml");
view = HudView.ReadXmlLayout(xml);
view.Visible = true;
btnCycle = (HudButton)view.Controls["btnCycle"];
btnCycle.Hit += (s, e) =>
{
CoreManager.Current.Actions.AddChatText("[GearCycler] Button clicked!", 1);
};
}
catch (Exception ex)
{
CoreManager.Current.Actions.AddChatText($"[GearCycler] Failed to load UI: {ex.Message}", 1);
}
}
protected override void Shutdown()
{
btnCycle?.Dispose();
view?.Dispose();
}
}
}

View file

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1293560E-2A56-417F-8116-8CE0420DC97C}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>GearCycler</RootNamespace>
<AssemblyName>GearCycler</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;VVS_REFERENCED;DECAL_INTEROP</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Decal.Adapter">
<HintPath>..\MosswartMassacre\lib\Decal.Adapter.dll</HintPath>
</Reference>
<Reference Include="Decal.Interop.Core, Version=2.9.8.3, Culture=neutral, PublicKeyToken=481f17d392f1fb65, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>..\MosswartMassacre\lib\Decal.Interop.Core.DLL</HintPath>
</Reference>
<Reference Include="Decal.Interop.Inject, Version=2.9.8.3, Culture=neutral, PublicKeyToken=481f17d392f1fb65, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>..\MosswartMassacre\lib\Decal.Interop.Inject.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="VirindiViewService">
<HintPath>..\MosswartMassacre\lib\VirindiViewService.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="GearCore.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="ViewXML\mainView.xml" />
</ItemGroup>
<ItemGroup>
<Content Include="mainView.xml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("GearCycler")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("GearCycler")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f5462318-d26a-4ab0-8981-80edd9ec9c99")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View file

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace GearCycler.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GearCycler.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<view icon="112" title="GearCycler" width="300" height="200">
<control progid="DecalControls.FixedLayout" clipped="">
<control progid="DecalControls.PushButton" name="btnCycle" left="10" top="10" width="150" height="30" text="Cycle Gear"/>
</control>
</view>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,386 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>VirindiViewService</name>
</assembly>
<members>
<member name="F:VirindiViewService.WriteTextFormats.None">
<summary>
Implies Top and Left
</summary>
</member>
<member name="T:VirindiViewService.HudViewDrawStyle">
<summary>
Provides theme elements, which can be drawn by controls.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudThemeElement">
<summary>
Displays an element from the current theme.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudControl">
<summary>
The base class for all Virindi Views controls.
</summary>
</member>
<member name="M:VirindiViewService.Controls.HudControl.Initialize">
<summary>
Called after this control is added to a ControlGroup. This is when the Name and details have been set.
</summary>
</member>
<member name="M:VirindiViewService.Controls.HudControl.AddChild(VirindiViewService.Controls.HudControl)">
<summary>
Add and initialize a child control of this control. The child may be removed by disposing it.
</summary>
<param name="ctrl"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.RemovedChild(VirindiViewService.Controls.HudControl)">
<summary>
Called when a child of this control is disposed.
</summary>
<param name="ch"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.Dispose">
<summary>
Recursively disposes all children and removes this control from the view, if it is initialized.
</summary>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseWheel(System.Drawing.Point,System.Int32)">
<summary>
Handles a mouse wheel event. Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
<param name="amt"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseDown(System.Drawing.Point)">
<summary>
Fires the MouseEvent event for mouse down, and sets this control as the focus control if CanTakeFocus is true.
Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseUp(System.Drawing.Point,System.Drawing.Point)">
<summary>
Fires the MouseEvent event for mouse up as well as the Hit event.
Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
<param name="orig"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.ExternalMouseUp(System.Drawing.Point)">
<summary>
Fired when the mousedown originated outside the current view. The base version of this method
passes on the event to all children if the 'up' point is within its saved rect.
</summary>
<param name="pt">Mouseup point</param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseMove(System.Drawing.Point)">
<summary>
Tracks mouseover and fires the MouseOverChange event, as well as the MouseEvent event for mouse move.
Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.RawKeyAction(System.Int16,System.Int32,System.Int32,System.Boolean@)">
<summary>
Parses a key message and fires the specific key event methods.
Key events are only sent to the control with focus.
</summary>
<param name="Msg"></param>
<param name="WParam"></param>
<param name="LParam"></param>
<param name="Eat"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.DrawNow(VirindiViewService.DxTexture)">
<summary>
WARNING: ONLY A PARENT CONTROL SHOULD CALL THIS METHOD.
This method is overridden in derived controls to handle the actual control drawing. Overridden methods should call
the base, draw, and recursively call this method on all child controls.
</summary>
<param name="iSavedTarget"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.SetClipRegion(System.Drawing.Rectangle,VirindiViewService.HudViewDrawStyle,VirindiViewService.DrawOptions,System.Drawing.Rectangle)">
<summary>
WARNING: ONLY A PARENT CONTROL SHOULD CALL THIS METHOD.
Notifies a control of changed saved draw options. This method saves its parameters in the Savedxxx properties.
Parent controls should override this method and recursively notify children of their new draw options, altering
their pClipRegion to reflect their new position in the View.
This base method also fires the DrawStateChange and ThemeChanged events.
</summary>
<param name="pClipRegion">This control's area, relative to the view area.</param>
<param name="pStyle">The theme applied to this control.</param>
<param name="pContext">The context of this control, eg. inside a listbox.</param>
<param name="pViewRect">The position of the View, in game window coordinates.</param>
</member>
<member name="P:VirindiViewService.Controls.HudControl.CanDraw">
<summary>
WARNING: ONLY A PARENT CONTROL SHOULD SET THIS PROPERTY.
</summary>
</member>
<member name="P:VirindiViewService.Controls.HudControl.XMLAttributes">
<summary>
List of XmlAttributes present on the XmlNode that was used to construct this control, if the control was loaded from XML. Otherwise, empty.
</summary>
</member>
<member name="P:VirindiViewService.Controls.HudControl.XMLNode">
<summary>
The XmlNode used to construct this control, if the control was loaded from XML. Otherwise, null.
</summary>
</member>
<member name="P:VirindiViewService.Controls.HudControl.InternalName">
<summary>
The name that this control will be initialized with.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudConsole">
<summary>
A multiline uneditable scrolling text box.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudPictureBox">
<summary>
A single image control.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudImageButton">
<summary>
A button using custom images.
</summary>
</member>
<member name="T:MyClasses.HashedList`1">
<summary>
A doubly-linked list with a Dictionary index. Duplicate items are not allowed.
-Add is O(1)
-Contains is O(1)
-Remove is O(1)
-Get/set by index is O(n)
-Insert is O(n)
-RemoveAt is O(n)
Additionally, a cached pointer (with associated index) is kept pointing to the last used index item.
When looking up an item by index, the list is walked from the head, tail, or cached index pointer.
Thus, doing multiple operations in index order is O(1) even without an enumerator.
</summary>
<typeparam name="T"></typeparam>
</member>
<member name="M:MyClasses.HashedList`1.RunToIndex(System.Int32)">
<summary>
This method gets the node corresponding to a particular index. To get there,
the list is traversed from the head, tail, or cached index pointer (if valid).
</summary>
<param name="ind"></param>
<returns></returns>
</member>
<member name="T:VirindiViewService.Controls.HudBrowser">
<summary>
Web browser control, using Awesomium (free license version)
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudHScrollBar">
<summary>
A horizontal scrollbar.
</summary>
</member>
<member name="T:Ciper.AC.AC_Text">
<summary>
Summary description for ByteCursor.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudCheckBox">
<summary>
A checkbox with optional associated text. Uses its parent to provide the background.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudTextBox">
<summary>
A single-line text input box.
</summary>
</member>
<member name="M:VirindiViewService.IElementRenderer.Measure(VirindiViewService.HudViewDrawStyle,System.Drawing.Size)">
<summary>
Called before render so the required size of the new target area can be calculated.
The returned value is the size of the desired draw area, not including outer borders and
style-dependent padding. This size must be less than or equal to MaximumSize in each dimension.
</summary>
<param name="style"></param>
<returns></returns>
</member>
<member name="M:VirindiViewService.IElementRenderer.Render(VirindiViewService.IRenderTarget,System.Drawing.Rectangle,VirindiViewService.HudViewDrawStyle)">
<summary>
Draw this element. When this is called, the background and borders will already have been drawn, and
target will already be in BeginRender. This method should leave the target in render mode.
</summary>
<param name="target"></param>
<param name="drawregion"></param>
<param name="style"></param>
</member>
<member name="T:VirindiViewService.cTipStringRenderer">
<summary>
A renderer for string-only tooltips.
</summary>
</member>
<member name="T:MyClasses.HashedSet`1">
<summary>
Represents an unordered set of items. Duplicates are not allowed.
(This is really just a dictionary which only holds keys.)
Should be used when a collection of non-duplicate items is needed and
the order doesn't matter.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudTabView">
<summary>
A series of titled tabs along the top, each one having an associated control which appears
on the bottom when its tab is enabled.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudProgressBar">
<summary>
A progressbar.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudButton">
<summary>
A regular pushbutton-style control.
</summary>
</member>
<member name="M:VirindiViewService.Service.Game_D3DBeginSceneOriginal">
<summary>
Calls the non-hooked IDirect3DDevice9::BeginScene function. When rendering inside a VVS view or texture, use DxTexture.BeginRender() instead.
</summary>
<returns></returns>
</member>
<member name="M:VirindiViewService.Service.Game_D3DEndSceneOriginal">
<summary>
Calls the non-hooked IDirect3DDevice9::EndScene function. When rendering inside a VVS view or texture, use DxTexture.EndRender() instead.
</summary>
<returns></returns>
</member>
<member name="P:VirindiViewService.Service.HudBarInstance">
<summary>
Gets the current instance of the VVS bar.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudChatbox">
<summary>
A console containing game chat.
</summary>
</member>
<member name="M:VirindiViewService.DxTexture.BeginRender(System.Boolean,System.Boolean,System.Int32,System.Int32,System.Int32)">
<summary>
Initializes Direct3D drawing and sets the rendertarget to this texture. Calls to this method should be minimized to improve performance. DxTexture.EndRender() must be called after calling this method.
</summary>
<param name="AlphaTestEnable"></param>
<param name="SeparateAlphaEnable"></param>
<param name="SourceBlendAlpha"></param>
<param name="DestinationBlendAlpha"></param>
<param name="BlendOperation"></param>
</member>
<member name="M:VirindiViewService.DxTexture.EndRender">
<summary>
Ends Direct3D rendering and resets the rendertarget. Must be called after DxTexture.BeginRender().
</summary>
</member>
<member name="M:VirindiViewService.DxTexture.DrawLine(System.Drawing.PointF,System.Drawing.PointF,System.Drawing.Color,System.Single)">
<summary>
Note: Before use, FlushSprite() may need to be called to ensure correct ordering.
</summary>
<param name="p1"></param>
<param name="p2"></param>
<param name="color"></param>
<param name="width"></param>
</member>
<member name="M:VirindiViewService.DxTexture.DXDrawUserPrimitives(Microsoft.DirectX.Direct3D.PrimitiveType,System.Int32,System.Object,Microsoft.DirectX.Direct3D.VertexFormats)">
<summary>
Note: Before use, you must call BeginUserDrawOperation().
</summary>
<param name="ptype"></param>
<param name="count"></param>
<param name="data"></param>
<param name="vertexformat"></param>
</member>
<member name="M:VirindiViewService.DxTexture.DXDrawUserPrimitives(Microsoft.DirectX.Direct3D.PrimitiveType,System.Int32,System.Object,Microsoft.DirectX.Direct3D.VertexFormats,VirindiViewService.DxTexture)">
<summary>
Note: Before use, you must call BeginUserDrawOperation().
</summary>
<param name="ptype"></param>
<param name="count"></param>
<param name="data"></param>
<param name="vertexformat"></param>
<param name="texture"></param>
</member>
<member name="T:VirindiViewService.Controls.HudList">
<summary>
A vertically scrolling list, containing a number of rows and columns. Every row
has the same number and types of columns. Each column contains a specified control type.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudImageStack">
<summary>
A number of images on top of each other, which always draw in the proper order.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudStaticText">
<summary>
A simple text display control. Uses its parent to provide the background.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudFixedLayout">
<summary>
A container for multiple controls with set locations and sizes within.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudCombo">
<summary>
A dropdown list.
</summary>
</member>
<member name="M:VirindiViewService.ContextMenu`1.Show(System.Drawing.Point)">
<summary>
If the context menu is not visible, it is created at the specified point.
</summary>
</member>
<member name="M:VirindiViewService.ContextMenu`1.Show(System.Drawing.Point,VirindiViewService.HudViewDrawStyle)">
<summary>
If the context menu is not visible, it is created at the specified point with the specified theme.
</summary>
</member>
<member name="T:VirindiViewService.TooltipSystem.cTooltipInfo">
<summary>
Provides information about an associated tooltip.
</summary>
</member>
<member name="P:VirindiViewService.TooltipSystem.cTooltipInfo.Control">
<summary>
The HudControl that the tip is attached to.
</summary>
</member>
<member name="P:VirindiViewService.TooltipSystem.cTooltipInfo.Text">
<summary>
Deprecated.
Returns the text associated with a tooltip only if the tip contains a cStringRenderer.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudVScrollBar">
<summary>
A vertical scrollbar.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudHSlider">
<summary>
A horizontal slider.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudEmulator">
<summary>
A control that allows easy access to underlying draw methods.
</summary>
</member>
</members>
</doc>

3
GearCycler/mainView.xml Normal file
View file

@ -0,0 +1,3 @@
<View>
<HudButton Name="btnCycle" Text="Cycle Gear" Location="10,10" Size="120,30" />
</View>

View file

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using Decal.Adapter;
namespace MosswartMassacre
{
public static class DelayedCommandManager
{
static List<DelayedCommand> delayedCommands = new List<DelayedCommand>();
static bool isDelayListening = false;
public static void AddDelayedCommand(string command, double delay)
{
var delayed = new DelayedCommand(command, delay);
delayedCommands.Add(delayed);
delayedCommands.Sort((x, y) => x.RunAt.CompareTo(y.RunAt));
if (!isDelayListening)
{
isDelayListening = true;
CoreManager.Current.RenderFrame += Core_RenderFrame_Delay;
}
}
private static void Core_RenderFrame_Delay(object sender, EventArgs e)
{
try
{
while (delayedCommands.Count > 0 && delayedCommands[0].RunAt <= DateTime.UtcNow)
{
PluginCore.WriteToChat($"[Debug] Executing delayed: {delayedCommands[0].Command}");
CoreManager.Current.Actions.InvokeChatParser(delayedCommands[0].Command);
delayedCommands.RemoveAt(0);
}
if (delayedCommands.Count == 0)
{
CoreManager.Current.RenderFrame -= Core_RenderFrame_Delay;
isDelayListening = false;
}
}
catch (Exception ex)
{
PluginCore.WriteToChat("Error in delayed command system: " + ex.Message);
}
}
}
public class DelayedCommand
{
public string Command { get; set; }
public double Delay { get; set; }
public DateTime RunAt { get; set; }
public DelayedCommand(string command, double delay)
{
Command = command;
Delay = delay;
RunAt = DateTime.UtcNow.AddMilliseconds(delay);
}
}
}

View file

@ -12,6 +12,8 @@ namespace MosswartMassacre
private static IStaticText lblElapsedTime; private static IStaticText lblElapsedTime;
private static IStaticText lblRareCount; private static IStaticText lblRareCount;
private static IButton btnRestart; private static IButton btnRestart;
private static IButton btnToggleRareMeta;
private static bool rareMetaEnabled = true;
public static void ViewInit() public static void ViewInit()
{ {
@ -29,6 +31,9 @@ namespace MosswartMassacre
lblRareCount = (IStaticText)View["lblRareCount"]; lblRareCount = (IStaticText)View["lblRareCount"];
btnRestart = (IButton)View["btnRestart"]; btnRestart = (IButton)View["btnRestart"];
btnRestart.Hit += OnRestartClick; btnRestart.Hit += OnRestartClick;
btnToggleRareMeta = (IButton)View["btnToggleRareMeta"];
btnToggleRareMeta.Hit += OnToggleRareMetaClick;
btnToggleRareMeta.Text = "Meta: ON";
PluginCore.WriteToChat("View initialized."); PluginCore.WriteToChat("View initialized.");
} }
@ -45,6 +50,7 @@ namespace MosswartMassacre
View.Dispose(); View.Dispose();
PluginCore.WriteToChat("View destroyed."); PluginCore.WriteToChat("View destroyed.");
btnRestart.Hit -= OnRestartClick; btnRestart.Hit -= OnRestartClick;
btnToggleRareMeta.Hit -= OnToggleRareMetaClick;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -71,5 +77,12 @@ namespace MosswartMassacre
{ {
PluginCore.RestartStats(); PluginCore.RestartStats();
} }
private static void OnToggleRareMetaClick(object sender, EventArgs e)
{
rareMetaEnabled = !rareMetaEnabled;
btnToggleRareMeta.Text = rareMetaEnabled ? "Meta: ON" : "Meta: OFF";
PluginCore.rareMetaEnabled = rareMetaEnabled; // Share toggle with PluginCore
PluginCore.WriteToChat($"[Debug] rareMetaEnabled is now: {rareMetaEnabled}");
}
} }
} }

View file

@ -49,6 +49,7 @@
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
@ -60,6 +61,7 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="DelayedCommandManager.cs" />
<Compile Include="MainView.cs" /> <Compile Include="MainView.cs" />
<Compile Include="PluginCore.cs" /> <Compile Include="PluginCore.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />

View file

@ -1,4 +1,6 @@
using System; using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Timers; using System.Timers;
using Decal.Adapter; using Decal.Adapter;
@ -17,6 +19,10 @@ namespace MosswartMassacre
internal static double killsPerHour = 0; internal static double killsPerHour = 0;
internal static DateTime statsStartTime = DateTime.Now; internal static DateTime statsStartTime = DateTime.Now;
internal static Timer updateTimer; internal static Timer updateTimer;
internal static bool rareMetaEnabled = true;
private static Queue<string> rareMessageQueue = new Queue<string>();
private static DateTime _lastSent = DateTime.MinValue;
private static readonly Queue<string> _chatQueue = new Queue<string>();
protected override void Startup() protected override void Startup()
{ {
@ -83,10 +89,40 @@ namespace MosswartMassacre
MainView.UpdateKillStats(totalKills, killsPer5Min, killsPerHour); MainView.UpdateKillStats(totalKills, killsPer5Min, killsPerHour);
} }
if (IsRareDiscoveryMessage(e.Text)) if (IsRareDiscoveryMessage(e.Text, out string rareText))
{ {
rareCount++; rareCount++;
MainView.UpdateRareCount(rareCount); MainView.UpdateRareCount(rareCount);
if (rareMetaEnabled)
{
Decal_DispatchOnChatCommand("/vt setmetastate loot_rare");
}
DelayedCommandManager.AddDelayedCommand($"/a {rareText}", 3000);
}
if (e.Text.EndsWith("!testrare\""))
{
string simulatedText = $"{CoreManager.Current.CharacterFilter.Name} has discovered the Ancient Pickle!";
if (IsRareDiscoveryMessage(simulatedText, out string simulatedRareText))
{
rareCount++;
MainView.UpdateRareCount(rareCount);
if (rareMetaEnabled)
{
Decal_DispatchOnChatCommand("/vt setmetastate loot_rare");
}
DelayedCommandManager.AddDelayedCommand($"/a {simulatedRareText}", 3000);
}
else
{
WriteToChat("[Test] Simulated rare message didn't match the regex.");
}
return;
} }
if (e.Color == 18 && e.Text.EndsWith("!report\"")) if (e.Color == 18 && e.Text.EndsWith("!report\""))
{ {
@ -181,23 +217,19 @@ namespace MosswartMassacre
return false; return false;
} }
private bool IsRareDiscoveryMessage(string text) private bool IsRareDiscoveryMessage(string text, out string rareTextOnly)
{ {
rareTextOnly = null;
// Match pattern: "<name> has discovered the <something>!" // Match pattern: "<name> has discovered the <something>!"
string pattern = @"^(?<name>['A-Za-z ]+)\s(?<text>has discovered the .*!$)"; string pattern = @"^(?<name>['A-Za-z ]+)\s(?<text>has discovered the .*!$)";
Match match = Regex.Match(text, pattern); Match match = Regex.Match(text, pattern);
if (match.Success) if (match.Success && match.Groups["name"].Value == CoreManager.Current.CharacterFilter.Name)
{
// Capture the name from the matched text
string name = match.Groups["name"].Value;
// Compare the captured name to the player's name
if (name == CoreManager.Current.CharacterFilter.Name)
{ {
rareTextOnly = match.Groups["text"].Value; // just "has discovered the Ancient Pickle!"
return true; return true;
} }
}
return false; return false;
} }
@ -217,5 +249,30 @@ namespace MosswartMassacre
MainView.UpdateKillStats(totalKills, killsPer5Min, killsPerHour); MainView.UpdateKillStats(totalKills, killsPer5Min, killsPerHour);
MainView.UpdateRareCount(rareCount); MainView.UpdateRareCount(rareCount);
} }
[DllImport("Decal.dll")]
private static extern int DispatchOnChatCommand(ref IntPtr str, [MarshalAs(UnmanagedType.U4)] int target);
public static bool Decal_DispatchOnChatCommand(string cmd)
{
IntPtr bstr = Marshal.StringToBSTR(cmd);
try
{
bool eaten = (DispatchOnChatCommand(ref bstr, 1) & 0x1) > 0;
return eaten;
}
finally
{
Marshal.FreeBSTR(bstr);
} }
} }
public static void DispatchChatToBoxWithPluginIntercept(string cmd)
{
if (!Decal_DispatchOnChatCommand(cmd))
CoreManager.Current.Actions.InvokeChatParser(cmd);
}
}
}

View file

@ -1,12 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<view icon="7735" title="Mosswart Massacre" width="160" height="160"> <view icon="7735" title="Mosswart Massacre" width="160" height="180">
<control progid="DecalControls.FixedLayout" clipped=""> <control progid="DecalControls.FixedLayout" clipped="">
<control progid="DecalControls.StaticText" name="lblTotalKills" left="10" top="10" width="250" height="20" text="Total Kills: 0"/> <control progid="DecalControls.StaticText" name="lblTotalKills" left="10" top="10" width="250" height="20" text="Total Kills: 0"/>
<control progid="DecalControls.StaticText" name="lblKillsPer5Min" left="10" top="30" width="250" height="20" text="Kills per 5 Min: 0"/> <control progid="DecalControls.StaticText" name="lblKillsPer5Min" left="10" top="30" width="250" height="20" text="Kills per 5 Min: 0"/>
<control progid="DecalControls.StaticText" name="lblKillsPerHour" left="10" top="50" width="250" height="20" text="Kills per Hour: 0"/> <control progid="DecalControls.StaticText" name="lblKillsPerHour" left="10" top="50" width="250" height="20" text="Kills per Hour: 0"/>
<control progid="DecalControls.StaticText" name="lblElapsedTime" left="10" top="70" width="250" height="20" text="Elapsed Time: 00:00:00"/> <control progid="DecalControls.StaticText" name="lblElapsedTime" left="10" top="70" width="250" height="20" text="Elapsed Time: 00:00:00"/>
<control progid="DecalControls.StaticText" name="lblRareCount" left="10" top="90" width="250" height="20" text="Rare Count: 0"/> <control progid="DecalControls.StaticText" name="lblRareCount" left="10" top="90" width="250" height="20" text="Rare Count: 0"/>
<control progid="DecalControls.PushButton" name="btnRestart" left="10" top="110" width="100" height="20" text="Restart"/> <control progid="DecalControls.PushButton" name="btnRestart" left="10" top="110" width="60" height="20" text="Restart"/>
<control progid="DecalControls.PushButton" name="btnToggleRareMeta" left="10" top="135" width="60" height="20" text="Meta Rare: ON"/>
</control> </control>
</view> </view>

View file

@ -0,0 +1,386 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>VirindiViewService</name>
</assembly>
<members>
<member name="F:VirindiViewService.WriteTextFormats.None">
<summary>
Implies Top and Left
</summary>
</member>
<member name="T:VirindiViewService.HudViewDrawStyle">
<summary>
Provides theme elements, which can be drawn by controls.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudThemeElement">
<summary>
Displays an element from the current theme.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudControl">
<summary>
The base class for all Virindi Views controls.
</summary>
</member>
<member name="M:VirindiViewService.Controls.HudControl.Initialize">
<summary>
Called after this control is added to a ControlGroup. This is when the Name and details have been set.
</summary>
</member>
<member name="M:VirindiViewService.Controls.HudControl.AddChild(VirindiViewService.Controls.HudControl)">
<summary>
Add and initialize a child control of this control. The child may be removed by disposing it.
</summary>
<param name="ctrl"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.RemovedChild(VirindiViewService.Controls.HudControl)">
<summary>
Called when a child of this control is disposed.
</summary>
<param name="ch"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.Dispose">
<summary>
Recursively disposes all children and removes this control from the view, if it is initialized.
</summary>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseWheel(System.Drawing.Point,System.Int32)">
<summary>
Handles a mouse wheel event. Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
<param name="amt"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseDown(System.Drawing.Point)">
<summary>
Fires the MouseEvent event for mouse down, and sets this control as the focus control if CanTakeFocus is true.
Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseUp(System.Drawing.Point,System.Drawing.Point)">
<summary>
Fires the MouseEvent event for mouse up as well as the Hit event.
Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
<param name="orig"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.ExternalMouseUp(System.Drawing.Point)">
<summary>
Fired when the mousedown originated outside the current view. The base version of this method
passes on the event to all children if the 'up' point is within its saved rect.
</summary>
<param name="pt">Mouseup point</param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.MouseMove(System.Drawing.Point)">
<summary>
Tracks mouseover and fires the MouseOverChange event, as well as the MouseEvent event for mouse move.
Parent controls must pass this on to applicable children if necessary.
</summary>
<param name="pt"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.RawKeyAction(System.Int16,System.Int32,System.Int32,System.Boolean@)">
<summary>
Parses a key message and fires the specific key event methods.
Key events are only sent to the control with focus.
</summary>
<param name="Msg"></param>
<param name="WParam"></param>
<param name="LParam"></param>
<param name="Eat"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.DrawNow(VirindiViewService.DxTexture)">
<summary>
WARNING: ONLY A PARENT CONTROL SHOULD CALL THIS METHOD.
This method is overridden in derived controls to handle the actual control drawing. Overridden methods should call
the base, draw, and recursively call this method on all child controls.
</summary>
<param name="iSavedTarget"></param>
</member>
<member name="M:VirindiViewService.Controls.HudControl.SetClipRegion(System.Drawing.Rectangle,VirindiViewService.HudViewDrawStyle,VirindiViewService.DrawOptions,System.Drawing.Rectangle)">
<summary>
WARNING: ONLY A PARENT CONTROL SHOULD CALL THIS METHOD.
Notifies a control of changed saved draw options. This method saves its parameters in the Savedxxx properties.
Parent controls should override this method and recursively notify children of their new draw options, altering
their pClipRegion to reflect their new position in the View.
This base method also fires the DrawStateChange and ThemeChanged events.
</summary>
<param name="pClipRegion">This control's area, relative to the view area.</param>
<param name="pStyle">The theme applied to this control.</param>
<param name="pContext">The context of this control, eg. inside a listbox.</param>
<param name="pViewRect">The position of the View, in game window coordinates.</param>
</member>
<member name="P:VirindiViewService.Controls.HudControl.CanDraw">
<summary>
WARNING: ONLY A PARENT CONTROL SHOULD SET THIS PROPERTY.
</summary>
</member>
<member name="P:VirindiViewService.Controls.HudControl.XMLAttributes">
<summary>
List of XmlAttributes present on the XmlNode that was used to construct this control, if the control was loaded from XML. Otherwise, empty.
</summary>
</member>
<member name="P:VirindiViewService.Controls.HudControl.XMLNode">
<summary>
The XmlNode used to construct this control, if the control was loaded from XML. Otherwise, null.
</summary>
</member>
<member name="P:VirindiViewService.Controls.HudControl.InternalName">
<summary>
The name that this control will be initialized with.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudConsole">
<summary>
A multiline uneditable scrolling text box.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudPictureBox">
<summary>
A single image control.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudImageButton">
<summary>
A button using custom images.
</summary>
</member>
<member name="T:MyClasses.HashedList`1">
<summary>
A doubly-linked list with a Dictionary index. Duplicate items are not allowed.
-Add is O(1)
-Contains is O(1)
-Remove is O(1)
-Get/set by index is O(n)
-Insert is O(n)
-RemoveAt is O(n)
Additionally, a cached pointer (with associated index) is kept pointing to the last used index item.
When looking up an item by index, the list is walked from the head, tail, or cached index pointer.
Thus, doing multiple operations in index order is O(1) even without an enumerator.
</summary>
<typeparam name="T"></typeparam>
</member>
<member name="M:MyClasses.HashedList`1.RunToIndex(System.Int32)">
<summary>
This method gets the node corresponding to a particular index. To get there,
the list is traversed from the head, tail, or cached index pointer (if valid).
</summary>
<param name="ind"></param>
<returns></returns>
</member>
<member name="T:VirindiViewService.Controls.HudBrowser">
<summary>
Web browser control, using Awesomium (free license version)
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudHScrollBar">
<summary>
A horizontal scrollbar.
</summary>
</member>
<member name="T:Ciper.AC.AC_Text">
<summary>
Summary description for ByteCursor.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudCheckBox">
<summary>
A checkbox with optional associated text. Uses its parent to provide the background.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudTextBox">
<summary>
A single-line text input box.
</summary>
</member>
<member name="M:VirindiViewService.IElementRenderer.Measure(VirindiViewService.HudViewDrawStyle,System.Drawing.Size)">
<summary>
Called before render so the required size of the new target area can be calculated.
The returned value is the size of the desired draw area, not including outer borders and
style-dependent padding. This size must be less than or equal to MaximumSize in each dimension.
</summary>
<param name="style"></param>
<returns></returns>
</member>
<member name="M:VirindiViewService.IElementRenderer.Render(VirindiViewService.IRenderTarget,System.Drawing.Rectangle,VirindiViewService.HudViewDrawStyle)">
<summary>
Draw this element. When this is called, the background and borders will already have been drawn, and
target will already be in BeginRender. This method should leave the target in render mode.
</summary>
<param name="target"></param>
<param name="drawregion"></param>
<param name="style"></param>
</member>
<member name="T:VirindiViewService.cTipStringRenderer">
<summary>
A renderer for string-only tooltips.
</summary>
</member>
<member name="T:MyClasses.HashedSet`1">
<summary>
Represents an unordered set of items. Duplicates are not allowed.
(This is really just a dictionary which only holds keys.)
Should be used when a collection of non-duplicate items is needed and
the order doesn't matter.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudTabView">
<summary>
A series of titled tabs along the top, each one having an associated control which appears
on the bottom when its tab is enabled.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudProgressBar">
<summary>
A progressbar.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudButton">
<summary>
A regular pushbutton-style control.
</summary>
</member>
<member name="M:VirindiViewService.Service.Game_D3DBeginSceneOriginal">
<summary>
Calls the non-hooked IDirect3DDevice9::BeginScene function. When rendering inside a VVS view or texture, use DxTexture.BeginRender() instead.
</summary>
<returns></returns>
</member>
<member name="M:VirindiViewService.Service.Game_D3DEndSceneOriginal">
<summary>
Calls the non-hooked IDirect3DDevice9::EndScene function. When rendering inside a VVS view or texture, use DxTexture.EndRender() instead.
</summary>
<returns></returns>
</member>
<member name="P:VirindiViewService.Service.HudBarInstance">
<summary>
Gets the current instance of the VVS bar.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudChatbox">
<summary>
A console containing game chat.
</summary>
</member>
<member name="M:VirindiViewService.DxTexture.BeginRender(System.Boolean,System.Boolean,System.Int32,System.Int32,System.Int32)">
<summary>
Initializes Direct3D drawing and sets the rendertarget to this texture. Calls to this method should be minimized to improve performance. DxTexture.EndRender() must be called after calling this method.
</summary>
<param name="AlphaTestEnable"></param>
<param name="SeparateAlphaEnable"></param>
<param name="SourceBlendAlpha"></param>
<param name="DestinationBlendAlpha"></param>
<param name="BlendOperation"></param>
</member>
<member name="M:VirindiViewService.DxTexture.EndRender">
<summary>
Ends Direct3D rendering and resets the rendertarget. Must be called after DxTexture.BeginRender().
</summary>
</member>
<member name="M:VirindiViewService.DxTexture.DrawLine(System.Drawing.PointF,System.Drawing.PointF,System.Drawing.Color,System.Single)">
<summary>
Note: Before use, FlushSprite() may need to be called to ensure correct ordering.
</summary>
<param name="p1"></param>
<param name="p2"></param>
<param name="color"></param>
<param name="width"></param>
</member>
<member name="M:VirindiViewService.DxTexture.DXDrawUserPrimitives(Microsoft.DirectX.Direct3D.PrimitiveType,System.Int32,System.Object,Microsoft.DirectX.Direct3D.VertexFormats)">
<summary>
Note: Before use, you must call BeginUserDrawOperation().
</summary>
<param name="ptype"></param>
<param name="count"></param>
<param name="data"></param>
<param name="vertexformat"></param>
</member>
<member name="M:VirindiViewService.DxTexture.DXDrawUserPrimitives(Microsoft.DirectX.Direct3D.PrimitiveType,System.Int32,System.Object,Microsoft.DirectX.Direct3D.VertexFormats,VirindiViewService.DxTexture)">
<summary>
Note: Before use, you must call BeginUserDrawOperation().
</summary>
<param name="ptype"></param>
<param name="count"></param>
<param name="data"></param>
<param name="vertexformat"></param>
<param name="texture"></param>
</member>
<member name="T:VirindiViewService.Controls.HudList">
<summary>
A vertically scrolling list, containing a number of rows and columns. Every row
has the same number and types of columns. Each column contains a specified control type.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudImageStack">
<summary>
A number of images on top of each other, which always draw in the proper order.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudStaticText">
<summary>
A simple text display control. Uses its parent to provide the background.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudFixedLayout">
<summary>
A container for multiple controls with set locations and sizes within.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudCombo">
<summary>
A dropdown list.
</summary>
</member>
<member name="M:VirindiViewService.ContextMenu`1.Show(System.Drawing.Point)">
<summary>
If the context menu is not visible, it is created at the specified point.
</summary>
</member>
<member name="M:VirindiViewService.ContextMenu`1.Show(System.Drawing.Point,VirindiViewService.HudViewDrawStyle)">
<summary>
If the context menu is not visible, it is created at the specified point with the specified theme.
</summary>
</member>
<member name="T:VirindiViewService.TooltipSystem.cTooltipInfo">
<summary>
Provides information about an associated tooltip.
</summary>
</member>
<member name="P:VirindiViewService.TooltipSystem.cTooltipInfo.Control">
<summary>
The HudControl that the tip is attached to.
</summary>
</member>
<member name="P:VirindiViewService.TooltipSystem.cTooltipInfo.Text">
<summary>
Deprecated.
Returns the text associated with a tooltip only if the tip contains a cStringRenderer.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudVScrollBar">
<summary>
A vertical scrollbar.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudHSlider">
<summary>
A horizontal slider.
</summary>
</member>
<member name="T:VirindiViewService.Controls.HudEmulator">
<summary>
A control that allows easy access to underlying draw methods.
</summary>
</member>
</members>
</doc>

View file

@ -1,12 +1,14 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.13.35919.96 d17.13 VisualStudioVersion = 17.13.35919.96
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MosswartMassacre", "MosswartMassacre\MosswartMassacre.csproj", "{8C97E839-4D05-4A5F-B0C8-E8E778654322}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MosswartMassacre", "MosswartMassacre\MosswartMassacre.csproj", "{8C97E839-4D05-4A5F-B0C8-E8E778654322}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GearCycler", "GearCycler\GearCycler.csproj", "{1293560E-2A56-417F-8116-8CE0420DC97C}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -17,6 +19,10 @@ Global
{8C97E839-4D05-4A5F-B0C8-E8E778654322}.Debug|Any CPU.Build.0 = Debug|Any CPU {8C97E839-4D05-4A5F-B0C8-E8E778654322}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8C97E839-4D05-4A5F-B0C8-E8E778654322}.Release|Any CPU.ActiveCfg = Release|Any CPU {8C97E839-4D05-4A5F-B0C8-E8E778654322}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C97E839-4D05-4A5F-B0C8-E8E778654322}.Release|Any CPU.Build.0 = Release|Any CPU {8C97E839-4D05-4A5F-B0C8-E8E778654322}.Release|Any CPU.Build.0 = Release|Any CPU
{1293560E-2A56-417F-8116-8CE0420DC97C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1293560E-2A56-417F-8116-8CE0420DC97C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1293560E-2A56-417F-8116-8CE0420DC97C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1293560E-2A56-417F-8116-8CE0420DC97C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE