init
This commit is contained in:
commit
c256015b8c
20
.editorconfig
Normal file
20
.editorconfig
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = lf
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.js]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[{*.html,*.css,*.json}]
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
13
src/index.html
Normal file
13
src/index.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>gameEngine</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="styles.css">
|
||||||
|
<script src="./js/main.js" type="module"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas></canvas>
|
||||||
|
</body>
|
||||||
|
</html>
|
28
src/js/main.js
Normal file
28
src/js/main.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { Scene } from './scene.js';
|
||||||
|
import { Settings } from './settings.js';
|
||||||
|
import { Pointer } from './pointer.js';
|
||||||
|
|
||||||
|
class Game {
|
||||||
|
constructor() {
|
||||||
|
this.scene = new Scene();
|
||||||
|
this.prevTime = Date.now();
|
||||||
|
|
||||||
|
Pointer.init();
|
||||||
|
|
||||||
|
this.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
run = () => {
|
||||||
|
let newTime = Date.now();
|
||||||
|
Settings.delta = (newTime - this.prevTime) / 1000;
|
||||||
|
this.prevTime = newTime;
|
||||||
|
|
||||||
|
this.scene.run();
|
||||||
|
|
||||||
|
requestAnimationFrame(this.run);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
new Game();
|
||||||
|
});
|
30
src/js/pointer.js
Normal file
30
src/js/pointer.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
export class Pointer {
|
||||||
|
static #x;
|
||||||
|
static #y;
|
||||||
|
|
||||||
|
static init() {
|
||||||
|
this.#x = 0;
|
||||||
|
this.#y = 0;
|
||||||
|
|
||||||
|
window.addEventListener('mousemove', this.mouseMove);
|
||||||
|
window.addEventListener('mousedown', this.mouseDown);
|
||||||
|
window.addEventListener('mouseup', this.mouseUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static set pos({ x, y }) { this.#x = x; this.#y = y; }
|
||||||
|
static get pos() {
|
||||||
|
return { x: this.#x, y: this.#y };
|
||||||
|
}
|
||||||
|
|
||||||
|
static mouseMove = (e) => {
|
||||||
|
this.pos = { x: e.pageX, y: e.pageY };
|
||||||
|
}
|
||||||
|
|
||||||
|
static mouseDown = (e) => {
|
||||||
|
this.pos = { x: e.pageX, y: e.pageY };
|
||||||
|
}
|
||||||
|
|
||||||
|
static mouseUp = (e) => {
|
||||||
|
this.pos = { x: e.pageX, y: e.pageY };
|
||||||
|
}
|
||||||
|
}
|
26
src/js/scene.js
Normal file
26
src/js/scene.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import { Pointer } from './pointer.js';
|
||||||
|
|
||||||
|
export class Scene {
|
||||||
|
constructor() {
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
init = async () => {
|
||||||
|
this.canvas = document.querySelector('canvas');
|
||||||
|
this.context = this.canvas.getContext('2d');
|
||||||
|
|
||||||
|
this.setScreenSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
run() {
|
||||||
|
console.log(Pointer.pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
setScreenSize() {
|
||||||
|
let w = 640;
|
||||||
|
let h = 480;
|
||||||
|
|
||||||
|
this.canvas.width = w;
|
||||||
|
this.canvas.height = h;
|
||||||
|
}
|
||||||
|
}
|
24
src/js/settings.js
Normal file
24
src/js/settings.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
export class Settings {
|
||||||
|
static #props = {};
|
||||||
|
|
||||||
|
static get(property) {
|
||||||
|
return this.#props[property];
|
||||||
|
}
|
||||||
|
|
||||||
|
static add(property, value) {
|
||||||
|
if (!Object.getOwnPropertyDescriptors(this)[property]) {
|
||||||
|
Object.defineProperty(this, property, {
|
||||||
|
configurable: true,
|
||||||
|
enumerable: true,
|
||||||
|
get: () => this.#props[property],
|
||||||
|
set: (setValue) => { this.#props[property] = setValue; },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.#props[property] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static remove(property) {
|
||||||
|
delete this.#props[property];
|
||||||
|
}
|
||||||
|
}
|
0
src/styles.css
Normal file
0
src/styles.css
Normal file
Loading…
Reference in New Issue
Block a user