Skip to content

Commit 092f8bd

Browse files
committed
Initial commit
0 parents  commit 092f8bd

12 files changed

+446
-0
lines changed

.editorconfig

+174
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
root = true
2+
# top-most EditorConfig file
3+
4+
[*]
5+
charset = utf-8
6+
7+
end_of_line = lf
8+
insert_final_newline = true
9+
10+
# 4 space indentation
11+
indent_style = space
12+
indent_size = 4
13+
14+
# disable redundant style warnings
15+
16+
# Microsoft .NET properties
17+
csharp_indent_braces = false
18+
csharp_new_line_before_catch = false
19+
csharp_new_line_before_else = false
20+
csharp_new_line_before_finally = true
21+
csharp_new_line_before_members_in_object_initializers = false
22+
csharp_new_line_before_open_brace = none
23+
csharp_preferred_modifier_order = public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
24+
csharp_prefer_braces = true:none
25+
csharp_space_before_colon_in_inheritance_clause = false
26+
csharp_style_var_elsewhere = true:suggestion
27+
csharp_style_var_for_built_in_types = true:suggestion
28+
csharp_style_var_when_type_is_apparent = true:suggestion
29+
dotnet_code_quality_unused_parameters = non_public
30+
dotnet_naming_rule.event_rule.severity = warning
31+
dotnet_naming_rule.event_rule.style = on_upper_camel_case_style
32+
dotnet_naming_rule.event_rule.symbols = event_symbols
33+
dotnet_naming_rule.private_constants_rule.severity = warning
34+
dotnet_naming_rule.private_constants_rule.style = upper_camel_case_style
35+
dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
36+
dotnet_naming_rule.private_instance_fields_rule.severity = warning
37+
dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style
38+
dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols
39+
dotnet_naming_rule.private_static_fields_rule.severity = warning
40+
dotnet_naming_rule.private_static_fields_rule.style = upper_camel_case_style
41+
dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols
42+
dotnet_naming_rule.private_static_readonly_rule.severity = warning
43+
dotnet_naming_rule.private_static_readonly_rule.style = upper_camel_case_style
44+
dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols
45+
dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
46+
dotnet_naming_style.on_upper_camel_case_style.capitalization = pascal_case
47+
dotnet_naming_style.on_upper_camel_case_style.required_prefix = On
48+
dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
49+
dotnet_naming_symbols.event_symbols.applicable_accessibilities = *
50+
dotnet_naming_symbols.event_symbols.applicable_kinds = event
51+
dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private
52+
dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
53+
dotnet_naming_symbols.private_constants_symbols.required_modifiers = const
54+
dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = private
55+
dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field
56+
dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = private
57+
dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field
58+
dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static
59+
dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
60+
dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
61+
dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static, readonly
62+
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:suggestion
63+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggestion
64+
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:suggestion
65+
dotnet_style_predefined_type_for_member_access = true:suggestion
66+
dotnet_style_qualification_for_event = true:none
67+
dotnet_style_qualification_for_field = true:none
68+
dotnet_style_qualification_for_method = true:none
69+
dotnet_style_qualification_for_property = true:none
70+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
71+
dotnet_style_parentheses_in_other_operators = always_for_clarity:silent
72+
dotnet_style_object_initializer = false
73+
csharp_space_between_method_call_empty_parameter_list_parentheses = false
74+
csharp_space_between_method_call_parameter_list_parentheses = false
75+
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
76+
csharp_space_between_empty_square_brackets = false
77+
csharp_space_before_semicolon_in_for_statement = false
78+
csharp_space_before_open_square_brackets = false
79+
csharp_space_before_comma = false
80+
csharp_space_after_keywords_in_control_flow_statements = true
81+
csharp_space_after_comma = true
82+
csharp_space_after_cast = false
83+
csharp_space_around_binary_operators = before_and_after
84+
csharp_space_between_method_declaration_name_and_open_parenthesis = false
85+
csharp_space_between_method_declaration_parameter_list_parentheses = false
86+
csharp_space_between_parentheses = none
87+
csharp_space_between_square_brackets = false
88+
89+
# ReSharper properties
90+
resharper_align_linq_query = false
91+
resharper_align_multiline_argument = true
92+
resharper_align_multiline_binary_expressions_chain = false
93+
resharper_align_multiline_calls_chain = true
94+
resharper_align_multiline_expression = true
95+
resharper_align_multiline_extends_list = true
96+
resharper_align_multiline_for_stmt = true
97+
resharper_align_multiline_statement_conditions = false
98+
resharper_align_multline_type_parameter_constrains = false
99+
resharper_align_multline_type_parameter_list = false
100+
resharper_allow_comment_after_lbrace = true
101+
resharper_apply_on_completion = true
102+
resharper_auto_property_can_be_made_get_only_global_highlighting = none
103+
resharper_auto_property_can_be_made_get_only_local_highlighting = none
104+
resharper_autodetect_indent_settings = true
105+
resharper_braces_for_ifelse = required
106+
resharper_braces_redundant = true
107+
resharper_can_use_global_alias = false
108+
resharper_csharp_align_multiline_argument = false
109+
resharper_csharp_align_multiline_calls_chain = false
110+
resharper_csharp_align_multiline_expression = false
111+
resharper_csharp_align_multiline_extends_list = false
112+
resharper_csharp_align_multiline_for_stmt = false
113+
resharper_csharp_align_multiline_parameter = false
114+
resharper_csharp_align_multiple_declaration = false
115+
resharper_csharp_empty_block_style = together
116+
resharper_csharp_int_align_comments = false
117+
resharper_csharp_new_line_before_while = false
118+
resharper_csharp_space_before_type_parameter_constraint_colon = false
119+
resharper_csharp_wrap_after_declaration_lpar = true
120+
resharper_csharp_wrap_after_invocation_lpar = true
121+
resharper_csharp_wrap_arguments_style = chop_if_long
122+
resharper_csharp_wrap_before_binary_opsign = true
123+
resharper_csharp_wrap_before_declaration_rpar = true
124+
resharper_csharp_wrap_before_first_type_parameter_constraint = true
125+
resharper_csharp_wrap_before_invocation_rpar = true
126+
resharper_csharp_wrap_extends_list_style = chop_if_long
127+
resharper_csharp_wrap_parameters_style = chop_if_long
128+
resharper_enforce_line_ending_style = true
129+
resharper_int_align = false
130+
resharper_member_can_be_private_global_highlighting = none
131+
resharper_member_can_be_private_local_highlighting = none
132+
resharper_new_line_before_finally = false
133+
resharper_place_accessorholder_attribute_on_same_line = false
134+
resharper_place_field_attribute_on_same_line = false
135+
resharper_show_autodetect_configure_formatting_tip = false
136+
resharper_space_within_empty_braces = false
137+
resharper_trailing_comma_in_multiline_lists = true
138+
resharper_use_indent_from_vs = false
139+
resharper_wrap_array_initializer_style = chop_if_long
140+
resharper_wrap_before_extends_colon = true
141+
resharper_wrap_chained_binary_expressions = chop_if_long
142+
resharper_wrap_chained_binary_patterns = chop_if_long
143+
resharper_wrap_chained_method_calls = chop_if_long
144+
resharper_wrap_list_pattern = chop_if_long
145+
146+
# ReSharper inspection severities
147+
resharper_arrange_missing_parentheses_highlighting = hint
148+
resharper_arrange_redundant_parentheses_highlighting = hint
149+
resharper_arrange_this_qualifier_highlighting = none
150+
resharper_arrange_type_member_modifiers_highlighting = hint
151+
resharper_arrange_type_modifiers_highlighting = hint
152+
resharper_built_in_type_reference_style_for_member_access_highlighting = hint
153+
resharper_built_in_type_reference_style_highlighting = none
154+
resharper_foreach_can_be_converted_to_query_using_another_get_enumerator_highlighting = none
155+
resharper_foreach_can_be_partly_converted_to_query_using_another_get_enumerator_highlighting = none
156+
resharper_invert_if_highlighting = none
157+
resharper_loop_can_be_converted_to_query_highlighting = none
158+
resharper_method_has_async_overload_highlighting = none
159+
resharper_private_field_can_be_converted_to_local_variable_highlighting = none
160+
resharper_redundant_base_qualifier_highlighting = none
161+
resharper_suggest_var_or_type_built_in_types_highlighting = hint
162+
resharper_suggest_var_or_type_elsewhere_highlighting = hint
163+
resharper_suggest_var_or_type_simple_types_highlighting = hint
164+
resharper_unused_auto_property_accessor_global_highlighting = none
165+
csharp_style_deconstructed_variable_declaration = true:silent
166+
167+
[*.{appxmanifest,asax,ascx,aspx,axaml,axml,build,c,c++,cc,cginc,compute,config,cp,cpp,cs,cshtml,csproj,css,cu,cuh,cxx,dbml,discomap,dtd,h,hh,hlsl,hlsli,hlslinc,hpp,htm,html,hxx,inc,inl,ino,ipp,js,json,jsproj,jsx,lsproj,master,mpp,mq4,mq5,mqh,njsproj,nuspec,paml,proj,props,proto,razor,resjson,resw,resx,skin,StyleCop,targets,tasks,tpp,ts,tsx,usf,ush,vb,vbproj,xaml,xamlx,xml,xoml,xsd}]
168+
indent_style = space
169+
indent_size = 4
170+
tab_width = 4
171+
dotnet_style_parentheses_in_other_operators = always_for_clarity:silent
172+
173+
[packages.lock.json]
174+
indent_size = 2

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.vs/
2+
obj/
3+
bin/
4+
*.user

README.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Who's Talking
2+
3+
_an ffxiv plogon_
4+
5+
See Discord voice activity indicators directly on your party list.
6+
7+
## Usage
8+
9+
Install from the in-game plugin installer.

WhosTalking.sln

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29709.97
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WhosTalking", "WhosTalking\WhosTalking.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|x64 = Debug|x64
11+
Release|x64 = Release|x64
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.ActiveCfg = Debug|x64
15+
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.Build.0 = Debug|x64
16+
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.ActiveCfg = Release|x64
17+
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.Build.0 = Release|x64
18+
{4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Debug|x64.ActiveCfg = Debug|x64
19+
{4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Debug|x64.Build.0 = Debug|x64
20+
{4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Release|x64.ActiveCfg = Release|x64
21+
{4FEC9558-EB25-419F-B86E-51B8CFDA32B7}.Release|x64.Build.0 = Release|x64
22+
EndGlobalSection
23+
GlobalSection(SolutionProperties) = preSolution
24+
HideSolutionNode = FALSE
25+
EndGlobalSection
26+
GlobalSection(ExtensibilityGlobals) = postSolution
27+
SolutionGuid = {B17E85B1-5F60-4440-9F9A-3DDE877E8CDF}
28+
EndGlobalSection
29+
EndGlobal

WhosTalking.sln.DotSettings

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
2+
<s:Boolean x:Key="/Default/UserDictionary/Words/=Whos/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

WhosTalking/Configuration.cs

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
using Dalamud.Configuration;
3+
using Dalamud.Plugin;
4+
5+
namespace WhosTalking;
6+
7+
[Serializable]
8+
public sealed class Configuration: IPluginConfiguration {
9+
// the below exist just to make saving less cumbersome
10+
[NonSerialized]
11+
private DalamudPluginInterface? pluginInterface;
12+
13+
public bool SomePropertyToBeSavedAndWithADefault { get; set; } = true;
14+
public int Version { get; set; } = 0;
15+
16+
public void Initialize(DalamudPluginInterface pluginInterface) {
17+
this.pluginInterface = pluginInterface;
18+
}
19+
20+
public void Save() {
21+
this.pluginInterface!.SavePluginConfig(this);
22+
}
23+
}

WhosTalking/Plugin.cs

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Dalamud.Interface.Windowing;
4+
using Dalamud.IoC;
5+
using Dalamud.Plugin;
6+
using JetBrains.Annotations;
7+
using WhosTalking.Windows;
8+
9+
namespace WhosTalking;
10+
11+
[PublicAPI]
12+
public sealed class Plugin: IDalamudPlugin {
13+
private Stack<Action> disposeActions = new();
14+
public WindowSystem WindowSystem = new("WhosTalking");
15+
16+
public Plugin(
17+
[RequiredVersion("1.0")] DalamudPluginInterface pluginInterface
18+
) {
19+
this.PluginInterface = pluginInterface;
20+
21+
this.Configuration = this.PluginInterface.GetPluginConfig() as Configuration ?? new Configuration();
22+
this.Configuration.Initialize(this.PluginInterface);
23+
24+
this.ConfigWindow = new ConfigWindow(this);
25+
this.disposeActions.Push(() => this.ConfigWindow.Dispose());
26+
this.MainWindow = new MainWindow(this);
27+
this.disposeActions.Push(() => this.MainWindow.Dispose());
28+
29+
this.WindowSystem.AddWindow(this.ConfigWindow);
30+
this.WindowSystem.AddWindow(this.MainWindow);
31+
this.disposeActions.Push(() => this.WindowSystem.RemoveAllWindows());
32+
33+
this.PluginInterface.UiBuilder.Draw += this.Draw;
34+
this.disposeActions.Push(() => this.PluginInterface.UiBuilder.Draw -= this.Draw);
35+
this.PluginInterface.UiBuilder.OpenConfigUi += this.OpenConfigUi;
36+
this.disposeActions.Push(() => this.PluginInterface.UiBuilder.OpenConfigUi -= this.OpenConfigUi);
37+
}
38+
39+
internal DalamudPluginInterface PluginInterface { get; init; }
40+
public Configuration Configuration { get; init; }
41+
42+
internal ConfigWindow ConfigWindow { get; init; }
43+
internal MainWindow MainWindow { get; init; }
44+
public string Name => "Who's Talking";
45+
46+
public void Dispose() {
47+
foreach (var action in this.disposeActions) {
48+
action.Invoke();
49+
}
50+
}
51+
52+
private void Draw() {
53+
this.WindowSystem.Draw();
54+
}
55+
56+
public void OpenConfigUi() {
57+
this.ConfigWindow.IsOpen = true;
58+
}
59+
}

WhosTalking/WhosTalking.csproj

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project Sdk="Microsoft.NET.Sdk">
3+
<PropertyGroup>
4+
<Version>0.0.0.1</Version>
5+
<Description>See Discord voice activity indicators directly on your party list.</Description>
6+
<PackageProjectUrl>https://github.com/sersorrel/WhosTalking</PackageProjectUrl>
7+
</PropertyGroup>
8+
9+
<PropertyGroup>
10+
<TargetFramework>net7.0-windows</TargetFramework>
11+
<Platforms>x64</Platforms>
12+
<Nullable>enable</Nullable>
13+
<LangVersion>latest</LangVersion>
14+
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
15+
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
16+
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
17+
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
18+
</PropertyGroup>
19+
20+
<PropertyGroup>
21+
<DalamudLibPath>$(appdata)\XIVLauncher\addon\Hooks\dev\</DalamudLibPath>
22+
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
23+
</PropertyGroup>
24+
25+
<PropertyGroup Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))'">
26+
<DalamudLibPath>$(DALAMUD_HOME)/</DalamudLibPath>
27+
</PropertyGroup>
28+
29+
<PropertyGroup Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))'">
30+
<DalamudLibPath>$(HOME)\.xlcore\dalamud\Hooks\dev\</DalamudLibPath>
31+
</PropertyGroup>
32+
33+
<ItemGroup>
34+
<PackageReference Include="DalamudPackager" Version="2.1.10"/>
35+
<PackageReference Include="JetBrains.Annotations" Version="2022.3.1"/>
36+
<Reference Include="FFXIVClientStructs">
37+
<HintPath>$(DalamudLibPath)FFXIVClientStructs.dll</HintPath>
38+
<Private>false</Private>
39+
</Reference>
40+
<Reference Include="Newtonsoft.Json">
41+
<HintPath>$(DalamudLibPath)Newtonsoft.Json.dll</HintPath>
42+
<Private>false</Private>
43+
</Reference>
44+
<Reference Include="Dalamud">
45+
<HintPath>$(DalamudLibPath)Dalamud.dll</HintPath>
46+
<Private>false</Private>
47+
</Reference>
48+
<Reference Include="ImGui.NET">
49+
<HintPath>$(DalamudLibPath)ImGui.NET.dll</HintPath>
50+
<Private>false</Private>
51+
</Reference>
52+
<Reference Include="ImGuiScene">
53+
<HintPath>$(DalamudLibPath)ImGuiScene.dll</HintPath>
54+
<Private>false</Private>
55+
</Reference>
56+
<Reference Include="Lumina">
57+
<HintPath>$(DalamudLibPath)Lumina.dll</HintPath>
58+
<Private>false</Private>
59+
</Reference>
60+
<Reference Include="Lumina.Excel">
61+
<HintPath>$(DalamudLibPath)Lumina.Excel.dll</HintPath>
62+
<Private>false</Private>
63+
</Reference>
64+
</ItemGroup>
65+
66+
</Project>

WhosTalking/WhosTalking.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"Author": "ash",
3+
"Name": "Who's Talking",
4+
"Punchline": "See Discord voice activity indicators directly on your party list.",
5+
"Description": "Once installed, the plugin should Just Work, if you have Discord open! If you're talking to people whose Discord nickname doesn't match their character's name, check out the plugin settings.",
6+
"InternalName": "WhosTalking",
7+
"ApplicableVersion": "any",
8+
"Tags": []
9+
}

0 commit comments

Comments
 (0)