fast fertig
This commit is contained in:
parent
6012730288
commit
74a9792bbf
20
makefile
20
makefile
|
|
@ -52,11 +52,14 @@ ${dir_erzeugnis}/vtm.dat.js: \
|
||||||
${dir_erzeugnis}/vtm.js: \
|
${dir_erzeugnis}/vtm.js: \
|
||||||
${dir_quelldatein}/basis/typen.ts \
|
${dir_quelldatein}/basis/typen.ts \
|
||||||
${dir_quelldatein}/basis/fehlermonade.ts \
|
${dir_quelldatein}/basis/fehlermonade.ts \
|
||||||
|
${dir_quelldatein}/basis/aufruf.ts \
|
||||||
${dir_quelldatein}/helfer/verschiedenes.ts \
|
${dir_quelldatein}/helfer/verschiedenes.ts \
|
||||||
${dir_quelldatein}/helfer/mathematik.ts \
|
${dir_quelldatein}/helfer/mathematik.ts \
|
||||||
${dir_quelldatein}/helfer/vektor.ts \
|
${dir_quelldatein}/helfer/vektor.ts \
|
||||||
${dir_quelldatein}/helfer/hashmap.ts \
|
${dir_quelldatein}/helfer/hashmap.ts \
|
||||||
${dir_quelldatein}/helfer/xmlknoten.ts \
|
${dir_quelldatein}/helfer/xmlknoten/_xmlknoten.ts \
|
||||||
|
${dir_quelldatein}/helfer/xmlknoten/text.ts \
|
||||||
|
${dir_quelldatein}/helfer/xmlknoten/normal.ts \
|
||||||
${dir_quelldatein}/helfer/uebersetzung.ts \
|
${dir_quelldatein}/helfer/uebersetzung.ts \
|
||||||
${dir_quelldatein}/daten.ts \
|
${dir_quelldatein}/daten.ts \
|
||||||
${dir_quelldatein}/aufbau/richtung.ts \
|
${dir_quelldatein}/aufbau/richtung.ts \
|
||||||
|
|
@ -64,21 +67,20 @@ ${dir_erzeugnis}/vtm.js: \
|
||||||
${dir_quelldatein}/aufbau/stelle.ts \
|
${dir_quelldatein}/aufbau/stelle.ts \
|
||||||
${dir_quelldatein}/aufbau/zustand.ts \
|
${dir_quelldatein}/aufbau/zustand.ts \
|
||||||
${dir_quelldatein}/aufbau/figur.ts \
|
${dir_quelldatein}/aufbau/figur.ts \
|
||||||
|
${dir_quelldatein}/aufbau/aktoren/_aktor.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/erzeuger.ts \
|
${dir_quelldatein}/aufbau/aktoren/erzeuger.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/annehmer.ts \
|
${dir_quelldatein}/aufbau/aktoren/annehmer.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/verwerfer.ts \
|
${dir_quelldatein}/aufbau/aktoren/verwerfer.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/befoerderer.ts \
|
${dir_quelldatein}/aufbau/aktoren/befoerderer.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/schreiber.ts \
|
${dir_quelldatein}/aufbau/aktoren/schreiber.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/leser.ts \
|
${dir_quelldatein}/aufbau/aktoren/leser.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/aktor.ts \
|
|
||||||
${dir_quelldatein}/aufbau/welt.ts \
|
${dir_quelldatein}/aufbau/welt.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/test.ts \
|
${dir_quelldatein}/aufbau/aufgaben/test.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/akzeptortest.ts \
|
${dir_quelldatein}/aufbau/aufgaben/akzeptortest.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/transduktortest.ts \
|
${dir_quelldatein}/aufbau/aufgaben/transduktortest.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/aufgabe.ts \
|
|
||||||
${dir_quelldatein}/aufbau/aufgaben/akzeptoraufgabe.ts \
|
${dir_quelldatein}/aufbau/aufgaben/akzeptoraufgabe.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/transduktoraufgabe.ts \
|
${dir_quelldatein}/aufbau/aufgaben/transduktoraufgabe.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/aufgabe_.ts \
|
${dir_quelldatein}/aufbau/aufgaben/aufgabe.ts \
|
||||||
${dir_quelldatein}/aufbau/modus.ts \
|
${dir_quelldatein}/aufbau/modus.ts \
|
||||||
${dir_quelldatein}/aufbau/partie.ts \
|
${dir_quelldatein}/aufbau/partie.ts \
|
||||||
${dir_quelldatein}/manifestation/manifestation.ts \
|
${dir_quelldatein}/manifestation/manifestation.ts \
|
||||||
|
|
@ -95,11 +97,14 @@ ${dir_erzeugnis}/vtm.js: \
|
||||||
@ ${cmd_tsc} \
|
@ ${cmd_tsc} \
|
||||||
${dir_quelldatein}/basis/typen.ts \
|
${dir_quelldatein}/basis/typen.ts \
|
||||||
${dir_quelldatein}/basis/fehlermonade.ts \
|
${dir_quelldatein}/basis/fehlermonade.ts \
|
||||||
|
${dir_quelldatein}/basis/aufruf.ts \
|
||||||
${dir_quelldatein}/helfer/verschiedenes.ts \
|
${dir_quelldatein}/helfer/verschiedenes.ts \
|
||||||
${dir_quelldatein}/helfer/mathematik.ts \
|
${dir_quelldatein}/helfer/mathematik.ts \
|
||||||
${dir_quelldatein}/helfer/vektor.ts \
|
${dir_quelldatein}/helfer/vektor.ts \
|
||||||
${dir_quelldatein}/helfer/hashmap.ts \
|
${dir_quelldatein}/helfer/hashmap.ts \
|
||||||
${dir_quelldatein}/helfer/xmlknoten.ts \
|
${dir_quelldatein}/helfer/xmlknoten/_xmlknoten.ts \
|
||||||
|
${dir_quelldatein}/helfer/xmlknoten/text.ts \
|
||||||
|
${dir_quelldatein}/helfer/xmlknoten/normal.ts \
|
||||||
${dir_quelldatein}/helfer/uebersetzung.ts \
|
${dir_quelldatein}/helfer/uebersetzung.ts \
|
||||||
${dir_quelldatein}/daten.ts \
|
${dir_quelldatein}/daten.ts \
|
||||||
${dir_quelldatein}/aufbau/richtung.ts \
|
${dir_quelldatein}/aufbau/richtung.ts \
|
||||||
|
|
@ -107,21 +112,20 @@ ${dir_erzeugnis}/vtm.js: \
|
||||||
${dir_quelldatein}/aufbau/stelle.ts \
|
${dir_quelldatein}/aufbau/stelle.ts \
|
||||||
${dir_quelldatein}/aufbau/zustand.ts \
|
${dir_quelldatein}/aufbau/zustand.ts \
|
||||||
${dir_quelldatein}/aufbau/figur.ts \
|
${dir_quelldatein}/aufbau/figur.ts \
|
||||||
|
${dir_quelldatein}/aufbau/aktoren/_aktor.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/erzeuger.ts \
|
${dir_quelldatein}/aufbau/aktoren/erzeuger.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/annehmer.ts \
|
${dir_quelldatein}/aufbau/aktoren/annehmer.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/verwerfer.ts \
|
${dir_quelldatein}/aufbau/aktoren/verwerfer.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/befoerderer.ts \
|
${dir_quelldatein}/aufbau/aktoren/befoerderer.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/schreiber.ts \
|
${dir_quelldatein}/aufbau/aktoren/schreiber.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/leser.ts \
|
${dir_quelldatein}/aufbau/aktoren/leser.ts \
|
||||||
${dir_quelldatein}/aufbau/aktoren/aktor.ts \
|
|
||||||
${dir_quelldatein}/aufbau/welt.ts \
|
${dir_quelldatein}/aufbau/welt.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/test.ts \
|
${dir_quelldatein}/aufbau/aufgaben/test.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/akzeptortest.ts \
|
${dir_quelldatein}/aufbau/aufgaben/akzeptortest.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/transduktortest.ts \
|
${dir_quelldatein}/aufbau/aufgaben/transduktortest.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/aufgabe.ts \
|
|
||||||
${dir_quelldatein}/aufbau/aufgaben/akzeptoraufgabe.ts \
|
${dir_quelldatein}/aufbau/aufgaben/akzeptoraufgabe.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/transduktoraufgabe.ts \
|
${dir_quelldatein}/aufbau/aufgaben/transduktoraufgabe.ts \
|
||||||
${dir_quelldatein}/aufbau/aufgaben/aufgabe_.ts \
|
${dir_quelldatein}/aufbau/aufgaben/aufgabe.ts \
|
||||||
${dir_quelldatein}/aufbau/modus.ts \
|
${dir_quelldatein}/aufbau/modus.ts \
|
||||||
${dir_quelldatein}/aufbau/partie.ts \
|
${dir_quelldatein}/aufbau/partie.ts \
|
||||||
${dir_quelldatein}/manifestation/manifestation.ts \
|
${dir_quelldatein}/manifestation/manifestation.ts \
|
||||||
|
|
|
||||||
103
quelldatein/aufbau/aktoren/_aktor.ts
Normal file
103
quelldatein/aufbau/aktoren/_aktor.ts
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
/*
|
||||||
|
* Verrückte Turing-Maschinen — A turing complete game
|
||||||
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module mod_vtm_aufbau
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_aktor = typ_komplex<any>;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type schnittstelle_aktor =
|
||||||
|
{
|
||||||
|
beispiel : ()=>typ_aktor;
|
||||||
|
drehen : (aktor : typ_aktor, inkrement : int)=>void;
|
||||||
|
verwenden : (aktor : typ_aktor, figur : typ_figur)=>void;
|
||||||
|
exportieren : (aktor : typ_aktor)=>any;
|
||||||
|
importieren : (roh : any)=>typ_aktor;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export var implementierung_aktor : {[art : string] : schnittstelle_aktor} = {};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aktor_erstellen(art : string, kern : any) : typ_aktor
|
||||||
|
{
|
||||||
|
return {"art": art, "angaben": kern};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aktor_beispiel(art : string) : typ_aktor
|
||||||
|
{
|
||||||
|
return implementierung_aktor[art].beispiel();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aktor_drehen(aktor : typ_aktor, inkrement ?: int) : void
|
||||||
|
{
|
||||||
|
return implementierung_aktor[aktor.art].drehen(aktor, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aktor_verwenden(aktor : typ_aktor, figur : typ_figur) : void
|
||||||
|
{
|
||||||
|
return implementierung_aktor[aktor.art].verwenden(aktor, figur);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aktor_exportieren(aktor : typ_aktor) : any
|
||||||
|
{
|
||||||
|
return implementierung_aktor[aktor.art].exportieren(aktor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aktor_importieren(roh : any) : typ_aktor
|
||||||
|
{
|
||||||
|
return implementierung_aktor[roh.art].importieren(roh);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,329 +0,0 @@
|
||||||
/*
|
|
||||||
* Verrückte Turing-Maschinen — A turing complete game
|
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export type typ_aktor =
|
|
||||||
{
|
|
||||||
art : string;
|
|
||||||
angaben ?: any;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_erstellen
|
|
||||||
(
|
|
||||||
art : string,
|
|
||||||
angaben : any = {}
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
switch (art)
|
|
||||||
{
|
|
||||||
case "erzeuger":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": art,
|
|
||||||
"angaben": aktor_erzeuger_erstellen(angaben["richtung"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "annehmer":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": art,
|
|
||||||
"angaben": aktor_annehmer_erstellen(),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "verwerfer":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": art,
|
|
||||||
"angaben": aktor_verwerfer_erstellen(),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "befoerderer":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": art,
|
|
||||||
"angaben": aktor_befoerderer_erstellen(angaben["richtung"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "schreiber":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": art,
|
|
||||||
"angaben": aktor_schreiber_erstellen(angaben["richtung"], angaben["symbol"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "leser":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": art,
|
|
||||||
"angaben": aktor_leser_erstellen(angaben["richtung"], angaben["symbol_links"], angaben["symbol_rechts"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelte Art";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_drehen
|
|
||||||
(
|
|
||||||
aktor : typ_aktor,
|
|
||||||
inkrement ?: int
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
switch (aktor.art)
|
|
||||||
{
|
|
||||||
case "erzeuger":
|
|
||||||
{
|
|
||||||
return aktor_erzeuger_drehen(aktor.angaben, inkrement);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "annehmer":
|
|
||||||
{
|
|
||||||
return aktor_annehmer_drehen(aktor.angaben, inkrement);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "verwerfer":
|
|
||||||
{
|
|
||||||
return aktor_verwerfer_drehen(aktor.angaben, inkrement);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "befoerderer":
|
|
||||||
{
|
|
||||||
return aktor_befoerderer_drehen(aktor.angaben, inkrement);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "schreiber":
|
|
||||||
{
|
|
||||||
return aktor_schreiber_drehen(aktor.angaben, inkrement);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "leser":
|
|
||||||
{
|
|
||||||
return aktor_leser_drehen(aktor.angaben, inkrement);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelt";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_verwenden
|
|
||||||
(
|
|
||||||
aktor : typ_aktor,
|
|
||||||
figur : typ_figur
|
|
||||||
)
|
|
||||||
: void
|
|
||||||
{
|
|
||||||
switch (aktor.art)
|
|
||||||
{
|
|
||||||
case "erzeuger":
|
|
||||||
{
|
|
||||||
return aktor_erzeuger_verwenden(aktor.angaben, figur);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "annehmer":
|
|
||||||
{
|
|
||||||
return aktor_annehmer_verwenden(aktor.angaben, figur);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "verwerfer":
|
|
||||||
{
|
|
||||||
return aktor_verwerfer_verwenden(aktor.angaben, figur);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "befoerderer":
|
|
||||||
{
|
|
||||||
return aktor_befoerderer_verwenden(aktor.angaben, figur);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "schreiber":
|
|
||||||
{
|
|
||||||
return aktor_schreiber_verwenden(aktor.angaben, figur);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "leser":
|
|
||||||
{
|
|
||||||
return aktor_leser_verwenden(aktor.angaben, figur);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelt";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_exportieren
|
|
||||||
(
|
|
||||||
aktor : typ_aktor
|
|
||||||
)
|
|
||||||
: any
|
|
||||||
{
|
|
||||||
switch (aktor.art)
|
|
||||||
{
|
|
||||||
case "erzeuger":
|
|
||||||
{
|
|
||||||
return aktor_erzeuger_exportieren(aktor.angaben);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "annehmer":
|
|
||||||
{
|
|
||||||
return aktor_annehmer_exportieren(aktor.angaben);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "verwerfer":
|
|
||||||
{
|
|
||||||
return aktor_verwerfer_exportieren(aktor.angaben);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "befoerderer":
|
|
||||||
{
|
|
||||||
return aktor_befoerderer_exportieren(aktor.angaben);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "schreiber":
|
|
||||||
{
|
|
||||||
return aktor_schreiber_exportieren(aktor.angaben);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "leser":
|
|
||||||
{
|
|
||||||
return aktor_leser_exportieren(aktor.angaben);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelt";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_importieren
|
|
||||||
(
|
|
||||||
roh : any
|
|
||||||
)
|
|
||||||
: typ_aktor
|
|
||||||
{
|
|
||||||
switch (roh["art"])
|
|
||||||
{
|
|
||||||
case "erzeuger":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": roh["art"],
|
|
||||||
"angaben": aktor_erzeuger_importieren(roh["angaben"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "annehmer":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": roh["art"],
|
|
||||||
"angaben": aktor_annehmer_importieren(roh["angaben"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "verwerfer":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": roh["art"],
|
|
||||||
"angaben": aktor_verwerfer_importieren(roh["angaben"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "befoerderer":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": roh["art"],
|
|
||||||
"angaben": aktor_befoerderer_importieren(roh["angaben"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "schreiber":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": roh["art"],
|
|
||||||
"angaben": aktor_schreiber_importieren(roh["angaben"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "leser":
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"art": roh["art"],
|
|
||||||
"angaben": aktor_leser_importieren(roh["angaben"]),
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelte Art";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -3,16 +3,16 @@
|
||||||
* 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 aktor_annehmer_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 aktor_annehmer_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function aktor_annehmer_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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_aktor_annehmer =
|
export type typ_annehmer =
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
@ -31,10 +31,10 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_annehmer_erstellen
|
function annehmer_erstellen
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
: typ_aktor_annehmer
|
: typ_annehmer
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
};
|
};
|
||||||
|
|
@ -44,7 +44,36 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_annehmer_drehen(aktor_annehmer : typ_aktor_annehmer, inkrement ?: int) : void
|
export function annehmer_erstellen_aktor
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_aktor
|
||||||
|
{
|
||||||
|
return {"art": "annehmer", "angaben": annehmer_erstellen()};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function annehmer_beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_annehmer
|
||||||
|
{
|
||||||
|
return annehmer_erstellen();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function annehmer_drehen
|
||||||
|
(
|
||||||
|
annehmer : typ_annehmer,
|
||||||
|
inkrement ?: int
|
||||||
|
)
|
||||||
|
: void
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -52,7 +81,12 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_annehmer_verwenden(aktor_annehmer : typ_aktor_annehmer, figur : typ_figur) : void
|
function annehmer_verwenden
|
||||||
|
(
|
||||||
|
annehmer : typ_annehmer,
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
{
|
{
|
||||||
figur_annehmen(figur);
|
figur_annehmen(figur);
|
||||||
}
|
}
|
||||||
|
|
@ -61,7 +95,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_annehmer_exportieren(aktor_annehmer : typ_aktor_annehmer) : any
|
function annehmer_exportieren
|
||||||
|
(
|
||||||
|
annehmer : typ_annehmer
|
||||||
|
)
|
||||||
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
};
|
};
|
||||||
|
|
@ -71,15 +109,35 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_annehmer_importieren(roh : any) : typ_aktor_annehmer
|
function annehmer_importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_annehmer
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
aktor_annehmer_erstellen
|
annehmer_erstellen
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let wrap = (angaben => ({"art": "annehmer", "angaben": angaben}));
|
||||||
|
let unwrap = (aktor => aktor.angaben);
|
||||||
|
implementierung_aktor["annehmer"] =
|
||||||
|
{
|
||||||
|
"beispiel": () => wrap(annehmer_beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => annehmer_drehen(unwrap(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => annehmer_verwenden(unwrap(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "annehmer_", "angaben": annehmer_exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => wrap(annehmer_importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,16 @@
|
||||||
* 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 aktor_befoerderer_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 aktor_befoerderer_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function aktor_befoerderer_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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_aktor_befoerderer =
|
export type typ_befoerderer =
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
richtung : typ_richtung;
|
||||||
}
|
}
|
||||||
|
|
@ -32,7 +32,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_befoerderer_erstellen(richtung : typ_richtung = 0) : typ_aktor_befoerderer
|
function befoerderer_erstellen
|
||||||
|
(
|
||||||
|
richtung : typ_richtung
|
||||||
|
)
|
||||||
|
: typ_befoerderer
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung,
|
"richtung": richtung,
|
||||||
|
|
@ -43,37 +47,80 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_befoerderer_richtung_lesen(aktor_befoerderer : typ_aktor_befoerderer) : typ_richtung
|
export function befoerderer_erstellen_aktor
|
||||||
|
(
|
||||||
|
richtung : typ_richtung
|
||||||
|
)
|
||||||
|
: typ_aktor
|
||||||
{
|
{
|
||||||
return aktor_befoerderer.richtung;
|
return {"art": "befoerderer", "angaben": befoerderer_erstellen(richtung)};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_befoerderer_drehen(aktor_befoerderer : typ_aktor_befoerderer, inkrement : int = +1) : void
|
function befoerderer_beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_befoerderer
|
||||||
{
|
{
|
||||||
aktor_befoerderer.richtung = richtung_addieren(aktor_befoerderer.richtung, inkrement);
|
return befoerderer_erstellen(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_befoerderer_verwenden(aktor_befoerderer : typ_aktor_befoerderer, figur : typ_figur) : void
|
export function befoerderer_richtung_lesen
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer
|
||||||
|
)
|
||||||
|
: typ_richtung
|
||||||
{
|
{
|
||||||
figur_bewegen(figur, aktor_befoerderer.richtung);
|
return befoerderer.richtung;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_befoerderer_exportieren(aktor_befoerderer : typ_aktor_befoerderer) : any
|
function befoerderer_drehen
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer,
|
||||||
|
inkrement : int = +1
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
befoerderer.richtung = richtung_addieren(befoerderer.richtung, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function befoerderer_verwenden
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer,
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
figur_bewegen(figur, befoerderer.richtung);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function befoerderer_exportieren
|
||||||
|
(
|
||||||
|
befoerderer : typ_befoerderer
|
||||||
|
)
|
||||||
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung_exportieren(aktor_befoerderer.richtung),
|
"richtung": richtung_exportieren(befoerderer.richtung),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -81,16 +128,36 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_befoerderer_importieren(roh : any) : typ_aktor_befoerderer
|
function befoerderer_importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_befoerderer
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
aktor_befoerderer_erstellen
|
befoerderer_erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"])
|
richtung_importieren(roh["richtung"])
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let wrap = (angaben => ({"art": "befoerderer", "angaben": angaben}));
|
||||||
|
let unwrap = (aktor => aktor.angaben);
|
||||||
|
implementierung_aktor["befoerderer"] =
|
||||||
|
{
|
||||||
|
"beispiel": () => wrap(befoerderer_beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => befoerderer_drehen(unwrap(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => befoerderer_verwenden(unwrap(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "befoerderer", "angaben": befoerderer_exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => wrap(befoerderer_importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_aktor_erzeuger =
|
export type typ_erzeuger =
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
richtung : typ_richtung;
|
||||||
}
|
}
|
||||||
|
|
@ -32,11 +32,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_erzeuger_erstellen
|
function erzeuger_erstellen
|
||||||
(
|
(
|
||||||
richtung : typ_richtung = 0
|
richtung : typ_richtung
|
||||||
)
|
)
|
||||||
: typ_aktor_erzeuger
|
: typ_erzeuger
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung,
|
"richtung": richtung,
|
||||||
|
|
@ -47,55 +47,80 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_erzeuger_richtung_lesen
|
export function erzeuger_erstellen_aktor
|
||||||
(
|
(
|
||||||
aktor_erzeuger : typ_aktor_erzeuger
|
richtung : typ_richtung
|
||||||
)
|
)
|
||||||
: typ_richtung
|
: typ_aktor
|
||||||
{
|
{
|
||||||
return aktor_erzeuger.richtung;
|
return {"art": "erzeuger", "angaben": erzeuger_erstellen(richtung)};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_erzeuger_drehen
|
function erzeuger_beispiel
|
||||||
(
|
(
|
||||||
aktor_erzeuger : typ_aktor_erzeuger,
|
)
|
||||||
|
: typ_erzeuger
|
||||||
|
{
|
||||||
|
return erzeuger_erstellen(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function erzeuger_richtung_lesen
|
||||||
|
(
|
||||||
|
erzeuger : typ_erzeuger
|
||||||
|
)
|
||||||
|
: typ_richtung
|
||||||
|
{
|
||||||
|
return erzeuger.richtung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function erzeuger_drehen
|
||||||
|
(
|
||||||
|
erzeuger : typ_erzeuger,
|
||||||
inkrement : int = +1
|
inkrement : int = +1
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
aktor_erzeuger.richtung = richtung_addieren(aktor_erzeuger.richtung, inkrement);
|
erzeuger.richtung = richtung_addieren(erzeuger.richtung, inkrement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_erzeuger_verwenden
|
function erzeuger_verwenden
|
||||||
(
|
(
|
||||||
aktor_erzeuger : typ_aktor_erzeuger,
|
erzeuger : typ_erzeuger,
|
||||||
figur : typ_figur
|
figur : typ_figur
|
||||||
)
|
)
|
||||||
: void
|
: void
|
||||||
{
|
{
|
||||||
figur_bewegen(figur, aktor_erzeuger.richtung);
|
figur_bewegen(figur, erzeuger.richtung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_erzeuger_exportieren
|
function erzeuger_exportieren
|
||||||
(
|
(
|
||||||
aktor_erzeuger : typ_aktor_erzeuger
|
erzeuger : typ_erzeuger
|
||||||
)
|
)
|
||||||
: any
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung_exportieren(aktor_erzeuger.richtung),
|
"richtung": richtung_exportieren(erzeuger.richtung),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -103,20 +128,36 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_erzeuger_importieren
|
function erzeuger_importieren
|
||||||
(
|
(
|
||||||
roh : any
|
roh : any
|
||||||
)
|
)
|
||||||
: typ_aktor_erzeuger
|
: typ_erzeuger
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
aktor_erzeuger_erstellen
|
erzeuger_erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"])
|
richtung_importieren(roh["richtung"])
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let wrap = (angaben => ({"art": "erzeuger", "angaben": angaben}));
|
||||||
|
let unwrap = (aktor => aktor.angaben);
|
||||||
|
implementierung_aktor["erzeuger"] =
|
||||||
|
{
|
||||||
|
"beispiel": () => wrap(erzeuger_beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => erzeuger_drehen(unwrap(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => erzeuger_verwenden(unwrap(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "erzeuger", "angaben": erzeuger_exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => wrap(erzeuger_importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,16 @@
|
||||||
* 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 aktor_leser_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 aktor_leser_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function aktor_leser_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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_aktor_leser =
|
export type typ_leser =
|
||||||
{
|
{
|
||||||
"richtung": typ_richtung,
|
"richtung": typ_richtung,
|
||||||
"symbol_links": typ_symbol,
|
"symbol_links": typ_symbol,
|
||||||
|
|
@ -34,7 +34,13 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_erstellen(richtung : typ_richtung = 0, symbol_links : typ_symbol = 0, symbol_rechts : typ_symbol = 1) : typ_aktor_leser
|
function leser_erstellen
|
||||||
|
(
|
||||||
|
richtung : typ_richtung,
|
||||||
|
symbol_links : typ_symbol,
|
||||||
|
symbol_rechts : typ_symbol
|
||||||
|
)
|
||||||
|
: typ_leser
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung,
|
"richtung": richtung,
|
||||||
|
|
@ -47,55 +53,104 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_richtung_lesen(aktor_leser : typ_aktor_leser) : typ_richtung
|
export function leser_erstellen_aktor
|
||||||
|
(
|
||||||
|
richtung : typ_richtung,
|
||||||
|
symbol_links : typ_symbol,
|
||||||
|
symbol_rechts : typ_symbol
|
||||||
|
)
|
||||||
|
: typ_aktor
|
||||||
{
|
{
|
||||||
return aktor_leser.richtung;
|
return {"art": "leser", "angaben": leser_erstellen(richtung, symbol_links, symbol_rechts)};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_symbol_links_lesen(aktor_leser : typ_aktor_leser) : typ_symbol
|
function leser_beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_leser
|
||||||
{
|
{
|
||||||
return aktor_leser.symbol_links;
|
return leser_erstellen(0, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_symbol_rechts_lesen(aktor_leser : typ_aktor_leser) : typ_symbol
|
export function leser_richtung_lesen
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: typ_richtung
|
||||||
{
|
{
|
||||||
return aktor_leser.symbol_rechts;
|
return leser.richtung;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_drehen(aktor_leser : typ_aktor_leser, inkrement : int = +1) : void
|
export function leser_symbol_links_lesen
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: typ_symbol
|
||||||
{
|
{
|
||||||
aktor_leser.richtung = richtung_addieren(aktor_leser.richtung, inkrement);
|
return leser.symbol_links;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_verwenden(aktor_leser : typ_aktor_leser, figur : typ_figur) : void
|
export function leser_symbol_rechts_lesen
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: typ_symbol
|
||||||
|
{
|
||||||
|
return leser.symbol_rechts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function leser_drehen
|
||||||
|
(
|
||||||
|
leser : typ_leser,
|
||||||
|
inkrement : int = +1
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
leser.richtung = richtung_addieren(leser.richtung, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function leser_verwenden
|
||||||
|
(
|
||||||
|
leser : typ_leser,
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
{
|
{
|
||||||
let symbol_ : schnittstelle_fehlermonade<typ_symbol> = figur_lesen(figur);
|
let symbol_ : schnittstelle_fehlermonade<typ_symbol> = figur_lesen(figur);
|
||||||
let summand : typ_richtung;
|
let summand : typ_richtung;
|
||||||
if (symbol_.ist_schlicht())
|
if (symbol_.ist_schlicht())
|
||||||
{
|
{
|
||||||
let symbol : typ_symbol = symbol_.lesen();
|
let symbol : typ_symbol = symbol_.lesen();
|
||||||
if (symbol === aktor_leser.symbol_links)
|
if (symbol === leser.symbol_links)
|
||||||
{
|
{
|
||||||
figur_schieben(figur);
|
figur_schieben(figur);
|
||||||
summand = +2;
|
summand = +2;
|
||||||
}
|
}
|
||||||
else if (symbol === aktor_leser.symbol_rechts)
|
else if (symbol === leser.symbol_rechts)
|
||||||
{
|
{
|
||||||
figur_schieben(figur);
|
figur_schieben(figur);
|
||||||
summand = -2;
|
summand = -2;
|
||||||
|
|
@ -109,7 +164,7 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
summand = 0;
|
summand = 0;
|
||||||
}
|
}
|
||||||
let richtung : typ_richtung = richtung_addieren(aktor_leser.richtung, summand);
|
let richtung : typ_richtung = richtung_addieren(leser.richtung, summand);
|
||||||
figur_bewegen(figur, richtung);
|
figur_bewegen(figur, richtung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,12 +172,16 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_exportieren(aktor_leser : typ_aktor_leser) : any
|
function leser_exportieren
|
||||||
|
(
|
||||||
|
leser : typ_leser
|
||||||
|
)
|
||||||
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung_exportieren(aktor_leser.richtung),
|
"richtung": richtung_exportieren(leser.richtung),
|
||||||
"symbol_links": symbol_exportieren(aktor_leser.symbol_links),
|
"symbol_links": symbol_exportieren(leser.symbol_links),
|
||||||
"symbol_rechts": symbol_exportieren(aktor_leser.symbol_rechts),
|
"symbol_rechts": symbol_exportieren(leser.symbol_rechts),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,10 +189,14 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_leser_importieren(roh : any) : typ_aktor_leser
|
function leser_importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_leser
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
aktor_leser_erstellen
|
leser_erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"]),
|
richtung_importieren(roh["richtung"]),
|
||||||
symbol_importieren(roh["symbol_links"]),
|
symbol_importieren(roh["symbol_links"]),
|
||||||
|
|
@ -142,6 +205,22 @@ module mod_vtm_aufbau
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let wrap = (angaben => ({"art": "leser", "angaben": angaben}));
|
||||||
|
let unwrap = (aktor => aktor.angaben);
|
||||||
|
implementierung_aktor["leser"] =
|
||||||
|
{
|
||||||
|
"beispiel": () => wrap(leser_beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => leser_drehen(unwrap(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => leser_verwenden(unwrap(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "leser", "angaben": leser_exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => wrap(leser_importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,16 @@
|
||||||
* 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 aktor_schreiber_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 aktor_schreiber_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function aktor_schreiber_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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_aktor_schreiber =
|
export type typ_schreiber =
|
||||||
{
|
{
|
||||||
richtung : typ_richtung;
|
richtung : typ_richtung;
|
||||||
symbol : typ_symbol;
|
symbol : typ_symbol;
|
||||||
|
|
@ -33,60 +33,16 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_schreiber_erstellen(richtung : typ_richtung = 0, symbol : typ_symbol = 0) : typ_aktor_schreiber
|
function schreiber_erstellen
|
||||||
|
(
|
||||||
|
richtung : typ_richtung,
|
||||||
|
symbol : typ_symbol
|
||||||
|
)
|
||||||
|
: typ_schreiber
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
"richtung": richtung,
|
"richtung": richtung,
|
||||||
"symbol": symbol,
|
"symbol": symbol,
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_schreiber_richtung_lesen(aktor_schreiber : typ_aktor_schreiber) : typ_richtung
|
|
||||||
{
|
|
||||||
return aktor_schreiber.richtung;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_schreiber_symbol_lesen(aktor_schreiber : typ_aktor_schreiber) : typ_symbol
|
|
||||||
{
|
|
||||||
return aktor_schreiber.symbol;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_schreiber_drehen(aktor_schreiber : typ_aktor_schreiber, inkrement : int = +1) : void
|
|
||||||
{
|
|
||||||
aktor_schreiber.richtung = richtung_addieren(aktor_schreiber.richtung, inkrement);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_schreiber_verwenden(aktor_schreiber : typ_aktor_schreiber, figur : typ_figur) : void
|
|
||||||
{
|
|
||||||
figur_schreiben(figur, aktor_schreiber.symbol);
|
|
||||||
figur_bewegen(figur, aktor_schreiber.richtung);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aktor_schreiber_exportieren(aktor_schreiber : typ_aktor_schreiber) : any
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
"richtung": richtung_exportieren(aktor_schreiber.richtung),
|
|
||||||
"symbol": symbol_exportieren(aktor_schreiber.symbol),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -94,10 +50,111 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_schreiber_importieren(roh : any) : typ_aktor_schreiber
|
export function schreiber_erstellen_aktor
|
||||||
|
(
|
||||||
|
richtung : typ_richtung,
|
||||||
|
symbol : typ_symbol
|
||||||
|
)
|
||||||
|
: typ_aktor
|
||||||
|
{
|
||||||
|
return {"art": "schreiber", "angaben": schreiber_erstellen(richtung, symbol)};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function schreiber_beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_schreiber
|
||||||
|
{
|
||||||
|
return schreiber_erstellen(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function schreiber_richtung_lesen
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber
|
||||||
|
)
|
||||||
|
: typ_richtung
|
||||||
|
{
|
||||||
|
return schreiber.richtung;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function schreiber_symbol_lesen
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber
|
||||||
|
)
|
||||||
|
: typ_symbol
|
||||||
|
{
|
||||||
|
return schreiber.symbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function schreiber_drehen
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber,
|
||||||
|
inkrement : int = +1
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
schreiber.richtung = richtung_addieren(schreiber.richtung, inkrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function schreiber_verwenden
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber,
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
figur_schreiben(figur, schreiber.symbol);
|
||||||
|
figur_bewegen(figur, schreiber.richtung);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function schreiber_exportieren
|
||||||
|
(
|
||||||
|
schreiber : typ_schreiber
|
||||||
|
)
|
||||||
|
: any
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"richtung": richtung_exportieren(schreiber.richtung),
|
||||||
|
"symbol": symbol_exportieren(schreiber.symbol),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function schreiber_importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_schreiber
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
aktor_schreiber_erstellen
|
schreiber_erstellen
|
||||||
(
|
(
|
||||||
richtung_importieren(roh["richtung"]),
|
richtung_importieren(roh["richtung"]),
|
||||||
symbol_importieren(roh["symbol"])
|
symbol_importieren(roh["symbol"])
|
||||||
|
|
@ -105,6 +162,22 @@ module mod_vtm_aufbau
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let wrap = (angaben => ({"art": "schreiber", "angaben": angaben}));
|
||||||
|
let unwrap = (aktor => aktor.angaben);
|
||||||
|
implementierung_aktor["schreiber"] =
|
||||||
|
{
|
||||||
|
"beispiel": () => wrap(schreiber_beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => schreiber_drehen(unwrap(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => schreiber_verwenden(unwrap(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "schreiber", "angaben": schreiber_exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => wrap(schreiber_importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,16 @@
|
||||||
* 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 aktor_verwerfer_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 aktor_verwerfer_License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General export function aktor_verwerfer_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/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export type typ_aktor_verwerfer =
|
export type typ_verwerfer =
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
@ -31,7 +31,10 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_verwerfer_erstellen() : typ_aktor_verwerfer
|
function verwerfer_erstellen
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_verwerfer
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
};
|
};
|
||||||
|
|
@ -41,7 +44,36 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_verwerfer_drehen(aktor_verwerfer : typ_aktor_verwerfer, inkrement ?: int) : void
|
export function verwerfer_erstellen_aktor
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_aktor
|
||||||
|
{
|
||||||
|
return {"art": "verwerfer", "angaben": verwerfer_erstellen()};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwerfer_beispiel
|
||||||
|
(
|
||||||
|
)
|
||||||
|
: typ_verwerfer
|
||||||
|
{
|
||||||
|
return verwerfer_erstellen();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function verwerfer_drehen
|
||||||
|
(
|
||||||
|
verwerfer : typ_verwerfer,
|
||||||
|
inkrement ?: int
|
||||||
|
)
|
||||||
|
: void
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,7 +81,12 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_verwerfer_verwenden(aktor_verwerfer : typ_aktor_verwerfer, figur : typ_figur) : void
|
function verwerfer_verwenden
|
||||||
|
(
|
||||||
|
verwerfer : typ_verwerfer,
|
||||||
|
figur : typ_figur
|
||||||
|
)
|
||||||
|
: void
|
||||||
{
|
{
|
||||||
figur_verwerfen(figur);
|
figur_verwerfen(figur);
|
||||||
}
|
}
|
||||||
|
|
@ -58,7 +95,11 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_verwerfer_exportieren(aktor_verwerfer : typ_aktor_verwerfer) : any
|
function verwerfer_exportieren
|
||||||
|
(
|
||||||
|
verwerfer : typ_verwerfer
|
||||||
|
)
|
||||||
|
: any
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
};
|
};
|
||||||
|
|
@ -68,15 +109,35 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function aktor_verwerfer_importieren(roh : any) : typ_aktor_verwerfer
|
function verwerfer_importieren
|
||||||
|
(
|
||||||
|
roh : any
|
||||||
|
)
|
||||||
|
: typ_verwerfer
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
aktor_verwerfer_erstellen
|
verwerfer_erstellen
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
let wrap = (angaben => ({"art": "verwerfer", "angaben": angaben}));
|
||||||
|
let unwrap = (aktor => aktor.angaben);
|
||||||
|
implementierung_aktor["verwerfer"] =
|
||||||
|
{
|
||||||
|
"beispiel": () => wrap(verwerfer_beispiel()),
|
||||||
|
"drehen": (aktor, inkrement) => verwerfer_drehen(unwrap(aktor), inkrement),
|
||||||
|
"verwenden": (aktor, figur) => verwerfer_verwenden(unwrap(aktor), figur),
|
||||||
|
"exportieren": (aktor) => ({"art": "verwerfer", "angaben": verwerfer_exportieren(aktor.angaben)}),
|
||||||
|
"importieren": (roh) => wrap(verwerfer_importieren(roh)),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,85 +22,86 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_akzeptoraufgabe
|
export type typ_akzeptoraufgabe =
|
||||||
implements schnittstelle_aufgabe
|
|
||||||
{
|
{
|
||||||
|
id : string;
|
||||||
/**
|
titel : string;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
text : string;
|
||||||
*/
|
tests : Array<typ_akzeptortest>;
|
||||||
private id : string;
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private titel_ : string;
|
export function akzeptoraufgabe_erstellen
|
||||||
|
(
|
||||||
|
id : string,
|
||||||
|
titel : string,
|
||||||
|
text : string,
|
||||||
|
tests : Array<typ_akzeptortest>
|
||||||
|
)
|
||||||
|
: typ_akzeptoraufgabe
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"id": id,
|
||||||
|
"titel": titel,
|
||||||
|
"text": text,
|
||||||
|
"tests": tests,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private text_ : string;
|
export function akzeptoraufgabe_id
|
||||||
|
(
|
||||||
|
akzeptoraufgabe : typ_akzeptoraufgabe
|
||||||
|
)
|
||||||
|
: string
|
||||||
|
{
|
||||||
|
return akzeptoraufgabe.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private tests_ : Array<schnittstelle_test>;
|
export function akzeptoraufgabe_titel
|
||||||
|
(
|
||||||
|
akzeptoraufgabe : typ_akzeptoraufgabe
|
||||||
|
)
|
||||||
|
: string
|
||||||
|
{
|
||||||
|
return akzeptoraufgabe.titel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public constructor(id : string, titel : string, text : string, tests : Array<klasse_akzeptortest>)
|
export function akzeptoraufgabe_text
|
||||||
{
|
(
|
||||||
this.id = id;
|
akzeptoraufgabe : typ_akzeptoraufgabe
|
||||||
this.titel_ = titel;
|
)
|
||||||
this.text_ = text;
|
: string
|
||||||
this.tests_ = tests;
|
{
|
||||||
}
|
return akzeptoraufgabe.text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
*/
|
||||||
*/
|
export function akzeptoraufgabe_tests
|
||||||
public id_lesen() : string
|
(
|
||||||
{
|
akzeptoraufgabe : typ_akzeptoraufgabe
|
||||||
return this.id;
|
)
|
||||||
}
|
: Array<typ_akzeptortest>
|
||||||
|
{
|
||||||
|
return akzeptoraufgabe.tests;
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public titel() : string
|
|
||||||
{
|
|
||||||
return this.titel_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public text() : string
|
|
||||||
{
|
|
||||||
return this.text_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public tests() : Array<schnittstelle_test>
|
|
||||||
{
|
|
||||||
return this.tests_;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,51 +22,56 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_akzeptortest
|
export type typ_akzeptortest =
|
||||||
implements schnittstelle_test
|
|
||||||
{
|
{
|
||||||
|
eingabe : Array<typ_symbol>;
|
||||||
/**
|
annehmen : boolean;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
}
|
||||||
*/
|
;
|
||||||
private eingabe_ : Array<typ_symbol>;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private annehmen : boolean;
|
export function akzeptortest_erstellen
|
||||||
|
(
|
||||||
|
eingabe : Array<typ_symbol>,
|
||||||
|
annehmen : boolean
|
||||||
|
)
|
||||||
|
: typ_akzeptortest
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"eingabe": eingabe,
|
||||||
|
"annehmen": annehmen,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public constructor(eingabe : Array<typ_symbol>, annehmen : boolean)
|
export function akzeptortest_eingabe
|
||||||
{
|
(
|
||||||
this.eingabe_ = eingabe;
|
akzeptortest : typ_akzeptortest
|
||||||
this.annehmen = annehmen;
|
)
|
||||||
}
|
: Array<typ_symbol>
|
||||||
|
{
|
||||||
|
return akzeptortest.eingabe;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
*/
|
||||||
*/
|
export function akzeptortest_pruefen
|
||||||
public eingabe() : Array<typ_symbol>
|
(
|
||||||
{
|
akzeptortest : typ_akzeptortest,
|
||||||
return this.eingabe_;
|
angenommen : boolean,
|
||||||
}
|
ausgabe : Array<typ_symbol>
|
||||||
|
)
|
||||||
|
: boolean
|
||||||
/**
|
{
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
return (akzeptortest.annehmen === angenommen);
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public pruefen(angenommen : boolean, ausgabe : Array<typ_symbol>) : boolean
|
|
||||||
{
|
|
||||||
return (this.annehmen === angenommen);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,32 +22,191 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export interface schnittstelle_aufgabe
|
export type typ_aufgabe = typ_komplex<Object>;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
var _liste : Array<typ_aufgabe> = [];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aufgabe_id
|
||||||
|
(
|
||||||
|
aufgabe : typ_aufgabe
|
||||||
|
)
|
||||||
|
: string
|
||||||
{
|
{
|
||||||
|
return (
|
||||||
/**
|
fallunterscheidung<string>
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
(
|
||||||
*/
|
aufgabe,
|
||||||
id_lesen() : string;
|
{
|
||||||
|
"akzeptoraufgabe": (angaben) => akzeptoraufgabe_id(angaben),
|
||||||
|
"transduktoraufgabe": (angaben) => transduktoraufgabe_id(angaben),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
titel() : string;
|
export function aufgabe_titel
|
||||||
|
(
|
||||||
|
aufgabe : typ_aufgabe
|
||||||
|
)
|
||||||
|
: string
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
fallunterscheidung<string>
|
||||||
|
(
|
||||||
|
aufgabe,
|
||||||
|
{
|
||||||
|
"akzeptoraufgabe": (angaben) => akzeptoraufgabe_titel(angaben),
|
||||||
|
"transduktoraufgabe": (angaben) => transduktoraufgabe_titel(angaben),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
text() : string;
|
export function aufgabe_text
|
||||||
|
(
|
||||||
|
aufgabe : typ_aufgabe
|
||||||
|
)
|
||||||
|
: string
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
fallunterscheidung<string>
|
||||||
|
(
|
||||||
|
aufgabe,
|
||||||
|
{
|
||||||
|
"akzeptoraufgabe": (angaben) => akzeptoraufgabe_text(angaben),
|
||||||
|
"transduktoraufgabe": (angaben) => transduktoraufgabe_text(angaben),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
tests() : Array<schnittstelle_test>;
|
export function aufgabe_tests
|
||||||
|
(
|
||||||
|
aufgabe : typ_aufgabe
|
||||||
|
)
|
||||||
|
: Array<typ_test>
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
fallunterscheidung<Array<typ_test>>
|
||||||
|
(
|
||||||
|
aufgabe,
|
||||||
|
{
|
||||||
|
"akzeptoraufgabe": (angaben) => (
|
||||||
|
akzeptoraufgabe_tests(angaben)
|
||||||
|
.map(angaben_ => ({"art": "akzeptortest", "angaben": angaben_}))
|
||||||
|
),
|
||||||
|
"transduktoraufgabe": (angaben) => (
|
||||||
|
transduktoraufgabe_tests(angaben)
|
||||||
|
.map(angaben_ => ({"art": "transduktortest", "angaben": angaben_}))
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aufgabe_importieren(aufgabe_roh : any) : typ_aufgabe
|
||||||
|
{
|
||||||
|
switch (aufgabe_roh["art"])
|
||||||
|
{
|
||||||
|
case "akzeptor":
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "akzeptoraufgabe",
|
||||||
|
"angaben": (
|
||||||
|
akzeptoraufgabe_erstellen
|
||||||
|
(
|
||||||
|
aufgabe_roh["id"],
|
||||||
|
aufgabe_roh["parameter"]["titel"],
|
||||||
|
aufgabe_roh["parameter"]["text"],
|
||||||
|
aufgabe_roh["parameter"]["tests"].map
|
||||||
|
(
|
||||||
|
test_roh => (
|
||||||
|
akzeptortest_erstellen
|
||||||
|
(
|
||||||
|
test_roh["eingabe"],
|
||||||
|
test_roh["annehmen"]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "transduktor":
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "transduktoraufgabe",
|
||||||
|
"angaben": (
|
||||||
|
transduktoraufgabe_erstellen
|
||||||
|
(
|
||||||
|
aufgabe_roh["id"],
|
||||||
|
aufgabe_roh["parameter"]["titel"],
|
||||||
|
aufgabe_roh["parameter"]["text"],
|
||||||
|
aufgabe_roh["parameter"]["tests"].map
|
||||||
|
(
|
||||||
|
test_roh => (
|
||||||
|
transduktortest_erstellen
|
||||||
|
(
|
||||||
|
test_roh["eingabe"],
|
||||||
|
test_roh["ausgabe"]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
let meldung : string = "unbehandelte Art";
|
||||||
|
throw (new Error(meldung));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aufgabe_registrieren(aufgabe : typ_aufgabe) : void
|
||||||
|
{
|
||||||
|
_liste.push(aufgabe);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function aufgabe_holen(index : int) : typ_aufgabe
|
||||||
|
{
|
||||||
|
return _liste[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
/*
|
|
||||||
* Verrückte Turing-Maschinen — A turing complete game
|
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
module mod_vtm_aufbau
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
var _liste : Array<schnittstelle_aufgabe> = [];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aufgabe_erstellen(aufgabe_roh : any) : schnittstelle_aufgabe
|
|
||||||
{
|
|
||||||
switch (aufgabe_roh["art"])
|
|
||||||
{
|
|
||||||
case "akzeptor":
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
new klasse_akzeptoraufgabe
|
|
||||||
(
|
|
||||||
aufgabe_roh["id"],
|
|
||||||
aufgabe_roh["parameter"]["titel"],
|
|
||||||
aufgabe_roh["parameter"]["text"],
|
|
||||||
aufgabe_roh["parameter"]["tests"].map
|
|
||||||
(
|
|
||||||
test_roh => (new klasse_akzeptortest(test_roh["eingabe"], test_roh["annehmen"]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "transduktor":
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
new klasse_transduktoraufgabe
|
|
||||||
(
|
|
||||||
aufgabe_roh["id"],
|
|
||||||
aufgabe_roh["parameter"]["titel"],
|
|
||||||
aufgabe_roh["parameter"]["text"],
|
|
||||||
aufgabe_roh["parameter"]["tests"].map
|
|
||||||
(
|
|
||||||
test_roh => (new klasse_transduktortest(test_roh["eingabe"], test_roh["ausgabe"]))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelte Art";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aufgabe_registrieren(aufgabe : schnittstelle_aufgabe) : void
|
|
||||||
{
|
|
||||||
_liste.push(aufgabe);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function aufgabe_holen(index : int) : schnittstelle_aufgabe
|
|
||||||
{
|
|
||||||
return _liste[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -22,21 +22,100 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export interface schnittstelle_test
|
export type typ_test = typ_komplex<Object>;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function test_eingabe
|
||||||
|
(
|
||||||
|
test : typ_test
|
||||||
|
)
|
||||||
|
: Array<typ_symbol>
|
||||||
{
|
{
|
||||||
|
return (
|
||||||
/**
|
fallunterscheidung<Array<typ_symbol>>
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
(
|
||||||
* @implementation
|
test,
|
||||||
*/
|
{
|
||||||
eingabe() : Array<typ_symbol>;
|
"akzeptortest": (angaben) => akzeptortest_eingabe(angaben),
|
||||||
|
"transduktortest": (angaben) => transduktortest_eingabe(angaben),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
pruefen(angenommen : boolean, ausgabe : Array<typ_symbol>) : boolean;
|
export function test_pruefen
|
||||||
|
(
|
||||||
|
test : typ_test,
|
||||||
|
angenommen : boolean,
|
||||||
|
ausgabe : Array<typ_symbol>
|
||||||
|
)
|
||||||
|
: boolean
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
fallunterscheidung<boolean>
|
||||||
|
(
|
||||||
|
test,
|
||||||
|
{
|
||||||
|
"akzeptortest": (angaben) => akzeptortest_pruefen(angaben, angenommen, ausgabe),
|
||||||
|
"transduktortest": (angaben) => transduktortest_pruefen(angaben, angenommen, ausgabe),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function test_importieren
|
||||||
|
(
|
||||||
|
test_roh : any
|
||||||
|
)
|
||||||
|
: typ_test
|
||||||
|
{
|
||||||
|
switch (test_roh["art"])
|
||||||
|
{
|
||||||
|
case "akzeptortest":
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "akzeptortest",
|
||||||
|
"angaben": (
|
||||||
|
akzeptortest_erstellen
|
||||||
|
(
|
||||||
|
test_roh["angaben"]["eingabe"],
|
||||||
|
test_roh["angaben"]["annehmen"]
|
||||||
|
)
|
||||||
|
),
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "transduktortest":
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "transduktortest",
|
||||||
|
"angaben": (
|
||||||
|
transduktortest_erstellen
|
||||||
|
(
|
||||||
|
test_roh["angaben"]["eingabe"],
|
||||||
|
test_roh["angaben"]["ausgabe"]
|
||||||
|
)
|
||||||
|
),
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
throw (new Error("unbehandelt"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,85 +22,86 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_transduktoraufgabe
|
export type typ_transduktoraufgabe =
|
||||||
implements schnittstelle_aufgabe
|
|
||||||
{
|
{
|
||||||
|
id : string;
|
||||||
/**
|
titel : string;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
text : string;
|
||||||
*/
|
tests : Array<typ_transduktortest>;
|
||||||
private id : string;
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private titel_ : string;
|
export function transduktoraufgabe_erstellen
|
||||||
|
(
|
||||||
|
id : string,
|
||||||
|
titel : string,
|
||||||
|
text : string,
|
||||||
|
tests : Array<typ_transduktortest>
|
||||||
|
)
|
||||||
|
: typ_transduktoraufgabe
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"id": id,
|
||||||
|
"titel": titel,
|
||||||
|
"text": text,
|
||||||
|
"tests": tests,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private text_ : string;
|
export function transduktoraufgabe_id
|
||||||
|
(
|
||||||
|
transduktoraufgabe : typ_transduktoraufgabe
|
||||||
|
)
|
||||||
|
: string
|
||||||
|
{
|
||||||
|
return transduktoraufgabe.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private tests_ : Array<schnittstelle_test>;
|
export function transduktoraufgabe_titel
|
||||||
|
(
|
||||||
|
transduktoraufgabe : typ_transduktoraufgabe
|
||||||
|
)
|
||||||
|
: string
|
||||||
|
{
|
||||||
|
return transduktoraufgabe.titel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public constructor(id : string, titel : string, text : string, tests : Array<klasse_transduktortest>)
|
export function transduktoraufgabe_text
|
||||||
{
|
(
|
||||||
this.id = id;
|
transduktoraufgabe : typ_transduktoraufgabe
|
||||||
this.titel_ = titel;
|
)
|
||||||
this.text_ = text;
|
: string
|
||||||
this.tests_ = tests;
|
{
|
||||||
}
|
return transduktoraufgabe.text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
*/
|
||||||
*/
|
export function transduktoraufgabe_tests
|
||||||
public id_lesen() : string
|
(
|
||||||
{
|
transduktoraufgabe : typ_transduktoraufgabe
|
||||||
return this.id;
|
)
|
||||||
}
|
: Array<typ_transduktortest>
|
||||||
|
{
|
||||||
|
return transduktoraufgabe.tests;
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public titel() : string
|
|
||||||
{
|
|
||||||
return this.titel_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public text() : string
|
|
||||||
{
|
|
||||||
return this.text_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public tests() : Array<schnittstelle_test>
|
|
||||||
{
|
|
||||||
return this.tests_;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,71 +22,76 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_transduktortest
|
export type typ_transduktortest =
|
||||||
implements schnittstelle_test
|
|
||||||
{
|
{
|
||||||
|
eingabe : Array<typ_symbol>;
|
||||||
/**
|
ausgabe : Array<typ_symbol>;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
}
|
||||||
*/
|
;
|
||||||
private eingabe_ : Array<typ_symbol>;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private ausgabe : Array<typ_symbol>;
|
export function transduktortest_erstellen
|
||||||
|
(
|
||||||
|
eingabe : Array<typ_symbol>,
|
||||||
|
ausgabe : Array<typ_symbol>
|
||||||
|
)
|
||||||
|
: typ_transduktortest
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"eingabe": eingabe,
|
||||||
|
"ausgabe": ausgabe,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public constructor(eingabe : Array<typ_symbol>, ausgabe : Array<typ_symbol>)
|
export function transduktortest_eingabe
|
||||||
|
(
|
||||||
|
transduktortest : typ_transduktortest
|
||||||
|
)
|
||||||
|
: Array<typ_symbol>
|
||||||
|
{
|
||||||
|
return transduktortest.eingabe;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function transduktortest_pruefen
|
||||||
|
(
|
||||||
|
transduktortest : typ_transduktortest,
|
||||||
|
angenommen : boolean,
|
||||||
|
ausgabe : Array<typ_symbol>
|
||||||
|
)
|
||||||
|
: boolean
|
||||||
|
{
|
||||||
|
if (transduktortest.ausgabe.length !== ausgabe.length)
|
||||||
{
|
{
|
||||||
this.eingabe_ = eingabe;
|
return false;
|
||||||
this.ausgabe = ausgabe;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public eingabe() : Array<typ_symbol>
|
|
||||||
{
|
{
|
||||||
return this.eingabe_;
|
let gleich : boolean = true;
|
||||||
}
|
for (let index : int = 0; index < transduktortest.ausgabe.length; index += 1)
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public pruefen(angenommen : boolean, ausgabe : Array<typ_symbol>) : boolean
|
|
||||||
{
|
|
||||||
if (this.ausgabe.length !== ausgabe.length)
|
|
||||||
{
|
{
|
||||||
return false;
|
if (! symbol_vergleichen(transduktortest.ausgabe[index], ausgabe[index]))
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
let gleich : boolean = true;
|
|
||||||
for (let index : int = 0; index < this.ausgabe.length; index += 1)
|
|
||||||
{
|
{
|
||||||
if (! symbol_vergleichen(this.ausgabe[index], ausgabe[index]))
|
gleich = false;
|
||||||
{
|
break;
|
||||||
gleich = false;
|
}
|
||||||
break;
|
else
|
||||||
}
|
{
|
||||||
else
|
// nichts tun
|
||||||
{
|
|
||||||
// nichts tun
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return gleich;
|
|
||||||
}
|
}
|
||||||
|
return gleich;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
welt : typ_welt;
|
welt : typ_welt;
|
||||||
figur : schnittstelle_fehlermonade<typ_figur>;
|
figur : schnittstelle_fehlermonade<typ_figur>;
|
||||||
aufgabe : schnittstelle_aufgabe;
|
aufgabe : typ_aufgabe;
|
||||||
testindex : schnittstelle_fehlermonade<int>;
|
testindex : schnittstelle_fehlermonade<int>;
|
||||||
modus : typ_modus;
|
modus : typ_modus;
|
||||||
lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>};
|
lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>};
|
||||||
|
|
@ -39,7 +39,7 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export function partie_erstellen
|
export function partie_erstellen
|
||||||
(
|
(
|
||||||
aufgabe : schnittstelle_aufgabe
|
aufgabe : typ_aufgabe
|
||||||
)
|
)
|
||||||
: typ_partie
|
: typ_partie
|
||||||
{
|
{
|
||||||
|
|
@ -127,7 +127,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_aufgabe_lesen(partie : typ_partie) : schnittstelle_aufgabe
|
export function partie_aufgabe_lesen(partie : typ_partie) : typ_aufgabe
|
||||||
{
|
{
|
||||||
return partie.aufgabe;
|
return partie.aufgabe;
|
||||||
}
|
}
|
||||||
|
|
@ -136,7 +136,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function partie_aufgabe_setzen(partie : typ_partie, aufgabe : schnittstelle_aufgabe) : void
|
export function partie_aufgabe_setzen(partie : typ_partie, aufgabe : typ_aufgabe) : void
|
||||||
{
|
{
|
||||||
partie.aufgabe = aufgabe;
|
partie.aufgabe = aufgabe;
|
||||||
// partie.welt_leeren();
|
// partie.welt_leeren();
|
||||||
|
|
@ -272,8 +272,8 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
if (! partie.figur.ist_schlicht())
|
if (! partie.figur.ist_schlicht())
|
||||||
{
|
{
|
||||||
let test : schnittstelle_test = partie.aufgabe.tests()[partie.testindex.lesen()];
|
let test : typ_test = aufgabe_tests(partie.aufgabe)[partie.testindex.lesen()];
|
||||||
let band : Array<typ_symbol> = mod_vtm_helfer.liste_kopieren<typ_symbol>(test.eingabe());
|
let band : Array<typ_symbol> = mod_vtm_helfer.liste_kopieren<typ_symbol>(test_eingabe(test));
|
||||||
let stelle : typ_stelle = welt_erzeuger_finden(partie.welt);
|
let stelle : typ_stelle = welt_erzeuger_finden(partie.welt);
|
||||||
partie.figur = (
|
partie.figur = (
|
||||||
new klasse_schlicht<typ_figur>
|
new klasse_schlicht<typ_figur>
|
||||||
|
|
@ -291,7 +291,7 @@ module mod_vtm_aufbau
|
||||||
let figur : typ_figur = partie.figur.lesen();
|
let figur : typ_figur = partie.figur.lesen();
|
||||||
let stelle : typ_stelle = figur_stelle_lesen(figur);
|
let stelle : typ_stelle = figur_stelle_lesen(figur);
|
||||||
let aktor_ : schnittstelle_fehlermonade<typ_aktor> = welt_feld_holen(partie.welt, stelle);
|
let aktor_ : schnittstelle_fehlermonade<typ_aktor> = welt_feld_holen(partie.welt, stelle);
|
||||||
let aktor : typ_aktor = (aktor_.ist_schlicht() ? aktor_.lesen() : aktor_erstellen("verwerfer", {}));
|
let aktor : typ_aktor = (aktor_.ist_schlicht() ? aktor_.lesen() : verwerfer_erstellen_aktor());
|
||||||
aktor_verwenden(aktor, figur);
|
aktor_verwenden(aktor, figur);
|
||||||
let zustand : typ_zustand = figur_zustand_lesen(figur);
|
let zustand : typ_zustand = figur_zustand_lesen(figur);
|
||||||
if (zustand === zustand_laufend)
|
if (zustand === zustand_laufend)
|
||||||
|
|
@ -304,9 +304,9 @@ module mod_vtm_aufbau
|
||||||
let ausgabe : Array<typ_symbol> = figur_band_lesen(figur);
|
let ausgabe : Array<typ_symbol> = figur_band_lesen(figur);
|
||||||
partie.figur = (new klasse_nichts<typ_figur>());
|
partie.figur = (new klasse_nichts<typ_figur>());
|
||||||
let testindex : int = partie.testindex.lesen();
|
let testindex : int = partie.testindex.lesen();
|
||||||
let tests : Array<schnittstelle_test> = partie.aufgabe.tests();
|
let tests : Array<typ_test> = aufgabe_tests(partie.aufgabe);
|
||||||
let test : schnittstelle_test = tests[testindex];
|
let test : typ_test = tests[testindex];
|
||||||
if (! test.pruefen(angenommen, ausgabe))
|
if (! test_pruefen(test, angenommen, ausgabe))
|
||||||
{
|
{
|
||||||
partie.modus = modus_fehlerhaft;
|
partie.modus = modus_fehlerhaft;
|
||||||
partie_benachrichtigen(partie, "aenderung_modus", {});
|
partie_benachrichtigen(partie, "aenderung_modus", {});
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ module mod_vtm_aufbau
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"pruefer": (aktor) => (aktor.art === "befoerderer"),
|
"pruefer": (aktor) => (aktor.art === "befoerderer"),
|
||||||
"ersteller": () => aktor_erstellen("befoerderer"),
|
"ersteller": () => befoerderer_erstellen_aktor(0),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
@ -104,7 +104,7 @@ module mod_vtm_aufbau
|
||||||
{
|
{
|
||||||
if (aktor.art === "schreiber")
|
if (aktor.art === "schreiber")
|
||||||
{
|
{
|
||||||
return (aktor_schreiber_symbol_lesen(aktor.angaben) === symbol);
|
return (schreiber_symbol_lesen(aktor.angaben) === symbol);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -112,7 +112,7 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
"ersteller": () => aktor_erstellen("schreiber", {"richtung": 0, "symbol": symbol})
|
"ersteller": () => schreiber_erstellen_aktor(0, symbol)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -132,9 +132,9 @@ module mod_vtm_aufbau
|
||||||
if (aktor.art === "leser")
|
if (aktor.art === "leser")
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
(aktor_leser_symbol_links_lesen(aktor.angaben) === symbol_links)
|
(leser_symbol_links_lesen(aktor.angaben) === symbol_links)
|
||||||
&&
|
&&
|
||||||
(aktor_leser_symbol_links_lesen(aktor.angaben) === symbol_rechts)
|
(leser_symbol_rechts_lesen(aktor.angaben) === symbol_rechts)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -143,7 +143,7 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
"ersteller": () => aktor_erstellen("leser", {"richtung": 0, "symbol_links": symbol_links, "symbol_rechts": (2*index+1)}),
|
"ersteller": () => leser_erstellen_aktor(0, symbol_links, symbol_rechts)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -154,32 +154,33 @@ module mod_vtm_aufbau
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"pruefer": (aktor) => (aktor.art === "verwerfer"),
|
"pruefer": (aktor) => (aktor.art === "verwerfer"),
|
||||||
"ersteller": () => aktor_erstellen("verwerfer"),
|
"ersteller": () => 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<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 : typ_aktor = aktor_alt_.lesen();
|
||||||
let gefunden : boolean = liste.some
|
let gefunden : boolean = (
|
||||||
(
|
liste.some
|
||||||
(eintrag, index) =>
|
(
|
||||||
{
|
(eintrag, index) =>
|
||||||
if (eintrag.pruefer(aktor_alt))
|
{
|
||||||
{
|
if (eintrag.pruefer(aktor_alt))
|
||||||
index_alt = (new klasse_schlicht<int>(index));
|
{
|
||||||
return true;
|
index_alt = (new klasse_schlicht<int>(index));
|
||||||
}
|
return true;
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
return false;
|
{
|
||||||
}
|
return false;
|
||||||
}
|
}
|
||||||
)
|
}
|
||||||
;
|
)
|
||||||
|
);
|
||||||
if (! gefunden)
|
if (! gefunden)
|
||||||
{
|
{
|
||||||
index_alt = (new klasse_nichts<int>());
|
index_alt = (new klasse_nichts<int>());
|
||||||
|
|
@ -281,15 +282,15 @@ module mod_vtm_aufbau
|
||||||
let aktor : typ_aktor;
|
let aktor : typ_aktor;
|
||||||
if ((u === -groesse) && (v === 0))
|
if ((u === -groesse) && (v === 0))
|
||||||
{
|
{
|
||||||
aktor = aktor_erstellen("erzeuger", {"richtung": 0});
|
aktor = erzeuger_erstellen_aktor(0);
|
||||||
}
|
}
|
||||||
else if ((u === +groesse) && (v === 0))
|
else if ((u === +groesse) && (v === 0))
|
||||||
{
|
{
|
||||||
aktor = aktor_erstellen("annehmer", {});
|
aktor = annehmer_erstellen_aktor();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aktor = aktor_erstellen("verwerfer", {});
|
aktor = verwerfer_erstellen_aktor();
|
||||||
}
|
}
|
||||||
welt.felder.setzen(stelle, aktor);
|
welt.felder.setzen(stelle, aktor);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
58
quelldatein/basis/aufruf.ts
Normal file
58
quelldatein/basis/aufruf.ts
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* Verrückte Turing-Maschinen — A turing complete game
|
||||||
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
type typ_komplex<typ_angaben> = {art : string; angaben ?: typ_angaben;};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function fallunterscheidung<typ_ergebnis>
|
||||||
|
(
|
||||||
|
komplex : typ_komplex<any>,
|
||||||
|
faelle : {[art : string] : (angaben ?: any)=>typ_ergebnis},
|
||||||
|
ersatz : schnittstelle_fehlermonade<(komplex : typ_komplex<any>)=>typ_ergebnis> = (new klasse_nichts<(komplex : typ_komplex<any>)=>typ_ergebnis>())
|
||||||
|
)
|
||||||
|
: typ_ergebnis
|
||||||
|
{
|
||||||
|
if (komplex.art in faelle)
|
||||||
|
{
|
||||||
|
let funktion : (angaben ?: any)=>typ_ergebnis = faelle[komplex.art];
|
||||||
|
let ergebnis : typ_ergebnis = funktion(komplex.angaben);
|
||||||
|
return ergebnis;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let meldung : string = ("unbehandelte Art '" + komplex.art + "'");
|
||||||
|
console.warn(meldung);
|
||||||
|
if (ersatz.ist_schlicht())
|
||||||
|
{
|
||||||
|
let ergebnis : typ_ergebnis = ersatz.lesen()(komplex);
|
||||||
|
return ergebnis;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw (new Error("unbehandelt"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.schnittstelle_aufgabe)=>void) : void
|
function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.typ_aufgabe)=>void) : void
|
||||||
{
|
{
|
||||||
let aufgaben_roh_ : schnittstelle_fehlermonade<Array<any>> = mod_vtm_daten.lesen("aufgaben");
|
let aufgaben_roh_ : schnittstelle_fehlermonade<Array<any>> = mod_vtm_daten.lesen("aufgaben");
|
||||||
if (aufgaben_roh_.ist_schlicht())
|
if (aufgaben_roh_.ist_schlicht())
|
||||||
|
|
@ -32,7 +32,7 @@ function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.schnittstelle_
|
||||||
{
|
{
|
||||||
// Aufgabe registrieren
|
// Aufgabe registrieren
|
||||||
{
|
{
|
||||||
let aufgabe : mod_vtm_aufbau.schnittstelle_aufgabe = mod_vtm_aufbau.aufgabe_erstellen(aufgabe_roh);
|
let aufgabe : mod_vtm_aufbau.typ_aufgabe = mod_vtm_aufbau.aufgabe_importieren(aufgabe_roh);
|
||||||
mod_vtm_aufbau.aufgabe_registrieren(aufgabe);
|
mod_vtm_aufbau.aufgabe_registrieren(aufgabe);
|
||||||
}
|
}
|
||||||
// Option eintragen
|
// Option eintragen
|
||||||
|
|
@ -60,7 +60,7 @@ function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.schnittstelle_
|
||||||
{
|
{
|
||||||
let value : string = dom_auswahl["value"];
|
let value : string = dom_auswahl["value"];
|
||||||
let index : int = parseInt(value);
|
let index : int = parseInt(value);
|
||||||
let aufgabe : mod_vtm_aufbau.schnittstelle_aufgabe = mod_vtm_aufbau.aufgabe_holen(index);
|
let aufgabe : mod_vtm_aufbau.typ_aufgabe = mod_vtm_aufbau.aufgabe_holen(index);
|
||||||
behandler(aufgabe);
|
behandler(aufgabe);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -115,27 +115,27 @@ function haupt() : void
|
||||||
let hoehe : float = 80;
|
let hoehe : float = 80;
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_erstellen("erzeuger"),
|
"aufbau": mod_vtm_aufbau.aktor_beispiel("erzeuger"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_erstellen("annehmer"),
|
"aufbau": mod_vtm_aufbau.aktor_beispiel("annehmer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_erstellen("verwerfer"),
|
"aufbau": mod_vtm_aufbau.aktor_beispiel("verwerfer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_erstellen("befoerderer"),
|
"aufbau": mod_vtm_aufbau.aktor_beispiel("befoerderer"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_erstellen("schreiber"),
|
"aufbau": mod_vtm_aufbau.aktor_beispiel("schreiber"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"aufbau": mod_vtm_aufbau.aktor_erstellen("leser"),
|
"aufbau": mod_vtm_aufbau.aktor_beispiel("leser"),
|
||||||
"bereich": document.querySelector("#hilfe_aktoren_aktor_leser"),
|
"bereich": document.querySelector("#hilfe_aktoren_aktor_leser"),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
@ -143,9 +143,23 @@ function haupt() : void
|
||||||
(
|
(
|
||||||
eintrag =>
|
eintrag =>
|
||||||
{
|
{
|
||||||
let manifestor = (new mod_vtm_manifestation.klasse_svg_aktor(eintrag.aufbau, mod_vtm_aufbau.stelle_null()));
|
let manifestor = (
|
||||||
let xmlknoten : mod_vtm_helfer.schnittstelle_xmlknoten = mod_vtm_manifestation.svg_wurzel(von_x, von_y, bis_x, bis_y, breite, hoehe, [manifestor.darstellen()]);
|
mod_vtm_manifestation.svg_aktor_erstellen_manifestation
|
||||||
eintrag.bereich.querySelector(".hilfe_aktoren_aktor_bild").innerHTML = xmlknoten.darstellen();
|
(
|
||||||
|
eintrag.aufbau,
|
||||||
|
mod_vtm_aufbau.stelle_null()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
let xmlknoten : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_manifestation.svg_wurzel
|
||||||
|
(
|
||||||
|
von_x, von_y,
|
||||||
|
bis_x, bis_y,
|
||||||
|
breite, hoehe,
|
||||||
|
[mod_vtm_manifestation.manifestation_darstellen(manifestor)]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
eintrag.bereich.querySelector(".hilfe_aktoren_aktor_bild").innerHTML = mod_vtm_helfer.xmlknoten_darstellen(xmlknoten);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
|
@ -154,17 +168,33 @@ function haupt() : void
|
||||||
}
|
}
|
||||||
// Spiel
|
// Spiel
|
||||||
{
|
{
|
||||||
let aufbau : mod_vtm_aufbau.typ_partie;
|
// let aufbau : mod_vtm_aufbau.typ_partie;
|
||||||
aufgaben_eintragen
|
aufgaben_eintragen
|
||||||
(
|
(
|
||||||
function (aufgabe : mod_vtm_aufbau.schnittstelle_aufgabe) : void {mod_vtm_aufbau.partie_aufgabe_setzen(aufbau, aufgabe);}
|
function (aufgabe : mod_vtm_aufbau.typ_aufgabe) : void {mod_vtm_aufbau.partie_aufgabe_setzen(aufbau, aufgabe);}
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
aufbau = mod_vtm_aufbau.partie_erstellen(mod_vtm_aufbau.aufgabe_holen(0));
|
aufbau = mod_vtm_aufbau.partie_erstellen(mod_vtm_aufbau.aufgabe_holen(0));
|
||||||
(new mod_vtm_manifestation.klasse_web_partie(aufbau, document.querySelector("#bereich_mitte"))).einrichten();
|
mod_vtm_manifestation.manifestation_einrichten
|
||||||
(new mod_vtm_manifestation.klasse_speicher_partie(aufbau)).einrichten();
|
(
|
||||||
|
mod_vtm_manifestation.web_partie_erstellen_erweitert
|
||||||
|
(
|
||||||
|
aufbau,
|
||||||
|
document.querySelector("#bereich_mitte")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
;
|
||||||
|
mod_vtm_manifestation.manifestation_einrichten
|
||||||
|
(
|
||||||
|
mod_vtm_manifestation.speicher_partie_erstellen_erweitert
|
||||||
|
(
|
||||||
|
aufbau
|
||||||
|
)
|
||||||
|
)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var aufbau : mod_vtm_aufbau.typ_partie = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
||||||
/*
|
|
||||||
* Verrückte Turing-Maschinen — A turing complete game
|
|
||||||
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
module mod_vtm_helfer
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function einrueckung(tiefe : int, zeichen : string = "\t") : string
|
|
||||||
{
|
|
||||||
return ((tiefe === 0) ? "" : (zeichen + einrueckung(tiefe-1)));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export interface schnittstelle_xmlknoten
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
darstellen(tiefe ?: int) : string;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export class klasse_xmlknoten_text
|
|
||||||
implements schnittstelle_xmlknoten
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private inhalt : string;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
public constructor(inhalt : string)
|
|
||||||
{
|
|
||||||
this.inhalt = inhalt;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public darstellen(tiefe : int = 0) : string
|
|
||||||
{
|
|
||||||
return this.inhalt;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export class klasse_xmlknoten_normal
|
|
||||||
implements schnittstelle_xmlknoten
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private name : string;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private attribute : {[schluessel : string] : string} = {};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private kinder : Array<schnittstelle_xmlknoten> = [];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
public constructor(name : string, attribute : {[schluessel : string] : string} = {}, kinder : Array<schnittstelle_xmlknoten> = [])
|
|
||||||
{
|
|
||||||
this.name = name;
|
|
||||||
this.attribute = attribute;
|
|
||||||
this.kinder = kinder;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public darstellen(tiefe : int = 0) : string
|
|
||||||
{
|
|
||||||
let str : string = "";
|
|
||||||
// anfang
|
|
||||||
{
|
|
||||||
let str_anfang : string = "";
|
|
||||||
str_anfang += this.name;
|
|
||||||
// attribute
|
|
||||||
{
|
|
||||||
let str_attribute : string = "";
|
|
||||||
Object.keys(this.attribute).forEach
|
|
||||||
(
|
|
||||||
schluessel =>
|
|
||||||
{
|
|
||||||
let wert : string = this.attribute[schluessel];
|
|
||||||
str_attribute += (" " + schluessel + "=" + "\"" + wert + "\"");
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
str_anfang += str_attribute;
|
|
||||||
}
|
|
||||||
str_anfang = (einrueckung(tiefe) + "<" + str_anfang + ">" + "\n");
|
|
||||||
str += str_anfang;
|
|
||||||
}
|
|
||||||
// kinder
|
|
||||||
{
|
|
||||||
this.kinder.forEach(kind => (str += kind.darstellen(tiefe+1)));
|
|
||||||
}
|
|
||||||
// ende
|
|
||||||
{
|
|
||||||
let str_ende : string = "";
|
|
||||||
str_ende += this.name;
|
|
||||||
str_ende = (einrueckung(tiefe) + "<" + "/" + str_ende + ">" + "\n");
|
|
||||||
str += str_ende;
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
53
quelldatein/helfer/xmlknoten/_xmlknoten.ts
Normal file
53
quelldatein/helfer/xmlknoten/_xmlknoten.ts
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* Verrückte Turing-Maschinen — A turing complete game
|
||||||
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module mod_vtm_helfer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_xmlknoten = typ_komplex<any>;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type schnittstelle_xmlknoten =
|
||||||
|
{
|
||||||
|
darstellen : (xmlknoten : typ_xmlknoten, tiefe : int)=>string;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export var implementierung_xmlknoten : {[art : string] : schnittstelle_xmlknoten} = {};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function xmlknoten_darstellen(xmlknoten : typ_xmlknoten, tiefe : int = 0) : string
|
||||||
|
{
|
||||||
|
return implementierung_xmlknoten[xmlknoten.art].darstellen(xmlknoten, tiefe);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
132
quelldatein/helfer/xmlknoten/normal.ts
Normal file
132
quelldatein/helfer/xmlknoten/normal.ts
Normal file
|
|
@ -0,0 +1,132 @@
|
||||||
|
/*
|
||||||
|
* Verrückte Turing-Maschinen — A turing complete game
|
||||||
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module mod_vtm_helfer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function einrueckung(tiefe : int, zeichen : string = "\t") : string
|
||||||
|
{
|
||||||
|
return ((tiefe === 0) ? "" : (zeichen + einrueckung(tiefe-1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_xmlknoten_normal =
|
||||||
|
{
|
||||||
|
name : string;
|
||||||
|
attribute : {[schluessel : string] : string};
|
||||||
|
kinder : Array<typ_xmlknoten>;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function xmlknoten_normal_erstellen
|
||||||
|
(
|
||||||
|
name : string,
|
||||||
|
attribute : {[schluessel : string] : string} = {},
|
||||||
|
kinder : Array<typ_xmlknoten> = []
|
||||||
|
)
|
||||||
|
: typ_xmlknoten_normal
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"name": name,
|
||||||
|
"attribute": attribute,
|
||||||
|
"kinder": kinder
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
name : string,
|
||||||
|
attribute : {[schluessel : string] : string} = {},
|
||||||
|
kinder : Array<typ_xmlknoten> = []
|
||||||
|
)
|
||||||
|
: typ_xmlknoten
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "normal",
|
||||||
|
"angaben": xmlknoten_normal_erstellen(name, attribute, kinder)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function xmlknoten_normal_darstellen(xmlknoten_normal : typ_xmlknoten_normal, tiefe : int) : string
|
||||||
|
{
|
||||||
|
let str : string = "";
|
||||||
|
// anfang
|
||||||
|
{
|
||||||
|
let str_anfang : string = "";
|
||||||
|
str_anfang += xmlknoten_normal.name;
|
||||||
|
// attribute
|
||||||
|
{
|
||||||
|
let str_attribute : string = "";
|
||||||
|
Object.keys(xmlknoten_normal.attribute).forEach
|
||||||
|
(
|
||||||
|
schluessel =>
|
||||||
|
{
|
||||||
|
let wert : string = xmlknoten_normal.attribute[schluessel];
|
||||||
|
str_attribute += (" " + schluessel + "=" + "\"" + wert + "\"");
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
str_anfang += str_attribute;
|
||||||
|
}
|
||||||
|
str_anfang = (einrueckung(tiefe) + "<" + str_anfang + ">" + "\n");
|
||||||
|
str += str_anfang;
|
||||||
|
}
|
||||||
|
// kinder
|
||||||
|
{
|
||||||
|
xmlknoten_normal.kinder.forEach(kind => (str += xmlknoten_darstellen(kind, tiefe+1)));
|
||||||
|
}
|
||||||
|
// ende
|
||||||
|
{
|
||||||
|
let str_ende : string = "";
|
||||||
|
str_ende += xmlknoten_normal.name;
|
||||||
|
str_ende = (einrueckung(tiefe) + "<" + "/" + str_ende + ">" + "\n");
|
||||||
|
str += str_ende;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
implementierung_xmlknoten["normal"] =
|
||||||
|
{
|
||||||
|
"darstellen": (xmlknoten, tiefe) => xmlknoten_normal_darstellen(xmlknoten.angaben, tiefe),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
69
quelldatein/helfer/xmlknoten/text.ts
Normal file
69
quelldatein/helfer/xmlknoten/text.ts
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Verrückte Turing-Maschinen — A turing complete game
|
||||||
|
* Copyright (C) 2016 Christian Fraß <vidofnir@folksprak.org>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module mod_vtm_helfer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type typ_xmlknoten_text =
|
||||||
|
{
|
||||||
|
inhalt : string
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function xmlknoten_text_erstellen(inhalt : string) : typ_xmlknoten_text
|
||||||
|
{
|
||||||
|
return {"inhalt": inhalt};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function xmlknoten_text_erstellen_erweitert(inhalt : string) : typ_xmlknoten
|
||||||
|
{
|
||||||
|
return {"art": "text", "angaben": xmlknoten_text_erstellen(inhalt)};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function xmlknoten_text_darstellen(xmlknoten_text : typ_xmlknoten_text, tiefe : int) : string
|
||||||
|
{
|
||||||
|
return xmlknoten_text.inhalt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
implementierung_xmlknoten["text"] =
|
||||||
|
{
|
||||||
|
"darstellen": (xmlknoten, tiefe) => xmlknoten_text_darstellen(xmlknoten.angaben, tiefe),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -22,45 +22,51 @@ module mod_vtm_manifestation
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export abstract class klasse_manifestation<typ_aufbau, typ_ausgabe>
|
export type typ_manifestation<typ_aufbau> = typ_komplex<any>;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export type schnittstelle_manifestation<typ_aufbau, typ_ausgabe> =
|
||||||
{
|
{
|
||||||
|
darstellen : (manifestation : typ_manifestation<typ_aufbau>)=>typ_ausgabe;
|
||||||
/**
|
binden : (manifestation : typ_manifestation<typ_aufbau>)=>void;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
}
|
||||||
*/
|
;
|
||||||
protected aufbau : typ_aufbau;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public constructor(aufbau : typ_aufbau)
|
export var implementierung_manifestation : {[art : string] : schnittstelle_manifestation<any, any>} = {};
|
||||||
{
|
|
||||||
this.aufbau = aufbau;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public abstract darstellen() : typ_ausgabe;
|
export function manifestation_darstellen<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : typ_ausgabe
|
||||||
|
{
|
||||||
|
return implementierung_manifestation[manifestation.art].darstellen(manifestation);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public abstract binden() : void;
|
export function manifestation_binden<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : void
|
||||||
|
{
|
||||||
|
return implementierung_manifestation[manifestation.art].binden(manifestation);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public einrichten() : void
|
export function manifestation_einrichten<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : void
|
||||||
{
|
{
|
||||||
this.darstellen();
|
manifestation_darstellen<typ_aufbau, typ_ausgabe>(manifestation);
|
||||||
this.binden();
|
manifestation_binden<typ_aufbau, typ_ausgabe>(manifestation);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@ module mod_vtm_manifestation
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
var position_basis1 : typ_position = mod_vtm_helfer.vektor_polar(0/6.0 * (2*Math.PI));
|
var position_basis1 : typ_position = mod_vtm_helfer.vektor_polar((0/6) * (2*Math.PI));
|
||||||
var position_basis2 : typ_position = mod_vtm_helfer.vektor_polar(2/6.0 * (2*Math.PI));
|
var position_basis2 : typ_position = mod_vtm_helfer.vektor_polar((2/6) * (2*Math.PI));
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -22,107 +22,125 @@ module mod_vtm_manifestation
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_speicher_partie
|
export type typ_speicher_partie =
|
||||||
extends klasse_manifestation<mod_vtm_aufbau.typ_partie, void>
|
|
||||||
{
|
{
|
||||||
|
aufbau : mod_vtm_aufbau.typ_partie;
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
public constructor(aufbau : mod_vtm_aufbau.typ_partie)
|
|
||||||
{
|
|
||||||
super(aufbau);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @override
|
|
||||||
*/
|
|
||||||
public einrichten() : void
|
|
||||||
{
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_aufgabe",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
// console.info("aenderung_aufgabe", angaben);
|
|
||||||
let id : string = mod_vtm_aufbau.partie_aufgabe_lesen(this.aufbau).id_lesen();
|
|
||||||
let key : string = ("vtm_" + id);
|
|
||||||
if (key in localStorage)
|
|
||||||
{
|
|
||||||
let item : string = localStorage.getItem(key);
|
|
||||||
let welt : mod_vtm_aufbau.typ_welt = mod_vtm_aufbau.welt_importieren(JSON.parse(item));
|
|
||||||
mod_vtm_aufbau.partie_welt_setzen(this.aufbau, welt, false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mod_vtm_aufbau.partie_welt_leeren(this.aufbau);
|
|
||||||
// nichts tun
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_welt",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
let id : string = mod_vtm_aufbau.partie_aufgabe_lesen(this.aufbau).id_lesen();
|
|
||||||
let key : string = ("vtm_" + id);
|
|
||||||
let item : string = JSON.stringify(mod_vtm_aufbau.welt_exportieren(mod_vtm_aufbau.partie_welt_lesen(this.aufbau)));
|
|
||||||
localStorage.setItem(key, item);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_figur",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
// console.info("aenderung_figur", angaben);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_modus",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
// console.info("aenderung_modus", angaben);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
this.darstellen();
|
|
||||||
this.binden();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public darstellen() : void
|
|
||||||
{
|
|
||||||
console.warn("empty");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public binden() : void
|
|
||||||
{
|
|
||||||
console.warn("empty");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function speicher_partie_erstellen
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_partie
|
||||||
|
)
|
||||||
|
: typ_speicher_partie
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"aufbau": aufbau
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function speicher_partie_erstellen_erweitert
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_partie
|
||||||
|
)
|
||||||
|
: typ_manifestation<mod_vtm_aufbau.typ_partie>
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "speicher_partie",
|
||||||
|
"angaben": speicher_partie_erstellen(aufbau)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function speicher_partie_darstellen(speicher_partie : typ_speicher_partie) : void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function speicher_partie_binden(speicher_partie : typ_speicher_partie) : void
|
||||||
|
{
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
|
(
|
||||||
|
this.aufbau,
|
||||||
|
"aenderung_aufgabe",
|
||||||
|
(angaben) =>
|
||||||
|
{
|
||||||
|
// console.info("aenderung_aufgabe", angaben);
|
||||||
|
let id : string = mod_vtm_aufbau.aufgabe_id(mod_vtm_aufbau.partie_aufgabe_lesen(this.aufbau))
|
||||||
|
let key : string = ("vtm_" + id);
|
||||||
|
if (key in localStorage)
|
||||||
|
{
|
||||||
|
let item : string = localStorage.getItem(key);
|
||||||
|
let welt : mod_vtm_aufbau.typ_welt = mod_vtm_aufbau.welt_importieren(JSON.parse(item));
|
||||||
|
mod_vtm_aufbau.partie_welt_setzen(this.aufbau, welt, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mod_vtm_aufbau.partie_welt_leeren(this.aufbau);
|
||||||
|
// nichts tun
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
|
(
|
||||||
|
this.aufbau,
|
||||||
|
"aenderung_welt",
|
||||||
|
(angaben) =>
|
||||||
|
{
|
||||||
|
let id : string = mod_vtm_aufbau.aufgabe_id(mod_vtm_aufbau.partie_aufgabe_lesen(this.aufbau))
|
||||||
|
let key : string = ("vtm_" + id);
|
||||||
|
let item : string = JSON.stringify(mod_vtm_aufbau.welt_exportieren(mod_vtm_aufbau.partie_welt_lesen(this.aufbau)));
|
||||||
|
localStorage.setItem(key, item);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
|
(
|
||||||
|
this.aufbau,
|
||||||
|
"aenderung_figur",
|
||||||
|
(angaben) =>
|
||||||
|
{
|
||||||
|
// console.info("aenderung_figur", angaben);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
|
(
|
||||||
|
this.aufbau,
|
||||||
|
"aenderung_modus",
|
||||||
|
(angaben) =>
|
||||||
|
{
|
||||||
|
// console.info("aenderung_modus", angaben);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
implementierung_manifestation["speicher_partie"] =
|
||||||
|
{
|
||||||
|
"darstellen": (manifestation) => speicher_partie_darstellen(manifestation.angaben),
|
||||||
|
"binden": (manifestation) => speicher_partie_binden(manifestation.angaben),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,277 +22,296 @@ module mod_vtm_manifestation
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_svg_aktor
|
export type typ_svg_aktor =
|
||||||
extends klasse_manifestation<mod_vtm_aufbau.typ_aktor, mod_vtm_helfer.schnittstelle_xmlknoten>
|
|
||||||
{
|
{
|
||||||
|
aufbau : mod_vtm_aufbau.typ_aktor;
|
||||||
/**
|
stelle : mod_vtm_aufbau.typ_stelle;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
}
|
||||||
*/
|
;
|
||||||
private stelle : mod_vtm_aufbau.typ_stelle;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public constructor(aufbau : mod_vtm_aufbau.typ_aktor, stelle : mod_vtm_aufbau.typ_stelle)
|
function svg_aktor_erstellen
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_aktor,
|
||||||
|
stelle : mod_vtm_aufbau.typ_stelle
|
||||||
|
)
|
||||||
|
: typ_svg_aktor
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"aufbau": aufbau,
|
||||||
|
"stelle": stelle
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function svg_aktor_erstellen_manifestation
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_aktor,
|
||||||
|
stelle : mod_vtm_aufbau.typ_stelle
|
||||||
|
)
|
||||||
|
: typ_manifestation<mod_vtm_aufbau.typ_aktor>
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "svg_aktor",
|
||||||
|
"angaben": svg_aktor_erstellen(aufbau, stelle),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function svg_aktor_darstellen(svg_aktor : typ_svg_aktor) : mod_vtm_helfer.typ_xmlknoten
|
||||||
|
{
|
||||||
|
let aktor : mod_vtm_aufbau.typ_aktor = svg_aktor.aufbau;
|
||||||
|
let knoten_rahmen = function () : mod_vtm_helfer.typ_xmlknoten
|
||||||
{
|
{
|
||||||
super(aufbau);
|
return (
|
||||||
this.stelle = stelle;
|
svg_pfad
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public darstellen() : mod_vtm_helfer.schnittstelle_xmlknoten
|
|
||||||
{
|
|
||||||
let aktor : mod_vtm_aufbau.typ_aktor = this.aufbau;
|
|
||||||
let knoten_rahmen = function () : mod_vtm_helfer.schnittstelle_xmlknoten
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
svg_pfad
|
|
||||||
(
|
|
||||||
mod_vtm_helfer.sequenz(6).map(i => mod_vtm_helfer.vektor_polar(((i+0.5)/6.0) * (2*Math.PI), 0.5)),
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
"class": "rahmen"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
;
|
|
||||||
let kinder_feld : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
|
||||||
switch (aktor.art)
|
|
||||||
{
|
|
||||||
case "erzeuger":
|
|
||||||
{
|
|
||||||
kinder_feld.push(knoten_rahmen());
|
|
||||||
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.aktor_erzeuger_richtung_lesen(aktor.angaben);
|
|
||||||
let knoten_pfeil : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"path",
|
|
||||||
{
|
|
||||||
"d": svg_form_pfeil,
|
|
||||||
"class": (
|
|
||||||
[
|
|
||||||
"pfeil",
|
|
||||||
"erzeuger",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
"transform": (
|
|
||||||
[
|
|
||||||
"rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")",
|
|
||||||
"translate(-0.2, 0)",
|
|
||||||
"scale(0.12)",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_pfeil);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "befoerderer":
|
|
||||||
{
|
|
||||||
kinder_feld.push(knoten_rahmen());
|
|
||||||
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.aktor_befoerderer_richtung_lesen(aktor.angaben);
|
|
||||||
let knoten_pfeil : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"path",
|
|
||||||
{
|
|
||||||
"d": svg_form_pfeil,
|
|
||||||
"class": (
|
|
||||||
[
|
|
||||||
"pfeil",
|
|
||||||
"neutral",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
"transform": (
|
|
||||||
[
|
|
||||||
"rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")",
|
|
||||||
"translate(-0.2, 0)",
|
|
||||||
"scale(0.12)",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_pfeil);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "schreiber":
|
|
||||||
{
|
|
||||||
kinder_feld.push(knoten_rahmen());
|
|
||||||
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.aktor_schreiber_richtung_lesen(aktor.angaben);
|
|
||||||
let symbol : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.aktor_schreiber_symbol_lesen(aktor.angaben);
|
|
||||||
let knoten_pfeil : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"path",
|
|
||||||
{
|
|
||||||
"d": svg_form_pfeil,
|
|
||||||
"class": (
|
|
||||||
[
|
|
||||||
"pfeil",
|
|
||||||
"symbol_" + symbol.toFixed(0),
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
"transform": (
|
|
||||||
[
|
|
||||||
"rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")",
|
|
||||||
"translate(-0.2, 0)",
|
|
||||||
"scale(0.12)",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_pfeil);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "leser":
|
|
||||||
{
|
|
||||||
kinder_feld.push(knoten_rahmen());
|
|
||||||
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.aktor_leser_richtung_lesen(aktor.angaben);
|
|
||||||
let symbol_links : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.aktor_leser_symbol_links_lesen(aktor.angaben);
|
|
||||||
let symbol_rechts : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.aktor_leser_symbol_rechts_lesen(aktor.angaben);
|
|
||||||
let ausgaenge : Array<{summand : mod_vtm_aufbau.typ_richtung, symbol : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_symbol>;}> =
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"summand": 0,
|
|
||||||
"symbol": new klasse_nichts<mod_vtm_aufbau.typ_symbol>(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"summand": +2,
|
|
||||||
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(symbol_links),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"summand": -2,
|
|
||||||
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(symbol_rechts),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
;
|
|
||||||
ausgaenge.forEach
|
|
||||||
(
|
|
||||||
eintrag =>
|
|
||||||
{
|
|
||||||
let winkel : float = ((mod_vtm_aufbau.richtung_addieren(richtung, eintrag.summand) / 6.0) * 360);
|
|
||||||
let knoten_pfeil : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"path",
|
|
||||||
{
|
|
||||||
"d": svg_form_pfeil,
|
|
||||||
"class": (
|
|
||||||
[
|
|
||||||
"pfeil",
|
|
||||||
(
|
|
||||||
eintrag.symbol.ist_schlicht()
|
|
||||||
? "symbol_" + eintrag.symbol.lesen().toFixed(0)
|
|
||||||
: "neutral"
|
|
||||||
),
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
"transform": (
|
|
||||||
[
|
|
||||||
|
|
||||||
"rotate(" + winkel.toFixed(svg_float_praezission) + ")",
|
|
||||||
"translate(0.1, 0)",
|
|
||||||
"scale(0.075)",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_pfeil);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "verwerfer":
|
|
||||||
{
|
|
||||||
kinder_feld.push(knoten_rahmen());
|
|
||||||
let knoten_kreis : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"circle",
|
|
||||||
{
|
|
||||||
"cx": (0.0).toFixed(svg_float_praezission),
|
|
||||||
"cy": (0.0).toFixed(svg_float_praezission),
|
|
||||||
"r": (0.25).toFixed(svg_float_praezission),
|
|
||||||
"class": (
|
|
||||||
[
|
|
||||||
"kreis",
|
|
||||||
"negativ",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_kreis);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "annehmer":
|
|
||||||
{
|
|
||||||
kinder_feld.push(knoten_rahmen());
|
|
||||||
let knoten_kreis : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"circle",
|
|
||||||
{
|
|
||||||
"cx": (0.0).toFixed(svg_float_praezission),
|
|
||||||
"cy": (0.0).toFixed(svg_float_praezission),
|
|
||||||
"r": (0.25).toFixed(svg_float_praezission),
|
|
||||||
"class": (
|
|
||||||
[
|
|
||||||
"kreis",
|
|
||||||
"positiv",
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_kreis);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = ("unbehandelter Aktor-Typ");
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let position : typ_position = position_von_stelle(this.stelle);
|
|
||||||
let knoten_feld : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
(
|
||||||
"g",
|
mod_vtm_helfer.sequenz(6).map(i => mod_vtm_helfer.vektor_polar(((i+0.5)/6) * (2*Math.PI), 0.5)),
|
||||||
|
true,
|
||||||
{
|
{
|
||||||
"class": "feld",
|
"class": "rahmen"
|
||||||
"rel": mod_vtm_aufbau.stelle_hash(this.stelle),
|
}
|
||||||
"transform": ("translate(" + position.x.toFixed(svg_float_praezission) + ", " + position.y.toFixed(svg_float_praezission) + ")"),
|
|
||||||
},
|
|
||||||
kinder_feld
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
return knoten_feld;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public binden() : void
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
let kinder_feld : Array<mod_vtm_helfer.typ_xmlknoten> = [];
|
||||||
|
fallunterscheidung<void>
|
||||||
|
(
|
||||||
|
aktor,
|
||||||
|
{
|
||||||
|
"erzeuger": (angaben) =>
|
||||||
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
|
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.erzeuger_richtung_lesen(angaben);
|
||||||
|
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"path",
|
||||||
|
{
|
||||||
|
"d": svg_form_pfeil,
|
||||||
|
"class": (
|
||||||
|
[
|
||||||
|
"pfeil",
|
||||||
|
"erzeuger",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
"transform": (
|
||||||
|
[
|
||||||
|
"rotate(" + ((richtung/6) * 360).toFixed(svg_float_praezission) + ")",
|
||||||
|
"translate(-0.2, 0)",
|
||||||
|
"scale(0.12)",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_feld.push(knoten_pfeil);
|
||||||
|
}
|
||||||
|
,
|
||||||
|
"befoerderer": (angaben) =>
|
||||||
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
|
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.befoerderer_richtung_lesen(angaben);
|
||||||
|
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"path",
|
||||||
|
{
|
||||||
|
"d": svg_form_pfeil,
|
||||||
|
"class": (
|
||||||
|
[
|
||||||
|
"pfeil",
|
||||||
|
"neutral",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
"transform": (
|
||||||
|
[
|
||||||
|
"rotate(" + ((richtung/6) * 360).toFixed(svg_float_praezission) + ")",
|
||||||
|
"translate(-0.2, 0)",
|
||||||
|
"scale(0.12)",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_feld.push(knoten_pfeil);
|
||||||
|
}
|
||||||
|
,
|
||||||
|
"schreiber": (angaben) =>
|
||||||
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
|
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.schreiber_richtung_lesen(angaben);
|
||||||
|
let symbol : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.schreiber_symbol_lesen(angaben);
|
||||||
|
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"path",
|
||||||
|
{
|
||||||
|
"d": svg_form_pfeil,
|
||||||
|
"class": (
|
||||||
|
[
|
||||||
|
"pfeil",
|
||||||
|
"symbol_" + symbol.toFixed(0),
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
"transform": (
|
||||||
|
[
|
||||||
|
"rotate(" + ((richtung/6) * 360).toFixed(svg_float_praezission) + ")",
|
||||||
|
"translate(-0.2, 0)",
|
||||||
|
"scale(0.12)",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_feld.push(knoten_pfeil);
|
||||||
|
}
|
||||||
|
,
|
||||||
|
"leser": (angaben) =>
|
||||||
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
|
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.leser_richtung_lesen(angaben);
|
||||||
|
let symbol_links : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.leser_symbol_links_lesen(angaben);
|
||||||
|
let symbol_rechts : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.leser_symbol_rechts_lesen(angaben);
|
||||||
|
let ausgaenge : Array<{summand : mod_vtm_aufbau.typ_richtung, symbol : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_symbol>;}> =
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"summand": 0,
|
||||||
|
"symbol": new klasse_nichts<mod_vtm_aufbau.typ_symbol>(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"summand": +2,
|
||||||
|
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(symbol_links),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"summand": -2,
|
||||||
|
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(symbol_rechts),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
;
|
||||||
|
ausgaenge.forEach
|
||||||
|
(
|
||||||
|
eintrag =>
|
||||||
|
{
|
||||||
|
let winkel : float = ((mod_vtm_aufbau.richtung_addieren(richtung, eintrag.summand) / 6) * 360);
|
||||||
|
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"path",
|
||||||
|
{
|
||||||
|
"d": svg_form_pfeil,
|
||||||
|
"class": (
|
||||||
|
[
|
||||||
|
"pfeil",
|
||||||
|
(
|
||||||
|
eintrag.symbol.ist_schlicht()
|
||||||
|
? "symbol_" + eintrag.symbol.lesen().toFixed(0)
|
||||||
|
: "neutral"
|
||||||
|
),
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
"transform": (
|
||||||
|
[
|
||||||
|
|
||||||
|
"rotate(" + winkel.toFixed(svg_float_praezission) + ")",
|
||||||
|
"translate(0.1, 0)",
|
||||||
|
"scale(0.075)",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_feld.push(knoten_pfeil);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
,
|
||||||
|
"verwerfer": (angaben) =>
|
||||||
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
|
let knoten_kreis : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"circle",
|
||||||
|
{
|
||||||
|
"cx": (0.0).toFixed(svg_float_praezission),
|
||||||
|
"cy": (0.0).toFixed(svg_float_praezission),
|
||||||
|
"r": (0.25).toFixed(svg_float_praezission),
|
||||||
|
"class": (
|
||||||
|
[
|
||||||
|
"kreis",
|
||||||
|
"negativ",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_feld.push(knoten_kreis);
|
||||||
|
}
|
||||||
|
,
|
||||||
|
"annehmer": (angaben) =>
|
||||||
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
|
let knoten_kreis : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"circle",
|
||||||
|
{
|
||||||
|
"cx": (0.0).toFixed(svg_float_praezission),
|
||||||
|
"cy": (0.0).toFixed(svg_float_praezission),
|
||||||
|
"r": (0.25).toFixed(svg_float_praezission),
|
||||||
|
"class": (
|
||||||
|
[
|
||||||
|
"kreis",
|
||||||
|
"positiv",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_feld.push(knoten_kreis);
|
||||||
|
}
|
||||||
|
,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
let position : typ_position = position_von_stelle(svg_aktor.stelle);
|
||||||
|
let knoten_feld : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"g",
|
||||||
|
{
|
||||||
|
"class": "feld",
|
||||||
|
"rel": mod_vtm_aufbau.stelle_hash(svg_aktor.stelle),
|
||||||
|
"transform": ("translate" + "(" + position.x.toFixed(svg_float_praezission) + ", " + position.y.toFixed(svg_float_praezission) + ")"),
|
||||||
|
},
|
||||||
|
kinder_feld
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return knoten_feld;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
implementierung_manifestation["svg_aktor"] =
|
||||||
|
{
|
||||||
|
"darstellen": (manifestation) => svg_aktor_darstellen(manifestation.angaben),
|
||||||
|
"binden": (manifestation) => {},
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,118 +22,154 @@ module mod_vtm_manifestation
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_svg_figur
|
export type typ_svg_figur =
|
||||||
extends klasse_manifestation<mod_vtm_aufbau.typ_figur, mod_vtm_helfer.schnittstelle_xmlknoten>
|
|
||||||
{
|
{
|
||||||
|
aufbau : mod_vtm_aufbau.typ_figur;
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
public constructor(aufbau : mod_vtm_aufbau.typ_figur)
|
|
||||||
{
|
|
||||||
super(aufbau);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public darstellen() : mod_vtm_helfer.schnittstelle_xmlknoten
|
|
||||||
{
|
|
||||||
let figur : mod_vtm_aufbau.typ_figur = this.aufbau;
|
|
||||||
let kinder_figur : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
|
||||||
// Stein
|
|
||||||
{
|
|
||||||
let knoten_stein : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"circle",
|
|
||||||
{
|
|
||||||
"cx": (0.0).toFixed(svg_float_praezission),
|
|
||||||
"cy": (0.0).toFixed(svg_float_praezission),
|
|
||||||
"r": (0.125).toFixed(svg_float_praezission),
|
|
||||||
"class": "stein",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_figur.push(knoten_stein);
|
|
||||||
}
|
|
||||||
// Band
|
|
||||||
{
|
|
||||||
let band : Array<mod_vtm_aufbau.typ_symbol> = mod_vtm_aufbau.figur_band_lesen(figur);
|
|
||||||
let kinder_band : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
|
||||||
band.forEach
|
|
||||||
(
|
|
||||||
(symbol, index) =>
|
|
||||||
{
|
|
||||||
let r : float = 0.06125;
|
|
||||||
let x : float = (+0.1+(2*r*1.25)*index);
|
|
||||||
let y : float = (-0.1);
|
|
||||||
let knoten_eintrag : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"circle",
|
|
||||||
{
|
|
||||||
"cx": x.toFixed(svg_float_praezission),
|
|
||||||
"cy": y.toFixed(svg_float_praezission),
|
|
||||||
"r": r.toFixed(svg_float_praezission),
|
|
||||||
/*
|
|
||||||
"x": (x-r).toFixed(svg_float_praezission),
|
|
||||||
"y": (y-r).toFixed(svg_float_praezission),
|
|
||||||
"width": (2*r).toFixed(svg_float_praezission),
|
|
||||||
"height": (2*r).toFixed(svg_float_praezission),
|
|
||||||
*/
|
|
||||||
"class": (
|
|
||||||
[
|
|
||||||
"eintrag",
|
|
||||||
"symbol_" + symbol.toFixed(0),
|
|
||||||
].join(" ")
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_band.push(knoten_eintrag);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
let knoten_band = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"g",
|
|
||||||
{
|
|
||||||
"class": "band",
|
|
||||||
},
|
|
||||||
kinder_band
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_figur.push(knoten_band);
|
|
||||||
}
|
|
||||||
let position : typ_position = position_von_stelle(mod_vtm_aufbau.figur_stelle_lesen(figur));
|
|
||||||
let knoten_figur = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"g",
|
|
||||||
{
|
|
||||||
"class": "figur",
|
|
||||||
"transform": ("translate(" + position.x.toFixed(svg_float_praezission) + "," + position.y.toFixed(svg_float_praezission) + ")"),
|
|
||||||
},
|
|
||||||
kinder_figur
|
|
||||||
)
|
|
||||||
);
|
|
||||||
return knoten_figur;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public binden() : void
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function svg_figur_erstellen
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_figur
|
||||||
|
)
|
||||||
|
: typ_svg_figur
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"aufbau": aufbau,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function svg_figur_erstellen_manifestation
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_figur
|
||||||
|
)
|
||||||
|
: typ_manifestation<mod_vtm_aufbau.typ_figur>
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "svg_figur",
|
||||||
|
"angaben": svg_figur_erstellen(aufbau),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function svg_figur_darstellen
|
||||||
|
(
|
||||||
|
svg_figur : typ_svg_figur
|
||||||
|
)
|
||||||
|
: mod_vtm_helfer.typ_xmlknoten
|
||||||
|
{
|
||||||
|
let figur : mod_vtm_aufbau.typ_figur = svg_figur.aufbau;
|
||||||
|
let kinder_figur : Array<mod_vtm_helfer.typ_xmlknoten> = [];
|
||||||
|
// Stein
|
||||||
|
{
|
||||||
|
let knoten_stein : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"circle",
|
||||||
|
{
|
||||||
|
"cx": (0.0).toFixed(svg_float_praezission),
|
||||||
|
"cy": (0.0).toFixed(svg_float_praezission),
|
||||||
|
"r": (0.125).toFixed(svg_float_praezission),
|
||||||
|
"class": "stein",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_figur.push(knoten_stein);
|
||||||
|
}
|
||||||
|
// Band
|
||||||
|
{
|
||||||
|
let band : Array<mod_vtm_aufbau.typ_symbol> = mod_vtm_aufbau.figur_band_lesen(figur);
|
||||||
|
let kinder_band : Array<mod_vtm_helfer.typ_xmlknoten> = [];
|
||||||
|
band.forEach
|
||||||
|
(
|
||||||
|
(symbol, index) =>
|
||||||
|
{
|
||||||
|
let r : float = 0.06125;
|
||||||
|
let x : float = (+0.1+(2*r*1.25)*index);
|
||||||
|
let y : float = (-0.1);
|
||||||
|
let knoten_eintrag : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"circle",
|
||||||
|
{
|
||||||
|
"cx": x.toFixed(svg_float_praezission),
|
||||||
|
"cy": y.toFixed(svg_float_praezission),
|
||||||
|
"r": r.toFixed(svg_float_praezission),
|
||||||
|
/*
|
||||||
|
"x": (x-r).toFixed(svg_float_praezission),
|
||||||
|
"y": (y-r).toFixed(svg_float_praezission),
|
||||||
|
"width": (2*r).toFixed(svg_float_praezission),
|
||||||
|
"height": (2*r).toFixed(svg_float_praezission),
|
||||||
|
*/
|
||||||
|
"class": (
|
||||||
|
[
|
||||||
|
"eintrag",
|
||||||
|
"symbol_" + symbol.toFixed(0),
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_band.push(knoten_eintrag);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
let knoten_band = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"g",
|
||||||
|
{
|
||||||
|
"class": "band",
|
||||||
|
},
|
||||||
|
kinder_band
|
||||||
|
)
|
||||||
|
);
|
||||||
|
kinder_figur.push(knoten_band);
|
||||||
|
}
|
||||||
|
let position : typ_position = position_von_stelle(mod_vtm_aufbau.figur_stelle_lesen(figur));
|
||||||
|
let knoten_figur = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"g",
|
||||||
|
{
|
||||||
|
"class": "figur",
|
||||||
|
"transform": ("translate(" + position.x.toFixed(svg_float_praezission) + "," + position.y.toFixed(svg_float_praezission) + ")"),
|
||||||
|
},
|
||||||
|
kinder_figur
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return knoten_figur;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function svg_figur_binden(svg_figur : typ_svg_figur) : void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
implementierung_manifestation["svg_figur"] =
|
||||||
|
{
|
||||||
|
"darstellen": (manifestation) => svg_figur_darstellen(manifestation.angaben),
|
||||||
|
"binden": (manifestation) => svg_figur_binden(manifestation.angaben),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,105 +22,129 @@ module mod_vtm_manifestation
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_svg_partie
|
export type typ_svg_partie =
|
||||||
extends klasse_manifestation<mod_vtm_aufbau.typ_partie, mod_vtm_helfer.schnittstelle_xmlknoten>
|
|
||||||
{
|
{
|
||||||
|
aufbau : mod_vtm_aufbau.typ_partie;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
/**
|
||||||
*/
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
public constructor(aufbau : mod_vtm_aufbau.typ_partie)
|
*/
|
||||||
|
function svg_partie_erstellen(aufbau : mod_vtm_aufbau.typ_partie) : typ_svg_partie
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"aufbau": aufbau
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function svg_partie_erstellen_manifestation(aufbau : mod_vtm_aufbau.typ_partie) : typ_manifestation<mod_vtm_aufbau.typ_partie>
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "svg_partie",
|
||||||
|
"angaben": svg_partie_erstellen(aufbau)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function svg_partie_darstellen(svg_partie : typ_svg_partie) : mod_vtm_helfer.typ_xmlknoten
|
||||||
|
{
|
||||||
|
let kinder_partie : Array<mod_vtm_helfer.typ_xmlknoten> = [];
|
||||||
|
// Welt
|
||||||
|
{
|
||||||
|
let kinder_welt : Array<mod_vtm_helfer.typ_xmlknoten> = [];
|
||||||
|
// Felder
|
||||||
{
|
{
|
||||||
super(aufbau);
|
let kinder_felder : Array<mod_vtm_helfer.typ_xmlknoten> = [];
|
||||||
}
|
mod_vtm_aufbau.welt_felder_lesen(mod_vtm_aufbau.partie_welt_lesen(svg_partie.aufbau)).forEach
|
||||||
|
(
|
||||||
|
({"stelle": stelle, "aktor": aktor}) =>
|
||||||
/**
|
{
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
let manifestation_feld : typ_manifestation<mod_vtm_aufbau.typ_aktor> = svg_aktor_erstellen_manifestation(aktor, stelle);
|
||||||
* @implementation
|
let knoten_feld : mod_vtm_helfer.typ_xmlknoten = manifestation_darstellen(manifestation_feld);
|
||||||
*/
|
kinder_felder.push(knoten_feld);
|
||||||
public darstellen() : mod_vtm_helfer.schnittstelle_xmlknoten
|
}
|
||||||
{
|
)
|
||||||
let kinder_partie : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
;
|
||||||
// Welt
|
let knoten_felder : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
{
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
let kinder_welt : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
|
||||||
// Felder
|
|
||||||
{
|
|
||||||
let kinder_felder : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
|
||||||
mod_vtm_aufbau.welt_felder_lesen(mod_vtm_aufbau.partie_welt_lesen(this.aufbau)).forEach
|
|
||||||
(
|
|
||||||
({"stelle": stelle, "aktor": aktor}) =>
|
|
||||||
{
|
|
||||||
let manifestation_feld : klasse_manifestation<mod_vtm_aufbau.typ_aktor, mod_vtm_helfer.schnittstelle_xmlknoten> = new klasse_svg_aktor(aktor, stelle);
|
|
||||||
let knoten_feld : mod_vtm_helfer.schnittstelle_xmlknoten = manifestation_feld.darstellen();
|
|
||||||
kinder_felder.push(knoten_feld);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
let knoten_felder : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"g",
|
|
||||||
{
|
|
||||||
"class": "felder",
|
|
||||||
},
|
|
||||||
kinder_felder
|
|
||||||
)
|
|
||||||
|
|
||||||
);
|
|
||||||
kinder_welt.push(knoten_felder);
|
|
||||||
}
|
|
||||||
let knoten_welt : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"g",
|
|
||||||
{
|
|
||||||
"class": "welt",
|
|
||||||
},
|
|
||||||
kinder_welt
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_partie.push(knoten_welt);
|
|
||||||
}
|
|
||||||
// Figur
|
|
||||||
{
|
|
||||||
let figur_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_figur> = mod_vtm_aufbau.partie_figur_lesen(this.aufbau);
|
|
||||||
if (figur_.ist_schlicht())
|
|
||||||
{
|
|
||||||
let figur : mod_vtm_aufbau.typ_figur = figur_.lesen();
|
|
||||||
let manifestation_figur : klasse_manifestation<mod_vtm_aufbau.typ_figur, mod_vtm_helfer.schnittstelle_xmlknoten> = (new klasse_svg_figur(figur));
|
|
||||||
let knoten_figur : mod_vtm_helfer.schnittstelle_xmlknoten = manifestation_figur.darstellen();
|
|
||||||
kinder_partie.push(knoten_figur);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// nichts tun
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let knoten_partie : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
(
|
||||||
"g",
|
"g",
|
||||||
{
|
{
|
||||||
"class": "partie",
|
"class": "felder",
|
||||||
},
|
},
|
||||||
kinder_partie
|
kinder_felder
|
||||||
)
|
)
|
||||||
|
|
||||||
);
|
);
|
||||||
return knoten_partie;
|
kinder_welt.push(knoten_felder);
|
||||||
}
|
}
|
||||||
|
let knoten_welt : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
/**
|
(
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
"g",
|
||||||
* @implementation
|
{
|
||||||
*/
|
"class": "welt",
|
||||||
public binden() : void
|
},
|
||||||
{
|
kinder_welt
|
||||||
}
|
)
|
||||||
|
);
|
||||||
|
kinder_partie.push(knoten_welt);
|
||||||
|
}
|
||||||
|
// Figur
|
||||||
|
{
|
||||||
|
let figur_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_figur> = mod_vtm_aufbau.partie_figur_lesen(svg_partie.aufbau);
|
||||||
|
if (figur_.ist_schlicht())
|
||||||
|
{
|
||||||
|
let figur : mod_vtm_aufbau.typ_figur = figur_.lesen();
|
||||||
|
let manifestation_figur : typ_manifestation<mod_vtm_aufbau.typ_figur> = svg_figur_erstellen_manifestation(figur);
|
||||||
|
let knoten_figur : mod_vtm_helfer.typ_xmlknoten = manifestation_darstellen(manifestation_figur);
|
||||||
|
kinder_partie.push(knoten_figur);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nichts tun
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let knoten_partie : mod_vtm_helfer.typ_xmlknoten = (
|
||||||
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
|
(
|
||||||
|
"g",
|
||||||
|
{
|
||||||
|
"class": "partie",
|
||||||
|
},
|
||||||
|
kinder_partie
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return knoten_partie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function svg_partie_binden(svg_partie : typ_svg_partie) : void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
implementierung_manifestation["svg_partie"] =
|
||||||
|
{
|
||||||
|
"darstellen": (manifestation) => svg_partie_darstellen(manifestation.angaben),
|
||||||
|
"binden": (manifestation) => svg_partie_binden(manifestation.angaben),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ module mod_vtm_manifestation
|
||||||
schliessen : boolean = true,
|
schliessen : boolean = true,
|
||||||
attribute : {[schlussel : string] : string} = {},
|
attribute : {[schlussel : string] : string} = {},
|
||||||
)
|
)
|
||||||
: mod_vtm_helfer.schnittstelle_xmlknoten
|
: mod_vtm_helfer.typ_xmlknoten
|
||||||
{
|
{
|
||||||
let d : string = "";
|
let d : string = "";
|
||||||
vertices.forEach
|
vertices.forEach
|
||||||
|
|
@ -57,7 +57,7 @@ module mod_vtm_manifestation
|
||||||
if (schliessen)
|
if (schliessen)
|
||||||
d += "Z";
|
d += "Z";
|
||||||
attribute["d"] = d;
|
attribute["d"] = d;
|
||||||
return (new mod_vtm_helfer.klasse_xmlknoten_normal("path", attribute));
|
return (mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert("path", attribute));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -72,12 +72,12 @@ module mod_vtm_manifestation
|
||||||
bis_y : float,
|
bis_y : float,
|
||||||
hoehe : int = 500,
|
hoehe : int = 500,
|
||||||
breite : int = 500,
|
breite : int = 500,
|
||||||
kinder : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = []
|
kinder : Array<mod_vtm_helfer.typ_xmlknoten> = []
|
||||||
)
|
)
|
||||||
: mod_vtm_helfer.schnittstelle_xmlknoten
|
: mod_vtm_helfer.typ_xmlknoten
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
|
||||||
(
|
(
|
||||||
"svg",
|
"svg",
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -32,431 +32,438 @@ module mod_vtm_manifestation
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export class klasse_web_partie
|
export type typ_web_partie =
|
||||||
extends klasse_manifestation<mod_vtm_aufbau.typ_partie, void>
|
|
||||||
{
|
{
|
||||||
|
aufbau : mod_vtm_aufbau.typ_partie;
|
||||||
/**
|
bereich : Element;
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
intervall : schnittstelle_fehlermonade<any>;
|
||||||
*/
|
}
|
||||||
private bereich : Element;
|
;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
private intervall : schnittstelle_fehlermonade<any>;
|
function web_partie_erstellen
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_partie,
|
||||||
|
bereich : Element
|
||||||
|
)
|
||||||
|
: typ_web_partie
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"aufbau": aufbau,
|
||||||
|
"bereich": bereich,
|
||||||
|
"intervall": (new klasse_nichts<any>()),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public constructor(aufbau : mod_vtm_aufbau.typ_partie, bereich : Element)
|
export function web_partie_erstellen_erweitert
|
||||||
|
(
|
||||||
|
aufbau : mod_vtm_aufbau.typ_partie,
|
||||||
|
bereich : Element
|
||||||
|
)
|
||||||
|
: typ_manifestation<mod_vtm_aufbau.typ_partie>
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"art": "web_partie",
|
||||||
|
"angaben": web_partie_erstellen(aufbau, bereich)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_erneuern_aufgabe(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
document.querySelector("#aufgabe_text").innerHTML = (
|
||||||
|
text_nachbearbeiten
|
||||||
|
(
|
||||||
|
mod_vtm_aufbau.aufgabe_text
|
||||||
|
(
|
||||||
|
mod_vtm_aufbau.partie_aufgabe_lesen(web_partie.aufbau)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_erneuern_welt(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
let knoten_svg : mod_vtm_helfer.typ_xmlknoten = mod_vtm_manifestation.svg_wurzel
|
||||||
|
(
|
||||||
|
-4, -4,
|
||||||
|
+4, +4,
|
||||||
|
800, 800,
|
||||||
|
[manifestation_darstellen(svg_partie_erstellen_manifestation(web_partie.aufbau))]
|
||||||
|
)
|
||||||
|
;
|
||||||
|
web_partie.bereich.innerHTML = mod_vtm_helfer.xmlknoten_darstellen(knoten_svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_erneuern_figur(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
let knoten_svg : mod_vtm_helfer.typ_xmlknoten = mod_vtm_manifestation.svg_wurzel
|
||||||
|
(
|
||||||
|
-4, -4,
|
||||||
|
+4, +4,
|
||||||
|
800, 800,
|
||||||
|
[manifestation_darstellen(svg_partie_erstellen_manifestation(web_partie.aufbau))]
|
||||||
|
)
|
||||||
|
;
|
||||||
|
web_partie.bereich.innerHTML = mod_vtm_helfer.xmlknoten_darstellen(knoten_svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_erneuern_modus(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
let status : string;
|
||||||
|
switch (mod_vtm_aufbau.partie_modus_lesen(web_partie.aufbau))
|
||||||
{
|
{
|
||||||
super(aufbau);
|
case mod_vtm_aufbau.modus_initial:
|
||||||
this.bereich = bereich;
|
|
||||||
this.intervall = (new klasse_nichts<any>());
|
|
||||||
/*
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_welt",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
this.erneuern_welt();
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @override
|
|
||||||
*/
|
|
||||||
public einrichten() : void
|
|
||||||
{
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_aufgabe",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
this.erneuern_aufgabe();
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_welt",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
this.erneuern_welt();
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_figur",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
this.erneuern_figur();
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
mod_vtm_aufbau.partie_lauschen
|
|
||||||
(
|
|
||||||
this.aufbau,
|
|
||||||
"aenderung_modus",
|
|
||||||
(angaben) =>
|
|
||||||
{
|
|
||||||
this.erneuern_modus();
|
|
||||||
this.erneuern_knoepfe();
|
|
||||||
}
|
|
||||||
)
|
|
||||||
;
|
|
||||||
this.darstellen();
|
|
||||||
this.binden();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private erneuern_aufgabe() : void
|
|
||||||
{
|
|
||||||
document.querySelector("#aufgabe_text").innerHTML = text_nachbearbeiten(mod_vtm_aufbau.partie_aufgabe_lesen(this.aufbau).text());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private erneuern_welt() : void
|
|
||||||
{
|
|
||||||
let knoten_svg : mod_vtm_helfer.schnittstelle_xmlknoten = mod_vtm_manifestation.svg_wurzel
|
|
||||||
(
|
|
||||||
-4, -4,
|
|
||||||
+4, +4,
|
|
||||||
800, 800,
|
|
||||||
[new klasse_svg_partie(this.aufbau).darstellen()]
|
|
||||||
)
|
|
||||||
;
|
|
||||||
this.bereich.innerHTML = knoten_svg.darstellen();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private erneuern_figur() : void
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
let knoten_svg : mod_vtm_helfer.schnittstelle_xmlknoten = mod_vtm_manifestation.svg_wurzel
|
|
||||||
(
|
|
||||||
-4, -4,
|
|
||||||
+4, +4,
|
|
||||||
800, 800,
|
|
||||||
[new klasse_svg_partie(this.aufbau).darstellen()]
|
|
||||||
)
|
|
||||||
;
|
|
||||||
this.bereich.innerHTML = knoten_svg.darstellen();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private erneuern_modus() : void
|
|
||||||
{
|
|
||||||
let status : string;
|
|
||||||
switch (mod_vtm_aufbau.partie_modus_lesen(this.aufbau))
|
|
||||||
{
|
{
|
||||||
case mod_vtm_aufbau.modus_initial:
|
status = "Maschine aufbauen";
|
||||||
{
|
break;
|
||||||
status = "Maschine aufbauen";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case mod_vtm_aufbau.modus_ungewiss:
|
|
||||||
{
|
|
||||||
status = "wird geprüft …";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case mod_vtm_aufbau.modus_fehlerhaft:
|
|
||||||
{
|
|
||||||
status = "fehlerhaft :/";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case mod_vtm_aufbau.modus_korrekt:
|
|
||||||
{
|
|
||||||
status = "anscheinend korrekt :)";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
let meldung : string = "unbehandelter Modus";
|
|
||||||
throw (new Error(meldung));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
document.querySelector("#aufgabe_status").textContent = status;
|
case mod_vtm_aufbau.modus_ungewiss:
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
public erneuern_knoepfe() : void
|
|
||||||
{
|
|
||||||
let modus : mod_vtm_aufbau.typ_modus = mod_vtm_aufbau.partie_modus_lesen(this.aufbau);
|
|
||||||
let klasse : string;
|
|
||||||
switch (modus)
|
|
||||||
{
|
{
|
||||||
case mod_vtm_aufbau.modus_initial:
|
status = "wird geprüft …";
|
||||||
{
|
break;
|
||||||
klasse = "initial";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case mod_vtm_aufbau.modus_ungewiss:
|
|
||||||
{
|
|
||||||
klasse = (
|
|
||||||
this.intervall.ist_schlicht()
|
|
||||||
? "ungewiss_laufend"
|
|
||||||
: "ungewiss_stehend"
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case mod_vtm_aufbau.modus_fehlerhaft:
|
|
||||||
case mod_vtm_aufbau.modus_korrekt:
|
|
||||||
{
|
|
||||||
klasse = "fertig";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
document.querySelector("#knoepfe").setAttribute("class", klasse);
|
case mod_vtm_aufbau.modus_fehlerhaft:
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public darstellen() : void
|
|
||||||
{
|
|
||||||
this.erneuern_aufgabe();
|
|
||||||
this.erneuern_welt();
|
|
||||||
this.erneuern_figur();
|
|
||||||
this.erneuern_modus();
|
|
||||||
this.erneuern_knoepfe();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private anhalten() : void
|
|
||||||
{
|
|
||||||
if (this.intervall.ist_schlicht())
|
|
||||||
{
|
{
|
||||||
clearInterval(this.intervall.lesen());
|
status = "fehlerhaft :/";
|
||||||
this.intervall = (new klasse_nichts<any>());
|
break;
|
||||||
|
}
|
||||||
|
case mod_vtm_aufbau.modus_korrekt:
|
||||||
|
{
|
||||||
|
status = "anscheinend korrekt :)";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
let meldung : string = "unbehandelter Modus";
|
||||||
|
throw (new Error(meldung));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.querySelector("#aufgabe_status").textContent = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_erneuern_knoepfe(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
let modus : mod_vtm_aufbau.typ_modus = mod_vtm_aufbau.partie_modus_lesen(web_partie.aufbau);
|
||||||
|
let klasse : string;
|
||||||
|
switch (modus)
|
||||||
|
{
|
||||||
|
case mod_vtm_aufbau.modus_initial:
|
||||||
|
{
|
||||||
|
klasse = "initial";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case mod_vtm_aufbau.modus_ungewiss:
|
||||||
|
{
|
||||||
|
klasse = (
|
||||||
|
web_partie.intervall.ist_schlicht()
|
||||||
|
? "ungewiss_laufend"
|
||||||
|
: "ungewiss_stehend"
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case mod_vtm_aufbau.modus_fehlerhaft:
|
||||||
|
case mod_vtm_aufbau.modus_korrekt:
|
||||||
|
{
|
||||||
|
klasse = "fertig";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.querySelector("#knoepfe").setAttribute("class", klasse);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_darstellen(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
web_partie_erneuern_aufgabe(web_partie);
|
||||||
|
web_partie_erneuern_welt(web_partie);
|
||||||
|
web_partie_erneuern_figur(web_partie);
|
||||||
|
web_partie_erneuern_modus(web_partie);
|
||||||
|
web_partie_erneuern_knoepfe(web_partie);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_anhalten(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
if (web_partie.intervall.ist_schlicht())
|
||||||
|
{
|
||||||
|
clearInterval(web_partie.intervall.lesen());
|
||||||
|
web_partie.intervall = (new klasse_nichts<any>());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let meldung : string = "kein Intervall gesetzt";
|
||||||
|
console.warn(meldung);
|
||||||
|
}
|
||||||
|
web_partie_erneuern_knoepfe(web_partie);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_fortfahren(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
mod_vtm_aufbau.partie_fortfahren(web_partie.aufbau);
|
||||||
|
let modus : mod_vtm_aufbau.typ_modus = mod_vtm_aufbau.partie_modus_lesen(web_partie.aufbau);
|
||||||
|
if (modus <= 1)
|
||||||
|
{
|
||||||
|
// nichts tun
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
web_partie_anhalten(web_partie);
|
||||||
|
}
|
||||||
|
web_partie_erneuern_knoepfe(web_partie);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_testen(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
let handle : any = setInterval(() => web_partie_fortfahren(web_partie), 500);
|
||||||
|
web_partie.intervall = (new klasse_schlicht<any>(handle));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_bearbeiten(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
web_partie_anhalten(web_partie);
|
||||||
|
mod_vtm_aufbau.partie_zuruecksetzen(web_partie.aufbau);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_leeren(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
mod_vtm_aufbau.partie_welt_leeren(web_partie.aufbau);
|
||||||
|
mod_vtm_aufbau.partie_zuruecksetzen(web_partie.aufbau);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function web_partie_binden(web_partie : typ_web_partie) : void
|
||||||
|
{
|
||||||
|
let stelle_ermitteln = (target : EventTarget) =>
|
||||||
|
{
|
||||||
|
let stelle : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle>;
|
||||||
|
let dom_feld : Element = target["closest"](".feld");
|
||||||
|
if (dom_feld == null)
|
||||||
|
{
|
||||||
|
stelle = (new klasse_nichts<mod_vtm_aufbau.typ_stelle>());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let meldung : string = "kein Intervall gesetzt";
|
let rel : string = dom_feld.getAttribute("rel")
|
||||||
console.warn(meldung);
|
stelle = (new klasse_schlicht<mod_vtm_aufbau.typ_stelle>(mod_vtm_aufbau.stelle_von_hash(rel)));
|
||||||
}
|
}
|
||||||
this.erneuern_knoepfe();
|
return stelle;
|
||||||
}
|
}
|
||||||
|
;
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
/**
|
(
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
web_partie.aufbau,
|
||||||
*/
|
"aenderung_aufgabe",
|
||||||
private fortfahren() : void
|
(angaben) =>
|
||||||
{
|
|
||||||
mod_vtm_aufbau.partie_fortfahren(this.aufbau);
|
|
||||||
let modus : mod_vtm_aufbau.typ_modus = mod_vtm_aufbau.partie_modus_lesen(this.aufbau);
|
|
||||||
if (modus <= 1)
|
|
||||||
{
|
{
|
||||||
// nichts tun
|
web_partie_erneuern_aufgabe(web_partie);
|
||||||
}
|
}
|
||||||
else
|
)
|
||||||
|
;
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
|
(
|
||||||
|
web_partie.aufbau,
|
||||||
|
"aenderung_welt",
|
||||||
|
(angaben) =>
|
||||||
{
|
{
|
||||||
this.anhalten();
|
web_partie_erneuern_welt(web_partie);
|
||||||
}
|
}
|
||||||
this.erneuern_knoepfe();
|
)
|
||||||
}
|
;
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
|
(
|
||||||
/**
|
web_partie.aufbau,
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
"aenderung_figur",
|
||||||
*/
|
(angaben) =>
|
||||||
private testen() : void
|
|
||||||
{
|
|
||||||
let handle : any = setInterval(() => this.fortfahren(), 500);
|
|
||||||
this.intervall = (new klasse_schlicht<any>(handle));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private bearbeiten() : void
|
|
||||||
{
|
|
||||||
this.anhalten();
|
|
||||||
mod_vtm_aufbau.partie_zuruecksetzen(this.aufbau);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
private leeren() : void
|
|
||||||
{
|
|
||||||
mod_vtm_aufbau.partie_welt_leeren(this.aufbau);
|
|
||||||
mod_vtm_aufbau.partie_zuruecksetzen(this.aufbau);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
* @implementation
|
|
||||||
*/
|
|
||||||
public binden() : void
|
|
||||||
{
|
|
||||||
let stelle_ermitteln = (target : EventTarget) =>
|
|
||||||
{
|
{
|
||||||
let stelle : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle>;
|
web_partie_erneuern_figur(web_partie);
|
||||||
let dom_feld : Element = target["closest"](".feld");
|
}
|
||||||
if (dom_feld == null)
|
)
|
||||||
|
;
|
||||||
|
mod_vtm_aufbau.partie_lauschen
|
||||||
|
(
|
||||||
|
web_partie.aufbau,
|
||||||
|
"aenderung_modus",
|
||||||
|
(angaben) =>
|
||||||
|
{
|
||||||
|
web_partie_erneuern_modus(web_partie);
|
||||||
|
web_partie_erneuern_knoepfe(web_partie);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
// Links-Klick
|
||||||
|
web_partie.bereich.addEventListener
|
||||||
|
(
|
||||||
|
"click",
|
||||||
|
event =>
|
||||||
|
{
|
||||||
|
event.preventDefault();
|
||||||
|
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target);
|
||||||
|
if (stelle_.ist_schlicht())
|
||||||
{
|
{
|
||||||
stelle = (new klasse_nichts<mod_vtm_aufbau.typ_stelle>());
|
mod_vtm_aufbau.partie_welt_feld_wechseln(web_partie.aufbau, stelle_.lesen(), false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let rel : string = dom_feld.getAttribute("rel")
|
console.info("-- kein Feld");
|
||||||
stelle = (new klasse_schlicht<mod_vtm_aufbau.typ_stelle>(mod_vtm_aufbau.stelle_von_hash(rel)));
|
|
||||||
}
|
}
|
||||||
return stelle;
|
|
||||||
}
|
}
|
||||||
;
|
)
|
||||||
// Links-Klick
|
;
|
||||||
this.bereich.addEventListener
|
// Rechts-Klick
|
||||||
(
|
web_partie.bereich.addEventListener
|
||||||
"click",
|
(
|
||||||
event =>
|
"contextmenu",
|
||||||
|
event =>
|
||||||
|
{
|
||||||
|
event.preventDefault();
|
||||||
|
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target);
|
||||||
|
if (stelle_.ist_schlicht())
|
||||||
{
|
{
|
||||||
event.preventDefault();
|
mod_vtm_aufbau.partie_welt_feld_wechseln(web_partie.aufbau, stelle_.lesen(), true);
|
||||||
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target);
|
|
||||||
if (stelle_.ist_schlicht())
|
|
||||||
{
|
|
||||||
mod_vtm_aufbau.partie_welt_feld_wechseln(this.aufbau, stelle_.lesen(), false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
console.info("-- kein Feld");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
else
|
||||||
;
|
|
||||||
// Rechts-Klick
|
|
||||||
this.bereich.addEventListener
|
|
||||||
(
|
|
||||||
"contextmenu",
|
|
||||||
event =>
|
|
||||||
{
|
{
|
||||||
event.preventDefault();
|
console.info("-- kein Feld");
|
||||||
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target);
|
|
||||||
if (stelle_.ist_schlicht())
|
|
||||||
{
|
|
||||||
mod_vtm_aufbau.partie_welt_feld_wechseln(this.aufbau, stelle_.lesen(), true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
console.info("-- kein Feld");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
}
|
||||||
;
|
)
|
||||||
// Mausrad
|
;
|
||||||
this.bereich.addEventListener
|
// Mausrad
|
||||||
(
|
web_partie.bereich.addEventListener
|
||||||
"wheel",
|
(
|
||||||
event =>
|
"wheel",
|
||||||
|
event =>
|
||||||
|
{
|
||||||
|
event.preventDefault();
|
||||||
|
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target);
|
||||||
|
if (stelle_.ist_schlicht())
|
||||||
{
|
{
|
||||||
event.preventDefault();
|
let inkrement : int = ((event["deltaY"] < 0) ? -1 : +1);
|
||||||
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target);
|
mod_vtm_aufbau.partie_welt_feld_drehen(web_partie.aufbau, stelle_.lesen(), inkrement);
|
||||||
if (stelle_.ist_schlicht())
|
|
||||||
{
|
|
||||||
let inkrement : int = ((event["deltaY"] < 0) ? -1 : +1);
|
|
||||||
mod_vtm_aufbau.partie_welt_feld_drehen(this.aufbau, stelle_.lesen(), inkrement);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
console.info("-- kein Feld");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
else
|
||||||
;
|
|
||||||
// Schritt
|
|
||||||
document.querySelector("#knopf_schritt").addEventListener
|
|
||||||
(
|
|
||||||
"click",
|
|
||||||
event =>
|
|
||||||
{
|
{
|
||||||
this.anhalten();
|
console.info("-- kein Feld");
|
||||||
this.fortfahren();
|
|
||||||
}
|
}
|
||||||
)
|
}
|
||||||
;
|
)
|
||||||
// Testen
|
;
|
||||||
document.querySelector("#knopf_testen").addEventListener
|
// Schritt
|
||||||
(
|
document.querySelector("#knopf_schritt").addEventListener
|
||||||
"click",
|
(
|
||||||
event =>
|
"click",
|
||||||
{
|
event =>
|
||||||
this.testen();
|
{
|
||||||
}
|
web_partie_anhalten(web_partie);
|
||||||
)
|
web_partie_fortfahren(web_partie);
|
||||||
;
|
}
|
||||||
// Anhalten
|
)
|
||||||
document.querySelector("#knopf_anhalten").addEventListener
|
;
|
||||||
(
|
// Testen
|
||||||
"click",
|
document.querySelector("#knopf_testen").addEventListener
|
||||||
event =>
|
(
|
||||||
{
|
"click",
|
||||||
this.anhalten();
|
event =>
|
||||||
}
|
{
|
||||||
)
|
web_partie_testen(web_partie);
|
||||||
;
|
}
|
||||||
// Bearbeiten
|
)
|
||||||
document.querySelector("#knopf_bearbeiten").addEventListener
|
;
|
||||||
(
|
// Anhalten
|
||||||
"click",
|
document.querySelector("#knopf_anhalten").addEventListener
|
||||||
event =>
|
(
|
||||||
{
|
"click",
|
||||||
this.bearbeiten();
|
event =>
|
||||||
}
|
{
|
||||||
)
|
web_partie_anhalten(web_partie);
|
||||||
;
|
}
|
||||||
// Leeren
|
)
|
||||||
document.querySelector("#knopf_leeren").addEventListener
|
;
|
||||||
(
|
// Bearbeiten
|
||||||
"click",
|
document.querySelector("#knopf_bearbeiten").addEventListener
|
||||||
event =>
|
(
|
||||||
{
|
"click",
|
||||||
this.leeren();
|
event =>
|
||||||
}
|
{
|
||||||
)
|
web_partie_bearbeiten(web_partie);
|
||||||
;
|
}
|
||||||
}
|
)
|
||||||
|
;
|
||||||
|
// Leeren
|
||||||
|
document.querySelector("#knopf_leeren").addEventListener
|
||||||
|
(
|
||||||
|
"click",
|
||||||
|
event =>
|
||||||
|
{
|
||||||
|
web_partie_leeren(web_partie);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
implementierung_manifestation["web_partie"] =
|
||||||
|
{
|
||||||
|
"darstellen": (manifestation) => web_partie_darstellen(manifestation.angaben),
|
||||||
|
"binden": (manifestation) => web_partie_binden(manifestation.angaben),
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue