Skip to content
Merged
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
9 changes: 9 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.github
.idea
dev
dist
doc
docs
examples
node_modules
.eslintrc.js
83 changes: 83 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
overrides: [],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: ['@typescript-eslint'],
rules: {
'func-call-spacing': 'error',
'func-name-matching': 'error',
'func-style': ['error', 'declaration', { allowArrowFunctions: true }],
'key-spacing': 'error',
'keyword-spacing': 'error',
'linebreak-style': 'error',
'max-len': ['error', {
code: 120,
ignorePattern: '^// Flags:',
ignoreRegExpLiterals: true,
ignoreTemplateLiterals: true,
ignoreUrls: true,
tabWidth: 2,
}],
'no-confusing-arrow': 'error',
'no-constructor-return': 'error',
'no-duplicate-imports': 'error',
'no-return-await': 'error',
'no-self-compare': 'error',
'no-tabs': 'error',
'no-template-curly-in-string': 'error',
'no-throw-literal': 'error',
'no-trailing-spaces': 'error',
'no-undef': ['error', { typeof: true }],
'no-undef-init': 'error',
'no-unused-expressions': ['error', { allowShortCircuit: true }],
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': 'error',
'no-use-before-define': ['error', {
classes: true,
functions: false,
variables: false,
}],
'no-useless-call': 'error',
'no-useless-concat': 'error',
'no-useless-constructor': 'error',
'no-useless-return': 'error',
'no-var': 'error',
'no-void': 'error',
'no-whitespace-before-property': 'error',
'object-curly-newline': 'error',
'object-curly-spacing': ['error', 'always'],
'one-var': ['error', { initialized: 'never' }],
'one-var-declaration-per-line': 'error',
'operator-linebreak': ['error', 'after'],
'padding-line-between-statements': [
'error',
{ blankLine: 'always', prev: 'function', next: 'function' },
],
'prefer-const': ['error', { ignoreReadBeforeAssign: true }],
'prefer-object-has-own': 'error',
'quotes': ['error', 'single', { avoidEscape: true }],
'quote-props': ['error', 'consistent'],
'rest-spread-spacing': 'error',
'semi': 'error',
'semi-spacing': 'error',
'strict': ['error', 'global'],
'jsdoc/require-jsdoc': 'off',
'jsdoc/require-param-description': 'off',
'jsdoc/newline-after-description': 'off',
'jsdoc/require-returns-description': 'off',
'jsdoc/valid-types': 'off',
'jsdoc/no-undefined-types': 'off',
'jsdoc/require-param': 'off',
'jsdoc/check-tag-names': 'off',
'jsdoc/require-returns': 'off',
},
};
6 changes: 5 additions & 1 deletion .npmignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/doc
/docs
/dev
/examples
Expand All @@ -6,4 +7,7 @@
.gitattributes
.gitignore
tsconfig.json
webpack.config.js
webpack.config.js
.prettierrc
.eslintignore
.eslintrc.js
5 changes: 5 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"semi": true,
"singleQuote": true,
"arrowParens": "avoid"
}
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# JSGL Changelog
Select a JSGL version below to view the changelog history:
* [JSGL v1.0.8](https://github.com/Moderrek/JSGL/blob/release/doc/changelogs/CHANGELOG-1.0.8.md) **Current**
* [JSGL v1.0.7](https://github.com/Moderrek/JSGL/blob/release/doc/changelogs/CHANGELOG-1.0.7.md) **Long Term Support**
3 changes: 3 additions & 0 deletions CONTRIBUTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Contributions

Tymon Woźniak <tymon.wozniak@my.com>
90 changes: 90 additions & 0 deletions doc/changelogs/CHANGELOG-1.0.7.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# JSGL - Stable version update 1.0.7
From now the JSGL library will not undergo major changes. (i.e. renaming a function, etc.)
## New
* Added DOM detection and possibility to manually assign the document.
* Added `OnMouseHoverStart` `OnMouseHoverEnd` `OnMouseDown` `OnMouseUp` event function in ClickableGameObject.
* Reworked Vector2.
* Reworked Transform.
* Reworked Game start.
* New function `Renderer.fill(color | draw settings | image)`.
## Changes
* By default `Game.Update()` is invoked every frame. To change this set `drawAlways=true` in GameSettings
* Removed JSGL.version constant.
* Corrected documentation. https://jsglreference.pl
* GameObject
* * `GameObject.OnStart(event)` -> `GameObject.Start(event)`
* * `GameObject.OnDestroy(event)` -> `GameObject.Destroy(event)`
## Fixes
* None.
# Presentation of news
### GameObject Update
From
```js
class Object extends JSGL.GameObject {
OnStart(event){}
OnDestroy(event){}
}
```
To
```js
class Object extends JSGL.GameObject {
Start(event){}
Destroy(event){}
}
```
### TickEvent Update
* New property `Game.timeScale`. Represents scale of time.
* Now `deltaTime` is scaled by `Game.timeScale`.
* New event value `unscaledDeltaTime` is deltaTime without `Game.timeScale` multiplication.
* New event value `unscaledTime`. This value represents time from game start in seconds.
### Vector2 ReWork
* New static method `Lerp(Vector2, Vector2, decimal midpoint)`
* New static method `Max(Vector2, Vector2)`
* New static method `Min(Vector2, Vector2)`
* New static property `Vector2.zero` = `(0, 0)`
* New static property `Vector2.one` = `(1, 1)`
* New static property `Vector2.up` = `(0, 1)`
* New static property `Vector2.down` = `(0, -1)`
* New static property `Vector2.right` = `(1, 0)`
* New static property `Vector2.left` = `(-1, 0)`
* New method `set(Vector2)` | `set(x, y)`
* New method `add(Vector2)` | `add(x, y)`
* New method `subtract(Vector2)` | `subtract(x, y)`
* New method `multiply(Vector2)` | `multiply(scalar)`
* New method `divide(Vector2)` | `divide(scalar)`
* New method `distance(Vector2)` | `distance(x, y)`
* New method `floor()`
### Transform ReWork
* New property `angles`. Gets/sets rotation in radians.
* New property `eulerAngles`. Gets/sets rotation in degrees.
* New property `positionCenter`.
* New property `forward`. Gets Vector2 value in direction.
* New property `backward`. Gets Vector2 value opposite to direction.
* New method `ifOnEdgeBounce(grid)`
* New method `set(Vector2)` | `set(x, y)`
* New method `setX(Vector2)` | `setX(x)`
* New method `setY(Vector2)` | `setY(y)`
* New method `translate(Vector2)` | `translate(x, y)`
* New method `translateX(Vector2)` | `translateX(x)`
* New method `translateY(Vector2)` | `translateY(x)`
### Better Game Starting
```js
game.LoadGameAndStart().then((gameStartEvent) => {
console.log("Game sucessfully loaded!");
}).catch((error) => {
console.error("Encountered error @ game loading/after loading!", error);
}).finally(() => {
console.log("After success/error");
});
```
### ClickableGameObject Update
* New property `ignoreRaycast` set to `true` if you want to ignore mouse events.
```js
class MouseTest extends JSGL.ClickableGameObject {
OnMouseClick = (e) => console.log('mouse click');
OnMouseDown = (e) => console.log('mouse down');
OnMouseUp = (e) => console.log('mouse up');
OnMouseHoverStart = (e) => console.log('mouse hover start');
OnMouseHoverEnd = (e) => console.log('mouse hover end');
}
```
56 changes: 56 additions & 0 deletions doc/changelogs/CHANGELOG-1.0.8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# JSGL - User Input, "Camera", isTouching update 1.0.8
## New
* Added changelogs
* Game Events
* * `mouseScroll` - emits GameMouseEvent
* * `keyDown` - emits GameKeyEvent
* * `keyUp` - emits GameKeyEvent
* "Camera" is more like to view offset. You can find it in `game.canvasViewOffset`. This property is a Vector2.
* Added `DrawableGameObject.IsTouching(drawGameObj, drawGameObj2)` static method and `drawableGameObject.isTouching(drawGameObj)`
* Added `JSGL.log(content)`, `JSGL.warn(content)`, `JSGL.error(content)`. Prints message to dev console with format `[DATE] [LEVEL] content`
## Changes
* Deprecated
* * `game.mousePos` - Instead use `game.input.mouseWorldPosition`
* * `game.mouseClientPos` - Instead use `game.input.mouseClientPosition`
* * `game.mousePrecisePos` - Instead use `game.input.mousePreciseWorldPosition`
* * `game.isMousePrimaryButtonDown()` - Instead use `game.input.isMousePrimaryButtonDown`
* Now GameMouseEvent has properties from `game.input`. (Only about mouse)
## Fixes
* None.
# Presentation of news
### Mouse wheel handling
In GameObject
```js
...
Update(event){
event.game.input.mouseScrollDelta.y; // x is ignored
}
...
```
Without GameObject
```js
game.on('mouseScroll', (event) => {
event.mouseScrollDelta.y; // x is ignored
});
```
### How to work with input
In GameObject
```js
...
Update(event){
event.game.input.isKeyDown('w'); // <-- returns is 'w' pressed down
event.game.input.isKeyUp('s'); // <-- returns is 's' clicked
}
...
```
Without GameObject
```js
...
game.on('keyUp' (event) => {
event.input.isKeyUp('s'); // <-- returns is 's' clicked
});
game.on('keyDown' (event) => {
event.input.isKeyDown('w'); // <-- returns is 'w' pressed down
});
...
```
7 changes: 3 additions & 4 deletions examples/boucing_rect/game.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
/*
https://jsglreference.pl/
*/
const game = JSGL.DefaultGame.Create({ grid: new JSGL.Vector2(25, 25)}, { backgroundColor: 'black' });
const game = JSGL.DefaultGame.Create({ grid: new JSGL.Vector2(15, 15)}, { backgroundColor: 'black' });

game.on('draw', (event) => {
event.renderer.fillFrame({ color: 'white' });
});

class BouncingRect extends JSGL.Shape {
Start(event){
console.log("Spawned");
Start(){
this.transform.set(game.GetRandomPosition());
this.showHitbox = true;
this.properties.color = 'black';
Expand All @@ -25,7 +24,7 @@ class BouncingRect extends JSGL.Shape {
game.LoadGameAndStart().then(() => {
// Delayed for
const delay = 1000;
const count = 5;
const count = 8;
//
let i = 0;
let taskId = setInterval(() => {
Expand Down
2 changes: 1 addition & 1 deletion examples/boucing_rect/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<title>JSGL - Bouncing Rect</title>
</head>
<body>
<script src="https://unpkg.com/@moderrkowo/jsgl@1.0.7/dist/JSGL.js"></script>
<script src="https://unpkg.com/@moderrkowo/jsgl@1.0.8/dist/JSGL.js"></script>
<script src="game.js"></script>
</body>
</html>
6 changes: 3 additions & 3 deletions examples/default_game/game.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
const game = JSGL.DefaultGame.Create({ grid: new JSGL.Vector2(10, 10)}, { backgroundColor: 'black' }, 1);

game.LoadGameAndStart().then((gameStartEvent) => {
console.log("Game sucessfully loaded!");
JSGL.log("Game sucessfully loaded!");
}).catch((error) => {
console.error("Encountered error @ game loading/after loading!", error);
JSGL.error("Encountered error @ game loading/after loading!", error);
}).finally(() => {
console.log("After success/error");
JSGL.log("After success/error");
});
3 changes: 2 additions & 1 deletion examples/default_game/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
<title>JSGL - Default Game</title>
</head>
<body>
<script src="https://unpkg.com/@moderrkowo/jsgl@1.0.7/dist/JSGL.js"></script>
<h1 style="color: white">Check `game.js` file!</h1>
<script src="https://unpkg.com/@moderrkowo/jsgl@1.0.8/dist/JSGL.js"></script>
<script src="game.js"></script>
</body>
</html>
12 changes: 6 additions & 6 deletions examples/moving_rect/game.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ class MovingRect extends JSGL.Shape {
this.properties.borderColor = 'black';
}
Update(event){
this.transform.translate(new JSGL.Vector2(1, 1).multiply(event.deltaTime).multiply(this.transform.forward));
this.transform.translate(this.transform.forward.multiply(event.deltaTime));
}
OnMouseClick = () => console.log('mouse click');
OnMouseDown = () => console.log('mouse down');
OnMouseUp = () => console.log('mouse up');
OnMouseClick = () => JSGL.log('mouse click');
OnMouseDown = () => JSGL.log('mouse down');
OnMouseUp = () => JSGL.log('mouse up');
OnMouseHoverStart(){
console.log('mouse hover start');
JSGL.log('mouse hover start');
this.properties.color = 'blue';
}
OnMouseHoverEnd(){
console.log('mouse hover end');
JSGL.log('mouse hover end');
this.properties.color = 'red';
}
}
Expand Down
2 changes: 1 addition & 1 deletion examples/moving_rect/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<title>JSGL - Moving Rect</title>
</head>
<body>
<script src="https://unpkg.com/@moderrkowo/jsgl@1.0.7/dist/JSGL.js"></script>
<script src="https://unpkg.com/@moderrkowo/jsgl@1.0.8/dist/JSGL.js"></script>
<script src="game.js"></script>
</body>
</html>
Loading