118 lines
2.7 KiB
TypeScript
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;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|