Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
5e52c44
chore: Mark all menu interfaces as obsolete to prepare for migration
ELDment Nov 6, 2025
92b660d
chore: Initial design of some interfaces
ELDment Nov 6, 2025
78e3012
update(workflows): Discord Notification
skuzzis Nov 6, 2025
fb59b68
Merge branch 'beta' of https://github.com/swiftly-solution/swiftlys2 …
skuzzis Nov 6, 2025
970e13c
update(workflows): Fix Webhooks
skuzzis Nov 6, 2025
b76b286
feat(ISwiftlyCore): GameFileSystem
skuzzis Nov 6, 2025
ceb4241
update(GameFileSystem): More API
skuzzis Nov 6, 2025
f80932a
update(plugins/list): Add multiple info
skuzzis Nov 6, 2025
243670f
chore: Roughly plan out new menu interface
ELDment Nov 7, 2025
a86caf2
chore: Make naming in IMenuOption more reasonable
ELDment Nov 7, 2025
507303e
chore: Remove unused events from IMenuOption
ELDment Nov 7, 2025
1534b85
chore: Clean up duplicate events in IMenuAPI
ELDment Nov 7, 2025
7d28b9b
chore: Remove duplicate API from IMenuManagerAPI
ELDment Nov 7, 2025
a2cece8
chore: Modify some interface properties
ELDment Nov 7, 2025
306a0f0
chore: Add LineCount field to IMenuOption
ELDment Nov 7, 2025
d4c117d
Merge remote-tracking branch 'upstream/beta' into beta-1
ELDment Nov 7, 2025
8c8b0f0
chore: Sync submodules with upstream/beta
ELDment Nov 7, 2025
52e7b5c
chore: Restore obsolete warning in ISwiftlyCore
ELDment Nov 7, 2025
1620bac
feat: Initial implementation of IMenuManagerAPI interface
ELDment Nov 7, 2025
8121edd
refactor: MenuManagerAPI implementation and code style
ELDment Nov 7, 2025
08c2084
feat: Initial implementation of IMenuAPI interface
ELDment Nov 8, 2025
7c631fd
chore: Add GetDisplayText interface and remove unnecessary interfaces…
ELDment Nov 8, 2025
3087b9b
refactor: Improve interface design and implementation
ELDment Nov 8, 2025
cd49a74
refactor: Complete support for multiple key bindings per menu action
ELDment Nov 8, 2025
bef5c52
chore: Redesign IMenuBuilderAPI interface and rename IMenuKeybindOver…
ELDment Nov 8, 2025
d7a167b
feat: Initial implementation of IMenuBuilderAPI and IMenuDesignAPI in…
ELDment Nov 8, 2025
4294830
chore: Redesign menu interfaces and optimize implementations
ELDment Nov 8, 2025
7c2b76b
refactor: Improve interface design for better usability
ELDment Nov 8, 2025
8057fb6
refactor: Implement fluent chaining between IMenuDesignAPI and IMenuB…
ELDment Nov 8, 2025
66ff5a5
feat(managed): Refactor cvar
samyycX Nov 8, 2025
ee61625
feat: Add MenuOptionScrollStyle enum and integration
ELDment Nov 8, 2025
610377c
feat: Add MenuOptionTextStyle enum and integration
ELDment Nov 8, 2025
cbfa459
chore: Reorganize project structure
ELDment Nov 8, 2025
1496557
feat(CCSGameRules): TerminateRound
skuzzis Nov 8, 2025
7149e73
refactor: Initial implementation of partial features
ELDment Nov 9, 2025
252f6f3
feat: Implement menu options scrolling logic
ELDment Nov 9, 2025
99556aa
refactor(cvar): Remove overloads
samyycX Nov 9, 2025
62fd546
feat(managed): More method in convar
samyycX Nov 9, 2025
b5ea382
feat(managed): Add try method to convar
samyycX Nov 9, 2025
f34e55a
fix: Fix options scrolling wrap-around behavior
ELDment Nov 9, 2025
fc5aae2
refactor: Reimplement MenuAPI
ELDment Nov 9, 2025
0f0119b
Merge pull request #88 from swiftly-solution/refactor/cvar
samyycX Nov 9, 2025
3c17a2f
fix(managed): Remove test codes
samyycX Nov 9, 2025
907ff73
feat(player): SendMessage Methods
skuzzis Nov 9, 2025
2b582c6
Merge branch 'beta' of https://github.com/swiftly-solution/swiftlys2 …
skuzzis Nov 9, 2025
f7d4720
fix: Fix menu option sound still playing after auto-close
ELDment Nov 9, 2025
e0b4c48
Add ItemDefinitionIndex enum and weapon mapping dictionary to Helpers
T3Marius Nov 9, 2025
a5902bf
Add GetClassnameByDefinitionIndex and GetDefinitionIndexByClassname h…
T3Marius Nov 9, 2025
ab49abe
Merge pull request #89 from T3Marius
skuzzis Nov 9, 2025
21631bb
fix: Fix some logic issues in MenuOptionBase
ELDment Nov 9, 2025
aa37f87
feat: Initial implementation of MenuOptionTextStyle rendering logic
ELDment Nov 9, 2025
8c6e9ac
refactor: Reimplemented asynchronous text updating
ELDment Nov 9, 2025
f24d66d
chore: Better disposal implementation for improved performance
ELDment Nov 9, 2025
fde07a9
fix(HookClientCommand): Return Value
skuzzis Nov 9, 2025
f34f307
Merge branch 'beta' of https://github.com/swiftly-solution/swiftlys2 …
skuzzis Nov 9, 2025
01a91af
update(ServerIP): Use NetworkSystem
skuzzis Nov 10, 2025
b84a888
Revert "update(ServerIP): Use NetworkSystem"
skuzzis Nov 10, 2025
46c66b9
fix(interfaces): NetworkSystem
skuzzis Nov 10, 2025
f850cb3
feat: Add support for custom animation speed and pause interval
ELDment Nov 10, 2025
680c9fc
feat: Add support for skipping invisible menu options
ELDment Nov 10, 2025
e200603
fix: Ensure menu still displays when no visible options
ELDment Nov 10, 2025
4313ff2
fix: Fix disabled option color override due to font color priority
ELDment Nov 10, 2025
f607492
feat: Add support for menu footer
ELDment Nov 10, 2025
d7509cb
fix: String display issue after ScrollLeftFade/ScrollRightFade animat…
ELDment Nov 10, 2025
d021626
fix: TruncateBothEnds incorrectly closes HTML tags
ELDment Nov 10, 2025
44f72af
feat: Add auto-expansion logic for visible menu items
ELDment Nov 10, 2025
b1c87f1
fix: Clean up warnings in TextStyleProcessor
ELDment Nov 10, 2025
e09fcda
fix: Ensure proper disposal timing
ELDment Nov 10, 2025
6a21842
chore: Ensure player state reset on MenuAPI disposal
ELDment Nov 10, 2025
1b11ce6
fix: Fix inability to move up on first menu open
ELDment Nov 10, 2025
8e194b5
fix(OnMapLoad): Hook
skuzzis Nov 10, 2025
ae7acd4
chore: Enhance menu UI and simplify option construction
ELDment Nov 10, 2025
b7e165f
feat: Add ButtonMenuOption, ToggleMenuOption, and ChoiceMenuOption
ELDment Nov 10, 2025
5edd1bb
feat: Add SliderMenuOption and improve ChoiceMenuOption
ELDment Nov 10, 2025
2986a59
feat: Add ProgressBarMenuOption and SubmenuMenuOption
ELDment Nov 10, 2025
2fac46a
fix(linux): Module Base Address
skuzzis Nov 10, 2025
b6e3048
refactor: Provide more reasonable interface design and improve access…
ELDment Nov 11, 2025
bbd160c
refactor: Change Parent property accessor permissions
ELDment Nov 11, 2025
e533789
fix: Resolve logic issues in menu system
ELDment Nov 11, 2025
ab12ef5
feat: Add InputMenuOption
ELDment Nov 11, 2025
a3cb0ad
chore: Standardize interface method names
ELDment Nov 11, 2025
80fe459
Merge remote-tracking branch 'upstream/beta' into beta-1
ELDment Nov 11, 2025
7a1d820
chore: Comment out all obsolete menu interfaces and implementations
ELDment Nov 11, 2025
8f1a397
chore: Rename IMenuAPI methods for better clarity
ELDment Nov 11, 2025
5005783
Merge pull request #86 from ELDment/beta-1
skuzzis Nov 11, 2025
739020e
fix(CCSPlayerController): Respawn
skuzzis Nov 11, 2025
29db76e
update(.NET): 8.0 -> 10.0 (first try)
skuzzis Nov 11, 2025
1c87d1e
fix(TestPlugin): .NET upgrade
skuzzis Nov 11, 2025
330be9d
fix: Fix plugin dependency resolution
ELDment Nov 12, 2025
4d2272f
Merge pull request #90 from ELDment/beta-1
skuzzis Nov 12, 2025
03ff1c0
update(managed): Use Lock class
skuzzis Nov 12, 2025
fe19a2d
Merge branch 'beta' of https://github.com/swiftly-solution/swiftlys2 …
skuzzis Nov 12, 2025
9c0093c
fix(webhooks): Role Mention
skuzzis Nov 12, 2025
8a2751e
update(exceptions): Global Handler
skuzzis Nov 12, 2025
be1c8f7
fix(consoleoutput): No new-line
skuzzis Nov 12, 2025
18914e0
[skip ci] update(devtools): cloc
skuzzis Nov 12, 2025
4e63600
Syncing changes automatically to SwiftlyS2 for today's CS2 Update.
skuzzis Nov 12, 2025
4aa6177
[skip ci] update(schema): Game Update
skuzzis Nov 12, 2025
36a75b6
Merge pull request #91 from swiftly-solution/update/cs2-sync
skuzzis Nov 12, 2025
26170f7
refactor: Add base constructors and improve API consistency for all M…
ELDment Nov 13, 2025
134b097
fix: Resolve ambiguity issues in InputMenuOption constructor parameters
ELDment Nov 13, 2025
7eccf90
feat: Enhance HtmlGradient Color support
ELDment Nov 13, 2025
b461f34
feat: Implement SetMenuFooterColor and SetNavigationMarkerColor
ELDment Nov 13, 2025
244033b
feat: Implement SetVisualGuideLineColor
ELDment Nov 13, 2025
5069100
feat: Implement SetDisabledColor
ELDment Nov 13, 2025
7820491
chore: Optimize BuildMenuHtml logic for better clarity and performance
ELDment Nov 13, 2025
ef23598
refactor: Enhance ToggleMenuOption with improved usability
ELDment Nov 13, 2025
c979f48
refactor: Simplify MenuOptionClickEventArgs
ELDment Nov 13, 2025
17f1dda
chore: Add documentation note to MenuKeybindOverrides
ELDment Nov 13, 2025
7de7f73
fix: Change CloseMenu setter access in MenuOptionClickEventArgs
ELDment Nov 13, 2025
80883f1
update(engine): ServerIP backend
skuzzis Nov 13, 2025
66090ce
Merge branch 'beta' of https://github.com/swiftly-solution/swiftlys2 …
skuzzis Nov 13, 2025
3136d63
fix: Correct CloseAfterClick timing
ELDment Nov 13, 2025
fc51a64
refactor: Modify Parent property type in IMenuAPI
ELDment Nov 13, 2025
d8e7368
feat(managed): Expose rtti methods to managed
samyycX Nov 13, 2025
3064aab
fix: Prevent multiple concurrent async click triggers per player
ELDment Nov 13, 2025
e832468
Merge remote-tracking branch 'upstream/beta' into beta-1
ELDment Nov 13, 2025
dc696bd
Merge pull request #93 from ELDment/beta-1
skuzzis Nov 13, 2025
5eb6aca
chore: Add google/breakpad as submodule
ELDment Nov 13, 2025
76f4b75
update(core): Minor Perf Improvement
skuzzis Nov 14, 2025
125c0a0
Merge branch 'beta' of https://github.com/swiftly-solution/swiftlys2 …
skuzzis Nov 14, 2025
35827b9
feat: Expose Tag property on IMenuAPI
ELDment Nov 14, 2025
a03b2e4
feat: Support close callbacks in OpenMenu and OpenMenuForPlayer
ELDment Nov 14, 2025
3890dee
refactor: Move render computation off main thread
ELDment Nov 14, 2025
360bf04
chore: Clean up
ELDment Nov 14, 2025
9d9b53b
chore: Clean up code
ELDment Nov 14, 2025
6013550
Merge pull request #95 from ELDment/beta-2
skuzzis Nov 14, 2025
858ad80
update(CSteamID): SteamID 64/32/3/Normal
skuzzis Nov 14, 2025
d25b68d
[skip ci] update(editor): config
skuzzis Nov 14, 2025
d53cb24
[no ci] chore: Add code formatting configuration files
ELDment Nov 15, 2025
4ff04d9
Merge pull request #96 from ELDment/beta-2
skuzzis Nov 15, 2025
d6728a6
feat: Add runtime cross-language interop benchmarks
ELDment Nov 15, 2025
2db01fa
refactor: Improve benchmark precision
ELDment Nov 15, 2025
dabd54e
chore: Archive performance report
ELDment Nov 15, 2025
a92cb99
perf(managed): Use static field for schema offset
samyycX Nov 15, 2025
6cb8ba7
perf: Refactor native interop generator for improved performance
ELDment Nov 15, 2025
5c45529
Merge pull request #97 from swiftly-solution/feat/static_schema_offsets
skuzzis Nov 15, 2025
78d0e62
chore: Clean up code
ELDment Nov 15, 2025
ff4f059
fix: Add null terminator for string parameters
ELDment Nov 15, 2025
d6f58d1
fix: Remove unnecessary buffer copies in native generator
ELDment Nov 15, 2025
e4adfb8
fix: Allocate extra byte for null terminator in string return values
ELDment Nov 15, 2025
b2319a7
Merge pull request #98 from ELDment/beta-review
skuzzis Nov 15, 2025
2244930
Update README.md +semver: major
skuzzis Nov 15, 2025
d1227f5
chore(template): Update to .NET 10
samyycX Nov 15, 2025
772a1bf
chore(template): Update packages to .NET 10 and release
samyycX Nov 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
54 changes: 54 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
# Base style
BasedOnStyle: LLVM

# Indentation settings
IndentWidth: 4
UseTab: Never
TabWidth: 4

# Access modifier offset
AccessModifierOffset: -4

# Brace breaking style
BreakBeforeBraces: Allman

# Pointer and reference alignment
PointerAlignment: Left
ReferenceAlignment: Left

# Space settings
SpaceBeforeParens: ControlStatements
SpaceBeforeAssignmentOperators: true
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false

# Column limit
ColumnLimit: 256

# Namespace indentation
NamespaceIndentation: All

# Keep short statements on single line
AllowShortBlocksOnASingleLine: Empty
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false

# Constructor initializer list
ConstructorInitializerIndentWidth: 4
BreakConstructorInitializers: BeforeColon

# Binary operator line breaking
BreakBeforeBinaryOperators: None

# Comment alignment
AlignTrailingComments: true

# Consecutive assignment alignment
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
11 changes: 7 additions & 4 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# Visual Studio generated .editorconfig file with C++ settings.
root = true

[*]
indent_style = space
indent_size = 4
charset = utf-8

[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]

# Visual C++ Code Style settings
Expand All @@ -12,7 +17,7 @@ cpp_generate_documentation_comments = xml
cpp_indent_braces = false
cpp_indent_multi_line_relative_to = innermost_parenthesis
cpp_indent_within_parentheses = indent
cpp_indent_preserve_within_parentheses = true
cpp_indent_preserve_within_parentheses = false
cpp_indent_case_contents = true
cpp_indent_case_labels = false
cpp_indent_case_contents_when_block = false
Expand Down Expand Up @@ -60,7 +65,7 @@ cpp_space_remove_around_member_operators = true
cpp_space_before_inheritance_colon = true
cpp_space_before_constructor_colon = true
cpp_space_remove_before_semicolon = true
cpp_space_after_semicolon = true
cpp_space_after_semicolon = false
cpp_space_remove_around_unary_operator = true
cpp_space_around_binary_operator = insert
cpp_space_around_assignment_operator = insert
Expand Down Expand Up @@ -167,8 +172,6 @@ csharp_style_unused_value_expression_statement_preference = discard_variable
dotnet_diagnostic.IDE0058.severity = warning
csharp_style_unused_value_assignment_preference = discard_variable
dotnet_diagnostic.IDE0059.severity = warning

indent_style = space
csharp_indent_case_contents = true
csharp_indent_switch_labels = true
csharp_new_line_before_open_brace = types, object_collection, methods, control_blocks, lambdas
Expand Down
105 changes: 97 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
dotnet-version: '10.0.x'
- name: Build managed
run: |
cd managed
Expand Down Expand Up @@ -231,14 +231,14 @@ jobs:
run: |
mkdir -p ./linux-runtimes
cd ./linux-runtimes
wget https://builds.dotnet.microsoft.com/dotnet/Runtime/8.0.20/dotnet-runtime-8.0.20-linux-x64.tar.gz
wget https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.0/dotnet-runtime-10.0.0-linux-x64.tar.gz
mkdir -p content
tar -xzf dotnet-runtime-8.0.20-linux-x64.tar.gz -C content
tar -xzf dotnet-runtime-10.0.0-linux-x64.tar.gz -C content
cd ..
mkdir -p ./windows-runtimes
cd ./windows-runtimes
wget https://builds.dotnet.microsoft.com/dotnet/Runtime/8.0.20/dotnet-runtime-8.0.20-win-x64.zip
unzip dotnet-runtime-8.0.20-win-x64.zip -d content
wget https://builds.dotnet.microsoft.com/dotnet/Runtime/10.0.0/dotnet-runtime-10.0.0-win-x64.zip
unzip dotnet-runtime-10.0.0-win-x64.zip -d content
cd ..

- name: Create package
Expand All @@ -262,8 +262,8 @@ jobs:
cp -r linux-runtimes/content/ ${{ env.LINUX_FOLDER }}-with-runtimes/swiftlys2/bin/managed/dotnet
cp -r windows-runtimes/content/ ${{ env.WINDOWS_FOLDER }}-with-runtimes/swiftlys2/bin/managed/dotnet

cp linux-runtimes/content/host/fxr/8.0.20/libhostfxr.so ${{ env.LINUX_FOLDER }}-with-runtimes/swiftlys2/bin/linuxsteamrt64/libhostfxr.so
cp windows-runtimes/content/host/fxr/8.0.20/hostfxr.dll ${{ env.WINDOWS_FOLDER }}-with-runtimes/swiftlys2/bin/win64/hostfxr.dll
cp linux-runtimes/content/host/fxr/10.0.0/libhostfxr.so ${{ env.LINUX_FOLDER }}-with-runtimes/swiftlys2/bin/linuxsteamrt64/libhostfxr.so
cp windows-runtimes/content/host/fxr/10.0.0/hostfxr.dll ${{ env.WINDOWS_FOLDER }}-with-runtimes/swiftlys2/bin/win64/hostfxr.dll

mkdir -p ${{ env.LINUX_FOLDER }}/addons/
mkdir -p ${{ env.WINDOWS_FOLDER }}/addons/
Expand Down Expand Up @@ -334,6 +334,95 @@ jobs:
tag_name: ${{ env.TAG_NAME }}
name: Release v${{ needs.versioning.outputs.semVer }}
body: ${{ needs.versioning.outputs.semVer }}

- name: Get commit summary for beta
if: github.ref == 'refs/heads/beta'
id: beta_commits
run: |
# Get the previous tag
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")

# Get commits since previous tag, or last 10 if no previous tag
if [ -n "$PREV_TAG" ]; then
COMMITS=$(git log ${PREV_TAG}..HEAD --pretty=format:"• %s (\`%h\`)" | head -c 900)
else
COMMITS=$(git log -10 --pretty=format:"• %s (\`%h\`)" | head -c 900)
fi

# If commits are empty, set a default message
if [ -z "$COMMITS" ]; then
COMMITS="No commit information available"
fi

echo "summary<<EOF" >> $GITHUB_OUTPUT
echo "$COMMITS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Send Discord notification (Beta)
if: github.ref == 'refs/heads/beta'
uses: tsickert/discord-webhook@v6.0.0
with:
webhook-url: ${{ secrets.DISCORD_WEBHOOK_BETA }}
embed-title: "🚀 New Beta Release"
embed-description: |
**SwiftlyS2** v${{ needs.versioning.outputs.semVer }} has been released!

**📦 Version:** `${{ needs.versioning.outputs.semVer }}`
**🔖 Tag:** `${{ env.TAG_NAME }}`

**📝 Recent Commits:**
${{ steps.beta_commits.outputs.summary }}

**📥 Download:** [View Release](https://github.com/${{ github.repository }}/releases/tag/${{ env.TAG_NAME }})
embed-color: 65261
embed-timestamp: ${{ github.event.head_commit.timestamp }}
embed-footer-text: "Beta Release • SwiftlyS2"
content: <@&1438068022706311279>

- name: Get commit summary for master
if: github.ref == 'refs/heads/master'
id: master_commits
run: |
# Get the previous tag
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")

# Get commits since previous tag, or last 15 if no previous tag
if [ -n "$PREV_TAG" ]; then
COMMITS=$(git log ${PREV_TAG}..HEAD --pretty=format:"• %s (\`%h\`)" | head -c 900)
else
COMMITS=$(git log -15 --pretty=format:"• %s (\`%h\`)" | head -c 900)
fi

# If commits are empty, set a default message
if [ -z "$COMMITS" ]; then
COMMITS="No commit information available"
fi

echo "summary<<EOF" >> $GITHUB_OUTPUT
echo "$COMMITS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Send Discord notification (Master)
if: github.ref == 'refs/heads/master'
uses: tsickert/discord-webhook@v6.0.0
with:
webhook-url: ${{ secrets.DISCORD_WEBHOOK_MASTER }}
embed-title: "✨ New Stable Release"
embed-description: |
**SwiftlyS2** v${{ needs.versioning.outputs.semVer }} is now available!

**📦 Version:** `${{ needs.versioning.outputs.semVer }}`
**🔖 Tag:** `${{ env.TAG_NAME }}`

**📝 Changelog Summary:**
${{ steps.master_commits.outputs.summary }}

**📥 Download:** [View Release](https://github.com/${{ github.repository }}/releases/tag/${{ env.TAG_NAME }})
embed-color: 65261
embed-timestamp: ${{ github.event.head_commit.timestamp }}
embed-footer-text: "Stable Release • SwiftlyS2"
content: <@&1438068068587933706>

nuget:
if: ${{ github.event_name == 'push' && github.repository_owner == 'swiftly-solution' }}
needs: [versioning, releasing]
Expand All @@ -346,7 +435,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
dotnet-version: '10.0.x'
- name: Publish to nuget
run: |
cd managed
Expand Down
37 changes: 24 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,29 @@

SwiftlyS2 is a powerful scripting framework for Source 2 games, built in C++ with C# plugin support. It provides developers with a comprehensive API to create plugins for Source 2-based games like Counter-Strike 2.

> [!warning]
> The framework is under a **BETA** release.

## Features

- **C# Plugin Development**: Write plugins in C# with full .NET support
- **Comprehensive API**: Access to game events, player management, and server control
- **High Performance**: Native C++ core with optimized plugin execution
- **Memory Safety**: Built-in memory management and thread-safe operations
- **Hot Reload**: Reload plugins without restarting the server
- **Cross-Platform**: Supports Windows and Linux
- **Source 2 Ready**: Designed specifically for Source 2 engine games
# Why should you choose SwifltyS2?

SwifltyS2 is built with developers in mind, providing an extensive suite of scripting features that make plugin development faster and more efficient.

We're preventing memory leaks when working with the game's SDK and functions, having active maintenance and faster execution speeds through natives which are calling directly Native (core) code.

A list of features:
- **Commands**: Handles custom console commands or chat-based commands in the game.
- **Convars**: Manages console variables (cvars) to control game behavior and configuration.
- **Database**: Provides access to a centralized space to store your database credentials.
- **Entity System**: Handles creation, management, and interaction of game entities.
- **Events**: Manages event hooks, allowing scripts to react to in-game occurrences.
- **GameEvents**: Handles triggering and listening for in-game events. All fields are typed.
- **Memory**: Provides low-level memory manipulation tools for advanced scripting.
- **Menus**: Provides a easy Menu API with tons of customization, from colors to options and much more.
- **Hooks**: A hooking system to hook functions, net messages, entity outputs and more.
- **NetMessages**: Facilitates sending and receiving network messages via protobuf to clients.
- **Profiler**: Tools for performance analysis and debugging of scripts.
- **ProtobufDefinitions**: Types for NetMessages received or sent by the server.
- **Scheduler**: Provides timers and scheduling functionality for deferred or repeated tasks.
- **SchemaDefinitions**: Defines the SDK Schema classes and enums.
- **Schemas**: Schema class helpers for working with Game's SDK.
- **Sounds**: Provides tools for playing and managing audio within the game.

## Supported Games

Expand All @@ -29,7 +40,7 @@ SwiftlyS2 is a powerful scripting framework for Source 2 games, built in C++ wit
### Prerequisites

- **Windows**: Visual Studio 2022 with C++ and .NET workloads
- **Linux**: GCC 11+ and .NET 8.0 SDK
- **Linux**: GCC 11+ and .NET 10.0 SDK
- **XMake**

### Building SwiftlyS2
Expand Down
Binary file added devtools/cloc.exe
Binary file not shown.
Loading
Loading