Pen & Paper - Rollenspiel > Werkstatt
Covella - Fantasy-Kalender - DSL für beliebige Systeme von Zeitmessung
TKarn:
Danke für den Tipp. Ich hoffe, ich habe nächste Woche etwas Zeit, mich damit zu beschäftigen.
1of3:
So, da das ja nachgefragt wurde, habe ich mir die Daten für die Eberron-Ebenen aus dem Source Code für den Calculator bei Wizards gezogen. Die Monde sind da auch irgendwie kodiert, aber daraus bin ich nicht schlau geworden.
Ich präsentiere also den Eberron-Kalender mit Sonnenjahr und Ebenen.
--- Code: ---case class EberronCalendar(days : TimeUnit = CommonDays.days){
lazy val weeks = 'week of days withNames("Sul","Mol","Zol","Wir","Zor","Far","Sar")
lazy val months = 'month of (weeks, 4)
lazy val years = 'year of months withNames(
"Zarantyr","Olarune","Therendor",
"Eyre","Dravago","Nymm",
"Lharvion","Barrakas","Rhaan",
"Sypheros","Aryth","Vult"
)
lazy val solarCalendar = Calendar(years) setTimestampZero 998
// Name, Orbit, RemainsNotable, StartingPosition
private val planeData = Vector(
("Danvi",134400,33600,50400),
("Dolurrh",33600,336,8559),
("Fernia",1680,28,1344),
("Irian",1008,10,420),
("Lamannia",364,7,94),
("Mabar",1680,3,422),
("Risia",1680,28,505),
("Shavarath",12096,336,4032),
("Syrania",3360,1,841),
("Thelanis",75600,2352,20076),
("Xoriat",2352000,336,588168)
)
def planeNames = planeData.map(_._1)
lazy val planesFactory = Satellites.withPhases(("Remote","Waxing"),("Coterminous","Waning"))
/**
* The planes orbiting the world of Eberron as a CalendarSystem.
* Except for Dal Quor, which is always remote, and Kythri which is utterly random.
*/
lazy val planes : Vector[Calendar] = planeData.map{
case (name,orbit,remainsNotable,startingPosition) =>
{
val phase = if (startingPosition < orbit/2) 1 else 2
val day = startingPosition % (orbit/2)
planesFactory.make(name.toLowerCase,orbit,days,remainsNotable) setTimestampZero (0,phase,day)
}
}
lazy val eberronCalendar : Calendar = planes.foldLeft (CalendarSystem(Vector(solarCalendar )))
{ case (sys: Calendar,simple: Calendar) => sys synchronise simple}
}
--- Ende Code ---
Zu dem Zweck habe ich gleich eine kleine Fabrik programmiert, die eben solche kreisenden Objekte macht.
Dazu gibts jetzt die Möglichkeit, einem Kalender berechnete Werte hinzuzufügen. Wenn man z.B. Kalenderwochen haben will, die Informationen aus zwei Zyklen brauchen (also Jahreszyklus und Wochenzyklus), oder sonstige Informationen einem Datum hinzufügen will.
Ansonsten diverse Korrekturen in den Beispielen, jetzt im Repository.
Skeeve:
[So, betätige ich mich auch mal als Thread-Nekromant...]
Es hat etwas gedauert diesen Thread hier auf Tanelorn wieder zu finden, aber vor ein paar Tagen hatte ich sofort an diese Diskussion gedacht und mich gefragt ob irgendwer der damals hier Schreibenden zufällig hier (einfach mal draufklicken) involviert ist?
1of3:
Also ich nicht.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln