From 4ad85497c982953a0af68c4bd60cea67acea925b Mon Sep 17 00:00:00 2001 From: James Date: Sun, 3 Dec 2023 15:49:59 +0000 Subject: [PATCH] initial alpha7 --- .gitattributes | 2 + .gitignore | 3 + Body2D.gd | 32 +++ Button.gd | 17 ++ Debug.gd | 16 ++ Pool.gd | 56 ++++ TimerSS.gd | 22 ++ crosshair.tscn | 9 + export_presets.cfg | 344 +++++++++++++++++++++++ images/CrossHair.gif | Bin 0 -> 157 bytes images/crosshair.png | Bin 0 -> 12039 bytes images/crosshair.png.import | 34 +++ images/icon.svg | 1 + images/icon.svg.import | 37 +++ images/player.png | Bin 0 -> 4096 bytes images/player.png.import | 34 +++ images/pool.png | Bin 0 -> 5828 bytes images/pool.png.import | 34 +++ map_select.tscn | 92 ++++++ maps/cmy.tscn | 29 ++ maps/rare.tscn | 29 ++ maps/rgb.tscn | 29 ++ maps/rgb_sections.tscn | 541 ++++++++++++++++++++++++++++++++++++ maps/seperated.tscn | 53 ++++ maps/source.tscn | 13 + physics/no_friction.tres | 5 + player.gd | 114 ++++++++ player.tscn | 26 ++ pool.tscn | 27 ++ project.godot | 74 +++++ sim.gd | 83 ++++++ sim.tscn | 25 ++ 32 files changed, 1781 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Body2D.gd create mode 100644 Button.gd create mode 100644 Debug.gd create mode 100644 Pool.gd create mode 100644 TimerSS.gd create mode 100644 crosshair.tscn create mode 100644 export_presets.cfg create mode 100644 images/CrossHair.gif create mode 100644 images/crosshair.png create mode 100644 images/crosshair.png.import create mode 100644 images/icon.svg create mode 100644 images/icon.svg.import create mode 100644 images/player.png create mode 100644 images/player.png.import create mode 100644 images/pool.png create mode 100644 images/pool.png.import create mode 100644 map_select.tscn create mode 100644 maps/cmy.tscn create mode 100644 maps/rare.tscn create mode 100644 maps/rgb.tscn create mode 100644 maps/rgb_sections.tscn create mode 100644 maps/seperated.tscn create mode 100644 maps/source.tscn create mode 100644 physics/no_friction.tres create mode 100644 player.gd create mode 100644 player.tscn create mode 100644 pool.tscn create mode 100644 project.godot create mode 100644 sim.gd create mode 100644 sim.tscn diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ecbb5c7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +bin/ diff --git a/Body2D.gd b/Body2D.gd new file mode 100644 index 0000000..6fb8a9d --- /dev/null +++ b/Body2D.gd @@ -0,0 +1,32 @@ +extends RigidBody2D + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass + +func _integrate_forces(state: PhysicsDirectBodyState2D): + var contact_count = state.get_contact_count() + #print("aa") + for i in range(contact_count): + #print("bb") + var collider_object = state.get_contact_collider_object(i) + if collider_object and collider_object.get_parent() is Player: + handle_player_collision(collider_object.get_parent()) + if collider_object and collider_object.get_parent() is Pool: + handle_pool_collision(collider_object.get_parent()) + +func handle_player_collision(player: Player): + if $"..".is_carrying() and player.is_carrying(): + $"..".doubledrop(player) + $"..".drop() + player.drop() + + +func handle_pool_collision(pool: Pool): + $"..".exchange_with(pool) diff --git a/Button.gd b/Button.gd new file mode 100644 index 0000000..e79627f --- /dev/null +++ b/Button.gd @@ -0,0 +1,17 @@ +extends Button + +@export_file var map_path + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func _on_pressed(): + if map_path==null: + return + + var sim = load("res://sim.tscn").instantiate() + var map = load(map_path).instantiate() + sim.add_child(map) + get_tree().root.add_child(sim) + get_node("/root/MapSelect").queue_free() diff --git a/Debug.gd b/Debug.gd new file mode 100644 index 0000000..d64bcca --- /dev/null +++ b/Debug.gd @@ -0,0 +1,16 @@ +extends Label + +var elapsed_time = 0.0 # Initialize a variable to keep track of elapsed time + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func _process(delta): + elapsed_time += delta # Increment the elapsed time by the frame's delta time + var hours = int(elapsed_time / 3600) + var minutes = int(elapsed_time / 60) % 60 + var seconds = int(elapsed_time) % 60 + var time_string = "%02d:%02d:%02d" % [hours, minutes, seconds] # Format time as H:M:S + var fps = Engine.get_frames_per_second() # Get the current FPS + text = time_string+" "+str(fps) + " fps" # Combine FPS and runtime into one string diff --git a/Pool.gd b/Pool.gd new file mode 100644 index 0000000..b2213f8 --- /dev/null +++ b/Pool.gd @@ -0,0 +1,56 @@ +@tool +class_name Pool +extends Node2D + +@export var mana_r: int = 10 +@export var mana_g: int = 10 +@export var mana_b: int = 10 + +# Called when the node enters the scene tree for the first time. +func _ready(): + update() + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + if $StaticBody2D/CollisionShape2D2.disabled: + # Prepare the shape query parameters + var query_parameters = PhysicsShapeQueryParameters2D.new() + var collision_shape = $StaticBody2D/CollisionShape2D2.shape + query_parameters.set_shape(collision_shape) + query_parameters.set_transform(Transform2D(0, position)) + query_parameters.set_collision_mask(1) #1=players + + # Get the Physics2DDirectSpaceState for collision checking + var space_state = get_world_2d().direct_space_state + + # Check for collision + var collision_results = space_state.intersect_shape(query_parameters) + if collision_results.size() == 0: + $StaticBody2D/CollisionShape2D2.disabled=false + + update() + pass + +func update(): + var max_value: float = max(mana_r, mana_g, mana_b) + if max_value==0: + self.queue_free() + return; + var normalized_r = mana_r / max_value + var normalized_g = mana_g / max_value + var normalized_b = mana_b / max_value + + self.modulate = Color(normalized_r, normalized_g, normalized_b) + var s=sqrt((mana_r+mana_g+mana_b)/1000.0) + self.scale=Vector2(s,s) + self.queue_redraw() # Request to redraw the node + + +func _on_decay_timer_timeout(): + var new_player = load("res://player.tscn").instantiate() + + new_player.get_node("CharacterBody2D").velocity = Vector2.from_angle(randf_range(0, 2 * PI)) * 100 + new_player.get_node("CharacterBody2D").position = position + new_player.get_node("CharacterBody2D").exchange_with(self) + new_player.get_node("CharacterBody2D/CollisionShape2D").disabled=true + get_tree().root.add_child(new_player) diff --git a/TimerSS.gd b/TimerSS.gd new file mode 100644 index 0000000..f0622e4 --- /dev/null +++ b/TimerSS.gd @@ -0,0 +1,22 @@ +extends Timer + +var base_path = "user://screenshots/" +var session_path = "" +var count = 0 + +func _ready(): + # Generate a timestamp + var datetime = Time.get_datetime_dict_from_system() + var timestamp = "%d-%02d-%02d_%02d-%02d-%02d" % [datetime.year, datetime.month, datetime.day, datetime.hour, datetime.minute, datetime.second] + + # Create a session-specific subdirectory + session_path = base_path + timestamp + "/" + if not DirAccess.dir_exists_absolute(session_path): + DirAccess.make_dir_recursive_absolute(session_path) + + _on_timeout() + +func _on_timeout(): + var image = get_viewport().get_texture().get_image() + image.save_png(session_path + ("%010d"%count) + ".png") + count += 1 diff --git a/crosshair.tscn b/crosshair.tscn new file mode 100644 index 0000000..cfead64 --- /dev/null +++ b/crosshair.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://ckv0180aypptf"] + +[ext_resource type="Texture2D" uid="uid://1g54esg7yd35" path="res://images/crosshair.png" id="1_7vv1r"] + +[node name="Crosshair" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.05, 0.05) +texture = ExtResource("1_7vv1r") diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..61f890f --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,344 @@ +[preset.0] + +name="Android" +platform="Android" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +gradle_build/use_gradle_build=false +gradle_build/export_format=0 +gradle_build/min_sdk="" +gradle_build/target_sdk="" +architectures/armeabi-v7a=false +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +version/code=1 +version/name="1.0" +package/unique_name="org.godotengine.$genname" +package/name="" +package/signed=true +package/app_category=2 +package/retain_data_on_uninstall=false +package/exclude_from_recents=false +launcher_icons/main_192x192="" +launcher_icons/adaptive_foreground_432x432="" +launcher_icons/adaptive_background_432x432="" +graphics/opengl_debug=false +xr_features/xr_mode=0 +xr_features/hand_tracking=0 +xr_features/hand_tracking_frequency=0 +xr_features/passthrough=0 +screen/immersive_mode=true +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +user_data_backup/allow=false +command_line/extra_args="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +permissions/custom_permissions=PackedStringArray() +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/manage_external_storage=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false + +[preset.1] + +name="Linux/X11" +platform="Linux/X11" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="bin/alpha6.x86_64" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=0 +binary_format/embed_pck=false +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=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.2] + +name="macOS" +platform="macOS" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[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="" +application/signature="" +application/app_category="Games" +application/short_version="1.0" +application/version="1.0" +application/copyright="" +application/copyright_localized={} +application/min_macos_version="10.12" +display/high_res=true +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=false +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/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={} +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}\"" diff --git a/images/CrossHair.gif b/images/CrossHair.gif new file mode 100644 index 0000000000000000000000000000000000000000..70e95410823f7fcf177145a04de3878c26929190 GIT binary patch literal 157 zcmZ?wbhEHbRA5kG5M*Fb{K>+|z`(?y!vF*zvBrP@|AW|Iz?3(of8}Xe{@E^pHo@t; zOmfyIa&K>4;56-0=cZRXcIlfg{a|xy$G=RS`yVf69XPx)!zHR`;j>FjonF?Lw3cQ0 zCM{N4{=xH4S#r__=bxV!7Os`j+Ox|rC+C?=$CHc4KYrVtDZJte)1iqET}wN5tO#IW Gum%9+q(Wu@ literal 0 HcmV?d00001 diff --git a/images/crosshair.png b/images/crosshair.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0c4085d456d1572b939623d1b96afafed33c3b GIT binary patch literal 12039 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 J#ZpEA{{sswkz)V= literal 0 HcmV?d00001 diff --git a/images/crosshair.png.import b/images/crosshair.png.import new file mode 100644 index 0000000..cacb30d --- /dev/null +++ b/images/crosshair.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1g54esg7yd35" +path="res://.godot/imported/crosshair.png-158d3b9e1b8650994ded77b707486b76.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://images/crosshair.png" +dest_files=["res://.godot/imported/crosshair.png-158d3b9e1b8650994ded77b707486b76.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/images/icon.svg b/images/icon.svg new file mode 100644 index 0000000..b370ceb --- /dev/null +++ b/images/icon.svg @@ -0,0 +1 @@ + diff --git a/images/icon.svg.import b/images/icon.svg.import new file mode 100644 index 0000000..755daba --- /dev/null +++ b/images/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ufohlmafhm3" +path="res://.godot/imported/icon.svg-40d11009b022ae281956dc38e8f8d85e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://images/icon.svg" +dest_files=["res://.godot/imported/icon.svg-40d11009b022ae281956dc38e8f8d85e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/images/player.png b/images/player.png new file mode 100644 index 0000000000000000000000000000000000000000..e39107358343f848a06b3c0e26c5a45db79f350e GIT binary patch literal 4096 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 and pool.mana_r >= pool.mana_g and pool.mana_r >= pool.mana_b: + pool.mana_r -= 1 + carrying_r=1 + elif pool.mana_g>0 and pool.mana_g >= pool.mana_r and pool.mana_g >= pool.mana_b: + pool.mana_g -= 1 + carrying_g=1 + elif pool.mana_b>0: + pool.mana_b -= 1 + carrying_b=1 + update() + +func update(): + var max_value = max(carrying_r, carrying_g, carrying_b) + if max_value==0: + self.modulate = Color(1, 1, 1, 1) + return + var normalized_r = carrying_r / max_value + var normalized_g = carrying_g / max_value + var normalized_b = carrying_b / max_value + self.modulate = Color(normalized_r, normalized_g, normalized_b) + +func is_carrying(): + return (carrying_r+carrying_g+carrying_b)>0 diff --git a/player.tscn b/player.tscn new file mode 100644 index 0000000..a878ebb --- /dev/null +++ b/player.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=6 format=3 uid="uid://bu6pswk806qv6"] + +[ext_resource type="Script" path="res://player.gd" id="1_kr26t"] +[ext_resource type="PhysicsMaterial" uid="uid://6vo1o6je0duv" path="res://physics/no_friction.tres" id="2_5k2ia"] +[ext_resource type="Texture2D" uid="uid://clyn507dro67" path="res://images/player.png" id="2_cxs7h"] +[ext_resource type="Script" path="res://Body2D.gd" id="3_rse87"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_yt706"] + +[node name="Player" type="Node2D"] +script = ExtResource("1_kr26t") + +[node name="Body2D" type="RigidBody2D" parent="."] +collision_mask = 7 +physics_material_override = ExtResource("2_5k2ia") +max_contacts_reported = 10 +contact_monitor = true +script = ExtResource("3_rse87") + +[node name="Mono-polygon" type="Sprite2D" parent="Body2D"] +scale = Vector2(0.1, 0.1) +texture = ExtResource("2_cxs7h") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Body2D"] +scale = Vector2(0.8, 0.8) +shape = SubResource("CircleShape2D_yt706") diff --git a/pool.tscn b/pool.tscn new file mode 100644 index 0000000..aaecbe9 --- /dev/null +++ b/pool.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=4 format=3 uid="uid://bpd3l1iyb13h2"] + +[ext_resource type="Script" path="res://Pool.gd" id="1_tvic3"] +[ext_resource type="Texture2D" uid="uid://b5bytgmfmgd2d" path="res://images/pool.png" id="2_45evg"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_fmfn8"] + +[node name="Pool" type="Node2D"] +modulate = Color(0.3, 1, 1, 1) +scale = Vector2(0.151658, 0.151658) +script = ExtResource("1_tvic3") +mana_r = 3 + +[node name="StaticBody2D" type="StaticBody2D" parent="."] +collision_layer = 2 +collision_mask = 3 + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +scale = Vector2(8.5, 8.5) +shape = SubResource("CircleShape2D_fmfn8") + +[node name="Icon" type="Sprite2D" parent="StaticBody2D"] +texture = ExtResource("2_45evg") + +[node name="DecayTimer" type="Timer" parent="StaticBody2D"] + +[connection signal="timeout" from="StaticBody2D/DecayTimer" to="." method="_on_decay_timer_timeout"] diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..7f2ce72 --- /dev/null +++ b/project.godot @@ -0,0 +1,74 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="RGB Physics Life" +run/main_scene="res://map_select.tscn" +config/features=PackedStringArray("4.1", "Mobile") +config/icon="res://images/icon.svg" + +[display] + +window/size/resizable=false + +[input] + +move_up={ +"deadzone": 0.5, +"events": [null, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +take={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +click={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(151, 21),"global_position":Vector2(155, 64),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +escape={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} + +[layer_names] + +2d_physics/layer_1="Players" +2d_physics/layer_2="Pools" +2d_physics/layer_3="Walls" + +[physics] + +2d/default_gravity=0.0 +2d/default_linear_damp=0.0 +2d/default_angular_damp=0.0 + +[rendering] + +renderer/rendering_method="mobile" diff --git a/sim.gd b/sim.gd new file mode 100644 index 0000000..f7a36fd --- /dev/null +++ b/sim.gd @@ -0,0 +1,83 @@ +extends Node2D + +var spawn_position=Vector2(100,100); + +# Called when the node enters the scene tree for the first time. +func _ready(): + setup_edge_collisions() + +func setup_edge_collisions(): + var screen_size = get_viewport_rect().size + + # Create a StaticBody2D for each edge + for i in range(4): + var body = StaticBody2D.new() + body.collision_layer=4 #walls + add_child(body) + + var shape = CollisionShape2D.new() + body.add_child(shape) + + var rect_shape = RectangleShape2D.new() + shape.shape = rect_shape + + # Adjust size and position based on the edge + match i: + 0: # Top + rect_shape.extents = Vector2(screen_size.x / 2, 10) + body.position = Vector2(screen_size.x / 2, 0) + 1: # Bottom + rect_shape.extents = Vector2(screen_size.x / 2, 10) + body.position = Vector2(screen_size.x / 2, screen_size.y) + 2: # Left + rect_shape.extents = Vector2(10, screen_size.y / 2) + body.position = Vector2(0, screen_size.y / 2) + 3: # Right + rect_shape.extents = Vector2(10, screen_size.y / 2) + body.position = Vector2(screen_size.x, screen_size.y / 2) + +func _input(event): + if event.is_action_pressed("escape"): + get_tree().change_scene_to_file("res://map_select.tscn") + get_node("/root/Sim").queue_free() + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: + spawn_position=event.position + spawn() + $Timer.stop() + if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_RIGHT: + spawn_position=event.position + $Timer.start() + +func _on_timer_timeout(): + spawn() + +func spawn(): + var new_player = load("res://player.tscn").instantiate() + new_player.get_node("Body2D").position = spawn_position + + new_player.get_node("Body2D").apply_impulse(Vector2.from_angle(randf_range(0, 2 * PI)) * 100) + + # Prepare the shape query parameters + var query_parameters = PhysicsShapeQueryParameters2D.new() + var collision_shape = new_player.get_node("Body2D/CollisionShape2D").shape + query_parameters.set_shape(collision_shape) + query_parameters.set_transform(Transform2D(0, spawn_position)) + query_parameters.set_collision_mask(1) + + # Get the Physics2DDirectSpaceState for collision checking + var space_state = get_world_2d().direct_space_state + + # Check for collision + var collision_results = space_state.intersect_shape(query_parameters) + if collision_results.size() == 0: + # No collision, safe to add child + add_child(new_player) + else: + for collision in collision_results: + #print + if collision.collider.get_parent() is Pool: + collision.collider.get_parent()._on_decay_timer_timeout() + return + var marker = load("res://crosshair.tscn").instantiate() + marker.position = new_player.get_node("Body2D").position + add_child(marker) diff --git a/sim.tscn b/sim.tscn new file mode 100644 index 0000000..38d7224 --- /dev/null +++ b/sim.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3 uid="uid://bpy475nyq5ea1"] + +[ext_resource type="Script" path="res://sim.gd" id="1_wbm7g"] +[ext_resource type="Script" path="res://Debug.gd" id="2_iqnjl"] +[ext_resource type="Script" path="res://TimerSS.gd" id="3_7b3mn"] + +[node name="Sim" type="Node2D"] +script = ExtResource("1_wbm7g") + +[node name="Debug" type="Label" parent="."] +offset_right = 67.0 +offset_bottom = 26.0 +text = "debug" +script = ExtResource("2_iqnjl") + +[node name="Timer" type="Timer" parent="."] +wait_time = 0.3 + +[node name="TimerSS" type="Timer" parent="."] +wait_time = 60.0 +autostart = true +script = ExtResource("3_7b3mn") + +[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] +[connection signal="timeout" from="TimerSS" to="TimerSS" method="_on_timeout"]