diff --git a/assets/voxygen/element/animation/loaders/cauldron1.png b/assets/voxygen/element/animation/loaders/cauldron1.png new file mode 100644 index 0000000000..65785c6b1d --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cauldron1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a0da396c0b663c30ec3f62f07903462a119b69f092bb76a2d7c3de17fcaa1ce +size 594 diff --git a/assets/voxygen/element/animation/loaders/cauldron2.png b/assets/voxygen/element/animation/loaders/cauldron2.png new file mode 100644 index 0000000000..2b26637855 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cauldron2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7da9b5cc416d960fe84c83bf3a8da0636b92d4bafb9648657276008c7420daf6 +size 608 diff --git a/assets/voxygen/element/animation/loaders/cauldron3.png b/assets/voxygen/element/animation/loaders/cauldron3.png new file mode 100644 index 0000000000..0e9495cc8c --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cauldron3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d151350d9786e412876323ab785dac7dcfe68ff99109eb11e4324c5be1ea638b +size 589 diff --git a/assets/voxygen/element/animation/loaders/cauldron4.png b/assets/voxygen/element/animation/loaders/cauldron4.png new file mode 100644 index 0000000000..f1be673667 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cauldron4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e06b44da2b47f27288d7d6c3ce1dfdf478f9cf4afc82761ac5d8fa9046f1330 +size 588 diff --git a/assets/voxygen/element/animation/loaders/cauldron5.png b/assets/voxygen/element/animation/loaders/cauldron5.png new file mode 100644 index 0000000000..5c480559e7 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cauldron5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5efe75d24b0552c700fc652f3d1f7b028a7c3143ca698e106c51e4c34be79791 +size 598 diff --git a/assets/voxygen/element/animation/loaders/cheese1.png b/assets/voxygen/element/animation/loaders/cheese1.png new file mode 100644 index 0000000000..53e31352b7 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cheese1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7fbd985679497f0cbea89d1cfcd58978b3a2ca5d1ab02308e3af9c6d4a60d89 +size 382 diff --git a/assets/voxygen/element/animation/loaders/cheese2.png b/assets/voxygen/element/animation/loaders/cheese2.png new file mode 100644 index 0000000000..2c1e1f2bc5 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cheese2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f09690fc40da317717ad9ce5135f37e8aaae471b7c571df6dfd3bdc08f0d994c +size 385 diff --git a/assets/voxygen/element/animation/loaders/cheese3.png b/assets/voxygen/element/animation/loaders/cheese3.png new file mode 100644 index 0000000000..0d20e63dfe --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cheese3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:645bf5959fcd7300b16b32f850875c52d79cfe91a2c2bf23accba66ea400fb0e +size 384 diff --git a/assets/voxygen/element/animation/loaders/cheese4.png b/assets/voxygen/element/animation/loaders/cheese4.png new file mode 100644 index 0000000000..c0a5e7a6c5 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cheese4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45a41594ee617c1c2d5731c5c772703639088300245afa772aeda9d79309e3c8 +size 381 diff --git a/assets/voxygen/element/animation/loaders/cheese5.png b/assets/voxygen/element/animation/loaders/cheese5.png new file mode 100644 index 0000000000..49fd58323b --- /dev/null +++ b/assets/voxygen/element/animation/loaders/cheese5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f6a14af21481e8256a9ec33aa8d8e3f5e168ea3a0f1560d42b814a353984a2b +size 387 diff --git a/assets/voxygen/element/animation/loaders/coins1.png b/assets/voxygen/element/animation/loaders/coins1.png new file mode 100644 index 0000000000..4a314448d8 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/coins1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4805d0e712f9886f6fc470d6bad5b9b59e46cab2a09fe5a5233b2748f666e34e +size 727 diff --git a/assets/voxygen/element/animation/loaders/coins2.png b/assets/voxygen/element/animation/loaders/coins2.png new file mode 100644 index 0000000000..3d38e036f2 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/coins2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:543341b484f62f6dd59540de1d81ae67e0de2188a871a8f35478cb61b8d38023 +size 744 diff --git a/assets/voxygen/element/animation/loaders/coins3.png b/assets/voxygen/element/animation/loaders/coins3.png new file mode 100644 index 0000000000..fc3bd04160 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/coins3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97fe118574cae0a2713f869caf984356fd9add1b865cb0773d79621bee9a2e7a +size 705 diff --git a/assets/voxygen/element/animation/loaders/coins4.png b/assets/voxygen/element/animation/loaders/coins4.png new file mode 100644 index 0000000000..5f7dbd4d94 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/coins4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da98ef343fb424c92413b84e81223e342cd69212ba09d59042755d24115f0f2d +size 691 diff --git a/assets/voxygen/element/animation/loaders/coins5.png b/assets/voxygen/element/animation/loaders/coins5.png new file mode 100644 index 0000000000..9d7417c79f --- /dev/null +++ b/assets/voxygen/element/animation/loaders/coins5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d6bd95ef55a4ded34a8e16e68437d3c0b69d532af5c1dd497730c1a7630d1f0 +size 747 diff --git a/assets/voxygen/element/animation/loaders/house1.png b/assets/voxygen/element/animation/loaders/house1.png new file mode 100644 index 0000000000..d3f88aa065 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/house1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c2e36cd7b23cbb9f29f55c4ecfbd156ffb49b77e1aeb42148ba498ee58e0cb1 +size 370 diff --git a/assets/voxygen/element/animation/loaders/house2.png b/assets/voxygen/element/animation/loaders/house2.png new file mode 100644 index 0000000000..1321270a80 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/house2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e079852d40abf5bde315d49835ca134924626f1998e31860051c891b67ec007c +size 369 diff --git a/assets/voxygen/element/animation/loaders/house3.png b/assets/voxygen/element/animation/loaders/house3.png new file mode 100644 index 0000000000..f3f1b9b57e --- /dev/null +++ b/assets/voxygen/element/animation/loaders/house3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f58088256504b995a5dc1ff07a71ea36fcdb59731e4fb9754da45b672cf4ad7 +size 371 diff --git a/assets/voxygen/element/animation/loaders/house4.png b/assets/voxygen/element/animation/loaders/house4.png new file mode 100644 index 0000000000..42c0ea73c3 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/house4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a7ca89fad8ec8aa23b553f2f4cced25f73ab92a5c855de784f8d4ac3b10dd49 +size 376 diff --git a/assets/voxygen/element/animation/loaders/house5.png b/assets/voxygen/element/animation/loaders/house5.png new file mode 100644 index 0000000000..5bbabbdc5f --- /dev/null +++ b/assets/voxygen/element/animation/loaders/house5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:120ebc72b6cfa78a46fad5c481b54f6ee61ffbf0808fdaa601aa6cd6a49f9d60 +size 369 diff --git a/assets/voxygen/element/animation/loaders/ship1.png b/assets/voxygen/element/animation/loaders/ship1.png new file mode 100644 index 0000000000..a88c6342d9 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/ship1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43a7446bad3e502e66cb71fbfdbd61da24435ba0ac09b436a093b9d0cc0ab6d8 +size 381 diff --git a/assets/voxygen/element/animation/loaders/ship2.png b/assets/voxygen/element/animation/loaders/ship2.png new file mode 100644 index 0000000000..b2363a8a58 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/ship2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cef58c67ada2cf5361f82b80c9d3234f2a64a9898f71002c78bed3fd569792f2 +size 381 diff --git a/assets/voxygen/element/animation/loaders/ship3.png b/assets/voxygen/element/animation/loaders/ship3.png new file mode 100644 index 0000000000..01481ebae7 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/ship3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6f7e7d20cda0ed70d302873e7ba5e62158f4b6c05da1dd0e2c6b8d79bc4e0fd +size 379 diff --git a/assets/voxygen/element/animation/loaders/ship4.png b/assets/voxygen/element/animation/loaders/ship4.png new file mode 100644 index 0000000000..b2363a8a58 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/ship4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cef58c67ada2cf5361f82b80c9d3234f2a64a9898f71002c78bed3fd569792f2 +size 381 diff --git a/assets/voxygen/element/animation/loaders/ship5.png b/assets/voxygen/element/animation/loaders/ship5.png new file mode 100644 index 0000000000..a88c6342d9 --- /dev/null +++ b/assets/voxygen/element/animation/loaders/ship5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43a7446bad3e502e66cb71fbfdbd61da24435ba0ac09b436a093b9d0cc0ab6d8 +size 381 diff --git a/voxygen/src/menu/main/ui/connecting.rs b/voxygen/src/menu/main/ui/connecting.rs index 1ca9c3d5bf..add8f5fef9 100644 --- a/voxygen/src/menu/main/ui/connecting.rs +++ b/voxygen/src/menu/main/ui/connecting.rs @@ -8,12 +8,38 @@ use crate::{ }; use iced::{button, Align, Column, Container, Length, Row, Space, Text}; -const GEAR_ANIMATION_SPEED_FACTOR: f64 = 10.0; +const LOADER_CAULDRON_SPEED_FACTOR: f64 = 8.0; +const LOADER_CHEESE_SPEED_FACTOR: f64 = 6.0; +const LOADER_COINS_SPEED_FACTOR: f64 = 6.0; +const LOADER_HOUSE_SPEED_FACTOR: f64 = 1.0; +const LOADER_SHIP_SPEED_FACTOR: f64 = 1.0; + +enum LoaderAnimation { + Cauldron, + Cheese, + Coins, + House, + Ship, +} + +impl LoaderAnimation { + fn random() -> LoaderAnimation { + match rand::random::() % 5 { + 0 => LoaderAnimation::Cauldron, + 1 => LoaderAnimation::Cheese, + 2 => LoaderAnimation::Coins, + 3 => LoaderAnimation::House, + _ => LoaderAnimation::Ship, + } + } +} + /// Connecting screen for the main menu pub struct Screen { cancel_button: button::State, add_button: button::State, tip_number: u16, + loader_animation: LoaderAnimation, } impl Screen { @@ -22,6 +48,7 @@ impl Screen { cancel_button: Default::default(), add_button: Default::default(), tip_number: rand::random(), + loader_animation: LoaderAnimation::random(), } } @@ -35,14 +62,58 @@ impl Screen { button_style: style::button::Style, show_tip: bool, ) -> Element { - let gear_anim_time = time * GEAR_ANIMATION_SPEED_FACTOR; // TODO: add built in support for animated images - let gear_anim_image = match (gear_anim_time % 5.0).trunc() as u8 { - 0 => imgs.f1, - 1 => imgs.f2, - 2 => imgs.f3, - 3 => imgs.f4, - _ => imgs.f5, + let gear_anim_image = match self.loader_animation { + LoaderAnimation::Cauldron => { + let gear_anim_time = time * LOADER_CAULDRON_SPEED_FACTOR; + match (gear_anim_time % 5.0).trunc() as u8 { + 0 => imgs.loader_cauldron1, + 1 => imgs.loader_cauldron2, + 2 => imgs.loader_cauldron3, + 3 => imgs.loader_cauldron4, + _ => imgs.loader_cauldron5, + } + }, + LoaderAnimation::Cheese => { + let gear_anim_time = time * LOADER_CHEESE_SPEED_FACTOR; + match (gear_anim_time % 5.0).trunc() as u8 { + 0 => imgs.loader_cheese1, + 1 => imgs.loader_cheese2, + 2 => imgs.loader_cheese3, + 3 => imgs.loader_cheese4, + _ => imgs.loader_cheese5, + } + }, + LoaderAnimation::Coins => { + let gear_anim_time = time * LOADER_COINS_SPEED_FACTOR; + match (gear_anim_time % 5.0).trunc() as u8 { + 0 => imgs.loader_coins1, + 1 => imgs.loader_coins2, + 2 => imgs.loader_coins3, + 3 => imgs.loader_coins4, + _ => imgs.loader_coins5, + } + }, + LoaderAnimation::House => { + let gear_anim_time = time * LOADER_HOUSE_SPEED_FACTOR; + match (gear_anim_time % 5.0).trunc() as u8 { + 0 => imgs.loader_house1, + 1 => imgs.loader_house2, + 2 => imgs.loader_house3, + 3 => imgs.loader_house4, + _ => imgs.loader_house5, + } + }, + LoaderAnimation::Ship => { + let gear_anim_time = time * LOADER_SHIP_SPEED_FACTOR; + match (gear_anim_time % 5.0).trunc() as u8 { + 0 => imgs.loader_ship1, + 1 => imgs.loader_ship2, + 2 => imgs.loader_ship3, + 3 => imgs.loader_ship4, + _ => imgs.loader_ship5, + } + }, }; let children = match connection_state { @@ -83,8 +154,8 @@ impl Screen { let gear = Container::new( Image::new(gear_anim_image) - .width(Length::Units(74)) - .height(Length::Units(62)), + .width(Length::Units(64)) + .height(Length::Units(64)), ) .width(Length::Fill) .padding(10) diff --git a/voxygen/src/menu/main/ui/mod.rs b/voxygen/src/menu/main/ui/mod.rs index 08e1bdb84d..bd965f7f34 100644 --- a/voxygen/src/menu/main/ui/mod.rs +++ b/voxygen/src/menu/main/ui/mod.rs @@ -52,12 +52,36 @@ image_ids_ice! { selection_hover: "voxygen.element.frames.selection_hover", selection_press: "voxygen.element.frames.selection_press", - // Animation - f1: "voxygen.element.animation.gears.1", - f2: "voxygen.element.animation.gears.2", - f3: "voxygen.element.animation.gears.3", - f4: "voxygen.element.animation.gears.4", - f5: "voxygen.element.animation.gears.5", + // Loader Animations + loader_cauldron1: "voxygen.element.animation.loaders.cauldron1", + loader_cauldron2: "voxygen.element.animation.loaders.cauldron2", + loader_cauldron3: "voxygen.element.animation.loaders.cauldron3", + loader_cauldron4: "voxygen.element.animation.loaders.cauldron4", + loader_cauldron5: "voxygen.element.animation.loaders.cauldron5", + + loader_cheese1: "voxygen.element.animation.loaders.cheese1", + loader_cheese2: "voxygen.element.animation.loaders.cheese2", + loader_cheese3: "voxygen.element.animation.loaders.cheese3", + loader_cheese4: "voxygen.element.animation.loaders.cheese4", + loader_cheese5: "voxygen.element.animation.loaders.cheese5", + + loader_coins1: "voxygen.element.animation.loaders.coins1", + loader_coins2: "voxygen.element.animation.loaders.coins2", + loader_coins3: "voxygen.element.animation.loaders.coins3", + loader_coins4: "voxygen.element.animation.loaders.coins4", + loader_coins5: "voxygen.element.animation.loaders.coins5", + + loader_house1: "voxygen.element.animation.loaders.house1", + loader_house2: "voxygen.element.animation.loaders.house2", + loader_house3: "voxygen.element.animation.loaders.house3", + loader_house4: "voxygen.element.animation.loaders.house4", + loader_house5: "voxygen.element.animation.loaders.house5", + + loader_ship1: "voxygen.element.animation.loaders.ship1", + loader_ship2: "voxygen.element.animation.loaders.ship2", + loader_ship3: "voxygen.element.animation.loaders.ship3", + loader_ship4: "voxygen.element.animation.loaders.ship4", + loader_ship5: "voxygen.element.animation.loaders.ship5", } }