Skip to content

Commit

Permalink
battle controls
Browse files Browse the repository at this point in the history
  • Loading branch information
gtanczyk committed Oct 4, 2024
1 parent ec50d62 commit 6b1f52d
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { useEffect } from 'react';
import {
EVENT_ARROW_DOWN_DOWN,
EVENT_ARROW_DOWN_UP,
Expand All @@ -15,10 +16,20 @@ import {
EVENT_MOUSE_MOVE,
EVENT_MOUSE_UP,
} from './events.js';
import { updateState } from './states.js';

export function initializeControls(updateState) {
function useWindowEvent<T extends Event>(name: keyof WindowEventMap, handler: (event: T) => void) {
useEffect(() => {
window.addEventListener(name, handler as EventListener);
return () => {
window.removeEventListener(name, handler as EventListener);
};
}, [name, handler]);
}

export function BattleControls() {
// key events
window.addEventListener('keydown', function (event) {
useWindowEvent<KeyboardEvent>('keydown', function (event) {
if (event.keyCode == 37) {
updateState(EVENT_ARROW_LEFT_DOWN);
}
Expand All @@ -37,7 +48,7 @@ export function initializeControls(updateState) {
updateState(EVENT_KEY_DOWN, event.keyCode);
});

window.addEventListener('keyup', function (event) {
useWindowEvent<KeyboardEvent>('keyup', function (event) {
if (event.keyCode == 37) {
updateState(EVENT_ARROW_LEFT_UP);
}
Expand All @@ -54,19 +65,21 @@ export function initializeControls(updateState) {
});

// mouse events
window.addEventListener('mousedown', function (event) {
useWindowEvent('mousedown', function (event) {
updateState(EVENT_MOUSE_DOWN, event);
});

window.addEventListener('mouseup', function (event) {
useWindowEvent('mouseup', function (event) {
updateState(EVENT_MOUSE_UP, event);
});

window.addEventListener('mousemove', function (event) {
useWindowEvent('mousemove', function (event) {
updateState(EVENT_MOUSE_MOVE, event);
});

window.addEventListener('click', function (event) {
useWindowEvent('click', function (event) {
updateState(EVENT_MOUSE_CLICK, event);
});
}

return null;
}
3 changes: 3 additions & 0 deletions games/masterplan/src/screens/battle/battle-screen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import './main';
import { initCurrentState, updateState } from './states';
import { EVENT_BATTLE_START, EVENT_INTERVAL_100MS, EVENT_INTERVAL_SECOND, EVENT_RAF, EVENT_TIMEOUT } from './events';
import { useRafLoop } from 'react-use';
import { BattleControls } from './battle-controls';

export function BattleScreen({
onBattleEnd,
Expand Down Expand Up @@ -65,6 +66,8 @@ export function BattleScreen({
return (
<>
<BattleStyles />
<BattleControls />

{/* assets */}
<img src={assetSoldierWarrior} id="asset-soldier-warrior" />
<img src={assetSoldierWarriorDead} id="asset-soldier-warrior-dead" />
Expand Down
3 changes: 0 additions & 3 deletions games/masterplan/src/screens/battle/main.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import { initializeControls } from './controls.js';
import { EVENT_DOCUMENT_HIDDEN, EVENT_DOCUMENT_VISIBLE, EVENT_WINDOW_RESIZE } from './events.js';
import { updateState } from './states.js';

initializeControls(updateState);

document.addEventListener('visibilitychange', function () {
if (document.hidden) {
updateState(EVENT_DOCUMENT_HIDDEN);
Expand Down

0 comments on commit 6b1f52d

Please sign in to comment.