Skip to content
Open
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
2 changes: 1 addition & 1 deletion .husky/pre-push
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
pnpm run lint
pnpm run test
#pnpm run test
26 changes: 26 additions & 0 deletions packages/nf-jump-control-2d.system/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { type Context } from "@nanoforge-dev/common";
import { type EditorSystemManifest, type Registry } from "@nanoforge-dev/ecs-lib";
import { type InputLibrary } from "@nanoforge-dev/input";

import { Acceleration2D } from "../components/nf-acceleration-2d.component";
import { JumpController2D } from "../components/nf-move-controller-2d.component";

export function jumpControl2D(registry: Registry, ctx: Context) {
const entities = registry.getZipper([JumpController2D, Acceleration2D]);
const input = ctx.libs.getInput<InputLibrary>();

entities.forEach(({ JumpController2D, Acceleration2D }) => {
if (input.isKeyPressed(JumpController2D.key)) {
Acceleration2D.y -= JumpController2D.strength;
}
});
}
// * Required to generate code
export default jumpControl2D.name;

// * Required for the editor to display the system and generate code
export const EDITOR_SYSTEM_MANIFEST: EditorSystemManifest = {
name: "jumpControl2D",
description: "Control movable entities with 4 directional movement of en entity",
dependencies: ["Acceleration2D", "JumpController2D"],
};
10 changes: 10 additions & 0 deletions packages/nf-jump-control-2d.system/nanoforge.manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "nf/jump-control-2d",
"type": "system",
"description": "Control entities that can jump",
"tags": ["base", "mouvement"],
"dependencies": ["nf/jump-controller-2d", "nf/acceleration-2d"],
"libDependencies": {
"@nanoforge-dev/input": "^1.0.2"
}
}
181 changes: 181 additions & 0 deletions packages/nf-jump-controller-2d.component/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
import type { EditorComponentManifest } from "@nanoforge-dev/ecs-lib";
import { type InputEnum } from "@nanoforge-dev/input";

export class JumpController2D {
name = this.constructor.name;

constructor(
public strength: number,
public key?: InputEnum,
) {}
}

// * Required to generate code
export default JumpController2D.name;

// * Required for the editor to display the component and generate code
export const EDITOR_COMPONENT_MANIFEST: EditorComponentManifest = {
name: "JumpController2D",
description: "Allow jump upwards",
params: [
{
type: "number",
name: "strength",
description: "Speed going up in pixels per second",
example: 4.2,
default: 100,
},
{
name: "key",
type: "string",
optional: true,
enum: [
"Escape",
"Digit1",
"Digit2",
"Digit3",
"Digit4",
"Digit5",
"Digit6",
"Digit7",
"Digit8",
"Digit9",
"Digit0",
"Minus",
"Equal",
"Backspace",
"Tab",
"KeyQ",
"KeyW",
"KeyE",
"KeyR",
"KeyT",
"KeyY",
"KeyU",
"KeyI",
"KeyO",
"KeyP",
"BracketLeft",
"BracketRight",
"Enter",
"ControlLeft",
"KeyA",
"KeyS",
"KeyD",
"KeyF",
"KeyG",
"KeyH",
"KeyJ",
"KeyK",
"KeyL",
"Semicolon",
"Quote",
"Backquote",
"ShiftLeft",
"Backslash",
"KeyZ",
"KeyX",
"KeyC",
"KeyV",
"KeyB",
"KeyN",
"KeyM",
"Comma",
"Period",
"Slash",
"ShiftRight",
"NumpadMultiply",
"AltLeft",
"Space",
"CapsLock",
"F1",
"F2",
"F3",
"F4",
"F5",
"F6",
"F7",
"F8",
"F9",
"F10",
"Pause",
"ScrollLock",
"Numpad7",
"Numpad8",
"Numpad9",
"NumpadSubtract",
"Numpad4",
"Numpad5",
"Numpad6",
"NumpadAdd",
"Numpad1",
"Numpad2",
"Numpad3",
"Numpad0",
"NumpadDecimal",
"IntlBackslash",
"F11",
"F12",
"NumpadEqual",
"F13",
"F14",
"F15",
"F16",
"F17",
"F18",
"F19",
"F20",
"F21",
"F22",
"F23",
"KanaMode",
"Lang2",
"Lang1",
"IntlRo",
"F24",
"Convert",
"NonConvert",
"IntlYen",
"NumpadComma",
"MediaTrackPrevious",
"MediaTrackNext",
"NumpadEnter",
"ControlRight",
"AudioVolumeMute",
"LaunchApp2",
"MediaPlayPause",
"MediaStop",
"BrowserHome",
"NumpadDivide",
"PrintScreen",
"AltRight",
"NumLock",
"Home",
"ArrowUp",
"PageUp",
"ArrowLeft",
"ArrowRight",
"End",
"ArrowDown",
"PageDown",
"Insert",
"Delete",
"MetaLeft",
"MetaRight",
"ContextMenu",
"Power",
"BrowserSearch",
"BrowserFavorites",
"BrowserRefresh",
"BrowserStop",
"BrowserForward",
"BrowserBack",
"LaunchApp1",
"LaunchMail",
],
description: "Key to press to go up",
example: "Space",
default: "Space",
},
],
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "nf/jump-controller-2d",
"type": "component",
"description": "Allow jump upwards",
"tags": ["base", "mouvement"],
"libDependencies": {
"@nanoforge-dev/input": "^1.0.2"
}
}
22 changes: 14 additions & 8 deletions packages/nf-move-control-2d.system/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,23 @@ export function moveControl2D(registry: Registry, ctx: Context) {
const rightPressed = input.isKeyPressed(MoveController2D.keyRight);
const leftPressed = input.isKeyPressed(MoveController2D.keyLeft);

let velX = 0;
if (leftPressed != rightPressed) {
velX = rightPressed ? MoveController2D.speedRight : -MoveController2D.speedLeft;
if (MoveController2D.keyRight || MoveController2D.keyLeft) {
let velX = 0;
if (leftPressed != rightPressed) {
if (rightPressed) velX = MoveController2D.speedRight;
if (leftPressed) velX = -MoveController2D.speedLeft;
}
Velocity2D.x = velX;
}
Velocity2D.x = velX;

let velY = 0;
if (upPressed != downPressed) {
velY = upPressed ? -MoveController2D.speedUp : MoveController2D.speedDown;
if (MoveController2D.keyUp || MoveController2D.keyDown) {
let velY = 0;
if (upPressed != downPressed) {
if (upPressed) velY = -MoveController2D.speedUp;
if (downPressed) velY = MoveController2D.speedDown;
}
Velocity2D.y = velY;
}
Velocity2D.y = velY;
});
}
// * Required to generate code
Expand Down
Loading
Loading