1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
use std::time::SystemTime;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub enum TargetingStatus {
None,
Targeting,
Targeted,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Targeting {
target : Option<String>,
status : TargetingStatus,
time : u64,
start : Option<SystemTime>,
}
impl Targeting {
pub fn new() -> Targeting {
Targeting {
target : None,
status : TargetingStatus::None,
time : 3,
start : None,
}
}
pub fn process(&mut self) {
match self.start {
Some(time) => {
if time.elapsed().unwrap().as_secs() > self.time {
self.status = TargetingStatus::Targeted;
self.start = None;
}
}
None => (),
}
}
pub fn give_target(&mut self, target : Option<String>) {
self.target = target;
match self.target {
Some(_) => {
self.status = TargetingStatus::Targeting;
self.start = Some(SystemTime::now());
},
None => {
self.status = TargetingStatus::None;
self.start = None;
}
}
}
pub fn recv_target(&self) -> Option<String> {
self.target.clone()
}
pub fn recv_status(&self) -> TargetingStatus {
self.status.clone()
}
}
|