browserloops-examples/lib/game/Game.dart

66 lines
1.4 KiB
Dart

import 'dart:html';
typedef void gridIterator(int x, int y);
class Game {
List<List<Color>> grid;
CanvasElement canvas;
CanvasRenderingContext2D ctx;
double _oscill = 0.0;
bool _fwd = true;
Game(CanvasElement this.canvas) {
grid = buildGrid(5,5, new Color(255, 100, 255));
ctx = this.canvas.getContext('2d');
}
void update([num dt]) {}
void draw([num interp]) {
int brickW = (canvas.width ~/ grid[0].length);
int brickH = (canvas.height ~/ grid.length);
ctx.clearRect(0, 0, canvas.width, canvas.height);
grid_foreach((x, y) {
Color col = grid[y][x];
ctx.setFillColorRgb(col.r+_oscill, col.g+_oscill, col.b+_oscill);
ctx.fillRect(x*brickW, y*brickH, brickW, brickH);
});
}
Color _oscillate(Color) {}
void grid_foreach(gridIterator fun) {
for (int y = 0; y < grid.length; y++) {
for (int x = 0; x < grid[y].length; x++) {
fun(x, y);
}
}
}
List<List<Color>> buildGrid(int w, int h, Color col) {
List<List<Color>> grid = new List(h);
for (int y = 0; y < h; y++) {
grid[y] = new List(w);
for (int x = 0; x < w; x++) {
grid[y][x] = col;
}
}
return grid;
}
}
class Color {
final int r;
final int g;
final int b;
const Color(this.r, this.g, this.b);
}
// Create 2d array
// fill with random colors
// cycle colors
// set one color to random new one