Rotation + better fps

This commit is contained in:
MasterGordon 2018-03-12 22:26:32 +01:00
parent afcd0fb028
commit aa3194e150
4 changed files with 39 additions and 9 deletions

View File

@ -6,10 +6,14 @@ class Tile {
this.input = new Inventory() this.input = new Inventory()
this.frames = 1 this.frames = 1
this.name = "base" this.name = "base"
this.texture = {
"0": [],
"1": []
}
} }
nextFrame(fulltime) { getTexture(fulltime,layer) {
return (fulltime % this.frames); return (fulltime % this.texture[layer].length);
} }
work() { work() {
@ -69,7 +73,6 @@ class Item {
setDFromDirection(direction) { setDFromDirection(direction) {
this.dx = directions[direction].dx this.dx = directions[direction].dx
this.dy = directions[direction].dy this.dy = directions[direction].dy
this.dy = 0
this.x += this.dx this.x += this.dx
this.y += this.dy this.y += this.dy
} }

View File

@ -30,7 +30,7 @@ function loadItems() {
items = json.items items = json.items
} }
function loop(timestamp) { function loopp(timestamp) {
//Check Gametick Rate //Check Gametick Rate
if (timestamp < lastFrameTimeMs + (1000 / 48)) { if (timestamp < lastFrameTimeMs + (1000 / 48)) {
requestAnimationFrame(loop) requestAnimationFrame(loop)
@ -52,6 +52,17 @@ function loop(timestamp) {
requestAnimationFrame(loop); requestAnimationFrame(loop);
} }
var lastRender = 0
function loop(timestamp) {
var progress = timestamp - lastRender
gametick(progress)
render()
lastRender = timestamp
window.requestAnimationFrame(loop)
}
function gametick(timestep) { function gametick(timestep) {
//time gibt an in den Wievielten von 40 Ticks man sich befindet //time gibt an in den Wievielten von 40 Ticks man sich befindet
time++ time++
@ -63,6 +74,7 @@ function gametick(timestep) {
if (time % 24 == 0) { if (time % 24 == 0) {
for (var i = 0; i < factorys.length; i++) { for (var i = 0; i < factorys.length; i++) {
factorys[i].moveItems()
factorys[i].workTiles() factorys[i].workTiles()
} }
} }
@ -78,8 +90,8 @@ function render() {
var tile = tilesToRender[i] var tile = tilesToRender[i]
var img = new Image var img = new Image
img.src = "images/tiles/"+tile.name+"0"+tile.nextFrame(fulltime)+".png" img.src = "images/tiles/"+tile.name+"0"+tile.nextFrame(fulltime)+".png"
img.style = "-ms-transform: rotate("+directions[tile.direction].degree+"deg);-webkit-transform: rotate("+directions[tile.direction].degree+"deg);transform: rotate("+directions[tile.direction].degree+"deg);" //ctx.drawImage(img,tile.x*48,tile.y*48,48,48)
ctx.drawImage(img,tile.x*48,tile.y*48,48,48) drawRotatedImage(img,tile.x*48+24,tile.y*48+24,directions[tile.direction].degree)
} }
//RENDER Items //RENDER Items
for (var i = 0; i < factorys[currentFactory].items.length; i++) { for (var i = 0; i < factorys[currentFactory].items.length; i++) {
@ -87,6 +99,7 @@ function render() {
var img = new Image var img = new Image
img.src = "images/items/" + getItemFormId(item.id).name + ".png" img.src = "images/items/" + getItemFormId(item.id).name + ".png"
ctx.drawImage(img, item.x, item.y, 48, 48) ctx.drawImage(img, item.x, item.y, 48, 48)
console.log(item.x)
} }
//RENDER TILE-LAYER1 //RENDER TILE-LAYER1

View File

@ -1,9 +1,12 @@
//Hier sind alle im Tiles welche im Spiel präsent sind //Hier sind alle im Tiles welche im Spiel präsent sind
class Conveyorbelt extends Tile { class Conveyorbelt extends Tile {
constructor(x, y){ constructor(x, y) {
super(x,y) super(x, y)
this.frames = 7
this.name = "conveyorbelt" this.name = "conveyorbelt"
this.texture = {
"0": ["conveyorbelt00", "conveyorbelt01", "conveyorbelt02", "conveyorbelt03", "conveyorbelt04", "conveyorbelt05", "conveyorbelt06"],
"1": []
}
} }
} }

View File

@ -20,3 +20,14 @@ var directions = {
"dy": -1 "dy": -1
} }
} }
//Umrechnung von Grad zu Bogenmaß
var TO_RADIANS = Math.PI/180;
function drawRotatedImage(image, x, y, angle) {
ctx.save();
ctx.translate(x, y);
ctx.rotate(angle * TO_RADIANS);
ctx.drawImage(image, -(image.width/2), -(image.height/2));
ctx.restore();
}