add character to clientstate and add sprint system

This commit is contained in:
Reid 2023-07-20 15:09:09 -07:00
parent d5b77a9044
commit d83ddf4e53
3 changed files with 41 additions and 2 deletions

View file

@ -1,14 +1,14 @@
/* eslint-disable roblox-ts/no-private-identifier */
import { CharacterRigR6 } from "@rbxts/character-promise"
import { InputKind } from "ReplicatedStorage/inputKind"
/**
* The client ECS state.
*/
export class clientState {
[index: string]: unknown,
character?: CharacterRigR6
debugEnabled = false
isJumping = false
isRunning = false
lastProcessedCommand?: InputKind
}

View file

@ -0,0 +1,34 @@
import { World } from "@rbxts/matter"
import { match } from "@rbxts/variant"
import { clientState } from "ReplicatedStorage/ecs/state"
function sprint(_: World, client: clientState): void {
if (client.lastProcessedCommand !== undefined) {
match(client.lastProcessedCommand, {
KeyDown: ({ key }) => {
if (key === Enum.KeyCode.LeftControl) {
client.isRunning = true
}
},
KeyUp: ({ key }) => {
if (key === Enum.KeyCode.LeftControl) {
client.isRunning = false
}
},
default: () => {
// do nothing
}
})
}
if (client.isRunning && client.character) {
client.character.Humanoid.WalkSpeed = 24
return
}
if (client.character) {
client.character.Humanoid.WalkSpeed = 16
}
}
export = sprint

View file

@ -1,3 +1,5 @@
import { CharacterRigR6 } from "@rbxts/character-promise"
import { Players } from "@rbxts/services"
import { start } from "ReplicatedStorage/ecs"
import { clientState } from "ReplicatedStorage/ecs/state"
import { Host } from "ReplicatedStorage/hosts"
@ -7,5 +9,8 @@ const HOST = Host.Client
const ClientState = new clientState()
const player = Players.LocalPlayer
ClientState.character = (player.Character || player.CharacterAdded.Wait()[0]) as CharacterRigR6
setEnvironment(HOST)
start(HOST, ClientState)