Compare commits
3 Commits
c6f24f7862
...
f5e81ad720
Author | SHA1 | Date | |
---|---|---|---|
f5e81ad720 | |||
ed3a76144d | |||
16a6107b17 |
@ -13,3 +13,7 @@ indent_size = 4
|
||||
[*.js]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[humans.txt]
|
||||
indent_style = tab
|
||||
indent_size = 2
|
||||
|
3
HTML/README.md
Normal file
3
HTML/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# HTML
|
||||
|
||||
- [humans.txt](humans.txt)
|
10
HTML/humans.txt
Normal file
10
HTML/humans.txt
Normal file
@ -0,0 +1,10 @@
|
||||
/* SITE */
|
||||
Last Updated: Thu JNov 18 01:24 AM MSK 2021
|
||||
Components: Null
|
||||
|
||||
/* TEAM */
|
||||
Chef: Alexander Popov
|
||||
Contacts: iiiypuk [at] iiiypuk.me
|
||||
Twitter: @_iiiypuk
|
||||
Ko-Fi: iiiypuk
|
||||
From: Russia
|
@ -1,6 +1,12 @@
|
||||
# JavaScript
|
||||
|
||||
## Basic
|
||||
- [Webpack](webpack.md) example config
|
||||
|
||||
## Canvas
|
||||
- [Drawing text](drawing-text.js) - примеры рисования текста на CANVAS
|
||||
- [`measureText()`](measureText.js) - возвращает информацию об измеренном тексте, например ширину
|
||||
- [`drawImage()`](canvas.drawImage.js) - метод Canvas 2D API рисования изображения на холсте
|
||||
|
||||
## GameDev
|
||||
- Canvas [GameLoop](gameloop.js) example
|
||||
|
113
JavaScript/gameloop.js
Normal file
113
JavaScript/gameloop.js
Normal file
@ -0,0 +1,113 @@
|
||||
// Main variables
|
||||
let DEBUG = true;
|
||||
let canvas;
|
||||
let context;
|
||||
let cW;
|
||||
let cH;
|
||||
|
||||
// FPS
|
||||
let secondsPassed;
|
||||
let oldTimeStamp;
|
||||
let fps;
|
||||
|
||||
let dragging = false;
|
||||
|
||||
function mMove(e) {
|
||||
'use strict';
|
||||
|
||||
if (dragging) {
|
||||
point.pX = e.offsetX * cW / canvas.clientWidth | 0;
|
||||
point.pY = e.offsetY * cH / canvas.clientHeight | 0;
|
||||
};
|
||||
}
|
||||
|
||||
function mDown(e) {
|
||||
'use strict';
|
||||
|
||||
dragging = true;
|
||||
}
|
||||
|
||||
function mUp(e) {
|
||||
'use strict';
|
||||
|
||||
dragging = false;
|
||||
}
|
||||
|
||||
function clearContext() {
|
||||
'use strict';
|
||||
|
||||
context.fillStyle = '#b27e56';
|
||||
context.fillRect(0, 0, cW, cH);
|
||||
}
|
||||
|
||||
// Init
|
||||
window.onload = function() {
|
||||
'use strict';
|
||||
|
||||
canvas = document.getElementById('game');
|
||||
context = canvas.getContext('2d');
|
||||
cW = canvas.width;
|
||||
cH = canvas.height;
|
||||
|
||||
canvas.style.height = window.innerHeight + "px";
|
||||
if (DEBUG) {
|
||||
console.log('Canvas set size to ' + window.innerHeight + 'px');
|
||||
console.log(canvas.getBoundingClientRect());
|
||||
};
|
||||
|
||||
canvas.addEventListener('mousedown', mDown, false);
|
||||
canvas.addEventListener('mouseup', mUp, false);
|
||||
canvas.addEventListener('mousemove', mMove, false);
|
||||
|
||||
canvas.addEventListener('touchstart', mDown, false);
|
||||
canvas.addEventListener('touchend', mUp, false);
|
||||
canvas.addEventListener('touchmove', mMove, false);
|
||||
|
||||
window.requestAnimationFrame(gameLoop);
|
||||
};
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
'use strict';
|
||||
|
||||
let canvas = document.getElementById('game');
|
||||
canvas.style.height = window.innerHeight + "px";
|
||||
|
||||
if (DEBUG) {
|
||||
console.log('Canvas resized to ' + window.innerHeight + 'px');
|
||||
console.log(canvas.getBoundingClientRect());
|
||||
};
|
||||
}, true);
|
||||
|
||||
// GameLoop
|
||||
function gameLoop(timeStamp) {
|
||||
'use strict';
|
||||
|
||||
// fps counter
|
||||
secondsPassed = (timeStamp - oldTimeStamp) / 1000;
|
||||
oldTimeStamp = timeStamp;
|
||||
fps = Math.round(1 / secondsPassed);
|
||||
// end fps counter
|
||||
|
||||
update();
|
||||
draw();
|
||||
|
||||
if (DEBUG) {
|
||||
context.font = '15px Arial';
|
||||
context.fillStyle = '#101024';
|
||||
context.fillText('FPS: ' + fps, 10, 20);
|
||||
};
|
||||
|
||||
window.requestAnimationFrame(gameLoop);
|
||||
}
|
||||
|
||||
function update() {
|
||||
'use strict';
|
||||
|
||||
//
|
||||
}
|
||||
|
||||
function draw() {
|
||||
'use strict';
|
||||
|
||||
clearContext();
|
||||
}
|
33
JavaScript/webpack.md
Normal file
33
JavaScript/webpack.md
Normal file
@ -0,0 +1,33 @@
|
||||
## WebPack
|
||||
`packages.json`
|
||||
```json
|
||||
"scripts": {
|
||||
"serve": "webpack serve",
|
||||
"html": "html-minifier --collapse-whitespace --remove-comments src/index.html --output dist/index.html",
|
||||
"css": "csso src/styles.css --output dist/styles.css",
|
||||
"build": "npm run html && npm run css && webpack --mode=production"
|
||||
},
|
||||
"devDependencies": {
|
||||
"webpack": "^5.42.0",
|
||||
"webpack-cli": "^4.7.2",
|
||||
"webpack-dev-server": "^3.11.2"
|
||||
}
|
||||
```
|
||||
`webpack.config.js`
|
||||
```javascript
|
||||
const path = require('path');
|
||||
|
||||
module.exports = {
|
||||
mode: 'development',
|
||||
entry: './src/index.js',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'engine.js',
|
||||
},
|
||||
devServer: {
|
||||
contentBase: path.join(__dirname, 'src'),
|
||||
compress: false,
|
||||
port: 55555,
|
||||
},
|
||||
};
|
||||
```
|
10
Solar2D/SampleProject/HISTORY.md
Normal file
10
Solar2D/SampleProject/HISTORY.md
Normal file
@ -0,0 +1,10 @@
|
||||
## Legend
|
||||
- 🐛 - Bug
|
||||
- ✔️ - Fixed
|
||||
- ❌ - Removed
|
||||
- ➕ - Added
|
||||
- ℹ️ - Information
|
||||
- ♻️ - Edited
|
||||
|
||||
## 0.1.0 - [17/04/2021] - (not work)
|
||||
-
|
1
Solar2D/SampleProject/TODO.md
Normal file
1
Solar2D/SampleProject/TODO.md
Normal file
@ -0,0 +1 @@
|
||||
-
|
37
Solar2D/SampleProject/build.settings
Normal file
37
Solar2D/SampleProject/build.settings
Normal file
@ -0,0 +1,37 @@
|
||||
settings =
|
||||
{
|
||||
orientation =
|
||||
{
|
||||
default = "portrait",
|
||||
supported = { "portrait", },
|
||||
},
|
||||
|
||||
android =
|
||||
{
|
||||
usesPermissions =
|
||||
{
|
||||
"android.permission.INTERNET",
|
||||
},
|
||||
},
|
||||
|
||||
iphone =
|
||||
{
|
||||
xcassets = "Images.xcassets",
|
||||
plist =
|
||||
{
|
||||
UIStatusBarHidden = false,
|
||||
UILaunchStoryboardName = "LaunchScreen",
|
||||
},
|
||||
},
|
||||
|
||||
plugins =
|
||||
{
|
||||
|
||||
},
|
||||
|
||||
excludeFiles =
|
||||
{
|
||||
all = { "Icon.png", "Icon-*dpi.png", "Images.xcassets", },
|
||||
android = { "LaunchScreen.storyboardc", },
|
||||
},
|
||||
}
|
18
Solar2D/SampleProject/config.lua
Normal file
18
Solar2D/SampleProject/config.lua
Normal file
@ -0,0 +1,18 @@
|
||||
application =
|
||||
{
|
||||
content =
|
||||
{
|
||||
width = 1080,
|
||||
height = 1920,
|
||||
scale = "letterbox",
|
||||
fps = 60,
|
||||
|
||||
--[[
|
||||
imageSuffix =
|
||||
{
|
||||
["@2x"] = 2,
|
||||
["@4x"] = 4,
|
||||
},
|
||||
--]]
|
||||
},
|
||||
}
|
0
Solar2D/SampleProject/main.lua
Normal file
0
Solar2D/SampleProject/main.lua
Normal file
70
Solar2D/SampleProject/scenes/game.lua
Normal file
70
Solar2D/SampleProject/scenes/game.lua
Normal file
@ -0,0 +1,70 @@
|
||||
local composer = require('composer')
|
||||
|
||||
local scene = composer.newScene()
|
||||
|
||||
local groupBack
|
||||
local groupMain
|
||||
local groupUI
|
||||
|
||||
|
||||
function gameLoop()
|
||||
--
|
||||
end
|
||||
|
||||
local function onFrame(event)
|
||||
--
|
||||
end
|
||||
|
||||
|
||||
function scene:create(event)
|
||||
local sceneGroup = self.view
|
||||
|
||||
groupBack = display.newGroup()
|
||||
groupMain = display.newGroup()
|
||||
groupUI = display.newGroup()
|
||||
|
||||
local debugRect = display.newRect(display.contentCenterX, display.contentCenterY, display.contentWidth, display.contentHeight )
|
||||
debugRect:setFillColor(0.807, 0.925, 0.956)
|
||||
end
|
||||
|
||||
|
||||
function scene:show(event)
|
||||
local sceneGroup = self.view
|
||||
local phase = event.phase
|
||||
|
||||
if (phase == "will") then
|
||||
-- Code here runs when the scene is still off screen (but is about to come on screen)
|
||||
|
||||
elseif (phase == "did") then
|
||||
gameLoopTimer = timer.performWithDelay(500, gameLoop, 0)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function scene:hide(event)
|
||||
local sceneGroup = self.view
|
||||
local phase = event.phase
|
||||
|
||||
if (phase == "will") then
|
||||
-- Code here runs when the scene is on screen (but is about to go off screen)
|
||||
|
||||
elseif (phase == "did") then
|
||||
-- Code here runs immediately after the scene goes entirely off screen
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function scene:destroy(event)
|
||||
local sceneGroup = self.view
|
||||
-- Code here runs prior to the removal of scene's view
|
||||
end
|
||||
|
||||
|
||||
scene:addEventListener('create', scene)
|
||||
scene:addEventListener('show', scene)
|
||||
scene:addEventListener('hide', scene)
|
||||
scene:addEventListener('destroy', scene)
|
||||
Runtime:addEventListener('enterFrame', onFrame)
|
||||
|
||||
return scene
|
Loading…
Reference in New Issue
Block a user