https://github.com/seanohue/fantasy-time-crunch
A way of handling time and time-related state changes in a highly customizable way, for use with games and virtual worlds
https://github.com/seanohue/fantasy-time-crunch
fantasy games hacktoberfest mmo-engine mud-engine ranvier time utility-library
Last synced: 5 months ago
JSON representation
A way of handling time and time-related state changes in a highly customizable way, for use with games and virtual worlds
- Host: GitHub
- URL: https://github.com/seanohue/fantasy-time-crunch
- Owner: seanohue
- Created: 2019-03-20T00:43:10.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-26T23:58:43.000Z (about 2 years ago)
- Last Synced: 2024-11-13T08:46:08.408Z (6 months ago)
- Topics: fantasy, games, hacktoberfest, mmo-engine, mud-engine, ranvier, time, utility-library
- Language: JavaScript
- Homepage:
- Size: 282 KB
- Stars: 8
- Watchers: 2
- Forks: 6
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# fantasy-time-crunch
I needed a way of handling a made-up time system in a game, so I made this.
## Sample Configuration
```javascript
const time = {
// One and only one unit is the smallest measured subdivision of time, defined as a 'tick'
second: {
tick: true,
makes: {minute: 60},
},// Larger units are defined by how many of a smaller unit they are subdivided into
minute: {
makes: {hour: 60},
},// Optionally one can define a function to be called when
// a unit increments (having a bell toll, etc.)
hour: {
makes: {day: 24},
onIncrement() {
console.log('BING!');
console.log('Hour: ', this.time.hour);
},
// Units can be divided into multiple state changes. For example, a day has two or more states defined
// by how many hours have passed.
// 'states' can be an object or a function.
// In this case, dawn and dusk are different depending
// on the season
states() {
if (this.states.is('winter')) {
return {
day: 9, // 0900 -- by default this number represents hours. however, each property returned can also be a function that has access to any time unit.
night: 20, // 2000
};
}
return {
day: 6, // 0900
night: 23, // 2200
};
}
},day: {
makes() {
const days = this.time.month % 2 ? 31 : 30;
return {month: days};
},
onIncrement() {
const names = 'MTWHFSU';
console.log('Day:', names[this.time.day - 1]);
},
},
month: {
// The 'of' property can also be a function called
// In this case, even months have 30 days and odd have 31.
makes: { year: 12},// For simpler state changes, an object marking the
// transitional thresholds is fine.
states: {
winter: 11,
spring: 3,
summer: 5,
fall: 9
}
}
};
```