11use bevy:: { color:: palettes:: css, input:: mouse:: MouseWheel , prelude:: * , window:: PrimaryWindow } ;
2+ use bevy_embedded_assets:: { EmbeddedAssetPlugin , PluginMode } ;
23use bincode:: { Decode , Encode , config} ;
34use flate2:: { Compression , read:: DeflateDecoder , write:: DeflateEncoder } ;
45use noise:: { NoiseFn , Perlin } ;
56use serde:: { Deserialize , Serialize } ;
6-
77use std:: {
88 any:: Any ,
99 collections:: { HashMap , HashSet } ,
@@ -476,7 +476,12 @@ fn recipe_for(factory_type: FactoryType) -> Recipe {
476476
477477fn main ( ) {
478478 App :: new ( )
479- . add_plugins ( DefaultPlugins )
479+ . add_plugins ( (
480+ DefaultPlugins ,
481+ EmbeddedAssetPlugin {
482+ mode : PluginMode :: AutoLoad ,
483+ } ,
484+ ) )
480485 . insert_resource ( WorldRes :: default ( ) )
481486 . insert_resource ( ConveyorPlacer :: default ( ) )
482487 . add_systems ( Startup , setup)
@@ -515,8 +520,8 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>, mut world: ResM
515520
516521 for ( pos, terrain) in world. terrain . iter ( ) {
517522 let texture_path = match terrain {
518- TerrainTileType :: Grass => "textures/terrain/grass.png" ,
519- TerrainTileType :: Dirt => "textures/terrain/dirt.png" ,
523+ TerrainTileType :: Grass => "embedded:// textures/terrain/grass.png" ,
524+ TerrainTileType :: Dirt => "embedded:// textures/terrain/dirt.png" ,
520525 } ;
521526 commands. spawn ( (
522527 Sprite :: from_image ( asset_server. load ( texture_path) ) ,
@@ -560,7 +565,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>, mut world: ResM
560565 for ( pos, _) in world. tiles . iter ( ) {
561566 commands
562567 . spawn ( (
563- Sprite :: from_image ( asset_server. load ( "textures/tiles/belt.png" ) ) ,
568+ Sprite :: from_image ( asset_server. load ( "embedded:// textures/tiles/belt.png" ) ) ,
564569 Transform {
565570 translation : Vec3 :: new ( pos. x as f32 * TILE_SIZE , pos. y as f32 * TILE_SIZE , 0.0 ) ,
566571 scale : Vec3 :: splat ( TILE_SIZE / IMAGE_SIZE ) ,
@@ -570,7 +575,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>, mut world: ResM
570575 ) )
571576 . with_children ( |parent| {
572577 parent. spawn ( (
573- Sprite :: from_image ( asset_server. load ( "textures/items/none.png" ) ) ,
578+ Sprite :: from_image ( asset_server. load ( "embedded:// textures/items/none.png" ) ) ,
574579 Transform :: from_scale ( Vec3 :: splat ( 0.5 ) ) ,
575580 ) ) ;
576581 } ) ;
@@ -718,10 +723,10 @@ fn tick_tiles(
718723 timer : Timer :: from_seconds ( TICK_LENGTH , TimerMode :: Once ) ,
719724 } ,
720725 Sprite :: from_image ( asset_server. load ( match item {
721- Item :: None => "textures/items/none.png" ,
722- Item :: Wood => "textures/items/wood.png" ,
723- Item :: Stone => "textures/items/stone.png" ,
724- Item :: Product => "textures/items/product.png" ,
726+ Item :: None => "embedded:// textures/items/none.png" ,
727+ Item :: Wood => "embedded:// textures/items/wood.png" ,
728+ Item :: Stone => "embedded:// textures/items/stone.png" ,
729+ Item :: Product => "embedded:// textures/items/product.png" ,
725730 } ) ) ,
726731 Transform {
727732 translation : start_pos,
@@ -753,10 +758,10 @@ fn tick_tiles(
753758 timer : Timer :: from_seconds ( TICK_LENGTH , TimerMode :: Once ) ,
754759 } ,
755760 Sprite :: from_image ( asset_server. load ( match item {
756- Item :: None => "textures/items/none.png" ,
757- Item :: Wood => "textures/items/wood.png" ,
758- Item :: Stone => "textures/items/stone.png" ,
759- Item :: Product => "textures/items/product.png" ,
761+ Item :: None => "embedded:// textures/items/none.png" ,
762+ Item :: Wood => "embedded:// textures/items/wood.png" ,
763+ Item :: Stone => "embedded:// textures/items/stone.png" ,
764+ Item :: Product => "embedded:// textures/items/product.png" ,
760765 } ) ) ,
761766 Transform {
762767 translation : start_pos,
@@ -813,10 +818,18 @@ fn tick_tiles(
813818 } ,
814819 Sprite :: from_image ( asset_server. load (
815820 match produced_item {
816- Item :: None => "textures/items/none.png" ,
817- Item :: Wood => "textures/items/wood.png" ,
818- Item :: Stone => "textures/items/stone.png" ,
819- Item :: Product => "textures/items/product.png" ,
821+ Item :: None => {
822+ "embedded://textures/items/none.png"
823+ }
824+ Item :: Wood => {
825+ "embedded://textures/items/wood.png"
826+ }
827+ Item :: Stone => {
828+ "embedded://textures/items/stone.png"
829+ }
830+ Item :: Product => {
831+ "embedded://textures/items/product.png"
832+ }
820833 } ,
821834 ) ) ,
822835 Transform {
@@ -869,10 +882,12 @@ fn tick_tiles(
869882 ) ,
870883 } ,
871884 Sprite :: from_image ( asset_server. load ( match item {
872- Item :: None => "textures/items/none.png" ,
873- Item :: Wood => "textures/items/wood.png" ,
874- Item :: Stone => "textures/items/stone.png" ,
875- Item :: Product => "textures/items/product.png" ,
885+ Item :: None => "embedded://textures/items/none.png" ,
886+ Item :: Wood => "embedded://textures/items/wood.png" ,
887+ Item :: Stone => "embedded://textures/items/stone.png" ,
888+ Item :: Product => {
889+ "embedded://textures/items/product.png"
890+ }
876891 } ) ) ,
877892 Transform {
878893 translation : start_pos,
@@ -985,7 +1000,7 @@ fn update_tile_visuals(
9851000 tile_sprite. pos . y as f32 * TILE_SIZE ,
9861001 0.0 ,
9871002 ) ;
988- sprite. image = asset_server. load ( "textures/tiles/belt.png" ) ;
1003+ sprite. image = asset_server. load ( "embedded:// textures/tiles/belt.png" ) ;
9891004 transform. rotation = match conveyor. direction {
9901005 Direction :: Up => Quat :: IDENTITY ,
9911006 Direction :: Down => Quat :: from_rotation_z ( PI ) ,
@@ -1012,10 +1027,18 @@ fn update_tile_visuals(
10121027 } ;
10131028
10141029 child_sprite. image = match conveyor. item {
1015- Item :: None => asset_server. load ( "textures/items/none.png" ) ,
1016- Item :: Wood => asset_server. load ( "textures/items/wood.png" ) ,
1017- Item :: Stone => asset_server. load ( "textures/items/stone.png" ) ,
1018- Item :: Product => asset_server. load ( "textures/items/product.png" ) ,
1030+ Item :: None => {
1031+ asset_server. load ( "embedded://textures/items/none.png" )
1032+ }
1033+ Item :: Wood => {
1034+ asset_server. load ( "embedded://textures/items/wood.png" )
1035+ }
1036+ Item :: Stone => {
1037+ asset_server. load ( "embedded://textures/items/stone.png" )
1038+ }
1039+ Item :: Product => {
1040+ asset_server. load ( "embedded://textures/items/product.png" )
1041+ }
10191042 } ;
10201043 }
10211044 }
@@ -1034,7 +1057,7 @@ fn update_tile_visuals(
10341057 . unwrap ( )
10351058 . factory_type
10361059 {
1037- FactoryType :: Assembler => "textures/tiles/assembler.png" ,
1060+ FactoryType :: Assembler => "embedded:// textures/tiles/assembler.png" ,
10381061 } ,
10391062 ) ;
10401063 transform. rotation = match factory. direction {
@@ -1057,7 +1080,7 @@ fn update_tile_visuals(
10571080 tile_sprite. pos . y as f32 * TILE_SIZE ,
10581081 2.0 ,
10591082 ) ;
1060- sprite. image = asset_server. load ( "textures/tiles/extractor.png" ) ;
1083+ sprite. image = asset_server. load ( "embedded:// textures/tiles/extractor.png" ) ;
10611084 transform. rotation = match extractor. direction {
10621085 Direction :: Up => Quat :: IDENTITY ,
10631086 Direction :: Down => Quat :: from_rotation_z ( PI ) ,
@@ -1071,10 +1094,18 @@ fn update_tile_visuals(
10711094 {
10721095 child_transform. translation = Vec3 :: new ( 0.0 , 0.0 , 1.0 ) ;
10731096 child_sprite. image = match extractor. spawn_item {
1074- Item :: None => asset_server. load ( "textures/items/none.png" ) ,
1075- Item :: Wood => asset_server. load ( "textures/items/wood.png" ) ,
1076- Item :: Stone => asset_server. load ( "textures/items/stone.png" ) ,
1077- Item :: Product => asset_server. load ( "textures/items/product.png" ) ,
1097+ Item :: None => {
1098+ asset_server. load ( "embedded://textures/items/none.png" )
1099+ }
1100+ Item :: Wood => {
1101+ asset_server. load ( "embedded://textures/items/wood.png" )
1102+ }
1103+ Item :: Stone => {
1104+ asset_server. load ( "embedded://textures/items/stone.png" )
1105+ }
1106+ Item :: Product => {
1107+ asset_server. load ( "embedded://textures/items/product.png" )
1108+ }
10781109 } ;
10791110 }
10801111 }
@@ -1160,11 +1191,11 @@ fn manage_tiles(
11601191 }
11611192
11621193 let texture_path = match placer. tile_type {
1163- 0 => "textures/tiles/none.png" ,
1164- 1 => "textures/tiles/belt.png" ,
1165- 2 => "textures/tiles/assembler.png" ,
1166- 3 => "textures/tiles/extractor.png" ,
1167- _ => "textures/tiles/belt.png" ,
1194+ 0 => "embedded:// textures/tiles/none.png" ,
1195+ 1 => "embedded:// textures/tiles/belt.png" ,
1196+ 2 => "embedded:// textures/tiles/assembler.png" ,
1197+ 3 => "embedded:// textures/tiles/extractor.png" ,
1198+ _ => "embedded:// textures/tiles/belt.png" ,
11681199 } ;
11691200
11701201 let preview_entity = commands
@@ -1319,7 +1350,9 @@ fn manage_tiles(
13191350
13201351 commands
13211352 . spawn ( (
1322- Sprite :: from_image ( asset_server. load ( "textures/tiles/belt.png" ) ) ,
1353+ Sprite :: from_image (
1354+ asset_server. load ( "embedded://textures/tiles/belt.png" ) ,
1355+ ) ,
13231356 Transform {
13241357 translation : Vec3 :: new (
13251358 pos. x as f32 * TILE_SIZE ,
@@ -1333,7 +1366,9 @@ fn manage_tiles(
13331366 ) )
13341367 . with_children ( |parent| {
13351368 parent. spawn ( (
1336- Sprite :: from_image ( asset_server. load ( "textures/items/none.png" ) ) ,
1369+ Sprite :: from_image (
1370+ asset_server. load ( "embedded://textures/items/none.png" ) ,
1371+ ) ,
13371372 Transform :: from_scale ( Vec3 :: splat ( 0.5 ) ) ,
13381373 ) ) ;
13391374 } ) ;
0 commit comments