fix resetting, add comments

This commit is contained in:
Reid 2023-08-12 02:21:43 -07:00
parent e7acbd72fa
commit a8b217d45e
6 changed files with 46 additions and 4 deletions

View file

@ -26,6 +26,5 @@ An in-dev game that I plan to make a shooter game out of.
# Fixes # Fixes
### High Priority ### High Priority
* Currently, when resetting, sometimes your health goes back up. This is due to the reconciliation of health. Simply put, your health is not being set to zero inside of our entity component system, due to us not having the reset event currently like that. See it here: [StarterGui.SetCore](https://create.roblox.com/docs/reference/engine/classes/StarterGui#SetCore) It uses BindableEvents.
#### Medium priority #### Medium priority
##### Low priority ##### Low priority

View file

@ -0,0 +1,18 @@
import { World, useEvent } from "@rbxts/matter"
import { StarterGui } from "@rbxts/services"
import { clientState } from "ReplicatedStorage/ecs/state"
import { getEvent } from "ReplicatedStorage/remotes"
const resetButtonCallback = new Instance("BindableEvent")
StarterGui.SetCore("ResetButtonCallback", resetButtonCallback)
getEvent("resetButton")
function customReset(_: World, _client: clientState): void {
const resetButtonEvent = getEvent("resetButton")
for (const [,] of useEvent(resetButtonCallback, "Event")) {
resetButtonEvent.FireServer()
}
}
export = customReset

View file

@ -0,0 +1,23 @@
import { World, useEvent } from "@rbxts/matter"
import { Health, Model, PlayerCharacter } from "ReplicatedStorage/ecs/components"
import { getEvent } from "ReplicatedStorage/remotes"
getEvent("resetButton")
function customReset(world: World): void {
const resetButtonEvent = getEvent("resetButton")
for (const [, player] of useEvent(resetButtonEvent, "OnServerEvent")) {
for (const [id, playerCharacter, _model, health] of world.query(PlayerCharacter, Model, Health)) {
if (playerCharacter.player !== player) continue
world.insert(
id,
health.patch({
health: 0,
regeneration: 0
})
)
}
}
}
export = customReset

View file

@ -2,7 +2,7 @@ import { useThrottle, World } from "@rbxts/matter"
import { Health } from "ReplicatedStorage/ecs/components" import { Health } from "ReplicatedStorage/ecs/components"
/** /**
* @todo * Health components regenerate health based on the regeneration value.
*/ */
function healthRegenerates(world: World): void { function healthRegenerates(world: World): void {
for (const [id, health] of world.query(Health)) { for (const [id, health] of world.query(Health)) {

View file

@ -4,7 +4,7 @@ import { Health, Model, PlayerCharacter } from "ReplicatedStorage/ecs/components
import { CharacterRigR6 } from "@rbxts/character-promise" import { CharacterRigR6 } from "@rbxts/character-promise"
/** /**
* @todo * Player characters are marked with the "PlayerCharacter" component, "Health" component, and "Model" component.
*/ */
function playersArePlayerCharacters(world: World): void { function playersArePlayerCharacters(world: World): void {
Players.GetPlayers().forEach((player, _) => { Players.GetPlayers().forEach((player, _) => {

View file

@ -2,7 +2,9 @@ import { World, useEvent } from "@rbxts/matter"
import { Model, PlayerCharacter } from "ReplicatedStorage/ecs/components" import { Model, PlayerCharacter } from "ReplicatedStorage/ecs/components"
/** /**
* @todo * When players die, disconnect all Motor6D instances.
*
* The Motor6D instances are replaced with BallSocketContraints.
*/ */
function playersRagdollOnDeath(world: World): void { function playersRagdollOnDeath(world: World): void {
for (const [_, playerCharacter, model] of world.query(PlayerCharacter, Model)) { for (const [_, playerCharacter, model] of world.query(PlayerCharacter, Model)) {