Compare commits
No commits in common. "e8bd4a9c81f2109c3194c4f990427acb0810fbad" and "160e881ba74a6b734000c75c614a830c82346491" have entirely different histories.
e8bd4a9c81
...
160e881ba7
3 changed files with 6 additions and 407 deletions
|
@ -2,8 +2,6 @@
|
||||||
|
|
||||||
[Play in browser](https://txmn.tk/projects/lux-synthese/)
|
[Play in browser](https://txmn.tk/projects/lux-synthese/)
|
||||||
|
|
||||||
In latin, _lux synthesĕ_ means "light by the means of synthesia".
|
|
||||||
|
|
||||||
## Controls
|
## Controls
|
||||||
|
|
||||||
* **Move**: arrows
|
* **Move**: arrows
|
||||||
|
@ -16,10 +14,12 @@ In latin, _lux synthesĕ_ means "light by the means of synthesia".
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
* more filters
|
* more filters
|
||||||
|
* despawn black characters
|
||||||
|
* despawn character when too far
|
||||||
* more levels
|
* more levels
|
||||||
* (?) multiplayer
|
* (?) multiplayer
|
||||||
* more audio
|
* more audio
|
||||||
* bug: when reset after win, character colors are wrong
|
* bug: in level2, move the blue character to win, then reset. The characters are lighter than expected. (also level 4)
|
||||||
* redshift warning
|
* redshift warning
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
@ -54,8 +54,6 @@ Skip to level `N: u32` with the command `bevyjam <N>`.
|
||||||
|
|
||||||
Edit the level `N: u32` with the command `bevyjam <N> e`.
|
Edit the level `N: u32` with the command `bevyjam <N> e`.
|
||||||
|
|
||||||
Editor is not available in the WASM build.
|
|
||||||
|
|
||||||
### Editor controls
|
### Editor controls
|
||||||
|
|
||||||
* **Select**: left click to select, click in void to deselect, CTRL+click to select many, CTRL+A to select all
|
* **Select**: left click to select, click in void to deselect, CTRL+click to select many, CTRL+A to select all
|
||||||
|
|
|
@ -306,7 +306,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"comment": "Melty platform tutorial",
|
"comment": "Melting platform tutorial",
|
||||||
"characters": [
|
"characters": [
|
||||||
{
|
{
|
||||||
"pos": [
|
"pos": [
|
||||||
|
@ -384,389 +384,6 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"comment": "First puzzle",
|
"comment": "First puzzle",
|
||||||
"characters": [
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
-96.0,
|
|
||||||
472.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
-264.0,
|
|
||||||
472.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
648.0,
|
|
||||||
600.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.7,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
648.0,
|
|
||||||
-8.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
0.3,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"platforms": [
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
-168.0,
|
|
||||||
424.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
464.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
432.0,
|
|
||||||
424.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
352.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
156.0,
|
|
||||||
152.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
312.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
352.0,
|
|
||||||
-208.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
176.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
484.0,
|
|
||||||
-56.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
104.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
360.0,
|
|
||||||
64.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
96.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
64.0,
|
|
||||||
-272.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
320.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
600.0,
|
|
||||||
716.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
312.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
696.0,
|
|
||||||
412.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
920.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
600.0,
|
|
||||||
232.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
368.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
600.0,
|
|
||||||
-8.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
80.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
576.0,
|
|
||||||
56.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
32.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
564.0,
|
|
||||||
40.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
8.0,
|
|
||||||
16.0
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"absorbing_filters": [
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
56.0,
|
|
||||||
492.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
120.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
56.0,
|
|
||||||
628.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
152.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
264.0,
|
|
||||||
492.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
120.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
264.0,
|
|
||||||
628.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
152.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
-48.0,
|
|
||||||
152.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
96.0,
|
|
||||||
16.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
600.0,
|
|
||||||
488.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
16.0,
|
|
||||||
112.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
524.0,
|
|
||||||
556.0
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
56.0,
|
|
||||||
8.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"rotating_filters": [
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
-48.0,
|
|
||||||
40.0
|
|
||||||
],
|
|
||||||
"angle": -120.0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"melty_platforms": [
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
112.0,
|
|
||||||
424.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
208.0,
|
|
||||||
424.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
208.0,
|
|
||||||
288.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
600.0,
|
|
||||||
552.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
616.0,
|
|
||||||
40.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pos": [
|
|
||||||
584.0,
|
|
||||||
-56.0
|
|
||||||
],
|
|
||||||
"color": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"texts": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comment": "Second puzzle",
|
|
||||||
"characters": [
|
"characters": [
|
||||||
{
|
{
|
||||||
"pos": [
|
"pos": [
|
||||||
|
|
20
src/game.rs
20
src/game.rs
|
@ -398,8 +398,6 @@ fn collision_event_system(
|
||||||
)>,
|
)>,
|
||||||
pass_through_filter_query: Query<&PassThroughFilter>,
|
pass_through_filter_query: Query<&PassThroughFilter>,
|
||||||
melty_query: Query<&Melty>,
|
melty_query: Query<&Melty>,
|
||||||
mut character_list: ResMut<CharacterList>,
|
|
||||||
mut change_character_event: EventWriter<ChangeCharacterEvent>,
|
|
||||||
) {
|
) {
|
||||||
for collision_event in collision_events.iter() {
|
for collision_event in collision_events.iter() {
|
||||||
if let CollisionEvent::Started(e1, e2, flags) = collision_event {
|
if let CollisionEvent::Started(e1, e2, flags) = collision_event {
|
||||||
|
@ -418,34 +416,20 @@ fn collision_event_system(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if *flags == CollisionEventFlags::SENSOR {
|
} else if *flags == CollisionEventFlags::SENSOR {
|
||||||
if let (Ok((mut c_color, _c_transform, mut c_material, c_player)), Ok(filter)) = (
|
if let (Ok((mut c_color, _c_transform, mut c_material, _c_player)), Ok(filter)) = (
|
||||||
character_query.get_mut(*e1),
|
character_query.get_mut(*e1),
|
||||||
pass_through_filter_query.get(*e2),
|
pass_through_filter_query.get(*e2),
|
||||||
) {
|
) {
|
||||||
c_color.0 = filter.apply(c_color.0);
|
c_color.0 = filter.apply(c_color.0);
|
||||||
if c_color.0.as_hsla_f32()[2] < 0.1 {
|
|
||||||
commands.entity(*e1).despawn_recursive();
|
|
||||||
character_list.0.remove(e1);
|
|
||||||
if c_player.is_some() {
|
|
||||||
change_character_event.send(ChangeCharacterEvent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*c_material = materials.add(ColorMaterial::from(c_color.0));
|
*c_material = materials.add(ColorMaterial::from(c_color.0));
|
||||||
} else if let (
|
} else if let (
|
||||||
Ok((mut c_color, _c_transform, mut c_material, c_player)),
|
Ok((mut c_color, _c_transform, mut c_material, _c_player)),
|
||||||
Ok(filter),
|
Ok(filter),
|
||||||
) = (
|
) = (
|
||||||
character_query.get_mut(*e2),
|
character_query.get_mut(*e2),
|
||||||
pass_through_filter_query.get(*e1),
|
pass_through_filter_query.get(*e1),
|
||||||
) {
|
) {
|
||||||
c_color.0 = filter.apply(c_color.0);
|
c_color.0 = filter.apply(c_color.0);
|
||||||
if c_color.0.as_hsla_f32()[2] < 0.1 {
|
|
||||||
commands.entity(*e2).despawn_recursive();
|
|
||||||
character_list.0.remove(e2);
|
|
||||||
if c_player.is_some() {
|
|
||||||
change_character_event.send(ChangeCharacterEvent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*c_material = materials.add(ColorMaterial::from(c_color.0));
|
*c_material = materials.add(ColorMaterial::from(c_color.0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue