diff --git a/.editorconfig b/.editorconfig
index aeff653..a52f493 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -13,9 +13,6 @@ indent_style = space
# C# files
[*.cs]
-# Nullable reference types
-csharp_nullable_reference_types = enable
-
# Naming conventions
dotnet_naming_rule.async_methods_end_in_async.severity = suggestion
dotnet_naming_rule.async_methods_end_in_async.symbols = async_methods
@@ -27,6 +24,16 @@ dotnet_naming_symbols.async_methods.required_modifiers = async
dotnet_naming_style.end_in_async.required_suffix = Async
dotnet_naming_style.end_in_async.capitalization = pascal_case
+# Constants are UPPERCASE
+dotnet_naming_rule.constants_should_be_upper_case.severity = suggestion
+dotnet_naming_rule.constants_should_be_upper_case.symbols = constants
+dotnet_naming_rule.constants_should_be_upper_case.style = constant_style
+
+dotnet_naming_symbols.constants.applicable_kinds = field, local
+dotnet_naming_symbols.constants.required_modifiers = const
+
+dotnet_naming_style.constant_style.capitalization = all_upper
+
# Formatting
csharp_new_line_before_open_brace = all
csharp_indent_case_contents = true
diff --git a/.gitignore b/.gitignore
index 9239ba5..e1bad4a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,530 +1,27 @@
-# Created by https://www.toptal.com/developers/gitignore/api/godot,rider,dotnetcore,visualstudio,visualstudiocode,obsidian
-# Edit at https://www.toptal.com/developers/gitignore?templates=godot,rider,dotnetcore,visualstudio,visualstudiocode,obsidian
-
-### DotnetCore ###
-# .NET Core build folders
+# .NET build outputs
bin/
obj/
-
-# Common node modules locations
-/node_modules
-/wwwroot/node_modules
-
-### Godot ###
-# Godot 4+ specific ignores
-.godot/
-
-# Godot-specific ignores
-.import/
-export.cfg
-export_presets.cfg
-
-# Imported translations (automatically generated from CSV files)
-*.translation
-
-# Mono-specific ignores
-.mono/
-data_*/
-mono_crash.*.json
-
-### Obsidian ###
-# config dir
-.obsidian/
-
-### Rider ###
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# AWS User-specific
-.idea/**/aws.xml
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-# .idea/artifacts
-# .idea/compiler.xml
-# .idea/jarRepositories.xml
-# .idea/modules.xml
-# .idea/*.iml
-# .idea/modules
-# *.iml
-# *.ipr
-
-# CMake
-cmake-build-*/
-
-# Mongo Explorer plugin
-.idea/**/mongoSettings.xml
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-# mpeltonen/sbt-idea plugin
-.idea_modules/
-
-# JIRA plugin
-atlassian-ide-plugin.xml
-
-# Cursive Clojure plugin
-.idea/replstate.xml
-
-# SonarLint plugin
-.idea/sonarlint/
-
-# Crashlytics plugin (for Android Studio and IntelliJ)
-com_crashlytics_export_strings.xml
-crashlytics.properties
-crashlytics-build.properties
-fabric.properties
-
-# Editor-based Rest Client
-.idea/httpRequests
-
-# Android studio 3.1+ serialized cache file
-.idea/caches/build_file_checksums.ser
-
-### VisualStudioCode ###
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-!.vscode/*.code-snippets
-
-# Local History for Visual Studio Code
-.history/
-
-# Built Visual Studio Code Extensions
-*.vsix
-
-### VisualStudioCode Patch ###
-# Ignore all local history of files
-.history
-.ionide
-
-### VisualStudio ###
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
+*.dll
+*.exe
+*.pdb
# User-specific files
-*.rsuser
-*.suo
*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
+*.suo
*.userprefs
-
-# Mono auto generated files
-mono_crash.*
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Ww][Ii][Nn]32/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-[Ll]ogs/
-
-# Visual Studio 2015/2017 cache/options directory
.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
+.vscode/
+.idea/
-# Visual Studio 2017 auto generated files
-Generated\ Files/
+# Godot-specific ignores
+**/.godot/
+**/.import/
+**/export_presets.cfg
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
+# OS-specific
+.DS_Store
+Thumbs.db
-# NUnit
-*.VisualState.xml
-TestResult.xml
-nunit-*.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET Core
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-# ASP.NET Scaffolding
-ScaffoldingReadMe.txt
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_i.c
-*_p.c
-*_h.h
-*.ilk
-*.meta
-*.obj
-*.iobj
-*.pch
-*.pdb
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*_wpftmp.csproj
-*.log
-*.tlog
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Coverlet is a free, cross platform Code Coverage Tool
-coverage*.json
-coverage*.xml
-coverage*.info
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microslop Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
+# NuGet packages
*.nupkg
-# NuGet Symbol Packages
-*.snupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microslop Azure Build Output
-csx/
-*.build.csdef
-
-# Microslop Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-*.appxbundle
-*.appxupload
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!?*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-*- [Bb]ackup.rdl
-*- [Bb]ackup ([0-9]).rdl
-*- [Bb]ackup ([0-9][0-9]).rdl
-
-# Microslop Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio 6 auto-generated project file (contains which files were open etc.)
-*.vbp
-
-# Visual Studio 6 workspace and project file (working project files containing files to include in project)
-*.dsw
-*.dsp
-
-# Visual Studio 6 technical files
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# CodeRush personal settings
-.cr/personal
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-# Local History for Visual Studio
-.localhistory/
-
-# Visual Studio History (VSHistory) files
-.vshistory/
-
-# BeatPulse healthcheck temp database
-healthchecksdb
-
-# Backup folder for Package Reference Convert tool in Visual Studio 2017
-MigrationBackup/
-
-# Ionide (cross platform F# VS Code tools) working folder
-.ionide/
-
-# Fody - auto-generated XML schema
-FodyWeavers.xsd
-
-# VS Code files for those working on multiple tools
-*.code-workspace
-
-# Local History for Visual Studio Code
-
-# Windows Installer files from build outputs
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# JetBrains Rider
-*.sln.iml
-
-### VisualStudio Patch ###
-# Additional files built by Visual Studio
-
-# End of https://www.toptal.com/developers/gitignore/api/godot,rider,dotnetcore,visualstudio,visualstudiocode,obsidian
-
-**/*.toml
-*.pck
+packages/
diff --git a/.idea/.idea.CyberBits/.idea/.gitignore b/.idea/.idea.CyberBits/.idea/.gitignore
deleted file mode 100644
index 1a9ab9f..0000000
--- a/.idea/.idea.CyberBits/.idea/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Rider ignored files
-/projectSettingsUpdater.xml
-/contentModel.xml
-/modules.xml
-/.idea.CyberBits.iml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Ignored default folder with query files
-/queries/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.idea.CyberBits/.idea/indexLayout.xml b/.idea/.idea.CyberBits/.idea/indexLayout.xml
deleted file mode 100644
index 7b08163..0000000
--- a/.idea/.idea.CyberBits/.idea/indexLayout.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.CyberBits/.idea/vcs.xml b/.idea/.idea.CyberBits/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/.idea.CyberBits/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CyberBits.Common/Addon.cs b/CyberBits.Common/Addon.cs
deleted file mode 100644
index 7c94bbb..0000000
--- a/CyberBits.Common/Addon.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace CyberBits.Common;
-
-public record Addon(
- [property: JsonPropertyName("cyberware")]
- string[] Cyberware
- );
diff --git a/CyberBits.Common/Bits.cs b/CyberBits.Common/Bits.cs
deleted file mode 100644
index 516f2f0..0000000
--- a/CyberBits.Common/Bits.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace CyberBits.Common;
-
-public record Bits(
- [property: JsonPropertyName("image")]
- string Image,
- [property: JsonPropertyName("feat")]
- string Feat,
- [property: JsonPropertyName("base")]
- string[] Base,
- [property: JsonPropertyName("style")]
- string[] Style
- );
diff --git a/CyberBits.Common/CBConsts.cs b/CyberBits.Common/CBConsts.cs
deleted file mode 100644
index aeb70d9..0000000
--- a/CyberBits.Common/CBConsts.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace CyberBits.Common;
-
-public struct CBConsts
-{
- // Ignore VSCode if it complains about "ThisAssembly" not being found.
- public const string VERSION =
- $"{ThisAssembly.Git.SemVer.Major}.{ThisAssembly.Git.SemVer.Minor}.{ThisAssembly.Git.SemVer.Patch}";
-}
diff --git a/CyberBits.Common/CyberBits.Common.csproj b/CyberBits.Common/CyberBits.Common.csproj
deleted file mode 100644
index a7794aa..0000000
--- a/CyberBits.Common/CyberBits.Common.csproj
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- net8.0
- enable
- LatestMajor
- enable
-
-
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
diff --git a/CyberBits.Common/FileFetcher.cs b/CyberBits.Common/FileFetcher.cs
deleted file mode 100644
index 91ed192..0000000
--- a/CyberBits.Common/FileFetcher.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-namespace CyberBits.Common;
-
-public static class FileFetcher
-{
- public static string LoadTextFile(string filename, bool userDir = false)
- {
- var location = "res";
-
- if (userDir)
- location = "user";
-
- using var file = FileAccess.Open($"{location}://{filename}", FileAccess.ModeFlags.Read);
- var contents = file.GetAsText();
-
- file.Close();
- return contents;
- }
-
- public static ConfigFile LoadConfig(string filename, bool userDir = false)
- {
- var config = new ConfigFile();
-
-// Load data from a file.
- var err = config.Load(LoadTextFile(filename, userDir));
-
- if (err != Error.Ok)
- sys.Environment.Exit(sys.Environment.ExitCode);
-
- return config;
- }
-}
diff --git a/CyberBits.Common/GlobalUsing.cs b/CyberBits.Common/GlobalUsing.cs
deleted file mode 100644
index 2e66d5e..0000000
--- a/CyberBits.Common/GlobalUsing.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-// System
-global using sys = System;
-global using System.Text.Json.Serialization;
-
-// Godot
-global using Godot;
diff --git a/CyberBits.Common/ResourceFiles.cs b/CyberBits.Common/ResourceFiles.cs
deleted file mode 100644
index 46bd4ef..0000000
--- a/CyberBits.Common/ResourceFiles.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace CyberBits.Common;
-
-public struct ResourceFiles
-{
- public const string COCK_JSON = "resources/cock.json";
- public const string PUSSY_JSON = "resources/pussy.json";
- public const string ADDONS_JSON = "resources/addons.json";
-}
diff --git a/CyberBits.Godot/CyberBits.Godot.csproj b/CyberBits.Godot/CyberBits.Godot.csproj
deleted file mode 100644
index 576a44a..0000000
--- a/CyberBits.Godot/CyberBits.Godot.csproj
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
- net8.0
- true
- LatestMajor
-
-
-
-
-
diff --git a/CyberBits.Godot/main.tscn b/CyberBits.Godot/main.tscn
deleted file mode 100644
index 36e156c..0000000
--- a/CyberBits.Godot/main.tscn
+++ /dev/null
@@ -1,22 +0,0 @@
-[gd_scene format=3]
-
-[node name="Main" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="CenterContainer" type="CenterContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-
-[node name="Label" type="Label" parent="CenterContainer"]
-layout_mode = 2
-theme_override_font_sizes/font_size = 32
-text = "Hello from 2dog!"
diff --git a/CyberBits.Godot/project.godot b/CyberBits.Godot/project.godot
deleted file mode 100644
index 8a4bcb0..0000000
--- a/CyberBits.Godot/project.godot
+++ /dev/null
@@ -1,26 +0,0 @@
-; Engine configuration file.
-; It's best edited using the editor UI and not directly,
-; since the parameters that go here are not all obvious.
-;
-; Format:
-; [section] ; section goes between []
-; param=value ; assign values to parameters
-
-config_version=5
-
-custom_features="dotnet"
-
-[application]
-
-config/name="CyberBits"
-run/main_scene="res://main.tscn"
-config/features=PackedStringArray("4.6", "C#")
-
-[dotnet]
-
-project/assembly_name="CyberBits.Godot"
-
-[display]
-
-window/size/viewport_width=1280
-window/size/viewport_height=720
diff --git a/CyberBits.Tests/BasicTests.cs b/CyberBits.Tests/BasicTests.cs
deleted file mode 100644
index 5cf2862..0000000
--- a/CyberBits.Tests/BasicTests.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using Godot;
-using twodog.xunit;
-
-namespace CyberBits.Tests;
-
-[Collection("GodotHeadless")]
-public class BasicTests(GodotHeadlessFixture godot)
-{
- [Fact]
- public void LoadMainScene_Succeeds()
- {
- // Arrange
- var scene = GD.Load("res://main.tscn");
-
- // Act
- var instance = scene.Instantiate();
- godot.Tree.Root.AddChild(instance);
-
- // Assert
- Assert.NotNull(instance);
- Assert.NotNull(instance.GetParent());
- }
-
- [Fact]
- public void PhysicsIteration_Succeeds()
- {
- // Arrange & Act
- godot.Tree.Root.PhysicsInterpolationMode = Node.PhysicsInterpolationModeEnum.Off;
- godot.GodotInstance.Iteration();
-
- // Assert - if we get here without crashing, test passes
- Assert.True(true);
- }
-
- [Fact]
- public void CreateNode_AddsToTree()
- {
- // Arrange
- var node = new Node();
- node.Name = "TestNode";
-
- // Act
- godot.Tree.Root.AddChild(node);
-
- // Assert
- Assert.True(godot.Tree.Root.HasNode("TestNode"));
- Assert.Equal("TestNode", (string)godot.Tree.Root.GetNode("TestNode").Name);
-
- // Cleanup
- node.QueueFree();
- }
-}
diff --git a/CyberBits.Tests/CyberBits.Tests.csproj b/CyberBits.Tests/CyberBits.Tests.csproj
deleted file mode 100644
index ff01f66..0000000
--- a/CyberBits.Tests/CyberBits.Tests.csproj
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
- net8.0
- enable
- enable
- false
- LatestMajor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ../CyberBits.Godot
-
-
-
-
-
-
-
-
-
diff --git a/CyberBits.Tests/GodotHeadlessCollection.cs b/CyberBits.Tests/GodotHeadlessCollection.cs
deleted file mode 100644
index b6ea7a6..0000000
--- a/CyberBits.Tests/GodotHeadlessCollection.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using twodog.xunit;
-using Xunit;
-
-namespace CyberBits.Tests;
-
-[CollectionDefinition("GodotHeadless", DisableParallelization = true)]
-public class GodotHeadlessCollection : ICollectionFixture;
diff --git a/CyberBits.Tests/xunit.runner.json b/CyberBits.Tests/xunit.runner.json
deleted file mode 100644
index 08c512b..0000000
--- a/CyberBits.Tests/xunit.runner.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "$schema": "https://xunit.net/schema/current/xunit.runner.schema.json",
- "parallelizeTestCollections": false
-}
diff --git a/CyberBits.slnx b/CyberBits.slnx
index 8c8f124..0dc5250 100644
--- a/CyberBits.slnx
+++ b/CyberBits.slnx
@@ -1,12 +1,9 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/CyberBitsOld/Addon.cs b/CyberBits/Addon.cs
similarity index 100%
rename from CyberBitsOld/Addon.cs
rename to CyberBits/Addon.cs
diff --git a/CyberBitsOld/Bits.cs b/CyberBits/Bits.cs
similarity index 100%
rename from CyberBitsOld/Bits.cs
rename to CyberBits/Bits.cs
diff --git a/CyberBits/CyberBits.csproj b/CyberBits/CyberBits.csproj
index 670ba77..306930d 100644
--- a/CyberBits/CyberBits.csproj
+++ b/CyberBits/CyberBits.csproj
@@ -1,36 +1,19 @@
-
-
- net8.0
- Exe
- enable
- enable
- false
- LatestMajor
-
+
-
-
-
+
+ Exe
+ net8.0
+ enable
+ false
+ LatestMajor
+
-
-
-
-
-
-
-
-
+
+
+
-
-
- ../CyberBits.Godot
-
+
+ ./project
+
-
-
-
-
-
-
diff --git a/CyberBitsOld/FileFetcher.cs b/CyberBits/FileFetcher.cs
similarity index 100%
rename from CyberBitsOld/FileFetcher.cs
rename to CyberBits/FileFetcher.cs
diff --git a/CyberBitsOld/GlobalUsing.cs b/CyberBits/GlobalUsing.cs
similarity index 100%
rename from CyberBitsOld/GlobalUsing.cs
rename to CyberBits/GlobalUsing.cs
diff --git a/CyberBits/GlobalUsings.cs b/CyberBits/GlobalUsings.cs
deleted file mode 100644
index 7345cfd..0000000
--- a/CyberBits/GlobalUsings.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-global using CyberBits.Common;
-global using Godot;
-global using Engine = twodog.Engine;
-global using Env = System.Environment;
-global using System.Text.Json;
diff --git a/CyberBits/Program.cs b/CyberBits/Program.cs
index 0dc4615..f4addae 100644
--- a/CyberBits/Program.cs
+++ b/CyberBits/Program.cs
@@ -1,11 +1,11 @@
-// Create and start the Godot engine with your project
-using var engine = new Engine("CyberBits", Engine.ResolveProjectDir());
+using Cyberbits;
+
+using var engine = new Engine("Cyberbits", Engine.ResolveProjectDir());
using var godot = engine.Start();
-// Load your main scene
+// Load a scene
var scene = GD.Load("res://main.tscn");
engine.Tree.Root.AddChild(scene.Instantiate());
-
var load = engine.Tree.CurrentScene;
var bitsImage = load.GetNode("BitsImage");
@@ -21,11 +21,9 @@ var screenSize = DisplayServer.ScreenGetSize();
var window = load.GetWindow();
window.Size = new Vector2I(screenSize.X - 66, screenSize.Y - 1);
-ProjectSettings.SetSetting("application/config/version", CBConsts.VERSION);
-
if (!FileAccess.FileExists(baseContents)
|| !FileAccess.FileExists(addonContents))
- Env.Exit(Env.ExitCode);
+ sys.Environment.Exit(sys.Environment.ExitCode);
var bits = JsonSerializer.Deserialize(baseContents);
var addon = JsonSerializer.Deserialize(addonContents);
@@ -39,17 +37,9 @@ foreach (var selection in bits.Base)
foreach (var cyberware in addon.Cyberware)
cyberwareList.AddItem(cyberware);
-
-GD.Print("2dog is running! Close window or press 'Q' to quit.");
-Console.WriteLine("Press 'Q' to quit.");
-
-// Main game loop - runs until window closes or 'Q' is pressed
+// Run the main loop
while (!godot.Iteration())
{
if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Q)
- break;
-
- // Your per-frame logic here
+ sys.Environment.Exit(sys.Environment.ExitCode);
}
-
-Console.WriteLine("Shutting down...");
diff --git a/CyberBitsOld/ResourceFiles.cs b/CyberBits/ResourceFiles.cs
similarity index 100%
rename from CyberBitsOld/ResourceFiles.cs
rename to CyberBits/ResourceFiles.cs
diff --git a/CyberBitsOld/project/config.cfg b/CyberBits/project/config.cfg
similarity index 100%
rename from CyberBitsOld/project/config.cfg
rename to CyberBits/project/config.cfg
diff --git a/CyberBitsOld/project/main.tscn b/CyberBits/project/main.tscn
similarity index 100%
rename from CyberBitsOld/project/main.tscn
rename to CyberBits/project/main.tscn
diff --git a/CyberBitsOld/project/project.godot b/CyberBits/project/project.godot
similarity index 100%
rename from CyberBitsOld/project/project.godot
rename to CyberBits/project/project.godot
diff --git a/CyberBitsOld/project/resources/addons.json b/CyberBits/project/resources/addons.json
similarity index 100%
rename from CyberBitsOld/project/resources/addons.json
rename to CyberBits/project/resources/addons.json
diff --git a/CyberBitsOld/project/resources/cock.json b/CyberBits/project/resources/cock.json
similarity index 100%
rename from CyberBitsOld/project/resources/cock.json
rename to CyberBits/project/resources/cock.json
diff --git a/CyberBitsOld/project/resources/pussy.json b/CyberBits/project/resources/pussy.json
similarity index 100%
rename from CyberBitsOld/project/resources/pussy.json
rename to CyberBits/project/resources/pussy.json
diff --git a/CyberBitsOld/project/sprites/cock.jpg b/CyberBits/project/sprites/cock.jpg
similarity index 100%
rename from CyberBitsOld/project/sprites/cock.jpg
rename to CyberBits/project/sprites/cock.jpg
diff --git a/CyberBitsOld/project/sprites/cock.jpg.import b/CyberBits/project/sprites/cock.jpg.import
similarity index 100%
rename from CyberBitsOld/project/sprites/cock.jpg.import
rename to CyberBits/project/sprites/cock.jpg.import
diff --git a/CyberBitsOld/project/sprites/pussy.jpg b/CyberBits/project/sprites/pussy.jpg
similarity index 100%
rename from CyberBitsOld/project/sprites/pussy.jpg
rename to CyberBits/project/sprites/pussy.jpg
diff --git a/CyberBitsOld/project/sprites/pussy.jpg.import b/CyberBits/project/sprites/pussy.jpg.import
similarity index 100%
rename from CyberBitsOld/project/sprites/pussy.jpg.import
rename to CyberBits/project/sprites/pussy.jpg.import
diff --git a/CyberBitsOld/CyberBitsOld.csproj b/CyberBitsOld/CyberBitsOld.csproj
deleted file mode 100644
index 306930d..0000000
--- a/CyberBitsOld/CyberBitsOld.csproj
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- Exe
- net8.0
- enable
- false
- LatestMajor
-
-
-
-
-
-
-
- ./project
-
-
-
diff --git a/CyberBitsOld/Program.cs b/CyberBitsOld/Program.cs
deleted file mode 100644
index f4addae..0000000
--- a/CyberBitsOld/Program.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using Cyberbits;
-
-using var engine = new Engine("Cyberbits", Engine.ResolveProjectDir());
-using var godot = engine.Start();
-
-// Load a scene
-var scene = GD.Load("res://main.tscn");
-engine.Tree.Root.AddChild(scene.Instantiate());
-var load = engine.Tree.CurrentScene;
-
-var bitsImage = load.GetNode("BitsImage");
-// var bitsSelection = curScene.GetNode("BitsSelection");
-var unlockedFeatLbl = load.GetNode