sicherung
This commit is contained in:
parent
9d603364b1
commit
8dd4d54f94
21
makefile
21
makefile
|
|
@ -1,6 +1,20 @@
|
||||||
|
alles: erzeugnis/vtm.html erzeugnis/vtm.css erzeugnis/vtm.js
|
||||||
|
.PHONY: alles
|
||||||
|
|
||||||
|
erzeugnis/vtm.html: quelldatein/darstellung_steuerung/vtm.html
|
||||||
|
@ echo "-- Struktur …"
|
||||||
|
@ mkdir -p erzeugnis
|
||||||
|
@ cp quelldatein/darstellung_steuerung/vtm.html erzeugnis/vtm.html
|
||||||
|
|
||||||
|
erzeugnis/vtm.css: quelldatein/darstellung_steuerung/vtm.css quelldatein/darstellung_steuerung/welt.css
|
||||||
|
@ echo "-- Gestaltung …"
|
||||||
|
@ mkdir -p erzeugnis
|
||||||
|
@ cat quelldatein/darstellung_steuerung/vtm.css quelldatein/darstellung_steuerung/welt.css > erzeugnis/vtm.css
|
||||||
|
|
||||||
erzeugnis/vtm.js: \
|
erzeugnis/vtm.js: \
|
||||||
quelldatein/basis/typen.ts \
|
quelldatein/basis/typen.ts \
|
||||||
quelldatein/basis/fehlermonade.ts \
|
quelldatein/basis/fehlermonade.ts \
|
||||||
|
quelldatein/helfer/verschiedenes.ts \
|
||||||
quelldatein/helfer/mathematik.ts \
|
quelldatein/helfer/mathematik.ts \
|
||||||
quelldatein/helfer/vektor.ts \
|
quelldatein/helfer/vektor.ts \
|
||||||
quelldatein/helfer/hashmap.ts \
|
quelldatein/helfer/hashmap.ts \
|
||||||
|
|
@ -20,13 +34,14 @@ erzeugnis/vtm.js: \
|
||||||
quelldatein/darstellung_steuerung/position.ts \
|
quelldatein/darstellung_steuerung/position.ts \
|
||||||
quelldatein/darstellung_steuerung/svg.ts \
|
quelldatein/darstellung_steuerung/svg.ts \
|
||||||
quelldatein/darstellung_steuerung/welt.ts \
|
quelldatein/darstellung_steuerung/welt.ts \
|
||||||
quelldatein/test.ts
|
quelldatein/haupt.ts
|
||||||
@ echo "-- kompilieren …"
|
@ echo "-- Logik …"
|
||||||
@ mkdir -p erzeugnis
|
@ mkdir -p erzeugnis
|
||||||
@ tsc \
|
@ tsc \
|
||||||
--allowUnreachableCode \
|
--allowUnreachableCode \
|
||||||
quelldatein/basis/typen.ts \
|
quelldatein/basis/typen.ts \
|
||||||
quelldatein/basis/fehlermonade.ts \
|
quelldatein/basis/fehlermonade.ts \
|
||||||
|
quelldatein/helfer/verschiedenes.ts \
|
||||||
quelldatein/helfer/mathematik.ts \
|
quelldatein/helfer/mathematik.ts \
|
||||||
quelldatein/helfer/vektor.ts \
|
quelldatein/helfer/vektor.ts \
|
||||||
quelldatein/helfer/hashmap.ts \
|
quelldatein/helfer/hashmap.ts \
|
||||||
|
|
@ -46,6 +61,6 @@ erzeugnis/vtm.js: \
|
||||||
quelldatein/darstellung_steuerung/position.ts \
|
quelldatein/darstellung_steuerung/position.ts \
|
||||||
quelldatein/darstellung_steuerung/svg.ts \
|
quelldatein/darstellung_steuerung/svg.ts \
|
||||||
quelldatein/darstellung_steuerung/welt.ts \
|
quelldatein/darstellung_steuerung/welt.ts \
|
||||||
quelldatein/test.ts \
|
quelldatein/haupt.ts \
|
||||||
--outFile erzeugnis/vtm.js
|
--outFile erzeugnis/vtm.js
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,12 @@ module mod_vtm_aufbau
|
||||||
export interface schnittstelle_aktor
|
export interface schnittstelle_aktor
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
drehen() : void;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,15 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
* @implementation
|
||||||
|
*/
|
||||||
|
public drehen() : void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
* @implementation
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,16 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
* @implementation
|
||||||
|
*/
|
||||||
|
public drehen() : void
|
||||||
|
{
|
||||||
|
this.richtung = richtung_addieren(this.richtung, +1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
* @implementation
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,15 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
public band_lesen() : Array<typ_symbol>
|
||||||
|
{
|
||||||
|
return this.band;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
@ -68,7 +77,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public band_schreiben(symbol : typ_symbol) : void
|
public schreiben(symbol : typ_symbol) : void
|
||||||
{
|
{
|
||||||
this.band.push(symbol);
|
this.band.push(symbol);
|
||||||
}
|
}
|
||||||
|
|
@ -77,7 +86,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public band_lesen() : schnittstelle_fehlermonade<typ_symbol>
|
public lesen() : schnittstelle_fehlermonade<typ_symbol>
|
||||||
{
|
{
|
||||||
if (this.band.length <= 0)
|
if (this.band.length <= 0)
|
||||||
{
|
{
|
||||||
|
|
@ -93,7 +102,7 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
public band_schieben() : void
|
public schieben() : void
|
||||||
{
|
{
|
||||||
if (this.band.length <= 0)
|
if (this.band.length <= 0)
|
||||||
{
|
{
|
||||||
|
|
@ -124,15 +133,6 @@ module mod_vtm_aufbau
|
||||||
this.zustand = zustand_tot;
|
this.zustand = zustand_tot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
public zu_string() : string
|
|
||||||
{
|
|
||||||
return ("{" + zustand_zu_string(this.zustand) + " / " + stelle_zu_string(this.stelle) + " : " + "[" + this.band.map(symbol => symbol_zu_string(symbol)) + "]" + "}");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,26 +33,36 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
* @implementation
|
||||||
|
*/
|
||||||
|
public drehen() : void
|
||||||
|
{
|
||||||
|
this.richtung = richtung_addieren(this.richtung, +1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
* @implementation
|
||||||
*/
|
*/
|
||||||
public verwenden(figur : klasse_figur) : void
|
public verwenden(figur : klasse_figur) : void
|
||||||
{
|
{
|
||||||
let symbol_ : schnittstelle_fehlermonade<typ_symbol> = figur.band_lesen();
|
let symbol_ : schnittstelle_fehlermonade<typ_symbol> = figur.lesen();
|
||||||
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();
|
||||||
figur.band_schieben();
|
figur.schieben();
|
||||||
switch (symbol)
|
switch (symbol)
|
||||||
{
|
{
|
||||||
case symbol_rot:
|
case 0:
|
||||||
{
|
{
|
||||||
summand = +1;
|
summand = +1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case symbol_gruen:
|
case 1:
|
||||||
{
|
{
|
||||||
summand = -1;
|
summand = -1;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -49,13 +49,23 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
* @implementation
|
||||||
|
*/
|
||||||
|
public drehen() : void
|
||||||
|
{
|
||||||
|
this.richtung = richtung_addieren(this.richtung, +1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
* @implementation
|
||||||
*/
|
*/
|
||||||
public verwenden(figur : klasse_figur) : void
|
public verwenden(figur : klasse_figur) : void
|
||||||
{
|
{
|
||||||
figur.band_schreiben(this.symbol);
|
figur.schreiben(this.symbol);
|
||||||
figur.bewegen(this.richtung);
|
figur.bewegen(this.richtung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,10 @@ module mod_vtm_aufbau
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
export function stelle_zu_string(stelle : typ_stelle) : string
|
export function stelle_von_hash(hash : string) : typ_stelle
|
||||||
{
|
{
|
||||||
return ("<" + stelle.u.toFixed(0) + "," + stelle.v.toFixed(0) + ">");
|
let teile : Array<string> = hash.split("_");
|
||||||
|
return {"u": parseInt(teile[0]), "v": parseInt(teile[1])};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,21 +7,5 @@ module mod_vtm_aufbau
|
||||||
*/
|
*/
|
||||||
export type typ_symbol = int;
|
export type typ_symbol = int;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export var symbol_rot = 0;
|
|
||||||
export var symbol_gruen = 1;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function symbol_zu_string(symbol : typ_symbol) : string
|
|
||||||
{
|
|
||||||
return symbol.toFixed(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,15 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
* @implementation
|
||||||
|
*/
|
||||||
|
public drehen() : void
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
* @implementation
|
* @implementation
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,98 @@ module mod_vtm_aufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
public feld_wechseln(stelle : typ_stelle) : void
|
||||||
|
{
|
||||||
|
let liste : Array<{pruefer : (aktor : schnittstelle_aktor)=>boolean; ersteller : ()=>schnittstelle_aktor;}> =
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) => (aktor instanceof klasse_befoerderer),
|
||||||
|
"ersteller": () => new klasse_befoerderer(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) => ((aktor instanceof klasse_schreiber) && ((<klasse_schreiber>(aktor)).symbol_lesen() === 0)),
|
||||||
|
"ersteller": () => new klasse_schreiber(0, 0),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) => ((aktor instanceof klasse_schreiber) && ((<klasse_schreiber>(aktor)).symbol_lesen() === 1)),
|
||||||
|
"ersteller": () => new klasse_schreiber(0, 1),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) => (aktor instanceof klasse_leser),
|
||||||
|
"ersteller": () => new klasse_leser(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) => (aktor instanceof klasse_annehmer),
|
||||||
|
"ersteller": () => new klasse_annehmer(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pruefer": (aktor) => (aktor instanceof klasse_verwerfer),
|
||||||
|
"ersteller": () => new klasse_verwerfer(),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
;
|
||||||
|
let index : int;
|
||||||
|
let aktor_alt_ : schnittstelle_fehlermonade<schnittstelle_aktor> = this.felder.holen(stelle);
|
||||||
|
if (aktor_alt_.ist_schlicht)
|
||||||
|
{
|
||||||
|
let aktor_alt : schnittstelle_aktor = aktor_alt_.lesen();
|
||||||
|
let gefunden : boolean = liste.some
|
||||||
|
(
|
||||||
|
(eintrag, index_) =>
|
||||||
|
{
|
||||||
|
if (eintrag.pruefer(aktor_alt))
|
||||||
|
{
|
||||||
|
index = index_;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
if (! gefunden)
|
||||||
|
{
|
||||||
|
let meldung : string = ("Aktor nicht gefunden");
|
||||||
|
throw (new Error(meldung));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// alles prima
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let meldung : string = "kein Aktor gesetzt";
|
||||||
|
// console.warn(meldung);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
let aktor_neu : schnittstelle_aktor = liste[mod_vtm_helfer.mod(index+1, liste.length)].ersteller();
|
||||||
|
this.feld_setzen(stelle, aktor_neu);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
public feld_drehen(stelle : typ_stelle) : void
|
||||||
|
{
|
||||||
|
let aktor_ : schnittstelle_fehlermonade<schnittstelle_aktor> = this.felder.holen(stelle);
|
||||||
|
if (aktor_.ist_schlicht)
|
||||||
|
{
|
||||||
|
aktor_.lesen().drehen();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.warn("kein Aktor gesetzt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
@ -105,11 +197,29 @@ module mod_vtm_aufbau
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ergebnis)
|
|
||||||
console.info(this.figur.zu_string());
|
|
||||||
return ergebnis;
|
return ergebnis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
public static blanko(groesse : int = 3) : klasse_welt
|
||||||
|
{
|
||||||
|
let welt : klasse_welt = new klasse_welt();
|
||||||
|
for (let u : int = -groesse; u <= +groesse; u += 1)
|
||||||
|
{
|
||||||
|
for (let v : int = -groesse; v <= +groesse; v += 1)
|
||||||
|
{
|
||||||
|
if (Math.abs(u-v) <= groesse)
|
||||||
|
{
|
||||||
|
let stelle : typ_stelle = {"u": u, "v": v};
|
||||||
|
welt.felder.setzen(stelle, new klasse_verwerfer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return welt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,5 @@ module mod_vtm_aufbau
|
||||||
export var zustand_normal = 0;
|
export var zustand_normal = 0;
|
||||||
export var zustand_fertig = +1;
|
export var zustand_fertig = +1;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
export function zustand_zu_string(zustand : typ_zustand) : string
|
|
||||||
{
|
|
||||||
return zustand.toFixed(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,48 @@
|
||||||
module mod_vtm_darstellung_steuerung
|
module mod_vtm_darstellung_steuerung
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export const svg_float_praezission : int = 4;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export const svg_form_pfeil : string = "M +4 0 L 0 +1 L 0 -1 Z";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function svg_pfad
|
||||||
|
(
|
||||||
|
vertices : Array<mod_vtm_helfer.typ_vektor>,
|
||||||
|
schliessen : boolean = true,
|
||||||
|
attribute : {[schlussel : string] : string} = {},
|
||||||
|
)
|
||||||
|
: mod_vtm_helfer.schnittstelle_xmlknoten
|
||||||
|
{
|
||||||
|
let d : string = "";
|
||||||
|
vertices.forEach
|
||||||
|
(
|
||||||
|
(vertex, index) =>
|
||||||
|
{
|
||||||
|
let c : string = ((index <= 0) ? "M" : "L");
|
||||||
|
let x : string = vertex.x.toFixed(svg_float_praezission);
|
||||||
|
let y : string = vertex.y.toFixed(svg_float_praezission);
|
||||||
|
d += [c, x, y].join(" ");
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
if (schliessen)
|
||||||
|
d += "Z";
|
||||||
|
attribute["d"] = d;
|
||||||
|
return (new mod_vtm_helfer.klasse_xmlknoten_normal("path", attribute));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
@ -14,7 +56,8 @@ module mod_vtm_darstellung_steuerung
|
||||||
hoehe : int = 500,
|
hoehe : int = 500,
|
||||||
breite : int = 500,
|
breite : int = 500,
|
||||||
kinder : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = []
|
kinder : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = []
|
||||||
) : mod_vtm_helfer.schnittstelle_xmlknoten
|
)
|
||||||
|
: mod_vtm_helfer.schnittstelle_xmlknoten
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
|
|
|
||||||
17
quelldatein/darstellung_steuerung/vtm.css
Normal file
17
quelldatein/darstellung_steuerung/vtm.css
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
html
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
background-color: hsl(0, 0%, 0%);
|
||||||
|
color: hsl(0, 0%, 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
background-color: hsl(0, 0%, 25%);
|
||||||
|
color: hsl(0, 0%, 75%);
|
||||||
|
}
|
||||||
|
|
||||||
17
quelldatein/darstellung_steuerung/vtm.html
Normal file
17
quelldatein/darstellung_steuerung/vtm.html
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<script type="text/javascript" src="vtm.js"></script>
|
||||||
|
<script type="text/javascript">eingang_web();</script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="vtm.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="zeichenflaeche">
|
||||||
|
</div>
|
||||||
|
<div id="knoepfe">
|
||||||
|
<button id="knopf_fortfahren">Nächster Schritt</button>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -1,12 +1,56 @@
|
||||||
.feld
|
.rahmen
|
||||||
{
|
{
|
||||||
stroke: none;
|
stroke: none;
|
||||||
fill: black;
|
fill: hsl( 0, 0%, 12.5%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.figur
|
.figur
|
||||||
{
|
{
|
||||||
stroke: none;
|
stroke: none;
|
||||||
fill: white;
|
fill: hsl( 0, 0%, 0%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pfeil
|
||||||
|
{
|
||||||
|
stroke: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.neutral
|
||||||
|
{
|
||||||
|
fill: hsl( 0, 0%, 50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol_0
|
||||||
|
{
|
||||||
|
fill: hsl( 0, 50%, 50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol_1
|
||||||
|
{
|
||||||
|
fill: hsl(120, 50%, 50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.kreis
|
||||||
|
{
|
||||||
|
stroke: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.positiv
|
||||||
|
{
|
||||||
|
fill: hsl( 0, 0%, 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.negativ
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
fill: hsl( 0, 0%, 0%);
|
||||||
|
*/
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.eintrag
|
||||||
|
{
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 0.01;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,26 +2,6 @@
|
||||||
module mod_vtm_darstellung_steuerung
|
module mod_vtm_darstellung_steuerung
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
const svg_float_praezission : int = 4;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
|
||||||
*/
|
|
||||||
function symbol_zu_farbe(symbol : mod_vtm_aufbau.typ_symbol) : string
|
|
||||||
{
|
|
||||||
switch (symbol)
|
|
||||||
{
|
|
||||||
case 0: {return "hsl( 0, 50%, 50%)"; break;}
|
|
||||||
case 1: {return "hsl(120, 50%, 50%)"; break;}
|
|
||||||
default: {throw (new Error("unbehandeltes Symbol")); break;}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kcf <vidofnir@folksprak.org>
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
*/
|
*/
|
||||||
|
|
@ -48,6 +28,20 @@ module mod_vtm_darstellung_steuerung
|
||||||
*/
|
*/
|
||||||
public darstellen() : mod_vtm_helfer.schnittstelle_xmlknoten
|
public darstellen() : mod_vtm_helfer.schnittstelle_xmlknoten
|
||||||
{
|
{
|
||||||
|
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_welt : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
let kinder_welt : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
||||||
// felder
|
// felder
|
||||||
{
|
{
|
||||||
|
|
@ -57,36 +51,30 @@ module mod_vtm_darstellung_steuerung
|
||||||
({"stelle": stelle, "aktor": aktor}) =>
|
({"stelle": stelle, "aktor": aktor}) =>
|
||||||
{
|
{
|
||||||
let kinder_feld : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
let kinder_feld : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
||||||
// rahmen
|
|
||||||
{
|
|
||||||
let knoten_rahmen : 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.5).toFixed(svg_float_praezission),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_rahmen);
|
|
||||||
}
|
|
||||||
// inhalt
|
|
||||||
{
|
|
||||||
if (aktor instanceof mod_vtm_aufbau.klasse_befoerderer)
|
if (aktor instanceof mod_vtm_aufbau.klasse_befoerderer)
|
||||||
{
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
let befoerderer : mod_vtm_aufbau.klasse_befoerderer = <mod_vtm_aufbau.klasse_befoerderer>(aktor);
|
let befoerderer : mod_vtm_aufbau.klasse_befoerderer = <mod_vtm_aufbau.klasse_befoerderer>(aktor);
|
||||||
let richtung : mod_vtm_aufbau.typ_richtung = befoerderer.richtung_lesen();
|
let richtung : mod_vtm_aufbau.typ_richtung = befoerderer.richtung_lesen();
|
||||||
let knoten_pfeil = (
|
let knoten_pfeil : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
(
|
(
|
||||||
"path",
|
"path",
|
||||||
{
|
{
|
||||||
"class": "pfeil",
|
"d": svg_form_pfeil,
|
||||||
"d": "M +0.4 0.0 L -0.2 +0.1 L -0.2 -0.1 Z",
|
"class": (
|
||||||
"style": ("stroke: none; fill: " + "hsl(0, 0%, 50%)" + ";"),
|
[
|
||||||
"transform": ("rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")"),
|
"pfeil",
|
||||||
|
"neutral",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
"transform": (
|
||||||
|
[
|
||||||
|
"rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")",
|
||||||
|
"translate(-0.2, 0)",
|
||||||
|
"scale(0.15)",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -94,18 +82,29 @@ module mod_vtm_darstellung_steuerung
|
||||||
}
|
}
|
||||||
else if (aktor instanceof mod_vtm_aufbau.klasse_schreiber)
|
else if (aktor instanceof mod_vtm_aufbau.klasse_schreiber)
|
||||||
{
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
let schreiber : mod_vtm_aufbau.klasse_schreiber = <mod_vtm_aufbau.klasse_schreiber>(aktor);
|
let schreiber : mod_vtm_aufbau.klasse_schreiber = <mod_vtm_aufbau.klasse_schreiber>(aktor);
|
||||||
let richtung : mod_vtm_aufbau.typ_richtung = schreiber.richtung_lesen();
|
let richtung : mod_vtm_aufbau.typ_richtung = schreiber.richtung_lesen();
|
||||||
let symbol : mod_vtm_aufbau.typ_symbol = schreiber.symbol_lesen();
|
let symbol : mod_vtm_aufbau.typ_symbol = schreiber.symbol_lesen();
|
||||||
let knoten_pfeil = (
|
let knoten_pfeil : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
(
|
(
|
||||||
"path",
|
"path",
|
||||||
{
|
{
|
||||||
"class": "pfeil",
|
"d": svg_form_pfeil,
|
||||||
"d": "M +0.4 0.0 L -0.2 +0.1 L -0.2 -0.1 Z",
|
"class": (
|
||||||
"style": ("stroke: none; fill: " + symbol_zu_farbe(symbol) + ";"),
|
[
|
||||||
"transform": ("rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")"),
|
"pfeil",
|
||||||
|
"symbol_" + symbol.toFixed(0),
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
"transform": (
|
||||||
|
[
|
||||||
|
"rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")",
|
||||||
|
"translate(-0.2, 0)",
|
||||||
|
"scale(0.15)",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -113,69 +112,113 @@ module mod_vtm_darstellung_steuerung
|
||||||
}
|
}
|
||||||
else if (aktor instanceof mod_vtm_aufbau.klasse_leser)
|
else if (aktor instanceof mod_vtm_aufbau.klasse_leser)
|
||||||
{
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
let leser : mod_vtm_aufbau.klasse_leser = <mod_vtm_aufbau.klasse_leser>(aktor);
|
let leser : mod_vtm_aufbau.klasse_leser = <mod_vtm_aufbau.klasse_leser>(aktor);
|
||||||
let richtung : mod_vtm_aufbau.typ_richtung = leser.richtung_lesen();
|
let richtung : mod_vtm_aufbau.typ_richtung = leser.richtung_lesen();
|
||||||
// ausgang ersatz
|
let ausgaenge : Array<{summand : mod_vtm_aufbau.typ_richtung, symbol : schnittstelle_fehlermonade<mod_vtm_aufbau.typ_symbol>;}> =
|
||||||
|
[
|
||||||
{
|
{
|
||||||
let knoten_pfeil = (
|
"summand": 0,
|
||||||
|
"symbol": new klasse_nichts<mod_vtm_aufbau.typ_symbol>(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"summand": +1,
|
||||||
|
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(0),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"summand": -1,
|
||||||
|
"symbol": new klasse_schlicht<mod_vtm_aufbau.typ_symbol>(1),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
;
|
||||||
|
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
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
(
|
(
|
||||||
"path",
|
"path",
|
||||||
{
|
{
|
||||||
"class": "pfeil",
|
"d": svg_form_pfeil,
|
||||||
"d": "M +0.4 0.0 L +0.1 +0.1 L +0.1 -0.1 Z",
|
"class": (
|
||||||
"style": ("stroke: none; fill: " + "hsl(0, 0%, 50%)" + ";"),
|
[
|
||||||
"transform": ("rotate(" + ((richtung/6.0) * 360).toFixed(svg_float_praezission) + ")"),
|
"pfeil",
|
||||||
|
(
|
||||||
|
eintrag.symbol.ist_schlicht()
|
||||||
|
? "symbol_" + eintrag.symbol.lesen().toFixed(0)
|
||||||
|
: "neutral"
|
||||||
|
),
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
|
"transform": (
|
||||||
|
[
|
||||||
|
|
||||||
|
"rotate(" + winkel.toFixed(svg_float_praezission) + ")",
|
||||||
|
"translate(0, 0)",
|
||||||
|
"scale(0.1)",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
kinder_feld.push(knoten_pfeil);
|
kinder_feld.push(knoten_pfeil);
|
||||||
}
|
}
|
||||||
// ausgang rot
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else if (aktor instanceof mod_vtm_aufbau.klasse_verwerfer)
|
||||||
{
|
{
|
||||||
let knoten_pfeil = (
|
kinder_feld.push(knoten_rahmen());
|
||||||
|
let verwerfer : mod_vtm_aufbau.klasse_annehmer = <mod_vtm_aufbau.klasse_verwerfer>(aktor);
|
||||||
|
let knoten_kreis : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
(
|
(
|
||||||
"path",
|
"circle",
|
||||||
{
|
{
|
||||||
"class": "pfeil",
|
"cx": (0.0).toFixed(svg_float_praezission),
|
||||||
"d": "M +0.4 0.0 L +0.1 +0.1 L +0.1 -0.1 Z",
|
"cy": (0.0).toFixed(svg_float_praezission),
|
||||||
"style": ("stroke: none; fill: " + symbol_zu_farbe(0) + ";"),
|
"r": (0.25).toFixed(svg_float_praezission),
|
||||||
"transform": ("rotate(" + (((richtung+1)/6.0) * 360).toFixed(svg_float_praezission) + ")"),
|
"class": (
|
||||||
|
[
|
||||||
|
"kreis",
|
||||||
|
"negativ",
|
||||||
|
].join(" ")
|
||||||
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
kinder_feld.push(knoten_pfeil);
|
kinder_feld.push(knoten_kreis);
|
||||||
}
|
|
||||||
// ausgang gruen
|
|
||||||
{
|
|
||||||
let knoten_pfeil = (
|
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
|
||||||
(
|
|
||||||
"path",
|
|
||||||
{
|
|
||||||
"class": "pfeil",
|
|
||||||
"d": "M +0.4 0.0 L +0.1 +0.1 L +0.1 -0.1 Z",
|
|
||||||
"style": ("stroke: none; fill: " + symbol_zu_farbe(1) + ";"),
|
|
||||||
"transform": ("rotate(" + (((richtung-1)/6.0) * 360).toFixed(svg_float_praezission) + ")"),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
kinder_feld.push(knoten_pfeil);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (aktor instanceof mod_vtm_aufbau.klasse_annehmer)
|
else if (aktor instanceof mod_vtm_aufbau.klasse_annehmer)
|
||||||
{
|
{
|
||||||
|
kinder_feld.push(knoten_rahmen());
|
||||||
let annehmer : mod_vtm_aufbau.klasse_annehmer = <mod_vtm_aufbau.klasse_annehmer>(aktor);
|
let annehmer : mod_vtm_aufbau.klasse_annehmer = <mod_vtm_aufbau.klasse_annehmer>(aktor);
|
||||||
// TODO
|
let knoten_kreis : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
console.warn("not implemented");
|
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);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let meldung : string = ("unbehandelter Aktor-Typ");
|
let meldung : string = ("unbehandelter Aktor-Typ");
|
||||||
throw (new Error(meldung));
|
throw (new Error(meldung));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
let position : typ_position = position_von_stelle(stelle);
|
let position : typ_position = position_von_stelle(stelle);
|
||||||
let knoten_feld : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
let knoten_feld : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
|
|
@ -183,6 +226,7 @@ module mod_vtm_darstellung_steuerung
|
||||||
"g",
|
"g",
|
||||||
{
|
{
|
||||||
"class": "feld",
|
"class": "feld",
|
||||||
|
"rel": mod_vtm_aufbau.stelle_hash(stelle),
|
||||||
"transform": ("translate(" + position.x.toFixed(svg_float_praezission) + ", " + position.y.toFixed(svg_float_praezission) + ")"),
|
"transform": ("translate(" + position.x.toFixed(svg_float_praezission) + ", " + position.y.toFixed(svg_float_praezission) + ")"),
|
||||||
},
|
},
|
||||||
kinder_feld
|
kinder_feld
|
||||||
|
|
@ -205,22 +249,91 @@ module mod_vtm_darstellung_steuerung
|
||||||
);
|
);
|
||||||
kinder_welt.push(knoten_felder);
|
kinder_welt.push(knoten_felder);
|
||||||
}
|
}
|
||||||
// figur
|
// Figur
|
||||||
{
|
{
|
||||||
let figur : mod_vtm_aufbau.klasse_figur = this.aufbau.figur_lesen();
|
let figur : mod_vtm_aufbau.klasse_figur = this.aufbau.figur_lesen();
|
||||||
let position : typ_position = position_von_stelle(figur.stelle_lesen());
|
let kinder_figur : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
||||||
let knoten_figur : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
// Stein
|
||||||
|
{
|
||||||
|
let knoten_stein : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
(
|
(
|
||||||
"circle",
|
"circle",
|
||||||
{
|
{
|
||||||
"class": "figur",
|
"cx": (0.0).toFixed(svg_float_praezission),
|
||||||
"cx": position.x.toFixed(svg_float_praezission),
|
"cy": (0.0).toFixed(svg_float_praezission),
|
||||||
"cy": position.y.toFixed(svg_float_praezission),
|
"r": (0.125).toFixed(svg_float_praezission),
|
||||||
"r": (0.2).toFixed(svg_float_praezission),
|
"class": "stein",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
kinder_figur.push(knoten_stein);
|
||||||
|
}
|
||||||
|
// Band
|
||||||
|
{
|
||||||
|
let band : Array<mod_vtm_aufbau.typ_symbol> = figur.band_lesen();
|
||||||
|
let kinder_band : Array<mod_vtm_helfer.schnittstelle_xmlknoten> = [];
|
||||||
|
band.reduceRight
|
||||||
|
(
|
||||||
|
(dummy, symbol, index) =>
|
||||||
|
{
|
||||||
|
let r : float = 0.06125;
|
||||||
|
let x : float = (+0.1+(2*r)*index);
|
||||||
|
let y : float = (-0.1);
|
||||||
|
let knoten_eintrag : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
|
(
|
||||||
|
"rect",
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
"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);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
,
|
||||||
|
null
|
||||||
|
)
|
||||||
|
;
|
||||||
|
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(figur.stelle_lesen());
|
||||||
|
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
|
||||||
|
)
|
||||||
|
);
|
||||||
kinder_welt.push(knoten_figur);
|
kinder_welt.push(knoten_figur);
|
||||||
}
|
}
|
||||||
let knoten_welt : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
let knoten_welt : mod_vtm_helfer.schnittstelle_xmlknoten = (
|
||||||
|
|
|
||||||
96
quelldatein/haupt.ts
Normal file
96
quelldatein/haupt.ts
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function haupt() : void
|
||||||
|
{
|
||||||
|
let darstellung_aktualisieren = function (aufbau : mod_vtm_aufbau.klasse_welt, dom_zeichenflaeche : Element) : void
|
||||||
|
{
|
||||||
|
let darstellung_steuerung : mod_vtm_darstellung_steuerung.klasse_web_welt = new mod_vtm_darstellung_steuerung.klasse_web_welt(aufbau);
|
||||||
|
let xmlknoten : mod_vtm_helfer.schnittstelle_xmlknoten = mod_vtm_darstellung_steuerung.svg_wurzel
|
||||||
|
(
|
||||||
|
-4, -4,
|
||||||
|
+4, +4,
|
||||||
|
800, 800,
|
||||||
|
[darstellung_steuerung.darstellen()]
|
||||||
|
)
|
||||||
|
;
|
||||||
|
dom_zeichenflaeche.innerHTML = xmlknoten.darstellen();
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
let aufbau : mod_vtm_aufbau.klasse_welt = mod_vtm_aufbau.klasse_welt.blanko();
|
||||||
|
let dom_zeichenflaeche : Element = document.querySelector("#zeichenflaeche")
|
||||||
|
// initiale Darstellung
|
||||||
|
darstellung_aktualisieren(aufbau, dom_zeichenflaeche);
|
||||||
|
// Steuerung
|
||||||
|
{
|
||||||
|
dom_zeichenflaeche.addEventListener
|
||||||
|
(
|
||||||
|
"click",
|
||||||
|
event =>
|
||||||
|
{
|
||||||
|
event.preventDefault();
|
||||||
|
let dom_feld : Element = event.target["closest"](".feld");
|
||||||
|
if (dom_feld == null)
|
||||||
|
{
|
||||||
|
console.info("-- kein Feld");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let rel : string = dom_feld.getAttribute("rel")
|
||||||
|
let stelle : mod_vtm_aufbau.typ_stelle = mod_vtm_aufbau.stelle_von_hash(rel);
|
||||||
|
aufbau.feld_wechseln(stelle);
|
||||||
|
darstellung_aktualisieren(aufbau, dom_zeichenflaeche);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
dom_zeichenflaeche.addEventListener
|
||||||
|
(
|
||||||
|
"contextmenu",
|
||||||
|
event =>
|
||||||
|
{
|
||||||
|
event.preventDefault();
|
||||||
|
let dom_feld : Element = event.target["closest"](".feld");
|
||||||
|
if (dom_feld == null)
|
||||||
|
{
|
||||||
|
console.info("-- kein Feld");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let rel : string = dom_feld.getAttribute("rel")
|
||||||
|
let stelle : mod_vtm_aufbau.typ_stelle = mod_vtm_aufbau.stelle_von_hash(rel);
|
||||||
|
aufbau.feld_drehen(stelle);
|
||||||
|
darstellung_aktualisieren(aufbau, dom_zeichenflaeche);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
document.querySelector("#knopf_fortfahren").addEventListener
|
||||||
|
(
|
||||||
|
"click",
|
||||||
|
event =>
|
||||||
|
{
|
||||||
|
aufbau.fortfahren();
|
||||||
|
darstellung_aktualisieren(aufbau, dom_zeichenflaeche);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
function eingang_web() : void
|
||||||
|
{
|
||||||
|
document.addEventListener
|
||||||
|
(
|
||||||
|
"DOMContentLoaded",
|
||||||
|
event => {haupt();}
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
14
quelldatein/helfer/verschiedenes.ts
Normal file
14
quelldatein/helfer/verschiedenes.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
module mod_vtm_helfer
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kcf <vidofnir@folksprak.org>
|
||||||
|
*/
|
||||||
|
export function sequenz(laenge : int) : Array<int>
|
||||||
|
{
|
||||||
|
return ((laenge <= 0) ? [] : sequenz(laenge-1).concat([laenge-1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ module mod_vtm_test
|
||||||
(
|
(
|
||||||
-4, -4,
|
-4, -4,
|
||||||
+4, +4,
|
+4, +4,
|
||||||
500, 500,
|
800, 800,
|
||||||
[
|
[
|
||||||
new mod_vtm_helfer.klasse_xmlknoten_normal
|
new mod_vtm_helfer.klasse_xmlknoten_normal
|
||||||
(
|
(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue