Added missing files

This commit is contained in:
Coeuvre 2014-05-21 00:06:30 +08:00
parent b848a6fe67
commit 5d0f5fdb6e
2 changed files with 122 additions and 0 deletions

77
src/board.rs Normal file
View file

@ -0,0 +1,77 @@
use graphics::*;
use piston::*;
use settings;
use tile::Tile;
pub struct Board {
center: [f64, ..2],
tiles: [[Option<Tile>, ..settings::TILE_WIDTH], ..settings::TILE_HEIGHT],
}
impl Board {
pub fn new() -> Board {
Board {
center: [0.0, 0.0],
tiles: [
[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
[None, None, None, None],
],
}
}
pub fn render(&self, c: &Context, gl: &mut Gl) {
self.render_board(c, gl);
self.render_tiles(c, gl);
Tile::new(16, 0, 0).render(c, gl);
}
fn render_board(&self, c: &Context, gl: &mut Gl) {
let width = settings::TILE_SIZE * settings::TILE_WIDTH as f64 + settings::TILE_PADDING * (settings::TILE_WIDTH + 1) as f64;
let height = settings::TILE_SIZE * settings::TILE_HEIGHT as f64 + settings::TILE_PADDING * (settings::TILE_HEIGHT + 1) as f64;
c.view()
.rect(settings::BOARD_PADDING,
settings::BOARD_PADDING + settings::BOARD_OFFSET_Y,
settings::BOARD_SIZE[0],
settings::BOARD_SIZE[1])
.rgba(settings::TILE_BACKGROUND_COLOR[0],
settings::TILE_BACKGROUND_COLOR[1],
settings::TILE_BACKGROUND_COLOR[2],
settings::TILE_BACKGROUND_COLOR[3])
.fill(gl);
let mut x = settings::BOARD_PADDING + settings::TILE_PADDING;
let mut y = settings::BOARD_PADDING + settings::BOARD_OFFSET_Y + settings::TILE_PADDING;
for row in range(0, settings::TILE_HEIGHT) {
for col in range(0, settings::TILE_WIDTH) {
c.view()
.rect(x, y, settings::TILE_SIZE, settings::TILE_SIZE)
.rgba(settings::TILES_COLOR[0][0],
settings::TILES_COLOR[0][1],
settings::TILES_COLOR[0][2],
settings::TILES_COLOR[0][3])
.fill(gl);
x += settings::TILE_PADDING + settings::TILE_SIZE;
}
x = settings::BOARD_PADDING + settings::TILE_PADDING;
y += settings::TILE_PADDING + settings::TILE_SIZE;
}
}
fn render_tiles(&self, c: &Context, gl: &mut Gl) {
for row in range(0, settings::TILE_HEIGHT) {
for col in range(0, settings::TILE_WIDTH) {
match self.tiles[row][col] {
Some(ref tile) => {
tile.render(c, gl);
},
_ => {},
}
}
}
}
}

45
src/tile.rs Normal file
View file

@ -0,0 +1,45 @@
use graphics::*;
use piston::*;
use settings;
enum TileState {
TileStatic,
/// (x, y)
TileMoving(f64, f64),
}
pub struct Tile {
score: int,
tile_x: int,
tile_y: int,
status: TileState,
}
impl Tile {
pub fn new(score: int, tile_x: int, tile_y: int) -> Tile {
Tile {
score: score,
tile_x: tile_x,
tile_y: tile_y,
status: TileStatic,
}
}
pub fn render(&self, c: &Context, gl: &mut Gl) {
let x = settings::BOARD_PADDING + self.tile_x as f64 * settings::TILE_SIZE + (self.tile_x + 1) as f64 * settings::TILE_PADDING;
let y = settings::BOARD_PADDING + settings::BOARD_OFFSET_Y + self.tile_y as f64 * settings::TILE_SIZE + (self.tile_y + 1) as f64 * settings::TILE_PADDING;
let color = self.get_color();
c.view().rect(x, y, settings::TILE_SIZE, settings::TILE_SIZE).rgba(color[0], color[1], color[2], color[3]).fill(gl);
}
fn get_color(&self) -> [f32, ..4] {
let i = (self.score as f64).log2() as uint;
if i > 0 && i < settings::TILES_COLOR.len() {
settings::TILES_COLOR[i]
} else {
settings::TILE_UNKNOW_COLOR
}
}
}