3个不稳定版本
0.1.0 | 2021年2月27日 |
---|---|
0.0.2 | 2021年2月22日 |
0.0.1 | 2020年12月10日 |
#703 in 游戏开发
40KB
873 行
TickTime-rs
将tick数字转换为日期时间以便在游戏中使用。最初是为了满足城市建设游戏的需求,但也适用于任何需要从ticks处理日期时间的游戏。
功能
- 可配置日历
- 类似地球的实历:计算时间将遵循真实地球日历规则
- 类似地球的农历:计算时间将使用12个月30天的农历
- 自定义日历:计算时间将通过初始化时提供的自定义单位时间来完成
- 更新事件:每个tick将计算时间,如果启用,将返回一个包含所有字段更新的事件。
示例
类似地球的农历
// Initialize a lunar ticktime where one tick is 3600 seconds
let mut ticktime = TickTime::init(
0, TickTimeOptions {
tick_time_type: TickTimeType::EarthLike { seconds_per_tick: 3600, month_type: EarthLikeMonthType::Lunar },
compute_events: false,
}
).unwrap();
// Calling tick to simulate 40 days
for _ in 0..(24*40) {
ticktime.tick();
}
println!("{}", ticktime.to_string()); // Month 1, Day 10
类似地球的实历
// Initialize a real ticktime where one tick is 3600 seconds
let mut ticktime = TickTime::init(
0, TickTimeOptions {
tick_time_type: TickTimeType::EarthLike { seconds_per_tick: 3600, month_type: EarthLikeMonthType::Real },
compute_events: false,
}
).unwrap();
// Calling tick to simulate 40 days
for _ in 0..(24*40) {
ticktime.tick();
}
println!("{}", ticktime.to_string()); // Month 1, Day 9
自定义日历
// Initialize a custom ticktime where one tick is 3600 seconds
// where each day is 12 hours long
// and year are composed of 4 months with 1 day
let mut ticktime = TickTime::init(
0, TickTimeOptions {
tick_time_type:
TickTimeType::Custom {
seconds_per_tick: 3600,
hours_in_a_day: 12,
months_durations: vec![1, 1, 1, 1],
seasons_durations: vec![4],
week_duration: 7,
},
compute_events: false,
},
).unwrap();
// Calling tick to simulate 40 days
for _ in 0..(24*40) {
ticktime.tick();
}
println!("{}", ticktime.to_string()); // Year 20, Month 0, Day 0
请查看示例以获取更多使用案例。
贡献
与任何操作系统项目一样,欢迎贡献。问题或PR。请查看问题以了解您是否可以参与现有需求。