Added missing files
This commit is contained in:
parent
b848a6fe67
commit
5d0f5fdb6e
2 changed files with 122 additions and 0 deletions
77
src/board.rs
Normal file
77
src/board.rs
Normal 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
45
src/tile.rs
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue