@@ -24,9 +24,8 @@ use glyph_brush::{ | |||||
BrushAction, BrushError, FontId, GlyphBrush, GlyphBrushBuilder, GlyphVertex, OwnedSection, | BrushAction, BrushError, FontId, GlyphBrush, GlyphBrushBuilder, GlyphVertex, OwnedSection, | ||||
OwnedText, Rectangle, | OwnedText, Rectangle, | ||||
}; | }; | ||||
use log::warn; | |||||
use ordered_float::OrderedFloat; | use ordered_float::OrderedFloat; | ||||
use space_crush_common::misc::{Vfs, WorldHelper as _}; | |||||
use space_crush_common::misc::{LogResult, Vfs, WorldHelper as _}; | |||||
use specs::World; | use specs::World; | ||||
use crate::{misc::WorldHelper, Error}; | use crate::{misc::WorldHelper, Error}; | ||||
@@ -149,9 +148,7 @@ impl TextCache { | |||||
drop(inner); | drop(inner); | ||||
if update_requested { | if update_requested { | ||||
if let Err(err) = self.update() { | |||||
warn!("Unable to update text cache: {}", err); | |||||
} | |||||
self.update().error("Unable to update text cache"); | |||||
} | } | ||||
} | } | ||||
@@ -347,7 +344,7 @@ fn resize_texture(new_size: (u32, u32), cur_size: Option<(u32, u32)>) -> Result< | |||||
} | } | ||||
fn update_texture(texture: &Texture, rect: Rectangle<u32>, data: &[u8]) { | fn update_texture(texture: &Texture, rect: Rectangle<u32>, data: &[u8]) { | ||||
let ret = GlcError::checked(|| { | |||||
GlcError::checked(|| { | |||||
gl::texture_sub_image_2d( | gl::texture_sub_image_2d( | ||||
texture.id(), | texture.id(), | ||||
0, | 0, | ||||
@@ -359,11 +356,8 @@ fn update_texture(texture: &Texture, rect: Rectangle<u32>, data: &[u8]) { | |||||
gl::UNSIGNED_BYTE, | gl::UNSIGNED_BYTE, | ||||
data.as_ptr() as _, | data.as_ptr() as _, | ||||
) | ) | ||||
}); | |||||
if let Err(err) = ret { | |||||
warn!("Unable to update text texture: {}", err); | |||||
} | |||||
}) | |||||
.error("Unable to update text texture"); | |||||
} | } | ||||
fn create_vertex(data: GlyphVertex<Extra>) -> Vertex { | fn create_vertex(data: GlyphVertex<Extra>) -> Vertex { | ||||
@@ -1,7 +1,6 @@ | |||||
use std::string::ToString; | use std::string::ToString; | ||||
use log::warn; | |||||
use space_crush_common::resources::Global; | |||||
use space_crush_common::{misc::LogResult, resources::Global}; | |||||
use specs::{ReadExpect, System}; | use specs::{ReadExpect, System}; | ||||
use crate::{ | use crate::{ | ||||
@@ -88,8 +87,6 @@ where | |||||
if old != new { | if old != new { | ||||
*old = *new; | *old = *new; | ||||
let s = update(old); | let s = update(old); | ||||
if let Err(err) = text.update(pos, s) { | |||||
warn!("Unable to update debug text: {}", err); | |||||
} | |||||
text.update(pos, s).error("Unable to update debug text"); | |||||
} | } | ||||
} | } |
@@ -4,9 +4,8 @@ use glc::{ | |||||
shader::{Program, Type}, | shader::{Program, Type}, | ||||
vector::Vector3f, | vector::Vector3f, | ||||
}; | }; | ||||
use log::error; | |||||
use shrev::{EventChannel, ReaderId}; | use shrev::{EventChannel, ReaderId}; | ||||
use space_crush_common::misc::WorldHelper as _; | |||||
use space_crush_common::misc::{LogResult, WorldHelper as _}; | |||||
use specs::{prelude::*, ReadExpect, System, World, WriteExpect}; | use specs::{prelude::*, ReadExpect, System, World, WriteExpect}; | ||||
use crate::{ | use crate::{ | ||||
@@ -75,9 +74,9 @@ impl<'a> System<'a> for Init { | |||||
gl::viewport(0, 0, self.resolution.0 as _, self.resolution.1 as _); | gl::viewport(0, 0, self.resolution.0 as _, self.resolution.1 as _); | ||||
if let Err(err) = camera.resize(self.resolution.0 as _, self.resolution.1 as _) { | |||||
error!("Error while updating camera: {}", err); | |||||
} | |||||
camera | |||||
.resize(self.resolution.0 as _, self.resolution.1 as _) | |||||
.error("Error while updating camera"); | |||||
} | } | ||||
/* zoom */ | /* zoom */ | ||||
@@ -90,9 +89,9 @@ impl<'a> System<'a> for Init { | |||||
* Matrix4f::scale(z.into()) | * Matrix4f::scale(z.into()) | ||||
* Matrix4f::translate((-state.mouse_pos.0, -state.mouse_pos.1, 0.0).into()); | * Matrix4f::translate((-state.mouse_pos.0, -state.mouse_pos.1, 0.0).into()); | ||||
if let Err(err) = camera.update_with(move |v| m * v) { | |||||
error!("Error while zooming camera: {}", err); | |||||
} | |||||
camera | |||||
.update_with(move |v| m * v) | |||||
.error("Error while zooming camera"); | |||||
} | } | ||||
} | } | ||||
@@ -111,14 +110,14 @@ impl<'a> System<'a> for Init { | |||||
); | ); | ||||
let m = Matrix4f::translate(translate); | let m = Matrix4f::translate(translate); | ||||
if let Err(err) = camera.update_with(move |v| m * v) { | |||||
error!("Error while moving camera: {}", err); | |||||
} | |||||
camera | |||||
.update_with(move |v| m * v) | |||||
.error("Error while moving camera"); | |||||
} | } | ||||
if let Err(err) = uniform.update() { | |||||
error!("Error while updating global uniform data: {}", err); | |||||
} | |||||
uniform | |||||
.update() | |||||
.error("Error while updating global uniform data"); | |||||
/* render background */ | /* render background */ | ||||
self.program.bind(); | self.program.bind(); | ||||
@@ -5,8 +5,10 @@ use glc::{ | |||||
texture::Texture, | texture::Texture, | ||||
vector::Vector4f, | vector::Vector4f, | ||||
}; | }; | ||||
use log::error; | |||||
use space_crush_common::components::{Owned, Planet, Position}; | |||||
use space_crush_common::{ | |||||
components::{Owned, Planet, Position}, | |||||
misc::LogResult, | |||||
}; | |||||
use specs::{prelude::*, ReadExpect, ReadStorage, System, World}; | use specs::{prelude::*, ReadExpect, ReadStorage, System, World}; | ||||
use crate::{ | use crate::{ | ||||
@@ -96,19 +98,12 @@ impl<'a> System<'a> for Planets { | |||||
Vector4f::new(p_x, p_y, 0.0, 1.0), | Vector4f::new(p_x, p_y, 0.0, 1.0), | ||||
); | ); | ||||
if let Err(err) = self | |||||
.program | |||||
self.program | |||||
.uniform(self.location_glow_color, Uniform::Vector4f(&c)) | .uniform(self.location_glow_color, Uniform::Vector4f(&c)) | ||||
{ | |||||
error!("Error while updating glow color: {}", err); | |||||
} | |||||
if let Err(err) = self | |||||
.program | |||||
.error("Error while updating glow color"); | |||||
self.program | |||||
.uniform(self.location_model, Uniform::Matrix4f(&m)) | .uniform(self.location_model, Uniform::Matrix4f(&m)) | ||||
{ | |||||
error!("Error while updating model matrix: {}", err); | |||||
} | |||||
.error("Error while updating model matrix"); | |||||
geometry.render_quad(); | geometry.render_quad(); | ||||
} | } | ||||
@@ -5,8 +5,10 @@ use glc::{ | |||||
texture::Texture, | texture::Texture, | ||||
vector::Vector4f, | vector::Vector4f, | ||||
}; | }; | ||||
use log::error; | |||||
use space_crush_common::components::{Owned, Position, Ship, ShipType, Velocity}; | |||||
use space_crush_common::{ | |||||
components::{Owned, Position, Ship, ShipType, Velocity}, | |||||
misc::LogResult, | |||||
}; | |||||
use specs::{prelude::*, ReadExpect, ReadStorage, System, World}; | use specs::{prelude::*, ReadExpect, ReadStorage, System, World}; | ||||
use crate::{ | use crate::{ | ||||
@@ -111,19 +113,12 @@ impl<'a> System<'a> for Ships { | |||||
Vector4f::new(p_x, p_y, 0.0, 1.0), | Vector4f::new(p_x, p_y, 0.0, 1.0), | ||||
); | ); | ||||
if let Err(err) = self | |||||
.program | |||||
self.program | |||||
.uniform(self.location_glow_color, Uniform::Vector4f(&c)) | .uniform(self.location_glow_color, Uniform::Vector4f(&c)) | ||||
{ | |||||
error!("Error while updating glow color: {}", err); | |||||
} | |||||
if let Err(err) = self | |||||
.program | |||||
.error("Error while updating glow color"); | |||||
self.program | |||||
.uniform(self.location_model, Uniform::Matrix4f(&m)) | .uniform(self.location_model, Uniform::Matrix4f(&m)) | ||||
{ | |||||
error!("Error while updating model matrix: {}", err); | |||||
} | |||||
.error("Error while updating model matrix"); | |||||
geometry.render_quad(); | geometry.render_quad(); | ||||
} | } | ||||
@@ -0,0 +1,50 @@ | |||||
use std::fmt::Display; | |||||
use log::{error, warn}; | |||||
pub trait LogResult { | |||||
type Ok; | |||||
fn warn(self, s: &str) -> Option<Self::Ok>; | |||||
fn error(self, s: &str) -> Option<Self::Ok>; | |||||
fn panic(self, s: &str) -> Self::Ok; | |||||
} | |||||
impl<T, E> LogResult for Result<T, E> | |||||
where | |||||
E: Display, | |||||
{ | |||||
type Ok = T; | |||||
fn warn(self, s: &str) -> Option<T> { | |||||
match self { | |||||
Ok(val) => Some(val), | |||||
Err(err) => { | |||||
warn!("{}: {}", s, err); | |||||
None | |||||
} | |||||
} | |||||
} | |||||
fn error(self, s: &str) -> Option<T> { | |||||
match self { | |||||
Ok(val) => Some(val), | |||||
Err(err) => { | |||||
error!("{}: {}", s, err); | |||||
None | |||||
} | |||||
} | |||||
} | |||||
fn panic(self, s: &str) -> T { | |||||
match self { | |||||
Ok(val) => val, | |||||
Err(err) => { | |||||
error!("{}: {}", s, err); | |||||
panic!("{}: {}", s, err); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -1,7 +1,9 @@ | |||||
mod log; | mod log; | ||||
mod log_result; | |||||
mod vfs; | mod vfs; | ||||
mod world; | mod world; | ||||
pub use self::log::init as init_logger; | pub use self::log::init as init_logger; | ||||
pub use self::vfs::{Vfs, VfsError}; | pub use self::vfs::{Vfs, VfsError}; | ||||
pub use log_result::LogResult; | |||||
pub use world::{Persistence, WorldHelper}; | pub use world::{Persistence, WorldHelper}; |