Compare commits

..

No commits in common. "d73d06665ac55785e5422121c05cbc2401a8149c" and "70c83295ca3b2c31f977ed0130882b54b9c052ac" have entirely different histories.

3 changed files with 5 additions and 41 deletions

View file

@ -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

View file

@ -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();

View file

@ -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 {