vtm/quelldatein/aufbau/welt.ts
Christian Fraß 9d603364b1 sicherung
2017-11-08 15:05:06 +01:00

118 lines
2.7 KiB
TypeScript

module mod_vtm_aufbau
{
/**
* @author kcf <vidofnir@folksprak.org>
*/
export class klasse_welt
{
/**
* @author kcf <vidofnir@folksprak.org>
*/
private felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, schnittstelle_aktor>;
/**
* @author kcf <vidofnir@folksprak.org>
*/
private figur : klasse_figur;
/**
* @author kcf <vidofnir@folksprak.org>
*/
public constructor
(
felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, schnittstelle_aktor> = new mod_vtm_helfer.klasse_hashmap<typ_stelle, schnittstelle_aktor>(stelle_hash),
figur : klasse_figur = new klasse_figur()
)
{
this.felder = felder;
this.figur = figur;
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
public felder_lesen() : Array<{stelle : typ_stelle; aktor : schnittstelle_aktor;}>
{
let felder : Array<{stelle : typ_stelle; aktor : schnittstelle_aktor;}> = [];
this.felder.iterieren
(
(stelle, aktor) => felder.push({"stelle": stelle, "aktor": aktor})
)
;
return felder;
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
public figur_lesen() : klasse_figur
{
return this.figur;
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
public feld_setzen(stelle : typ_stelle, aktor : schnittstelle_aktor) : void
{
this.felder.setzen(stelle, aktor);
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
public fortfahren() : boolean
{
let stelle : typ_stelle = this.figur.stelle_lesen();
let aktor_ : schnittstelle_fehlermonade<schnittstelle_aktor> = this.felder.holen(stelle);
let aktor : schnittstelle_aktor = (aktor_.ist_schlicht() ? aktor_.lesen() : (new klasse_verwerfer()));
aktor.verwenden(this.figur);
let zustand : typ_zustand = this.figur.zustand_lesen();
let ergebnis : boolean;
switch (zustand)
{
case zustand_tot:
{
console.info("-- tot");
ergebnis = false;
break;
}
case zustand_normal:
{
// console.info("-- normal");
ergebnis = true;
break;
}
case zustand_fertig:
{
console.info("-- fertig");
ergebnis = false;
break;
}
default:
{
let meldung : string = "unbehandelter Zustand";
throw (new Error(meldung));
break;
}
}
if (ergebnis)
console.info(this.figur.zu_string());
return ergebnis;
}
}
}