Compare commits
No commits in common. "d73d06665ac55785e5422121c05cbc2401a8149c" and "70c83295ca3b2c31f977ed0130882b54b9c052ac" have entirely different histories.
d73d06665a
...
70c83295ca
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -1,26 +1,16 @@
|
||||||
# v0.14.0-dev
|
# v0.14.0-dev
|
||||||
|
|
||||||
- Implement one ACTUAL QUEST! (pizza delivery)
|
- Implement an ACTUAL QUEST!
|
||||||
- Implement time trial racing mode 🏁
|
|
||||||
- Implement more responsive camera controls
|
|
||||||
- Implement phone calls
|
- Implement phone calls
|
||||||
- Implement fast travel
|
- Implement fast travel
|
||||||
- Implement factory reset
|
- Implement factory reset
|
||||||
- Implement anti-aliasing
|
|
||||||
- Overhaul game menu, adding "app icons"
|
|
||||||
- Chats don't automatically advance now, the player has to press "Continue"
|
- Chats don't automatically advance now, the player has to press "Continue"
|
||||||
- Add Outrun Radio, featuring "Outrun" BGM by Andrew Vice
|
- Add Outrun Radio, featuring "Outrun" BGM by Andrew Vice
|
||||||
- Add sparkles to Jupiter's ring ✨😍✨ best visible from Farview Station
|
- Add sparkles to Jupiter's ring ✨😍✨ best visible from Farview Station
|
||||||
- Add auroras to Jupiter and Saturn
|
- Add auroras to Jupiter and Saturn
|
||||||
- Add setting to change pointer
|
- Add setting to change pointer
|
||||||
- Add a visitable greenhouse with solar mirror array
|
|
||||||
- Add meow
|
- Add meow
|
||||||
- Add achievement for a certain time trial racing score
|
|
||||||
- Add more conversations
|
- Add more conversations
|
||||||
- Add philosophical debate about the color of the dress
|
|
||||||
- Add vivid descriptions when consuming pizza or coffee
|
|
||||||
- Add textures to "The Whale" and "Inconspicuous Asteroid"
|
|
||||||
- Add some asteroids (again) near the whale
|
|
||||||
|
|
||||||
# v0.13.0
|
# v0.13.0
|
||||||
|
|
||||||
|
|
20
src/game.rs
20
src/game.rs
|
@ -24,7 +24,6 @@ pub const CHEAT_WARP_1: &str = "pizzeria";
|
||||||
pub const CHEAT_WARP_2: &str = "busstopclippy2";
|
pub const CHEAT_WARP_2: &str = "busstopclippy2";
|
||||||
pub const CHEAT_WARP_3: &str = "busstopclippy3";
|
pub const CHEAT_WARP_3: &str = "busstopclippy3";
|
||||||
pub const RACE_TARGET_RADIUS: f64 = 5.0;
|
pub const RACE_TARGET_RADIUS: f64 = 5.0;
|
||||||
pub const RACE_SCORE_ACHIEVEMENT: u64 = 25;
|
|
||||||
|
|
||||||
pub struct GamePlugin;
|
pub struct GamePlugin;
|
||||||
impl Plugin for GamePlugin {
|
impl Plugin for GamePlugin {
|
||||||
|
@ -52,7 +51,7 @@ impl Plugin for GamePlugin {
|
||||||
.run_if(on_event::<AchievementEvent>()),
|
.run_if(on_event::<AchievementEvent>()),
|
||||||
);
|
);
|
||||||
app.add_systems(Update, check_achievements.run_if(game_running));
|
app.add_systems(Update, check_achievements.run_if(game_running));
|
||||||
app.add_systems(Update, handle_race.run_if(alive).run_if(game_running));
|
app.add_systems(Update, handle_race.run_if(game_running));
|
||||||
app.insert_resource(Id2Pos(HashMap::new()));
|
app.insert_resource(Id2Pos(HashMap::new()));
|
||||||
app.insert_resource(Id2V(HashMap::new()));
|
app.insert_resource(Id2V(HashMap::new()));
|
||||||
app.insert_resource(JupiterPos(DVec3::ZERO));
|
app.insert_resource(JupiterPos(DVec3::ZERO));
|
||||||
|
@ -86,7 +85,7 @@ pub struct RaceState {
|
||||||
pub started: bool,
|
pub started: bool,
|
||||||
pub start_countdown: f64,
|
pub start_countdown: f64,
|
||||||
pub timeout: f64,
|
pub timeout: f64,
|
||||||
pub score: f64,
|
pub score: u64,
|
||||||
}
|
}
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
pub struct RaceTarget;
|
pub struct RaceTarget;
|
||||||
|
@ -99,7 +98,6 @@ pub enum AchievementEvent {
|
||||||
DrinkPizza,
|
DrinkPizza,
|
||||||
InJupitersShadow,
|
InJupitersShadow,
|
||||||
FindEarth,
|
FindEarth,
|
||||||
RaceScore,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Event)]
|
#[derive(Event)]
|
||||||
|
@ -614,12 +612,6 @@ fn handle_achievement_event(
|
||||||
}
|
}
|
||||||
tracker.find_earth = true;
|
tracker.find_earth = true;
|
||||||
}
|
}
|
||||||
AchievementEvent::RaceScore => {
|
|
||||||
if !tracker.race_score {
|
|
||||||
ew_game.send(GameEvent::Achievement(format!("Score {} Points In Time Trial", RACE_SCORE_ACHIEVEMENT)));
|
|
||||||
}
|
|
||||||
tracker.race_score = true;
|
|
||||||
}
|
|
||||||
AchievementEvent::RideVehicle(name) => {
|
AchievementEvent::RideVehicle(name) => {
|
||||||
tracker.vehicles_ridden.insert(name.clone());
|
tracker.vehicles_ridden.insert(name.clone());
|
||||||
let len = tracker.vehicles_ridden.len();
|
let len = tracker.vehicles_ridden.len();
|
||||||
|
@ -731,7 +723,6 @@ fn handle_race(
|
||||||
mut settings: ResMut<Settings>,
|
mut settings: ResMut<Settings>,
|
||||||
mut race: ResMut<RaceState>,
|
mut race: ResMut<RaceState>,
|
||||||
mut ew_sfx: EventWriter<audio::PlaySfxEvent>,
|
mut ew_sfx: EventWriter<audio::PlaySfxEvent>,
|
||||||
mut ew_achievement: EventWriter<game::AchievementEvent>,
|
|
||||||
q_player: Query<(&Position, &LinearVelocity, &Transform), With<PlayerCamera>>,
|
q_player: Query<(&Position, &LinearVelocity, &Transform), With<PlayerCamera>>,
|
||||||
mut q_racetarget: Query<
|
mut q_racetarget: Query<
|
||||||
(Entity, &mut Position, &mut LinearVelocity, &mut Visibility),
|
(Entity, &mut Position, &mut LinearVelocity, &mut Visibility),
|
||||||
|
@ -768,21 +759,18 @@ fn handle_race(
|
||||||
if !race.initialized {
|
if !race.initialized {
|
||||||
log.warning("Time Trial Race START!".to_string());
|
log.warning("Time Trial Race START!".to_string());
|
||||||
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Honk));
|
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Honk));
|
||||||
race.score = 0.0;
|
race.score = 0;
|
||||||
race.initialized = true;
|
race.initialized = true;
|
||||||
spawn_target = true;
|
spawn_target = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if player_pos.distance(target_pos.0) < RACE_TARGET_RADIUS {
|
if player_pos.distance(target_pos.0) < RACE_TARGET_RADIUS {
|
||||||
race.score += 1.0;
|
race.score += 1;
|
||||||
spawn_target = true;
|
spawn_target = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if spawn_target {
|
if spawn_target {
|
||||||
race.timeout = time.elapsed_seconds_f64() + 5.0;
|
race.timeout = time.elapsed_seconds_f64() + 5.0;
|
||||||
if race.score >= RACE_SCORE_ACHIEVEMENT as f64 {
|
|
||||||
ew_achievement.send(game::AchievementEvent::RaceScore);
|
|
||||||
}
|
|
||||||
let difficulty = 2.0 * race.score as f64;
|
let difficulty = 2.0 * race.score as f64;
|
||||||
let mut delta = DVec3::new(0.0, 0.0, 100.0);
|
let mut delta = DVec3::new(0.0, 0.0, 100.0);
|
||||||
delta = (player_trans.rotation * delta.as_vec3()).as_dvec3();
|
delta = (player_trans.rotation * delta.as_vec3()).as_dvec3();
|
||||||
|
|
14
src/var.rs
14
src/var.rs
|
@ -388,7 +388,6 @@ pub struct AchievementTracker {
|
||||||
pub drink_a_pizza: bool,
|
pub drink_a_pizza: bool,
|
||||||
pub in_jupiters_shadow: bool,
|
pub in_jupiters_shadow: bool,
|
||||||
pub find_earth: bool,
|
pub find_earth: bool,
|
||||||
pub race_score: bool,
|
|
||||||
|
|
||||||
pub ride_every_vehicle: bool,
|
pub ride_every_vehicle: bool,
|
||||||
pub vehicles_ridden: HashSet<String>,
|
pub vehicles_ridden: HashSet<String>,
|
||||||
|
@ -408,7 +407,6 @@ impl AchievementTracker {
|
||||||
self.talk_to_everyone,
|
self.talk_to_everyone,
|
||||||
self.find_earth,
|
self.find_earth,
|
||||||
self.in_jupiters_shadow,
|
self.in_jupiters_shadow,
|
||||||
self.race_score,
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
pub fn achieve_all(&mut self) {
|
pub fn achieve_all(&mut self) {
|
||||||
|
@ -418,7 +416,6 @@ impl AchievementTracker {
|
||||||
self.talk_to_everyone = true;
|
self.talk_to_everyone = true;
|
||||||
self.find_earth = true;
|
self.find_earth = true;
|
||||||
self.in_jupiters_shadow = true;
|
self.in_jupiters_shadow = true;
|
||||||
self.race_score = true;
|
|
||||||
}
|
}
|
||||||
pub fn to_textsections(&self) -> Vec<String> {
|
pub fn to_textsections(&self) -> Vec<String> {
|
||||||
fn collectible(current: usize, total: usize) -> String {
|
fn collectible(current: usize, total: usize) -> String {
|
||||||
|
@ -437,10 +434,6 @@ impl AchievementTracker {
|
||||||
format!("Talk To Everyone{talk}\n"),
|
format!("Talk To Everyone{talk}\n"),
|
||||||
"Find Earth\n".to_string(),
|
"Find Earth\n".to_string(),
|
||||||
"Enter Jupiter's Shadow\n".to_string(),
|
"Enter Jupiter's Shadow\n".to_string(),
|
||||||
format!(
|
|
||||||
"Score {} Points In Time Trial\n",
|
|
||||||
game::RACE_SCORE_ACHIEVEMENT
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
pub fn to_overview(&self) -> Vec<(bool, String)> {
|
pub fn to_overview(&self) -> Vec<(bool, String)> {
|
||||||
|
@ -451,13 +444,6 @@ impl AchievementTracker {
|
||||||
(self.talk_to_everyone, "talk to everyone".into()),
|
(self.talk_to_everyone, "talk to everyone".into()),
|
||||||
(self.find_earth, "find Earth".into()),
|
(self.find_earth, "find Earth".into()),
|
||||||
(self.in_jupiters_shadow, "enter Jupiter's shadow".into()),
|
(self.in_jupiters_shadow, "enter Jupiter's shadow".into()),
|
||||||
(
|
|
||||||
self.in_jupiters_shadow,
|
|
||||||
format!(
|
|
||||||
"score {} points in Time Trial",
|
|
||||||
game::RACE_SCORE_ACHIEVEMENT
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
pub fn to_summary(&self) -> String {
|
pub fn to_summary(&self) -> String {
|
||||||
|
|
Loading…
Reference in a new issue