Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | automatic scaling |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
b9f5dfb2906ffd5fdf446d5e152a3d9f |
| User & Date: | athaudia 2017-07-25 16:34:44.286 |
Context
|
2017-07-25
| ||
| 17:18 | deploy.bat check-in: 41c5a8babd user: athaudia tags: trunk | |
| 16:34 | automatic scaling check-in: b9f5dfb290 user: athaudia tags: trunk | |
| 02:36 | tileset check-in: 31a1d7564e user: athaudia tags: trunk | |
Changes
Changes to lib/playtypus.dart.
1 2 3 4 5 6 7 8 9 10 11 |
import 'dart:html';
import 'src/context.dart';
import 'src/loader.dart';
export 'src/context.dart';
export 'src/loader.dart';
abstract class Game {
bool _preloaded = false;
Loader _load = new Loader();
Context _ctx;
| > > | > | > > > | | > | > > > | > > | > > > > > > > > > > > > | | > | | | > > > > | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import 'dart:html';
import 'dart:math';
import 'src/context.dart';
import 'src/loader.dart';
export 'src/context.dart';
export 'src/loader.dart';
abstract class Game {
bool _preloaded = false;
Loader _load = new Loader();
Context _ctx;
CanvasElement _canvas;
num _time_since_last_tick = 0;
num _time_since_last_second = 0;
num _last_timestamp;
int _frames_since_last_second = 0;
int fps = 0;
int width, height;
Game(this.width, this.height) {
onPreload(_load);
_canvas = new CanvasElement();
_canvas.style.position = 'absolute';
var body = document.querySelector('body');
body.style.backgroundColor = '#000';
body.children.add(_canvas);
var canvas_context = _canvas.context2D;
_ctx = new Context(canvas_context);
_onResize();
window.onResize.listen((E) => _onResize());
window.requestAnimationFrame(_step);
}
void _onResize() {
int scale = min(window.innerWidth~/width, window.innerHeight~/height);
_canvas.width = width*scale;
_canvas.height = height*scale;
_canvas.context2D.scale(scale,scale);
_canvas.context2D.imageSmoothingEnabled = false;
var left = (window.innerWidth-_canvas.width) ~/ 2;
var top = (window.innerHeight-_canvas.height) ~/ 2;
_canvas.style.left = left.toString() + 'px';
_canvas.style.top = top.toString() + 'px';
}
void _step(num timestamp) {
if(!_preloaded && _load.loaded == 0) {
_preloaded = true;
_last_timestamp = timestamp;
onLoad();
}
if(_preloaded) {
_time_since_last_tick += timestamp - _last_timestamp;
_time_since_last_second += timestamp - _last_timestamp;
_last_timestamp = timestamp;
const num frametime = 1000.0 / 60.0;
int ticks = (_time_since_last_tick / frametime - 0.5).floor();
_time_since_last_tick -= ticks * frametime;
_frames_since_last_second += 1;
while(_time_since_last_second >= 1000.0) {
_time_since_last_second -= 1000.0;
fps = _frames_since_last_second;
print(fps);
_frames_since_last_second = 0;
}
for(int i = 0; i < ticks; ++i)
onTick();
onRender(_ctx);
}
window.requestAnimationFrame(_step);
}
|
| ︙ | ︙ |
Changes to lib/src/context.dart.
| ︙ | ︙ | |||
18 19 20 21 22 23 24 |
void rect(int x, int y, int w, int h) {
_ctx.fillRect(x, y, w, h);
}
void drawTile(Tileset tileset, int tile, int x, int y) {
int tcx = tileset.tileCountX();
| | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
void rect(int x, int y, int w, int h) {
_ctx.fillRect(x, y, w, h);
}
void drawTile(Tileset tileset, int tile, int x, int y) {
int tcx = tileset.tileCountX();
int tx = tile % tcx;
int ty = tile ~/ tcx;
int posx = tx*(tileset._tileW+tileset._spacing);
int posy = ty*(tileset._tileH+tileset._spacing);
Rectangle src = new Rectangle(posx, posy, tileset._tileW, tileset._tileH);
Rectangle dst = new Rectangle(x, y, tileset._tileW, tileset._tileH);
_ctx.drawImageToRect(tileset._img, dst, sourceRect: src);
}
}
|
| ︙ | ︙ |
Changes to web/main.dart.
1 2 3 4 5 6 7 |
import 'dart:html';
import 'package:playtypus/playtypus.dart';
class MyGame extends Game {
ImageElement img;
Tileset tileset;
int tick = 0;
| | | > | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import 'dart:html';
import 'package:playtypus/playtypus.dart';
class MyGame extends Game {
ImageElement img;
Tileset tileset;
int tick = 0;
MyGame() : super(320,180) {}
void onPreload(Loader load) {
img = load.image("tileset.png");
tileset = load.tileset("tileset.png", 16, 16, spacing: 1);
}
void onLoad() {
}
void onRender(Context ctx) {
ctx.rect(0,0,tick,600);
//ctx.draw(img, 0, 0);
int tile = (tick ~/ 1);
for(int x = 0; x < 1920/16/2; ++x)
for(int y = 0; y < 1080/16/2; ++y)
ctx.drawTile(tileset, tile+x+y, x*16, y*16);
}
void onTick() {
tick += 1;
}
}
|
| ︙ | ︙ |