feat: initialize sunrise with 100-player shared rooms
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
export type RainGearItem = 'umbrella' | 'raincoat' | 'hood';
|
||||
|
||||
/** Equipment is independent of movement and emotes. */
|
||||
export function createRainGearState() {
|
||||
const worn = { umbrella: false, raincoat: false, hood: false };
|
||||
let available = false;
|
||||
return {
|
||||
get available() { return available; },
|
||||
get umbrella() { return worn.umbrella; },
|
||||
get raincoat() { return worn.raincoat; },
|
||||
get hood() { return worn.hood; },
|
||||
apply(state: { umbrella: boolean; raincoat: boolean; hood: boolean }) {
|
||||
worn.umbrella = state.umbrella;
|
||||
worn.raincoat = state.raincoat;
|
||||
worn.hood = state.raincoat && state.hood;
|
||||
},
|
||||
updateWeather(rain: number, snowfall: number) {
|
||||
available = rain > 0 || snowfall > 0;
|
||||
if (!available) { worn.umbrella = false; worn.raincoat = false; worn.hood = false; }
|
||||
},
|
||||
toggle(item: RainGearItem) {
|
||||
if (!available) return false;
|
||||
if (item === 'hood' && !worn.raincoat) return false;
|
||||
worn[item] = !worn[item];
|
||||
if (!worn.raincoat) worn.hood = false;
|
||||
return true;
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user