Compare commits

..

No commits in common. "main" and "v0.0.2" have entirely different histories.
main ... v0.0.2

33 changed files with 186 additions and 2127 deletions

View File

@ -1,32 +0,0 @@
name: linting & formatting
run-name: ${{ gitea.actor }} is checking linting & formatting.
on:
push:
branches:
- main
- ci-test
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
run: |
git init
git remote add origin ${{ gitea.event.repository.clone_url }}
git fetch --depth 1 origin ${{ gitea.ref }}
git checkout FETCH_HEAD
git lfs pull
- name: Setup Python
uses: actions/setup-python@v5.3.0
with:
python-version: '3.11'
- name: Install gdscript-toolkit
run: pip install -r requirements.txt
- name: Run gdLint
run: gdlint src/
- name: Check formatting
run: gdformat -c src

View File

@ -1,54 +0,0 @@
# Based on https://github.com/aBARICHELLO/godot-ci/blob/master/.github/workflows/godot-ci.yml
name: GFOLF - itch.io publish action
run-name: ${{ gitea.actor }} is publishing GFOLF ${{ gitea.ref_name }} to itch.io.
on:
push:
tags:
- v*
env:
GODOT_VERSION: 4.3
EXPORT_NAME: gfolf
PROJECT_PATH: .
jobs:
build:
runs-on: ubuntu-20.04
container:
image: barichello/godot-ci:4.3
strategy:
matrix:
include:
- target: linux64
type: x86_64
- target: osx
type: app
- target: win64
type: exe
env:
BUILD_DIR: build/gfolf_${{ gitea.ref_name }}_${{ matrix.target }}
steps:
- name: Checkout repository
run: |
git init
git remote add origin ${{ gitea.event.repository.clone_url }}
git fetch --depth 1 origin ${{ gitea.ref }}
git checkout FETCH_HEAD
git lfs pull
- name: Reimport assets
# bruh are you fucking kidding me. bruhh
run: |
timeout 10 godot --headless --import || true
godot --headless --import
- name: Build project
run: |
echo "building to $BUILD_DIR"
mkdir -p $BUILD_DIR
godot --headless --export-debug ${{ matrix.target }} $BUILD_DIR/gfolf.${{ matrix.type }}
- name: Publish
run: |
echo "pushing $BUILD_DIR"
butler push $BUILD_DIR tetramorph/gfolf:${{ matrix.target }} --userversion ${{ gitea.ref_name }}
env:
BUTLER_API_KEY: ${{ secrets.BUTLER_API_KEY }}

2
.gitignore vendored
View File

@ -4,7 +4,7 @@
# Godot-specific ignores # Godot-specific ignores
.import/ .import/
export.cfg export.cfg
#export_presets.cfg export_presets.cfg
# Imported translations (automatically generated from CSV files) # Imported translations (automatically generated from CSV files)
*.translation *.translation

View File

@ -1,16 +1,7 @@
# Gfolf2 # Gfolf2
![Lint Status](../../../actions/workflows/lint.yaml/badge.svg)
![Publish Status](../../../actions/workflows/publish.yaml/badge.svg)
GFOLF: Combat Golf Action GFOLF: Combat Golf Action
## About
Go hit your friends with golf balls!
A prototype under active development.
## Development ## Development
see [[DEVELOPMENT.md]] see [[DEVELOPMENT.md]]

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2016-2023 The Godot Engine community
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +0,0 @@
[configuration]
entry_symbol = "git_plugin_init"
compatibility_minimum = "4.1.0"
[libraries]
macos.editor = "macos/libgit_plugin.macos.editor.universal.dylib"
windows.editor.x86_64 = "win64/libgit_plugin.windows.editor.x86_64.dll"
linux.editor.x86_64 = "linux/libgit_plugin.linux.editor.x86_64.so"
linux.editor.arm64 = "linux/libgit_plugin.linux.editor.arm64.so"
linux.editor.rv64 = ""

View File

@ -1,7 +0,0 @@
[plugin]
name="Godot Git Plugin"
description="This plugin lets you interact with Git without leaving the Godot editor. More information can be found at https://github.com/godotengine/godot-git-plugin/wiki"
author="twaritwaikar"
version="v3.1.1"
script="godot-git-plugin.gd"

View File

@ -1,80 +0,0 @@
#! /usr/bin/env bash
## Build & package all project targets for a debug release
PROJECT_NAME="gfolf"
HELPMSG=$(cat <<EOF
debug_build.sh - helper script for automatically packaging project debug builds.
Usage:
./debug_build.sh [options]
Options:
-f, --force Overwrite an existing build for this tag, if there is one.
-h, --help Display this help.
EOF
)
## Parse options
OPTS=`getopt -o hf -- "$@"`
if [ $? -ne 0 ]; then echo "(error) Failed parsing options." >&2; exit 1; fi
eval set -- "$OPTS"
while true; do
case "$1" in
-h | --help ) echo "$HELPMSG"; exit 0;;
-f | --force ) FORCE=1; shift;;
-- ) shift; break;;
* ) break;;
esac
done
VERSION_TAG=`git describe`
BUILD_DIR="data_package/$VERSION_TAG"
if [ -d $BUILD_DIR ] && [ ! $FORCE ]; then
echo "(error) Build directory `$BUILD_DIR` exists! Aborting..."
echo "(HINT: use -f to force overwrite!)"
exit 1
fi
echo "Packaging to: $BUILD_DIR"
## Shared build logic
function build_project {
TARGET="$1"
TARGET_EXT="$3"
TARGET_SUBDIR="$PROJECT_NAME""_$TARGET"
TARGET_DIR="$BUILD_DIR/$TARGET_SUBDIR"
TARGET_OUT="$TARGET_DIR/$PROJECT_NAME.$TARGET_EXT"
echo "Building target '$TARGET' to: $TARGET_OUT"
set -x
rm -rf "$TARGET_DIR"
mkdir -p $TARGET_DIR
godot --headless --export-debug "$TARGET" $TARGET_OUT
set +x
ZIP_OUT="$PROJECT_NAME""_$VERSION_TAG""_$TARGET.7z"
echo "Packaging to: $ZIP_OUT"
# TODO
set -x
(cd $BUILD_DIR && 7z a $ZIP_OUT $TARGET_SUBDIR)
set +x
}
# Build linux
build_project "linux64" "x86_64"
# Build OSX
build_project "osx" "app"
# Build Michaelsoft Binbows
build_project "win64" "exe"

View File

@ -1,354 +0,0 @@
[preset.0]
name="linux64"
platform="Linux"
runnable=true
advanced_options=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter="data_backup/*"
export_path="data_build/linux64/gfolf.x86_64"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
[preset.1]
name="win64"
platform="Windows Desktop"
runnable=true
advanced_options=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter="data_backup/*"
export_path="data_build/win64/gfolf.exe"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name="Rob Kelly"
application/product_name="GFOLF"
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
[preset.2]
name="osx"
platform="macOS"
runnable=true
advanced_options=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter="data_backup/*"
export_path="data_build/osx/gfolf.app"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.2.options]
export/distribution_type=1
binary_format/architecture="universal"
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
application/icon=""
application/icon_interpolation=4
application/bundle_identifier="com.gfolf"
application/signature=""
application/app_category="Games"
application/short_version=""
application/version=""
application/copyright=""
application/copyright_localized={}
application/min_macos_version="10.12"
application/export_angle=0
display/high_res=true
application/additional_plist_content=""
xcode/platform_build="14C18"
xcode/sdk_version="13.1"
xcode/sdk_build="22C55"
xcode/sdk_name="macosx13.1"
xcode/xcode_version="1420"
xcode/xcode_build="14C18"
codesign/codesign=1
codesign/installer_identity=""
codesign/apple_team_id=""
codesign/identity=""
codesign/entitlements/custom_file=""
codesign/entitlements/allow_jit_code_execution=false
codesign/entitlements/allow_unsigned_executable_memory=false
codesign/entitlements/allow_dyld_environment_variables=false
codesign/entitlements/disable_library_validation=true
codesign/entitlements/audio_input=false
codesign/entitlements/camera=false
codesign/entitlements/location=false
codesign/entitlements/address_book=false
codesign/entitlements/calendars=false
codesign/entitlements/photos_library=false
codesign/entitlements/apple_events=false
codesign/entitlements/debugging=false
codesign/entitlements/app_sandbox/enabled=false
codesign/entitlements/app_sandbox/network_server=false
codesign/entitlements/app_sandbox/network_client=false
codesign/entitlements/app_sandbox/device_usb=false
codesign/entitlements/app_sandbox/device_bluetooth=false
codesign/entitlements/app_sandbox/files_downloads=0
codesign/entitlements/app_sandbox/files_pictures=0
codesign/entitlements/app_sandbox/files_music=0
codesign/entitlements/app_sandbox/files_movies=0
codesign/entitlements/app_sandbox/files_user_selected=0
codesign/entitlements/app_sandbox/helper_executables=[]
codesign/custom_options=PackedStringArray()
notarization/notarization=0
privacy/microphone_usage_description=""
privacy/microphone_usage_description_localized={}
privacy/camera_usage_description=""
privacy/camera_usage_description_localized={}
privacy/location_usage_description=""
privacy/location_usage_description_localized={}
privacy/address_book_usage_description=""
privacy/address_book_usage_description_localized={}
privacy/calendar_usage_description=""
privacy/calendar_usage_description_localized={}
privacy/photos_library_usage_description=""
privacy/photos_library_usage_description_localized={}
privacy/desktop_folder_usage_description=""
privacy/desktop_folder_usage_description_localized={}
privacy/documents_folder_usage_description=""
privacy/documents_folder_usage_description_localized={}
privacy/downloads_folder_usage_description=""
privacy/downloads_folder_usage_description_localized={}
privacy/network_volumes_usage_description=""
privacy/network_volumes_usage_description_localized={}
privacy/removable_volumes_usage_description=""
privacy/removable_volumes_usage_description_localized={}
privacy/tracking_enabled=false
privacy/tracking_domains=PackedStringArray()
privacy/collected_data/name/collected=false
privacy/collected_data/name/linked_to_user=false
privacy/collected_data/name/used_for_tracking=false
privacy/collected_data/name/collection_purposes=0
privacy/collected_data/email_address/collected=false
privacy/collected_data/email_address/linked_to_user=false
privacy/collected_data/email_address/used_for_tracking=false
privacy/collected_data/email_address/collection_purposes=0
privacy/collected_data/phone_number/collected=false
privacy/collected_data/phone_number/linked_to_user=false
privacy/collected_data/phone_number/used_for_tracking=false
privacy/collected_data/phone_number/collection_purposes=0
privacy/collected_data/physical_address/collected=false
privacy/collected_data/physical_address/linked_to_user=false
privacy/collected_data/physical_address/used_for_tracking=false
privacy/collected_data/physical_address/collection_purposes=0
privacy/collected_data/other_contact_info/collected=false
privacy/collected_data/other_contact_info/linked_to_user=false
privacy/collected_data/other_contact_info/used_for_tracking=false
privacy/collected_data/other_contact_info/collection_purposes=0
privacy/collected_data/health/collected=false
privacy/collected_data/health/linked_to_user=false
privacy/collected_data/health/used_for_tracking=false
privacy/collected_data/health/collection_purposes=0
privacy/collected_data/fitness/collected=false
privacy/collected_data/fitness/linked_to_user=false
privacy/collected_data/fitness/used_for_tracking=false
privacy/collected_data/fitness/collection_purposes=0
privacy/collected_data/payment_info/collected=false
privacy/collected_data/payment_info/linked_to_user=false
privacy/collected_data/payment_info/used_for_tracking=false
privacy/collected_data/payment_info/collection_purposes=0
privacy/collected_data/credit_info/collected=false
privacy/collected_data/credit_info/linked_to_user=false
privacy/collected_data/credit_info/used_for_tracking=false
privacy/collected_data/credit_info/collection_purposes=0
privacy/collected_data/other_financial_info/collected=false
privacy/collected_data/other_financial_info/linked_to_user=false
privacy/collected_data/other_financial_info/used_for_tracking=false
privacy/collected_data/other_financial_info/collection_purposes=0
privacy/collected_data/precise_location/collected=false
privacy/collected_data/precise_location/linked_to_user=false
privacy/collected_data/precise_location/used_for_tracking=false
privacy/collected_data/precise_location/collection_purposes=0
privacy/collected_data/coarse_location/collected=false
privacy/collected_data/coarse_location/linked_to_user=false
privacy/collected_data/coarse_location/used_for_tracking=false
privacy/collected_data/coarse_location/collection_purposes=0
privacy/collected_data/sensitive_info/collected=false
privacy/collected_data/sensitive_info/linked_to_user=false
privacy/collected_data/sensitive_info/used_for_tracking=false
privacy/collected_data/sensitive_info/collection_purposes=0
privacy/collected_data/contacts/collected=false
privacy/collected_data/contacts/linked_to_user=false
privacy/collected_data/contacts/used_for_tracking=false
privacy/collected_data/contacts/collection_purposes=0
privacy/collected_data/emails_or_text_messages/collected=false
privacy/collected_data/emails_or_text_messages/linked_to_user=false
privacy/collected_data/emails_or_text_messages/used_for_tracking=false
privacy/collected_data/emails_or_text_messages/collection_purposes=0
privacy/collected_data/photos_or_videos/collected=false
privacy/collected_data/photos_or_videos/linked_to_user=false
privacy/collected_data/photos_or_videos/used_for_tracking=false
privacy/collected_data/photos_or_videos/collection_purposes=0
privacy/collected_data/audio_data/collected=false
privacy/collected_data/audio_data/linked_to_user=false
privacy/collected_data/audio_data/used_for_tracking=false
privacy/collected_data/audio_data/collection_purposes=0
privacy/collected_data/gameplay_content/collected=false
privacy/collected_data/gameplay_content/linked_to_user=false
privacy/collected_data/gameplay_content/used_for_tracking=false
privacy/collected_data/gameplay_content/collection_purposes=0
privacy/collected_data/customer_support/collected=false
privacy/collected_data/customer_support/linked_to_user=false
privacy/collected_data/customer_support/used_for_tracking=false
privacy/collected_data/customer_support/collection_purposes=0
privacy/collected_data/other_user_content/collected=false
privacy/collected_data/other_user_content/linked_to_user=false
privacy/collected_data/other_user_content/used_for_tracking=false
privacy/collected_data/other_user_content/collection_purposes=0
privacy/collected_data/browsing_history/collected=false
privacy/collected_data/browsing_history/linked_to_user=false
privacy/collected_data/browsing_history/used_for_tracking=false
privacy/collected_data/browsing_history/collection_purposes=0
privacy/collected_data/search_hhistory/collected=false
privacy/collected_data/search_hhistory/linked_to_user=false
privacy/collected_data/search_hhistory/used_for_tracking=false
privacy/collected_data/search_hhistory/collection_purposes=0
privacy/collected_data/user_id/collected=false
privacy/collected_data/user_id/linked_to_user=false
privacy/collected_data/user_id/used_for_tracking=false
privacy/collected_data/user_id/collection_purposes=0
privacy/collected_data/device_id/collected=false
privacy/collected_data/device_id/linked_to_user=false
privacy/collected_data/device_id/used_for_tracking=false
privacy/collected_data/device_id/collection_purposes=0
privacy/collected_data/purchase_history/collected=false
privacy/collected_data/purchase_history/linked_to_user=false
privacy/collected_data/purchase_history/used_for_tracking=false
privacy/collected_data/purchase_history/collection_purposes=0
privacy/collected_data/product_interaction/collected=false
privacy/collected_data/product_interaction/linked_to_user=false
privacy/collected_data/product_interaction/used_for_tracking=false
privacy/collected_data/product_interaction/collection_purposes=0
privacy/collected_data/advertising_data/collected=false
privacy/collected_data/advertising_data/linked_to_user=false
privacy/collected_data/advertising_data/used_for_tracking=false
privacy/collected_data/advertising_data/collection_purposes=0
privacy/collected_data/other_usage_data/collected=false
privacy/collected_data/other_usage_data/linked_to_user=false
privacy/collected_data/other_usage_data/used_for_tracking=false
privacy/collected_data/other_usage_data/collection_purposes=0
privacy/collected_data/crash_data/collected=false
privacy/collected_data/crash_data/linked_to_user=false
privacy/collected_data/crash_data/used_for_tracking=false
privacy/collected_data/crash_data/collection_purposes=0
privacy/collected_data/performance_data/collected=false
privacy/collected_data/performance_data/linked_to_user=false
privacy/collected_data/performance_data/used_for_tracking=false
privacy/collected_data/performance_data/collection_purposes=0
privacy/collected_data/other_diagnostic_data/collected=false
privacy/collected_data/other_diagnostic_data/linked_to_user=false
privacy/collected_data/other_diagnostic_data/used_for_tracking=false
privacy/collected_data/other_diagnostic_data/collection_purposes=0
privacy/collected_data/environment_scanning/collected=false
privacy/collected_data/environment_scanning/linked_to_user=false
privacy/collected_data/environment_scanning/used_for_tracking=false
privacy/collected_data/environment_scanning/collection_purposes=0
privacy/collected_data/hands/collected=false
privacy/collected_data/hands/linked_to_user=false
privacy/collected_data/hands/used_for_tracking=false
privacy/collected_data/hands/collection_purposes=0
privacy/collected_data/head/collected=false
privacy/collected_data/head/linked_to_user=false
privacy/collected_data/head/used_for_tracking=false
privacy/collected_data/head/collection_purposes=0
privacy/collected_data/other_data_types/collected=false
privacy/collected_data/other_data_types/linked_to_user=false
privacy/collected_data/other_data_types/used_for_tracking=false
privacy/collected_data/other_data_types/collection_purposes=0
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""

View File

@ -442,6 +442,7 @@ spawn_turns = 1
[node name="ExplosionEffect" parent="Course" instance=ExtResource("16_xufks")] [node name="ExplosionEffect" parent="Course" instance=ExtResource("16_xufks")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 274.103, 5.01502, 286.299) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 274.103, 5.01502, 286.299)
visible = false
[node name="CityBuildings" type="Node3D" parent="."] [node name="CityBuildings" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4)

View File

@ -18,7 +18,6 @@ config/use_custom_user_dir=true
config/project_settings_override="user://settings.godot" config/project_settings_override="user://settings.godot"
config/features=PackedStringArray("4.3", "Forward Plus") config/features=PackedStringArray("4.3", "Forward Plus")
run/max_fps=60 run/max_fps=60
run/main_scene.editor="res://src/game/debug_game.tscn"
[autoload] [autoload]
@ -51,8 +50,6 @@ project/assembly_name="Gfolf2"
movie_writer/movie_file="demos/demo.avi" movie_writer/movie_file="demos/demo.avi"
movie_writer/fps=40 movie_writer/fps=40
version_control/plugin_name="GitPlugin"
version_control/autoload_on_startup=true
[editor_plugins] [editor_plugins]
@ -258,7 +255,7 @@ locale/translations=PackedStringArray("res://assets/text/text.en.translation")
3d/sleep_threshold_angular=2.0 3d/sleep_threshold_angular=2.0
jolt_3d/sleep/velocity_threshold=0.1 jolt_3d/sleep/velocity_threshold=0.1
jolt_3d/sleep/time_threshold=1.0 jolt_3d/sleep/time_threshold=1.0
jolt_3d/limits/max_angular_velocity=5700.0 jolt_3d/limits/max_angular_velocity=270000.0
jolt_3d/limits/max_temporary_memory=64 jolt_3d/limits/max_temporary_memory=64
[rendering] [rendering]
@ -269,6 +266,5 @@ lights_and_shadows/directional_shadow/size=16384
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=0 lights_and_shadows/directional_shadow/soft_shadow_filter_quality=0
textures/decals/filter=2 textures/decals/filter=2
anti_aliasing/quality/msaa_3d=3 anti_aliasing/quality/msaa_3d=3
viewport/hdr_2d=true
anti_aliasing/quality/screen_space_aa=1 anti_aliasing/quality/screen_space_aa=1
anti_aliasing/quality/use_debanding=true anti_aliasing/quality/use_debanding=true

View File

@ -1,27 +1,23 @@
[gd_scene load_steps=9 format=3 uid="uid://bptiryfbnautm"] [gd_scene load_steps=9 format=3 uid="uid://bptiryfbnautm"]
[ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_pl6e6"] [ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_pl6e6"]
[ext_resource type="Texture2D" uid="uid://daipuukf6e6bc" path="res://assets/textures/beach_ball/beach_ball.png" id="2_6dwmi"]
[ext_resource type="Script" path="res://src/equipment/balls/beach_ball/beach_ball.gd" id="2_ay78j"] [ext_resource type="Script" path="res://src/equipment/balls/beach_ball/beach_ball.gd" id="2_ay78j"]
[ext_resource type="Texture2D" uid="uid://3oatrxh60ed7" path="res://assets/textures/beach_ball/beach_ball_normal_map.png" id="3_rdlj8"]
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_867vn"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_867vn"]
friction = 0.7 friction = 0.7
bounce = 0.67 bounce = 0.67
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_e5701"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x6y4w"]
load_path = "res://.godot/imported/beach_ball.png-103709b22c99e920077c858fb92c2e27.ctex" albedo_texture = ExtResource("2_6dwmi")
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_oyl4c"]
load_path = "res://.godot/imported/beach_ball_normal_map.png-06c8d20483d619e155834bb8abd74c2f.s3tc.ctex"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cybhj"]
albedo_texture = SubResource("CompressedTexture2D_e5701")
normal_enabled = true normal_enabled = true
normal_scale = 0.5 normal_scale = 0.5
normal_texture = SubResource("CompressedTexture2D_oyl4c") normal_texture = ExtResource("3_rdlj8")
texture_filter = 4 texture_filter = 4
[sub_resource type="SphereMesh" id="SphereMesh_kstjc"] [sub_resource type="SphereMesh" id="SphereMesh_iqcc5"]
material = SubResource("StandardMaterial3D_cybhj") material = SubResource("StandardMaterial3D_x6y4w")
radial_segments = 6 radial_segments = 6
rings = 6 rings = 6
@ -36,11 +32,8 @@ script = ExtResource("2_ay78j")
base_damage = 5.0 base_damage = 5.0
radius = 0.5 radius = 0.5
[node name="BallMesh" parent="MeshRoot" index="0"] [node name="BallMesh" parent="." index="0"]
visible = false mesh = SubResource("SphereMesh_iqcc5")
[node name="BeachBallMesh" type="MeshInstance3D" parent="MeshRoot" index="1"]
mesh = SubResource("SphereMesh_kstjc")
[node name="CollisionShape3D" parent="." index="1"] [node name="CollisionShape3D" parent="." index="1"]
shape = SubResource("SphereShape3D_cvsx2") shape = SubResource("SphereShape3D_cvsx2")

View File

@ -16,11 +16,11 @@ mass = 0.08
physics_material_override = SubResource("PhysicsMaterial_f03f4") physics_material_override = SubResource("PhysicsMaterial_f03f4")
radius = 0.15 radius = 0.15
[node name="BallMesh" parent="MeshRoot" index="0"] [node name="BrickMesh" parent="." index="0" instance=ExtResource("2_ubuxr")]
visible = false
[node name="BrickMesh" parent="MeshRoot" index="1" instance=ExtResource("2_ubuxr")]
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0) transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0)
[node name="CollisionShape3D" parent="." index="1"] [node name="BallMesh" parent="." index="1"]
visible = false
[node name="CollisionShape3D" parent="." index="2"]
shape = SubResource("BoxShape3D_7v3re") shape = SubResource("BoxShape3D_7v3re")

View File

@ -24,10 +24,10 @@ subpixel_positioning = 0
[node name="DebugBall" instance=ExtResource("1_gcsxs")] [node name="DebugBall" instance=ExtResource("1_gcsxs")]
script = ExtResource("2_edye5") script = ExtResource("2_edye5")
[node name="MeshInstance3D" type="MeshInstance3D" parent="MeshRoot/BallMesh" index="0"] [node name="MeshInstance3D" type="MeshInstance3D" parent="BallMesh" index="0"]
mesh = SubResource("QuadMesh_lf5f4") mesh = SubResource("QuadMesh_lf5f4")
[node name="DebugInfo" type="Label3D" parent="MeshRoot/BallMesh" index="1"] [node name="DebugInfo" type="Label3D" parent="BallMesh" index="1"]
unique_name_in_owner = true unique_name_in_owner = true
pixel_size = 0.0005 pixel_size = 0.0005
offset = Vector2(0, -64) offset = Vector2(0, -64)

View File

@ -6,7 +6,6 @@ signal entered_water
## Types of game balls ## Types of game balls
enum Type { enum Type {
DEBUG = -1,
NONE, NONE,
BASIC, BASIC,
PLASMA, PLASMA,
@ -222,14 +221,12 @@ func _on_sleeping_state_changed() -> void:
if sleeping: if sleeping:
# Trigger to reassign on wake # Trigger to reassign on wake
_awake = false _awake = false
linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO
linear_damp = 0.0
angular_damp = 0.0
func _manual_sleep() -> void: func _manual_sleep() -> void:
freeze = true freeze = true
linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO
manual_sleep_timer.start() manual_sleep_timer.start()

View File

@ -35,13 +35,10 @@ script/source = "extends Control
const COLOR_X := Color(1, 0, 0) const COLOR_X := Color(1, 0, 0)
const COLOR_Y := Color(0, 1, 0) const COLOR_Y := Color(0, 1, 0)
const COLOR_Z := Color(0, 0, 1) const COLOR_Z := Color(0, 0, 1)
const COLOR_VELOCITY := Color.ORANGE
const COLOR_MAGNUS := Color.CYAN const COLOR_MAGNUS := Color.CYAN
const VELOCITY_SCALE := 0.5
const MAGNUS_SCALE := 3 const MAGNUS_SCALE := 3
const WIDTH := 4 const WIDTH := 4
@export var draw_velocity := true
@export var draw_reoriented_basis := true @export var draw_reoriented_basis := true
@export var draw_magnus_effect := true @export var draw_magnus_effect := true
@export var draw_gravity_basis := true @export var draw_gravity_basis := true
@ -57,11 +54,6 @@ func _process(_delta: float) -> void:
func _draw() -> void: func _draw() -> void:
var camera := get_viewport().get_camera_3d() var camera := get_viewport().get_camera_3d()
var start := camera.unproject_position(physics_ball.global_position) var start := camera.unproject_position(physics_ball.global_position)
if draw_velocity:
var end := camera.unproject_position(physics_ball.global_position + physics_ball.linear_velocity * VELOCITY_SCALE)
draw_line(start, end, COLOR_VELOCITY, WIDTH)
if draw_reoriented_basis and physics_ball._last_contact_normal != null: if draw_reoriented_basis and physics_ball._last_contact_normal != null:
var basis := physics_ball.get_reoriented_basis() var basis := physics_ball.get_reoriented_basis()
var end_x := camera.unproject_position(physics_ball.global_position + basis.x) var end_x := camera.unproject_position(physics_ball.global_position + basis.x)
@ -182,9 +174,7 @@ angular_damp_mode = 1
script = ExtResource("1_iwh2u") script = ExtResource("1_iwh2u")
terrain_physics = ExtResource("3_3gnie") terrain_physics = ExtResource("3_3gnie")
[node name="MeshRoot" type="Node3D" parent="."] [node name="BallMesh" type="MeshInstance3D" parent="."]
[node name="BallMesh" type="MeshInstance3D" parent="MeshRoot"]
mesh = SubResource("SphereMesh_y0d13") mesh = SubResource("SphereMesh_y0d13")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
@ -200,8 +190,8 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = SubResource("GDScript_p4v7o") script = SubResource("GDScript_p4v7o")
draw_reoriented_basis = false
draw_magnus_effect = false draw_magnus_effect = false
draw_gravity_basis = false
[node name="SFX" type="Node3D" parent="."] [node name="SFX" type="Node3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true

View File

@ -1,17 +1,10 @@
[gd_scene load_steps=14 format=3 uid="uid://dcqxlbsrubapk"] [gd_scene load_steps=13 format=3 uid="uid://dcqxlbsrubapk"]
[ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_yh4fp"] [ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_yh4fp"]
[ext_resource type="Texture2D" uid="uid://c47bkx508biqr" path="res://assets/sprites/particles/plasma.png" id="2_8fdyx"] [ext_resource type="Texture2D" uid="uid://c47bkx508biqr" path="res://assets/sprites/particles/plasma.png" id="2_8fdyx"]
[ext_resource type="Script" path="res://src/equipment/balls/plasma_ball/plasma_ball.gd" id="2_16fhh"] [ext_resource type="Script" path="res://src/equipment/balls/plasma_ball/plasma_ball.gd" id="2_16fhh"]
[ext_resource type="Material" uid="uid://f3qufrkoiv66" path="res://assets/materials/plasma_ball.tres" id="3_6gyuc"] [ext_resource type="Material" uid="uid://f3qufrkoiv66" path="res://assets/materials/plasma_ball.tres" id="3_6gyuc"]
[sub_resource type="SphereMesh" id="SphereMesh_n65ut"]
material = ExtResource("3_6gyuc")
radius = 0.1
height = 0.2
radial_segments = 6
rings = 6
[sub_resource type="Curve" id="Curve_kabhn"] [sub_resource type="Curve" id="Curve_kabhn"]
max_value = 2.0 max_value = 2.0
_data = [Vector2(0, 2), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] _data = [Vector2(0, 2), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
@ -62,13 +55,11 @@ radius = 0.1
script = ExtResource("2_16fhh") script = ExtResource("2_16fhh")
magnetic = true magnetic = true
[node name="BallMesh" parent="MeshRoot" index="0"] [node name="BallMesh" parent="." index="0"]
visible = false transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0)
surface_material_override/0 = ExtResource("3_6gyuc")
[node name="PlasmaBallMesh" type="MeshInstance3D" parent="MeshRoot" index="1"] [node name="PlasmaFireEffect" type="GPUParticles3D" parent="BallMesh" index="0"]
mesh = SubResource("SphereMesh_n65ut")
[node name="PlasmaFireEffect" type="GPUParticles3D" parent="MeshRoot/PlasmaBallMesh" index="0"]
sorting_offset = -1.0 sorting_offset = -1.0
amount = 20 amount = 20
lifetime = 0.6 lifetime = 0.6

View File

@ -1,31 +1,27 @@
[gd_scene load_steps=37 format=4 uid="uid://deuytmxw2lc62"] [gd_scene load_steps=37 format=4 uid="uid://deuytmxw2lc62"]
[ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_14gld"] [ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_14gld"]
[ext_resource type="Texture2D" uid="uid://ckhiq6rfjv63u" path="res://assets/textures/gfolfball/gfolfball.png" id="2_a2gtg"]
[ext_resource type="Script" path="res://src/equipment/balls/power_ball/power_ball.gd" id="2_hy51e"] [ext_resource type="Script" path="res://src/equipment/balls/power_ball/power_ball.gd" id="2_hy51e"]
[ext_resource type="Texture2D" uid="uid://btntjs7mbdigu" path="res://assets/textures/gfolfball/gfolfball_normal.png" id="3_60i75"]
[ext_resource type="PackedScene" uid="uid://dd2nxbfssd4hh" path="res://assets/models/balls/powerball/fireball.gltf" id="5_i8vmm"] [ext_resource type="PackedScene" uid="uid://dd2nxbfssd4hh" path="res://assets/models/balls/powerball/fireball.gltf" id="5_i8vmm"]
[ext_resource type="AudioStream" uid="uid://tqr7u7vb2r0f" path="res://assets/sound/sfx/ball/effects/fireball.wav" id="6_uwolu"] [ext_resource type="AudioStream" uid="uid://tqr7u7vb2r0f" path="res://assets/sound/sfx/ball/effects/fireball.wav" id="6_uwolu"]
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_bmjge"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fcniu"]
load_path = "res://.godot/imported/gfolfball.png-4fde775993c78b86828199273dc9e4be.s3tc.ctex"
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_314t2"]
load_path = "res://.godot/imported/gfolfball_normal.png-d9cc0e700a9a63c2e2cea72beebc6133.s3tc.ctex"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ya45b"]
albedo_color = Color(2, 0.266, 0.266, 1) albedo_color = Color(2, 0.266, 0.266, 1)
albedo_texture = SubResource("CompressedTexture2D_bmjge") albedo_texture = ExtResource("2_a2gtg")
albedo_texture_force_srgb = true albedo_texture_force_srgb = true
metallic = 1.0 metallic = 1.0
roughness = 0.67 roughness = 0.67
normal_enabled = true normal_enabled = true
normal_scale = 0.2 normal_scale = 0.2
normal_texture = SubResource("CompressedTexture2D_314t2") normal_texture = ExtResource("3_60i75")
clearcoat_roughness = 0.0 clearcoat_roughness = 0.0
uv1_scale = Vector3(3, 1.5, 3) uv1_scale = Vector3(3, 1.5, 3)
texture_filter = 4 texture_filter = 4
[sub_resource type="SphereMesh" id="SphereMesh_v4hrl"] [sub_resource type="SphereMesh" id="SphereMesh_0b0i7"]
material = SubResource("StandardMaterial3D_ya45b") material = SubResource("StandardMaterial3D_fcniu")
radius = 0.05 radius = 0.05
height = 0.1 height = 0.1
radial_segments = 6 radial_segments = 6
@ -49,33 +45,6 @@ vertex_color_use_as_albedo = true
albedo_color = Color(2, 1.98431, 1.6, 0.156863) albedo_color = Color(2, 1.98431, 1.6, 0.156863)
albedo_texture = SubResource("GradientTexture2D_ny4ye") albedo_texture = SubResource("GradientTexture2D_ny4ye")
[sub_resource type="Animation" id="Animation_2co83"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("FireballScaleRoot:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("FireballScaleRoot:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_5t74j"] [sub_resource type="Animation" id="Animation_5t74j"]
resource_name = "flicker" resource_name = "flicker"
length = 2.0 length = 2.0
@ -105,6 +74,33 @@ tracks/1/keys = {
"values": [Vector3(0, 0, 0), Vector3(0, 2.0944, 0)] "values": [Vector3(0, 0, 0), Vector3(0, 2.0944, 0)]
} }
[sub_resource type="Animation" id="Animation_2co83"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("FireballScaleRoot:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("FireballScaleRoot:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_hmunj"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_hmunj"]
_data = { _data = {
"RESET": SubResource("Animation_2co83"), "RESET": SubResource("Animation_2co83"),
@ -238,45 +234,6 @@ _surfaces = [{
blend_shape_mode = 0 blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_r0r4b") shadow_mesh = SubResource("ArrayMesh_r0r4b")
[sub_resource type="Animation" id="Animation_6c6mi"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ParticleEffects/PowerParticles:emitting")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("ParticleEffects/SmokeParticles:emitting")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SFX/PowerballSFX:playing")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_7yrvu"] [sub_resource type="Animation" id="Animation_7yrvu"]
resource_name = "activate" resource_name = "activate"
length = 4.8 length = 4.8
@ -309,11 +266,11 @@ tracks/1/keys = {
tracks/2/type = "value" tracks/2/type = "value"
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/path = NodePath("ParticleEffects/SmokeParticles:emitting") tracks/2/path = NodePath("BallMesh/FireballPivot:visible")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0.9, 4.5), "times": PackedFloat32Array(0.8, 4.8),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [true, false] "values": [true, false]
@ -321,16 +278,103 @@ tracks/2/keys = {
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/imported = false tracks/3/imported = false
tracks/3/enabled = true tracks/3/enabled = true
tracks/3/path = NodePath("SFX/PowerballSFX:playing") tracks/3/path = NodePath("BallMesh/FireballPivot/FireballScaleRoot/fireball/Fireball:surface_material_override/0:albedo_color")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0.8, 0.9, 4, 4.8),
"transitions": PackedFloat32Array(1, 1, 1.618, 1),
"update": 0,
"values": [Color(1, 0.993333, 0.8, 0), Color(2, 1.98431, 1.6, 0.156863), Color(2, 1.98431, 1.6, 0.156863), Color(1, 0.993333, 0.8, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("ParticleEffects/SmokeParticles:emitting")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.9, 4.5),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("SFX/PowerballSFX:playing")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.333333), "times": PackedFloat32Array(0.333333),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1),
"update": 1, "update": 1,
"values": [true] "values": [true]
} }
[sub_resource type="Animation" id="Animation_6c6mi"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ParticleEffects/PowerParticles:emitting")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("BallMesh/FireballPivot:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("BallMesh/FireballPivot/FireballScaleRoot/fireball/Fireball:surface_material_override/0:albedo_color")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(2, 1.98431, 1.6, 0.156863)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("ParticleEffects/SmokeParticles:emitting")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("SFX/PowerballSFX:playing")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ospg0"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_ospg0"]
_data = { _data = {
"RESET": SubResource("Animation_6c6mi"), "RESET": SubResource("Animation_6c6mi"),
@ -342,26 +386,23 @@ freeze_mode = 1
script = ExtResource("2_hy51e") script = ExtResource("2_hy51e")
once_per_shot_ability = true once_per_shot_ability = true
[node name="BallMesh" parent="MeshRoot" index="0"] [node name="BallMesh" parent="." index="0"]
visible = false mesh = SubResource("SphereMesh_0b0i7")
[node name="PowerballMesh" type="MeshInstance3D" parent="MeshRoot" index="1"] [node name="FireballPivot" type="Node3D" parent="BallMesh" index="0"]
mesh = SubResource("SphereMesh_v4hrl")
[node name="FireballPivot" type="Node3D" parent="MeshRoot/PowerballMesh" index="0"]
unique_name_in_owner = true unique_name_in_owner = true
visible = false visible = false
[node name="FireballScaleRoot" type="Node3D" parent="MeshRoot/PowerballMesh/FireballPivot" index="0"] [node name="FireballScaleRoot" type="Node3D" parent="BallMesh/FireballPivot" index="0"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)
[node name="fireball" parent="MeshRoot/PowerballMesh/FireballPivot/FireballScaleRoot" index="0" instance=ExtResource("5_i8vmm")] [node name="fireball" parent="BallMesh/FireballPivot/FireballScaleRoot" index="0" instance=ExtResource("5_i8vmm")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.17, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.17, 0)
[node name="Fireball" parent="MeshRoot/PowerballMesh/FireballPivot/FireballScaleRoot/fireball" index="0"] [node name="Fireball" parent="BallMesh/FireballPivot/FireballScaleRoot/fireball" index="0"]
surface_material_override/0 = SubResource("StandardMaterial3D_aqmuo") surface_material_override/0 = SubResource("StandardMaterial3D_aqmuo")
[node name="FireballAnimation" type="AnimationPlayer" parent="MeshRoot/PowerballMesh/FireballPivot" index="1"] [node name="FireballAnimation" type="AnimationPlayer" parent="BallMesh/FireballPivot" index="1"]
libraries = { libraries = {
"": SubResource("AnimationLibrary_hmunj") "": SubResource("AnimationLibrary_hmunj")
} }
@ -397,4 +438,4 @@ libraries = {
"": SubResource("AnimationLibrary_ospg0") "": SubResource("AnimationLibrary_ospg0")
} }
[editable path="MeshRoot/PowerballMesh/FireballPivot/FireballScaleRoot/fireball"] [editable path="BallMesh/FireballPivot/FireballScaleRoot/fireball"]

View File

@ -1,6 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://ces65grpayngu"]
[ext_resource type="PackedScene" uid="uid://cefit4bc8akbb" path="res://src/game/game.tscn" id="1_qa7ks"]
[node name="Game" instance=ExtResource("1_qa7ks")]
start_scene = "res://src/world/world.tscn"

View File

@ -89,12 +89,6 @@ func _finish_scene_load(instance: Node) -> void:
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
# REMOVEME
if Input.is_action_just_pressed("ui_page_up"):
Engine.time_scale *= 2.0
if Input.is_action_just_pressed("ui_page_down"):
Engine.time_scale *= 0.5
if _loading_resources and not loading_screen.visible: if _loading_resources and not loading_screen.visible:
loader_transition.play("fade_in") loader_transition.play("fade_in")

View File

@ -16,7 +16,6 @@ iron = ExtResource("2_piku2")
wedge = ExtResource("5_wm4ae") wedge = ExtResource("5_wm4ae")
putter = ExtResource("3_tytwr") putter = ExtResource("3_tytwr")
_balls = { _balls = {
-1: -1,
1: -1, 1: -1,
2: 5, 2: 5,
3: -1, 3: -1,

View File

@ -6,7 +6,6 @@ signal ball_changed(ball: GameBall)
## Scenes for each type of ball. ## Scenes for each type of ball.
const SCENE_MAP: Dictionary = { const SCENE_MAP: Dictionary = {
GameBall.Type.DEBUG: preload("res://src/equipment/balls/debug_ball/debug_ball.tscn"),
GameBall.Type.BASIC: preload("res://src/equipment/balls/physics_ball/physics_ball.tscn"), GameBall.Type.BASIC: preload("res://src/equipment/balls/physics_ball/physics_ball.tscn"),
GameBall.Type.PLASMA: preload("res://src/equipment/balls/plasma_ball/plasma_ball.tscn"), GameBall.Type.PLASMA: preload("res://src/equipment/balls/plasma_ball/plasma_ball.tscn"),
GameBall.Type.BRICK: preload("res://src/equipment/balls/brick/brick.tscn"), GameBall.Type.BRICK: preload("res://src/equipment/balls/brick/brick.tscn"),

View File

@ -4,7 +4,6 @@ class_name BallSelector extends Control
const TWEEN_TIME := 0.2 const TWEEN_TIME := 0.2
const Y_OFFSET := { const Y_OFFSET := {
GameBall.Type.DEBUG: 0,
GameBall.Type.NONE: 50, GameBall.Type.NONE: 50,
GameBall.Type.BASIC: 18, GameBall.Type.BASIC: 18,
GameBall.Type.PLASMA: -14, GameBall.Type.PLASMA: -14,

View File

@ -9,8 +9,6 @@ func _ready() -> void:
# Fall back on baked version info # Fall back on baked version info
text = Game.settings.version text = Game.settings.version
# Try to expand on version number if running from the editor
if OS.has_feature("editor"):
var output: Array[String] = [] var output: Array[String] = []
var status := OS.execute("git", ["describe", "--always", "HEAD"], output) var status := OS.execute("git", ["describe", "--always", "HEAD"], output)
if status == 0: if status == 0:

View File

@ -1,46 +1,38 @@
[gd_scene load_steps=10 format=3 uid="uid://c6k44l0mnq3o1"] [gd_scene load_steps=8 format=3 uid="uid://c6k44l0mnq3o1"]
[ext_resource type="Curve" uid="uid://b5vptoxuq3dwb" path="res://src/world/effects/explosion/intensity_curve.tres" id="1_rxjwh"]
[sub_resource type="Gradient" id="Gradient_tuj3x"] [sub_resource type="Gradient" id="Gradient_tuj3x"]
offsets = PackedFloat32Array(0, 0.148459, 0.29972, 0.840336) offsets = PackedFloat32Array(0, 0.0850112, 0.693512, 0.760626)
colors = PackedColorArray(1, 0.0623333, 0.03, 1, 1, 1, 1, 1, 1, 1, 0.3, 1, 0.08736, 0.09, 0.0702, 1) colors = PackedColorArray(3, 3, 3, 1, 2, 2, 0.6, 1, 1, 0.0623333, 0.03, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_d6li3"] [sub_resource type="GradientTexture1D" id="GradientTexture1D_d6li3"]
gradient = SubResource("Gradient_tuj3x") gradient = SubResource("Gradient_tuj3x")
[sub_resource type="Curve" id="Curve_kl03u"] [sub_resource type="Curve" id="Curve_oo5uu"]
max_value = 3.0 _data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.0842105, 1), 0.0, 0.0, 0, 0, Vector2(0.246316, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.145, 3), 0.0, 0.0, 0, 0, Vector2(0.566, 3), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 4 point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_auv7e"]
curve = SubResource("Curve_kl03u")
[sub_resource type="CurveTexture" id="CurveTexture_quj8c"] [sub_resource type="CurveTexture" id="CurveTexture_quj8c"]
curve = ExtResource("1_rxjwh") curve = SubResource("Curve_oo5uu")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_hjkte"] [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_hjkte"]
lifetime_randomness = 0.6 lifetime_randomness = 0.52
emission_shape = 3
emission_box_extents = Vector3(1, 1, 1)
direction = Vector3(0, 0, 0) direction = Vector3(0, 0, 0)
spread = 180.0 spread = 180.0
initial_velocity_min = -4.0 initial_velocity_min = 4.0
initial_velocity_max = 4.0 initial_velocity_max = 4.0
gravity = Vector3(0, 0, 0) gravity = Vector3(0, 0, 0)
scale_min = 0.75 scale_min = 0.3
scale_max = 1.5
scale_curve = SubResource("CurveTexture_quj8c") scale_curve = SubResource("CurveTexture_quj8c")
color_ramp = SubResource("GradientTexture1D_d6li3") color_ramp = SubResource("GradientTexture1D_d6li3")
emission_curve = SubResource("CurveTexture_auv7e")
turbulence_enabled = true turbulence_enabled = true
turbulence_noise_strength = 0.2
turbulence_noise_scale = 4.0
turbulence_noise_speed = Vector3(1, 1, 1) turbulence_noise_speed = Vector3(1, 1, 1)
turbulence_noise_speed_random = 1.41
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fliyi"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fliyi"]
shading_mode = 0
vertex_color_use_as_albedo = true vertex_color_use_as_albedo = true
disable_receive_shadows = true emission_enabled = true
billboard_mode = 3 billboard_mode = 3
billboard_keep_scale = true billboard_keep_scale = true
particles_anim_h_frames = 1 particles_anim_h_frames = 1
@ -53,9 +45,7 @@ radius = 1.0
height = 2.0 height = 2.0
[node name="ExplosionEffect" type="GPUParticles3D"] [node name="ExplosionEffect" type="GPUParticles3D"]
emitting = false lifetime = 0.7
amount = 48
one_shot = true
explosiveness = 0.92 explosiveness = 0.92
fixed_fps = 60 fixed_fps = 60
interpolate = false interpolate = false

View File

@ -1,5 +0,0 @@
[gd_resource type="Curve" format=3 uid="uid://b5vptoxuq3dwb"]
[resource]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.145455, 1), 0.0, 0.0, 0, 0, Vector2(0.566234, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 4

View File

@ -2,8 +2,8 @@
[ext_resource type="Script" path="res://src/world/world.gd" id="1_ybjyx"] [ext_resource type="Script" path="res://src/world/world.gd" id="1_ybjyx"]
[ext_resource type="Script" path="res://src/player/world_player.gd" id="2_e743i"] [ext_resource type="Script" path="res://src/player/world_player.gd" id="2_e743i"]
[ext_resource type="PackedScene" uid="uid://cvs546kk7t7aw" path="res://levels/terrain_test/terrain_test.tscn" id="2_hbpi4"]
[ext_resource type="Script" path="res://src/ui/world_ui.gd" id="2_imewa"] [ext_resource type="Script" path="res://src/ui/world_ui.gd" id="2_imewa"]
[ext_resource type="PackedScene" uid="uid://bm2o3mex10v11" path="res://levels/debug_level/debug_level.tscn" id="2_qsk3q"]
[ext_resource type="Resource" uid="uid://crock3revdn73" path="res://src/player/debug_player.tres" id="3_pyw81"] [ext_resource type="Resource" uid="uid://crock3revdn73" path="res://src/player/debug_player.tres" id="3_pyw81"]
[ext_resource type="Script" path="res://src/world/play_manager/practice_manager.gd" id="5_yk526"] [ext_resource type="Script" path="res://src/world/play_manager/practice_manager.gd" id="5_yk526"]
[ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="7_0gd42"] [ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="7_0gd42"]
@ -155,7 +155,7 @@ _data = {
[node name="World" type="Node" groups=["WorldGroup"]] [node name="World" type="Node" groups=["WorldGroup"]]
script = ExtResource("1_ybjyx") script = ExtResource("1_ybjyx")
initial_level = ExtResource("2_qsk3q") initial_level = ExtResource("2_hbpi4")
manager = SubResource("Resource_hpydy") manager = SubResource("Resource_hpydy")
[node name="Level" type="Node3D" parent="."] [node name="Level" type="Node3D" parent="."]