init
This commit is contained in:
115
.vscode/chickensoft.code-snippets
vendored
Normal file
115
.vscode/chickensoft.code-snippets
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
// Place your workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
||||
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
||||
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
||||
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
||||
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
|
||||
// Placeholders with the same ids are connected.
|
||||
// Example:
|
||||
// "Print to console": {
|
||||
// "scope": "javascript,typescript",
|
||||
// "prefix": "log",
|
||||
// "body": [
|
||||
// "console.log('$1');",
|
||||
// "$2"
|
||||
// ],
|
||||
// "description": "Log output to console"
|
||||
// }
|
||||
"Chickensoft AutoNode": {
|
||||
"scope": "csharp",
|
||||
"isFileTemplate": true,
|
||||
"prefix": [ "autonode" ],
|
||||
"body": [
|
||||
"namespace ${1:$WORKSPACE_NAME};",
|
||||
"",
|
||||
"using Chickensoft.AutoInject;",
|
||||
"using Chickensoft.Introspection;",
|
||||
"using Godot;",
|
||||
"",
|
||||
"[Meta(typeof(IAutoNode))]",
|
||||
"public partial class ${2:$TM_FILENAME_BASE} : ${3:Node} {",
|
||||
" public override void _Notification(int what) => this.Notify(what);",
|
||||
"$0",
|
||||
"}",
|
||||
""
|
||||
],
|
||||
"description": "Chickensoft AutoNode template"
|
||||
},
|
||||
"Chickensoft AutoInject Provision": {
|
||||
"scope": "csharp",
|
||||
"prefix": [ "provide" ],
|
||||
"body": [
|
||||
"${1:ProvisionType} IProvide<${1:ProvisionType}>.Value() => ${2:ProvisionValue};"
|
||||
],
|
||||
"description": "Chickensoft AutoInject IProvide implementation"
|
||||
},
|
||||
"Chickensoft AutoInject Dependency": {
|
||||
"scope": "csharp",
|
||||
"prefix": [ "depend" ],
|
||||
"body": [
|
||||
"[Dependency] ${1:public} ${2:DependencyType} ${3:DependencyValue} => this.DependOn<${2:DependencyType}>();"
|
||||
],
|
||||
"description": "Chickensoft AutoInject Dependency attribute"
|
||||
},
|
||||
"Chickensoft AutoProp": {
|
||||
"scope": "csharp",
|
||||
"prefix": [ "autoprop" ],
|
||||
"body": [
|
||||
"public IAutoProp<${1:PropType}> ${2:PublicPropName} => ${3:_privatePropName};",
|
||||
"private readonly AutoProp<${1:PropType}> ${3:_privatePropName} = new($0);"
|
||||
],
|
||||
"description": "Chickensoft Collections AutoProp attribute"
|
||||
},
|
||||
"Chickensoft LogicBlock": {
|
||||
"scope": "csharp",
|
||||
"isFileTemplate": true,
|
||||
"prefix": [ "logicblock", "lb" ],
|
||||
"body": [
|
||||
"namespace ${1:$WORKSPACE_NAME};",
|
||||
"",
|
||||
"using Chickensoft.Introspection;",
|
||||
"using Chickensoft.LogicBlocks;",
|
||||
"",
|
||||
"[Meta, LogicBlock(typeof(State), Diagram = true)]",
|
||||
"public partial class ${2:$TM_FILENAME_BASE} : LogicBlock<${2:$TM_FILENAME_BASE}.State> {",
|
||||
" public override Transition GetInitialState() => To<${3:State}>();",
|
||||
"$0",
|
||||
" public abstract partial record State : StateLogic<State>;",
|
||||
"}",
|
||||
""
|
||||
],
|
||||
"description": "Chickensoft LogicBlock template"
|
||||
},
|
||||
"Chickensoft LogicBlock Inputs": {
|
||||
"scope": "csharp",
|
||||
"isFileTemplate": true,
|
||||
"prefix": [ "logicblock-input", "lbin" ],
|
||||
"body": [
|
||||
"namespace ${1:$WORKSPACE_NAME};",
|
||||
"",
|
||||
"public partial class ${2:${TM_FILENAME_BASE/([a-zA-Z0-9_]*)([\\.]Input)/$1/}} {",
|
||||
" public static class Input {",
|
||||
" public readonly record struct ${3:MyInput};",
|
||||
" }",
|
||||
"}",
|
||||
""
|
||||
],
|
||||
"description": "Chickensoft LogicBlock Input class"
|
||||
},
|
||||
"Chickensoft LogicBlock Outputs": {
|
||||
"scope": "csharp",
|
||||
"isFileTemplate": true,
|
||||
"prefix": [ "logicblock-output", "lbout" ],
|
||||
"body": [
|
||||
"namespace ${1:$WORKSPACE_NAME};",
|
||||
"",
|
||||
"public partial class ${2:${TM_FILENAME_BASE/([a-zA-Z0-9_]*)([\\.]Output)/$1/}} {",
|
||||
" public static class Output {",
|
||||
" public readonly record struct ${3:MyOutput};",
|
||||
" }",
|
||||
"}",
|
||||
""
|
||||
],
|
||||
"description": "Chickensoft LogicBlock Output class"
|
||||
}
|
||||
}
|
||||
29
.vscode/extensions.json
vendored
Normal file
29
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"alfish.godot-files",
|
||||
"bierner.emojisense",
|
||||
"christian-kohler.path-intellisense",
|
||||
"codezombiech.gitignore",
|
||||
"DavidAnson.vscode-markdownlint",
|
||||
"EditorConfig.EditorConfig",
|
||||
"edwinhuish.better-comments-next",
|
||||
"emeraldwalk.runonsave",
|
||||
"fernandoescolar.vscode-solution-explorer",
|
||||
"geequlim.godot-tools",
|
||||
"gurumukhi.selected-lines-count",
|
||||
"IBM.output-colorizer",
|
||||
"jebbs.plantuml",
|
||||
"josefpihrt-vscode.roslynator",
|
||||
"ms-dotnettools.csharp",
|
||||
"ms-dotnettools.vscode-dotnet-runtime",
|
||||
"muhammad-sammy.csharp",
|
||||
"oderwat.indent-rainbow",
|
||||
"pflannery.vscode-versionlens",
|
||||
"qcz.text-power-tools",
|
||||
"selcukermaya.se-csproj-extensions",
|
||||
"stkb.rewrap",
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
"tintoy.msbuild-project-tools",
|
||||
"yzhang.markdown-all-in-one",
|
||||
]
|
||||
}
|
||||
34
.vscode/godot.code-snippets
vendored
Normal file
34
.vscode/godot.code-snippets
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
// Place your workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
||||
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
||||
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
||||
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
||||
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
|
||||
// Placeholders with the same ids are connected.
|
||||
// Example:
|
||||
// "Print to console": {
|
||||
// "scope": "javascript,typescript",
|
||||
// "prefix": "log",
|
||||
// "body": [
|
||||
// "console.log('$1');",
|
||||
// "$2"
|
||||
// ],
|
||||
// "description": "Log output to console"
|
||||
// }
|
||||
"Godot [Export]": {
|
||||
"scope": "csharp",
|
||||
"prefix": [ "export" ],
|
||||
"body": [
|
||||
"[Export] ${1:public} ${2:Node} ${3:MyExport} { get; set; } = default!;"
|
||||
],
|
||||
"description": "Godot [Export] attribute"
|
||||
},
|
||||
"Godot [Signal]": {
|
||||
"scope": "csharp",
|
||||
"prefix": [ "signal" ],
|
||||
"body": [
|
||||
"[Signal] public delegate void ${1:My}EventHandler($2);"
|
||||
],
|
||||
"description": "Godot [Signal] attribute"
|
||||
}
|
||||
}
|
||||
107
.vscode/launch.json
vendored
Normal file
107
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
// For these launch configurations to work, you need to setup a GODOT
|
||||
// environment variable. On mac or linux, this can be done by adding
|
||||
// the following to your .zshrc, .bashrc, or .bash_profile file:
|
||||
// export GODOT="/Applications/Godot.app/Contents/MacOS/Godot"
|
||||
{
|
||||
"name": "🕹 Debug Game",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build-without-tests",
|
||||
"program": "${env:GODOT}",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"stopAtEntry": false,
|
||||
"console": "integratedTerminal"
|
||||
},
|
||||
{
|
||||
"name": "🕹 Debug Game (VSCodium)",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build-without-tests",
|
||||
"program": "",
|
||||
"internalConsoleOptions": "openOnSessionStart",
|
||||
"pipeTransport": {
|
||||
"debuggerPath": "${extensionInstallFolder:muhammad-sammy.csharp}/.debugger/netcoredbg/netcoredbg",
|
||||
"pipeCwd": "${workspaceFolder}",
|
||||
"pipeProgram": "${env:GODOT}",
|
||||
"pipeArgs": [
|
||||
"--debug"
|
||||
]
|
||||
},
|
||||
"osx": {
|
||||
"pipeTransport": {
|
||||
// netcoredbg for Apple Silicon isn't included with the VSCodium C#
|
||||
// extension. You must clone it, build it, and setup the path to it.
|
||||
// You'll need homebrew, cmake, and clang installed.
|
||||
//
|
||||
// --------------------------------------------------------------- //
|
||||
//
|
||||
// git clone https://github.com/Samsung/netcoredbg.git
|
||||
// cd netcoredbg
|
||||
// mkdir build
|
||||
// cd build
|
||||
// CC=clang CXX=clang++ cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../bin
|
||||
//
|
||||
// In your ~/.zshrc file, add the following line and adjust the path:
|
||||
//
|
||||
// export NETCOREDBG="/path/to/netcoredbg/bin/netcoredbg"
|
||||
//
|
||||
"debuggerPath": "${env:NETCOREDBG}",
|
||||
"pipeCwd": "${workspaceFolder}",
|
||||
"pipeProgram": "${env:GODOT}",
|
||||
"pipeArgs": [
|
||||
"--debug"
|
||||
]
|
||||
}
|
||||
},
|
||||
},
|
||||
// Debug the scene that matches the name of the currently open *.cs file
|
||||
// (if there's a scene with the same name in the same directory).
|
||||
{
|
||||
"name": "🎭 Debug Current Scene",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build-without-tests",
|
||||
"program": "${env:GODOT}",
|
||||
"args": [
|
||||
"${fileDirname}/${fileBasenameNoExtension}.tscn"
|
||||
],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"stopAtEntry": false,
|
||||
"console": "integratedTerminal"
|
||||
},
|
||||
{
|
||||
"name": "🧪 Debug Tests",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build",
|
||||
"program": "${env:GODOT}",
|
||||
"args": [
|
||||
// These command line flags are used by GoDotTest to run tests.
|
||||
"--run-tests",
|
||||
"--quit-on-finish"
|
||||
],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"stopAtEntry": false,
|
||||
"console": "integratedTerminal"
|
||||
},
|
||||
{
|
||||
"name": "🔬 Debug Current Test",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build",
|
||||
"program": "${env:GODOT}",
|
||||
"args": [
|
||||
// These command line flags are used by GoDotTest to run tests.
|
||||
"--run-tests=${fileBasenameNoExtension}",
|
||||
"--quit-on-finish"
|
||||
],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"stopAtEntry": false,
|
||||
"console": "integratedTerminal"
|
||||
},
|
||||
]
|
||||
}
|
||||
187
.vscode/settings.json
vendored
Normal file
187
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
{
|
||||
"[csharp]": {
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.addMissingImports": "explicit",
|
||||
"source.fixAll": "explicit",
|
||||
"source.organizeImports": "explicit"
|
||||
},
|
||||
"editor.formatOnPaste": true,
|
||||
"editor.formatOnSave": true,
|
||||
"editor.formatOnType": false
|
||||
},
|
||||
"emeraldwalk.runonsave": {
|
||||
"commands": [
|
||||
{
|
||||
// run `clang-format` on Godot shader files when saving
|
||||
"match": "\\.gdshader|\\.gdshaderinc$",
|
||||
"cmd": "clang-format -i '${file}'"
|
||||
}
|
||||
]
|
||||
},
|
||||
"csharp.debug.justMyCode": false,
|
||||
"csharp.debug.suppressJITOptimizations": true,
|
||||
"csharp.semanticHighlighting.enabled": true,
|
||||
"dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "fullSolution",
|
||||
"dotnet.backgroundAnalysis.compilerDiagnosticsScope": "fullSolution",
|
||||
"dotnet.completion.showCompletionItemsFromUnimportedNamespaces": true,
|
||||
"dotnet.enableXamlTools": false,
|
||||
"dotnet.formatting.organizeImportsOnFormat": true,
|
||||
"dotnet.preferCSharpExtension": true,
|
||||
// "dotnet.server.useOmnisharp": true, // You decide
|
||||
"dotnetAcquisitionExtension.enableTelemetry": false,
|
||||
"editor.semanticHighlighting.enabled": true,
|
||||
// C# doc comment colorization gets lost with semantic highlighting, but we
|
||||
// need semantic highlighting for proper syntax highlighting with record
|
||||
// shorthand.
|
||||
//
|
||||
// Here's a workaround for doc comment highlighting from
|
||||
// https://github.com/OmniSharp/omnisharp-vscode/issues/3816
|
||||
"editor.tokenColorCustomizations": {
|
||||
"[*]": {
|
||||
// Themes that don't include the word "Dark" or "Light" in them.
|
||||
// These are some bold colors that show up well against most dark and
|
||||
// light themes.
|
||||
//
|
||||
// Change them to something that goes well with your preferred theme :)
|
||||
"textMateRules": [
|
||||
{
|
||||
"scope": "comment.documentation",
|
||||
"settings": {
|
||||
"foreground": "#0091ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.attribute",
|
||||
"settings": {
|
||||
"foreground": "#8480ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.cdata",
|
||||
"settings": {
|
||||
"foreground": "#0091ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.delimiter",
|
||||
"settings": {
|
||||
"foreground": "#aa00ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.name",
|
||||
"settings": {
|
||||
"foreground": "#ef0074"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"[*Dark*]": {
|
||||
// Themes that include the word "Dark" in them.
|
||||
"textMateRules": [
|
||||
{
|
||||
"scope": "comment.documentation",
|
||||
"settings": {
|
||||
"foreground": "#608B4E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.attribute",
|
||||
"settings": {
|
||||
"foreground": "#C8C8C8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.cdata",
|
||||
"settings": {
|
||||
"foreground": "#E9D585"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.delimiter",
|
||||
"settings": {
|
||||
"foreground": "#808080"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.name",
|
||||
"settings": {
|
||||
"foreground": "#569CD6"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"[*Light*]": {
|
||||
// Themes that include the word "Light" in them.
|
||||
"textMateRules": [
|
||||
{
|
||||
"scope": "comment.documentation",
|
||||
"settings": {
|
||||
"foreground": "#008000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.attribute",
|
||||
"settings": {
|
||||
"foreground": "#282828"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.cdata",
|
||||
"settings": {
|
||||
"foreground": "#808080"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.delimiter",
|
||||
"settings": {
|
||||
"foreground": "#808080"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "comment.documentation.name",
|
||||
"settings": {
|
||||
"foreground": "#808080"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"explorer.fileNesting.enabled": true,
|
||||
"explorer.fileNesting.expand": false,
|
||||
"explorer.fileNesting.patterns": {
|
||||
"*": "$(capture).import, $(capture).uid"
|
||||
},
|
||||
"markdownlint.config": {
|
||||
// Allow non-unique heading names so we don't break the changelog.
|
||||
"MD024": false,
|
||||
// Allow html in markdown.
|
||||
"MD033": false
|
||||
},
|
||||
"markdownlint.ignore": [
|
||||
"**/LICENSE"
|
||||
],
|
||||
"omnisharp.enableEditorConfigSupport": true,
|
||||
"omnisharp.enableMsBuildLoadProjectsOnDemand": false,
|
||||
"omnisharp.maxFindSymbolsItems": 3000,
|
||||
"omnisharp.useModernNet": true,
|
||||
// Remove these if you're happy with your terminal profiles.
|
||||
"terminal.integrated.defaultProfile.windows": "Git Bash",
|
||||
"terminal.integrated.profiles.windows": {
|
||||
"Command Prompt": {
|
||||
"icon": "terminal-cmd",
|
||||
"path": [
|
||||
"${env:windir}\\Sysnative\\cmd.exe",
|
||||
"${env:windir}\\System32\\cmd.exe"
|
||||
]
|
||||
},
|
||||
"Git Bash": {
|
||||
"icon": "terminal",
|
||||
"source": "Git Bash"
|
||||
},
|
||||
"PowerShell": {
|
||||
"icon": "terminal-powershell",
|
||||
"source": "PowerShell"
|
||||
}
|
||||
}
|
||||
}
|
||||
80
.vscode/tasks.json
vendored
Normal file
80
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "build",
|
||||
"group": "build",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"build",
|
||||
],
|
||||
"problemMatcher": "$msCompile",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
"clear": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "build-without-tests",
|
||||
"group": "build",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"options": {
|
||||
"env": {
|
||||
"SKIP_TESTS": "1"
|
||||
}
|
||||
},
|
||||
"args": [
|
||||
"build",
|
||||
],
|
||||
"problemMatcher": "$msCompile",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
"clear": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "coverage",
|
||||
"group": "test",
|
||||
"command": "${workspaceFolder}/coverage.sh",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
"clear": true
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "build-solutions",
|
||||
"group": "test",
|
||||
"command": "dotnet restore; ${env:GODOT} --headless --build-solutions --quit || exit 0",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
"clear": false
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user