zwischenspeicherung

This commit is contained in:
Christian Fraß 2018-03-26 14:22:20 +02:00
parent 48b556057c
commit 494d9822ba
18 changed files with 2223 additions and 2022 deletions

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_aufbau module mod_vtm
{
export module mod_aufbau
{
export module mod_akzeptoraufgabe
{ {
/** /**
@ -27,7 +33,7 @@ module mod_vtm_aufbau
id : string; id : string;
titel : string; titel : string;
text : string; text : string;
tests : Array<typ_akzeptortest>; tests : Array<mod_akzeptortest.typ_akzeptortest>;
} }
; ;
@ -35,12 +41,12 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptoraufgabe_erstellen export function erstellen
( (
id : string, id : string,
titel : string, titel : string,
text : string, text : string,
tests : Array<typ_akzeptortest> tests : Array<mod_akzeptortest.typ_akzeptortest>
) )
: typ_akzeptoraufgabe : typ_akzeptoraufgabe
{ {
@ -56,7 +62,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptoraufgabe_id export function id
( (
akzeptoraufgabe : typ_akzeptoraufgabe akzeptoraufgabe : typ_akzeptoraufgabe
) )
@ -69,7 +75,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptoraufgabe_titel export function titel
( (
akzeptoraufgabe : typ_akzeptoraufgabe akzeptoraufgabe : typ_akzeptoraufgabe
) )
@ -82,7 +88,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptoraufgabe_text export function text
( (
akzeptoraufgabe : typ_akzeptoraufgabe akzeptoraufgabe : typ_akzeptoraufgabe
) )
@ -95,14 +101,18 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptoraufgabe_tests export function tests
( (
akzeptoraufgabe : typ_akzeptoraufgabe akzeptoraufgabe : typ_akzeptoraufgabe
) )
: Array<typ_akzeptortest> : Array<mod_akzeptortest.typ_akzeptortest>
{ {
return akzeptoraufgabe.tests; return akzeptoraufgabe.tests;
} }
} }
}
}

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_aufbau module mod_vtm
{
export module mod_aufbau
{
export module mod_akzeptortest
{ {
/** /**
@ -33,7 +39,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptortest_erstellen export function erstellen
( (
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>, eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>,
annehmen : boolean annehmen : boolean
@ -50,7 +56,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptortest_eingabe export function eingabe
( (
akzeptortest : typ_akzeptortest akzeptortest : typ_akzeptortest
) )
@ -63,7 +69,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function akzeptortest_pruefen export function pruefen
( (
akzeptortest : typ_akzeptortest, akzeptortest : typ_akzeptortest,
angenommen : boolean, angenommen : boolean,
@ -76,3 +82,7 @@ module mod_vtm_aufbau
} }
}
}

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_aufbau module mod_vtm
{
export module mod_aufbau
{
export module mod_aufgabe
{ {
/** /**
@ -34,7 +40,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_id export function id
( (
aufgabe : typ_aufgabe aufgabe : typ_aufgabe
) )
@ -45,8 +51,8 @@ module mod_vtm_aufbau
( (
aufgabe, aufgabe,
{ {
"akzeptoraufgabe": (angaben) => akzeptoraufgabe_id(angaben), "akzeptoraufgabe": (angaben) => mod_akzeptoraufgabe.id(angaben),
"transduktoraufgabe": (angaben) => transduktoraufgabe_id(angaben), "transduktoraufgabe": (angaben) => mod_transduktoraufgabe.id(angaben),
} }
) )
); );
@ -56,7 +62,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_titel export function titel
( (
aufgabe : typ_aufgabe aufgabe : typ_aufgabe
) )
@ -67,8 +73,8 @@ module mod_vtm_aufbau
( (
aufgabe, aufgabe,
{ {
"akzeptoraufgabe": (angaben) => akzeptoraufgabe_titel(angaben), "akzeptoraufgabe": (angaben) => mod_akzeptoraufgabe.titel(angaben),
"transduktoraufgabe": (angaben) => transduktoraufgabe_titel(angaben), "transduktoraufgabe": (angaben) => mod_transduktoraufgabe.titel(angaben),
} }
) )
); );
@ -78,7 +84,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_text export function text
( (
aufgabe : typ_aufgabe aufgabe : typ_aufgabe
) )
@ -89,8 +95,8 @@ module mod_vtm_aufbau
( (
aufgabe, aufgabe,
{ {
"akzeptoraufgabe": (angaben) => akzeptoraufgabe_text(angaben), "akzeptoraufgabe": (angaben) => mod_akzeptoraufgabe.text(angaben),
"transduktoraufgabe": (angaben) => transduktoraufgabe_text(angaben), "transduktoraufgabe": (angaben) => mod_transduktoraufgabe.text(angaben),
} }
) )
); );
@ -100,23 +106,23 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_tests export function tests
( (
aufgabe : typ_aufgabe aufgabe : typ_aufgabe
) )
: Array<typ_test> : Array<mod_test.typ_test>
{ {
return ( return (
fallunterscheidung<Array<typ_test>> fallunterscheidung<Array<mod_test.typ_test>>
( (
aufgabe, aufgabe,
{ {
"akzeptoraufgabe": (angaben) => ( "akzeptoraufgabe": (angaben) => (
akzeptoraufgabe_tests(angaben) mod_akzeptoraufgabe.tests(angaben)
.map(angaben_ => ({"art": "akzeptortest", "angaben": angaben_})) .map(angaben_ => ({"art": "akzeptortest", "angaben": angaben_}))
), ),
"transduktoraufgabe": (angaben) => ( "transduktoraufgabe": (angaben) => (
transduktoraufgabe_tests(angaben) mod_transduktoraufgabe.tests(angaben)
.map(angaben_ => ({"art": "transduktortest", "angaben": angaben_})) .map(angaben_ => ({"art": "transduktortest", "angaben": angaben_}))
), ),
} }
@ -128,7 +134,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_importieren(aufgabe_roh : any) : typ_aufgabe export function importieren(aufgabe_roh : any) : typ_aufgabe
{ {
switch (aufgabe_roh["art"]) switch (aufgabe_roh["art"])
{ {
@ -137,7 +143,7 @@ module mod_vtm_aufbau
return { return {
"art": "akzeptoraufgabe", "art": "akzeptoraufgabe",
"angaben": ( "angaben": (
akzeptoraufgabe_erstellen mod_akzeptoraufgabe.erstellen
( (
aufgabe_roh["id"], aufgabe_roh["id"],
aufgabe_roh["parameter"]["titel"], aufgabe_roh["parameter"]["titel"],
@ -145,7 +151,7 @@ module mod_vtm_aufbau
aufgabe_roh["parameter"]["tests"].map aufgabe_roh["parameter"]["tests"].map
( (
test_roh => ( test_roh => (
akzeptortest_erstellen mod_akzeptortest.erstellen
( (
test_roh["eingabe"], test_roh["eingabe"],
test_roh["annehmen"] test_roh["annehmen"]
@ -162,7 +168,7 @@ module mod_vtm_aufbau
return { return {
"art": "transduktoraufgabe", "art": "transduktoraufgabe",
"angaben": ( "angaben": (
transduktoraufgabe_erstellen mod_transduktoraufgabe.erstellen
( (
aufgabe_roh["id"], aufgabe_roh["id"],
aufgabe_roh["parameter"]["titel"], aufgabe_roh["parameter"]["titel"],
@ -170,7 +176,7 @@ module mod_vtm_aufbau
aufgabe_roh["parameter"]["tests"].map aufgabe_roh["parameter"]["tests"].map
( (
test_roh => ( test_roh => (
transduktortest_erstellen mod_transduktortest.erstellen
( (
test_roh["eingabe"], test_roh["eingabe"],
test_roh["ausgabe"] test_roh["ausgabe"]
@ -195,7 +201,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_registrieren(aufgabe : typ_aufgabe) : void export function registrieren(aufgabe : typ_aufgabe) : void
{ {
_liste.push(aufgabe); _liste.push(aufgabe);
} }
@ -204,10 +210,14 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_holen(index : int) : typ_aufgabe export function holen(index : int) : typ_aufgabe
{ {
return _liste[index]; return _liste[index];
} }
} }
}
}

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_aufbau module mod_vtm
{
export module mod_aufbau
{
export module mod_test
{ {
/** /**
@ -28,7 +34,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function test_eingabe export function eingabe
( (
test : typ_test test : typ_test
) )
@ -39,8 +45,8 @@ module mod_vtm_aufbau
( (
test, test,
{ {
"akzeptortest": (angaben) => akzeptortest_eingabe(angaben), "akzeptortest": (angaben) => mod_akzeptortest.eingabe(angaben),
"transduktortest": (angaben) => transduktortest_eingabe(angaben), "transduktortest": (angaben) => mod_transduktortest.eingabe(angaben),
} }
) )
); );
@ -50,7 +56,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function test_pruefen export function pruefen
( (
test : typ_test, test : typ_test,
angenommen : boolean, angenommen : boolean,
@ -63,8 +69,8 @@ module mod_vtm_aufbau
( (
test, test,
{ {
"akzeptortest": (angaben) => akzeptortest_pruefen(angaben, angenommen, ausgabe), "akzeptortest": (angaben) => mod_akzeptortest.pruefen(angaben, angenommen, ausgabe),
"transduktortest": (angaben) => transduktortest_pruefen(angaben, angenommen, ausgabe), "transduktortest": (angaben) => mod_transduktortest.pruefen(angaben, angenommen, ausgabe),
} }
) )
); );
@ -74,7 +80,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function test_importieren export function importieren
( (
test_roh : any test_roh : any
) )
@ -87,7 +93,7 @@ module mod_vtm_aufbau
return { return {
"art": "akzeptortest", "art": "akzeptortest",
"angaben": ( "angaben": (
akzeptortest_erstellen mod_akzeptortest.erstellen
( (
test_roh["angaben"]["eingabe"], test_roh["angaben"]["eingabe"],
test_roh["angaben"]["annehmen"] test_roh["angaben"]["annehmen"]
@ -101,7 +107,7 @@ module mod_vtm_aufbau
return { return {
"art": "transduktortest", "art": "transduktortest",
"angaben": ( "angaben": (
transduktortest_erstellen mod_transduktortest.erstellen
( (
test_roh["angaben"]["eingabe"], test_roh["angaben"]["eingabe"],
test_roh["angaben"]["ausgabe"] test_roh["angaben"]["ausgabe"]
@ -120,3 +126,7 @@ module mod_vtm_aufbau
} }
}
}

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_aufbau module mod_vtm
{
export module mod_aufbau
{
export module mod_transduktoraufgabe
{ {
/** /**
@ -27,7 +33,7 @@ module mod_vtm_aufbau
id : string; id : string;
titel : string; titel : string;
text : string; text : string;
tests : Array<typ_transduktortest>; tests : Array<mod_transduktortest.typ_transduktortest>;
} }
; ;
@ -35,12 +41,12 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktoraufgabe_erstellen export function erstellen
( (
id : string, id : string,
titel : string, titel : string,
text : string, text : string,
tests : Array<typ_transduktortest> tests : Array<mod_transduktortest.typ_transduktortest>
) )
: typ_transduktoraufgabe : typ_transduktoraufgabe
{ {
@ -56,7 +62,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktoraufgabe_id export function id
( (
transduktoraufgabe : typ_transduktoraufgabe transduktoraufgabe : typ_transduktoraufgabe
) )
@ -69,7 +75,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktoraufgabe_titel export function titel
( (
transduktoraufgabe : typ_transduktoraufgabe transduktoraufgabe : typ_transduktoraufgabe
) )
@ -82,7 +88,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktoraufgabe_text export function text
( (
transduktoraufgabe : typ_transduktoraufgabe transduktoraufgabe : typ_transduktoraufgabe
) )
@ -95,14 +101,18 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktoraufgabe_tests export function tests
( (
transduktoraufgabe : typ_transduktoraufgabe transduktoraufgabe : typ_transduktoraufgabe
) )
: Array<typ_transduktortest> : Array<mod_transduktortest.typ_transduktortest>
{ {
return transduktoraufgabe.tests; return transduktoraufgabe.tests;
} }
} }
}
}

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_aufbau module mod_vtm
{
export module mod_aufbau
{
export module mod_transduktortest
{ {
/** /**
@ -33,7 +39,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktortest_erstellen export function erstellen
( (
eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>, eingabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>,
ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol> ausgabe : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>
@ -50,7 +56,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktortest_eingabe export function eingabe
( (
transduktortest : typ_transduktortest transduktortest : typ_transduktortest
) )
@ -63,7 +69,7 @@ module mod_vtm_aufbau
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function transduktortest_pruefen export function pruefen
( (
transduktortest : typ_transduktortest, transduktortest : typ_transduktortest,
angenommen : boolean, angenommen : boolean,
@ -96,3 +102,6 @@ module mod_vtm_aufbau
} }
}
}

View file

@ -32,7 +32,7 @@ module mod_vtm
{ {
welt : mod_welt.typ_welt; welt : mod_welt.typ_welt;
figur : schnittstelle_fehlermonade<mod_figur.typ_figur>; figur : schnittstelle_fehlermonade<mod_figur.typ_figur>;
aufgabe : mod_vtm_aufbau.typ_aufgabe; aufgabe : mod_aufgabe.typ_aufgabe;
testindex : schnittstelle_fehlermonade<int>; testindex : schnittstelle_fehlermonade<int>;
modus : mod_modus.typ_modus; modus : mod_modus.typ_modus;
lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>}; lauscher : {[ereignis : string] : Array<(angaben ?: any)=>void>};
@ -45,7 +45,7 @@ module mod_vtm
*/ */
export function erstellen export function erstellen
( (
aufgabe : mod_vtm_aufbau.typ_aufgabe aufgabe : mod_aufgabe.typ_aufgabe
) )
: typ_partie : typ_partie
{ {
@ -133,7 +133,7 @@ module mod_vtm
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_lesen(partie : typ_partie) : mod_vtm_aufbau.typ_aufgabe export function aufgabe_lesen(partie : typ_partie) : mod_aufgabe.typ_aufgabe
{ {
return partie.aufgabe; return partie.aufgabe;
} }
@ -142,7 +142,7 @@ module mod_vtm
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function aufgabe_setzen(partie : typ_partie, aufgabe : mod_vtm_aufbau.typ_aufgabe) : void export function aufgabe_setzen(partie : typ_partie, aufgabe : mod_aufgabe.typ_aufgabe) : void
{ {
partie.aufgabe = aufgabe; partie.aufgabe = aufgabe;
// partie.welt_leeren(); // partie.welt_leeren();
@ -278,8 +278,8 @@ module mod_vtm
{ {
if (! partie.figur.ist_schlicht()) if (! partie.figur.ist_schlicht())
{ {
let test : mod_vtm_aufbau.typ_test = mod_vtm_aufbau.aufgabe_tests(partie.aufgabe)[partie.testindex.lesen()]; let test : mod_test.typ_test = mod_aufgabe.tests(partie.aufgabe)[partie.testindex.lesen()];
let band : Array<mod_symbol.typ_symbol> = mod_vtm_helfer.liste_kopieren<mod_symbol.typ_symbol>(mod_vtm_aufbau.test_eingabe(test)); let band : Array<mod_symbol.typ_symbol> = mod_vtm_helfer.liste_kopieren<mod_symbol.typ_symbol>(mod_test.eingabe(test));
let stelle : mod_stelle.typ_stelle = mod_welt.erzeuger_finden(partie.welt); let stelle : mod_stelle.typ_stelle = mod_welt.erzeuger_finden(partie.welt);
partie.figur = ( partie.figur = (
new klasse_schlicht<mod_figur.typ_figur> new klasse_schlicht<mod_figur.typ_figur>
@ -310,9 +310,9 @@ module mod_vtm
let ausgabe : Array<mod_symbol.typ_symbol> = mod_figur.band_lesen(figur); let ausgabe : Array<mod_symbol.typ_symbol> = mod_figur.band_lesen(figur);
partie.figur = (new klasse_nichts<mod_figur.typ_figur>()); partie.figur = (new klasse_nichts<mod_figur.typ_figur>());
let testindex : int = partie.testindex.lesen(); let testindex : int = partie.testindex.lesen();
let tests : Array<mod_vtm_aufbau.typ_test> = mod_vtm_aufbau.aufgabe_tests(partie.aufgabe); let tests : Array<mod_test.typ_test> = mod_aufgabe.tests(partie.aufgabe);
let test : mod_vtm_aufbau.typ_test = tests[testindex]; let test : mod_test.typ_test = tests[testindex];
if (! mod_vtm_aufbau.test_pruefen(test, angenommen, ausgabe)) if (! mod_test.pruefen(test, angenommen, ausgabe))
{ {
partie.modus = mod_modus.fehlerhaft; partie.modus = mod_modus.fehlerhaft;
benachrichtigen(partie, "aenderung_modus", {}); benachrichtigen(partie, "aenderung_modus", {});

View file

@ -16,10 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
/** module mod_vtm
{
/**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.typ_aufgabe)=>void) : void function aufgaben_eintragen(behandler : (aufgabe : mod_aufbau.mod_aufgabe.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,8 +35,8 @@ function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.typ_aufgabe)=>
{ {
// Aufgabe registrieren // Aufgabe registrieren
{ {
let aufgabe : mod_vtm_aufbau.typ_aufgabe = mod_vtm_aufbau.aufgabe_importieren(aufgabe_roh); let aufgabe : mod_aufbau.mod_aufgabe.typ_aufgabe = mod_aufbau.mod_aufgabe.importieren(aufgabe_roh);
mod_vtm_aufbau.aufgabe_registrieren(aufgabe); mod_aufbau.mod_aufgabe.registrieren(aufgabe);
} }
// Option eintragen // Option eintragen
{ {
@ -60,7 +63,7 @@ function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.typ_aufgabe)=>
{ {
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.typ_aufgabe = mod_vtm_aufbau.aufgabe_holen(index); let aufgabe : mod_aufbau.mod_aufgabe.typ_aufgabe = mod_aufbau.mod_aufgabe.holen(index);
behandler(aufgabe); behandler(aufgabe);
} }
) )
@ -73,10 +76,10 @@ function aufgaben_eintragen(behandler : (aufgabe : mod_vtm_aufbau.typ_aufgabe)=>
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function haupt() : void function haupt() : void
{ {
// Übersetzungen // Übersetzungen
{ {
@ -115,27 +118,27 @@ function haupt() : void
let hoehe : float = 80; let hoehe : float = 80;
[ [
{ {
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("erzeuger"), "aufbau": mod_aufbau.mod_aktor.beispiel("erzeuger"),
"bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"), "bereich": document.querySelector("#hilfe_aktoren_aktor_erzeuger"),
}, },
{ {
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("annehmer"), "aufbau": mod_aufbau.mod_aktor.beispiel("annehmer"),
"bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"), "bereich": document.querySelector("#hilfe_aktoren_aktor_annehmer"),
}, },
{ {
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("verwerfer"), "aufbau": mod_aufbau.mod_aktor.beispiel("verwerfer"),
"bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"), "bereich": document.querySelector("#hilfe_aktoren_aktor_verwerfer"),
}, },
{ {
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("befoerderer"), "aufbau": mod_aufbau.mod_aktor.beispiel("befoerderer"),
"bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"), "bereich": document.querySelector("#hilfe_aktoren_aktor_befoerderer"),
}, },
{ {
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("schreiber"), "aufbau": mod_aufbau.mod_aktor.beispiel("schreiber"),
"bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"), "bereich": document.querySelector("#hilfe_aktoren_aktor_schreiber"),
}, },
{ {
"aufbau": mod_vtm.mod_aufbau.mod_aktor.beispiel("leser"), "aufbau": mod_aufbau.mod_aktor.beispiel("leser"),
"bereich": document.querySelector("#hilfe_aktoren_aktor_leser"), "bereich": document.querySelector("#hilfe_aktoren_aktor_leser"),
}, },
] ]
@ -144,19 +147,19 @@ function haupt() : void
eintrag => eintrag =>
{ {
let manifestor = ( let manifestor = (
mod_vtm_manifestation.svg_aktor_erstellen_manifestation mod_manifestation.mod_svg.mod_aktor.erstellen_manifestation
( (
eintrag.aufbau, eintrag.aufbau,
mod_vtm.mod_aufbau.mod_stelle.null_() mod_aufbau.mod_stelle.null_()
) )
); );
let xmlknoten : mod_vtm_helfer.typ_xmlknoten = ( let xmlknoten : mod_vtm_helfer.typ_xmlknoten = (
mod_vtm_manifestation.svg_wurzel mod_manifestation.mod_svg.wurzel
( (
von_x, von_y, von_x, von_y,
bis_x, bis_y, bis_x, bis_y,
breite, hoehe, breite, hoehe,
[mod_vtm_manifestation.manifestation_darstellen(manifestor)] [mod_manifestation.darstellen(manifestor)]
) )
); );
eintrag.bereich.querySelector(".hilfe_aktoren_aktor_bild").innerHTML = mod_vtm_helfer.xmlknoten_darstellen(xmlknoten); eintrag.bereich.querySelector(".hilfe_aktoren_aktor_bild").innerHTML = mod_vtm_helfer.xmlknoten_darstellen(xmlknoten);
@ -168,38 +171,44 @@ function haupt() : void
} }
// Spiel // Spiel
{ {
let aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie; let partie : mod_aufbau.mod_partie.typ_partie;
// Aufgaben
{
aufgaben_eintragen aufgaben_eintragen
( (
function (aufgabe : mod_vtm_aufbau.typ_aufgabe) : void {mod_vtm.mod_aufbau.mod_partie.aufgabe_setzen(aufbau, aufgabe);} function (aufgabe : mod_aufbau.mod_aufgabe.typ_aufgabe) : void {mod_aufbau.mod_partie.aufgabe_setzen(partie, aufgabe);}
) )
; ;
aufbau = mod_vtm.mod_aufbau.mod_partie.erstellen(mod_vtm_aufbau.aufgabe_holen(0)); partie = mod_aufbau.mod_partie.erstellen(mod_aufbau.mod_aufgabe.holen(0));
mod_vtm_manifestation.manifestation_einrichten }
// Partie
{
mod_manifestation.einrichten
( (
mod_vtm_manifestation.web_partie_erstellen_erweitert mod_manifestation.mod_web.mod_partie.erstellen_erweitert
( (
aufbau, partie,
document.querySelector("#bereich_mitte") document.querySelector("#bereich_mitte")
) )
) )
; ;
mod_vtm_manifestation.manifestation_einrichten mod_manifestation.einrichten
( (
mod_vtm_manifestation.speicher_partie_erstellen_erweitert mod_manifestation.mod_speicher.mod_partie.erstellen_erweitert
( (
aufbau partie
) )
) )
; ;
} }
} }
}
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function eingang_web() : void export function eingang_web() : void
{ {
document.addEventListener document.addEventListener
( (
@ -209,3 +218,5 @@ function eingang_web() : void
; ;
} }
}

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_helfer module mod_vtm
{
export module mod_helfer
{
export module mod_vektor
{ {
/** /**
@ -28,7 +34,7 @@ module mod_vtm_helfer
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function vektor_polar(winkel : float, radius : float = 1) : typ_vektor export function polar(winkel : float, radius : float = 1) : typ_vektor
{ {
return {"x": (radius * Math.cos(winkel)), "y": (radius * Math.sin(winkel))}; return {"x": (radius * Math.cos(winkel)), "y": (radius * Math.sin(winkel))};
} }
@ -37,7 +43,7 @@ module mod_vtm_helfer
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function vektor_skalieren(vektor : typ_vektor, faktor : float) : typ_vektor export function skalieren(vektor : typ_vektor, faktor : float) : typ_vektor
{ {
return {"x": (vektor.x * faktor), "y": (vektor.y * faktor)}; return {"x": (vektor.x * faktor), "y": (vektor.y * faktor)};
} }
@ -46,10 +52,14 @@ module mod_vtm_helfer
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function vektor_addieren(vektor1 : typ_vektor, vektor2 : typ_vektor) : typ_vektor export function addieren(vektor1 : typ_vektor, vektor2 : typ_vektor) : typ_vektor
{ {
return {"x": (vektor1.x + vektor2.x), "y": (vektor1.y + vektor2.y)}; return {"x": (vektor1.x + vektor2.x), "y": (vektor1.y + vektor2.y)};
} }
} }
}
}

View file

@ -16,7 +16,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{ {
/** /**
@ -45,7 +48,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function manifestation_darstellen<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : typ_ausgabe export function darstellen<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : typ_ausgabe
{ {
return implementierung_manifestation[manifestation.art].darstellen(manifestation); return implementierung_manifestation[manifestation.art].darstellen(manifestation);
} }
@ -54,7 +57,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function manifestation_binden<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : void export function binden<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : void
{ {
return implementierung_manifestation[manifestation.art].binden(manifestation); return implementierung_manifestation[manifestation.art].binden(manifestation);
} }
@ -63,10 +66,12 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function manifestation_einrichten<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : void export function einrichten<typ_aufbau, typ_ausgabe>(manifestation : typ_manifestation<typ_aufbau>) : void
{ {
manifestation_darstellen<typ_aufbau, typ_ausgabe>(manifestation); darstellen<typ_aufbau, typ_ausgabe>(manifestation);
manifestation_binden<typ_aufbau, typ_ausgabe>(manifestation); binden<typ_aufbau, typ_ausgabe>(manifestation);
}
} }
} }

View file

@ -16,7 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{
export module mod_position
{ {
/** /**
@ -28,23 +34,27 @@ 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) * (2*Math.PI)); var 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) * (2*Math.PI)); var basis2 : typ_position = mod_vtm_helfer.vektor_polar((2/6) * (2*Math.PI));
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function position_von_stelle(stelle : mod_vtm_aufbau.typ_stelle) : typ_position export function von_stelle(stelle : mod_vtm.mod_aufbau.mod_stelle.typ_stelle) : typ_position
{ {
return ( return (
mod_vtm_helfer.vektor_addieren mod_vtm_helfer.vektor_addieren
( (
mod_vtm_helfer.vektor_skalieren(position_basis1, stelle.u), mod_vtm_helfer.vektor_skalieren(basis1, stelle.u),
mod_vtm_helfer.vektor_skalieren(position_basis2, stelle.v) mod_vtm_helfer.vektor_skalieren(basis2, stelle.v)
) )
); );
} }
} }
}
}

View file

@ -16,15 +16,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{
export module mod_speicher
{
export module mod_partie
{ {
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export type typ_speicher_partie = export type typ_partie =
{ {
aufbau : mod_vtm_aufbau.typ_partie; aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie;
} }
; ;
@ -32,11 +41,11 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function speicher_partie_erstellen export function erstellen
( (
aufbau : mod_vtm_aufbau.typ_partie aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie
) )
: typ_speicher_partie : typ_partie
{ {
return { return {
"aufbau": aufbau "aufbau": aufbau
@ -47,15 +56,15 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function speicher_partie_erstellen_erweitert export function erstellen_erweitert
( (
aufbau : mod_vtm_aufbau.typ_partie aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie
) )
: typ_manifestation<mod_vtm_aufbau.typ_partie> : typ_manifestation<mod_vtm.mod_aufbau.mod_partie.typ_partie>
{ {
return { return {
"art": "speicher_partie", "art": "partie",
"angaben": speicher_partie_erstellen(aufbau) "angaben": erstellen(aufbau)
}; };
} }
@ -63,7 +72,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function speicher_partie_darstellen(speicher_partie : typ_speicher_partie) : void function darstellen(partie : typ_partie) : void
{ {
} }
@ -71,47 +80,54 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function speicher_partie_binden(speicher_partie : typ_speicher_partie) : void function binden(partie : typ_partie) : void
{ {
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
this.aufbau, partie.aufbau,
"aenderung_aufgabe", "aenderung_aufgabe",
(angaben) => (angaben) =>
{ {
// console.info("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 aufgabe : mod_vtm.mod_aufbau.mod_aufgabe.typ_aufgabe = mod_vtm.mod_aufbau.mod_partie.aufgabe_lesen(partie.aufbau);
let id : string = mod_vtm.mod_aufbau.mod_aufgabe.id(aufgabe);
let key : string = ("vtm_" + id); let key : string = ("vtm_" + id);
//
if (key in localStorage) if (key in localStorage)
{ {
let item : string = localStorage.getItem(key); let item : string = localStorage.getItem(key);
let welt : mod_vtm_aufbau.typ_welt = mod_vtm_aufbau.welt_importieren(JSON.parse(item)); let welt_ : any = JSON.parse(item);
mod_vtm_aufbau.partie_welt_setzen(this.aufbau, welt, false); let welt : mod_vtm.mod_aufbau.mod_welt.typ_welt = mod_vtm.mod_aufbau.mod_welt.importieren(welt_);
mod_vtm.mod_aufbau.mod_partie.welt_setzen(partie.aufbau, welt, false);
} }
else else
{ {
mod_vtm_aufbau.partie_welt_leeren(this.aufbau); mod_vtm.mod_aufbau.mod_partie.welt_leeren(partie.aufbau);
// nichts tun // nichts tun
} }
} }
) )
; ;
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
this.aufbau, partie.aufbau,
"aenderung_welt", "aenderung_welt",
(angaben) => (angaben) =>
{ {
let id : string = mod_vtm_aufbau.aufgabe_id(mod_vtm_aufbau.partie_aufgabe_lesen(this.aufbau)) let aufgabe : mod_vtm.mod_aufbau.mod_aufgabe.typ_aufgabe = mod_vtm.mod_aufbau.mod_partie.aufgabe_lesen(partie.aufbau);
let id : string = mod_vtm.mod_aufbau.mod_aufgabe.id(aufgabe);
let key : string = ("vtm_" + id); let key : string = ("vtm_" + id);
let item : string = JSON.stringify(mod_vtm_aufbau.welt_exportieren(mod_vtm_aufbau.partie_welt_lesen(this.aufbau))); //
let welt : mod_vtm.mod_aufbau.mod_welt.typ_welt = mod_vtm.mod_aufbau.mod_partie.welt_lesen(partie.aufbau);
let welt_ : any = mod_vtm.mod_aufbau.mod_welt.exportieren(welt);
let item : string = JSON.stringify(welt_);
localStorage.setItem(key, item); localStorage.setItem(key, item);
} }
) )
; ;
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
this.aufbau, partie.aufbau,
"aenderung_figur", "aenderung_figur",
(angaben) => (angaben) =>
{ {
@ -119,9 +135,9 @@ module mod_vtm_manifestation
} }
) )
; ;
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
this.aufbau, partie.aufbau,
"aenderung_modus", "aenderung_modus",
(angaben) => (angaben) =>
{ {
@ -135,12 +151,18 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
implementierung_manifestation["speicher_partie"] = implementierung_manifestation["partie"] =
{ {
"darstellen": (manifestation) => speicher_partie_darstellen(manifestation.angaben), "darstellen": (manifestation) => darstellen(manifestation.angaben),
"binden": (manifestation) => speicher_partie_binden(manifestation.angaben), "binden": (manifestation) => binden(manifestation.angaben),
} }
; ;
} }
}
}
}

View file

@ -16,16 +16,25 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{
export module mod_svg
{
export module mod_aktor
{ {
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export type typ_svg_aktor = export type typ_aktor =
{ {
aufbau : mod_vtm_aufbau.typ_aktor; aufbau : mod_vtm.mod_aufbau.mod_aktor.typ_aktor;
stelle : mod_vtm_aufbau.typ_stelle; stelle : mod_vtm.mod_aufbau.mod_stelle.typ_stelle;
} }
; ;
@ -33,12 +42,12 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_aktor_erstellen function erstellen
( (
aufbau : mod_vtm_aufbau.typ_aktor, aufbau : mod_vtm.mod_aufbau.mod_aktor.typ_aktor,
stelle : mod_vtm_aufbau.typ_stelle stelle : mod_vtm.mod_aufbau.mod_stelle.typ_stelle
) )
: typ_svg_aktor : typ_aktor
{ {
return { return {
"aufbau": aufbau, "aufbau": aufbau,
@ -50,16 +59,16 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function svg_aktor_erstellen_manifestation export function erstellen_manifestation
( (
aufbau : mod_vtm_aufbau.typ_aktor, aufbau : mod_vtm.mod_aufbau.mod_aktor.typ_aktor,
stelle : mod_vtm_aufbau.typ_stelle stelle : mod_vtm.mod_aufbau.mod_stelle.typ_stelle
) )
: typ_manifestation<mod_vtm_aufbau.typ_aktor> : typ_manifestation<mod_vtm.mod_aufbau.mod_aktor.typ_aktor>
{ {
return { return {
"art": "svg_aktor", "art": "aktor",
"angaben": svg_aktor_erstellen(aufbau, stelle), "angaben": erstellen(aufbau, stelle),
}; };
} }
@ -67,13 +76,13 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_aktor_darstellen(svg_aktor : typ_svg_aktor) : mod_vtm_helfer.typ_xmlknoten function darstellen(aktor_ : typ_aktor) : mod_vtm_helfer.typ_xmlknoten
{ {
let aktor : mod_vtm_aufbau.typ_aktor = svg_aktor.aufbau; let aktor : mod_vtm.mod_aufbau.mod_aktor.typ_aktor = aktor_.aufbau;
let knoten_rahmen = function () : mod_vtm_helfer.typ_xmlknoten let knoten_rahmen = function () : mod_vtm_helfer.typ_xmlknoten
{ {
return ( return (
svg_pfad pfad
( (
mod_vtm_helfer.sequenz(6).map(i => mod_vtm_helfer.vektor_polar(((i+0.5)/6) * (2*Math.PI), 0.5)), mod_vtm_helfer.sequenz(6).map(i => mod_vtm_helfer.vektor_polar(((i+0.5)/6) * (2*Math.PI), 0.5)),
true, true,
@ -92,13 +101,13 @@ module mod_vtm_manifestation
"erzeuger": (angaben) => "erzeuger": (angaben) =>
{ {
kinder_feld.push(knoten_rahmen()); kinder_feld.push(knoten_rahmen());
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.erzeuger_richtung_lesen(angaben); let richtung : mod_vtm.mod_aufbau.mod_richtung.typ_richtung = mod_vtm.mod_aufbau.mod_aktor_erzeuger.richtung_lesen(angaben);
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = ( let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
( (
"path", "path",
{ {
"d": svg_form_pfeil, "d": form_pfeil,
"class": ( "class": (
[ [
"pfeil", "pfeil",
@ -107,7 +116,7 @@ module mod_vtm_manifestation
), ),
"transform": ( "transform": (
[ [
"rotate(" + ((richtung/6) * 360).toFixed(svg_float_praezission) + ")", "rotate(" + ((richtung/6) * 360).toFixed(float_praezission) + ")",
"translate(-0.2, 0)", "translate(-0.2, 0)",
"scale(0.12)", "scale(0.12)",
].join(" ") ].join(" ")
@ -121,13 +130,13 @@ module mod_vtm_manifestation
"befoerderer": (angaben) => "befoerderer": (angaben) =>
{ {
kinder_feld.push(knoten_rahmen()); kinder_feld.push(knoten_rahmen());
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.befoerderer_richtung_lesen(angaben); let richtung : mod_vtm.mod_aufbau.mod_richtung.typ_richtung = mod_vtm.mod_aufbau.mod_aktor_befoerderer.richtung_lesen(angaben);
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = ( let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
( (
"path", "path",
{ {
"d": svg_form_pfeil, "d": form_pfeil,
"class": ( "class": (
[ [
"pfeil", "pfeil",
@ -136,7 +145,7 @@ module mod_vtm_manifestation
), ),
"transform": ( "transform": (
[ [
"rotate(" + ((richtung/6) * 360).toFixed(svg_float_praezission) + ")", "rotate(" + ((richtung/6) * 360).toFixed(float_praezission) + ")",
"translate(-0.2, 0)", "translate(-0.2, 0)",
"scale(0.12)", "scale(0.12)",
].join(" ") ].join(" ")
@ -150,14 +159,14 @@ module mod_vtm_manifestation
"schreiber": (angaben) => "schreiber": (angaben) =>
{ {
kinder_feld.push(knoten_rahmen()); kinder_feld.push(knoten_rahmen());
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.schreiber_richtung_lesen(angaben); let richtung : mod_vtm.mod_aufbau.mod_richtung.typ_richtung = mod_vtm.mod_aufbau.mod_aktor_schreiber.richtung_lesen(angaben);
let symbol : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.schreiber_symbol_lesen(angaben); let symbol : mod_vtm.mod_aufbau.mod_symbol.typ_symbol = mod_vtm.mod_aufbau.mod_aktor_schreiber.symbol_lesen(angaben);
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = ( let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
( (
"path", "path",
{ {
"d": svg_form_pfeil, "d": form_pfeil,
"class": ( "class": (
[ [
"pfeil", "pfeil",
@ -166,7 +175,7 @@ module mod_vtm_manifestation
), ),
"transform": ( "transform": (
[ [
"rotate(" + ((richtung/6) * 360).toFixed(svg_float_praezission) + ")", "rotate(" + ((richtung/6) * 360).toFixed(float_praezission) + ")",
"translate(-0.2, 0)", "translate(-0.2, 0)",
"scale(0.12)", "scale(0.12)",
].join(" ") ].join(" ")
@ -180,22 +189,22 @@ module mod_vtm_manifestation
"leser": (angaben) => "leser": (angaben) =>
{ {
kinder_feld.push(knoten_rahmen()); kinder_feld.push(knoten_rahmen());
let richtung : mod_vtm_aufbau.typ_richtung = mod_vtm_aufbau.leser_richtung_lesen(angaben); let richtung : mod_vtm.mod_aufbau.mod_richtung.typ_richtung = mod_vtm.mod_aufbau.mod_aktor_leser.richtung_lesen(angaben);
let symbol_links : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.leser_symbol_links_lesen(angaben); let symbol_links : mod_vtm.mod_aufbau.mod_symbol.typ_symbol = mod_vtm.mod_aufbau.mod_aktor_leser.symbol_links_lesen(angaben);
let symbol_rechts : mod_vtm_aufbau.typ_symbol = mod_vtm_aufbau.leser_symbol_rechts_lesen(angaben); let symbol_rechts : mod_vtm.mod_aufbau.mod_symbol.typ_symbol = mod_vtm.mod_aufbau.mod_aktor_leser.symbol_rechts_lesen(angaben);
let ausgaenge : Array<{summand : mod_vtm_aufbau.typ_richtung, symbol : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_symbol>;}> = let ausgaenge : Array<{summand : mod_vtm.mod_aufbau.mod_richtung.typ_richtung, symbol : schnittstelle_fehlermonade<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>;}> =
[ [
{ {
"summand": 0, "summand": 0,
"symbol": new klasse_nichts<mod_vtm_aufbau.typ_symbol>(), "symbol": new klasse_nichts<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>(),
}, },
{ {
"summand": +2, "summand": +2,
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(symbol_links), "symbol": new klasse_schlicht<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>(symbol_links),
}, },
{ {
"summand": -2, "summand": -2,
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(symbol_rechts), "symbol": new klasse_schlicht<mod_vtm.mod_aufbau.mod_symbol.typ_symbol>(symbol_rechts),
}, },
] ]
; ;
@ -203,13 +212,13 @@ module mod_vtm_manifestation
( (
eintrag => eintrag =>
{ {
let winkel : float = ((mod_vtm_aufbau.richtung_addieren(richtung, eintrag.summand) / 6) * 360); let winkel : float = ((mod_vtm.mod_aufbau.mod_richtung.addieren(richtung, eintrag.summand) / 6) * 360);
let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = ( let knoten_pfeil : mod_vtm_helfer.typ_xmlknoten = (
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
( (
"path", "path",
{ {
"d": svg_form_pfeil, "d": form_pfeil,
"class": ( "class": (
[ [
"pfeil", "pfeil",
@ -223,7 +232,7 @@ module mod_vtm_manifestation
"transform": ( "transform": (
[ [
"rotate(" + winkel.toFixed(svg_float_praezission) + ")", "rotate(" + winkel.toFixed(float_praezission) + ")",
"translate(0.1, 0)", "translate(0.1, 0)",
"scale(0.075)", "scale(0.075)",
].join(" ") ].join(" ")
@ -245,9 +254,9 @@ module mod_vtm_manifestation
( (
"circle", "circle",
{ {
"cx": (0.0).toFixed(svg_float_praezission), "cx": (0.0).toFixed(float_praezission),
"cy": (0.0).toFixed(svg_float_praezission), "cy": (0.0).toFixed(float_praezission),
"r": (0.25).toFixed(svg_float_praezission), "r": (0.25).toFixed(float_praezission),
"class": ( "class": (
[ [
"kreis", "kreis",
@ -268,9 +277,9 @@ module mod_vtm_manifestation
( (
"circle", "circle",
{ {
"cx": (0.0).toFixed(svg_float_praezission), "cx": (0.0).toFixed(float_praezission),
"cy": (0.0).toFixed(svg_float_praezission), "cy": (0.0).toFixed(float_praezission),
"r": (0.25).toFixed(svg_float_praezission), "r": (0.25).toFixed(float_praezission),
"class": ( "class": (
[ [
"kreis", "kreis",
@ -286,15 +295,22 @@ module mod_vtm_manifestation
} }
) )
; ;
let position : typ_position = position_von_stelle(svg_aktor.stelle); let position : mod_position.typ_position = mod_position.von_stelle(aktor_.stelle);
let knoten_feld : mod_vtm_helfer.typ_xmlknoten = ( let knoten_feld : mod_vtm_helfer.typ_xmlknoten = (
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
( (
"g", "g",
{ {
"class": "feld", "class": "feld",
"rel": mod_vtm_aufbau.stelle_hash(svg_aktor.stelle), "rel": mod_vtm.mod_aufbau.mod_stelle.hash(aktor_.stelle),
"transform": ("translate" + "(" + position.x.toFixed(svg_float_praezission) + ", " + position.y.toFixed(svg_float_praezission) + ")"), "transform": (
"translate"
+ "("
+ position.x.toFixed(float_praezission)
+ ", "
+ position.y.toFixed(float_praezission)
+ ")"
),
}, },
kinder_feld kinder_feld
) )
@ -306,12 +322,18 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
implementierung_manifestation["svg_aktor"] = implementierung_manifestation["aktor"] =
{ {
"darstellen": (manifestation) => svg_aktor_darstellen(manifestation.angaben), "darstellen": (manifestation) => darstellen(manifestation.angaben),
"binden": (manifestation) => {}, "binden": (manifestation) => {},
} }
; ;
} }
}
}
}

View file

@ -16,15 +16,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{
export module mod_svg
{
export module mod_figur
{ {
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export type typ_svg_figur = export type typ_figur =
{ {
aufbau : mod_vtm_aufbau.typ_figur; aufbau : mod_vtm.mod_aufbau.mod_figur.typ_figur;
} }
; ;
@ -32,11 +41,11 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_figur_erstellen function erstellen
( (
aufbau : mod_vtm_aufbau.typ_figur aufbau : mod_vtm.mod_aufbau.mod_figur.typ_figur
) )
: typ_svg_figur : typ_figur
{ {
return { return {
"aufbau": aufbau, "aufbau": aufbau,
@ -47,15 +56,15 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function svg_figur_erstellen_manifestation export function erstellen_manifestation
( (
aufbau : mod_vtm_aufbau.typ_figur aufbau : mod_vtm.mod_aufbau.mod_figur.typ_figur
) )
: typ_manifestation<mod_vtm_aufbau.typ_figur> : typ_manifestation<mod_vtm.mod_aufbau.mod_figur.typ_figur>
{ {
return { return {
"art": "svg_figur", "art": "svg_figur",
"angaben": svg_figur_erstellen(aufbau), "angaben": erstellen(aufbau),
}; };
} }
@ -63,13 +72,13 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_figur_darstellen function darstellen
( (
svg_figur : typ_svg_figur figur_ : typ_figur
) )
: mod_vtm_helfer.typ_xmlknoten : mod_vtm_helfer.typ_xmlknoten
{ {
let figur : mod_vtm_aufbau.typ_figur = svg_figur.aufbau; let figur : mod_vtm.mod_aufbau.mod_figur.typ_figur = figur_.aufbau;
let kinder_figur : Array<mod_vtm_helfer.typ_xmlknoten> = []; let kinder_figur : Array<mod_vtm_helfer.typ_xmlknoten> = [];
// Stein // Stein
{ {
@ -78,9 +87,9 @@ module mod_vtm_manifestation
( (
"circle", "circle",
{ {
"cx": (0.0).toFixed(svg_float_praezission), "cx": (0.0).toFixed(float_praezission),
"cy": (0.0).toFixed(svg_float_praezission), "cy": (0.0).toFixed(float_praezission),
"r": (0.125).toFixed(svg_float_praezission), "r": (0.125).toFixed(float_praezission),
"class": "stein", "class": "stein",
} }
) )
@ -89,7 +98,7 @@ module mod_vtm_manifestation
} }
// Band // Band
{ {
let band : Array<mod_vtm_aufbau.typ_symbol> = mod_vtm_aufbau.figur_band_lesen(figur); let band : Array<mod_vtm.mod_aufbau.mod_symbol.typ_symbol> = mod_vtm.mod_aufbau.mod_figur.band_lesen(figur);
let kinder_band : Array<mod_vtm_helfer.typ_xmlknoten> = []; let kinder_band : Array<mod_vtm_helfer.typ_xmlknoten> = [];
band.forEach band.forEach
( (
@ -103,14 +112,14 @@ module mod_vtm_manifestation
( (
"circle", "circle",
{ {
"cx": x.toFixed(svg_float_praezission), "cx": x.toFixed(float_praezission),
"cy": y.toFixed(svg_float_praezission), "cy": y.toFixed(float_praezission),
"r": r.toFixed(svg_float_praezission), "r": r.toFixed(float_praezission),
/* /*
"x": (x-r).toFixed(svg_float_praezission), "x": (x-r).toFixed(float_praezission),
"y": (y-r).toFixed(svg_float_praezission), "y": (y-r).toFixed(float_praezission),
"width": (2*r).toFixed(svg_float_praezission), "width": (2*r).toFixed(float_praezission),
"height": (2*r).toFixed(svg_float_praezission), "height": (2*r).toFixed(float_praezission),
*/ */
"class": ( "class": (
[ [
@ -137,14 +146,21 @@ module mod_vtm_manifestation
); );
kinder_figur.push(knoten_band); kinder_figur.push(knoten_band);
} }
let position : typ_position = position_von_stelle(mod_vtm_aufbau.figur_stelle_lesen(figur)); let position : mod_position.typ_position = mod_position.von_stelle(mod_vtm.mod_aufbau.mod_figur.stelle_lesen(figur));
let knoten_figur = ( let knoten_figur = (
mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert mod_vtm_helfer.xmlknoten_normal_erstellen_erweitert
( (
"g", "g",
{ {
"class": "figur", "class": "figur",
"transform": ("translate(" + position.x.toFixed(svg_float_praezission) + "," + position.y.toFixed(svg_float_praezission) + ")"), "transform": (
"translate"
+ "("
+ position.x.toFixed(float_praezission)
+ ","
+ position.y.toFixed(float_praezission)
+ ")"
),
}, },
kinder_figur kinder_figur
) )
@ -156,7 +172,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_figur_binden(svg_figur : typ_svg_figur) : void function binden(figur : typ_figur) : void
{ {
} }
@ -166,10 +182,16 @@ module mod_vtm_manifestation
*/ */
implementierung_manifestation["svg_figur"] = implementierung_manifestation["svg_figur"] =
{ {
"darstellen": (manifestation) => svg_figur_darstellen(manifestation.angaben), "darstellen": (manifestation) => darstellen(manifestation.angaben),
"binden": (manifestation) => svg_figur_binden(manifestation.angaben), "binden": (manifestation) => binden(manifestation.angaben),
} }
; ;
} }
}
}
}

View file

@ -16,15 +16,24 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{
export module mod_svg
{
export module mod_partie
{ {
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export type typ_svg_partie = export type typ_partie =
{ {
aufbau : mod_vtm_aufbau.typ_partie; aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie;
} }
; ;
@ -32,7 +41,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_partie_erstellen(aufbau : mod_vtm_aufbau.typ_partie) : typ_svg_partie function erstellen(aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie) : typ_partie
{ {
return { return {
"aufbau": aufbau "aufbau": aufbau
@ -43,11 +52,11 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function svg_partie_erstellen_manifestation(aufbau : mod_vtm_aufbau.typ_partie) : typ_manifestation<mod_vtm_aufbau.typ_partie> export function erstellen_manifestation(aufbau : mod_vtm.mod_aufbau.mod_partie.typ_partie) : typ_manifestation<mod_vtm.mod_aufbau.mod_partie.typ_partie>
{ {
return { return {
"art": "svg_partie", "art": "svg_partie",
"angaben": svg_partie_erstellen(aufbau) "angaben": erstellen(aufbau)
}; };
} }
@ -55,7 +64,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_partie_darstellen(svg_partie : typ_svg_partie) : mod_vtm_helfer.typ_xmlknoten function darstellen(partie : typ_partie) : mod_vtm_helfer.typ_xmlknoten
{ {
let kinder_partie : Array<mod_vtm_helfer.typ_xmlknoten> = []; let kinder_partie : Array<mod_vtm_helfer.typ_xmlknoten> = [];
// Welt // Welt
@ -64,12 +73,12 @@ module mod_vtm_manifestation
// Felder // Felder
{ {
let kinder_felder : Array<mod_vtm_helfer.typ_xmlknoten> = []; 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 mod_vtm.mod_aufbau.mod_welt.felder_lesen(mod_vtm.mod_aufbau.mod_partie.welt_lesen(partie.aufbau)).forEach
( (
({"stelle": stelle, "aktor": aktor}) => ({"stelle": stelle, "aktor": aktor}) =>
{ {
let manifestation_feld : typ_manifestation<mod_vtm_aufbau.typ_aktor> = svg_aktor_erstellen_manifestation(aktor, stelle); let manifestation_feld : typ_manifestation<mod_vtm.mod_aufbau.mod_aktor.typ_aktor> = mod_aktor.erstellen_manifestation(aktor, stelle);
let knoten_feld : mod_vtm_helfer.typ_xmlknoten = manifestation_darstellen(manifestation_feld); let knoten_feld : mod_vtm_helfer.typ_xmlknoten = mod_manifestation.darstellen(manifestation_feld);
kinder_felder.push(knoten_feld); kinder_felder.push(knoten_feld);
} }
) )
@ -101,12 +110,12 @@ module mod_vtm_manifestation
} }
// Figur // Figur
{ {
let figur_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_figur> = mod_vtm_aufbau.partie_figur_lesen(svg_partie.aufbau); let figur_ : schnittstelle_fehlermonade<mod_vtm.mod_aufbau.mod_figur.typ_figur> = mod_vtm.mod_aufbau.mod_partie.figur_lesen(partie.aufbau);
if (figur_.ist_schlicht()) if (figur_.ist_schlicht())
{ {
let figur : mod_vtm_aufbau.typ_figur = figur_.lesen(); let figur : mod_vtm.mod_aufbau.mod_figur.typ_figur = figur_.lesen();
let manifestation_figur : typ_manifestation<mod_vtm_aufbau.typ_figur> = svg_figur_erstellen_manifestation(figur); let manifestation_figur : typ_manifestation<mod_vtm.mod_aufbau.mod_figur.typ_figur> = mod_figur.erstellen_manifestation(figur);
let knoten_figur : mod_vtm_helfer.typ_xmlknoten = manifestation_darstellen(manifestation_figur); let knoten_figur : mod_vtm_helfer.typ_xmlknoten = mod_manifestation.darstellen(manifestation_figur);
kinder_partie.push(knoten_figur); kinder_partie.push(knoten_figur);
} }
else else
@ -131,7 +140,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function svg_partie_binden(svg_partie : typ_svg_partie) : void function binden(partie : typ_partie) : void
{ {
} }
@ -141,10 +150,16 @@ module mod_vtm_manifestation
*/ */
implementierung_manifestation["svg_partie"] = implementierung_manifestation["svg_partie"] =
{ {
"darstellen": (manifestation) => svg_partie_darstellen(manifestation.angaben), "darstellen": (manifestation) => darstellen(manifestation.angaben),
"binden": (manifestation) => svg_partie_binden(manifestation.angaben), "binden": (manifestation) => binden(manifestation.angaben),
} }
; ;
} }
}
}
}

View file

@ -16,25 +16,31 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{
export module mod_svg
{ {
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export const svg_float_praezission : int = 4; export const float_praezission : int = 4;
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export const svg_form_pfeil : string = "M +4 0 L 0 +1 L 0 -1 Z"; export const form_pfeil : string = "M +4 0 L 0 +1 L 0 -1 Z";
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function svg_pfad export function pfad
( (
vertices : Array<mod_vtm_helfer.typ_vektor>, vertices : Array<mod_vtm_helfer.typ_vektor>,
schliessen : boolean = true, schliessen : boolean = true,
@ -48,8 +54,8 @@ module mod_vtm_manifestation
(vertex, index) => (vertex, index) =>
{ {
let c : string = ((index <= 0) ? "M" : "L"); let c : string = ((index <= 0) ? "M" : "L");
let x : string = vertex.x.toFixed(svg_float_praezission); let x : string = vertex.x.toFixed(float_praezission);
let y : string = vertex.y.toFixed(svg_float_praezission); let y : string = vertex.y.toFixed(float_praezission);
d += [c, x, y].join(" "); d += [c, x, y].join(" ");
} }
) )
@ -64,7 +70,7 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function svg_wurzel export function wurzel
( (
von_x : float, von_x : float,
von_y : float, von_y : float,
@ -94,3 +100,7 @@ module mod_vtm_manifestation
} }
}
}

View file

@ -16,7 +16,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_manifestation module mod_vtm
{
export module mod_manifestation
{
export module mod_web
{
export module mod_partie
{ {
/** /**
@ -32,9 +41,9 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export type typ_web_partie = export type typ_partie =
{ {
aufbau : mod_vtm_aufbau.typ_partie; aufbau : mod_aufbau.mod_partie.typ_partie;
bereich : Element; bereich : Element;
intervall : schnittstelle_fehlermonade<any>; intervall : schnittstelle_fehlermonade<any>;
} }
@ -44,12 +53,12 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_erstellen function erstellen
( (
aufbau : mod_vtm_aufbau.typ_partie, aufbau : mod_aufbau.mod_partie.typ_partie,
bereich : Element bereich : Element
) )
: typ_web_partie : typ_partie
{ {
return { return {
"aufbau": aufbau, "aufbau": aufbau,
@ -62,16 +71,16 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function web_partie_erstellen_erweitert export function erstellen_erweitert
( (
aufbau : mod_vtm_aufbau.typ_partie, aufbau : mod_aufbau.mod_partie.typ_partie,
bereich : Element bereich : Element
) )
: typ_manifestation<mod_vtm_aufbau.typ_partie> : typ_manifestation<mod_aufbau.mod_partie.typ_partie>
{ {
return { return {
"art": "web_partie", "art": "partie",
"angaben": web_partie_erstellen(aufbau, bereich) "angaben": erstellen(aufbau, bereich)
}; };
} }
@ -79,14 +88,14 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_erneuern_aufgabe(web_partie : typ_web_partie) : void function erneuern_aufgabe(partie : typ_partie) : void
{ {
document.querySelector("#aufgabe_text").innerHTML = ( document.querySelector("#aufgabe_text").innerHTML = (
text_nachbearbeiten text_nachbearbeiten
( (
mod_vtm_aufbau.aufgabe_text mod_vtm.mod_aufbau.mod_aufgabe.text
( (
mod_vtm_aufbau.partie_aufgabe_lesen(web_partie.aufbau) mod_vtm.mod_aufbau.mod_partie.aufgabe_lesen(partie.aufbau)
) )
) )
); );
@ -96,61 +105,61 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_erneuern_welt(web_partie : typ_web_partie) : void function erneuern_welt(partie : typ_partie) : void
{ {
let knoten_svg : mod_vtm_helfer.typ_xmlknoten = mod_vtm_manifestation.svg_wurzel let knoten_svg : mod_vtm_helfer.typ_xmlknoten = mod_svg.wurzel
( (
-4, -4, -4, -4,
+4, +4, +4, +4,
800, 800, 800, 800,
[manifestation_darstellen(svg_partie_erstellen_manifestation(web_partie.aufbau))] [mod_manifestation.darstellen(mod_svg.mod_partie.erstellen_manifestation(partie.aufbau))]
) )
; ;
web_partie.bereich.innerHTML = mod_vtm_helfer.xmlknoten_darstellen(knoten_svg); partie.bereich.innerHTML = mod_vtm_helfer.xmlknoten_darstellen(knoten_svg);
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_erneuern_figur(web_partie : typ_web_partie) : void function erneuern_figur(partie : typ_partie) : void
{ {
let knoten_svg : mod_vtm_helfer.typ_xmlknoten = mod_vtm_manifestation.svg_wurzel let knoten_svg : mod_vtm_helfer.typ_xmlknoten = mod_svg.wurzel
( (
-4, -4, -4, -4,
+4, +4, +4, +4,
800, 800, 800, 800,
[manifestation_darstellen(svg_partie_erstellen_manifestation(web_partie.aufbau))] [mod_manifestation.darstellen(mod_svg.mod_partie.erstellen_manifestation(partie.aufbau))]
) )
; ;
web_partie.bereich.innerHTML = mod_vtm_helfer.xmlknoten_darstellen(knoten_svg); partie.bereich.innerHTML = mod_vtm_helfer.xmlknoten_darstellen(knoten_svg);
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_erneuern_modus(web_partie : typ_web_partie) : void function erneuern_modus(partie : typ_partie) : void
{ {
let status : string; let status : string;
switch (mod_vtm_aufbau.partie_modus_lesen(web_partie.aufbau)) switch (mod_vtm.mod_aufbau.mod_partie.modus_lesen(partie.aufbau))
{ {
case mod_vtm_aufbau.modus_initial: case mod_vtm.mod_aufbau.mod_modus.initial:
{ {
status = "Maschine aufbauen"; status = "Maschine aufbauen";
break; break;
} }
case mod_vtm_aufbau.modus_ungewiss: case mod_vtm.mod_aufbau.mod_modus.ungewiss:
{ {
status = "wird geprüft …"; status = "wird geprüft …";
break; break;
} }
case mod_vtm_aufbau.modus_fehlerhaft: case mod_vtm.mod_aufbau.mod_modus.fehlerhaft:
{ {
status = "fehlerhaft :/"; status = "fehlerhaft :/";
break; break;
} }
case mod_vtm_aufbau.modus_korrekt: case mod_vtm.mod_aufbau.mod_modus.korrekt:
{ {
status = "anscheinend korrekt :)"; status = "anscheinend korrekt :)";
break; break;
@ -169,28 +178,28 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_erneuern_knoepfe(web_partie : typ_web_partie) : void function erneuern_knoepfe(partie : typ_partie) : void
{ {
let modus : mod_vtm_aufbau.typ_modus = mod_vtm_aufbau.partie_modus_lesen(web_partie.aufbau); let modus : mod_vtm.mod_aufbau.mod_modus.typ_modus = mod_vtm.mod_aufbau.mod_partie.modus_lesen(partie.aufbau);
let klasse : string; let klasse : string;
switch (modus) switch (modus)
{ {
case mod_vtm_aufbau.modus_initial: case mod_vtm.mod_aufbau.mod_modus.initial:
{ {
klasse = "initial"; klasse = "initial";
break; break;
} }
case mod_vtm_aufbau.modus_ungewiss: case mod_vtm.mod_aufbau.mod_modus.ungewiss:
{ {
klasse = ( klasse = (
web_partie.intervall.ist_schlicht() partie.intervall.ist_schlicht()
? "ungewiss_laufend" ? "ungewiss_laufend"
: "ungewiss_stehend" : "ungewiss_stehend"
); );
break; break;
} }
case mod_vtm_aufbau.modus_fehlerhaft: case mod_vtm.mod_aufbau.mod_modus.fehlerhaft:
case mod_vtm_aufbau.modus_korrekt: case mod_vtm.mod_aufbau.mod_modus.korrekt:
{ {
klasse = "fertig"; klasse = "fertig";
break; break;
@ -203,157 +212,157 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_darstellen(web_partie : typ_web_partie) : void function darstellen(partie : typ_partie) : void
{ {
web_partie_erneuern_aufgabe(web_partie); erneuern_aufgabe(partie);
web_partie_erneuern_welt(web_partie); erneuern_welt(partie);
web_partie_erneuern_figur(web_partie); erneuern_figur(partie);
web_partie_erneuern_modus(web_partie); erneuern_modus(partie);
web_partie_erneuern_knoepfe(web_partie); erneuern_knoepfe(partie);
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_anhalten(web_partie : typ_web_partie) : void function anhalten(partie : typ_partie) : void
{ {
if (web_partie.intervall.ist_schlicht()) if (partie.intervall.ist_schlicht())
{ {
clearInterval(web_partie.intervall.lesen()); clearInterval(partie.intervall.lesen());
web_partie.intervall = (new klasse_nichts<any>()); partie.intervall = (new klasse_nichts<any>());
} }
else else
{ {
let meldung : string = "kein Intervall gesetzt"; let meldung : string = "kein Intervall gesetzt";
console.warn(meldung); console.warn(meldung);
} }
web_partie_erneuern_knoepfe(web_partie); erneuern_knoepfe(partie);
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_fortfahren(web_partie : typ_web_partie) : void function fortfahren(partie : typ_partie) : void
{ {
mod_vtm_aufbau.partie_fortfahren(web_partie.aufbau); mod_vtm.mod_aufbau.mod_partie.fortfahren(partie.aufbau);
let modus : mod_vtm_aufbau.typ_modus = mod_vtm_aufbau.partie_modus_lesen(web_partie.aufbau); let modus : mod_vtm.mod_aufbau.mod_modus.typ_modus = mod_vtm.mod_aufbau.mod_partie.modus_lesen(partie.aufbau);
if (modus <= 1) if (modus <= 1)
{ {
// nichts tun // nichts tun
} }
else else
{ {
web_partie_anhalten(web_partie); anhalten(partie);
} }
web_partie_erneuern_knoepfe(web_partie); erneuern_knoepfe(partie);
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_testen(web_partie : typ_web_partie) : void function testen(partie : typ_partie) : void
{ {
let handle : any = setInterval(() => web_partie_fortfahren(web_partie), 500); let handle : any = setInterval(() => fortfahren(partie), 500);
web_partie.intervall = (new klasse_schlicht<any>(handle)); partie.intervall = (new klasse_schlicht<any>(handle));
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_bearbeiten(web_partie : typ_web_partie) : void function bearbeiten(partie : typ_partie) : void
{ {
web_partie_anhalten(web_partie); anhalten(partie);
mod_vtm_aufbau.partie_zuruecksetzen(web_partie.aufbau); mod_vtm.mod_aufbau.mod_partie.zuruecksetzen(partie.aufbau);
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_leeren(web_partie : typ_web_partie) : void function leeren(partie : typ_partie) : void
{ {
mod_vtm_aufbau.partie_welt_leeren(web_partie.aufbau); mod_vtm.mod_aufbau.mod_partie.welt_leeren(partie.aufbau);
mod_vtm_aufbau.partie_zuruecksetzen(web_partie.aufbau); mod_vtm.mod_aufbau.mod_partie.zuruecksetzen(partie.aufbau);
} }
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
function web_partie_binden(web_partie : typ_web_partie) : void function binden(partie : typ_partie) : void
{ {
let stelle_ermitteln = (target : EventTarget) => let stelle_ermitteln = (target : EventTarget) =>
{ {
let stelle : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle>; let stelle : schnittstelle_fehlermonade<mod_vtm.mod_aufbau.mod_stelle.typ_stelle>;
let dom_feld : Element = target["closest"](".feld"); let dom_feld : Element = target["closest"](".feld");
if (dom_feld == null) if (dom_feld == null)
{ {
stelle = (new klasse_nichts<mod_vtm_aufbau.typ_stelle>()); stelle = (new klasse_nichts<mod_vtm.mod_aufbau.mod_stelle.typ_stelle>());
} }
else else
{ {
let rel : string = dom_feld.getAttribute("rel") let rel : string = dom_feld.getAttribute("rel")
stelle = (new klasse_schlicht<mod_vtm_aufbau.typ_stelle>(mod_vtm_aufbau.stelle_von_hash(rel))); stelle = (new klasse_schlicht<mod_vtm.mod_aufbau.mod_stelle.typ_stelle>(mod_vtm.mod_aufbau.mod_stelle.von_hash(rel)));
} }
return stelle; return stelle;
} }
; ;
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
web_partie.aufbau, partie.aufbau,
"aenderung_aufgabe", "aenderung_aufgabe",
(angaben) => (angaben) =>
{ {
web_partie_erneuern_aufgabe(web_partie); erneuern_aufgabe(partie);
} }
) )
; ;
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
web_partie.aufbau, partie.aufbau,
"aenderung_welt", "aenderung_welt",
(angaben) => (angaben) =>
{ {
web_partie_erneuern_welt(web_partie); erneuern_welt(partie);
} }
) )
; ;
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
web_partie.aufbau, partie.aufbau,
"aenderung_figur", "aenderung_figur",
(angaben) => (angaben) =>
{ {
web_partie_erneuern_figur(web_partie); erneuern_figur(partie);
} }
) )
; ;
mod_vtm_aufbau.partie_lauschen mod_vtm.mod_aufbau.mod_partie.lauschen
( (
web_partie.aufbau, partie.aufbau,
"aenderung_modus", "aenderung_modus",
(angaben) => (angaben) =>
{ {
web_partie_erneuern_modus(web_partie); erneuern_modus(partie);
web_partie_erneuern_knoepfe(web_partie); erneuern_knoepfe(partie);
} }
) )
; ;
// Links-Klick // Links-Klick
web_partie.bereich.addEventListener partie.bereich.addEventListener
( (
"click", "click",
event => event =>
{ {
event.preventDefault(); event.preventDefault();
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target); let stelle_ : schnittstelle_fehlermonade<mod_vtm.mod_aufbau.mod_stelle.typ_stelle> = stelle_ermitteln(event.target);
if (stelle_.ist_schlicht()) if (stelle_.ist_schlicht())
{ {
mod_vtm_aufbau.partie_welt_feld_wechseln(web_partie.aufbau, stelle_.lesen(), false); mod_vtm.mod_aufbau.mod_partie.welt_feld_wechseln(partie.aufbau, stelle_.lesen(), false);
} }
else else
{ {
@ -363,16 +372,16 @@ module mod_vtm_manifestation
) )
; ;
// Rechts-Klick // Rechts-Klick
web_partie.bereich.addEventListener partie.bereich.addEventListener
( (
"contextmenu", "contextmenu",
event => event =>
{ {
event.preventDefault(); event.preventDefault();
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target); let stelle_ : schnittstelle_fehlermonade<mod_vtm.mod_aufbau.mod_stelle.typ_stelle> = stelle_ermitteln(event.target);
if (stelle_.ist_schlicht()) if (stelle_.ist_schlicht())
{ {
mod_vtm_aufbau.partie_welt_feld_wechseln(web_partie.aufbau, stelle_.lesen(), true); mod_vtm.mod_aufbau.mod_partie.welt_feld_wechseln(partie.aufbau, stelle_.lesen(), true);
} }
else else
{ {
@ -382,17 +391,17 @@ module mod_vtm_manifestation
) )
; ;
// Mausrad // Mausrad
web_partie.bereich.addEventListener partie.bereich.addEventListener
( (
"wheel", "wheel",
event => event =>
{ {
event.preventDefault(); event.preventDefault();
let stelle_ : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_stelle> = stelle_ermitteln(event.target); let stelle_ : schnittstelle_fehlermonade<mod_vtm.mod_aufbau.mod_stelle.typ_stelle> = stelle_ermitteln(event.target);
if (stelle_.ist_schlicht()) if (stelle_.ist_schlicht())
{ {
let inkrement : int = ((event["deltaY"] < 0) ? -1 : +1); let inkrement : int = ((event["deltaY"] < 0) ? -1 : +1);
mod_vtm_aufbau.partie_welt_feld_drehen(web_partie.aufbau, stelle_.lesen(), inkrement); mod_vtm.mod_aufbau.mod_partie.welt_feld_drehen(partie.aufbau, stelle_.lesen(), inkrement);
} }
else else
{ {
@ -407,8 +416,8 @@ module mod_vtm_manifestation
"click", "click",
event => event =>
{ {
web_partie_anhalten(web_partie); anhalten(partie);
web_partie_fortfahren(web_partie); fortfahren(partie);
} }
) )
; ;
@ -418,7 +427,7 @@ module mod_vtm_manifestation
"click", "click",
event => event =>
{ {
web_partie_testen(web_partie); testen(partie);
} }
) )
; ;
@ -428,7 +437,7 @@ module mod_vtm_manifestation
"click", "click",
event => event =>
{ {
web_partie_anhalten(web_partie); anhalten(partie);
} }
) )
; ;
@ -438,7 +447,7 @@ module mod_vtm_manifestation
"click", "click",
event => event =>
{ {
web_partie_bearbeiten(web_partie); bearbeiten(partie);
} }
) )
; ;
@ -448,7 +457,7 @@ module mod_vtm_manifestation
"click", "click",
event => event =>
{ {
web_partie_leeren(web_partie); leeren(partie);
} }
) )
; ;
@ -458,12 +467,18 @@ module mod_vtm_manifestation
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
implementierung_manifestation["web_partie"] = implementierung_manifestation["partie"] =
{ {
"darstellen": (manifestation) => web_partie_darstellen(manifestation.angaben), "darstellen": (manifestation) => darstellen(manifestation.angaben),
"binden": (manifestation) => web_partie_binden(manifestation.angaben), "binden": (manifestation) => binden(manifestation.angaben),
} }
; ;
} }
}
}
}

View file

@ -4,7 +4,7 @@
<meta charset="utf-8"/> <meta charset="utf-8"/>
<script type="text/javascript" src="vtm.js"></script> <script type="text/javascript" src="vtm.js"></script>
<script type="text/javascript" src="vtm.dat.js"></script> <script type="text/javascript" src="vtm.dat.js"></script>
<script type="text/javascript">eingang_web();</script> <script type="text/javascript">mod_vtm.eingang_web();</script>
<link rel="stylesheet" type="text/css" href="vtm.css"/> <link rel="stylesheet" type="text/css" href="vtm.css"/>
</head> </head>
<body> <body>