Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

push recipie and contributions to live #37

Merged
merged 5 commits into from
Sep 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions docs/cck/components/Game Instance Controller.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Game Instance Controller <div class="whitelisted" data-list="W"></div>
Adding this component enables team based gamemodes in your world.

### Teams
Teams can have their own properties and events per Team.
+ **Team Properties**
- **Index:** The order the Team is in the list of other Teams.
- **Name:** The Name of the Team.
- **Color:** The Color associated with the Team.
- **Player Limit** The maximum amount of players that can be present in the Team.
- **Starting Score:** This is the score the Team will have at the start of a game.
+ **Team Events**
- Team Events are Hooks that are controlled by the Team.
* **Team Joined Event:** This is triggered when the player joins the Team.
* **Team Leave Event:** This is triggered when the player leaves the Team.
* **Team Win Round Event:** This is triggered when the Team wins the current round of a game.
* **Team Win Game Event:** This is triggered when the Team wins the game.
* **Team Member Ready Event:** This is triggered when the player marks themselves as ready.
* **Team Member Un Ready Event:** This is triggered when the player marks themselves as not ready, after marking themselves as ready.

### Properties
These are properties that control all teams and game conditions.

+ **Balance Team Join** With this enabled, players joining will be assigned to the team of the least amount of players.
+ **Auto Balance Teams** With this enabled, players my get reassigned to a different team when new players join; regardless of their initial selection.
+ **Ready Percentage** The percentage of players that need to be marked as ready before the ready timer is activated.
+ **Ready Timer** After the ready percentage has been met, this is the time in seconds before the game starts.
+ **Game Controller Type**
- **Default** Score based gamemode
- **Combat System** Elimination based gamemode
+ **Game Type**
- **Single** Each game is one round, as of game version 2024r176, Round Start and Round End Events will trigger alongside Game Start and Game End Events.
- **Rounds** Each game will consist of the amount of rounds specified in the Rounds To Win property.
+ **Rounds To Win** The amount of rounds a Team needs to win to end the game.
+ **End Condition**
- **Score** When a Team accumulates a score defined by the End Score property, the game or round will end.
- **Time** When the time in seconds defined in the End Time property is reached, the game or round will end.
- **Time or Score** When the Time or Score end condition is met, the game or round will end.
- **Elimination** A combat system only Game Type end condition. When only 1 team is remaining, the game or round will end.
- **Time or Elimination** A combat system only Game Type end condition. When the Time or Elimination end condition is met, the game or round will end.
+ **End Score** The score required to win a round or game.
+ **End Time** The amount of time in seconds before a round or game ends.

### Events
These are hooks that are controlled by the Game Instance Controller.

+ **Game Started Event** This will trigger when the game starts.
+ **Round Started Event** This will trigger when the round starts.
+ **Game Ended Event** This will trigger when the game ends.
+ **Round Ended Event** This will trigger when the round ends.

### Methods
These are methods that can be accessed using Custom Triggers in the Interactable component. These methods are important in order to use the Game Instance Controller.
+ **EnemyScore** Set the enemy score in relation to the local player.
+ **JoinTeamAutoBalance** Joins the Team with the lowest amount of players.
+ **LeaveTeam** Leaves the current team the player is in.
+ **OwnScore** Sets the score of the local player's Team.
+ **StartGame** Will start the game regardless of the Ready Percentage or Ready Time properties.
+ **ToggleReady** Will mark the local player as ready or not ready.
+ **TryJoinTeam** Will try to join the team that is defined by the Index Team Property.
3 changes: 2 additions & 1 deletion docs/cck/lua/recipes/.pages
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ nav:
- index.md
- getting-users.md
- listen-game-events.md
- getting-components.md
- getting-components.md
- outputting-text.md
4 changes: 1 addition & 3 deletions docs/cck/lua/recipes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@
* [Getting Users in an Instance](./getting-users.md)
* [Listening to Game Events](./listen-game-events.md)
* [Getting Components](./getting-components.md)

<!-- * [Getting Props in an Instance](./getting-props.md) -->
<!-- * [Hooking Into CVR Events](./game-events.md) -->
* [Outputting Text](./outputting-text.md)
54 changes: 54 additions & 0 deletions docs/cck/lua/recipes/outputting-text.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# How to output text into UI

## TextMeshPro (version without canvas)

```lua
UnityEngine = require("UnityEngine")
TextMeshPro = require("TextMeshPro")

function Start()
-- Bind the gameObject and use GetComponent
local textGameObject = BoundObjects.textGameObject
print(textGameObject)
local textComponentFromGameObject = textGameObject.GetComponent("TMPro.TextMeshPro")
print(textComponentFromGameObject)

-- Change text
textComponentFromGameObject.text = "TextMeshPro - Success"
end
```

## TextMeshPro (version with canvas)

```lua
UnityEngine = require("UnityEngine")
TextMeshPro = require("TextMeshPro")

function Start()
-- Bind the gameObject and use GetComponent
local textGameObject = BoundObjects.textGameObject
print(textGameObject)
local textComponentFromGameObject = textGameObject.GetComponent("TMPro.TextMeshProUGUI")
print(textComponentFromGameObject)

-- Change text
textComponentFromGameObject.text = "TextMeshProUGUI - Success"
end
```

## Legacy Unity UI Text (not recommended)

```lua
UnityEngine = require("UnityEngine")

function Start()
-- Bind the gameObject and use GetComponent
local textGameObject = BoundObjects.textGameObject
print(textGameObject)
local textComponentFromGameObject = textGameObject.GetComponent("UnityEngine.UI.Text")
print(textComponentFromGameObject)

-- Change text
textComponentFromGameObject.text = "Text (Legacy) - Success"
end
```