From bb7d4c2d2c2d4beb90afb8071b32421245f9bd31 Mon Sep 17 00:00:00 2001 From: Anthony Wilcox <35226681+antonwilc0x@users.noreply.github.com> Date: Tue, 11 Jun 2019 01:30:02 -0400 Subject: [PATCH] Switch to C# (#8) I learned C# primarily for game development but held off switching to it on Godot 3 because it was still rough around edges - crashed way too many times. It seems to be working as it should as of 3.1.1 and that's why I'm rewriting all the GDScript portions in C# as much as possible. However, this does make it incompatible with the Steam version, as of this writing, until the Godot devs decide how they want to publish it in future updates. --- .gitignore | 352 +++++++++++++++++++++- README.md | 10 + project/.editorconfig | 77 +++++ project/ImportItems.gd | 12 - project/Nathan's Dress Up.csproj | 76 +++++ project/Nathan's Dress Up.sln | 19 ++ project/Properties/AssemblyDynamicInfo.cs | 8 + project/Properties/AssemblyDynamicInfo.tt | 14 + project/Properties/AssemblyInfo.cs | 27 ++ project/packages.config | 4 + project/project.godot | 9 +- project/project.licenseheader | 4 + project/scn/Character.tscn | 2 +- project/scn/Clothes.tscn | 11 +- project/scn/CreditsScn.tscn | 29 +- project/scn/GameScn.tscn | 4 +- project/scn/LicenseWin.tscn | 56 ++++ project/scn/PauseScn.tscn | 54 +--- project/scn/TitleScn.tscn | 55 +--- project/src/ClassicScn.gd | 2 +- project/src/CreditsScn.gd | 4 - project/src/GameKit.gd | 21 -- project/src/GameScn.cs | 129 ++++++++ project/src/GameScn.gd | 95 ------ project/src/PauseScn.cs | 43 +++ project/src/PauseScn.gd | 34 --- project/src/Soundtrack.cs | 27 ++ project/src/Soundtrack.gd | 22 -- project/src/TitleScn.cs | 18 ++ project/src/TitleScn.gd | 21 -- 30 files changed, 885 insertions(+), 354 deletions(-) create mode 100644 project/.editorconfig delete mode 100644 project/ImportItems.gd create mode 100644 project/Nathan's Dress Up.csproj create mode 100644 project/Nathan's Dress Up.sln create mode 100644 project/Properties/AssemblyDynamicInfo.cs create mode 100644 project/Properties/AssemblyDynamicInfo.tt create mode 100644 project/Properties/AssemblyInfo.cs create mode 100644 project/packages.config create mode 100644 project/project.licenseheader create mode 100644 project/scn/LicenseWin.tscn delete mode 100644 project/src/CreditsScn.gd delete mode 100644 project/src/GameKit.gd create mode 100644 project/src/GameScn.cs delete mode 100644 project/src/GameScn.gd create mode 100644 project/src/PauseScn.cs delete mode 100644 project/src/PauseScn.gd create mode 100644 project/src/Soundtrack.cs delete mode 100644 project/src/Soundtrack.gd create mode 100644 project/src/TitleScn.cs delete mode 100644 project/src/TitleScn.gd diff --git a/.gitignore b/.gitignore index c22cc88..9e22049 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ export -# Created by https://www.gitignore.io/api/linux,macos,windows,godot,visualstudiocode -# Edit at https://www.gitignore.io/?templates=linux,macos,windows,godot,visualstudiocode +# Created by https://www.gitignore.io/api/godot,linux,macos,windows,visualstudio,visualstudiocode +# Edit at https://www.gitignore.io/?templates=godot,linux,macos,windows,visualstudio,visualstudiocode ### Godot ### @@ -9,7 +9,6 @@ export .import/ export.cfg export_presets.cfg -*.log # Mono-specific ignores .mono/ @@ -93,4 +92,349 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk -# End of https://www.gitignore.io/api/linux,macos,windows,godot,visualstudiocode \ No newline at end of file +### 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/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.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/ + +# 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 +*.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 + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# 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 + +# Microsoft 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 +*.nupkg +# 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 + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft 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 +*- Backup*.rdl + +# Microsoft 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 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/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# End of https://www.gitignore.io/api/godot,linux,macos,windows,visualstudio,visualstudiocode \ No newline at end of file diff --git a/README.md b/README.md index 4945c89..aa8266b 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,16 @@ ​Nathan's Dress Up is a open source dress up game. It's a remake of my original Flash game, ZC's Dress Up. +## Prerequisites + +- [Godot](https://godotengine.org/download/windows) 3.1.1 or later, Mono version +- .NET Build Tools + - [Mono SDK](https://www.mono-project.com/download/stable/) + - [Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/?q=build+tools) +- Visual Studio or MonoDevelop + +_Built and tested on Godot 3.1.1 from Windows 10 1903 with Visual Studio Build Tools 2017_ + ## Screenshot ![](screenshot.gif) \ No newline at end of file diff --git a/project/.editorconfig b/project/.editorconfig new file mode 100644 index 0000000..f25d828 --- /dev/null +++ b/project/.editorconfig @@ -0,0 +1,77 @@ +root = true + +[*] +charset = utf-8 +end_of_line = crlf +indent_style = space +indent_size = 4 +insert_final_newline = false +trim_trailing_whitespace = true + +[*.{csproj,proj,projitems,shproj,fsproj,target,props}] +indent_style = space +indent_size = 2 + +[*.{fs,fsx,fsi}] +indent_style = space +indent_size = 4 + +[*.cs] +# New line preferences +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_switch_labels = true +csharp_indent_labels = one_less_than_current + +# only use var when it's obvious what the variable type is +csharp_style_var_for_built_in_types = true : none +csharp_style_var_when_type_is_apparent = true : none +csharp_style_var_elsewhere = true : suggestion + +# Code style defaults +dotnet_sort_system_directives_first = true +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +# Pattern matching +csharp_style_pattern_matching_over_is_with_cast_check = true : suggestion +csharp_style_pattern_matching_over_as_with_null_check = true : suggestion +csharp_style_inlined_variable_declaration = true : suggestion + +# Null checking preferences +csharp_style_throw_expression = true : warning +csharp_style_conditional_delegate_call = true : warning + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = do_not_ignore +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false \ No newline at end of file diff --git a/project/ImportItems.gd b/project/ImportItems.gd deleted file mode 100644 index 53d8bb0..0000000 --- a/project/ImportItems.gd +++ /dev/null @@ -1,12 +0,0 @@ -extends Node - -# export (String, FILE, "*.json") var item_file : String - -func load_items(file_path) -> Dictionary: - var file = File.new() - assert file.file_exists(file_path) - - file.open(file_path) - var items = parse_json(file.get_as_text()) - assert items.size() > 0 - return items \ No newline at end of file diff --git a/project/Nathan's Dress Up.csproj b/project/Nathan's Dress Up.csproj new file mode 100644 index 0000000..dbee5f1 --- /dev/null +++ b/project/Nathan's Dress Up.csproj @@ -0,0 +1,76 @@ + + + + Debug + AnyCPU + {64EE4F89-7A23-452A-8772-9E7C07A71ED9} + Library + .mono\temp\bin\$(Configuration) + NathansDressUp + Nathan's Dress Up + v4.5 + .mono\temp\obj + $(BaseIntermediateOutputPath)\$(Configuration) + + + true + portable + false + DEBUG; + prompt + 4 + false + + + portable + true + prompt + 4 + false + + + true + portable + false + DEBUG;TOOLS; + prompt + 4 + false + + + + $(ProjectDir)\.mono\assemblies\GodotSharp.dll + False + + + $(ProjectDir)\.mono\assemblies\GodotSharpEditor.dll + False + + + + + + True + True + AssemblyDynamicInfo.tt + + + + + + + + + + TextTemplatingFileGenerator + AssemblyDynamicInfo.cs + + + + + + + + + + \ No newline at end of file diff --git a/project/Nathan's Dress Up.sln b/project/Nathan's Dress Up.sln new file mode 100644 index 0000000..0a818a1 --- /dev/null +++ b/project/Nathan's Dress Up.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nathan's Dress Up", "Nathan's Dress Up.csproj", "{64EE4F89-7A23-452A-8772-9E7C07A71ED9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + Tools|Any CPU = Tools|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {64EE4F89-7A23-452A-8772-9E7C07A71ED9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64EE4F89-7A23-452A-8772-9E7C07A71ED9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64EE4F89-7A23-452A-8772-9E7C07A71ED9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64EE4F89-7A23-452A-8772-9E7C07A71ED9}.Release|Any CPU.Build.0 = Release|Any CPU + {64EE4F89-7A23-452A-8772-9E7C07A71ED9}.Tools|Any CPU.ActiveCfg = Tools|Any CPU + {64EE4F89-7A23-452A-8772-9E7C07A71ED9}.Tools|Any CPU.Build.0 = Tools|Any CPU + EndGlobalSection +EndGlobal diff --git a/project/Properties/AssemblyDynamicInfo.cs b/project/Properties/AssemblyDynamicInfo.cs new file mode 100644 index 0000000..0051ca1 --- /dev/null +++ b/project/Properties/AssemblyDynamicInfo.cs @@ -0,0 +1,8 @@ +// Anthony Wilcox licenses this file to you under the GPL license. +// See the LICENSE file in the project root for more information. + +// This code was generated by a tool. Any changes made manually will be lost +// the next time this code is regenerated. +using System.Reflection; +[assembly: AssemblyVersion("0.0.1906.1104")] +[assembly: AssemblyFileVersion("0.0.1906.1104")] \ No newline at end of file diff --git a/project/Properties/AssemblyDynamicInfo.tt b/project/Properties/AssemblyDynamicInfo.tt new file mode 100644 index 0000000..06a5098 --- /dev/null +++ b/project/Properties/AssemblyDynamicInfo.tt @@ -0,0 +1,14 @@ +<#@ template debug="false" hostspecific="false" language="C#" #> +<#@ output extension=".cs" #> +<# +var now = DateTime.UtcNow; +var version = $"0.0.{now.Year % 100:D2}{now.Month:D2}.{now.Day:D2}{now.Hour:D2}"; +#> +// Anthony Wilcox licenses this file to you under the GPL license. +// See the LICENSE file in the project root for more information. + +// This code was generated by a tool. Any changes made manually will be lost +// the next time this code is regenerated. +using System.Reflection; +[assembly: AssemblyVersion("<#= version #>")] +[assembly: AssemblyFileVersion("<#= version #>")] \ No newline at end of file diff --git a/project/Properties/AssemblyInfo.cs b/project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3fad279 --- /dev/null +++ b/project/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +// Anthony Wilcox licenses this file to you under the GPL license. +// See the LICENSE file in the project root for more information. +using System.Reflection; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("Nathan's Dress Up")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +// [assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] diff --git a/project/packages.config b/project/packages.config new file mode 100644 index 0000000..93b0be8 --- /dev/null +++ b/project/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/project/project.godot b/project/project.godot index 6b1497c..5f9a1db 100644 --- a/project/project.godot +++ b/project/project.godot @@ -23,14 +23,6 @@ boot_splash/bg_color=Color( 0.8, 0.8, 0.4, 1 ) config/icon="res://icon.png" name_sv="Nathans klä upp" -[autoload] - -GameKit="*res://src/GameKit.gd" - -[debug] - -gdscript/completion/autocomplete_setters_and_getters=true - [debug] gdscript/completion/autocomplete_setters_and_getters=true @@ -62,3 +54,4 @@ quality/intended_usage/framebuffer_allocation.mobile=0 quality/2d/use_pixel_snap=true vram_compression/import_etc=true environment/default_environment="res://default_env.tres" +quality/dynamic_fonts/use_oversampling=false diff --git a/project/project.licenseheader b/project/project.licenseheader new file mode 100644 index 0000000..67d8bc4 --- /dev/null +++ b/project/project.licenseheader @@ -0,0 +1,4 @@ +extensions: designer.cs generated.cs +extensions: .cs .cpp .h +// Anthony Wilcox licenses this file to you under the GPL license. +// See the LICENSE file in the project root for more information. \ No newline at end of file diff --git a/project/scn/Character.tscn b/project/scn/Character.tscn index c4fc0f3..f1b46b0 100644 --- a/project/scn/Character.tscn +++ b/project/scn/Character.tscn @@ -67,7 +67,7 @@ texture = ExtResource( 4 ) [node name="Eyes" type="AnimatedSprite" parent="Base"] position = Vector2( 114.227, 63.9224 ) frames = SubResource( 2 ) -frame = 4 +frame = 13 playing = true [node name="Mouth" type="AnimatedSprite" parent="Base"] diff --git a/project/scn/Clothes.tscn b/project/scn/Clothes.tscn index 5a5bdfb..8d088e8 100644 --- a/project/scn/Clothes.tscn +++ b/project/scn/Clothes.tscn @@ -39,7 +39,7 @@ custom_colors/font_color_bg = Color( 0.921569, 0.921569, 0.921569, 1 ) custom_colors/font_color_fg = Color( 1, 1, 1, 1 ) [node name="Pants" type="Tabs" parent="Wordrobe"] -visible = false +editor/display_folded = true anchor_right = 1.0 anchor_bottom = 1.0 margin_top = 31.0 @@ -76,9 +76,9 @@ margin_bottom = 112.0 texture_normal = ExtResource( 6 ) [node name="RemovePants" type="Button" parent="Wordrobe/Pants/PantsGrid"] -margin_top = 116.0 -margin_right = 106.0 -margin_bottom = 228.0 +margin_left = 440.0 +margin_right = 546.0 +margin_bottom = 112.0 rect_min_size = Vector2( 0, 112 ) custom_colors/font_color_disabled = Color( 0, 0, 0, 1 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) @@ -88,6 +88,8 @@ icon = ExtResource( 7 ) flat = true [node name="Shirts" type="Tabs" parent="Wordrobe"] +editor/display_folded = true +visible = false anchor_right = 1.0 anchor_bottom = 1.0 margin_top = 31.0 @@ -204,7 +206,6 @@ margin_bottom = 112.0 texture_normal = ExtResource( 20 ) [node name="Accessoires" type="Tabs" parent="Wordrobe"] -editor/display_folded = true visible = false anchor_right = 1.0 anchor_bottom = 1.0 diff --git a/project/scn/CreditsScn.tscn b/project/scn/CreditsScn.tscn index 051ca30..feeb500 100644 --- a/project/scn/CreditsScn.tscn +++ b/project/scn/CreditsScn.tscn @@ -1,20 +1,18 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=5 format=2] -[ext_resource path="res://src/CreditsScn.gd" type="Script" id=1] -[ext_resource path="res://styles/DressUpTheme.res" type="Theme" id=2] -[ext_resource path="res://scn/Character.tscn" type="PackedScene" id=3] -[ext_resource path="res://scn/PauseScn.tscn" type="PackedScene" id=4] -[ext_resource path="res://src/Soundtrack.gd" type="Script" id=5] +[ext_resource path="res://styles/DressUpTheme.res" type="Theme" id=1] +[ext_resource path="res://scn/Character.tscn" type="PackedScene" id=2] +[ext_resource path="res://scn/PauseScn.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/Soundtrack.cs" type="Script" id=4] [node name="Credits" type="Node"] -script = ExtResource( 1 ) [node name="RichTextLabel" type="RichTextLabel" parent="."] margin_left = 33.0 margin_top = 19.0 margin_right = 320.0 margin_bottom = 206.0 -theme = ExtResource( 2 ) +theme = ExtResource( 1 ) bbcode_text = "Nathan's Dress Up is a remake of Zack's Dress Up, a flash game created from 2006 to 2009. The character use to be a blue fox named Zack but was changed to a blue fennec named Nathan." text = "Nathan's Dress Up is a remake of Zack's Dress Up, a flash game created from 2006 to 2009. The character use to be a blue fox named Zack but was changed to a blue fennec named Nathan." @@ -24,7 +22,7 @@ anchor_right = 0.5 margin_left = -159.0 margin_right = 160.0 margin_bottom = 586.0 -theme = ExtResource( 2 ) +theme = ExtResource( 1 ) bbcode_enabled = true bbcode_text = "[center]Created by Anthony Wilcox @@ -55,17 +53,10 @@ Made with Godot Engine " -[node name="Character" parent="." instance=ExtResource( 3 )] +[node name="Character" parent="." instance=ExtResource( 2 )] position = Vector2( 68.8273, 256.845 ) -[node name="WinDialogs" parent="." instance=ExtResource( 4 )] +[node name="WinDialogs" parent="." instance=ExtResource( 3 )] [node name="Music" type="AudioStreamPlayer" parent="."] -script = ExtResource( 5 ) - -[node name="Version" type="Label" parent="."] -margin_left = 950.908 -margin_top = 568.64 -margin_right = 990.908 -margin_bottom = 582.64 -text = "Version" +script = ExtResource( 4 ) diff --git a/project/scn/GameScn.tscn b/project/scn/GameScn.tscn index 6ab3670..1f7a6fe 100644 --- a/project/scn/GameScn.tscn +++ b/project/scn/GameScn.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=8 format=2] -[ext_resource path="res://src/GameScn.gd" type="Script" id=1] +[ext_resource path="res://src/GameScn.cs" type="Script" id=1] [ext_resource path="res://sprites/icrazy_frame.svg" type="Texture" id=2] [ext_resource path="res://sprites/lights.png" type="Texture" id=3] [ext_resource path="res://scn/Clothes.tscn" type="PackedScene" id=4] -[ext_resource path="res://src/Soundtrack.gd" type="Script" id=5] +[ext_resource path="res://src/Soundtrack.cs" type="Script" id=5] [ext_resource path="res://scn/PauseScn.tscn" type="PackedScene" id=6] [ext_resource path="res://scn/Character.tscn" type="PackedScene" id=7] diff --git a/project/scn/LicenseWin.tscn b/project/scn/LicenseWin.tscn new file mode 100644 index 0000000..d69b711 --- /dev/null +++ b/project/scn/LicenseWin.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://styles/DressUpTheme.res" type="Theme" id=1] + +[node name="LicenseWin" type="AcceptDialog"] +editor/display_folded = true +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -202.0 +margin_top = -137.5 +margin_right = 202.0 +margin_bottom = 137.5 +theme = ExtResource( 1 ) +window_title = "KLIC" +resizable = true + +[node name="LicenseTxt" type="RichTextLabel" parent="."] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -194.0 +margin_top = 8.0 +margin_right = 194.0 +margin_bottom = 239.0 +bbcode_enabled = true +bbcode_text = "Nathan's Dress Up is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. + +Nathan's Dress Up is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with Nathan's Dress Up. If not, see: https://www.gnu.org/licenses/ + +[center]##########################[/center] + +Nathan's Dress Up (c) by Anthony Wilcox + +Nathan's Dress Up is licensed under a Creative Commons +Attribution-ShareAlike 4.0 International License. + +You should have received a copy of the license along with this work. +If not, see ." +text = "Nathan's Dress Up is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. + +Nathan's Dress Up is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with Nathan's Dress Up. If not, see: https://www.gnu.org/licenses/ + +########################## + +Nathan's Dress Up (c) by Anthony Wilcox + +Nathan's Dress Up is licensed under a Creative Commons +Attribution-ShareAlike 4.0 International License. + +You should have received a copy of the license along with this work. +If not, see ." diff --git a/project/scn/PauseScn.tscn b/project/scn/PauseScn.tscn index 3ff02da..5b14c48 100644 --- a/project/scn/PauseScn.tscn +++ b/project/scn/PauseScn.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=2] [ext_resource path="res://styles/DressUpTheme.res" type="Theme" id=1] -[ext_resource path="res://src/PauseScn.gd" type="Script" id=2] +[ext_resource path="res://src/PauseScn.cs" type="Script" id=2] [node name="WinDialogs" type="Control"] anchor_left = 0.5 @@ -148,58 +148,6 @@ margin_right = 65.0 margin_bottom = 24.0 text = "KMUS" align = 1 - -[node name="LicenseWin" type="AcceptDialog" parent="."] -editor/display_folded = true -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -margin_left = -202.0 -margin_top = -137.5 -margin_right = 202.0 -margin_bottom = 137.5 -window_title = "KLIC" -resizable = true - -[node name="LicenseTxt" type="RichTextLabel" parent="LicenseWin"] -anchor_left = 0.5 -anchor_right = 0.5 -margin_left = -194.0 -margin_top = 8.0 -margin_right = 194.0 -margin_bottom = 238.0 -bbcode_enabled = true -bbcode_text = "Nathan's Dress Up is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - -Nathan's Dress Up is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with Nathan's Dress Up. If not, see: https://www.gnu.org/licenses/ - -[center]##########################[/center] - -Nathan's Dress Up (c) by Anthony Wilcox - -Nathan's Dress Up is licensed under a Creative Commons -Attribution-ShareAlike 4.0 International License. - -You should have received a copy of the license along with this work. -If not, see ." -text = "Nathan's Dress Up is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - -Nathan's Dress Up is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with Nathan's Dress Up. If not, see: https://www.gnu.org/licenses/ - -########################## - -Nathan's Dress Up (c) by Anthony Wilcox - -Nathan's Dress Up is licensed under a Creative Commons -Attribution-ShareAlike 4.0 International License. - -You should have received a copy of the license along with this work. -If not, see ." [connection signal="pressed" from="PauseWin/PauseVbox/SettingsBtn" to="." method="_on_SettingsBtn_pressed"] [connection signal="pressed" from="PauseWin/PauseVbox/ResumeBtn" to="." method="_on_ResumeBtn_pressed"] [connection signal="pressed" from="PauseWin/PauseVbox/ExitBtn" to="." method="_on_ExitBtn_pressed"] diff --git a/project/scn/TitleScn.tscn b/project/scn/TitleScn.tscn index 3948f01..2a07373 100644 --- a/project/scn/TitleScn.tscn +++ b/project/scn/TitleScn.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://src/TitleScn.gd" type="Script" id=1] +[ext_resource path="res://src/TitleScn.cs" type="Script" id=1] [ext_resource path="res://styles/DressUpTheme.res" type="Theme" id=2] [ext_resource path="res://sprites/title.svg" type="Texture" id=3] -[ext_resource path="res://scn/PauseScn.tscn" type="PackedScene" id=4] +[ext_resource path="res://scn/LicenseWin.tscn" type="PackedScene" id=4] [node name="Start" type="Node"] script = ExtResource( 1 ) @@ -50,56 +50,7 @@ margin_right = 136.0 margin_bottom = 71.0 text = "KLIC" -[node name="ModePanel" type="WindowDialog" parent="MenuRf"] -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -margin_left = -73.0 -margin_top = -46.0 -margin_right = 73.0 -margin_bottom = 46.0 - -[node name="PlayVbox" type="VBoxContainer" parent="MenuRf/ModePanel"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 5.0 -margin_top = 5.0 -margin_right = -5.0 -margin_bottom = -5.0 - -[node name="ModeLbl" type="Label" parent="MenuRf/ModePanel/PlayVbox"] -margin_right = 136.0 -margin_bottom = 14.0 -text = "KGMO" -align = 1 - -[node name="ModernBtn" type="Button" parent="MenuRf/ModePanel/PlayVbox"] -margin_top = 18.0 -margin_right = 136.0 -margin_bottom = 38.0 -text = "Modern" - -[node name="ClassicBtn" type="Button" parent="MenuRf/ModePanel/PlayVbox"] -margin_top = 42.0 -margin_right = 136.0 -margin_bottom = 62.0 -text = "KCLS" - -[node name="WinDialogs" parent="." instance=ExtResource( 4 )] -margin_left = 97.0 -margin_top = 37.0 -margin_right = 97.0 -margin_bottom = 37.0 - -[node name="Version" type="Label" parent="."] -margin_left = 950.908 -margin_top = 568.64 -margin_right = 990.908 -margin_bottom = 582.64 -text = "Version" +[node name="LicenseWin" parent="." instance=ExtResource( 4 )] [connection signal="pressed" from="MenuRf/StartVbox/PlayBtn" to="." method="_on_PlayBtn_pressed"] [connection signal="pressed" from="MenuRf/StartVbox/CreditsBtn" to="." method="_on_CreditsBtn_pressed"] [connection signal="pressed" from="MenuRf/StartVbox/LicenseBtn" to="." method="_on_LicenseBtn_pressed"] -[connection signal="pressed" from="MenuRf/ModePanel/PlayVbox/ModernBtn" to="." method="_on_ModernBtn_pressed"] -[connection signal="pressed" from="MenuRf/ModePanel/PlayVbox/ClassicBtn" to="." method="_on_ClassicBtn_pressed"] diff --git a/project/src/ClassicScn.gd b/project/src/ClassicScn.gd index 9d0b2ee..014cee9 100644 --- a/project/src/ClassicScn.gd +++ b/project/src/ClassicScn.gd @@ -4,5 +4,5 @@ extends Node func _process(delta): if Input.is_action_pressed("ui_pause"): - GameKit.is_game_paused(true) + # GameKit.is_game_paused(true) $WinDialogs/PauseWin.show() \ No newline at end of file diff --git a/project/src/CreditsScn.gd b/project/src/CreditsScn.gd deleted file mode 100644 index ab90972..0000000 --- a/project/src/CreditsScn.gd +++ /dev/null @@ -1,4 +0,0 @@ -extends Node - -func _ready(): - $Version.text = GameKit.version \ No newline at end of file diff --git a/project/src/GameKit.gd b/project/src/GameKit.gd deleted file mode 100644 index e7f7783..0000000 --- a/project/src/GameKit.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Anthony Wilcox licenses this file to you under the GPL license. -# See the LICENSE file in the project root for more information. -extends Node - -var version = "2.0" - -func is_game_paused(is_paused): - if is_paused == true: - get_tree().paused = true - else: - get_tree().paused = false - -func switch_scenes(new_mode): - if new_mode == "classic": - get_tree().change_scene("res://scn/ClassicScn.tscn") - elif new_mode == "credits": - get_tree().change_scene("res://scn/CreditsScn.tscn") - elif new_mode == "play": - get_tree().change_scene("res://scn/GameScn.tscn") - elif new_mode == "title": - get_tree().change_scene("res://scn/TitleScn.tscn") \ No newline at end of file diff --git a/project/src/GameScn.cs b/project/src/GameScn.cs new file mode 100644 index 0000000..4cdabb5 --- /dev/null +++ b/project/src/GameScn.cs @@ -0,0 +1,129 @@ +// Anthony Wilcox licenses this file to you under the GPL license. +// See the LICENSE file in the project root for more information. +using Godot; + +public enum ClothingLayer +{ + Shirts, + Pants, + Undies, + Accessory +} + +public class GameScn : Node +{ + + void ChangeClothes(string path, ClothingLayer clothingLayer) + { + var texture = ResourceLoader.Load($"res://sprites/{path}"); + + switch (clothingLayer) + { + case ClothingLayer.Shirts: + var top = GetNode("Nathan/Top"); + top.Texture = texture; + break; + case ClothingLayer.Pants: + var bottom = GetNode("Nathan/Bottom"); + bottom.Texture = texture; + break; + case ClothingLayer.Undies: + var undies = GetNode("Nathan/Undies"); + undies.Texture = texture; + break; + case ClothingLayer.Accessory: + var accessory = GetNode("Nathan/Accessory"); + accessory.Texture = texture; + break; + } + } + + void ChangeClothes(ClothingLayer clothingLayer) + { + var blankTopPath = "tops_placeholder.png"; + var blankBottomPath = "bottoms_placeholder.png"; + + switch (clothingLayer) + { + case ClothingLayer.Shirts: + ChangeClothes(blankTopPath, ClothingLayer.Shirts); + break; + case ClothingLayer.Pants: + ChangeClothes(blankBottomPath, ClothingLayer.Pants); + break; + case ClothingLayer.Accessory: + ChangeClothes(blankTopPath, ClothingLayer.Accessory); + break; + } + } + + TextureButton ClothesButton(string path, ClothingLayer clothingType) + { + switch (clothingType) + { + case ClothingLayer.Accessory: + return GetNode($"Clothes/Wordrobe/Accessoires/AccsGrid/{path}"); + case ClothingLayer.Undies: + return GetNode($"Clothes/Wordrobe/Underwear/UndiesGrid/{path}"); + default: + case ClothingLayer.Pants: + return GetNode($"Clothes/Wordrobe/Pants/PantsGrid/{path}"); + case ClothingLayer.Shirts: + return GetNode($"Clothes/Wordrobe/Shirts/ShirtsGrid/{path}"); + } + } + + public override void _Process(float delta) + { + // Accessories + // ==================================================== + + if (ClothesButton("CanonCam", ClothingLayer.Accessory).Pressed) + ChangeClothes("camera.png", ClothingLayer.Accessory); + + //if (ClothesButton("RemoveAccessory", ClothingLayer.Accessory).Pressed) + // ChangeClothes(ClothingLayer.Accessory); + + // Pants + // ==================================================== + + if (ClothesButton("Jeans", ClothingLayer.Pants).Pressed) + ChangeClothes("jeans.svg", ClothingLayer.Pants); + + if (ClothesButton("Sweats", ClothingLayer.Pants).Pressed) + ChangeClothes("sweat_pants.svg", ClothingLayer.Pants); + + if (ClothesButton("BeatUpJeans", ClothingLayer.Pants).Pressed) + ChangeClothes("beat_up_jeans.svg", ClothingLayer.Pants); + + if (ClothesButton("BlueCamoJeans", ClothingLayer.Pants).Pressed) + ChangeClothes("blue_camo_jeans.svg", ClothingLayer.Pants); + + //if (ClothesButton("RemovePants", ClothingLayer.Pants).Pressed) + // ChangeClothes(ClothingLayer.Pants); + + // Underwear + // ==================================================== + + if (ClothesButton("Briefs", ClothingLayer.Undies).Pressed) + ChangeClothes("briefs.svg", ClothingLayer.Undies); + + if (ClothesButton("ZBriefs", ClothingLayer.Undies).Pressed) + ChangeClothes("z_briefs.svg", ClothingLayer.Undies); + + if (ClothesButton("Fundosi", ClothingLayer.Undies).Pressed) + ChangeClothes("fundosi.svg", ClothingLayer.Undies); + + if (ClothesButton("OwOCensor", ClothingLayer.Undies).Pressed) + ChangeClothes("owo_censor.svg", ClothingLayer.Undies); + + // Shirts + // ==================================================== + + if (ClothesButton("TrainHoodie", ClothingLayer.Shirts).Pressed) + ChangeClothes("train_hoodie.svg", ClothingLayer.Shirts); + + if (ClothesButton("Sweatshirt", ClothingLayer.Shirts).Pressed) + ChangeClothes("old_sweatshirt.svg", ClothingLayer.Shirts); + } +} diff --git a/project/src/GameScn.gd b/project/src/GameScn.gd deleted file mode 100644 index 07398cd..0000000 --- a/project/src/GameScn.gd +++ /dev/null @@ -1,95 +0,0 @@ -# Anthony Wilcox licenses this file to you under the GPL license. -# See the LICENSE file in the project root for more information. -extends "res://src/GameKit.gd" - -# Default clothing -onready var bottoms = load("res://sprites/bottoms_placeholder.png") -onready var tops = load("res://sprites/tops_placeholder.png") -onready var accessory = load("res://sprites/tops_placeholder.png") -# ZC's Dress Up was stylized to be cute, not adult. -# Underwear cam be suggestive but never lewd. -onready var undies = load("res://sprites/briefs.svg") - -func change_bottoms(new_bottom): - bottoms = new_bottom - - if new_bottom == null: - $Nathan/Bottom.texture = bottoms - - if undies == load("res://sprites/owo_censor.svg"): - change_undies(null) - - $Nathan/Bottom.texture = bottoms - -func change_undies(new_undies): - undies = new_undies - $Nathan/Undies.texture = undies - -func change_tops(new_top): - tops = new_top - - if new_top == null: - $Nathan/Top.texture = tops - - $Nathan/Top.texture = tops - -func change_accessoires(new_accessory): - accessory = new_accessory - - if new_accessory == null: - $Nathan/Accessory.texture = accessory - - $Nathan/Accessory.texture = accessory - -# warning-ignore:unused_argument -func _process(delta): - - # Change clothes - # =========================================================== - - if $Clothes/Wordrobe/Accessoires/AccsGrid/CanonCam.is_pressed(): - change_accessoires(load("res://sprites/camera.png")) - - if $Clothes/Wordrobe/Pants/PantsGrid/Jeans.is_pressed(): - change_bottoms(load("res://sprites/jeans.svg")) - - if $Clothes/Wordrobe/Pants/PantsGrid/Sweats.is_pressed(): - change_bottoms(load("res://sprites/sweat_pants.svg")) - - if $Clothes/Wordrobe/Pants/PantsGrid/BeatUpJeans.is_pressed(): - change_bottoms(load("res://sprites/beat_up_jeans.svg")) - - if $Clothes/Wordrobe/Underwear/UndiesGrid/Briefs.is_pressed(): - change_undies(load("res://sprites/briefs.svg")) - - if $Clothes/Wordrobe/Underwear/UndiesGrid/ZBriefs.is_pressed(): - change_undies(load("res://sprites/z_briefs.svg")) - - if $Clothes/Wordrobe/Underwear/UndiesGrid/Fundosi.is_pressed(): - change_undies(load("res://sprites/fundosi.svg")) - - if $Clothes/Wordrobe/Underwear/UndiesGrid/OwOCensor.is_pressed(): - change_bottoms(null) - change_undies(load("res://sprites/owo_censor.svg")) - - - if $Clothes/Wordrobe/Pants/PantsGrid/BlueCamoJeans.is_pressed(): - change_bottoms(load("res://sprites/blue_camo_jeans.svg")) - - if $Clothes/Wordrobe/Shirts/ShirtsGrid/TrainHoodie.is_pressed(): - change_tops(load("res://sprites/train_hoodie.svg")) - - if $Clothes/Wordrobe/Shirts/ShirtsGrid/Sweatshirt.is_pressed(): - change_tops(load("res://sprites/old_sweatshirt.svg")) - - # Remove clothes - # =========================================================== - - if $Clothes/Wordrobe/Accessoires/AccsGrid/RemoveAccessory.is_pressed(): - change_accessoires(null) - - if $Clothes/Wordrobe/Shirts/ShirtsGrid/RemoveShirt.is_pressed(): - change_tops(null) - - if $Clothes/Wordrobe/Pants/PantsGrid/RemovePants.is_pressed(): - change_bottoms(null) \ No newline at end of file diff --git a/project/src/PauseScn.cs b/project/src/PauseScn.cs new file mode 100644 index 0000000..4239061 --- /dev/null +++ b/project/src/PauseScn.cs @@ -0,0 +1,43 @@ +using Godot; + +public class PauseScn : Control +{ + void IsGamePaused(bool isPaused) + { + if (isPaused) + GetTree().Paused = true; + else + GetTree().Paused = false; + } + + public override void _Ready() + { + + } + + public override void _Process(float delta) + { + if (Input.IsActionPressed("ui_pause")) + { + GetNode("PauseWin").Show(); + IsGamePaused(true); + } + } + + void _on_ExitBtn_pressed() + { + IsGamePaused(false); + GetTree().ChangeScene("res://scn/TitleScn.tscn"); + } + + void _on_SettingsBtn_pressed() + { + GetNode("SettingsWin").Show(); + } + + void _on_ResumeBtn_pressed() + { + GetNode("PauseWin").Hide(); + IsGamePaused(false); + } +} diff --git a/project/src/PauseScn.gd b/project/src/PauseScn.gd deleted file mode 100644 index 617b648..0000000 --- a/project/src/PauseScn.gd +++ /dev/null @@ -1,34 +0,0 @@ -# Anthony Wilcox licenses this file to you under the GPL license. -# See the LICENSE file in the project root for more information. -extends Node - -func _process(delta): - if Input.is_action_just_pressed("ui_pause"): - $PauseWin.show() - GameKit.is_game_paused(true) - -func _on_ExitBtn_pressed(): - GameKit.is_game_paused(false) - GameKit.switch_scenes("title") - -func _on_SettingsBtn_pressed(): - $SettingsWin.show() - -func _on_CreditsBtn_pressed(): - GameKit.switch_scenes("credits") - -func _on_LicenseBtn_pressed(): - $LicenseWin.show() - -func _on_CloseAbtBtn_pressed(): - $AboutWin.hide() - -func _on_MusicBtn_toggled(button_pressed): - if button_pressed == true: - $Music.playing = true - else: - $Music.playing = false - -func _on_ResumeBtn_pressed(): - $PauseWin.hide() - GameKit.is_game_paused(false) \ No newline at end of file diff --git a/project/src/Soundtrack.cs b/project/src/Soundtrack.cs new file mode 100644 index 0000000..b89d017 --- /dev/null +++ b/project/src/Soundtrack.cs @@ -0,0 +1,27 @@ +// Anthony Wilcox licenses this file to you under the GPL license. +// See the LICENSE file in the project root for more information. +using Godot; + +public class Soundtrack : AudioStreamPlayer +{ + public override void _Ready () { + //Connect ("finished", this, "PlayRandomSong"); + //PlayRandomSong(); + } + + void PlayRandomSong () { + var rand = new RandomNumberGenerator(); + rand.Randomize (); + + var tracks = new string[] { + "reminiscing", + "together_again", + "at_the_lake", + "mushrooms", + }; + var index = rand.RandiRange(0, tracks.Length); + var audiostream = ResourceLoader.Load($"res://music/{tracks[index]}.ogg"); + Stream = audiostream; + Play(); + } +} \ No newline at end of file diff --git a/project/src/Soundtrack.gd b/project/src/Soundtrack.gd deleted file mode 100644 index acc94bc..0000000 --- a/project/src/Soundtrack.gd +++ /dev/null @@ -1,22 +0,0 @@ -# Anthony Wilcox licenses this file to you under the GPL license. -# See the LICENSE file in the project root for more information. -extends AudioStreamPlayer - -const tracks = [ - 'reminiscing', - 'together_again', - 'at_the_lake', - 'mushrooms', -] - -func _ready(): - connect("finished", self, "play_random_song") - play_random_song() - -func play_random_song(): - randomize() - - var rand_db = randi() % tracks.size() - var audiostream = load('res://music/' + tracks[rand_db] + '.ogg') - stream = audiostream - play() \ No newline at end of file diff --git a/project/src/TitleScn.cs b/project/src/TitleScn.cs new file mode 100644 index 0000000..95677ea --- /dev/null +++ b/project/src/TitleScn.cs @@ -0,0 +1,18 @@ +// Anthony Wilcox licenses this file to you under the GPL license. +// See the LICENSE file in the project root for more information. +using Godot; + +public class TitleScn : Node { + + void _on_PlayBtn_pressed() { + GetTree().ChangeScene("res://scn/GameScn.tscn"); + } + + void _on_CreditsBtn_pressed() { + GetTree().ChangeScene("res://scn/CreditsScn.tscn"); + } + void _on_LicenseBtn_pressed() + { + GetNode("LicenseWin").Show(); + } +} \ No newline at end of file diff --git a/project/src/TitleScn.gd b/project/src/TitleScn.gd deleted file mode 100644 index 237f5b5..0000000 --- a/project/src/TitleScn.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Anthony Wilcox licenses this file to you under the GPL license. -# See the LICENSE file in the project root for more information. -extends Node - -func _ready(): - $Version.text = GameKit.version - -func _on_ClassicBtn_pressed(): - GameKit.switch_scenes("classic") - -func _on_ModernBtn_pressed(): - GameKit.switch_scenes("play") - -func _on_CreditsBtn_pressed(): - GameKit.switch_scenes("credits") - -func _on_LicenseBtn_pressed(): - $WinDialogs/LicenseWin.show() - -func _on_PlayBtn_pressed(): - GameKit.switch_scenes("play")