diff --git a/src/ReplicatedStorage/ecs/systems/client/toolHandler.ts b/src/ReplicatedStorage/ecs/systems/client/toolHandler.ts index 305fcd8..8f8bac2 100644 --- a/src/ReplicatedStorage/ecs/systems/client/toolHandler.ts +++ b/src/ReplicatedStorage/ecs/systems/client/toolHandler.ts @@ -1,20 +1,17 @@ import { World, useEvent } from "@rbxts/matter" +import { Players } from "@rbxts/services" import { PlayerCharacter } from "ReplicatedStorage/ecs/components" import { getEvent } from "ReplicatedStorage/remotes" function toolHandler(world: World): void { const activateToolEvent = getEvent("activateToolEvent") - const equipToolEvent = getEvent("equipToolEvent") for (const [_, character] of world.query(PlayerCharacter)) { if (!character.equippedTool) continue for (const [_] of useEvent(character.equippedTool, "Activated")) { - activateToolEvent.FireServer() - } - - for (const [_, mouse] of useEvent(character.equippedTool, "Equipped")) { - equipToolEvent.FireServer(mouse) + print(Players.LocalPlayer.GetMouse()) + activateToolEvent.FireServer(Players.LocalPlayer.GetMouse().Hit.Position) } } } diff --git a/src/ServerScriptService/ecs/systems/server/toolHandler.ts b/src/ServerScriptService/ecs/systems/server/toolHandler.ts index 7ec6803..33704f1 100644 --- a/src/ServerScriptService/ecs/systems/server/toolHandler.ts +++ b/src/ServerScriptService/ecs/systems/server/toolHandler.ts @@ -1,21 +1,33 @@ +import Make from "@rbxts/make" import { World, useEvent } from "@rbxts/matter" +import { Workspace } from "@rbxts/services" import { PlayerCharacter } from "ReplicatedStorage/ecs/components" import { ServerState } from "ReplicatedStorage/ecs/state" import { getEvent } from "ReplicatedStorage/remotes" function toolHandler(world: World, state: ServerState): void { const activateToolEvent = getEvent("activateToolEvent") - const equipToolEvent = getEvent("equipToolEvent") for (const [_, character] of world.query(PlayerCharacter)) { - for (const [_, player] of useEvent(activateToolEvent, "OnServerEvent")) { - state.logger.Info("{@player} activated the tool {@tool}", player, character.equippedTool) - if (character.player !== player) continue - } + if (!character.equippedTool) 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 + 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 + }) + } } } }