Added lander face
This commit is contained in:
152
watch-faces/complication/lander_face.h
Normal file
152
watch-faces/complication/lander_face.h
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2024 Klingon Jane
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef LANDER_FACE_H_
|
||||
#define LANDER_FACE_H_
|
||||
|
||||
#include "movement.h"
|
||||
|
||||
/*
|
||||
|
||||
My remake of a classic planet landing game.
|
||||
|
||||
Objective: Safely land the Cringeworthy.
|
||||
Use your limited fuel supply to achieve a soft touch-down.
|
||||
|
||||
End scenarios and ship's health:
|
||||
|
||||
Hero They name this planet after you.
|
||||
8 Life is very cozy.
|
||||
7
|
||||
6
|
||||
5 Life is tolerable, plus some creature comforts
|
||||
4
|
||||
3 Marooned.
|
||||
2
|
||||
1
|
||||
0 Ship destroyed. Life is harsh, no shelter. Giant hamsters are cute. **
|
||||
Bug As in squished.
|
||||
Crater They name this crater after you.
|
||||
Gone As in vapourized.
|
||||
|
||||
Landing display format is:
|
||||
Ship's health, intact crewmen, injured crewmen.
|
||||
|
||||
Additional data:
|
||||
Crew's compliment: 13.
|
||||
Low fuel warning icons: activates when 3 seconds of full thrust remains.
|
||||
** Yes, hamsters are very cute. However; some eating of astronauts may occur.
|
||||
|
||||
Starting velocity, height and gravity are randomized each scenario.
|
||||
Fuel levels randomly assigned from 1 to 4 (hardest) to match starting parameters.
|
||||
|
||||
A safe landing is always possible.
|
||||
|
||||
End of game icons:
|
||||
LAP - Fantastic budgeting of fuel supply ( Required for heroic landing status. )
|
||||
24H - Great budgeting of fuel supply
|
||||
PM - Good budgeting of fuel supply
|
||||
SIGNAL - The combination coffee and tea maker survived
|
||||
|
||||
Landings get progressively harder with the number of heroic landings made.
|
||||
Number of heroic landings are remembered.
|
||||
|
||||
Heroic
|
||||
Landings Status
|
||||
0 Normal
|
||||
3 Hard ( first difficulty increase )
|
||||
6 Harder ( final difficulty increase )
|
||||
8 Ace
|
||||
11 ??????
|
||||
|
||||
Save yourself. Save the coffee maker.
|
||||
|
||||
END of standard training manual
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
|
||||
What is really going on here?
|
||||
The fleet is lost. You are a newbie pilot making a name for yourself.
|
||||
|
||||
Objective: Find Earth.
|
||||
|
||||
After reaching ?????? status, future heroic sorties will have 'some' chance in 200
|
||||
of finding Earth.
|
||||
|
||||
Your chances improve by 1 chance in 200 for each subsequent Heroic Landing (HL).
|
||||
|
||||
Completing HL 12 will give you 1 chance in 200, for that landing.
|
||||
HL 13 will give you 2 chances in 200, for that landing.
|
||||
HL 14 will give you 3 chances in 200, for that landing.
|
||||
HL 20 will give you 9 chances in 200, for that landing, and so on.
|
||||
|
||||
At these higher levels, your chances in 200 are displayed in the upper right corner on a heroic landing.
|
||||
|
||||
For wannabe pilots only: The HL counter can be reset by crashing three consecutive
|
||||
missions without touching the thrust button. ( 6 to reset Earth-found counter )
|
||||
|
||||
Find Earth. Save Humanity.
|
||||
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
int32_t height;
|
||||
int16_t speed; // Positive is up
|
||||
uint16_t tick_counter; // For minimum delays
|
||||
uint16_t fuel_start;
|
||||
uint16_t fuel_remaining;
|
||||
uint16_t fuel_tpl; // Fuel required for theoretical perfect landing
|
||||
uint16_t fuel_score; // 100 is perfect; higher is less perfect
|
||||
int8_t gravity; // negative downwards value
|
||||
bool led_enabled; // Can the led be turned on?
|
||||
bool led_active; // Did we use it this scenario?
|
||||
uint8_t mode; // 0 Pre-launch waiting, 1 show level, 2 playing, 3 touchdown blank, 4 final display, 5 monster
|
||||
uint8_t skill_level; // 1 thru 4. Dictates fuel alloted
|
||||
int8_t ships_health; // 0 thru 8. -1 = major crash
|
||||
uint8_t hero_counter; // Total heroic landings ever
|
||||
uint8_t legend_counter; // Historic events counter ( Earth )
|
||||
uint8_t difficulty_level; // Based on hero_counter
|
||||
uint8_t reset_counter; // Can reset hero_counter by crashing using zero fuel several consecutive scenarios
|
||||
uint8_t monster_type; // Which monster is hungry?
|
||||
uint8_t uninjured; // OK survivors
|
||||
uint8_t injured; // Hurt survivors
|
||||
} lander_state_t;
|
||||
|
||||
void lander_face_setup(uint8_t watch_face_index, void ** context_ptr);
|
||||
void lander_face_activate(void *context);
|
||||
bool lander_face_loop(movement_event_t event, void *context);
|
||||
void lander_face_resign(void *context);
|
||||
|
||||
#define lander_face ((const watch_face_t){ \
|
||||
lander_face_setup, \
|
||||
lander_face_activate, \
|
||||
lander_face_loop, \
|
||||
lander_face_resign, \
|
||||
NULL, \
|
||||
})
|
||||
|
||||
#endif // LANDER_FACE_H_
|
||||
Reference in New Issue
Block a user