Upgraded to latest Piston
This commit is contained in:
parent
6f9cbae0a8
commit
b12e3c751e
6 changed files with 34 additions and 37 deletions
21
src/app.rs
21
src/app.rs
|
|
@ -11,9 +11,9 @@ pub struct App<'a> {
|
||||||
number_renderer: Option<NumberRenderer>,
|
number_renderer: Option<NumberRenderer>,
|
||||||
settings: &'a Settings,
|
settings: &'a Settings,
|
||||||
|
|
||||||
logo: Option<Image>,
|
logo: Option<Texture>,
|
||||||
comment1: Option<Image>,
|
comment1: Option<Texture>,
|
||||||
comment2: Option<Image>,
|
comment2: Option<Texture>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> App<'a> {
|
impl<'a> App<'a> {
|
||||||
|
|
@ -34,7 +34,7 @@ impl<'a> App<'a> {
|
||||||
fn render_ui(&self, c: &Context, gl: &mut Gl) {
|
fn render_ui(&self, c: &Context, gl: &mut Gl) {
|
||||||
// logo
|
// logo
|
||||||
c.trans(self.settings.board_padding, self.settings.board_padding)
|
c.trans(self.settings.board_padding, self.settings.board_padding)
|
||||||
.image(self.logo.unwrap())
|
.image(self.logo.get_ref())
|
||||||
.rgb(self.settings.text_dark_color[0],
|
.rgb(self.settings.text_dark_color[0],
|
||||||
self.settings.text_dark_color[1],
|
self.settings.text_dark_color[1],
|
||||||
self.settings.text_dark_color[2])
|
self.settings.text_dark_color[2])
|
||||||
|
|
@ -55,11 +55,12 @@ impl<'a> App<'a> {
|
||||||
self.render_comment(self.comment2.get_ref(), self.settings.comment2_offset_y, c, gl);
|
self.render_comment(self.comment2.get_ref(), self.settings.comment2_offset_y, c, gl);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render_comment(&self, comment: &Image, y: f64, c: &Context, gl: &mut Gl) {
|
fn render_comment(&self, comment: &Texture, y: f64, c: &Context, gl: &mut Gl) {
|
||||||
|
let (width, height) = comment.get_size();
|
||||||
let w = self.settings.window_size[0] as f64 - 2.0 * self.settings.board_padding;
|
let w = self.settings.window_size[0] as f64 - 2.0 * self.settings.board_padding;
|
||||||
let h = comment.texture_height as f64 * w / comment.texture_width as f64;
|
let h = height as f64 * w / width as f64;
|
||||||
c.rect(self.settings.board_padding, y, w, h)
|
c.rect(self.settings.board_padding, y, w, h)
|
||||||
.image(*comment)
|
.image(comment)
|
||||||
.rgb(self.settings.text_dark_color[0],
|
.rgb(self.settings.text_dark_color[0],
|
||||||
self.settings.text_dark_color[1],
|
self.settings.text_dark_color[1],
|
||||||
self.settings.text_dark_color[2])
|
self.settings.text_dark_color[2])
|
||||||
|
|
@ -71,9 +72,9 @@ impl<'a> Game for App<'a> {
|
||||||
fn load(&mut self, asset_store: &mut AssetStore) {
|
fn load(&mut self, asset_store: &mut AssetStore) {
|
||||||
self.number_renderer = Some(NumberRenderer::new(asset_store));
|
self.number_renderer = Some(NumberRenderer::new(asset_store));
|
||||||
|
|
||||||
self.logo = Some(asset_store.load_image("logo.png").unwrap());
|
self.logo = Some(Texture::from_path(&asset_store.path("logo.png").unwrap()).unwrap());
|
||||||
self.comment1 = Some(asset_store.load_image("comment1.png").unwrap());
|
self.comment1 = Some(Texture::from_path(&asset_store.path("comment1.png").unwrap()).unwrap());
|
||||||
self.comment2 = Some(asset_store.load_image("comment2.png").unwrap());
|
self.comment2 = Some(Texture::from_path(&asset_store.path("comment2.png").unwrap()).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render(&self, _ext_dt: f64, c: &Context, gl: &mut Gl) {
|
fn render(&self, _ext_dt: f64, c: &Context, gl: &mut Gl) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
use std::iter::range_step;
|
use std::iter::range_step;
|
||||||
use collections::hashmap::HashSet;
|
use collections::hashmap::HashSet;
|
||||||
use rand::random;
|
use std::rand::random;
|
||||||
use graphics::*;
|
use graphics::*;
|
||||||
use piston::*;
|
use piston::*;
|
||||||
use number_renderer::NumberRenderer;
|
use number_renderer::NumberRenderer;
|
||||||
|
|
@ -14,7 +14,6 @@ use tile::{
|
||||||
pub struct Board<'a> {
|
pub struct Board<'a> {
|
||||||
tiles: Vec<Tile<'a>>,
|
tiles: Vec<Tile<'a>>,
|
||||||
score: int,
|
score: int,
|
||||||
highest_score: int,
|
|
||||||
|
|
||||||
settings: &'a Settings,
|
settings: &'a Settings,
|
||||||
}
|
}
|
||||||
|
|
@ -24,7 +23,6 @@ impl<'a> Board<'a> {
|
||||||
let mut board = Board {
|
let mut board = Board {
|
||||||
tiles: Vec::<Tile>::new(),
|
tiles: Vec::<Tile>::new(),
|
||||||
score: 0,
|
score: 0,
|
||||||
highest_score: 0,
|
|
||||||
settings: settings,
|
settings: settings,
|
||||||
};
|
};
|
||||||
board.generate_tile();
|
board.generate_tile();
|
||||||
|
|
@ -384,10 +382,7 @@ impl<'a> Board<'a> {
|
||||||
|
|
||||||
fn add_score(&mut self, score: int) {
|
fn add_score(&mut self, score: int) {
|
||||||
self.score += score;
|
self.score += score;
|
||||||
if self.score > self.highest_score {
|
println!("Score: {}", self.score);
|
||||||
self.highest_score = self.score;
|
|
||||||
}
|
|
||||||
println!("Score: {}, Highest Score: {}", self.score, self.highest_score);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
19
src/main.rs
19
src/main.rs
|
|
@ -2,7 +2,6 @@
|
||||||
#![feature(globs)]
|
#![feature(globs)]
|
||||||
|
|
||||||
extern crate collections;
|
extern crate collections;
|
||||||
extern crate rand;
|
|
||||||
extern crate serialize;
|
extern crate serialize;
|
||||||
|
|
||||||
extern crate graphics;
|
extern crate graphics;
|
||||||
|
|
@ -22,16 +21,18 @@ fn main() {
|
||||||
let settings = settings::Settings::load();
|
let settings = settings::Settings::load();
|
||||||
|
|
||||||
let mut game_window: GameWindowBackEnd = GameWindow::new(
|
let mut game_window: GameWindowBackEnd = GameWindow::new(
|
||||||
GameWindowSettings::new (
|
GameWindowSettings {
|
||||||
"Rust-2048".to_owned(),
|
title: "Rust-2048".to_string(),
|
||||||
settings.window_size,
|
size: settings.window_size,
|
||||||
false,
|
fullscreen: false,
|
||||||
true,
|
exit_on_esc: true,
|
||||||
[settings.window_background_color[0],
|
background_color: [
|
||||||
|
settings.window_background_color[0],
|
||||||
settings.window_background_color[1],
|
settings.window_background_color[1],
|
||||||
settings.window_background_color[2],
|
settings.window_background_color[2],
|
||||||
1.0,],
|
1.0,
|
||||||
)
|
],
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut asset_store = AssetStore::from_folder(settings.asset_folder.as_slice());
|
let mut asset_store = AssetStore::from_folder(settings.asset_folder.as_slice());
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,20 @@ use graphics::*;
|
||||||
use piston::{
|
use piston::{
|
||||||
AssetStore,
|
AssetStore,
|
||||||
Gl,
|
Gl,
|
||||||
|
Texture,
|
||||||
};
|
};
|
||||||
|
|
||||||
static DIGITS_WIDTH: f64 = 20.0;
|
static DIGITS_WIDTH: f64 = 20.0;
|
||||||
static DIGITS_HEIGHT: f64 = 26.0;
|
static DIGITS_HEIGHT: f64 = 26.0;
|
||||||
|
|
||||||
pub struct NumberRenderer {
|
pub struct NumberRenderer {
|
||||||
image: Image,
|
image: Texture,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl NumberRenderer {
|
impl NumberRenderer {
|
||||||
pub fn new(asset_store: &mut AssetStore) -> NumberRenderer {
|
pub fn new(asset_store: &mut AssetStore) -> NumberRenderer {
|
||||||
NumberRenderer {
|
NumberRenderer {
|
||||||
image: asset_store.load_image("digits.png").unwrap(),
|
image: Texture::from_path(&asset_store.path("digits.png").unwrap()).unwrap(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -33,12 +34,11 @@ impl NumberRenderer {
|
||||||
let height = width / DIGITS_WIDTH * DIGITS_HEIGHT;
|
let height = width / DIGITS_WIDTH * DIGITS_HEIGHT;
|
||||||
let y = center_y - height / 2.0;
|
let y = center_y - height / 2.0;
|
||||||
|
|
||||||
let mut image = self.image;
|
|
||||||
image.source_rect[2] = DIGITS_WIDTH as u32;
|
|
||||||
for digit in digits.iter() {
|
for digit in digits.iter() {
|
||||||
image.source_rect[0] = DIGITS_WIDTH as u32 * *digit;
|
c.rect(x, y, width, height)
|
||||||
c.view().rect(x, y, width, height)
|
.image(&self.image)
|
||||||
.image(image).rgba(color[0], color[1], color[2], 1.0)
|
.src_rect(*digit * DIGITS_WIDTH as u32, 0, DIGITS_WIDTH as u32, DIGITS_HEIGHT as u32)
|
||||||
|
.rgba(color[0], color[1], color[2], 1.0)
|
||||||
.draw(gl);
|
.draw(gl);
|
||||||
x += width;
|
x += width;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,7 @@ impl SettingsInJson {
|
||||||
// 512 color
|
// 512 color
|
||||||
tiles_colors.push(vec![237.0, 200.0, 80.0]);
|
tiles_colors.push(vec![237.0, 200.0, 80.0]);
|
||||||
SettingsInJson {
|
SettingsInJson {
|
||||||
asset_folder: "assets".to_strbuf(),
|
asset_folder: "assets".to_string(),
|
||||||
window_background_color: vec![255.0, 248.0, 239.0],
|
window_background_color: vec![255.0, 248.0, 239.0],
|
||||||
comment1_offset_y: 72.0,
|
comment1_offset_y: 72.0,
|
||||||
comment2_offset_y: 100.0,
|
comment2_offset_y: 100.0,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use piston::*;
|
||||||
use number_renderer::NumberRenderer;
|
use number_renderer::NumberRenderer;
|
||||||
use settings::Settings;
|
use settings::Settings;
|
||||||
|
|
||||||
#[deriving(Clone, Eq)]
|
#[deriving(Clone, PartialEq)]
|
||||||
pub enum TileState {
|
pub enum TileState {
|
||||||
TileStatic,
|
TileStatic,
|
||||||
/// (t, x, y, origin_x, origin_x)
|
/// (t, x, y, origin_x, origin_x)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue