jBB <basic-style-canvas />

Übersicht Sonstiges Smalltalk

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter

Neue Antwort erstellen

Lord Stweccys

BeitragDi, März 08, 2011 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Kurz und deutlich, das muss ich sagen. Ich hätte nämlich gerne Mojo durch jBB ersetzt, dann muss ich das wohl selber machen...
...man kann dir schließlich auch nicht alles abverlangen, ich meine: Dein Projekt ist gigantisch.
Nochmal Hut ab an dieser Stelle Wink

Farbfinsternis

BeitragDo, März 31, 2011 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 0.85 bringt 8 neue Funktionen für die Arbeit mit Zeichenketten mit sich


  • Left(inString, chars)
  • Mid(inString, startPos, chars)
  • Right(inString, chars)
  • InStr(inString, toFind)
  • Replace(inString, toFind, replaceWith)
  • Lower(inString)
  • Upper(inString)
  • Trim(inString)
Farbfinsternis.tv

Farbfinsternis

BeitragDi, Mai 31, 2011 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleiner Ausblick auf Version 1.0

jBB agiert nun in seinem eigenen Namespace um Kollisionen mit anderen Frameworks zu vermeiden. Das heißt dass Objekte nun mittels jBB.[NameDesObjekts] definiert werden. Beispiel:
Code: [AUSKLAPPEN]
var myColour = new jBB.tColor('white');

Ein "use namespace" existiert in JavaScript leider nicht.

Das prozeduale Interface muss nun extra geladen werden denn nicht jeder möchte diesen ganzen Overhead mit ziehen obwohl er ihn garnicht benötigt.
Code: [AUSKLAPPEN]
<script src="js/jbb.js"></script>
<script src="js/jbb-proc.js"></script>


Das objektorientierte Interface hat sich radikal geändert. So werden bspw. Farbwerte nicht mehr als einzelne Parameter übergeben sondern als Objekt. Beispiel:
Code: [AUSKLAPPEN]
var myCanvas = new jBB.tCanvas('myCanvas');
var myClsColor = new jBB.tColor(0, 0, 0, 255);
myCanvas.clsColor(myClsColor);


Man kann nun auch soviele Canvas verwenden wie man lustig ist. Nebenbei hat nun auch der Parameter "drawOutline" und die Methode "setScale" bei Zeichenoperationen einen Nutzen ... Monatelang ist das FW online und keiner hats gemerkt Wink

Eine weitere Änderung ist dass nun alle Objekte einen Konstruktor besitzen (in den Beispielen oben ist das zu sehen), man spart sich also so Sachen wie ".init()", ".setup()" o.ä.

Das Objekt jBB.tColor() erwartet für die Initialisierung entweder eine Farbangabe als RGBA, keine Parameter (es wird 0, 0, 0, 0 angenommen) oder den Namen einer vordefinierten Farbe. Derzeit gibt es die Farben "white", "red", "green", "blue" und "yellow". Diese Liste wird natürlich noch erweitert.

Wer objektorientiert programmiert darf nun auf "Graphics()" verzichten und die Daten für den Interval und den Mainloop separat definieren. Der Interval kann nun zur Laufzeit jederzeit geändert werden.
Bitte nicht herum hüpfen weil der Konstruktor von jBB.tCanvas gestattet als mode "3d" anzugeben. Zwar habe ich das FW darauf vorbereitet, aber derzeit ist da nichts 3D!

Die Dokumentation des Framework wird nun mittels jsDoc erledigt, hier eine kleine Kostprobe: http://www.sedm.de/jBB1.0/doc/

Soviel zur Vorschau, ich schraube dann mal weiter an 1.0 ... stay tuned!
Farbfinsternis.tv

Farbfinsternis

BeitragFr, Jul 08, 2011 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ein weiterer kleiner Ausblick ...

... es gibt in 1.0 den sogenannten "Basic Mode". Dieser wird mittels "BASCICMODE = true;" aktiviert und bewirkt folgendes:

  • Es wird kein HTML Rumpf mehr benötigt
  • Es wird keine Initialisierungsfunktion mehr benötigt
  • Die Hauptfunktion des Spiels muss "main" heissen.

Eine jBB Datei muss auch im Basic-Mode auf .html enden, sieht aber weitaus übersichtlicher aus:
BlitzMax: [AUSKLAPPEN]
<script Type="text/javascript">
BASICMODE = True;

Include("../js/jBB-1.1.js");

AppTitle = "jBB without HTML";
Graphics(800, 600);
ClsColor(90, 120, 200);

Function Main(){
Cls();
};
</script>

Wenn man im Basic-Mode sicherstellen will dass Images, Sounds etc. zu Beginn des Spiels geladen sind, muss man diese vor dem Aufruf von "Graphics()" laden. Außerdem ist noch wichtig zu wissen dass kein Source vor "BASICMODE = true" stehen darf. Kommentare könnt Ihr schreiben wie Ihr wollt, nur halt keinen JavaScript Source.
Vielleicht sollte ich noch erwähnen dass jBB Spiele im Basic-Mode niemals Standardkonform sind da man per JS den Doctype nicht setzen kann.

Wer den Basic-Mode nicht nutzen möchte hat dennoch die Möglichkeit mit wenig HTML sein jBB Game zu bauen. Der jBB Konstruktor unterscheidet nun zwischen der Art der Parameter die übergeben werden. In C++, Java etc. würde man sagen "Die Klasse hat mehrere Kontruktoren".
Man kann nun entweder das Parameterset "ID des Canvas, MainLoop, Bilder pro Sekunde" oder das Set "Breite des Canvas, Höhe des Canvas, Bilder pro Sekunde" verwenden. Wird im ersteren Fall "MainLoop" weggelassen wird angenommen dass die Hauptfunktion "main()" heißt. Wird in beiden Fällen "Bilder pro Sekunde" weggelassen wird das Programm so schnell ausgeführt wie der Client es ausführen kann.
Wenn der Konstruktor mit Breite und Höhe verwendet wird, fügt jBB in den Body der Seite ein Canvas Element mit der ID "jBBCanvas" ein.

Das prozeduale Interface bietet "Graphics()" selbstverständlich auch mit mehreren Parametersets an. Ist Basic-Mode aktiv muss Breite, Höhe und Hertz (Bilder pro Sekunde) übergeben werden, ist dies nicht der Fall erzeugt jBB ein Canvas im Body der Seite. Das zweite Set erwartet die ID des Canvas, die Hauptfunktion des Spiels und die Bilder pro Sekunde. Auch hier wird "main" als Hauptfunktion angenommen wenn der Parameter weggelassen wird. Wird "Bilder pro Sekunde" nicht angegeben läuft das Programm so schnell wie der Browser es zulässt. Prinzipiell kann in jBB1.x die Funktion "Graphics()" auch ohne Parameter aufgerufen werden. In diesem Fall erzeugt jBB ein Canvas der Größe 640x480, erwartet dass die Hauptfunktion "main" heißt und ruft diese sooft auf wie der Browser es erlaubt.

Soviel für heute, bin mal "die hässlichste Sprache der Welt" benutzen...
Farbfinsternis.tv

Farbfinsternis

BeitragMi, Okt 05, 2011 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Preview auf 1.0 ist seit eben online. Der "Basic-Mode" hat es noch nicht in die Preview geschafft, dafür gibt es auch einen Grund:

jBB ist nun Plugin-orientiert angelegt. Die Methoden die es sowieso immer gab wurden zu großen Teilen in ihrem Kontext als Plugin angelegt und in das zentrale jBB-Objekt "eingestöpselt". Auf dem selben Weg werden etwaige Extensions angeschraubt.

jBB besitzt nun den Namespace "jBB" in welchen alle anderen Objekte eingehangen werden (tImage, tInput, tSound etc.). Das prozeduale Interface wurde erweitert, aber nicht so verändert dass Programme die auf 0.86 basieren geändert werden müssen. Es sind lediglich Funktionen hinzu gekommen und einige Funktionen haben erweiterte Parametersets bei denen die neuen Parameter optional sind. Beispiel: DrawText() hat nun den zusätzlichen Parameter "outline" der es gestattet einen Text nur als Umrisslinie zu zeichnen.

Sämtliche Resourcen werden nun durch ihr eigenes Objekt geladen, so dass das zentrale Objekt jBB nicht mehr verwendet werden muss bevor nicht alle Resourcen geladen sind. Im prozedualen Interface drückt sich das dadurch aus dass man einen Font laden und einrichten kann bevor Graphics() aufgerufen wird, oder dass sichergestellt ist dass der Browser ein "OGG" laden kann bevor man anfängt einen Sound zu laden und dass auch sicher gestellt ist dass alle Ressourcen geladen sind wenn das Spiel beginnt.

Das jetzige "Release" ist wirklich nur als Preview zu verstehen. Es ist weder bugfrei noch überall lauffähig (IE, Firefox, Opera, Chrome, OWB, Android Browser, iOS, Symbian etc.). Zudem fehlt noch das Plugin "tSmart" welches erweitert testet ob die App auf einem Smartphone/Pad ausgeführt wird und dann erweiterte Funktionen für Touch, Multitouch und Gesture zur Verfügung stellt.

Experimentell ist WebGL implementiert, zwar sind es nur eine handvoll Funktionen aber auch die zeigen wo es hingehen soll: jBB als HTML5 Middleware für alle modernen Browser. Per Phonegap oder AppGeyser kann man dann aus einer jBB App auch eine echte Smartphone App machen Wink

Wer trotzdem schonmal reingucken will kann jBB1.0[Pref] unter http://jbb.sedm.de/js/jbb1.0.js den Source ziehen.
Farbfinsternis.tv

Farbfinsternis

BeitragMo, Nov 07, 2011 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Wir können nun auch Touch. Zwar nur einfaches (noch kein Multitouch) aber dennoch: Es funktioniert. Mit den Funktionen TouchX() und TouchY kann man feststellen ob und wo der User auf den Screen getippt hat, die Funktionen TouchMoveX() und TouchMoveY() geben die XY Koordinate zurück wenn der User über den Screen wischt. Wie gesagt: Noch kein Multitouch, ihr könnt also nur einen Finger in Erfahrung bringen.
Bevor ihr versucht Touch Events in Erfahrung zu bringen, solltet ihr nachschauen ob der Client überhaupt Touch unterstützt ... das wird mit CanTouch() erledigt.

Zwei weitere Änderungen:

1. PreventScroll() verhindert nun dass der Browser anfängt zu scrollen wenn das Canvas nicht ganz in den Browser passt.
2. Die EventHandler verhindern nun dass der Browser auf mobilen Geräten "herum rutscht". Was den FF4Mobile nicht daran hindert seine Seitenfenster auszufahren. Muss ich mal schauen ob der dafür irgendwas implementiert hat.
Farbfinsternis.tv

Farbfinsternis

Betreff: Weiter gehts

BeitragMi, Okt 02, 2013 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Es war nicht ohne Grund solange still um jBB. Ich habe das Konzept überdacht, jBB 1.0 geplant und einige konzeptionelle Änderungen skizziert. Nach einer etwa 1 jährigen Planungsphase bin ich nun wieder dabei zu implementieren.
Anstatt ständig etwas zum zeigen zu haben wird jBB nun pragmatisch an der BB2D API entlang programmiert. Experimente und neueste HTML5 Features werden per Plugin hinzugefügt sobald der Kern komplett ist. Derzeit sind 35% des Kerns komplett. Hier habe ich Wert auf kleineren und effektiveren Code gelegt. Den aktuellen Status der Entwicklung kann man auf http://jbb.colorflow.de/ verfolgen.

Die Reihenfolge der Funktionsgruppen entspricht der der bmax.com Doku. Dort orientiere ich mich derzeit an der BlitzPlus(2D) Dokumentation. Nebenbei schaue ich auch hier in die Hilfe um noch Funktionen von Blitz2D und Blitz3D mitzunehmen.
Funktionen die grau hinterlegt dargestellt werden (wird nicht implementiert) sind nicht für immer ausgeschlossen. So ist es theoretisch möglich DirectPlay und DirectShow in JavaScript nachzubilden. Aber wie ich schon schrub werden solche Dinge eher als Plugin entstehen und nicht Teil des Kernels sein.

Banks stehen derzeit noch auf dem Plan, sie sollen durch das Binary-Array Feature von HTML5 implementiert werden. Da die Unterstützung für dieses Feature in der Browser-Landschaft derzeit aber eher mau ist köbnnte es sein dass auch diese Gruppe bald grau in die jBB Landschaft guckt.

Dasselbe betrifft die Sektion "File". Kann ich keine 60% Abdeckung durch aktuelle Browser garantieren werde ich auch diese Funktionen in ein Plugin auslagern.

Bla bla bla ... es gibt massig Funktionen in BB die mit HTML5 theoretisch nachzubilden sind, aber allzu oft an Browser-Grenzen scheitern.

Stay tuned Folks ....

Farbfinsternis

BeitragSa, Okt 05, 2013 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Site zeigt nun nicht mehr nur den Entwicklungsstand an (der um einige Prozent erweitert wurde), sondern liefert nun einige Informationen mehr und enthält ein Live-Example.

Eingeproggt

BeitragSa, Okt 05, 2013 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Schadet wohl nix wenn sich nach 7 Beiträgen in Folge mal jemand anderer als der Projektleiter zu Wort meldet Wink
Also es freut mich sehr dass du noch dran bist, hatte ja schon zuvor Interesse bekundet soweit ich weiß. Aber auf der anderen Seite muss ich "relativ uninformiert" (*) sagen: Die HTML5-Canvas Verwendung ist jetzt nicht so eine komplexe Sache wie sie (damals und heute) die Graphik-Engine-Programmierung ist. Deshalb bin ich mir immer noch nicht sicher ob man einen derartigen "Wrapper" wirklich braucht?

(*) Uninformiert deshalb weil mein letzter Kontakt mit HTML5 im Jänner war. Und ich überhaupt seit Juli nix mehr produktives gewerkelt hab Sad

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Farbfinsternis

BeitragMo, Okt 07, 2013 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
C++ und Ogre3D sind auch nicht so wahnsinnig kompliziert, warum also nutzen viele Leute Blitz3D, DarkBasic o.ä.? Es geht oft um den leichteren Einstieg wenn man gar keine Ahnung hat und später um Zeitersparnis beim Umsetzen der Projekte.
Es ist bei jBB ja auch nicht nur das Canvas das gekapselt wird, es sind sehr viele Dinge die verbastelt werden und nicht durch das Canvas bereit gestellt werden:

  • Sound
  • Input (Maus, Tastatur, GamePads, Touch)
  • Accellerometer auf Mobiles
  • nachladen von Quelltext, Bildern, Sounds, Fonts (Include)
  • Fullscreen
  • Window Autosize etc.
  • Local Storage
  • Websockets
  • Ajax Kommunikation mit einem Server (Highscores, Gamelists etc.)

Es gibt sehr viele Dinge die für Otto-Normal-Einsteiger einfach zu hoch hängen. Sicher, ein Canvas zu bauen und darin etwas zu malen ist noch einfach, wenn es aber darum geht zur Laufzeit Bilder, Sounds und Fonts zu laden, den Ladezustand zu beobachten und darauf reagieren wird es schon knifflig.
HTML5 ist halt ein kleines bisschen größer als das kleine Canvas Wink

Jan_

Ehemaliger Admin

BeitragDi, Okt 08, 2013 7:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Bruz teilt meine Ansicht.
between angels and insects

Abrexxes

BeitragDi, Okt 08, 2013 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleine Frage. Wieso ist das Rotieren von Bildern nicht möglich?

cu

Farbfinsternis

BeitragMi, Okt 09, 2013 10:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Abrexxes hat Folgendes geschrieben:
Kleine Frage. Wieso ist das Rotieren von Bildern nicht möglich?

cu

Weil das wie in BMax gelöst sein wird: SetScale(), SetRotate().

Abrexxes

BeitragMi, Okt 09, 2013 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx (Behalte das im Auge).

Tip: Es ist nicht ersichtlich das deine Rubriken Links sind die man aufklappen kann. Das könntest du markanter darstellen, ansonsten..TOP!

cu

Für die Statistik: Deine Seite mit Dual Pentium 1,6 -14% CPU für denn Ball,(Windows 8 alle Updates (CSUS), neuste Chrome Version alles Up to date).
Deine Seite mit Intel Atom 2C 1,6, (willst du gar nicht wissen) Wink

Farbfinsternis

BeitragMi, Okt 09, 2013 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Abrexxes hat Folgendes geschrieben:
[...]Es ist nicht ersichtlich das deine Rubriken Links sind die man aufklappen kann. Das könntest du markanter darstellen[...]


Habe Bootstrap Chevrons vor die Links gepackt, vllt. sieht man es jetzt besser...

Abrexxes

BeitragMi, Okt 09, 2013 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf jeden Fall ein sichtbares Zeichen. Yep!

Farbfinsternis

BeitragSa, Okt 12, 2013 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Die ToDo ist nun zu 53,79% abgearbeitet. Im Head der Site habe ich eine Linkliste eingebaut damit man nicht soviel herum scrollen muss Wink
Als weitere Implementierungskategorie (was für ein Wort!) ist "maybe" hinzu gekommen. Hier packe ich Sachen rein die theoretisch implementiert werden könnten, derzeit aber noch zu wenig Unterstützung in den diversen Browsern finden. Dieses Schicksal hat die Funktionsfamilie "Joy*" erlitten. Zwar gibt es gute Unterstützung durch Chrome und Firefox, aber alle anderen Browser kommen mit Gamepads noch nicht klar. Die neue Funktion "JoySupport()" liefert ein "true" wenn Dein Browser die Gamepad API implementiert hat.
Ansonsten habe ich heute die Input-Familie komplettiert so dass nun volle Maus- und Tastatur-Unterstützung zur Verfügung steht.
Derzeit steht "Banks" noch als "wird nicht implementiert" in der Liste, daraus könnte aber ein "maybe" werden da so ziemlich alle großen Browser, bis hin zu den Mobiles, die neuen ByteArrays unterstützen, was eine Implementierung von Banks begünstigt.

Farbfinsternis

BeitragDo, Okt 17, 2013 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Mittlerweile bin ich bei 62,15% und es sind zahlreiche Funktionen hinzugekommen. Man kann jetzt wieder Images laden und zeichnen und das Alpha beim Zeichnen mittels SetAlpha() bestimmen. Aber auch sonst wurde jBB um viele neue Funktionen bereichert.

http://jbb.colorflow.de/

Farbfinsternis

BeitragDo, Sep 18, 2014 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieder bei 61,92% ... Hä?

Nun ... Dinge die ich letztes Jahr noch für nicht implementierbar hielt habe ich nun von "wird nicht implementiert" auf "fertig" oder "fehlt noch" gehievt.
Ein Release fehlt noch aber die aktuelle Version behandelt nun alles was Grafik ist als ImageDataArray, was bedeutet dass man jetzt mittels SetBuffer() bestimmen kann ob man in den FrameBuffer (es gibt keinen Back- oder Frontbuffer, darum nenne ich es Framebuffer) malen kann oder in ein Image wenn man zuvor Code: [AUSKLAPPEN]
SetBuffer(ImageBuffer(myImage))
aufruft. Desweiteren ist nun AutoMidHandle() implementiert.

Release von jBB 1.01 ist für den 05.10.2014 geplant, dann werden alle Buffer-Operationen implementiert sein.

check it out

Farbfinsternis

Betreff: 2018 --- wir sind noch nicht fertig!

BeitragDi, Dez 04, 2018 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wir sind hier noch nicht fertig Ladies ... Reset ... aktuelle Version ist 0.5.0 und es ist performant wie nie ... take a Look:

jBB 0.5.0

Erstaunlicherweise ist der einzige Browser wo die Framerate nie absackt, der Edge ... ein Hurra auf einen Browser der gerade abgeschafft wird Very Happy

Es gibt wahnsinnig viele neue Sachen in dieser Version ... bspw. TFormFilter mit dem sich das "Blurring" abschalten lässt (Katzen Bild oben links) ... oder der Tatsache dass man jetzt viele Resourcen verwalten kann ohne Rücksicht darauf zu nehmen ob schon alles geladen ist.
Image Handles und Image Kollisionen sind jetzt drin. Die BB2D Funktionen ScaleImage und ResizeImage funktionieren jetzt so wie im Original.

Neben vielen neuen (und alten) Funktionen, lag bei der Reimplementierung das Hauptaugenmerk auf der Performance und die ist sensationell. Selbst bei einem dutzend Instanzen des Test Canvas sinkt die Framerate nie unter 60 FPS.

Hier mal der Code für das Test Canvas:
Code: [AUSKLAPPEN]

<!DOCTYPE html>
<html>
   <head>
      <style>
      </style>
   </head>
   <body>
      <div id="test"></div>
      
      
      <script type="text/javascript" src="jbb.js"></script>
      <script type="text/javascript">         
         Graphics(1280, 720, 'test');
         ClsColor(30, 30, 30);
         
         TFormFilter(false);
         
         var cx = 1;
         var cy = 1;
         var dx = 1;
         var dy = 1;
         var speed = 8;
         var rotation = 0;
         
         var maxX = GraphicsWidth();
         var maxY = GraphicsHeight();
         
         //AutoMidHandle(true);
         
         var ship = LoadImage('ship.png');
         var cat = LoadImage('cat.png');
         var tiles = LoadAnimImage('tiles.jpg', 64, 64, 0, 2);
         var font = LoadFont('Play', 'Play-Bold.ttf');
         
         TFormFilter(false);
         
         MidHandle(ship);
         ResizeImage(cat, 400, 400);
         SetFont(font, 32);
         
         var fps = 0;
         var tmpfps = 0;
         var time = MilliSecs();
         
         function main(){
            Cls();
            
            DrawImage(cat, 0, 0);
            
            Color(255, 255, 255, 0.5);
            Line(0, 0, maxX, maxY);
                        
            DrawImage(tiles, 100, 100, 0);
            DrawImage(tiles, 164, 164, 2);
            
            RotateImage(ship, rotation);
            DrawImage(ship, MouseX(), MouseY());
            
            cx += (dx * speed);
            cy += (dy * speed);
            rotation++;
            
            if(cx > maxX){ dx = -1; Color(Rand(255), Rand(255), Rand(255)); }
            if(cx < 0){ dx = 1; Color(Rand(255), Rand(255), Rand(255)); }
            if(cy > maxY){ dy = -1; Color(Rand(255), Rand(255), Rand(255)); }
            if(cy < 0){ dy = 1; Color(Rand(255), Rand(255), Rand(255)); }
            
            Rect(cx, cy, 10, 10, 0);
            
            if(MouseHit(MOUSE_LEFT)) console.log('mouse hit');
            if(MouseDown(MOUSE_RIGHT)) console.log('mouse down');
            
            Color(255, 255, 255);
                                    
            tmpfps++;
            if(MilliSecs() - time >= 1000){
               fps = tmpfps;
               tmpfps = 0;
               time = MilliSecs();
            }
            
            Text(GraphicsWidth() / 2, GraphicsHeight() / 2, fps + ' FPS', true, true);
         }
           
      </script>
   </body>
</html>

... und hier die aktuelle Lib: jBB 0.5.0

Die Browser Landschaft ist gerade so homogen dass jBB quasi alles unterstützen kann. Controller, WebSockets, Cola in Pappbechern ... stay tuned for 0.6.0
Farbfinsternis.tv

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group