summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2018-06-03 21:01:42 +0200
committerJustin Worthe <justin@worthe-it.co.za>2018-06-03 21:01:42 +0200
commitcee4589ff116394b94643b37e251c2be67fe369c (patch)
tree66a1b9d1799b7072382f77abe1bdcee0bf1303b6
parent7a8fe60eb17d66771b153280b76546bcf46a9c7e (diff)
Added a custom cursor
-rw-r--r--Cargo.lock18
-rw-r--r--src/geometry.rs3
-rw-r--r--src/main.rs17
-rw-r--r--src_assets/sprites/Cursor.pngbin0 -> 1265 bytes
-rw-r--r--src_assets/sprites/Cursor.svg81
5 files changed, 117 insertions, 2 deletions
diff --git a/Cargo.lock b/Cargo.lock
index b03a888..d303906 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -133,6 +133,7 @@ dependencies = [
"gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"sdl2 0.29.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -371,6 +372,11 @@ dependencies = [
]
[[package]]
+name = "redox_syscall"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
name = "regex"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -428,6 +434,16 @@ dependencies = [
]
[[package]]
+name = "time"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.37 (registry+https://github.com/rust-lang/crates.io-index)",
+ "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
name = "unreachable"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -518,6 +534,7 @@ dependencies = [
"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"
"checksum rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "485541959c8ecc49865526fe6c4de9653dd6e60d829d6edf0be228167b60372d"
"checksum rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d24ad214285a7729b174ed6d3bcfcb80177807f959d95fafd5bfc5c4f201ac8"
+"checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd"
"checksum regex 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5be5347bde0c48cfd8c3fdc0766cdfe9d8a755ef84d620d6794c778c91de8b2b"
"checksum regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e"
"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
@@ -525,6 +542,7 @@ dependencies = [
"checksum sdl2 0.29.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c366cfa1f22d001774214ce2fb13f369af760b016bc79cc62d7f5ae15c00fea"
"checksum sdl2-sys 0.27.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8d9f87e3d948f94f2d8688970422f49249c20e97f8f3aad76cb8729901d4eb10"
"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963"
+"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b"
"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
diff --git a/src/geometry.rs b/src/geometry.rs
index f84a973..6f7f658 100644
--- a/src/geometry.rs
+++ b/src/geometry.rs
@@ -7,6 +7,9 @@ pub struct Vec2d {
}
impl Vec2d {
+ pub fn new(x: f64, y: f64) -> Vec2d {
+ Vec2d {x, y}
+ }
pub fn distance(&self, other: Vec2d) -> f64 {
self.distance_squared(other).sqrt()
}
diff --git a/src/main.rs b/src/main.rs
index 857e744..c98c80e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -32,7 +32,8 @@ struct BugBasherGame {
lives: i64,
game_over: bool,
time_to_next_bug: f64,
- total_time: f64
+ total_time: f64,
+ cursor_pos: Vec2d
}
impl App<AssetId> for BugBasherGame {
@@ -86,6 +87,9 @@ impl App<AssetId> for BugBasherGame {
bug.alive = false;
}
},
+ InputEvent::MouseMotion(x, y) => {
+ self.cursor_pos = Vec2d::new(x,y);
+ },
InputEvent::KeyPressed(KeyCode::Return) => {
self.reset();
},
@@ -130,6 +134,14 @@ impl App<AssetId> for BugBasherGame {
BugBasherGame::print_string(renderer, &points_str, Alignment::Center, 0., -25.);
}
}
+
+ {
+ let mut renderer = renderer.sprite_mode();
+ renderer.draw(
+ &Affine::translate(self.cursor_pos.x, self.cursor_pos.y),
+ SpriteId::Cursor
+ );
+ }
}
}
@@ -149,7 +161,8 @@ impl BugBasherGame {
lives: 0,
game_over: true,
time_to_next_bug: 0.,
- total_time: 0.
+ total_time: 0.,
+ cursor_pos: Vec2d::new(0.,0.)
};
game.reset();
game
diff --git a/src_assets/sprites/Cursor.png b/src_assets/sprites/Cursor.png
new file mode 100644
index 0000000..c097119
--- /dev/null
+++ b/src_assets/sprites/Cursor.png
Binary files differ
diff --git a/src_assets/sprites/Cursor.svg b/src_assets/sprites/Cursor.svg
new file mode 100644
index 0000000..9310f50
--- /dev/null
+++ b/src_assets/sprites/Cursor.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="50"
+ height="50"
+ viewBox="0 0 50 50"
+ version="1.1"
+ id="svg4540"
+ inkscape:version="0.92.2 2405546, 2018-03-11"
+ sodipodi:docname="Cursor.svg"
+ inkscape:export-filename="/home/justin/proj/bug_basher/src_assets/sprites/Cursor.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs4534" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="8"
+ inkscape:cx="26.000629"
+ inkscape:cy="24.118821"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="px"
+ inkscape:showpageshadow="false"
+ showborder="true"
+ inkscape:window-width="1916"
+ inkscape:window-height="1055"
+ inkscape:window-x="0"
+ inkscape:window-y="21"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata4537">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1072.5196)">
+ <circle
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path5085"
+ cx="25"
+ cy="1097.5197"
+ r="23.5" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 0,1072.5196 50,50"
+ id="path5087"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 0,1122.5196 50,-50"
+ id="path5087-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>