/* * Verrückte Turing-Maschinen — A turing complete game * Copyright (C) 2016 Christian Fraß * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ module mod_vtm { export module mod_aufbau { export module mod_aktor { /** * @author kcf */ export type typ_aktor = typ_komplex; /** * @author kcf */ export type schnittstelle_aktor = { beispiel : ()=>typ_aktor; drehen : (aktor : typ_aktor, inkrement : int)=>void; verwenden : (aktor : typ_aktor, figur : mod_figur.typ_figur)=>void; exportieren : (aktor : typ_aktor)=>any; importieren : (roh : any)=>typ_aktor; } ; /** * @author kcf */ export var implementierung_aktor : {[art : string] : schnittstelle_aktor} = {}; /** * @author kcf */ /* export function erstellen(art : string, kern : any) : typ_aktor { return einpacken(art, kern); } */ /** * @author kcf */ export function beispiel(art : string) : typ_aktor { return implementierung_aktor[art].beispiel(); } /** * @author kcf */ export function drehen(aktor : typ_aktor, inkrement ?: int) : void { return implementierung_aktor[aktor.art].drehen(aktor, inkrement); } /** * @author kcf */ export function verwenden(aktor : typ_aktor, figur : mod_figur.typ_figur) : void { return implementierung_aktor[aktor.art].verwenden(aktor, figur); } /** * @author kcf */ export function exportieren(aktor : typ_aktor) : any { return implementierung_aktor[aktor.art].exportieren(aktor); } /** * @author kcf */ export function importieren(roh : any) : typ_aktor { return implementierung_aktor[roh.art].importieren(roh); } } } }