summaryrefslogtreecommitdiffhomepage
path: root/samples/07_advanced_rendering/10_blend_modes/app
diff options
context:
space:
mode:
author_Tradam <[email protected]>2021-12-16 19:22:26 -0500
committerGitHub <[email protected]>2021-12-16 19:22:26 -0500
commit5954b9beb4d4a3b4f248d72d1851195f030558a8 (patch)
treefecd8aa840a25afdb502915b0fdb4d03b7ed339a /samples/07_advanced_rendering/10_blend_modes/app
parent2f845281f133849256b57bb08fd3e9ae57600784 (diff)
parenteaa29e72939f5edf61735ccbb73c36ee89369f65 (diff)
downloaddragonruby-game-toolkit-contrib-master.tar.gz
dragonruby-game-toolkit-contrib-master.zip
Merge branch 'DragonRuby:master' into masterHEADmaster
Diffstat (limited to 'samples/07_advanced_rendering/10_blend_modes/app')
-rw-r--r--samples/07_advanced_rendering/10_blend_modes/app/main.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/samples/07_advanced_rendering/10_blend_modes/app/main.rb b/samples/07_advanced_rendering/10_blend_modes/app/main.rb
new file mode 100644
index 0000000..7e28ba8
--- /dev/null
+++ b/samples/07_advanced_rendering/10_blend_modes/app/main.rb
@@ -0,0 +1,49 @@
+$gtk.reset
+
+def draw_blendmode args, mode
+ w = 160
+ h = w
+ args.state.x += (1280-w) / (args.state.blendmodes.length + 1)
+ x = args.state.x
+ y = (720 - h) / 2
+ s = 'sprites/blue-feathered.png'
+ args.outputs.sprites << { blendmode_enum: mode.value, x: x, y: y, w: w, h: h, path: s }
+ args.outputs.labels << [x + (w/2), y, mode.name.to_s, 1, 1, 255, 255, 255]
+end
+
+def tick args
+
+ # Different blend modes do different things, depending on what they
+ # blend against (in this case, the pixels of the background color).
+ args.state.bg_element ||= 1
+ args.state.bg_color ||= 255
+ args.state.bg_color_direction ||= 1
+ bg_r = (args.state.bg_element == 1) ? args.state.bg_color : 0
+ bg_g = (args.state.bg_element == 2) ? args.state.bg_color : 0
+ bg_b = (args.state.bg_element == 3) ? args.state.bg_color : 0
+ args.state.bg_color += args.state.bg_color_direction
+ if (args.state.bg_color_direction > 0) && (args.state.bg_color >= 255)
+ args.state.bg_color_direction = -1
+ args.state.bg_color = 255
+ elsif (args.state.bg_color_direction < 0) && (args.state.bg_color <= 0)
+ args.state.bg_color_direction = 1
+ args.state.bg_color = 0
+ args.state.bg_element += 1
+ if args.state.bg_element >= 4
+ args.state.bg_element = 1
+ end
+ end
+
+ args.outputs.background_color = [ bg_r, bg_g, bg_b, 255 ]
+
+ args.state.blendmodes ||= [
+ { name: :none, value: 0 },
+ { name: :blend, value: 1 },
+ { name: :add, value: 2 },
+ { name: :mod, value: 3 },
+ { name: :mul, value: 4 }
+ ]
+
+ args.state.x = 0 # reset this, draw_blendmode will increment it.
+ args.state.blendmodes.each { |blendmode| draw_blendmode args, blendmode }
+end