zwischenspeicherung
This commit is contained in:
parent
74a9792bbf
commit
48b556057c
|
|
@ -16,7 +16,13 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aktor
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -32,7 +38,7 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
beispiel : ()=>typ_aktor;
|
beispiel : ()=>typ_aktor;
|
||||||
drehen : (aktor : typ_aktor, inkrement : int)=>void;
|
drehen : (aktor : typ_aktor, inkrement : int)=>void;
|
||||||
verwenden : (aktor : typ_aktor, figur : typ_figur)=>void;
|
verwenden : (aktor : typ_aktor, figur : mod_figur.typ_figur)=>void;
|
||||||
exportieren : (aktor : typ_aktor)=>any;
|
exportieren : (aktor : typ_aktor)=>any;
|
||||||
importieren : (roh : any)=>typ_aktor;
|
importieren : (roh : any)=>typ_aktor;
|
||||||
}
|
}
|
||||||
|
|
@ -48,16 +54,18 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_erstellen(art : string, kern : any) : typ_aktor
|
/*
|
||||||
|
export function erstellen(art : string, kern : any) : typ_aktor
|
||||||
{
|
{
|
||||||
return {"art": art, "angaben": kern};
|
return einpacken(art, kern);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_beispiel(art : string) : typ_aktor
|
export function beispiel(art : string) : typ_aktor
|
||||||
{
|
{
|
||||||
return implementierung_aktor[art].beispiel();
|
return implementierung_aktor[art].beispiel();
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +74,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_drehen(aktor : typ_aktor, inkrement ?: int) : void
|
export function drehen(aktor : typ_aktor, inkrement ?: int) : void
|
||||||
{
|
{
|
||||||
return implementierung_aktor[aktor.art].drehen(aktor, inkrement);
|
return implementierung_aktor[aktor.art].drehen(aktor, inkrement);
|
||||||
}
|
}
|
||||||
|
|
@ -75,7 +83,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_verwenden(aktor : typ_aktor, figur : typ_figur) : void
|
export function verwenden(aktor : typ_aktor, figur : mod_figur.typ_figur) : void
|
||||||
{
|
{
|
||||||
return implementierung_aktor[aktor.art].verwenden(aktor, figur);
|
return implementierung_aktor[aktor.art].verwenden(aktor, figur);
|
||||||
}
|
}
|
||||||
|
|
@ -84,7 +92,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_exportieren(aktor : typ_aktor) : any
|
export function exportieren(aktor : typ_aktor) : any
|
||||||
{
|
{
|
||||||
return implementierung_aktor[aktor.art].exportieren(aktor);
|
return implementierung_aktor[aktor.art].exportieren(aktor);
|
||||||
}
|
}
|
||||||
|
|
@ -93,11 +101,14 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_importieren(roh : any) : typ_aktor
|
export function importieren(roh : any) : typ_aktor
|
||||||
{
|
{
|
||||||
return implementierung_aktor[roh.art].importieren(roh);
|
return implementierung_aktor[roh.art].importieren(roh);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,21 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_annehmer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "annehmer";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
@ -31,7 +43,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function annehmer_erstellen
|
function erstellen
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_annehmer
|
: typ_annehmer
|
||||||
|
|
@ -44,31 +56,31 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function annehmer_erstellen_aktor
|
export function erstellen_aktor
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_aktor
|
: mod_aktor.typ_aktor
|
||||||
{
|
{
|
||||||
return {"art": "annehmer", "angaben": annehmer_erstellen()};
|
return einpacken(art, erstellen());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function annehmer_beispiel
|
function beispiel
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_annehmer
|
: typ_annehmer
|
||||||
{
|
{
|
||||||
return annehmer_erstellen();
|
return erstellen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function annehmer_drehen
|
function drehen
|
||||||
(
|
(
|
||||||
annehmer : typ_annehmer,
|
annehmer : typ_annehmer,
|
||||||
inkrement ?: int
|
inkrement ?: int
|
||||||
|
|
@ -81,21 +93,21 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function annehmer_verwenden
|
function verwenden
|
||||||
(
|
(
|
||||||
annehmer : typ_annehmer,
|
annehmer : typ_annehmer,
|
||||||
figur : typ_figur
|
figur : mod_figur.typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur_annehmen(figur);
|
mod_figur.annehmen(figur);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function annehmer_exportieren
|
function exportieren
|
||||||
(
|
(
|
||||||
annehmer : typ_annehmer
|
annehmer : typ_annehmer
|
||||||
)
|
)
|
||||||
|
|
@ -109,14 +121,14 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function annehmer_importieren
|
function importieren
|
||||||
(
|
(
|
||||||
roh : any
|
roh : any
|
||||||
)
|
)
|
||||||
: typ_annehmer
|
: typ_annehmer
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
annehmer_erstellen
|
erstellen
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -126,18 +138,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
let wrap = (angaben => ({"art": "annehmer", "angaben": angaben}));
|
mod_aktor.implementierung_aktor[art] =
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["annehmer"] =
|
|
||||||
{
|
{
|
||||||
"beispiel": () => wrap(annehmer_beispiel()),
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
"drehen": (aktor, inkrement) => annehmer_drehen(unwrap(aktor), inkrement),
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
"verwenden": (aktor, figur) => annehmer_verwenden(unwrap(aktor), figur),
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
"exportieren": (aktor) => ({"art": "annehmer_", "angaben": annehmer_exportieren(aktor.angaben)}),
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(aktor.angaben)}),
|
||||||
"importieren": (roh) => wrap(annehmer_importieren(roh)),
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,15 +16,27 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_befoerderer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "befoerderer";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_befoerderer =
|
export type typ_befoerderer =
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
richtung : mod_richtung.typ_richtung;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -32,9 +44,9 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function befoerderer_erstellen
|
function erstellen
|
||||||
(
|
(
|
||||||
richtung : typ_richtung
|
richtung : mod_richtung.typ_richtung
|
||||||
)
|
)
|
||||||
: typ_befoerderer
|
: typ_befoerderer
|
||||||
{
|
{
|
||||||
|
|
@ -47,36 +59,36 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function befoerderer_erstellen_aktor
|
export function erstellen_aktor
|
||||||
(
|
(
|
||||||
richtung : typ_richtung
|
richtung : mod_richtung.typ_richtung
|
||||||
)
|
)
|
||||||
: typ_aktor
|
: mod_aktor.typ_aktor
|
||||||
{
|
{
|
||||||
return {"art": "befoerderer", "angaben": befoerderer_erstellen(richtung)};
|
return einpacken(art, erstellen(richtung));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function befoerderer_beispiel
|
function beispiel
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_befoerderer
|
: typ_befoerderer
|
||||||
{
|
{
|
||||||
return befoerderer_erstellen(0);
|
return erstellen(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function befoerderer_richtung_lesen
|
export function richtung_lesen
|
||||||
(
|
(
|
||||||
befoerderer : typ_befoerderer
|
befoerderer : typ_befoerderer
|
||||||
)
|
)
|
||||||
: typ_richtung
|
: mod_richtung.typ_richtung
|
||||||
{
|
{
|
||||||
return befoerderer.richtung;
|
return befoerderer.richtung;
|
||||||
}
|
}
|
||||||
|
|
@ -85,42 +97,42 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function befoerderer_drehen
|
function drehen
|
||||||
(
|
(
|
||||||
befoerderer : typ_befoerderer,
|
befoerderer : typ_befoerderer,
|
||||||
inkrement : int = +1
|
inkrement : int = +1
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
befoerderer.richtung = richtung_addieren(befoerderer.richtung, inkrement);
|
befoerderer.richtung = mod_richtung.addieren(befoerderer.richtung, inkrement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function befoerderer_verwenden
|
function verwenden
|
||||||
(
|
(
|
||||||
befoerderer : typ_befoerderer,
|
befoerderer : typ_befoerderer,
|
||||||
figur : typ_figur
|
figur : mod_figur.typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur_bewegen(figur, befoerderer.richtung);
|
mod_figur.bewegen(figur, befoerderer.richtung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function befoerderer_exportieren
|
function exportieren
|
||||||
(
|
(
|
||||||
befoerderer : typ_befoerderer
|
befoerderer : typ_befoerderer
|
||||||
)
|
)
|
||||||
: any
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung_exportieren(befoerderer.richtung),
|
"richtung": mod_richtung.exportieren(befoerderer.richtung),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -128,16 +140,16 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function befoerderer_importieren
|
function importieren
|
||||||
(
|
(
|
||||||
roh : any
|
roh : any
|
||||||
)
|
)
|
||||||
: typ_befoerderer
|
: typ_befoerderer
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
befoerderer_erstellen
|
erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"])
|
mod_richtung.importieren(roh["richtung"])
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -146,18 +158,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
let wrap = (angaben => ({"art": "befoerderer", "angaben": angaben}));
|
mod_aktor.implementierung_aktor[art] =
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["befoerderer"] =
|
|
||||||
{
|
{
|
||||||
"beispiel": () => wrap(befoerderer_beispiel()),
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
"drehen": (aktor, inkrement) => befoerderer_drehen(unwrap(aktor), inkrement),
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
"verwenden": (aktor, figur) => befoerderer_verwenden(unwrap(aktor), figur),
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
"exportieren": (aktor) => ({"art": "befoerderer", "angaben": befoerderer_exportieren(aktor.angaben)}),
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(aktor.angaben)}),
|
||||||
"importieren": (roh) => wrap(befoerderer_importieren(roh)),
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,15 +16,27 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_erzeuger
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "erzeuger";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_erzeuger =
|
export type typ_erzeuger =
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
richtung : mod_richtung.typ_richtung;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -32,9 +44,9 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function erzeuger_erstellen
|
function erstellen
|
||||||
(
|
(
|
||||||
richtung : typ_richtung
|
richtung : mod_richtung.typ_richtung
|
||||||
)
|
)
|
||||||
: typ_erzeuger
|
: typ_erzeuger
|
||||||
{
|
{
|
||||||
|
|
@ -47,36 +59,36 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function erzeuger_erstellen_aktor
|
export function erstellen_aktor
|
||||||
(
|
(
|
||||||
richtung : typ_richtung
|
richtung : mod_richtung.typ_richtung
|
||||||
)
|
)
|
||||||
: typ_aktor
|
: mod_aktor.typ_aktor
|
||||||
{
|
{
|
||||||
return {"art": "erzeuger", "angaben": erzeuger_erstellen(richtung)};
|
return einpacken(art, erstellen(richtung));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function erzeuger_beispiel
|
function beispiel
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_erzeuger
|
: typ_erzeuger
|
||||||
{
|
{
|
||||||
return erzeuger_erstellen(0);
|
return erstellen(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function erzeuger_richtung_lesen
|
export function richtung_lesen
|
||||||
(
|
(
|
||||||
erzeuger : typ_erzeuger
|
erzeuger : typ_erzeuger
|
||||||
)
|
)
|
||||||
: typ_richtung
|
: mod_richtung.typ_richtung
|
||||||
{
|
{
|
||||||
return erzeuger.richtung;
|
return erzeuger.richtung;
|
||||||
}
|
}
|
||||||
|
|
@ -85,42 +97,42 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function erzeuger_drehen
|
function drehen
|
||||||
(
|
(
|
||||||
erzeuger : typ_erzeuger,
|
erzeuger : typ_erzeuger,
|
||||||
inkrement : int = +1
|
inkrement : int = +1
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
erzeuger.richtung = richtung_addieren(erzeuger.richtung, inkrement);
|
erzeuger.richtung = mod_richtung.addieren(erzeuger.richtung, inkrement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function erzeuger_verwenden
|
function verwenden
|
||||||
(
|
(
|
||||||
erzeuger : typ_erzeuger,
|
erzeuger : typ_erzeuger,
|
||||||
figur : typ_figur
|
figur : mod_figur.typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur_bewegen(figur, erzeuger.richtung);
|
mod_figur.bewegen(figur, erzeuger.richtung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function erzeuger_exportieren
|
function exportieren
|
||||||
(
|
(
|
||||||
erzeuger : typ_erzeuger
|
erzeuger : typ_erzeuger
|
||||||
)
|
)
|
||||||
: any
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung_exportieren(erzeuger.richtung),
|
"richtung": mod_richtung.exportieren(erzeuger.richtung),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -128,16 +140,16 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function erzeuger_importieren
|
function importieren
|
||||||
(
|
(
|
||||||
roh : any
|
roh : any
|
||||||
)
|
)
|
||||||
: typ_erzeuger
|
: typ_erzeuger
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
erzeuger_erstellen
|
erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"])
|
mod_richtung.importieren(roh["richtung"])
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -146,18 +158,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
let wrap = (angaben => ({"art": "erzeuger", "angaben": angaben}));
|
mod_aktor.implementierung_aktor[art] =
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["erzeuger"] =
|
|
||||||
{
|
{
|
||||||
"beispiel": () => wrap(erzeuger_beispiel()),
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
"drehen": (aktor, inkrement) => erzeuger_drehen(unwrap(aktor), inkrement),
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
"verwenden": (aktor, figur) => erzeuger_verwenden(unwrap(aktor), figur),
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
"exportieren": (aktor) => ({"art": "erzeuger", "angaben": erzeuger_exportieren(aktor.angaben)}),
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(auspacken(aktor))}),
|
||||||
"importieren": (roh) => wrap(erzeuger_importieren(roh)),
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,17 +16,29 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_leser
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "leser";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_leser =
|
export type typ_leser =
|
||||||
{
|
{
|
||||||
"richtung": typ_richtung,
|
"richtung": mod_richtung.typ_richtung,
|
||||||
"symbol_links": typ_symbol,
|
"symbol_links": mod_symbol.typ_symbol,
|
||||||
"symbol_rechts": typ_symbol,
|
"symbol_rechts": mod_symbol.typ_symbol,
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -34,11 +46,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function leser_erstellen
|
function erstellen
|
||||||
(
|
(
|
||||||
richtung : typ_richtung,
|
richtung : mod_richtung.typ_richtung,
|
||||||
symbol_links : typ_symbol,
|
symbol_links : mod_symbol.typ_symbol,
|
||||||
symbol_rechts : typ_symbol
|
symbol_rechts : mod_symbol.typ_symbol
|
||||||
)
|
)
|
||||||
: typ_leser
|
: typ_leser
|
||||||
{
|
{
|
||||||
|
|
@ -53,38 +65,38 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function leser_erstellen_aktor
|
export function erstellen_aktor
|
||||||
(
|
(
|
||||||
richtung : typ_richtung,
|
richtung : mod_richtung.typ_richtung,
|
||||||
symbol_links : typ_symbol,
|
symbol_links : mod_symbol.typ_symbol,
|
||||||
symbol_rechts : typ_symbol
|
symbol_rechts : mod_symbol.typ_symbol
|
||||||
)
|
)
|
||||||
: typ_aktor
|
: mod_aktor.typ_aktor
|
||||||
{
|
{
|
||||||
return {"art": "leser", "angaben": leser_erstellen(richtung, symbol_links, symbol_rechts)};
|
return einpacken(art, erstellen(richtung, symbol_links, symbol_rechts));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function leser_beispiel
|
function beispiel
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_leser
|
: typ_leser
|
||||||
{
|
{
|
||||||
return leser_erstellen(0, 0, 1);
|
return erstellen(0, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function leser_richtung_lesen
|
export function richtung_lesen
|
||||||
(
|
(
|
||||||
leser : typ_leser
|
leser : typ_leser
|
||||||
)
|
)
|
||||||
: typ_richtung
|
: mod_richtung.typ_richtung
|
||||||
{
|
{
|
||||||
return leser.richtung;
|
return leser.richtung;
|
||||||
}
|
}
|
||||||
|
|
@ -93,11 +105,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function leser_symbol_links_lesen
|
export function symbol_links_lesen
|
||||||
(
|
(
|
||||||
leser : typ_leser
|
leser : typ_leser
|
||||||
)
|
)
|
||||||
: typ_symbol
|
: mod_symbol.typ_symbol
|
||||||
{
|
{
|
||||||
return leser.symbol_links;
|
return leser.symbol_links;
|
||||||
}
|
}
|
||||||
|
|
@ -106,11 +118,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function leser_symbol_rechts_lesen
|
export function symbol_rechts_lesen
|
||||||
(
|
(
|
||||||
leser : typ_leser
|
leser : typ_leser
|
||||||
)
|
)
|
||||||
: typ_symbol
|
: mod_symbol.typ_symbol
|
||||||
{
|
{
|
||||||
return leser.symbol_rechts;
|
return leser.symbol_rechts;
|
||||||
}
|
}
|
||||||
|
|
@ -119,40 +131,40 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function leser_drehen
|
function drehen
|
||||||
(
|
(
|
||||||
leser : typ_leser,
|
leser : typ_leser,
|
||||||
inkrement : int = +1
|
inkrement : int = +1
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
leser.richtung = richtung_addieren(leser.richtung, inkrement);
|
leser.richtung = mod_richtung.addieren(leser.richtung, inkrement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function leser_verwenden
|
function verwenden
|
||||||
(
|
(
|
||||||
leser : typ_leser,
|
leser : typ_leser,
|
||||||
figur : typ_figur
|
figur : mod_figur.typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
let symbol_ : schnittstelle_fehlermonade<typ_symbol> = figur_lesen(figur);
|
let symbol_ : schnittstelle_fehlermonade<mod_symbol.typ_symbol> = mod_figur.lesen(figur);
|
||||||
let summand : typ_richtung;
|
let summand : mod_richtung.typ_richtung;
|
||||||
if (symbol_.ist_schlicht())
|
if (symbol_.ist_schlicht())
|
||||||
{
|
{
|
||||||
let symbol : typ_symbol = symbol_.lesen();
|
let symbol : mod_symbol.typ_symbol = symbol_.lesen();
|
||||||
if (symbol === leser.symbol_links)
|
if (symbol === leser.symbol_links)
|
||||||
{
|
{
|
||||||
figur_schieben(figur);
|
mod_figur.schieben(figur);
|
||||||
summand = +2;
|
summand = +2;
|
||||||
}
|
}
|
||||||
else if (symbol === leser.symbol_rechts)
|
else if (symbol === leser.symbol_rechts)
|
||||||
{
|
{
|
||||||
figur_schieben(figur);
|
mod_figur.schieben(figur);
|
||||||
summand = -2;
|
summand = -2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -164,24 +176,24 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
summand = 0;
|
summand = 0;
|
||||||
}
|
}
|
||||||
let richtung : typ_richtung = richtung_addieren(leser.richtung, summand);
|
let richtung : mod_richtung.typ_richtung = mod_richtung.addieren(leser.richtung, summand);
|
||||||
figur_bewegen(figur, richtung);
|
mod_figur.bewegen(figur, richtung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function leser_exportieren
|
function exportieren
|
||||||
(
|
(
|
||||||
leser : typ_leser
|
leser : typ_leser
|
||||||
)
|
)
|
||||||
: any
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung_exportieren(leser.richtung),
|
"richtung": mod_richtung.exportieren(leser.richtung),
|
||||||
"symbol_links": symbol_exportieren(leser.symbol_links),
|
"symbol_links": mod_symbol.exportieren(leser.symbol_links),
|
||||||
"symbol_rechts": symbol_exportieren(leser.symbol_rechts),
|
"symbol_rechts": mod_symbol.exportieren(leser.symbol_rechts),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -189,18 +201,18 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function leser_importieren
|
function importieren
|
||||||
(
|
(
|
||||||
roh : any
|
roh : any
|
||||||
)
|
)
|
||||||
: typ_leser
|
: typ_leser
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
leser_erstellen
|
erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"]),
|
mod_richtung.importieren(roh["richtung"]),
|
||||||
symbol_importieren(roh["symbol_links"]),
|
mod_symbol.importieren(roh["symbol_links"]),
|
||||||
symbol_importieren(roh["symbol_rechts"])
|
mod_symbol.importieren(roh["symbol_rechts"])
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -209,18 +221,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
let wrap = (angaben => ({"art": "leser", "angaben": angaben}));
|
mod_aktor.implementierung_aktor[art] =
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["leser"] =
|
|
||||||
{
|
{
|
||||||
"beispiel": () => wrap(leser_beispiel()),
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
"drehen": (aktor, inkrement) => leser_drehen(unwrap(aktor), inkrement),
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
"verwenden": (aktor, figur) => leser_verwenden(unwrap(aktor), figur),
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
"exportieren": (aktor) => ({"art": "leser", "angaben": leser_exportieren(aktor.angaben)}),
|
"exportieren": (aktor) => ({"art": "leser", "angaben": exportieren(aktor.angaben)}),
|
||||||
"importieren": (roh) => wrap(leser_importieren(roh)),
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,16 +16,28 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_schreiber
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "schreiber";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_schreiber =
|
export type typ_schreiber =
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
richtung : mod_richtung.typ_richtung;
|
||||||
symbol : typ_symbol;
|
symbol : mod_symbol.typ_symbol;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -33,10 +45,10 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function schreiber_erstellen
|
function erstellen
|
||||||
(
|
(
|
||||||
richtung : typ_richtung,
|
richtung : mod_richtung.typ_richtung,
|
||||||
symbol : typ_symbol
|
symbol : mod_symbol.typ_symbol
|
||||||
)
|
)
|
||||||
: typ_schreiber
|
: typ_schreiber
|
||||||
{
|
{
|
||||||
|
|
@ -50,37 +62,37 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function schreiber_erstellen_aktor
|
export function erstellen_aktor
|
||||||
(
|
(
|
||||||
richtung : typ_richtung,
|
richtung : mod_richtung.typ_richtung,
|
||||||
symbol : typ_symbol
|
symbol : mod_symbol.typ_symbol
|
||||||
)
|
)
|
||||||
: typ_aktor
|
: mod_aktor.typ_aktor
|
||||||
{
|
{
|
||||||
return {"art": "schreiber", "angaben": schreiber_erstellen(richtung, symbol)};
|
return einpacken(art, erstellen(richtung, symbol));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function schreiber_beispiel
|
function beispiel
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_schreiber
|
: typ_schreiber
|
||||||
{
|
{
|
||||||
return schreiber_erstellen(0, 0);
|
return erstellen(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function schreiber_richtung_lesen
|
export function richtung_lesen
|
||||||
(
|
(
|
||||||
schreiber : typ_schreiber
|
schreiber : typ_schreiber
|
||||||
)
|
)
|
||||||
: typ_richtung
|
: mod_richtung.typ_richtung
|
||||||
{
|
{
|
||||||
return schreiber.richtung;
|
return schreiber.richtung;
|
||||||
}
|
}
|
||||||
|
|
@ -89,11 +101,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function schreiber_symbol_lesen
|
export function symbol_lesen
|
||||||
(
|
(
|
||||||
schreiber : typ_schreiber
|
schreiber : typ_schreiber
|
||||||
)
|
)
|
||||||
: typ_symbol
|
: mod_symbol.typ_symbol
|
||||||
{
|
{
|
||||||
return schreiber.symbol;
|
return schreiber.symbol;
|
||||||
}
|
}
|
||||||
|
|
@ -102,44 +114,44 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function schreiber_drehen
|
function drehen
|
||||||
(
|
(
|
||||||
schreiber : typ_schreiber,
|
schreiber : typ_schreiber,
|
||||||
inkrement : int = +1
|
inkrement : int = +1
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
schreiber.richtung = richtung_addieren(schreiber.richtung, inkrement);
|
schreiber.richtung = mod_richtung.addieren(schreiber.richtung, inkrement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function schreiber_verwenden
|
function verwenden
|
||||||
(
|
(
|
||||||
schreiber : typ_schreiber,
|
schreiber : typ_schreiber,
|
||||||
figur : typ_figur
|
figur : mod_figur.typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur_schreiben(figur, schreiber.symbol);
|
mod_figur.schreiben(figur, schreiber.symbol);
|
||||||
figur_bewegen(figur, schreiber.richtung);
|
mod_figur.bewegen(figur, schreiber.richtung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function schreiber_exportieren
|
function exportieren
|
||||||
(
|
(
|
||||||
schreiber : typ_schreiber
|
schreiber : typ_schreiber
|
||||||
)
|
)
|
||||||
: any
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung_exportieren(schreiber.richtung),
|
"richtung": mod_richtung.exportieren(schreiber.richtung),
|
||||||
"symbol": symbol_exportieren(schreiber.symbol),
|
"symbol": mod_symbol.exportieren(schreiber.symbol),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -147,17 +159,17 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function schreiber_importieren
|
function importieren
|
||||||
(
|
(
|
||||||
roh : any
|
roh : any
|
||||||
)
|
)
|
||||||
: typ_schreiber
|
: typ_schreiber
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
schreiber_erstellen
|
erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"]),
|
mod_richtung.importieren(roh["richtung"]),
|
||||||
symbol_importieren(roh["symbol"])
|
mod_symbol.importieren(roh["symbol"])
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -166,18 +178,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
let wrap = (angaben => ({"art": "schreiber", "angaben": angaben}));
|
mod_aktor.implementierung_aktor["schreiber"] =
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["schreiber"] =
|
|
||||||
{
|
{
|
||||||
"beispiel": () => wrap(schreiber_beispiel()),
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
"drehen": (aktor, inkrement) => schreiber_drehen(unwrap(aktor), inkrement),
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
"verwenden": (aktor, figur) => schreiber_verwenden(unwrap(aktor), figur),
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
"exportieren": (aktor) => ({"art": "schreiber", "angaben": schreiber_exportieren(aktor.angaben)}),
|
"exportieren": (aktor) => ({"art": "schreiber", "angaben": exportieren(aktor.angaben)}),
|
||||||
"importieren": (roh) => wrap(schreiber_importieren(roh)),
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,21 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
{
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aktor_verwerfer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let art : string = "verwerfer";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
@ -31,7 +43,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function verwerfer_erstellen
|
function erstellen
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_verwerfer
|
: typ_verwerfer
|
||||||
|
|
@ -44,31 +56,31 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function verwerfer_erstellen_aktor
|
export function erstellen_aktor
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_aktor
|
: mod_aktor.typ_aktor
|
||||||
{
|
{
|
||||||
return {"art": "verwerfer", "angaben": verwerfer_erstellen()};
|
return einpacken(art, erstellen());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function verwerfer_beispiel
|
function beispiel
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_verwerfer
|
: typ_verwerfer
|
||||||
{
|
{
|
||||||
return verwerfer_erstellen();
|
return erstellen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function verwerfer_drehen
|
function drehen
|
||||||
(
|
(
|
||||||
verwerfer : typ_verwerfer,
|
verwerfer : typ_verwerfer,
|
||||||
inkrement ?: int
|
inkrement ?: int
|
||||||
|
|
@ -81,21 +93,21 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function verwerfer_verwenden
|
function verwenden
|
||||||
(
|
(
|
||||||
verwerfer : typ_verwerfer,
|
verwerfer : typ_verwerfer,
|
||||||
figur : typ_figur
|
figur : mod_figur.typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur_verwerfen(figur);
|
mod_figur.verwerfen(figur);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function verwerfer_exportieren
|
function exportieren
|
||||||
(
|
(
|
||||||
verwerfer : typ_verwerfer
|
verwerfer : typ_verwerfer
|
||||||
)
|
)
|
||||||
|
|
@ -109,14 +121,14 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function verwerfer_importieren
|
function importieren
|
||||||
(
|
(
|
||||||
roh : any
|
roh : any
|
||||||
)
|
)
|
||||||
: typ_verwerfer
|
: typ_verwerfer
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
verwerfer_erstellen
|
erstellen
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -126,18 +138,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
let wrap = (angaben => ({"art": "verwerfer", "angaben": angaben}));
|
mod_aktor.implementierung_aktor[art] =
|
||||||
let unwrap = (aktor => aktor.angaben);
|
|
||||||
implementierung_aktor["verwerfer"] =
|
|
||||||
{
|
{
|
||||||
"beispiel": () => wrap(verwerfer_beispiel()),
|
"beispiel": () => einpacken(art, beispiel()),
|
||||||
"drehen": (aktor, inkrement) => verwerfer_drehen(unwrap(aktor), inkrement),
|
"drehen": (aktor, inkrement) => drehen(auspacken(aktor), inkrement),
|
||||||
"verwenden": (aktor, figur) => verwerfer_verwenden(unwrap(aktor), figur),
|
"verwenden": (aktor, figur) => verwenden(auspacken(aktor), figur),
|
||||||
"exportieren": (aktor) => ({"art": "verwerfer", "angaben": verwerfer_exportieren(aktor.angaben)}),
|
"exportieren": (aktor) => ({"art": art, "angaben": exportieren(aktor.angaben)}),
|
||||||
"importieren": (roh) => wrap(verwerfer_importieren(roh)),
|
"importieren": (roh) => einpacken(art, importieren(roh)),
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_akzeptortest =
|
export type typ_akzeptortest =
|
||||||
{
|
{
|
||||||
eingabe : Array<typ_symbol>;
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>;
|
||||||
annehmen : boolean;
|
annehmen : boolean;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
@ -35,7 +35,7 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export function akzeptortest_erstellen
|
export function akzeptortest_erstellen
|
||||||
(
|
(
|
||||||
eingabe : Array<typ_symbol>,
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>,
|
||||||
annehmen : boolean
|
annehmen : boolean
|
||||||
)
|
)
|
||||||
: typ_akzeptortest
|
: typ_akzeptortest
|
||||||
|
|
@ -54,7 +54,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
akzeptortest : typ_akzeptortest
|
akzeptortest : typ_akzeptortest
|
||||||
)
|
)
|
||||||
: Array<typ_symbol>
|
: Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
return akzeptortest.eingabe;
|
return akzeptortest.eingabe;
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
akzeptortest : typ_akzeptortest,
|
akzeptortest : typ_akzeptortest,
|
||||||
angenommen : boolean,
|
angenommen : boolean,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: boolean
|
: boolean
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
test : typ_test
|
test : typ_test
|
||||||
)
|
)
|
||||||
: Array<typ_symbol>
|
: Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
fallunterscheidung<Array<typ_symbol>>
|
fallunterscheidung<Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>>
|
||||||
(
|
(
|
||||||
test,
|
test,
|
||||||
{
|
{
|
||||||
|
|
@ -54,7 +54,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
test : typ_test,
|
test : typ_test,
|
||||||
angenommen : boolean,
|
angenommen : boolean,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: boolean
|
: boolean
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_transduktortest =
|
export type typ_transduktortest =
|
||||||
{
|
{
|
||||||
eingabe : Array<typ_symbol>;
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>;
|
||||||
ausgabe : Array<typ_symbol>;
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -35,8 +35,8 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export function transduktortest_erstellen
|
export function transduktortest_erstellen
|
||||||
(
|
(
|
||||||
eingabe : Array<typ_symbol>,
|
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: typ_transduktortest
|
: typ_transduktortest
|
||||||
{
|
{
|
||||||
|
|
@ -54,7 +54,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
transduktortest : typ_transduktortest
|
transduktortest : typ_transduktortest
|
||||||
)
|
)
|
||||||
: Array<typ_symbol>
|
: Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
return transduktortest.eingabe;
|
return transduktortest.eingabe;
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
transduktortest : typ_transduktortest,
|
transduktortest : typ_transduktortest,
|
||||||
angenommen : boolean,
|
angenommen : boolean,
|
||||||
ausgabe : Array<typ_symbol>
|
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
|
||||||
)
|
)
|
||||||
: boolean
|
: boolean
|
||||||
{
|
{
|
||||||
|
|
@ -80,7 +80,7 @@ module mod_vtm_aufbau
|
||||||
let gleich : boolean = true;
|
let gleich : boolean = true;
|
||||||
for (let index : int = 0; index < transduktortest.ausgabe.length; index += 1)
|
for (let index : int = 0; index < transduktortest.ausgabe.length; index += 1)
|
||||||
{
|
{
|
||||||
if (! symbol_vergleichen(transduktortest.ausgabe[index], ausgabe[index]))
|
if (! mod_vtm.mod_aufbau.mod_symbol.vergleichen(transduktortest.ausgabe[index], ausgabe[index]))
|
||||||
{
|
{
|
||||||
gleich = false;
|
gleich = false;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -3,20 +3,26 @@
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General export function figur_License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General export function figur_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function figur_License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_figur
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -24,9 +30,9 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_figur =
|
export type typ_figur =
|
||||||
{
|
{
|
||||||
zustand : typ_zustand;
|
zustand : mod_zustand.typ_zustand;
|
||||||
band : Array<typ_symbol>;
|
band : Array<mod_symbol.typ_symbol>;
|
||||||
stelle : typ_stelle;
|
stelle : mod_stelle.typ_stelle;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -34,15 +40,15 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_erstellen
|
export function erstellen
|
||||||
(
|
(
|
||||||
band : Array<typ_symbol> = [],
|
band : Array<mod_symbol.typ_symbol> = [],
|
||||||
stelle : typ_stelle = stelle_null()
|
stelle : mod_stelle.typ_stelle = mod_stelle.null_()
|
||||||
)
|
)
|
||||||
: typ_figur
|
: typ_figur
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"zustand": zustand_laufend,
|
"zustand": mod_zustand.laufend,
|
||||||
"band": band,
|
"band": band,
|
||||||
"stelle": stelle,
|
"stelle": stelle,
|
||||||
};
|
};
|
||||||
|
|
@ -52,11 +58,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_zustand_lesen
|
export function zustand_lesen
|
||||||
(
|
(
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
: typ_zustand
|
: mod_zustand.typ_zustand
|
||||||
{
|
{
|
||||||
return figur.zustand;
|
return figur.zustand;
|
||||||
}
|
}
|
||||||
|
|
@ -65,11 +71,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_band_lesen
|
export function band_lesen
|
||||||
(
|
(
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
: Array<typ_symbol>
|
: Array<mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
return figur.band;
|
return figur.band;
|
||||||
}
|
}
|
||||||
|
|
@ -78,11 +84,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_stelle_lesen
|
export function stelle_lesen
|
||||||
(
|
(
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
: typ_stelle
|
: mod_stelle.typ_stelle
|
||||||
{
|
{
|
||||||
return figur.stelle;
|
return figur.stelle;
|
||||||
}
|
}
|
||||||
|
|
@ -91,25 +97,25 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_bewegen
|
export function bewegen
|
||||||
(
|
(
|
||||||
figur : typ_figur,
|
figur : typ_figur,
|
||||||
richtung : typ_richtung
|
richtung : mod_richtung.typ_richtung
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
let summand : typ_stelle = stelle_von_richtung(richtung);
|
let summand : mod_stelle.typ_stelle = mod_stelle.von_richtung(richtung);
|
||||||
figur.stelle = stelle_addieren(figur.stelle, summand);
|
figur.stelle = mod_stelle.addieren(figur.stelle, summand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_schreiben
|
export function schreiben
|
||||||
(
|
(
|
||||||
figur : typ_figur,
|
figur : typ_figur,
|
||||||
symbol : typ_symbol
|
symbol : mod_symbol.typ_symbol
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
|
|
@ -120,19 +126,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_lesen
|
export function lesen
|
||||||
(
|
(
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
: schnittstelle_fehlermonade<typ_symbol>
|
: schnittstelle_fehlermonade<mod_symbol.typ_symbol>
|
||||||
{
|
{
|
||||||
if (figur.band.length <= 0)
|
if (figur.band.length <= 0)
|
||||||
{
|
{
|
||||||
return (new klasse_nichts<typ_symbol>());
|
return (new klasse_nichts<mod_symbol.typ_symbol>());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return (new klasse_schlicht<typ_symbol>(figur.band[0]));
|
return (new klasse_schlicht<mod_symbol.typ_symbol>(figur.band[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -140,7 +146,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_schieben
|
export function schieben
|
||||||
(
|
(
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
|
|
@ -161,26 +167,30 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_annehmen
|
export function annehmen
|
||||||
(
|
(
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur.zustand = zustand_angenommen;
|
figur.zustand = mod_zustand.angenommen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function figur_verwerfen
|
export function verwerfen
|
||||||
(
|
(
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur.zustand = zustand_abgelehnt;
|
figur.zustand = mod_zustand.abgelehnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,13 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_modus
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -28,10 +34,14 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export const modus_initial = 0;
|
export const initial = 0;
|
||||||
export const modus_ungewiss = 1;
|
export const ungewiss = 1;
|
||||||
export const modus_fehlerhaft = 2;
|
export const fehlerhaft = 2;
|
||||||
export const modus_korrekt = 3;
|
export const korrekt = 3;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,20 +3,26 @@
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General export function partie_License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General export function partie_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function partie_License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_partie
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -24,11 +30,11 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_partie =
|
export type typ_partie =
|
||||||
{
|
{
|
||||||
welt : typ_welt;
|
welt : mod_welt.typ_welt;
|
||||||
figur : schnittstelle_fehlermonade<typ_figur>;
|
figur : schnittstelle_fehlermonade<mod_figur.typ_figur>;
|
||||||
aufgabe : typ_aufgabe;
|
aufgabe : mod_vtm_aufbau.typ_aufgabe;
|
||||||
testindex : schnittstelle_fehlermonade<int>;
|
testindex : schnittstelle_fehlermonade<int>;
|
||||||
modus : typ_modus;
|
modus : mod_modus.typ_modus;
|
||||||
lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>};
|
lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>};
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
@ -37,9 +43,9 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_erstellen
|
export function erstellen
|
||||||
(
|
(
|
||||||
aufgabe : typ_aufgabe
|
aufgabe : mod_vtm_aufbau.typ_aufgabe
|
||||||
)
|
)
|
||||||
: typ_partie
|
: typ_partie
|
||||||
{
|
{
|
||||||
|
|
@ -57,8 +63,8 @@ module mod_vtm_aufbau
|
||||||
"aenderung_figur": [],
|
"aenderung_figur": [],
|
||||||
"aenderung_modus": [],
|
"aenderung_modus": [],
|
||||||
};
|
};
|
||||||
partie_welt_leeren(partie, false);
|
welt_leeren(partie, false);
|
||||||
partie_zuruecksetzen(partie, false);
|
zuruecksetzen(partie, false);
|
||||||
return partie;
|
return partie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,7 +72,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_lauschen(partie : typ_partie, ereignis : string, prozedur : (angaben ?: any)=>void) : void
|
export function lauschen(partie : typ_partie, ereignis : string, prozedur : (angaben ?: any)=>void) : void
|
||||||
{
|
{
|
||||||
if (ereignis in partie.lauscher)
|
if (ereignis in partie.lauscher)
|
||||||
{
|
{
|
||||||
|
|
@ -83,7 +89,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function partie_benachrichtigen(partie : typ_partie, ereignis : string, angaben : any = {}) : void
|
function benachrichtigen(partie : typ_partie, ereignis : string, angaben : any = {}) : void
|
||||||
{
|
{
|
||||||
if (ereignis in partie.lauscher)
|
if (ereignis in partie.lauscher)
|
||||||
{
|
{
|
||||||
|
|
@ -107,15 +113,15 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_zuruecksetzen(partie : typ_partie, bescheid_geben : boolean = true) : void
|
export function zuruecksetzen(partie : typ_partie, bescheid_geben : boolean = true) : void
|
||||||
{
|
{
|
||||||
partie.figur = (new klasse_nichts<typ_figur>());
|
partie.figur = (new klasse_nichts<mod_figur.typ_figur>());
|
||||||
partie.testindex = (new klasse_nichts<int>());
|
partie.testindex = (new klasse_nichts<int>());
|
||||||
partie.modus = modus_initial;
|
partie.modus = mod_modus.initial;
|
||||||
if (bescheid_geben)
|
if (bescheid_geben)
|
||||||
{
|
{
|
||||||
partie_benachrichtigen(partie, "aenderung_figur", {});
|
benachrichtigen(partie, "aenderung_figur", {});
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -127,7 +133,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_aufgabe_lesen(partie : typ_partie) : typ_aufgabe
|
export function aufgabe_lesen(partie : typ_partie) : mod_vtm_aufbau.typ_aufgabe
|
||||||
{
|
{
|
||||||
return partie.aufgabe;
|
return partie.aufgabe;
|
||||||
}
|
}
|
||||||
|
|
@ -136,19 +142,19 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_aufgabe_setzen(partie : typ_partie, aufgabe : typ_aufgabe) : void
|
export function aufgabe_setzen(partie : typ_partie, aufgabe : mod_vtm_aufbau.typ_aufgabe) : void
|
||||||
{
|
{
|
||||||
partie.aufgabe = aufgabe;
|
partie.aufgabe = aufgabe;
|
||||||
// partie.welt_leeren();
|
// partie.welt_leeren();
|
||||||
partie_benachrichtigen(partie, "aenderung_aufgabe", {});
|
benachrichtigen(partie, "aenderung_aufgabe", {});
|
||||||
partie_zuruecksetzen(partie);
|
zuruecksetzen(partie);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_welt_lesen(partie : typ_partie) : typ_welt
|
export function welt_lesen(partie : typ_partie) : mod_welt.typ_welt
|
||||||
{
|
{
|
||||||
return partie.welt;
|
return partie.welt;
|
||||||
}
|
}
|
||||||
|
|
@ -157,12 +163,12 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_welt_setzen(partie : typ_partie, welt : mod_vtm_aufbau.typ_welt, bescheid_geben : boolean = true) : void
|
export function welt_setzen(partie : typ_partie, welt : mod_welt.typ_welt, bescheid_geben : boolean = true) : void
|
||||||
{
|
{
|
||||||
partie.welt = welt;
|
partie.welt = welt;
|
||||||
if (bescheid_geben)
|
if (bescheid_geben)
|
||||||
{
|
{
|
||||||
partie_benachrichtigen(partie, "aenderung_welt", {});
|
benachrichtigen(partie, "aenderung_welt", {});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -174,12 +180,12 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_welt_leeren(partie : typ_partie, bescheid_geben : boolean = true) : void
|
export function welt_leeren(partie : typ_partie, bescheid_geben : boolean = true) : void
|
||||||
{
|
{
|
||||||
partie.welt = welt_blanko();
|
partie.welt = mod_welt.blanko();
|
||||||
if (bescheid_geben)
|
if (bescheid_geben)
|
||||||
{
|
{
|
||||||
partie_benachrichtigen(partie, "aenderung_welt", {});
|
benachrichtigen(partie, "aenderung_welt", {});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -191,7 +197,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_figur_lesen(partie : typ_partie) : schnittstelle_fehlermonade<typ_figur>
|
export function figur_lesen(partie : typ_partie) : schnittstelle_fehlermonade<mod_figur.typ_figur>
|
||||||
{
|
{
|
||||||
return partie.figur;
|
return partie.figur;
|
||||||
}
|
}
|
||||||
|
|
@ -200,7 +206,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_modus_lesen(partie : typ_partie) : typ_modus
|
export function modus_lesen(partie : typ_partie) : mod_modus.typ_modus
|
||||||
{
|
{
|
||||||
return partie.modus;
|
return partie.modus;
|
||||||
}
|
}
|
||||||
|
|
@ -209,16 +215,16 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_welt_feld_wechseln(partie : typ_partie, stelle : typ_stelle, umgekehrt : boolean = false) : void
|
export function welt_feld_wechseln(partie : typ_partie, stelle : mod_stelle.typ_stelle, umgekehrt : boolean = false) : void
|
||||||
{
|
{
|
||||||
if (! (partie.modus === mod_vtm_aufbau.modus_initial))
|
if (! (partie.modus === mod_modus.initial))
|
||||||
{
|
{
|
||||||
let meldung : string = "gesperrt";
|
let meldung : string = "gesperrt";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
welt_feld_wechseln(partie.welt, stelle, umgekehrt);
|
mod_welt.feld_wechseln(partie.welt, stelle, umgekehrt);
|
||||||
partie_benachrichtigen
|
benachrichtigen
|
||||||
(
|
(
|
||||||
partie,
|
partie,
|
||||||
"aenderung_welt",
|
"aenderung_welt",
|
||||||
|
|
@ -228,7 +234,7 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
"stelle": stelle,
|
"stelle": stelle,
|
||||||
"umgekehrt": umgekehrt,
|
"umgekehrt": umgekehrt,
|
||||||
"feld": welt_feld_holen(partie.welt, stelle),
|
"feld": mod_welt.feld_holen(partie.welt, stelle),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -240,16 +246,16 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_welt_feld_drehen(partie : typ_partie, stelle : typ_stelle, inkrement : int = +1) : void
|
export function welt_feld_drehen(partie : typ_partie, stelle : mod_stelle.typ_stelle, inkrement : int = +1) : void
|
||||||
{
|
{
|
||||||
if (! (partie.modus === mod_vtm_aufbau.modus_initial))
|
if (! (partie.modus === mod_modus.initial))
|
||||||
{
|
{
|
||||||
let meldung : string = "gesperrt";
|
let meldung : string = "gesperrt";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
welt_feld_drehen(partie.welt, stelle, inkrement);
|
mod_welt.feld_drehen(partie.welt, stelle, inkrement);
|
||||||
partie_benachrichtigen(partie, "aenderung_welt", {});
|
benachrichtigen(partie, "aenderung_welt", {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,28 +263,28 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_fortfahren(partie : typ_partie) : void
|
export function fortfahren(partie : typ_partie) : void
|
||||||
{
|
{
|
||||||
switch (partie.modus)
|
switch (partie.modus)
|
||||||
{
|
{
|
||||||
case modus_initial:
|
case mod_modus.initial:
|
||||||
{
|
{
|
||||||
partie.modus = modus_ungewiss;
|
partie.modus = mod_modus.ungewiss;
|
||||||
partie.testindex = (new klasse_schlicht<int>(0));
|
partie.testindex = (new klasse_schlicht<int>(0));
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case modus_ungewiss:
|
case mod_modus.ungewiss:
|
||||||
{
|
{
|
||||||
if (! partie.figur.ist_schlicht())
|
if (! partie.figur.ist_schlicht())
|
||||||
{
|
{
|
||||||
let test : typ_test = aufgabe_tests(partie.aufgabe)[partie.testindex.lesen()];
|
let test : mod_vtm_aufbau.typ_test = mod_vtm_aufbau.aufgabe_tests(partie.aufgabe)[partie.testindex.lesen()];
|
||||||
let band : Array<typ_symbol> = mod_vtm_helfer.liste_kopieren<typ_symbol>(test_eingabe(test));
|
let band : Array<mod_symbol.typ_symbol> = mod_vtm_helfer.liste_kopieren<mod_symbol.typ_symbol>(mod_vtm_aufbau.test_eingabe(test));
|
||||||
let stelle : typ_stelle = welt_erzeuger_finden(partie.welt);
|
let stelle : mod_stelle.typ_stelle = mod_welt.erzeuger_finden(partie.welt);
|
||||||
partie.figur = (
|
partie.figur = (
|
||||||
new klasse_schlicht<typ_figur>
|
new klasse_schlicht<mod_figur.typ_figur>
|
||||||
(
|
(
|
||||||
figur_erstellen
|
mod_figur.erstellen
|
||||||
(
|
(
|
||||||
band,
|
band,
|
||||||
stelle
|
stelle
|
||||||
|
|
@ -288,28 +294,28 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let figur : typ_figur = partie.figur.lesen();
|
let figur : mod_figur.typ_figur = partie.figur.lesen();
|
||||||
let stelle : typ_stelle = figur_stelle_lesen(figur);
|
let stelle : mod_stelle.typ_stelle = mod_figur.stelle_lesen(figur);
|
||||||
let aktor_ : schnittstelle_fehlermonade<typ_aktor> = welt_feld_holen(partie.welt, stelle);
|
let aktor_ : schnittstelle_fehlermonade<mod_aktor.typ_aktor> = mod_welt.feld_holen(partie.welt, stelle);
|
||||||
let aktor : typ_aktor = (aktor_.ist_schlicht() ? aktor_.lesen() : verwerfer_erstellen_aktor());
|
let aktor : mod_aktor.typ_aktor = (aktor_.ist_schlicht() ? aktor_.lesen() : mod_aktor_verwerfer.erstellen_aktor());
|
||||||
aktor_verwenden(aktor, figur);
|
mod_aktor.verwenden(aktor, figur);
|
||||||
let zustand : typ_zustand = figur_zustand_lesen(figur);
|
let zustand : mod_zustand.typ_zustand = mod_figur.zustand_lesen(figur);
|
||||||
if (zustand === zustand_laufend)
|
if (zustand === mod_zustand.laufend)
|
||||||
{
|
{
|
||||||
// nichts tun
|
// nichts tun
|
||||||
}
|
}
|
||||||
else if ((zustand === zustand_angenommen) || (zustand === zustand_abgelehnt))
|
else if ((zustand === mod_zustand.angenommen) || (zustand === mod_zustand.abgelehnt))
|
||||||
{
|
{
|
||||||
let angenommen : boolean = (zustand === zustand_angenommen);
|
let angenommen : boolean = (zustand === mod_zustand.angenommen);
|
||||||
let ausgabe : Array<typ_symbol> = figur_band_lesen(figur);
|
let ausgabe : Array<mod_symbol.typ_symbol> = mod_figur.band_lesen(figur);
|
||||||
partie.figur = (new klasse_nichts<typ_figur>());
|
partie.figur = (new klasse_nichts<mod_figur.typ_figur>());
|
||||||
let testindex : int = partie.testindex.lesen();
|
let testindex : int = partie.testindex.lesen();
|
||||||
let tests : Array<typ_test> = aufgabe_tests(partie.aufgabe);
|
let tests : Array<mod_vtm_aufbau.typ_test> = mod_vtm_aufbau.aufgabe_tests(partie.aufgabe);
|
||||||
let test : typ_test = tests[testindex];
|
let test : mod_vtm_aufbau.typ_test = tests[testindex];
|
||||||
if (! test_pruefen(test, angenommen, ausgabe))
|
if (! mod_vtm_aufbau.test_pruefen(test, angenommen, ausgabe))
|
||||||
{
|
{
|
||||||
partie.modus = modus_fehlerhaft;
|
partie.modus = mod_modus.fehlerhaft;
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -323,8 +329,8 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
// auf Modus "korrekt" wechseln
|
// auf Modus "korrekt" wechseln
|
||||||
partie.testindex = (new klasse_nichts<int>());
|
partie.testindex = (new klasse_nichts<int>());
|
||||||
partie.modus = modus_korrekt;
|
partie.modus = mod_modus.korrekt;
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
benachrichtigen(partie, "aenderung_modus", {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -334,15 +340,15 @@ module mod_vtm_aufbau
|
||||||
throw (new Error(meldung));
|
throw (new Error(meldung));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
partie_benachrichtigen(partie, "aenderung_figur", {});
|
benachrichtigen(partie, "aenderung_figur", {});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case modus_fehlerhaft:
|
case mod_modus.fehlerhaft:
|
||||||
{
|
{
|
||||||
// nichts tun
|
// nichts tun
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case modus_korrekt:
|
case mod_modus.korrekt:
|
||||||
{
|
{
|
||||||
// nichts tun
|
// nichts tun
|
||||||
break;
|
break;
|
||||||
|
|
@ -359,3 +365,7 @@ module mod_vtm_aufbau
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,13 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_richtung
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -28,7 +34,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function richtung_addieren(richtung1 : typ_richtung, richtung2 : typ_richtung) : typ_richtung
|
export function addieren(richtung1 : typ_richtung, richtung2 : typ_richtung) : typ_richtung
|
||||||
{
|
{
|
||||||
return mod_vtm_helfer.mod(richtung1 + richtung2, 6);
|
return mod_vtm_helfer.mod(richtung1 + richtung2, 6);
|
||||||
}
|
}
|
||||||
|
|
@ -37,7 +43,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function richtung_exportieren(richtung : typ_richtung) : int
|
export function exportieren(richtung : typ_richtung) : int
|
||||||
{
|
{
|
||||||
return richtung;
|
return richtung;
|
||||||
}
|
}
|
||||||
|
|
@ -46,10 +52,13 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function richtung_importieren(richtung_ : int) : typ_richtung
|
export function importieren(richtung_ : int) : typ_richtung
|
||||||
{
|
{
|
||||||
return richtung_;
|
return richtung_;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,13 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_stelle
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -28,7 +34,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_hash(stelle : typ_stelle) : string
|
export function hash(stelle : typ_stelle) : string
|
||||||
{
|
{
|
||||||
return (stelle.u.toFixed(0) + "_" + stelle.v.toFixed(0));
|
return (stelle.u.toFixed(0) + "_" + stelle.v.toFixed(0));
|
||||||
}
|
}
|
||||||
|
|
@ -37,7 +43,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_von_hash(hash : string) : typ_stelle
|
export function von_hash(hash : string) : typ_stelle
|
||||||
{
|
{
|
||||||
let teile : Array<string> = hash.split("_");
|
let teile : Array<string> = hash.split("_");
|
||||||
return {"u": parseInt(teile[0]), "v": parseInt(teile[1])};
|
return {"u": parseInt(teile[0]), "v": parseInt(teile[1])};
|
||||||
|
|
@ -47,7 +53,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_null() : typ_stelle
|
export function null_() : typ_stelle
|
||||||
{
|
{
|
||||||
return {"u": 0, "v": 0};
|
return {"u": 0, "v": 0};
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +62,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_von_richtung(richtung : typ_richtung) : typ_stelle
|
export function von_richtung(richtung : mod_richtung.typ_richtung) : typ_stelle
|
||||||
{
|
{
|
||||||
switch (richtung)
|
switch (richtung)
|
||||||
{
|
{
|
||||||
|
|
@ -74,7 +80,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_addieren(stelle1 : typ_stelle, stelle2 : typ_stelle) : typ_stelle
|
export function addieren(stelle1 : typ_stelle, stelle2 : typ_stelle) : typ_stelle
|
||||||
{
|
{
|
||||||
return {"u": (stelle1.u + stelle2.u), "v": (stelle1.v + stelle2.v)};
|
return {"u": (stelle1.u + stelle2.u), "v": (stelle1.v + stelle2.v)};
|
||||||
}
|
}
|
||||||
|
|
@ -83,19 +89,22 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_exportieren(stelle : typ_stelle) : string
|
export function exportieren(stelle : typ_stelle) : string
|
||||||
{
|
{
|
||||||
return stelle_hash(stelle);
|
return hash(stelle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_importieren(stelle_ : string) : typ_stelle
|
export function importieren(stelle_ : string) : typ_stelle
|
||||||
{
|
{
|
||||||
return stelle_von_hash(stelle_);
|
return von_hash(stelle_);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,13 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_symbol
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -28,7 +34,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function symbol_vergleichen(symbol1 : typ_symbol, symbol2 : typ_symbol) : boolean
|
export function vergleichen(symbol1 : typ_symbol, symbol2 : typ_symbol) : boolean
|
||||||
{
|
{
|
||||||
return (symbol1 === symbol2);
|
return (symbol1 === symbol2);
|
||||||
}
|
}
|
||||||
|
|
@ -37,7 +43,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function symbol_exportieren(symbol : typ_symbol) : int
|
export function exportieren(symbol : typ_symbol) : int
|
||||||
{
|
{
|
||||||
return symbol;
|
return symbol;
|
||||||
}
|
}
|
||||||
|
|
@ -46,10 +52,14 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function symbol_importieren(symbol_ : int) : typ_symbol
|
export function importieren(symbol_ : int) : typ_symbol
|
||||||
{
|
{
|
||||||
return symbol_;
|
return symbol_;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,20 +3,26 @@
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General export function welt_License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General export function welt_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function welt_License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_welt
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -24,7 +30,7 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_welt =
|
export type typ_welt =
|
||||||
{
|
{
|
||||||
felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor>;
|
felder : mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor>;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -32,9 +38,9 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_erstellen
|
export function erstellen
|
||||||
(
|
(
|
||||||
felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor>(stelle_hash))
|
felder : mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor>(mod_stelle.hash))
|
||||||
)
|
)
|
||||||
: typ_welt
|
: typ_welt
|
||||||
{
|
{
|
||||||
|
|
@ -47,9 +53,9 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_felder_lesen(welt : typ_welt) : Array<{stelle : typ_stelle; aktor : typ_aktor;}>
|
export function felder_lesen(welt : typ_welt) : Array<{stelle : mod_stelle.typ_stelle; aktor : mod_aktor.typ_aktor;}>
|
||||||
{
|
{
|
||||||
let felder : Array<{stelle : typ_stelle; aktor : typ_aktor;}> = [];
|
let felder : Array<{stelle : mod_stelle.typ_stelle; aktor : mod_aktor.typ_aktor;}> = [];
|
||||||
welt.felder.iterieren
|
welt.felder.iterieren
|
||||||
(
|
(
|
||||||
(stelle, aktor) => felder.push({"stelle": stelle, "aktor": aktor})
|
(stelle, aktor) => felder.push({"stelle": stelle, "aktor": aktor})
|
||||||
|
|
@ -62,7 +68,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_feld_holen(welt : typ_welt, stelle : typ_stelle) : schnittstelle_fehlermonade<typ_aktor>
|
export function feld_holen(welt : typ_welt, stelle : mod_stelle.typ_stelle) : schnittstelle_fehlermonade<mod_aktor.typ_aktor>
|
||||||
{
|
{
|
||||||
return welt.felder.holen(stelle);
|
return welt.felder.holen(stelle);
|
||||||
}
|
}
|
||||||
|
|
@ -71,7 +77,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_feld_setzen(welt : typ_welt, stelle : typ_stelle, aktor : typ_aktor) : void
|
export function feld_setzen(welt : typ_welt, stelle : mod_stelle.typ_stelle, aktor : mod_aktor.typ_aktor) : void
|
||||||
{
|
{
|
||||||
welt.felder.setzen(stelle, aktor);
|
welt.felder.setzen(stelle, aktor);
|
||||||
}
|
}
|
||||||
|
|
@ -80,17 +86,17 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_feld_wechseln(welt : typ_welt, stelle : typ_stelle, umgekehrt : boolean = false) : void
|
export function feld_wechseln(welt : typ_welt, stelle : mod_stelle.typ_stelle, umgekehrt : boolean = false) : void
|
||||||
{
|
{
|
||||||
let erweitert : boolean = true;
|
let erweitert : boolean = true;
|
||||||
let liste : Array<{pruefer : (aktor : typ_aktor)=>boolean; ersteller : ()=>typ_aktor;}> = (
|
let liste : Array<{pruefer : (aktor : mod_aktor.typ_aktor)=>boolean; ersteller : ()=>mod_aktor.typ_aktor;}> = (
|
||||||
[]
|
[]
|
||||||
.concat
|
.concat
|
||||||
(
|
(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"pruefer": (aktor) => (aktor.art === "befoerderer"),
|
"pruefer": (aktor) => (aktor.art === "befoerderer"),
|
||||||
"ersteller": () => befoerderer_erstellen_aktor(0),
|
"ersteller": () => mod_aktor_befoerderer.erstellen_aktor(0),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
@ -104,7 +110,7 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
if (aktor.art === "schreiber")
|
if (aktor.art === "schreiber")
|
||||||
{
|
{
|
||||||
return (schreiber_symbol_lesen(aktor.angaben) === symbol);
|
return (mod_aktor_schreiber.symbol_lesen(aktor.angaben) === symbol);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -112,7 +118,7 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
"ersteller": () => schreiber_erstellen_aktor(0, symbol)
|
"ersteller": () => mod_aktor_schreiber.erstellen_aktor(0, symbol)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -123,8 +129,8 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
index =>
|
index =>
|
||||||
{
|
{
|
||||||
let symbol_links : typ_symbol = (2*index+0);
|
let symbol_links : mod_symbol.typ_symbol = (2*index+0);
|
||||||
let symbol_rechts : typ_symbol = (2*index+1);
|
let symbol_rechts : mod_symbol.typ_symbol = (2*index+1);
|
||||||
return (
|
return (
|
||||||
{
|
{
|
||||||
"pruefer": (aktor) =>
|
"pruefer": (aktor) =>
|
||||||
|
|
@ -132,9 +138,9 @@ module mod_vtm_aufbau
|
||||||
if (aktor.art === "leser")
|
if (aktor.art === "leser")
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
(leser_symbol_links_lesen(aktor.angaben) === symbol_links)
|
(mod_aktor_leser.symbol_links_lesen(aktor.angaben) === symbol_links)
|
||||||
&&
|
&&
|
||||||
(leser_symbol_rechts_lesen(aktor.angaben) === symbol_rechts)
|
(mod_aktor_leser.symbol_rechts_lesen(aktor.angaben) === symbol_rechts)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -143,7 +149,7 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
"ersteller": () => leser_erstellen_aktor(0, symbol_links, symbol_rechts)
|
"ersteller": () => mod_aktor_leser.erstellen_aktor(0, symbol_links, symbol_rechts)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -154,16 +160,16 @@ module mod_vtm_aufbau
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"pruefer": (aktor) => (aktor.art === "verwerfer"),
|
"pruefer": (aktor) => (aktor.art === "verwerfer"),
|
||||||
"ersteller": () => verwerfer_erstellen_aktor(),
|
"ersteller": () => mod_aktor_verwerfer.erstellen_aktor(),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
let index_alt : schnittstelle_fehlermonade<int>;
|
let index_alt : schnittstelle_fehlermonade<int>;
|
||||||
let aktor_alt_ : schnittstelle_fehlermonade<typ_aktor> = welt.felder.holen(stelle);
|
let aktor_alt_ : schnittstelle_fehlermonade<mod_aktor.typ_aktor> = welt.felder.holen(stelle);
|
||||||
if (aktor_alt_.ist_schlicht())
|
if (aktor_alt_.ist_schlicht())
|
||||||
{
|
{
|
||||||
let aktor_alt : typ_aktor = aktor_alt_.lesen();
|
let aktor_alt : mod_aktor.typ_aktor = aktor_alt_.lesen();
|
||||||
let gefunden : boolean = (
|
let gefunden : boolean = (
|
||||||
liste.some
|
liste.some
|
||||||
(
|
(
|
||||||
|
|
@ -199,8 +205,8 @@ module mod_vtm_aufbau
|
||||||
if (index_alt.ist_schlicht())
|
if (index_alt.ist_schlicht())
|
||||||
{
|
{
|
||||||
let index_neu : int = mod_vtm_helfer.mod(index_alt.lesen() + (umgekehrt ? -1 : +1), liste.length);
|
let index_neu : int = mod_vtm_helfer.mod(index_alt.lesen() + (umgekehrt ? -1 : +1), liste.length);
|
||||||
let aktor_neu : typ_aktor = liste[index_neu].ersteller();
|
let aktor_neu : mod_aktor.typ_aktor = liste[index_neu].ersteller();
|
||||||
welt_feld_setzen(welt, stelle, aktor_neu);
|
feld_setzen(welt, stelle, aktor_neu);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -214,12 +220,12 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_feld_drehen(welt : typ_welt, stelle : typ_stelle, inkrement : int = +1) : void
|
export function feld_drehen(welt : typ_welt, stelle : mod_stelle.typ_stelle, inkrement : int = +1) : void
|
||||||
{
|
{
|
||||||
let aktor_ : schnittstelle_fehlermonade<typ_aktor> = welt.felder.holen(stelle);
|
let aktor_ : schnittstelle_fehlermonade<mod_aktor.typ_aktor> = welt.felder.holen(stelle);
|
||||||
if (aktor_.ist_schlicht)
|
if (aktor_.ist_schlicht)
|
||||||
{
|
{
|
||||||
aktor_drehen(aktor_.lesen(), inkrement);
|
mod_aktor.drehen(aktor_.lesen(), inkrement);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -232,9 +238,9 @@ module mod_vtm_aufbau
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @throws {Error}
|
* @throws {Error}
|
||||||
*/
|
*/
|
||||||
export function welt_erzeuger_finden(welt : typ_welt) : typ_stelle
|
export function erzeuger_finden(welt : typ_welt) : mod_stelle.typ_stelle
|
||||||
{
|
{
|
||||||
let stelle : schnittstelle_fehlermonade<typ_stelle> = (new klasse_nichts<typ_stelle>());
|
let stelle : schnittstelle_fehlermonade<mod_stelle.typ_stelle> = (new klasse_nichts<mod_stelle.typ_stelle>());
|
||||||
welt.felder.iterieren
|
welt.felder.iterieren
|
||||||
(
|
(
|
||||||
(stelle_, aktor) =>
|
(stelle_, aktor) =>
|
||||||
|
|
@ -248,7 +254,7 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stelle = (new klasse_schlicht<typ_stelle>(stelle_));
|
stelle = (new klasse_schlicht<mod_stelle.typ_stelle>(stelle_));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -269,28 +275,28 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_blanko(groesse : int = 3) : typ_welt
|
export function blanko(groesse : int = 3) : typ_welt
|
||||||
{
|
{
|
||||||
let welt : typ_welt = welt_erstellen();
|
let welt : typ_welt = erstellen();
|
||||||
for (let u : int = -groesse; u <= +groesse; u += 1)
|
for (let u : int = -groesse; u <= +groesse; u += 1)
|
||||||
{
|
{
|
||||||
for (let v : int = -groesse; v <= +groesse; v += 1)
|
for (let v : int = -groesse; v <= +groesse; v += 1)
|
||||||
{
|
{
|
||||||
if (Math.abs(u-v) <= groesse)
|
if (Math.abs(u-v) <= groesse)
|
||||||
{
|
{
|
||||||
let stelle : typ_stelle = {"u": u, "v": v};
|
let stelle : mod_stelle.typ_stelle = {"u": u, "v": v};
|
||||||
let aktor : typ_aktor;
|
let aktor : mod_aktor.typ_aktor;
|
||||||
if ((u === -groesse) && (v === 0))
|
if ((u === -groesse) && (v === 0))
|
||||||
{
|
{
|
||||||
aktor = erzeuger_erstellen_aktor(0);
|
aktor = mod_aktor_erzeuger.erstellen_aktor(0);
|
||||||
}
|
}
|
||||||
else if ((u === +groesse) && (v === 0))
|
else if ((u === +groesse) && (v === 0))
|
||||||
{
|
{
|
||||||
aktor = annehmer_erstellen_aktor();
|
aktor = mod_aktor_annehmer.erstellen_aktor();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aktor = verwerfer_erstellen_aktor();
|
aktor = mod_aktor_verwerfer.erstellen_aktor();
|
||||||
}
|
}
|
||||||
welt.felder.setzen(stelle, aktor);
|
welt.felder.setzen(stelle, aktor);
|
||||||
}
|
}
|
||||||
|
|
@ -303,7 +309,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_exportieren(welt : typ_welt) : any
|
export function exportieren(welt : typ_welt) : any
|
||||||
{
|
{
|
||||||
let roh : any = {};
|
let roh : any = {};
|
||||||
roh["felder"] = {};
|
roh["felder"] = {};
|
||||||
|
|
@ -311,8 +317,8 @@ module mod_vtm_aufbau
|
||||||
(
|
(
|
||||||
(stelle, aktor) =>
|
(stelle, aktor) =>
|
||||||
{
|
{
|
||||||
let stelle_ : string = stelle_exportieren(stelle);
|
let stelle_ : string = mod_stelle.exportieren(stelle);
|
||||||
let aktor_ : any = aktor_exportieren(aktor);
|
let aktor_ : any = mod_aktor.exportieren(aktor);
|
||||||
roh["felder"][stelle_] = aktor_;
|
roh["felder"][stelle_] = aktor_;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -324,18 +330,18 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function welt_importieren(roh : any) : typ_welt
|
export function importieren(roh : any) : typ_welt
|
||||||
{
|
{
|
||||||
let felder : mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<typ_stelle, typ_aktor>(stelle_hash));
|
let felder : mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor> = (new mod_vtm_helfer.klasse_hashmap<mod_stelle.typ_stelle, mod_aktor.typ_aktor>(mod_stelle.hash));
|
||||||
for (let stelle_ in roh["felder"])
|
for (let stelle_ in roh["felder"])
|
||||||
{
|
{
|
||||||
let stelle : typ_stelle = stelle_importieren(stelle_);
|
let stelle : mod_stelle.typ_stelle = mod_stelle.importieren(stelle_);
|
||||||
let aktor_ : typ_aktor = roh["felder"][stelle_];
|
let aktor_ : mod_aktor.typ_aktor = roh["felder"][stelle_];
|
||||||
let aktor : typ_aktor = aktor_importieren(aktor_);
|
let aktor : mod_aktor.typ_aktor = mod_aktor.importieren(aktor_);
|
||||||
felder.setzen(stelle, aktor);
|
felder.setzen(stelle, aktor);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
welt_erstellen
|
erstellen
|
||||||
(
|
(
|
||||||
felder
|
felder
|
||||||
)
|
)
|
||||||
|
|
@ -344,3 +350,7 @@ module mod_vtm_aufbau
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,13 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
module mod_vtm
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
export module mod_zustand
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -28,9 +34,13 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export var zustand_abgelehnt = -1;
|
export var abgelehnt = -1;
|
||||||
export var zustand_laufend = 0;
|
export var laufend = 0;
|
||||||
export var zustand_angenommen = +1;
|
export var angenommen = +1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,24 @@
|
||||||
type typ_komplex<typ_angaben> = {art : string; angaben ?: typ_angaben;};
|
type typ_komplex<typ_angaben> = {art : string; angaben ?: typ_angaben;};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function einpacken<typ_angaben>(art : string, angaben : typ_angaben) : typ_komplex<typ_angaben>
|
||||||
|
{
|
||||||
|
return {"art": art, "angaben": angaben};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function auspacken<typ_angaben>(komplex : typ_komplex<typ_angaben>) : typ_angaben
|
||||||
|
{
|
||||||
|
return komplex.angaben;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -115,27 +115,27 @@ function haupt() : void
|
||||||
let hoehe : float = 80;
|
let hoehe : float = 80;
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("erzeuger"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("erzeuger"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("annehmer"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("annehmer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("verwerfer"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("verwerfer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("befoerderer"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("befoerderer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("schreiber"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("schreiber"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_beispiel("leser"),
|
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("leser"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_leser"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_leser"),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
@ -147,7 +147,7 @@ function haupt() : void
|
||||||
mod_vtm_manifestation.svg_aktor_erstellen_manifestation
|
mod_vtm_manifestation.svg_aktor_erstellen_manifestation
|
||||||
(
|
(
|
||||||
eintrag.aufbau,
|
eintrag.aufbau,
|
||||||
mod_vtm_aufbau.stelle_null()
|
mod_vtm.mod_aufbau.mod_stelle.null_()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
let xmlknoten : mod_vtm_helfer.typ_xmlknoten = (
|
let xmlknoten : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
|
@ -168,13 +168,13 @@ function haupt() : void
|
||||||
}
|
}
|
||||||
// Spiel
|
// Spiel
|
||||||
{
|
{
|
||||||
// let aufbau : mod_vtm_aufbau.typ_partie;
|
let aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie;
|
||||||
aufgaben_eintragen
|
aufgaben_eintragen
|
||||||
(
|
(
|
||||||
function (aufgabe : mod_vtm_aufbau.typ_aufgabe) : void {mod_vtm_aufbau.partie_aufgabe_setzen(aufbau, aufgabe);}
|
function (aufgabe : mod_vtm_aufbau.typ_aufgabe) : void {mod_vtm.mod_aufbau.mod_partie.aufgabe_setzen(aufbau, aufgabe);}
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
aufbau = mod_vtm_aufbau.partie_erstellen(mod_vtm_aufbau.aufgabe_holen(0));
|
aufbau = mod_vtm.mod_aufbau.mod_partie.erstellen(mod_vtm_aufbau.aufgabe_holen(0));
|
||||||
mod_vtm_manifestation.manifestation_einrichten
|
mod_vtm_manifestation.manifestation_einrichten
|
||||||
(
|
(
|
||||||
mod_vtm_manifestation.web_partie_erstellen_erweitert
|
mod_vtm_manifestation.web_partie_erstellen_erweitert
|
||||||
|
|
@ -194,7 +194,6 @@ function haupt() : void
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var aufbau : mod_vtm_aufbau.typ_partie = null;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue