forked from team-sg/hero-mark-2
palette textures! working with palettes will be a breezegit status!
This commit is contained in:
parent
7974ac26c4
commit
f1ad9d5825
10 changed files with 65 additions and 8 deletions
BIN
graphics/player/palettes/default.tex
Normal file
BIN
graphics/player/palettes/default.tex
Normal file
Binary file not shown.
|
@ -60,7 +60,7 @@ func refresh():
|
||||||
$"%DeathCounter".text = "%04d" % file.get_total_deaths()
|
$"%DeathCounter".text = "%04d" % file.get_total_deaths()
|
||||||
$"%TimeCounter".text = "%02d:%02d" % [file.play_time / 3600.0, fmod(file.play_time / 60.0, 60.0)]
|
$"%TimeCounter".text = "%02d:%02d" % [file.play_time / 3600.0, fmod(file.play_time / 60.0, 60.0)]
|
||||||
$"%Difficulty".text = Game.DIFFICULTY_NAMES[file.difficulty]
|
$"%Difficulty".text = Game.DIFFICULTY_NAMES[file.difficulty]
|
||||||
var palette = load("res://graphics/player/palettes/%s.png" % file.palette)
|
var palette = load("res://graphics/player/palettes/%s.tex" % file.palette)
|
||||||
$"%Palette".material.set_shader_param("palette", palette)
|
$"%Palette".material.set_shader_param("palette", palette)
|
||||||
else:
|
else:
|
||||||
file = null
|
file = null
|
||||||
|
|
|
@ -29,7 +29,7 @@ onready var shards_block: HBoxContainer = $"%ShardsBlock"
|
||||||
onready var shards_needed: Label = $"%ShardsNeeded"
|
onready var shards_needed: Label = $"%ShardsNeeded"
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var palette = load("res://graphics/player/palettes/%s.png" % Game.current_palette)
|
var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette)
|
||||||
player_sprite.material.set_shader_param("palette", palette)
|
player_sprite.material.set_shader_param("palette", palette)
|
||||||
$ShardCount.text = "%02d" % Save.current_file.get_total_shards()
|
$ShardCount.text = "%02d" % Save.current_file.get_total_shards()
|
||||||
Fade.fade_in(Options.transition_speed_secs)
|
Fade.fade_in(Options.transition_speed_secs)
|
||||||
|
|
|
@ -2,5 +2,5 @@ extends HBoxContainer
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var palette = load("res://graphics/player/palettes/%s.png" % Game.current_palette)
|
var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette)
|
||||||
$Panel/TextureRect.material.set_shader_param("palette", palette)
|
$Panel/TextureRect.material.set_shader_param("palette", palette)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
extends TextureRect
|
extends TextureRect
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
var palette = load("res://graphics/player/palettes/%s.png" % Game.current_palette)
|
var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette)
|
||||||
material.set_shader_param("palette", palette)
|
material.set_shader_param("palette", palette)
|
||||||
|
|
|
@ -70,7 +70,7 @@ onready var hitbox: Area2D = $"%Hitbox"
|
||||||
# OVERRIDES #
|
# OVERRIDES #
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
#set palette
|
#set palette
|
||||||
var palette = load("res://graphics/player/palettes/%s.png" % Game.current_palette)
|
var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette)
|
||||||
sprite.material.set_shader_param("palette", palette)
|
sprite.material.set_shader_param("palette", palette)
|
||||||
$"%CFox".material.set_shader_param("palette", palette)
|
$"%CFox".material.set_shader_param("palette", palette)
|
||||||
$"%DissolveParticles".material.set_shader_param("palette", palette)
|
$"%DissolveParticles".material.set_shader_param("palette", palette)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=42 format=2]
|
[gd_scene load_steps=43 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://objects/player/player.gd" type="Script" id=1]
|
[ext_resource path="res://objects/player/player.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://graphics/player/palettes/default.png" type="Texture" id=2]
|
[ext_resource path="res://graphics/player/palettes/default.png" type="Texture" id=2]
|
||||||
|
@ -11,6 +11,7 @@
|
||||||
[ext_resource path="res://addons/godot_state_charts/compound_state.gd" type="Script" id=9]
|
[ext_resource path="res://addons/godot_state_charts/compound_state.gd" type="Script" id=9]
|
||||||
[ext_resource path="res://addons/godot_state_charts/transition.gd" type="Script" id=10]
|
[ext_resource path="res://addons/godot_state_charts/transition.gd" type="Script" id=10]
|
||||||
[ext_resource path="res://addons/godot_state_charts/atomic_state.gd" type="Script" id=11]
|
[ext_resource path="res://addons/godot_state_charts/atomic_state.gd" type="Script" id=11]
|
||||||
|
[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=12]
|
||||||
[ext_resource path="res://graphics/player/sg.png" type="Texture" id=14]
|
[ext_resource path="res://graphics/player/sg.png" type="Texture" id=14]
|
||||||
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=18]
|
[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=18]
|
||||||
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=25]
|
[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=25]
|
||||||
|
@ -19,7 +20,7 @@
|
||||||
shader = ExtResource( 3 )
|
shader = ExtResource( 3 )
|
||||||
shader_param/border_color = Color( 0, 0, 0, 1 )
|
shader_param/border_color = Color( 0, 0, 0, 1 )
|
||||||
shader_param/border_corners = true
|
shader_param/border_corners = true
|
||||||
shader_param/palette = ExtResource( 2 )
|
shader_param/palette = ExtResource( 12 )
|
||||||
|
|
||||||
[sub_resource type="Shader" id=26]
|
[sub_resource type="Shader" id=26]
|
||||||
code = "// Recolor
|
code = "// Recolor
|
||||||
|
|
|
@ -34,6 +34,11 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://menus/main_menu.gd"
|
"path": "res://menus/main_menu.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "ImageTexture",
|
||||||
|
"class": "PaletteTexture",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://scripts/palette_texture.gd"
|
||||||
|
}, {
|
||||||
"base": "State",
|
"base": "State",
|
||||||
"class": "ParallelState",
|
"class": "ParallelState",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
|
@ -70,6 +75,7 @@ _global_script_class_icons={
|
||||||
"CompoundState": "res://addons/godot_state_charts/compound_state.svg",
|
"CompoundState": "res://addons/godot_state_charts/compound_state.svg",
|
||||||
"LevelEntry": "",
|
"LevelEntry": "",
|
||||||
"MainMenu": "",
|
"MainMenu": "",
|
||||||
|
"PaletteTexture": "",
|
||||||
"ParallelState": "res://addons/godot_state_charts/parallel_state.svg",
|
"ParallelState": "res://addons/godot_state_charts/parallel_state.svg",
|
||||||
"RadioButtons": "",
|
"RadioButtons": "",
|
||||||
"State": "res://addons/godot_state_charts/state.svg",
|
"State": "res://addons/godot_state_charts/state.svg",
|
||||||
|
|
50
scripts/palette_texture.gd
Normal file
50
scripts/palette_texture.gd
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
tool
|
||||||
|
class_name PaletteTexture
|
||||||
|
extends ImageTexture
|
||||||
|
|
||||||
|
|
||||||
|
export (Array, Color) var colors := [] setget _set_colors
|
||||||
|
export var convert_from: Texture = null setget _convert_from
|
||||||
|
|
||||||
|
|
||||||
|
var _data := PoolByteArray()
|
||||||
|
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
colors.resize(16)
|
||||||
|
colors.fill(Color.white)
|
||||||
|
_data.resize(16 * 4)
|
||||||
|
_data.fill(255)
|
||||||
|
_update_image()
|
||||||
|
|
||||||
|
|
||||||
|
func _set_colors(new_array: Array) -> void:
|
||||||
|
if new_array.size() == 16:
|
||||||
|
colors = new_array
|
||||||
|
_update_image()
|
||||||
|
|
||||||
|
|
||||||
|
func _update_image() -> void:
|
||||||
|
for i in colors.size():
|
||||||
|
var c: Color = colors[i]
|
||||||
|
var j: int = i * 4
|
||||||
|
_data[j] = c.r8
|
||||||
|
_data[j + 1] = c.g8
|
||||||
|
_data[j + 2] = c.b8
|
||||||
|
_data[j + 3] = c.a8
|
||||||
|
|
||||||
|
var image := Image.new()
|
||||||
|
image.create_from_data(4, 4, false, Image.FORMAT_RGBA8, _data)
|
||||||
|
create_from_image(image, 0)
|
||||||
|
|
||||||
|
|
||||||
|
func _convert_from(texture: Texture) -> void:
|
||||||
|
if texture != null and texture.get_size() == Vector2(4.0, 4.0):
|
||||||
|
var image := texture.get_data()
|
||||||
|
image.lock()
|
||||||
|
for x in 4:
|
||||||
|
for y in 4:
|
||||||
|
colors[x + (y * 4)] = image.get_pixel(x, y)
|
||||||
|
print(colors[x + (y * 4)])
|
||||||
|
image.unlock()
|
||||||
|
_update_image()
|
|
@ -1,5 +1,5 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
var palette = load("res://graphics/player/palettes/%s.png" % Game.current_palette)
|
var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette)
|
||||||
material.set_shader_param("palette", palette)
|
material.set_shader_param("palette", palette)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue