improve basic tool system
This commit is contained in:
parent
3458a6e29b
commit
abfeb2982c
2 changed files with 22 additions and 13 deletions
|
@ -1,20 +1,17 @@
|
||||||
import { World, useEvent } from "@rbxts/matter"
|
import { World, useEvent } from "@rbxts/matter"
|
||||||
|
import { Players } from "@rbxts/services"
|
||||||
import { PlayerCharacter } from "ReplicatedStorage/ecs/components"
|
import { PlayerCharacter } from "ReplicatedStorage/ecs/components"
|
||||||
import { getEvent } from "ReplicatedStorage/remotes"
|
import { getEvent } from "ReplicatedStorage/remotes"
|
||||||
|
|
||||||
function toolHandler(world: World): void {
|
function toolHandler(world: World): void {
|
||||||
const activateToolEvent = getEvent("activateToolEvent")
|
const activateToolEvent = getEvent("activateToolEvent")
|
||||||
const equipToolEvent = getEvent("equipToolEvent")
|
|
||||||
|
|
||||||
for (const [_, character] of world.query(PlayerCharacter)) {
|
for (const [_, character] of world.query(PlayerCharacter)) {
|
||||||
if (!character.equippedTool) continue
|
if (!character.equippedTool) continue
|
||||||
|
|
||||||
for (const [_] of useEvent(character.equippedTool, "Activated")) {
|
for (const [_] of useEvent(character.equippedTool, "Activated")) {
|
||||||
activateToolEvent.FireServer()
|
print(Players.LocalPlayer.GetMouse())
|
||||||
}
|
activateToolEvent.FireServer(Players.LocalPlayer.GetMouse().Hit.Position)
|
||||||
|
|
||||||
for (const [_, mouse] of useEvent(character.equippedTool, "Equipped")) {
|
|
||||||
equipToolEvent.FireServer(mouse)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,33 @@
|
||||||
|
import Make from "@rbxts/make"
|
||||||
import { World, useEvent } from "@rbxts/matter"
|
import { World, useEvent } from "@rbxts/matter"
|
||||||
|
import { Workspace } from "@rbxts/services"
|
||||||
import { PlayerCharacter } from "ReplicatedStorage/ecs/components"
|
import { PlayerCharacter } from "ReplicatedStorage/ecs/components"
|
||||||
import { ServerState } from "ReplicatedStorage/ecs/state"
|
import { ServerState } from "ReplicatedStorage/ecs/state"
|
||||||
import { getEvent } from "ReplicatedStorage/remotes"
|
import { getEvent } from "ReplicatedStorage/remotes"
|
||||||
|
|
||||||
function toolHandler(world: World, state: ServerState): void {
|
function toolHandler(world: World, state: ServerState): void {
|
||||||
const activateToolEvent = getEvent("activateToolEvent")
|
const activateToolEvent = getEvent("activateToolEvent")
|
||||||
const equipToolEvent = getEvent("equipToolEvent")
|
|
||||||
|
|
||||||
for (const [_, character] of world.query(PlayerCharacter)) {
|
for (const [_, character] of world.query(PlayerCharacter)) {
|
||||||
for (const [_, player] of useEvent(activateToolEvent, "OnServerEvent")) {
|
if (!character.equippedTool) continue
|
||||||
state.logger.Info("{@player} activated the tool {@tool}", player, character.equippedTool)
|
|
||||||
if (character.player !== player) continue
|
for (const [_, player, untypedHitPos] of useEvent(activateToolEvent, "OnServerEvent")) {
|
||||||
}
|
const hitPos = untypedHitPos as Vector3
|
||||||
|
|
||||||
for (const [_, player] of useEvent(equipToolEvent, "OnServerEvent")) {
|
|
||||||
state.logger.Info("{@player} equipped the tool {@tool}", player, character.equippedTool)
|
|
||||||
if (character.player !== player) continue
|
if (character.player !== player) continue
|
||||||
|
state.logger.Info("{@player} activated the tool {@tool}", player, character.equippedTool)
|
||||||
|
|
||||||
|
// TODO: Fix this logic!
|
||||||
|
// We don't want a bunch of if statements...
|
||||||
|
|
||||||
|
// example tool - spawns a part at cursor pos
|
||||||
|
if (character.equippedTool.Name === "example tool") {
|
||||||
|
Make("Part", {
|
||||||
|
Position: hitPos,
|
||||||
|
Anchored: false,
|
||||||
|
Parent: Workspace
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue