summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/src/entity/tutorial.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/server/src/entity/tutorial.rs b/server/src/entity/tutorial.rs
index 0d3d512d..7aa1578a 100644
--- a/server/src/entity/tutorial.rs
+++ b/server/src/entity/tutorial.rs
@@ -1,6 +1,5 @@
-use crate::{trm, TrError};
-
use super::{Entity, EntityContext};
+use crate::{trm, TrError};
use anyhow::Result;
use hurrycurry_protocol::{
glam::IVec2, ItemIndex, Message, PacketC, PlayerID, Recipe, RecipeIndex, TileIndex,
@@ -11,6 +10,8 @@ pub struct Tutorial {
pub player: PlayerID,
target: ItemIndex,
+ next_update_due: f32,
+
current_hint: Option<(Option<IVec2>, Message)>,
delete_timer: f32,
}
@@ -19,6 +20,7 @@ impl Tutorial {
pub fn new(player: PlayerID, item: ItemIndex) -> Self {
Self {
player,
+ next_update_due: 0.,
target: item,
current_hint: None,
delete_timer: 1.5,
@@ -39,6 +41,13 @@ impl Entity for Tutorial {
}
}
fn tick(&mut self, c: EntityContext<'_>) -> Result<()> {
+ const TARGET_DT: f32 = 0.2;
+ self.next_update_due -= c.dt;
+ if self.next_update_due > 0. {
+ return Ok(());
+ }
+ self.next_update_due += TARGET_DT;
+
let mut hint = StepContext {
ent: &c,
player: self.player,
@@ -47,7 +56,7 @@ impl Entity for Tutorial {
.aquire_item(self.target)
.err();
if hint.is_none() {
- self.delete_timer -= c.dt;
+ self.delete_timer -= TARGET_DT;
if self.delete_timer <= 0. {
hint = None
} else {