1
1
use std:: num:: NonZeroU8 ;
2
2
use yew:: { html, Component , Context , Html } ;
3
3
4
- use crate :: dice_tower:: Roll ;
5
-
6
- use super :: DiceType ;
7
-
8
- pub enum RollMsg {
9
- D4 ,
10
- D6 ,
11
- D8 ,
12
- D10 ,
13
- D12 ,
14
- D20 ,
15
- D100 ,
16
- }
4
+ use core:: { DiceType , Roll } ;
17
5
18
6
pub struct Tower {
19
7
dice : DiceType ,
20
8
}
21
9
22
10
impl Component for Tower {
23
- type Message = RollMsg ;
11
+ type Message = DiceType ;
24
12
type Properties = ( ) ;
25
13
26
14
fn create ( _ctx : & Context < Self > ) -> Self {
@@ -29,16 +17,15 @@ impl Component for Tower {
29
17
30
18
fn update ( & mut self , _ctx : & Context < Self > , msg : Self :: Message ) -> bool {
31
19
let ( _number, dice) = match msg {
32
- RollMsg :: D4 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , crate :: dice_tower:: DiceType :: D4 ) ,
33
- RollMsg :: D6 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , crate :: dice_tower:: DiceType :: D6 ) ,
34
- RollMsg :: D8 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , crate :: dice_tower:: DiceType :: D8 ) ,
35
- RollMsg :: D10 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , crate :: dice_tower:: DiceType :: D10 ) ,
36
- RollMsg :: D12 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , crate :: dice_tower:: DiceType :: D12 ) ,
37
- RollMsg :: D20 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , crate :: dice_tower:: DiceType :: D20 ) ,
38
- RollMsg :: D100 => (
39
- NonZeroU8 :: new ( 1 ) . unwrap ( ) ,
40
- crate :: dice_tower:: DiceType :: D100 ,
41
- ) ,
20
+ DiceType :: D4 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , DiceType :: D4 ) ,
21
+ DiceType :: D6 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , DiceType :: D6 ) ,
22
+ DiceType :: D8 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , DiceType :: D8 ) ,
23
+ DiceType :: D10 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , DiceType :: D10 ) ,
24
+ DiceType :: D12 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , DiceType :: D12 ) ,
25
+ DiceType :: D20 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , DiceType :: D20 ) ,
26
+ DiceType :: D100 => ( NonZeroU8 :: new ( 1 ) . unwrap ( ) , DiceType :: D100 ) ,
27
+ // Other dice types are not supported
28
+ _ => return false ,
42
29
} ;
43
30
44
31
self . dice = dice;
@@ -51,13 +38,13 @@ impl Component for Tower {
51
38
}
52
39
53
40
fn view ( & self , ctx : & Context < Self > ) -> Html {
54
- let d4_click = ctx. link ( ) . callback ( |_| RollMsg :: D4 ) ;
55
- let d6_click = ctx. link ( ) . callback ( |_| RollMsg :: D6 ) ;
56
- let d8_click = ctx. link ( ) . callback ( |_| RollMsg :: D8 ) ;
57
- let d10_click = ctx. link ( ) . callback ( |_| RollMsg :: D10 ) ;
58
- let d12_click = ctx. link ( ) . callback ( |_| RollMsg :: D12 ) ;
59
- let d20_click = ctx. link ( ) . callback ( |_| RollMsg :: D20 ) ;
60
- let d100_click = ctx. link ( ) . callback ( |_| RollMsg :: D100 ) ;
41
+ let d4_click = ctx. link ( ) . callback ( |_| DiceType :: D4 ) ;
42
+ let d6_click = ctx. link ( ) . callback ( |_| DiceType :: D6 ) ;
43
+ let d8_click = ctx. link ( ) . callback ( |_| DiceType :: D8 ) ;
44
+ let d10_click = ctx. link ( ) . callback ( |_| DiceType :: D10 ) ;
45
+ let d12_click = ctx. link ( ) . callback ( |_| DiceType :: D12 ) ;
46
+ let d20_click = ctx. link ( ) . callback ( |_| DiceType :: D20 ) ;
47
+ let d100_click = ctx. link ( ) . callback ( |_| DiceType :: D100 ) ;
61
48
62
49
html ! {
63
50
<section id="dice-tower" class="text-block" >
@@ -69,7 +56,7 @@ impl Component for Tower {
69
56
<button onclick={ d12_click} >{ "D12" } </button>
70
57
<button onclick={ d20_click} >{ "D20" } </button>
71
58
<button onclick={ d100_click} >{ "D100" } </button>
72
- <div>{ Roll :: roll( & Roll {
59
+ <div>{ core :: Roll :: roll( & Roll {
73
60
number: NonZeroU8 :: new( 1 ) . unwrap( ) ,
74
61
dice: self . dice,
75
62
} ) } </div>
0 commit comments