mirror of
https://github.com/GarrettGunnell/God-Machine.git
synced 2025-10-19 14:43:16 +00:00
Implement procedural color palettes
This commit is contained in:
parent
c97592398b
commit
c2cae886a8
4 changed files with 71 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=67 format=4 uid="uid://cfsgy7huubpok"]
|
||||
[gd_scene load_steps=68 format=4 uid="uid://cfsgy7huubpok"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://drfxlavovcgta" path="res://Assets/Scripts/automata_compositor_effect.gd" id="1_vlji8"]
|
||||
[ext_resource type="Script" uid="uid://bjuwof03jt0ds" path="res://Assets/Scripts/draw_world_compositor_effect.gd" id="2_ttgh6"]
|
||||
|
@ -47,6 +47,7 @@
|
|||
[ext_resource type="Script" uid="uid://bgihnnx0yu44j" path="res://Assets/Scripts/UI/load_button.gd" id="43_3awfk"]
|
||||
[ext_resource type="Script" uid="uid://crq07m1x6lflo" path="res://Assets/Scripts/UI/previous_preset_button.gd" id="44_m1eu0"]
|
||||
[ext_resource type="Script" uid="uid://8a62se707mjg" path="res://Assets/Scripts/UI/next_preset_button.gd" id="44_vjyh1"]
|
||||
[ext_resource type="Script" uid="uid://bnh23rc2uvlr2" path="res://Assets/Scripts/color_palette.gd" id="48_mje4x"]
|
||||
[ext_resource type="AudioStream" uid="uid://cnbqleijqb7hy" path="res://Assets/Audio/bgm5.mp3" id="48_sitla"]
|
||||
[ext_resource type="AudioStream" uid="uid://26ko7au7t7ed" path="res://Assets/Audio/left click 2.mp3" id="49_csh63"]
|
||||
[ext_resource type="Script" uid="uid://c813c5ts2xint" path="res://Assets/Scripts/UI/left_click_audio.gd" id="50_nj45y"]
|
||||
|
@ -1128,6 +1129,7 @@ anchor_bottom = 1.0
|
|||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("48_mje4x")
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("48_sitla")
|
||||
|
|
65
Assets/Scripts/color_palette.gd
Normal file
65
Assets/Scripts/color_palette.gd
Normal file
|
@ -0,0 +1,65 @@
|
|||
extends ColorRect
|
||||
|
||||
var rng = RandomNumberGenerator.new()
|
||||
|
||||
func _ready() -> void:
|
||||
GameMaster.seed_changed.connect(new_palette)
|
||||
|
||||
new_palette()
|
||||
|
||||
|
||||
func new_palette() -> void:
|
||||
rng.set_seed(hash(GameMaster.get_seed()))
|
||||
|
||||
var palette_type = rng.randi_range(0, 2)
|
||||
|
||||
if palette_type == 0: monochromatic()
|
||||
if palette_type == 1: complementary()
|
||||
if palette_type == 2: tertiary()
|
||||
|
||||
|
||||
func monochromatic() -> void:
|
||||
var hue = rng.randf()
|
||||
|
||||
var color1 = Color.from_ok_hsl(hue, rng.randf_range(0.1, 0.9), rng.randf_range(0.05, 0.4))
|
||||
var color2 = Color.from_ok_hsl(hue, rng.randf_range(0.1, 0.9), rng.randf_range(0.5, 0.9))
|
||||
|
||||
material.set_shader_parameter("first_color", Vector3(color1.r, color1.g, color1.b))
|
||||
material.set_shader_parameter("second_color", Vector3(color2.r, color2.g, color2.b))
|
||||
|
||||
|
||||
|
||||
|
||||
func complementary() -> void:
|
||||
var hue = rng.randf()
|
||||
|
||||
var color1 = Color.from_ok_hsl(hue, rng.randf_range(0.1, 0.9), rng.randf_range(0.05, 0.4))
|
||||
var color2 = Color.from_ok_hsl(hue, rng.randf_range(0.1, 0.9), rng.randf_range(0.5, 0.9))
|
||||
|
||||
var which_color_is_complemented = rng.randf()
|
||||
|
||||
if (which_color_is_complemented > 0.5): color1.ok_hsl_h = color1.ok_hsl_h + 0.5
|
||||
else: color2.ok_hsl_h = color2.ok_hsl_h + 0.5
|
||||
|
||||
|
||||
material.set_shader_parameter("first_color", Vector3(color1.r, color1.g, color1.b))
|
||||
material.set_shader_parameter("second_color", Vector3(color2.r, color2.g, color2.b))
|
||||
|
||||
|
||||
func tertiary() -> void:
|
||||
var hue = rng.randf()
|
||||
|
||||
var color1 = Color.from_ok_hsl(hue, rng.randf_range(0.1, 0.9), rng.randf_range(0.05, 0.4))
|
||||
var color2 = Color.from_ok_hsl(hue, rng.randf_range(0.1, 0.9), rng.randf_range(0.5, 0.9))
|
||||
|
||||
var which_color_is_tertiary = rng.randf()
|
||||
var color_distance = rng.randf_range(0.05, 0.25)
|
||||
var direction = rng.randf()
|
||||
if (direction < 0.5): color_distance *= -1.0
|
||||
|
||||
if (which_color_is_tertiary > 0.5): color1.ok_hsl_h = color1.ok_hsl_h + color_distance
|
||||
else: color2.ok_hsl_h = color2.ok_hsl_h + color_distance
|
||||
|
||||
|
||||
material.set_shader_parameter("first_color", Vector3(color1.r, color1.g, color1.b))
|
||||
material.set_shader_parameter("second_color", Vector3(color2.r, color2.g, color2.b))
|
1
Assets/Scripts/color_palette.gd.uid
Normal file
1
Assets/Scripts/color_palette.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bnh23rc2uvlr2
|
|
@ -5,6 +5,7 @@ signal loaded_preset
|
|||
signal increment_input
|
||||
signal decrement_input
|
||||
signal hover_input
|
||||
signal seed_changed
|
||||
|
||||
var automaton_cache = Array()
|
||||
|
||||
|
@ -99,6 +100,7 @@ func finish_reseed() -> void:
|
|||
|
||||
func set_seed(new_seed : int) -> void:
|
||||
current_seed = new_seed
|
||||
seed_changed.emit()
|
||||
|
||||
|
||||
func get_seed() -> int:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue