Skip to content

Commit

Permalink
Site changes [skip-ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
defold-services committed Oct 15, 2024
1 parent f9c93a9 commit d7767e5
Show file tree
Hide file tree
Showing 13 changed files with 333 additions and 238 deletions.
480 changes: 243 additions & 237 deletions _data/examplesindex.json

Large diffs are not rendered by default.

36 changes: 36 additions & 0 deletions _includes/examples/gui/healthbar/healthbar_gui_script.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
-- < 1 >
local min_size = 48
local max_size = 235 - min_size

-- < 2 >
local function set_healthbar(healthbar_node_name, health_percentage)
local healthbar_node = gui.get_node(healthbar_node_name) -- < 3 >
local healthbar_size = gui.get_size(healthbar_node) -- < 4 >
healthbar_size.x = health_percentage * max_size + min_size -- < 5 >
gui.set_size(healthbar_node, healthbar_size) -- < 6 >
end

function init(self)
-- < 7 >
set_healthbar("left_health", 1.0)
set_healthbar("right_health", 1.0)
set_healthbar("center_health", 1.0)
end

function on_message(self, message_id, message, sender)
-- < 8 >
if message_id == hash("update_health") then
set_healthbar(message.health_name, message.health_percentage)
end
end

--[[
1. Define minimum and maximum size of GUI healthbar (only width is changed).
2. Define a local helper function to update healthbar.
3. Get node of given name passed as "healthbar_node_name" and store it in local variable "healthbar_node".
4. Get size of this node and store it in local variable "healthbar_size".
5. Change size along X axis (width) of the node to given "health_percentage" scaled times "max_size" and added to "min_size", so that it can be no smaller than it.
6. Set the newly updated size of the node.
7. In init function, for each of three defined nodes set initial health_percentage to 1.0 (100%).
8. In on_message function, if the GUI component receives message "update_health" call helper function to update given health bar.
]]
25 changes: 25 additions & 0 deletions _includes/examples/gui/healthbar/healthbar_script.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
function init(self)
-- < 1 >
self.player_one_health = 1.0
self.player_two_health = 1.0
self.game_boss_health = 1.0

-- < 2 >
timer.delay(1, true, function()
-- < 3 >
self.player_one_health = math.max(self.player_one_health - 0.1, 0)
self.player_two_health = math.max(self.player_two_health - 0.1, 0)
self.game_boss_health = math.max(self.game_boss_health - 0.1, 0)
-- < 4 >
msg.post("hud", "update_health", { health_name = "left_health", health_percentage = self.player_one_health })
msg.post("hud", "update_health", { health_name = "right_health", health_percentage = self.player_two_health })
msg.post("hud", "update_health", { health_name = "center_health", health_percentage = self.game_boss_health })
end)
end

--[[
1. Set initial health percentage (1.0 = 100%, 0.0 = 0%).
2. Start a timer that will call every 1 second (first argument) repeateadly (second argument being true) a callback function (3rd argument)
3. Reduce each health percentage by 0.1 (10%), but no less than 0 (using math.max to select `0`, if `self.player_one_health - 0.1` is less than `0`).
4. Send messages to hud (gui component) to "updated_health" with health name and percentage to be set in GUI script.
]]
2 changes: 1 addition & 1 deletion examples/archive/archive_files.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"content":[{"name":"game.projectc","size":3945,"pieces":[{"name":"game0.projectc","offset":0}]},{"name":"game.arci","size":47808,"pieces":[{"name":"game0.arci","offset":0}]},{"name":"game.arcd","size":4143914,"pieces":[{"name":"game0.arcd","offset":0},{"name":"game1.arcd","offset":2097152}]},{"name":"game.dmanifest","size":52152,"pieces":[{"name":"game0.dmanifest","offset":0}]},{"name":"game.public.der","size":162,"pieces":[{"name":"game0.public.der","offset":0}]}],"total_size":4247981}
{"content":[{"name":"game.projectc","size":3945,"pieces":[{"name":"game0.projectc","offset":0}]},{"name":"game.arci","size":48368,"pieces":[{"name":"game0.arci","offset":0}]},{"name":"game.arcd","size":4149590,"pieces":[{"name":"game0.arcd","offset":0},{"name":"game1.arcd","offset":2097152}]},{"name":"game.dmanifest","size":52751,"pieces":[{"name":"game0.dmanifest","offset":0}]},{"name":"game.public.der","size":162,"pieces":[{"name":"game0.public.der","offset":0}]}],"total_size":4254816}
Binary file modified examples/archive/game0.arcd
Binary file not shown.
Binary file modified examples/archive/game0.arci
Binary file not shown.
Binary file modified examples/archive/game0.dmanifest
Binary file not shown.
Binary file modified examples/archive/game0.public.der
Binary file not shown.
Binary file modified examples/archive/game1.arcd
Binary file not shown.
28 changes: 28 additions & 0 deletions examples/gui/healthbar/healthbar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
layout: example
permalink: examples/gui/healthbar/
collection: gui/healthbar
title: Health Bar
brief: This example demonstrates how to add different health bars.
scripts: healthbar.script, healthbar.gui_script
---

Overview : Example shows 3 pairs of nodes each forming a "health bar" with different pivots.

Create a pair of Box nodes, so that child node is smaller than the parent:
![healthbar](healthbar.png)
![healthbar_inner](healthbar_inner.png)

Example contains 3 such pairs - each with different `Pivot` and `X Anchor` settings for inner health bars:

- `West` + `Left`
- `East` + `Right`
- `Center` + `None`

Health is indicated as the size on X Axis of the inner node, so define what can be maximum and minimum width here.

Create a collection with such GUI component and add it and your game object with script to collection:

![healthbar_collection](healthbar_collection.png)

Example shows communication between `controller#main` script component (`healthbar.script`) and `hud#main` gui component with gui_script (`healthbar.gui_script`).
Binary file added examples/gui/healthbar/healthbar.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/gui/healthbar/healthbar_collection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/gui/healthbar/healthbar_inner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit d7767e5

Please sign in to comment.