forked from Mirrors/openclonk
Qt Editor: Add "File->New" menu entry
parent
e1eb62a552
commit
b1ac208249
|
@ -136,5 +136,5 @@ tests/openclonk_unittest.sln
|
|||
*_automoc.cpp
|
||||
moc_*.cpp
|
||||
qrc_resource.cpp
|
||||
ui_C4ConsoleQtMainWindow.h
|
||||
ui_C4ConsoleQt*.h
|
||||
resource.qrc.depends
|
|
@ -935,6 +935,9 @@ elseif(USE_WIN32_WINDOWS)
|
|||
src/editor/C4ConsoleQtDefinitionListViewer.h
|
||||
src/editor/C4ConsoleQtViewport.cpp
|
||||
src/editor/C4ConsoleQtViewport.h
|
||||
src/editor/C4ConsoleQtNewScenario.cpp
|
||||
src/editor/C4ConsoleQtNewScenario.h
|
||||
src/editor/C4ConsoleQtNewScenario.ui
|
||||
src/editor/C4ConsoleQtMainWindow.ui
|
||||
src/editor/resource.qrc
|
||||
${qt_editor_resources}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
IDS_LANG_NAME=Deutsch
|
||||
IDS_LANG_INFO=Original-Sprachpaket.
|
||||
IDS_LANG_FALLBACK=
|
||||
IDS_ADDON_INSTALLFAILURE=Installation von '%s' fehlgeschlagen.
|
||||
IDS_ADDON_INSTALLSUCCESS=Installation von '%s' erfolgreich.
|
||||
IDS_ADDON_INSTALLTITLE=Addon-Installation
|
||||
IDS_BTN_ACTIVATE=Aktivieren
|
||||
IDS_BTN_BACK=Zurück
|
||||
IDS_BTN_CHAT=&Chat
|
||||
|
@ -32,19 +32,28 @@ IDS_BTN_YES=Ja
|
|||
IDS_CHAT_NOTCONNECTED=nicht verbunden
|
||||
IDS_CHAT_SERVER=Server
|
||||
IDS_CNS_ACTION=Aktivität:
|
||||
IDS_CNS_BROWSE=Durchsuchen...
|
||||
IDS_CNS_CONSOLE=Editor
|
||||
IDS_CNS_CONTENTS=Inhalt:
|
||||
IDS_CNS_CREATE=Erzeugen
|
||||
IDS_CNS_CREATESTATUS=Platzierung: %s
|
||||
IDS_CNS_CREATOR=Objekte erstellen
|
||||
IDS_CNS_DEFINITIONS=Definitionen
|
||||
IDS_CNS_DROPNODEF=Ungültiges oder nicht geladenes Objekt: %s
|
||||
IDS_CNS_EFFECTS=Effekte:
|
||||
IDS_CNS_EXACTTOSTATIC=Beim Wechsel von einer exakten zur statischen Landschaft gehen sämtliche in der exakten Karte gemachten Änderungen verloren.
|
||||
IDS_CNS_FILENAME=Dateiname
|
||||
IDS_CNS_FILLNOHALT=Das Füllwerkzeug kann nicht im Haltemodus eingesetzt werden.
|
||||
IDS_CNS_GAMECLOSED=Spiel deinitialisiert.
|
||||
IDS_CNS_GAMEMODE=Spielmodus
|
||||
IDS_CNS_GAMESAVED=Spiel gespeichert.
|
||||
IDS_CNS_HEIGHT=Höhe
|
||||
IDS_CNS_LOG=Log
|
||||
IDS_CNS_MAPSIZE=Breite
|
||||
IDS_CNS_MAPZOOM=Zoom
|
||||
IDS_CNS_MULTIPLEOBJECTS=%i Objekte ausgewählt.
|
||||
IDS_CNS_NEWPLRVIEWPORT=Neu für %s
|
||||
IDS_CNS_NEWSCENARIO=Neues Szenario
|
||||
IDS_CNS_NOCHILDSAVE=%s befindet sich in einem Rundenordner. Szenarien können nicht in geschlossenen Gruppendateien gespeichert werden.
|
||||
IDS_CNS_NOFULLSCREENPLRS=Im Vollbildmodus kann nur gestartet werden, wenn Spieler am Spiel teilnehmen.
|
||||
IDS_CNS_NOMATDEF=Zeichnen nicht möglich, da die angegebene Material-Textur-Kombination '%s-%s' nicht in der geladenen Texturtabelle definiert ist.
|
||||
|
@ -58,12 +67,17 @@ IDS_CNS_PLRQUITNET=%s (%s) löschen
|
|||
IDS_CNS_PROPERTIES=Eigenschaften
|
||||
IDS_CNS_SAVEASERROR=Fehler beim Speichern des Szenarios nach %s.
|
||||
IDS_CNS_SAVERROR=Fehler beim Speichern des Szenarios.
|
||||
IDS_CNS_SCENARIOFILE=OpenClonk Szenariendatei
|
||||
IDS_CNS_SCENARIOSAVED=Szenario gespeichert.
|
||||
IDS_CNS_SCENARIOSETTINGS=Szenarieneinstellungen
|
||||
IDS_CNS_SCRIPT=Script
|
||||
IDS_CNS_SCRIPTCREATEDOBJECTS=Das Script dieses Szenarios hat beim Start der Runde Objekte erschaffen.
|
||||
IDS_CNS_TITLE=Titel
|
||||
IDS_CNS_TYPE=Typ: %s (%s)
|
||||
IDS_CNS_VALUE=Wert
|
||||
IDS_CNS_VIEWPORT=Sichtfenster
|
||||
IDS_CNS_WARNDOUBLE=Um Verdoppelungen der abgespeicherten Objekte beim nächsten Start zu vermeiden, sollte die Initialize-Funktion des Scripts entsprechend angepasst werden.
|
||||
IDS_CNS_WIDTH=Breite
|
||||
IDS_COMM_ACQUIRE=Beschaffung
|
||||
IDS_COMM_ACTIVATE=Aktivieren
|
||||
IDS_COMM_ATTACK=Angreifen
|
||||
|
@ -83,8 +97,8 @@ IDS_COMM_PUSHTO=Schieben
|
|||
IDS_COMM_PUT=Ablegen
|
||||
IDS_COMM_RETRY=Erneuter Versuch
|
||||
IDS_COMM_SELL=Verkaufen
|
||||
IDS_COMM_TAKE2=Herausnehmen
|
||||
IDS_COMM_TAKE=Nehmen
|
||||
IDS_COMM_TAKE2=Herausnehmen
|
||||
IDS_COMM_THROW=Werfen
|
||||
IDS_COMM_TRANSFER=Bewegung
|
||||
IDS_COMM_UNGRAB=Loslassen
|
||||
|
@ -122,17 +136,17 @@ IDS_CTL_FRONTEND=Menüsystem
|
|||
IDS_CTL_FULLSCREENMODE=Fenstermodus
|
||||
IDS_CTL_GAME=Spiel
|
||||
IDS_CTL_GAMEFUNCTIONS=Spielfunktionen
|
||||
IDS_CTL_GAMESPEEDUP=Spielgeschwindigkeit erhöhen
|
||||
IDS_CTL_GAMESPEEDDOWN=Spielgeschwindigkeit verringern
|
||||
IDS_CTL_GAMESPEEDUP=Spielgeschwindigkeit erhöhen
|
||||
IDS_CTL_GFXENGINE=Grafiktreiber
|
||||
IDS_CTL_INETSERVER=&Internet
|
||||
IDS_CTL_IRCCHAT=IRC-Chat
|
||||
IDS_CTL_LANGUAGE=Sprache
|
||||
IDS_CTL_LEAGUE_ACCOUNT=Liga-Benutzername:
|
||||
IDS_CTL_LEAGUE_CHK_PLRPW=Liga-Passwort eingeben
|
||||
IDS_CTL_LEAGUE_PLRPW2=Liga-Passwort (Wiederholung):
|
||||
IDS_CTL_LEAGUE_PLRPW=Liga-Passwort:
|
||||
IDS_CTL_LEAGUE_CHK_REMEMBERLOGIN=Logindaten speichern
|
||||
IDS_CTL_LEAGUE_PLRPW=Liga-Passwort:
|
||||
IDS_CTL_LEAGUE_PLRPW2=Liga-Passwort (Wiederholung):
|
||||
IDS_CTL_LOST=verloren
|
||||
IDS_CTL_LOUD=laut
|
||||
IDS_CTL_MATERIAL=Material
|
||||
|
@ -140,8 +154,8 @@ IDS_CTL_MESSAGEBOARDBACK=Nachrichten zurück
|
|||
IDS_CTL_MESSAGEBOARDFORWARD=Nachrichten vor
|
||||
IDS_CTL_MMTIMER=Multimedia-Timer abschalten
|
||||
IDS_CTL_MUSIC=Musik
|
||||
IDS_CTL_NAME2=Name:
|
||||
IDS_CTL_NAME=Name
|
||||
IDS_CTL_NAME2=Name:
|
||||
IDS_CTL_NICK=Kurzname:
|
||||
IDS_CTL_NOGOAL=Kein Spielziel
|
||||
IDS_CTL_NOLANGINFO=Sprachpaket nicht verfügbar.
|
||||
|
@ -151,11 +165,11 @@ IDS_CTL_ON=an
|
|||
IDS_CTL_PACKETLOGGING=Paketlogging
|
||||
IDS_CTL_PASSWORDOPTIONAL=Passwort (optional):
|
||||
IDS_CTL_PICTURE=Bild:
|
||||
IDS_CTL_PLAYER=Spieler
|
||||
IDS_CTL_PLAYER1=Spieler 1
|
||||
IDS_CTL_PLAYER2=Spieler 2
|
||||
IDS_CTL_PLAYER3=Spieler 3
|
||||
IDS_CTL_PLAYER4=Spieler 4
|
||||
IDS_CTL_PLAYER=Spieler
|
||||
IDS_CTL_REALNAME=Realname:
|
||||
IDS_CTL_RECORD=Au&fnehmen
|
||||
IDS_CTL_RESOLUTION=Auflösung
|
||||
|
@ -183,8 +197,6 @@ IDS_CTL_USEOTHERSERVER=anderen Internetserver verwenden
|
|||
IDS_CTL_WON=gewonnen
|
||||
IDS_DESC_AUTOFRAMESKIP=Überspringt automatisch Grafikframes, wenn das Spiel stockt.
|
||||
IDS_DESC_AUTOMATICUPDATES=Prüft beim Programmstart einmal pro Tag, ob Updates für die installierte Version verfügbar sind.
|
||||
IDS_DESC_PACKETLOGGING=Speichert den gesamten Netzwerkverkehr in der Logdatei.
|
||||
IDS_DESC_UPNP=Aktiviert automatische Portweiterleitung für direkte Verbindungen zwischen Teilnehmern in Netzwerkspielen.
|
||||
IDS_DESC_CHANGESTHEWAYCONTROLDATAI=Legt fest, wie Steuerungsdaten in Netzwerkspielen zwischen Client-Rechnern ausgetauscht werden.
|
||||
IDS_DESC_CHECKONLINEFORNEWVERSIONS=Sucht online nach Updates für diese Version.
|
||||
IDS_DESC_CLIENTS=Clients:
|
||||
|
@ -218,6 +230,7 @@ IDS_DESC_NOPROMO=Wird nicht weiter befördert.
|
|||
IDS_DESC_NOTINITED=Nicht initialisiert
|
||||
IDS_DESC_OBJECT=Typ: %s|Erfahrung: %i|Runden: %i|Gestorben: %i mal|%s|Spielzeit: %s|Geburtstag: %s||
|
||||
IDS_DESC_OLDANDNEWSCORE=Alter und neuer Punktestand.
|
||||
IDS_DESC_PACKETLOGGING=Speichert den gesamten Netzwerkverkehr in der Logdatei.
|
||||
IDS_DESC_PLAYER=Punkte: %i|Runden: %i (%i gew. %i verl.)|Spielzeit: %s|Kommentar: %s|
|
||||
IDS_DESC_PLAYERSCONTROLLEDBYCOMPUT=Computergesteuerte Spieler.
|
||||
IDS_DESC_PLRS=Spieler:
|
||||
|
@ -231,6 +244,7 @@ IDS_DESC_SHOWSAVAILABLENETWORKGAME=Zeigt laufende Netzwerkspiele.
|
|||
IDS_DESC_TEAM=Team %s
|
||||
IDS_DESC_UNASSOCIATEDSAVEGAMEPLAYE=Nicht zugewiesene Spielstand-Spieler.
|
||||
IDS_DESC_UNKNOWNGAMESTATE=Spiel ist in einem unbekannten Zustand
|
||||
IDS_DESC_UPNP=Aktiviert automatische Portweiterleitung für direkte Verbindungen zwischen Teilnehmern in Netzwerkspielen.
|
||||
IDS_DESC_VERSION=Engine-Version: %s
|
||||
IDS_DESC_VOLUMEMUSIC=Lautstärke der Hintergrundmusik.
|
||||
IDS_DESC_VOLUMESOUND=Lautstärke der Geräuscheffekte.
|
||||
|
@ -248,8 +262,8 @@ IDS_DLGTIP_EXIT=Beendet das Programm.
|
|||
IDS_DLGTIP_GAMEGO=Startet das Spiel.
|
||||
IDS_DLGTIP_NETWORKGAME=Startet ein Netzwerkspiel oder tritt einem laufenden Netzwerkspiel bei.
|
||||
IDS_DLGTIP_NEWPLAYER=Erzeugt eine neue Spielerdatei.
|
||||
IDS_DLGTIP_OK2=Aktion bestätigen.
|
||||
IDS_DLGTIP_OK=Dialog schließen
|
||||
IDS_DLGTIP_OK2=Aktion bestätigen.
|
||||
IDS_DLGTIP_OPTIONS=Ändert die Programmeinstellungen.
|
||||
IDS_DLGTIP_PASTE=Fügt den Inhalt der Zwischenablage an der Einfügemarke ein
|
||||
IDS_DLGTIP_PING=Ping
|
||||
|
@ -329,12 +343,15 @@ IDS_DLG_VOTING=Abstimmung
|
|||
IDS_DLG_YES=&Ja
|
||||
IDS_DL_CANCEL=Download abbrechen
|
||||
IDS_DL_STATUSCONNECTING=verbinden...
|
||||
IDS_ERR_CHANNELNOTALLOWED=Kann nur Chat-Kanäle mit "clonk" im Namen und einem # am Anfang betreten.
|
||||
IDS_ERR_CLONKCOLLISION=Ein Clonk mit Dateinamen "%s" existiert bereits.
|
||||
IDS_ERR_CONFIG=Konfigurationsfehler
|
||||
IDS_ERR_CONFREAD=Einstellungen konnten nicht gelesen werden: %s
|
||||
IDS_ERR_CONFSAVE=Einstellungen konnten nicht gespeichert werden: %s
|
||||
IDS_ERR_CREATESCENARIO=Fehler beim Erstellen des Szenarios. Ist der Dateiname gültig und der Zielpfad beschreibbar?
|
||||
IDS_ERR_DDRAW=Fehler bei Direct3d oder OpenGL.
|
||||
IDS_ERR_DELOLDTITLE=Fehler beim Löschen des alten Titels aus Datei "%s": %s
|
||||
IDS_ERR_ENTERTITLE=Titel muss angegeben werden.
|
||||
IDS_ERR_ERRORADDINGNEWTITLEFORFIL=Fehler beim Setzen des Titels in Datei \"%s\": %s
|
||||
IDS_ERR_ERRORLOADINGROUNDRESULTS=Fehler beim Laden der Spielergebnisse.
|
||||
IDS_ERR_ERRORSAVINGROUNDRESULTS=Fehler beim Speichern der Spielergebnisse.
|
||||
|
@ -345,14 +362,14 @@ IDS_ERR_FATAL=FATALER FEHLER: %s
|
|||
IDS_ERR_FILEEXISTS=Datei mit Namen "%s" existiert bereits.
|
||||
IDS_ERR_GAMELEFTVIAPLAYERMENU=Spiel per Spielermenü verlassen.
|
||||
IDS_ERR_GBACK=Fehler beim Landschaftsgenerator.
|
||||
IDS_ERR_GFX_REGISTERMAIN=Fehler beim Laden der Grafikdatei
|
||||
IDS_ERR_GFX_INITSHADERS=Fehler beim Initialisieren der GLSL-Shader
|
||||
IDS_ERR_GFX_REGISTERMAIN=Fehler beim Laden der Grafikdatei
|
||||
IDS_ERR_HELPCMD=Grundlegende Befehle im IRC-Chat:|/join [Chatraum] - Neuen Chatraum betreten|/part - Diesen Chatraum verlassen|/notice [Benutzer] [Nachricht] - Sende eine Nachricht an den Benutzer|/query [Benutzer] - Öffne ein neues Chatfenster für einen privaten Dialog mit dem Benutzer|/msg [Benutzer] [Nachricht] - Dasselbe wie /query, nur dass bereits die erste Nachrich geschickt wird|/nick [Neuer Spitzname] - Wähle einen neuen Spitznamen|/quit - Chat ganz verlassen|/raw - Raw-Kommando senden
|
||||
IDS_ERR_INITFONTS=Fehler bei der Schriftinitialisierung
|
||||
IDS_ERR_INSUFFICIENTPARAMETERS=/%s: fehlende Parameter
|
||||
IDS_ERR_INVALIDCHANNELNAME=Kein gültiger Chat-Kanal.
|
||||
IDS_ERR_CHANNELNOTALLOWED=Kann nur Chat-Kanäle mit "clonk" im Namen und einem # am Anfang betreten.
|
||||
IDS_ERR_INVALIDNICKNAME2=/%s: unzulässiger Kurzname
|
||||
IDS_ERR_INVALIDNICKNAME=Unzulässiger Kurzname.
|
||||
IDS_ERR_INVALIDNICKNAME2=/%s: unzulässiger Kurzname
|
||||
IDS_ERR_INVALIDPASSWORDMAX31CHARA=Nicht zulässiges Passwort: maximal 31 Zeichen, keine Leerzeichen.
|
||||
IDS_ERR_INVALIDSYSGRP=System.c4g nicht vorhanden oder ungültig.
|
||||
IDS_ERR_IRCCONNECTIONFAILED=IRC-Verbindung fehlgeschlagen: %s
|
||||
|
@ -360,10 +377,12 @@ IDS_ERR_JOINPLR_NOFILE=Kann Spieler %s nicht beitreten lassen: Datei nicht gefun
|
|||
IDS_ERR_JOINPLR_NOLOCALCLIENT=Kann Spieler %s nicht bei Client %d beitreten lassen: Fremdclient!
|
||||
IDS_ERR_JOINQUEUEPLRS=C4PlayerInfoList::LocalJoinUnjoinedPlayersInQueue konnte Spieler %s nicht beitreten lassen!
|
||||
IDS_ERR_LEAGUEERRORREPORTINGUNEXP=Liga: Fehler beim Melden des unerwarteten Verbindungsabbruchs: %s
|
||||
IDS_ERR_LOAD_PLAYER=Fehler beim Laden des Spielers "%s"
|
||||
IDS_ERR_LOAD_RECR_NOEXTRACT=Fehler beim Wiederherstellen von Spieler %s aus %s: Entpacken fehlgeschlagen!
|
||||
IDS_ERR_LOAD_RECR_NOFILE=Fehler beim Wiederherstellen von Spieler %s: Datei nicht gefunden!
|
||||
IDS_ERR_LOAD_RECR_NOFILEFROMNET=C4PlayerInfoList::RecreatePlayers konnte Spieler %s nicht beitreten lassen: Datei nicht gefunden!
|
||||
IDS_ERR_MOVER=Fehler beim Laden der MassMover.
|
||||
IDS_ERR_NEWSCENARIOFILEEXISTS=Datei existiert. Bitte das alte Szenario löschen, einen anderen Titel angeben oder eine andere Datei wählen.
|
||||
IDS_ERR_NOFILE=Datei konnte nicht geladen werden
|
||||
IDS_ERR_NOGFXSYS=Fehler beim Grafiksystem.
|
||||
IDS_ERR_NOKEYBOARD=Fehler beim Initialisieren der Tastaturbelegung
|
||||
|
@ -396,14 +415,13 @@ IDS_ERR_SCENSECTION=Fehler beim Laden des Szenarienteils "%s"
|
|||
IDS_ERR_SWITCHRES=Fehler beim Ändern der Bildschirmauflösung: %s
|
||||
IDS_ERR_TITLE=Fehler
|
||||
IDS_ERR_TODO=Fehler beim Schreiben in TODO-Datei.
|
||||
IDS_ERR_TOOMANYDEFINITIONS=Zu viele Definitionen ausgewählt. %d gewählt; maximal erlaubt sind %d.
|
||||
IDS_ERR_UNKNOWNCMD=Unbekannter Befehl: "%s" - Befehl /help für eine Liste gültiger Befehle
|
||||
IDS_ERR_HELPCMD=Grundlegende Befehle im IRC-Chat:|/join [Chatraum] - Neuen Chatraum betreten|/part - Diesen Chatraum verlassen|/notice [Benutzer] [Nachricht] - Sende eine Nachricht an den Benutzer|/query [Benutzer] - Öffne ein neues Chatfenster für einen privaten Dialog mit dem Benutzer|/msg [Benutzer] [Nachricht] - Dasselbe wie /query, nur dass bereits die erste Nachrich geschickt wird|/nick [Neuer Spitzname] - Wähle einen neuen Spitznamen|/quit - Chat ganz verlassen|/raw - Raw-Kommando senden
|
||||
IDS_ERR_UNSUPPORTED_ACCELERATOR=Die Schnelltaste "%s" wird nicht unterstützt. (Im Text "%s".) Bitte melde diesen Fehler.
|
||||
IDS_ERR_USERCANCEL=Benutzerabbruch
|
||||
IDS_ERR_WRITENEWTITLE=Fehler beim Speichern des neuen Titels in Datei "%s": %s
|
||||
IDS_ERR_YOUHAVEBEENREMOVEDBYVOTIN=Du wurdest per Abstimmung aus dem Spiel entfernt. (%s)
|
||||
IDS_ERR_YOUSURRENDEREDTHELEAGUEGA=Du hast das Ligaspiel aufgegeben.
|
||||
IDS_ERR_LOAD_PLAYER=Fehler beim Laden des Spielers "%s"
|
||||
IDS_FAIL_DELETE=Fehler beim Löschen.
|
||||
IDS_FAIL_MODIFY=Fehler beim Bearbeiten der Datei.
|
||||
IDS_FAIL_RENAME=Fehler beim Umbenennen.
|
||||
|
@ -416,6 +434,9 @@ IDS_GAME_RECORDSTITLE=Aufnahmen
|
|||
IDS_GAME_SAVEGAMESTITLE=Spielstände
|
||||
IDS_HOLD_ABORT=Runde abbrechen?
|
||||
IDS_HOLD_SAVINGGAME=Spiel wird gespeichert...
|
||||
IDS_LANG_FALLBACK=
|
||||
IDS_LANG_INFO=Original-Sprachpaket.
|
||||
IDS_LANG_NAME=Deutsch
|
||||
IDS_LEAGUE_LEAGUEREPORTINGUNEXPECTED=Liga: unerwarteter Verbindungsabbruch wird gemeldet... (Grund %d)
|
||||
IDS_LEAGUE_WAITINGFORLASTLEAGUESERVE=Warten auf letzte Meldung des Ligaservers...
|
||||
IDS_LGA_INVALIDRESPONSE3=Ungültige Antwort des Ligaservers (kein CSID).
|
||||
|
@ -472,7 +493,7 @@ IDS_MNU_NET=Host
|
|||
IDS_MNU_NETCLIENT=Client %s (%i) deaktivieren
|
||||
IDS_MNU_NETCLIENTDE=Client %s (%i) deaktiviert
|
||||
IDS_MNU_NETHOST=Host %s
|
||||
IDS_MNU_NEW=Neu
|
||||
IDS_MNU_NEW=Neu...
|
||||
IDS_MNU_NEWVIEWPORT=Neues Sichtfenster
|
||||
IDS_MNU_OPEN=Öffnen...
|
||||
IDS_MNU_OPENWPLRS=Öffnen mit Spielern...
|
||||
|
@ -544,6 +565,8 @@ IDS_MSG_GFXERR_TXT=OpenClonk konnte OpenGL nicht laden. Prüfen Sie, ob Ihr Graf
|
|||
IDS_MSG_HASDISCONNECTED=%s hat die Verbindung beendet (%s).
|
||||
IDS_MSG_HASJOINEDTHECHANNEL=%s ist dem Chat-Kanal beigetreten.
|
||||
IDS_MSG_HASLEFTTHECHANNEL=%s hat den Chat-Kanal verlassen (%s)
|
||||
IDS_MSG_HIGHRESLANDSCAPE=Hochauflösende Landschaft
|
||||
IDS_MSG_HIGHRESLANDSCAPE_DESC=Effekt für hochauflösende Texturen auf der Landschaft.
|
||||
IDS_MSG_HOST=Host
|
||||
IDS_MSG_INACTIVE=Inaktiver
|
||||
IDS_MSG_INTERNETGAMEEVALUATED=Internetspiel ausgewertet.
|
||||
|
@ -578,6 +601,7 @@ IDS_MSG_MAP_STARTSCEN=Szenario %s starten
|
|||
IDS_MSG_MMTIMER_DESC=Kann bei Problemen mit der Spielgeschwindigkeit helfen.
|
||||
IDS_MSG_NEWPLRCOLOR=Neue &Farbe
|
||||
IDS_MSG_NEWPLRCOLOR_DESC=Zufällige neue Farbe aussuchen
|
||||
IDS_MSG_NEWRELEASEAVAILABLE=Für die neue Version ist kein Update-Paket verfügbar. Bitte lade die neue Version von der Download-Seite herunter.
|
||||
IDS_MSG_NODEBUGMODE=Kein Debug-Modus!
|
||||
IDS_MSG_NOPARTICIPATE_DESC=%s von der nächsten Runde ausnehmen.
|
||||
IDS_MSG_NOPLAYERSELECTED=Es sind keine Spieler ausgewählt. Bitte zuerst in der Spielerauswahl die Teilnehmer für diese Runde aktivieren.
|
||||
|
@ -637,7 +661,6 @@ IDS_MSG_TRYLEAGUESIGNUP=Liga-Anmeldung für Spieler %s...
|
|||
IDS_MSG_UPDATEFAILED=Update fehlgeschlagen.
|
||||
IDS_MSG_UPDATEINPROGRESS=Update-Vorgang läuft noch. Bitte warten.
|
||||
IDS_MSG_UPDATENOTAVAILABLE=Das Update ist eventuell noch nicht für dieses Betriebssystem verfügbar.
|
||||
IDS_MSG_NEWRELEASEAVAILABLE=Für die neue Version ist kein Update-Paket verfügbar. Bitte lade die neue Version von der Download-Seite herunter.
|
||||
IDS_MSG_UPNPHINT=Tipp: Deaktiviere UPnP in den Netzwerkoptionen um den Start zu beschleunigen (wird ggf. für Hosting benötigt)
|
||||
IDS_MSG_USINGPLR=Mit %s spielen
|
||||
IDS_MSG_USINGPLR_DESC=Diesen Spieler benutzen um das Spiel fortzusetzen
|
||||
|
@ -658,6 +681,8 @@ IDS_NET_CLIENTINFO_DESC=Umfangreiche Informationen anzeigen
|
|||
IDS_NET_CLIENTONNET=%s auf %s
|
||||
IDS_NET_CLIENT_ACTIVATED=%s %s aktiviert.
|
||||
IDS_NET_CLIENT_DEACTIVATED=%s %s deaktiviert.
|
||||
IDS_NET_CLIENT_IGNORE=Ignorieren
|
||||
IDS_NET_CLIENT_IGNORE_DESC=%s ignorieren. Du kannst Nachrichten von diesem Client dann in der Lobby nicht mehr lesen.
|
||||
IDS_NET_CLIENT_INFO=Client-Informationen
|
||||
IDS_NET_CLIENT_INFO_ADDRESSES=Adressen:
|
||||
IDS_NET_CLIENT_INFO_CONNDATA= Daten: %s (%s:%d, %d ms)
|
||||
|
@ -669,6 +694,7 @@ IDS_NET_CLIENT_JOIN=Client %s verbunden.
|
|||
IDS_NET_CLIENT_OBSERVE=%s %s muss zuschauen.
|
||||
IDS_NET_CLIENT_READY=%s %s is bereit.
|
||||
IDS_NET_CLIENT_REMOVED=%s %s entfernt (%s).
|
||||
IDS_NET_CLIENT_UNIGNORE=Nicht mehr ignorieren
|
||||
IDS_NET_CLIENT_UNREADY=%s %s is nicht mehr bereit.
|
||||
IDS_NET_COMMENTCHANGED=Neuer Netzwerkspiel-Kommentar gesetzt.
|
||||
IDS_NET_CONNECTHOST=Verbinde mit Host auf %s...
|
||||
|
@ -682,7 +708,6 @@ IDS_NET_CTRLMODE_NONE=Kein Netzwerkmodus
|
|||
IDS_NET_DEACTIVATECLIENT=De&aktivieren
|
||||
IDS_NET_ERR_COPYFILE=Fehler beim Dateikopieren
|
||||
IDS_NET_ERR_COPYFILE_LOCAL=Datei ist schon lokal vorhanden
|
||||
IDS_NET_ERR_VERSIONMISMATCH=WARNUNG! Spielversion beim Host (%s) weicht von lokaler Version (%s) ab. Das Spiel koennte asynchron ablaufen.
|
||||
IDS_NET_ERR_INITRESLIST=Netzwerk: Ressourcenliste kann nicht initialisiert werden!
|
||||
IDS_NET_ERR_LEAGUE=Ligafehler
|
||||
IDS_NET_ERR_LEAGUEINIT=Liga konnte nicht initialisiert werden: %s
|
||||
|
@ -697,6 +722,7 @@ IDS_NET_ERR_PORT_UDPDISC=UDP- und Discovery-Port müssen ungleiche Werte zwische
|
|||
IDS_NET_ERR_REFINVALID=Ungültige Spielreferenz
|
||||
IDS_NET_ERR_REFREQTIMEOUT=Zeitüberschreitung bei der Referenzabfrage
|
||||
IDS_NET_ERR_RESTIMEOUT=Warte auf %s: Zeitüberschreitung!
|
||||
IDS_NET_ERR_VERSIONMISMATCH=WARNUNG! Spielversion beim Host (%s) weicht von lokaler Version (%s) ab. Das Spiel koennte asynchron ablaufen.
|
||||
IDS_NET_GAMELIST=Laufende Spiele
|
||||
IDS_NET_GAMELIST_INFO=Liste der im Netzwerk gefundenen Spiele.
|
||||
IDS_NET_GRAPH=Graph
|
||||
|
@ -711,8 +737,6 @@ IDS_NET_INPUT=Netzwerk Eingehend
|
|||
IDS_NET_INVALIDREF=Ungültige Spielreferenz!
|
||||
IDS_NET_IP=IP:
|
||||
IDS_NET_IP_DESC=Spiel mit angegebener Adresse beitreten. Adresse eingeben um einem bekannten Spiel direkt beizutreten.
|
||||
IDS_NET_MSSEARCH=Suche:
|
||||
IDS_NET_MSSEARCH_DESC=Liste nach Schlüsselwörtern durchsuchen.
|
||||
IDS_NET_JOINGAME=Netzwerkbeitritt
|
||||
IDS_NET_JOINGAMEBY=Trete Spiel von %s bei...
|
||||
IDS_NET_JOINGAME_BTN=&Beitreten
|
||||
|
@ -726,6 +750,8 @@ IDS_NET_LEAGUE_STARTGAME=Spiel wird gestartet...
|
|||
IDS_NET_LOBBYWAITING=Teilnehmer werden erwartet...
|
||||
IDS_NET_LOCAL_CLIENT=Lokaler Client
|
||||
IDS_NET_MASTERSRV_DESC=Hier kann eine abweichende Internetserver-Adresse eingegeben werden. Ist diese Option abgeschaltet, wird der offizielle Internetserver auf openclonkclonk.org genutzt.
|
||||
IDS_NET_MSSEARCH=Suche:
|
||||
IDS_NET_MSSEARCH_DESC=Liste nach Schlüsselwörtern durchsuchen.
|
||||
IDS_NET_NEWGAME=&Neues Spiel
|
||||
IDS_NET_NEWGAME_DESC=Startet ein neues Netzwerk- oder Internetspiel.
|
||||
IDS_NET_NODIRECTSTART=Netzwerkspieldaten können nicht direkt gestartet werden.
|
||||
|
@ -897,8 +923,8 @@ IDS_TEXT_ADDTODO=Text zur lokalen TODO-Liste hinzufügen.
|
|||
IDS_TEXT_ALERTTHEHOSTIFTHEHOSTISAW=Den Host aufwecken (wenn er nicht da ist).
|
||||
IDS_TEXT_CHANGETHECOLOROFTHESPECIF=Farbe des angegebenen Spielers ändern.
|
||||
IDS_TEXT_CHANGEYOUROWNPLAYERCOLOR=Eigene Farbe ändern.
|
||||
IDS_TEXT_COMMANDSAVAILABLEDURINGLO=Verfügbare Befehle in der Lobby:
|
||||
IDS_TEXT_COMMANDSAVAILABLEDURINGGA=Verfügbare Befehle während des Spiels:
|
||||
IDS_TEXT_COMMANDSAVAILABLEDURINGLO=Verfügbare Befehle in der Lobby:
|
||||
IDS_TEXT_COMPUTER=Computer
|
||||
IDS_TEXT_CONTROLMODE=Netzwerkmodus
|
||||
IDS_TEXT_DESKTOP=Desktop
|
||||
|
@ -954,11 +980,3 @@ IDS_VOTE_SURRENDERWARNING=Es wurde entschieden, dass du das Spiel nicht verlasse
|
|||
IDS_VOTE_VOTEDOUT=rausgeworfen
|
||||
IDS_VOTE_WANTSTO=%s möchte %s
|
||||
IDS_VOTE_WANTSTOALLOW=%s möchte %s. Zulassen?
|
||||
IDS_NET_CLIENT_IGNORE_DESC=%s ignorieren. Du kannst Nachrichten von diesem Client dann in der Lobby nicht mehr lesen.
|
||||
IDS_NET_CLIENT_IGNORE=Ignorieren
|
||||
IDS_NET_CLIENT_UNIGNORE=Nicht mehr ignorieren
|
||||
IDS_MSG_HIGHRESLANDSCAPE=Hochauflösende Landschaft
|
||||
IDS_MSG_HIGHRESLANDSCAPE_DESC=Effekt für hochauflösende Texturen auf der Landschaft.
|
||||
IDS_ADDON_INSTALLSUCCESS=Installation von '%s' erfolgreich.
|
||||
IDS_ADDON_INSTALLFAILURE=Installation von '%s' fehlgeschlagen.
|
||||
IDS_ADDON_INSTALLTITLE=Addon-Installation
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
IDS_LANG_NAME=English
|
||||
IDS_LANG_INFO=Original language pack.
|
||||
IDS_LANG_FALLBACK=
|
||||
IDS_ADDON_INSTALLFAILURE=Failed to install '%s'.
|
||||
IDS_ADDON_INSTALLSUCCESS=Installation of '%s' successful.
|
||||
IDS_ADDON_INSTALLTITLE=Addon Installation
|
||||
IDS_BTN_ACTIVATE=Activate
|
||||
IDS_BTN_BACK=Back
|
||||
IDS_BTN_CHAT=&Chat
|
||||
|
@ -32,19 +32,28 @@ IDS_BTN_YES=Yes
|
|||
IDS_CHAT_NOTCONNECTED=not connected
|
||||
IDS_CHAT_SERVER=Server
|
||||
IDS_CNS_ACTION=Action:
|
||||
IDS_CNS_BROWSE=Browse...
|
||||
IDS_CNS_CONSOLE=Editor
|
||||
IDS_CNS_CONTENTS=Contents:
|
||||
IDS_CNS_CREATE=Create
|
||||
IDS_CNS_CREATESTATUS=Place new %s
|
||||
IDS_CNS_CREATOR=Create objects
|
||||
IDS_CNS_DEFINITIONS=Definitions
|
||||
IDS_CNS_DROPNODEF=Object invalid or not loaded: %s
|
||||
IDS_CNS_EFFECTS=Effects:
|
||||
IDS_CNS_EXACTTOSTATIC=When switching from exact to dynamic mode all changes made in dynamic mode will be lost.
|
||||
IDS_CNS_FILENAME=Filename
|
||||
IDS_CNS_FILLNOHALT=The fill tool cannot be used in halt mode.
|
||||
IDS_CNS_GAMECLOSED=Game cleared.
|
||||
IDS_CNS_GAMEMODE=Game mode
|
||||
IDS_CNS_GAMESAVED=Game saved.
|
||||
IDS_CNS_HEIGHT=Height
|
||||
IDS_CNS_LOG=Log
|
||||
IDS_CNS_MAPSIZE=Map size
|
||||
IDS_CNS_MAPZOOM=Zoom
|
||||
IDS_CNS_MULTIPLEOBJECTS=%i selected objects.
|
||||
IDS_CNS_NEWPLRVIEWPORT=New for %s
|
||||
IDS_CNS_NEWSCENARIO=New Scenario
|
||||
IDS_CNS_NOCHILDSAVE=%s is located in a group folder. Scenarios cannot be saved in closed group folders.
|
||||
IDS_CNS_NOFULLSCREENPLRS=Fullscreen mode requires at least one participating player.
|
||||
IDS_CNS_NOMATDEF=Cannot draw because selected material-texture combination '%s-%s' is not defined in the texture table.
|
||||
|
@ -58,12 +67,17 @@ IDS_CNS_PLRQUITNET=Remove %s (%s)
|
|||
IDS_CNS_PROPERTIES=Properties
|
||||
IDS_CNS_SAVEASERROR=Error while saving the scenario to %s.
|
||||
IDS_CNS_SAVERROR=Error while saving the scenario.
|
||||
IDS_CNS_SCENARIOFILE=OpenClonk scenario file
|
||||
IDS_CNS_SCENARIOSAVED=Scenario saved.
|
||||
IDS_CNS_SCENARIOSETTINGS=Scenario settings
|
||||
IDS_CNS_SCRIPT=Script
|
||||
IDS_CNS_SCRIPTCREATEDOBJECTS=This scenario's script has created objects on initialization.
|
||||
IDS_CNS_TITLE=Title
|
||||
IDS_CNS_TYPE=Type: %s (%s)
|
||||
IDS_CNS_VALUE=Value
|
||||
IDS_CNS_VIEWPORT=Viewport
|
||||
IDS_CNS_WARNDOUBLE=In order to avoid double creation, the script's 'Initialize' function should be modified.
|
||||
IDS_CNS_WIDTH=Width
|
||||
IDS_COMM_ACQUIRE=Acquisition
|
||||
IDS_COMM_ACTIVATE=Activation
|
||||
IDS_COMM_ATTACK=Attack
|
||||
|
@ -83,8 +97,8 @@ IDS_COMM_PUSHTO=Push
|
|||
IDS_COMM_PUT=Put
|
||||
IDS_COMM_RETRY=Retry
|
||||
IDS_COMM_SELL=Sell
|
||||
IDS_COMM_TAKE2=Take out
|
||||
IDS_COMM_TAKE=Take
|
||||
IDS_COMM_TAKE2=Take out
|
||||
IDS_COMM_THROW=Throw
|
||||
IDS_COMM_TRANSFER=Movement
|
||||
IDS_COMM_UNGRAB=Let go
|
||||
|
@ -100,7 +114,6 @@ IDS_CTL_ACTIVE=Active
|
|||
IDS_CTL_ANTIALIASING=Antialiasing:
|
||||
IDS_CTL_AUTHOR=Author: %s
|
||||
IDS_CTL_AUTOMATICUPDATES=Enable automatic updates
|
||||
IDS_CTL_PACKETLOGGING=Packet logging
|
||||
IDS_CTL_BACKGROUND=Background:
|
||||
IDS_CTL_BITDEPTH=Color Depth
|
||||
IDS_CTL_CHANNEL=Channel:
|
||||
|
@ -123,17 +136,17 @@ IDS_CTL_FRONTEND=Frontend
|
|||
IDS_CTL_FULLSCREENMODE=Window mode
|
||||
IDS_CTL_GAME=Game
|
||||
IDS_CTL_GAMEFUNCTIONS=Game Functions
|
||||
IDS_CTL_GAMESPEEDUP=Increase game speed
|
||||
IDS_CTL_GAMESPEEDDOWN=Decrease game speed
|
||||
IDS_CTL_GAMESPEEDUP=Increase game speed
|
||||
IDS_CTL_GFXENGINE=Renderer
|
||||
IDS_CTL_INETSERVER=&Internet
|
||||
IDS_CTL_IRCCHAT=IRC-Chat
|
||||
IDS_CTL_LANGUAGE=Language
|
||||
IDS_CTL_LEAGUE_ACCOUNT=League user name:
|
||||
IDS_CTL_LEAGUE_CHK_PLRPW=Specify league password
|
||||
IDS_CTL_LEAGUE_PLRPW2=League password (repeat):
|
||||
IDS_CTL_LEAGUE_PLRPW=League password:
|
||||
IDS_CTL_LEAGUE_CHK_REMEMBERLOGIN=Remember login
|
||||
IDS_CTL_LEAGUE_PLRPW=League password:
|
||||
IDS_CTL_LEAGUE_PLRPW2=League password (repeat):
|
||||
IDS_CTL_LOST=lost
|
||||
IDS_CTL_LOUD=loud
|
||||
IDS_CTL_MATERIAL=Material
|
||||
|
@ -141,21 +154,22 @@ IDS_CTL_MESSAGEBOARDBACK=Scroll messages back
|
|||
IDS_CTL_MESSAGEBOARDFORWARD=Scroll messages forward
|
||||
IDS_CTL_MMTIMER=Disable multimedia timer
|
||||
IDS_CTL_MUSIC=Music
|
||||
IDS_CTL_NAME2=Name:
|
||||
IDS_CTL_NAME=Name
|
||||
IDS_CTL_NAME2=Name:
|
||||
IDS_CTL_NICK=Nickname:
|
||||
IDS_CTL_NOGOAL=No game goal
|
||||
IDS_CTL_NOLANGINFO=Language pack not available.
|
||||
IDS_CTL_NONE=none
|
||||
IDS_CTL_OFF=off
|
||||
IDS_CTL_ON=on
|
||||
IDS_CTL_PACKETLOGGING=Packet logging
|
||||
IDS_CTL_PASSWORDOPTIONAL=Password (optional):
|
||||
IDS_CTL_PICTURE=Picture:
|
||||
IDS_CTL_PLAYER=Player
|
||||
IDS_CTL_PLAYER1=Player 1
|
||||
IDS_CTL_PLAYER2=Player 2
|
||||
IDS_CTL_PLAYER3=Player 3
|
||||
IDS_CTL_PLAYER4=Player 4
|
||||
IDS_CTL_PLAYER=Player
|
||||
IDS_CTL_REALNAME=Real name:
|
||||
IDS_CTL_RECORD=&Record
|
||||
IDS_CTL_RESOLUTION=Resolution
|
||||
|
@ -165,9 +179,9 @@ IDS_CTL_SCREENSHOTEX=Screenshot (full game area)
|
|||
IDS_CTL_SCRIPT=Script
|
||||
IDS_CTL_SCRIPTPLAYERS=Script players
|
||||
IDS_CTL_SENDMESSAGE=Send message
|
||||
IDS_CTL_SIZE=Size:
|
||||
IDS_CTL_SHOW=Display
|
||||
IDS_CTL_SILENT=quiet
|
||||
IDS_CTL_SIZE=Size:
|
||||
IDS_CTL_SMOKE=Effects Level
|
||||
IDS_CTL_SMOKEHI=High
|
||||
IDS_CTL_SMOKELOW=Low
|
||||
|
@ -183,8 +197,6 @@ IDS_CTL_USEOTHERSERVER=Use alternate internet server
|
|||
IDS_CTL_WON=won
|
||||
IDS_DESC_AUTOFRAMESKIP=Automatically skips graphics frames if the game is lagging.
|
||||
IDS_DESC_AUTOMATICUPDATES=With this option enabled, the program will automatically check for updates once a day at program start.
|
||||
IDS_DESC_PACKETLOGGING=Dumps all network traffic into the log file.
|
||||
IDS_DESC_UPNP=Enable automatic port forwarding for direct connections between participants in network games.
|
||||
IDS_DESC_CHANGESTHEWAYCONTROLDATAI=Changes the way control data is exchanged between network clients.
|
||||
IDS_DESC_CHECKONLINEFORNEWVERSIONS=Check online for new versions.
|
||||
IDS_DESC_CLIENTS=Clients:
|
||||
|
@ -218,6 +230,7 @@ IDS_DESC_NOPROMO=No further promotions.
|
|||
IDS_DESC_NOTINITED=Not initialised
|
||||
IDS_DESC_OBJECT=Type: %s|Experience: %i|Rounds: %i|Died: %i x|%s|Playing time: %s|Birthday: %s||
|
||||
IDS_DESC_OLDANDNEWSCORE=Old and new score.
|
||||
IDS_DESC_PACKETLOGGING=Dumps all network traffic into the log file.
|
||||
IDS_DESC_PLAYER=Score: %i|Rounds: %i (%i won %i lost)|Playing time: %s|Comment: %s|
|
||||
IDS_DESC_PLAYERSCONTROLLEDBYCOMPUT=Players controlled by computer.
|
||||
IDS_DESC_PLRS=Players:
|
||||
|
@ -231,6 +244,7 @@ IDS_DESC_SHOWSAVAILABLENETWORKGAME=Shows running network games.
|
|||
IDS_DESC_TEAM=Team %s
|
||||
IDS_DESC_UNASSOCIATEDSAVEGAMEPLAYE=Unassociated savegame players.
|
||||
IDS_DESC_UNKNOWNGAMESTATE=Game is in an unknown state
|
||||
IDS_DESC_UPNP=Enable automatic port forwarding for direct connections between participants in network games.
|
||||
IDS_DESC_VERSION=Engine version: %s
|
||||
IDS_DESC_VOLUMEMUSIC=Volume of background music.
|
||||
IDS_DESC_VOLUMESOUND=Volume of sound effects.
|
||||
|
@ -248,8 +262,8 @@ IDS_DLGTIP_EXIT=End the program.
|
|||
IDS_DLGTIP_GAMEGO=Starts the game.
|
||||
IDS_DLGTIP_NETWORKGAME=Start a network game or join an existing one.
|
||||
IDS_DLGTIP_NEWPLAYER=Create a new player file.
|
||||
IDS_DLGTIP_OK2=Confirm.
|
||||
IDS_DLGTIP_OK=Close dialog.
|
||||
IDS_DLGTIP_OK2=Confirm.
|
||||
IDS_DLGTIP_OPTIONS=Change program options.
|
||||
IDS_DLGTIP_PASTE=Inserts the contents of the clipboard.
|
||||
IDS_DLGTIP_PING=Ping
|
||||
|
@ -329,12 +343,15 @@ IDS_DLG_VOTING=Voting
|
|||
IDS_DLG_YES=&Yes
|
||||
IDS_DL_CANCEL=Cancel download
|
||||
IDS_DL_STATUSCONNECTING=connecting...
|
||||
IDS_ERR_CHANNELNOTALLOWED=Can only join channels with "clonk" in it's name and a # in front.
|
||||
IDS_ERR_CLONKCOLLISION=A Clonk with the file name "%s" exists already.
|
||||
IDS_ERR_CONFIG=Configuration error
|
||||
IDS_ERR_CONFREAD=Could not read configuration: %s
|
||||
IDS_ERR_CONFSAVE=Could not save configuration: %s
|
||||
IDS_ERR_CREATESCENARIO=Error creating scenario. Is the filename valid and destination writable?
|
||||
IDS_ERR_DDRAW=Direct3d or OpenGL failure.
|
||||
IDS_ERR_DELOLDTITLE=Error deleting old title from file "%s": %s
|
||||
IDS_ERR_ENTERTITLE=You must enter a scenario title!
|
||||
IDS_ERR_ERRORADDINGNEWTITLEFORFIL=Error adding new title for file \"%s\": %s
|
||||
IDS_ERR_ERRORLOADINGROUNDRESULTS=Error loading round results.
|
||||
IDS_ERR_ERRORSAVINGROUNDRESULTS=Error saving round results.
|
||||
|
@ -345,14 +362,14 @@ IDS_ERR_FATAL=FATAL ERROR: %s
|
|||
IDS_ERR_FILEEXISTS=A file with the name "%s" exists already.
|
||||
IDS_ERR_GAMELEFTVIAPLAYERMENU=Game left via player menu.
|
||||
IDS_ERR_GBACK=Landscape error.
|
||||
IDS_ERR_GFX_REGISTERMAIN=Could not register main graphic groups
|
||||
IDS_ERR_GFX_INITSHADERS=Failed to initialize GLSL shaders
|
||||
IDS_ERR_GFX_REGISTERMAIN=Could not register main graphic groups
|
||||
IDS_ERR_HELPCMD=Basic commands in the IRC-chat:|/join [channel] - Enter a new chat room|/part - Leave this chat room|/notice [user] [message] - Send a message to the user|/query [user] - Open a new chat window to chat for chatting with the user|/msg [user] [message] - The same as /query, only that the first message is already sent|/nick [new nick name] - Choose a new nick name|/quit - Exit the chat|/raw - Send a raw command
|
||||
IDS_ERR_INITFONTS=Error initializing fonts
|
||||
IDS_ERR_INSUFFICIENTPARAMETERS=/%s: insufficient parameters
|
||||
IDS_ERR_INVALIDCHANNELNAME=Invalid channel name.
|
||||
IDS_ERR_CHANNELNOTALLOWED=Can only join channels with "clonk" in it's name and a # in front.
|
||||
IDS_ERR_INVALIDNICKNAME2=/%s: invalid nick name
|
||||
IDS_ERR_INVALIDNICKNAME=Invalid nickname.
|
||||
IDS_ERR_INVALIDNICKNAME2=/%s: invalid nick name
|
||||
IDS_ERR_INVALIDPASSWORDMAX31CHARA=Invalid password. Maximum 31 characters. No spaces allowed.
|
||||
IDS_ERR_INVALIDSYSGRP=System.c4g not found or invalid.
|
||||
IDS_ERR_IRCCONNECTIONFAILED=IRC connection failed: %s
|
||||
|
@ -360,10 +377,12 @@ IDS_ERR_JOINPLR_NOFILE=Cannot join player %s: File not found!
|
|||
IDS_ERR_JOINPLR_NOLOCALCLIENT=Cannot join player %s to client %d: Client not local!
|
||||
IDS_ERR_JOINQUEUEPLRS=C4PlayerInfoList::LocalJoinUnjoinedPlayersInQueue failed to join player %s!
|
||||
IDS_ERR_LEAGUEERRORREPORTINGUNEXP=League: Error reporting unexpected disconnect: %s
|
||||
IDS_ERR_LOAD_PLAYER=Error loading player "%s"
|
||||
IDS_ERR_LOAD_RECR_NOEXTRACT=Error recreating player %s from %s: Extract failed!
|
||||
IDS_ERR_LOAD_RECR_NOFILE=Error recreating player %s: No file!
|
||||
IDS_ERR_LOAD_RECR_NOFILEFROMNET=C4PlayerInfoList::RecreatePlayers couldn't join player %s: No file.
|
||||
IDS_ERR_MOVER=MassMover data error.
|
||||
IDS_ERR_NEWSCENARIOFILEEXISTS=Filename exists. Please change title or press Browse to select a new filename.
|
||||
IDS_ERR_NOFILE=Could not load file
|
||||
IDS_ERR_NOGFXSYS=Graphics system error.
|
||||
IDS_ERR_NOKEYBOARD=Error initializing keyboard bindings
|
||||
|
@ -396,14 +415,13 @@ IDS_ERR_SCENSECTION=Error loading scenario section "%s"
|
|||
IDS_ERR_SWITCHRES=Error switching resolution: %s
|
||||
IDS_ERR_TITLE=Error
|
||||
IDS_ERR_TODO=Error writing to TODO file.
|
||||
IDS_ERR_TOOMANYDEFINITIONS=Too many definitions selected. %d selected; maximum allowed amount is %d.
|
||||
IDS_ERR_UNKNOWNCMD=Unknown command: "%s" - type /help to get a list of valid commands
|
||||
IDS_ERR_HELPCMD=Basic commands in the IRC-chat:|/join [channel] - Enter a new chat room|/part - Leave this chat room|/notice [user] [message] - Send a message to the user|/query [user] - Open a new chat window to chat for chatting with the user|/msg [user] [message] - The same as /query, only that the first message is already sent|/nick [new nick name] - Choose a new nick name|/quit - Exit the chat|/raw - Send a raw command
|
||||
IDS_ERR_UNSUPPORTED_ACCELERATOR=Accelerator key "%s" not supported. (In string "%s"). Please report this error.
|
||||
IDS_ERR_USERCANCEL=User abort
|
||||
IDS_ERR_WRITENEWTITLE=Error writing new title for file "%s": %s
|
||||
IDS_ERR_YOUHAVEBEENREMOVEDBYVOTIN=You have been removed by vote. (%s)
|
||||
IDS_ERR_YOUSURRENDEREDTHELEAGUEGA=You have surrendered the league game.
|
||||
IDS_ERR_LOAD_PLAYER=Error loading player "%s"
|
||||
IDS_FAIL_DELETE=Delete failure.
|
||||
IDS_FAIL_MODIFY=File modification failure.
|
||||
IDS_FAIL_RENAME=Rename failure.
|
||||
|
@ -416,6 +434,9 @@ IDS_GAME_RECORDSTITLE=Records
|
|||
IDS_GAME_SAVEGAMESTITLE=Savegames
|
||||
IDS_HOLD_ABORT=Abort round?
|
||||
IDS_HOLD_SAVINGGAME=Saving game...
|
||||
IDS_LANG_FALLBACK=
|
||||
IDS_LANG_INFO=Original language pack.
|
||||
IDS_LANG_NAME=English
|
||||
IDS_LEAGUE_LEAGUEREPORTINGUNEXPECTED=League: Reporting unexpected disconnect (reason %d)...
|
||||
IDS_LEAGUE_WAITINGFORLASTLEAGUESERVE=Waiting for last league server reply...
|
||||
IDS_LGA_INVALIDRESPONSE3=Invalid reply from internet server (no CSID).
|
||||
|
@ -472,7 +493,7 @@ IDS_MNU_NET=Host
|
|||
IDS_MNU_NETCLIENT=Client %s (%i)
|
||||
IDS_MNU_NETCLIENTDE=Client %s (%i) deactivated
|
||||
IDS_MNU_NETHOST=Host %s
|
||||
IDS_MNU_NEW=New
|
||||
IDS_MNU_NEW=New...
|
||||
IDS_MNU_NEWVIEWPORT=New viewport
|
||||
IDS_MNU_OPEN=Open...
|
||||
IDS_MNU_OPENWPLRS=Open with players...
|
||||
|
@ -544,6 +565,8 @@ IDS_MSG_GFXERR_TXT=OpenClonk could not load OpenGL. Please check if your graphic
|
|||
IDS_MSG_HASDISCONNECTED=%s has disconnected (%s).
|
||||
IDS_MSG_HASJOINEDTHECHANNEL=%s has joined the channel.
|
||||
IDS_MSG_HASLEFTTHECHANNEL=%s has left the channel (%s)
|
||||
IDS_MSG_HIGHRESLANDSCAPE=High resolution landscape
|
||||
IDS_MSG_HIGHRESLANDSCAPE_DESC=Effect for high resolution textures on the landscape.
|
||||
IDS_MSG_HOST=host
|
||||
IDS_MSG_INACTIVE=Inactive
|
||||
IDS_MSG_INTERNETGAMEEVALUATED=Internet game evaluated.
|
||||
|
@ -578,6 +601,7 @@ IDS_MSG_MAP_STARTSCEN=Start scenario %s
|
|||
IDS_MSG_MMTIMER_DESC=Try this option if you experience timing problems during the game, e.g. very slow game even in small scenarios on decent hardware.
|
||||
IDS_MSG_NEWPLRCOLOR=New &color
|
||||
IDS_MSG_NEWPLRCOLOR_DESC=Generate a new random player color
|
||||
IDS_MSG_NEWRELEASEAVAILABLE=For the new version there is no update package available. Please download and install the new version from the downloads page.
|
||||
IDS_MSG_NODEBUGMODE=No debug mode!
|
||||
IDS_MSG_NOPARTICIPATE_DESC=Exclude %s from participation in the next round.
|
||||
IDS_MSG_NOPLAYERSELECTED=No players are selected. Please go to player selection and activate the participants for this round.
|
||||
|
@ -638,7 +662,6 @@ IDS_MSG_UPDATEFAILED=Update failed.
|
|||
IDS_MSG_UPDATEINPROGRESS=Update still in progress. Please wait.
|
||||
IDS_MSG_UPDATENOTAVAILABLE=The update is possibly not yet available for this operating system.
|
||||
IDS_MSG_UPNPHINT=Hint: You can disable UPnP in network options to skip this delay if you don't need port forwarding to host games.
|
||||
IDS_MSG_NEWRELEASEAVAILABLE=For the new version there is no update package available. Please download and install the new version from the downloads page.
|
||||
IDS_MSG_USINGPLR=Using %s
|
||||
IDS_MSG_USINGPLR_DESC=Use this player to continue the savegame
|
||||
IDS_MSG_WASKICKEDFROMTHECHANNEL=%s was kicked from the channel (%s).
|
||||
|
@ -658,6 +681,8 @@ IDS_NET_CLIENTINFO_DESC=Show extended info
|
|||
IDS_NET_CLIENTONNET=%s on %s
|
||||
IDS_NET_CLIENT_ACTIVATED=%s %s activated.
|
||||
IDS_NET_CLIENT_DEACTIVATED=%s %s deactivated.
|
||||
IDS_NET_CLIENT_IGNORE=Ignore
|
||||
IDS_NET_CLIENT_IGNORE_DESC=Ignores %s. You will not be able to see messages from this client.
|
||||
IDS_NET_CLIENT_INFO=Client info
|
||||
IDS_NET_CLIENT_INFO_ADDRESSES=Addresses:
|
||||
IDS_NET_CLIENT_INFO_CONNDATA= Data: %s (%s:%d, %d ms)
|
||||
|
@ -669,6 +694,7 @@ IDS_NET_CLIENT_JOIN=Client %s connected.
|
|||
IDS_NET_CLIENT_OBSERVE=%s %s forced to observe.
|
||||
IDS_NET_CLIENT_READY=%s %s is ready.
|
||||
IDS_NET_CLIENT_REMOVED=%s %s removed (%s).
|
||||
IDS_NET_CLIENT_UNIGNORE=Unignore
|
||||
IDS_NET_CLIENT_UNREADY=%s %s is no longer ready.
|
||||
IDS_NET_COMMENTCHANGED=Network game comment adjusted.
|
||||
IDS_NET_CONNECTHOST=Connecting to host on %s...
|
||||
|
@ -682,7 +708,6 @@ IDS_NET_CTRLMODE_NONE=No control mode
|
|||
IDS_NET_DEACTIVATECLIENT=De&activate
|
||||
IDS_NET_ERR_COPYFILE=Error copying file
|
||||
IDS_NET_ERR_COPYFILE_LOCAL=The file is local already
|
||||
IDS_NET_ERR_VERSIONMISMATCH=WARNING! Host engine revision (%s) differs from local revision (%s). Engines might run out of sync.
|
||||
IDS_NET_ERR_INITRESLIST=Network: failed to initialize resource list!
|
||||
IDS_NET_ERR_LEAGUE=League error
|
||||
IDS_NET_ERR_LEAGUEINIT=Could not initialize league: %s
|
||||
|
@ -697,6 +722,7 @@ IDS_NET_ERR_PORT_UDPDISC=UDP port and discovery port must be set to different va
|
|||
IDS_NET_ERR_REFINVALID=Invalid reference
|
||||
IDS_NET_ERR_REFREQTIMEOUT=Reference request timed out
|
||||
IDS_NET_ERR_RESTIMEOUT=Waiting for %s: Timeout!
|
||||
IDS_NET_ERR_VERSIONMISMATCH=WARNING! Host engine revision (%s) differs from local revision (%s). Engines might run out of sync.
|
||||
IDS_NET_GAMELIST=Running Games
|
||||
IDS_NET_GAMELIST_INFO=List of running games found in network
|
||||
IDS_NET_GRAPH=Graph
|
||||
|
@ -711,8 +737,6 @@ IDS_NET_INPUT=Network Input
|
|||
IDS_NET_INVALIDREF=Invalid reference!
|
||||
IDS_NET_IP=IP:
|
||||
IDS_NET_IP_DESC=Join address of selected game. Enter an address here to join a game directly.
|
||||
IDS_NET_MSSEARCH=Search:
|
||||
IDS_NET_MSSEARCH_DESC=Search masterserver games for keywords.
|
||||
IDS_NET_JOINGAME=Joining network game
|
||||
IDS_NET_JOINGAMEBY=Joining game by %s...
|
||||
IDS_NET_JOINGAME_BTN=&Join game
|
||||
|
@ -726,6 +750,8 @@ IDS_NET_LEAGUE_STARTGAME=Starting game...
|
|||
IDS_NET_LOBBYWAITING=Awaiting participants...
|
||||
IDS_NET_LOCAL_CLIENT=Local client
|
||||
IDS_NET_MASTERSRV_DESC=Here you can enter the address of an alternate internet server you wish to use. If this option is disabled, the official server on openclonk.org is used.
|
||||
IDS_NET_MSSEARCH=Search:
|
||||
IDS_NET_MSSEARCH_DESC=Search masterserver games for keywords.
|
||||
IDS_NET_NEWGAME=&New game
|
||||
IDS_NET_NEWGAME_DESC=Create a new network or internet game.
|
||||
IDS_NET_NODIRECTSTART=Cannot start network game data directly.
|
||||
|
@ -897,8 +923,8 @@ IDS_TEXT_ADDTODO=Add text to local TODO list.
|
|||
IDS_TEXT_ALERTTHEHOSTIFTHEHOSTISAW=Alert the host (if the host is away).
|
||||
IDS_TEXT_CHANGETHECOLOROFTHESPECIF=Change the color of the specified player.
|
||||
IDS_TEXT_CHANGEYOUROWNPLAYERCOLOR=Change your own player color.
|
||||
IDS_TEXT_COMMANDSAVAILABLEDURINGLO=Commands available during lobby:
|
||||
IDS_TEXT_COMMANDSAVAILABLEDURINGGA=Commands available during game:
|
||||
IDS_TEXT_COMMANDSAVAILABLEDURINGLO=Commands available during lobby:
|
||||
IDS_TEXT_COMPUTER=Computer
|
||||
IDS_TEXT_CONTROLMODE=Control mode
|
||||
IDS_TEXT_DESKTOP=Desktop
|
||||
|
@ -954,11 +980,3 @@ IDS_VOTE_SURRENDERWARNING=It was decided that you cannot leave the game. However
|
|||
IDS_VOTE_VOTEDOUT=voted out
|
||||
IDS_VOTE_WANTSTO=%s wants to %s
|
||||
IDS_VOTE_WANTSTOALLOW=%s wants to %s. Allow?
|
||||
IDS_NET_CLIENT_IGNORE_DESC=Ignores %s. You will not be able to see messages from this client.
|
||||
IDS_NET_CLIENT_IGNORE=Ignore
|
||||
IDS_NET_CLIENT_UNIGNORE=Unignore
|
||||
IDS_MSG_HIGHRESLANDSCAPE=High resolution landscape
|
||||
IDS_MSG_HIGHRESLANDSCAPE_DESC=Effect for high resolution textures on the landscape.
|
||||
IDS_ADDON_INSTALLSUCCESS=Installation of '%s' successful.
|
||||
IDS_ADDON_INSTALLFAILURE=Failed to install '%s'.
|
||||
IDS_ADDON_INSTALLTITLE=Addon Installation
|
||||
|
|
|
@ -248,6 +248,20 @@ bool C4Console::Message(const char *szMessage, bool fQuery)
|
|||
return C4ConsoleGUI::Message(szMessage, fQuery);
|
||||
}
|
||||
|
||||
bool C4Console::FileNew()
|
||||
{
|
||||
StdCopyStrBuf filename;
|
||||
#ifdef WITH_QT_EDITOR
|
||||
if (!C4ConsoleGUI::CreateNewScenario(&filename)) return false;
|
||||
Application.ClearCommandLine();
|
||||
Application.OpenGame(filename.getData());
|
||||
return true;
|
||||
#endif
|
||||
// Not implemented
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
bool C4Console::FileOpen()
|
||||
{
|
||||
// Get scenario file name
|
||||
|
|
|
@ -76,6 +76,7 @@ public:
|
|||
bool SaveScenario(const char * path);
|
||||
bool FileSaveAs(bool fSaveGame);
|
||||
bool FileSave();
|
||||
bool FileNew();
|
||||
bool FileOpen();
|
||||
bool FileOpenWPlrs();
|
||||
bool FileCommand();
|
||||
|
|
|
@ -83,6 +83,7 @@ public:
|
|||
void Execute();
|
||||
void AddViewport(C4ViewportWindow *cvp);
|
||||
void OnObjectSelectionChanged(class C4EditCursorSelection &selection); // selection changed (through other means than creator or object list view)
|
||||
bool CreateNewScenario(StdStrBuf *out_filename);
|
||||
|
||||
friend class C4ConsoleQtMainWindow;
|
||||
friend class C4ToolsDlg;
|
||||
|
|
|
@ -337,6 +337,15 @@ void C4ConsoleGUI::UpdateMenuText(HMENU hMenu) { /* Translation done through QTr
|
|||
state->AddViewport(cvp);
|
||||
}
|
||||
|
||||
bool C4ConsoleGUI::CreateNewScenario(StdStrBuf *out_filename)
|
||||
{
|
||||
#ifdef WITH_QT_EDITOR
|
||||
return state->CreateNewScenario(out_filename);
|
||||
#else
|
||||
return false
|
||||
#endif
|
||||
}
|
||||
|
||||
void C4ConsoleGUI::OnObjectSelectionChanged(class C4EditCursorSelection &selection)
|
||||
{
|
||||
// selection changed (through other means than creator or object list view)
|
||||
|
|
|
@ -95,6 +95,7 @@
|
|||
<property name="title">
|
||||
<string comment="res">IDS_MNU_FILE</string>
|
||||
</property>
|
||||
<addaction name="actionFileNew"/>
|
||||
<addaction name="actionFileOpen"/>
|
||||
<addaction name="actionFileOpenWithPlayers"/>
|
||||
<addaction name="separator"/>
|
||||
|
@ -604,6 +605,17 @@
|
|||
<string>CURSOR_CREATEOBJ_TIP</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionFileNew">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_MNU_NEW</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string comment="res">IDS_MNU_NEW</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>Ctrl+N</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="resource.qrc"/>
|
||||
|
@ -1041,6 +1053,22 @@
|
|||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>actionFileNew</sender>
|
||||
<signal>triggered()</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>FileNew()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>-1</x>
|
||||
<y>-1</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>477</x>
|
||||
<y>288</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>PlayPressed(bool)</slot>
|
||||
|
@ -1071,5 +1099,6 @@
|
|||
<slot>CursorCreateObjPressed(bool)</slot>
|
||||
<slot>ForegroundMaterialChanged(QString)</slot>
|
||||
<slot>BackgroundMaterialChanged(QString)</slot>
|
||||
<slot>FileNew()</slot>
|
||||
</slots>
|
||||
</ui>
|
||||
|
|
|
@ -0,0 +1,354 @@
|
|||
/*
|
||||
* OpenClonk, http://www.openclonk.org
|
||||
*
|
||||
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
|
||||
* Copyright (c) 2013, The OpenClonk Team and contributors
|
||||
*
|
||||
* Distributed under the terms of the ISC license; see accompanying file
|
||||
* "COPYING" for details.
|
||||
*
|
||||
* "Clonk" is a registered trademark of Matthes Bender, used with permission.
|
||||
* See accompanying file "TRADEMARK" for details.
|
||||
*
|
||||
* To redistribute this file separately, substitute the full license texts
|
||||
* for the above references.
|
||||
*/
|
||||
|
||||
/* "New scenario" editor dialogue */
|
||||
|
||||
#include <C4Include.h>
|
||||
#include <C4Value.h>
|
||||
#include <C4Config.h>
|
||||
#include <C4ConsoleQtNewScenario.h>
|
||||
|
||||
|
||||
/* Definition file list model for new scenario definition selection */
|
||||
|
||||
C4ConsoleQtDefinitionFileListModel::DefFileInfo::DefFileInfo(C4ConsoleQtDefinitionFileListModel::DefFileInfo *parent, const char *filename, const char *root_path)
|
||||
: parent(parent), filename(filename), root_path(root_path), was_opened(false), is_root(false), selected(parent->IsSelected()), disabled(parent->IsSelected() /*not a bug*/)
|
||||
{
|
||||
// Delay opening of groups until information is actually requested
|
||||
// Full names into child groups in C4S always delimeted with backslashes
|
||||
if (parent->full_filename.getLength())
|
||||
full_filename = parent->full_filename + "\\" + filename;
|
||||
else
|
||||
full_filename = filename;
|
||||
}
|
||||
|
||||
C4ConsoleQtDefinitionFileListModel::DefFileInfo::DefFileInfo()
|
||||
: parent(NULL), was_opened(true), is_root(true), selected(false), disabled(false)
|
||||
{
|
||||
// Init as root: List definitions in root paths
|
||||
// Objects.ocd is always there (even if not actually found) and always first
|
||||
DefFileInfo *main_objects_def = new DefFileInfo(this, C4CFN_Objects, "");
|
||||
children.emplace_back(main_objects_def);
|
||||
main_objects_def->SetSelected(true);
|
||||
main_objects_def->SetDisabled(true);
|
||||
bool has_default_objects_found = false;
|
||||
for (auto & root_iter : ::Reloc)
|
||||
{
|
||||
const char *root = root_iter.strBuf.getData();
|
||||
for (DirectoryIterator def_file_iter(root); *def_file_iter; ++def_file_iter)
|
||||
{
|
||||
const char *def_file = ::GetFilename(*def_file_iter);
|
||||
if (WildcardMatch(C4CFN_DefFiles, def_file))
|
||||
{
|
||||
// Set path of main objects if found
|
||||
if (!has_default_objects_found && !strcmp(C4CFN_Objects, def_file))
|
||||
{
|
||||
main_objects_def->root_path.Copy(root);
|
||||
continue;
|
||||
}
|
||||
// Avoid duplicates on top level
|
||||
bool dup = false;
|
||||
for (auto & child : children)
|
||||
if (!strcmp(child->GetName(), def_file))
|
||||
{
|
||||
dup = true; break;
|
||||
}
|
||||
if (dup) continue;
|
||||
children.emplace_back(new DefFileInfo(this, def_file, root));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void C4ConsoleQtDefinitionFileListModel::DefFileInfo::SetSelected(bool to_val)
|
||||
{
|
||||
selected = to_val;
|
||||
// Selection propagates to children; children of selected are disabled because they cannot be un-selected
|
||||
for (auto & child : children)
|
||||
{
|
||||
child->SetSelected(selected);
|
||||
child->SetDisabled(selected);
|
||||
}
|
||||
}
|
||||
|
||||
bool C4ConsoleQtDefinitionFileListModel::DefFileInfo::OpenGroup()
|
||||
{
|
||||
children.clear();
|
||||
was_opened = true; // mark as opened even if fails to prevent permanent re-loading of broken groups
|
||||
if (parent->IsRoot())
|
||||
{
|
||||
if (!grp.Open((root_path + DirectorySeparator + filename).getData())) return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!grp.OpenAsChild(&parent->grp, filename.getData())) return false;
|
||||
}
|
||||
// Init child array (without loading full groups)
|
||||
StdStrBuf child_filename;
|
||||
children.reserve(grp.EntryCount(C4CFN_DefFiles));
|
||||
grp.ResetSearch();
|
||||
while (grp.FindNextEntry(C4CFN_DefFiles, &child_filename))
|
||||
children.emplace_back(new DefFileInfo(this, child_filename.getData(), NULL));
|
||||
return true;
|
||||
}
|
||||
|
||||
int32_t C4ConsoleQtDefinitionFileListModel::DefFileInfo::GetChildCount()
|
||||
{
|
||||
if (!was_opened) OpenGroup();
|
||||
return children.size();
|
||||
}
|
||||
|
||||
C4ConsoleQtDefinitionFileListModel::DefFileInfo *C4ConsoleQtDefinitionFileListModel::DefFileInfo::GetChild(int32_t index)
|
||||
{
|
||||
if (!was_opened) OpenGroup();
|
||||
if (index >= children.size()) return NULL;
|
||||
return children[index].get();
|
||||
}
|
||||
|
||||
int32_t C4ConsoleQtDefinitionFileListModel::DefFileInfo::GetChildIndex(const DefFileInfo *child)
|
||||
{
|
||||
auto iter = std::find_if(children.begin(), children.end(),
|
||||
[child](std::unique_ptr<DefFileInfo> & item)->bool { return item.get() == child; });
|
||||
if (iter == children.end()) return -1; // not found
|
||||
return int32_t(iter - children.begin());
|
||||
}
|
||||
|
||||
void C4ConsoleQtDefinitionFileListModel::DefFileInfo::AddSelectedDefinitions(std::list<const char *> *result) const
|
||||
{
|
||||
// Add parent-most selected
|
||||
if (IsSelected())
|
||||
result->push_back(full_filename.getData());
|
||||
else
|
||||
for (auto &iter : children) iter->AddSelectedDefinitions(result);
|
||||
}
|
||||
|
||||
C4ConsoleQtDefinitionFileListModel::C4ConsoleQtDefinitionFileListModel()
|
||||
{
|
||||
}
|
||||
|
||||
C4ConsoleQtDefinitionFileListModel::~C4ConsoleQtDefinitionFileListModel()
|
||||
{
|
||||
}
|
||||
|
||||
std::list<const char *> C4ConsoleQtDefinitionFileListModel::GetSelectedDefinitions() const
|
||||
{
|
||||
std::list<const char *> result;
|
||||
root.AddSelectedDefinitions(&result);
|
||||
return result;
|
||||
}
|
||||
|
||||
int C4ConsoleQtDefinitionFileListModel::rowCount(const QModelIndex & parent) const
|
||||
{
|
||||
if (!parent.isValid()) return root.GetChildCount();
|
||||
DefFileInfo *parent_def = static_cast<DefFileInfo *>(parent.internalPointer());
|
||||
if (!parent_def) return 0;
|
||||
return parent_def->GetChildCount();
|
||||
}
|
||||
|
||||
int C4ConsoleQtDefinitionFileListModel::columnCount(const QModelIndex & parent) const
|
||||
{
|
||||
return 1; // Name
|
||||
}
|
||||
|
||||
QVariant C4ConsoleQtDefinitionFileListModel::data(const QModelIndex & index, int role) const
|
||||
{
|
||||
DefFileInfo *def = static_cast<DefFileInfo *>(index.internalPointer());
|
||||
if (!def) return QVariant();
|
||||
// Query latest data from prop list
|
||||
if (role == Qt::DisplayRole)
|
||||
{
|
||||
return QString(def->GetName());
|
||||
}
|
||||
else if (role == Qt::CheckStateRole)
|
||||
{
|
||||
return def->IsSelected() ? Qt::Checked : Qt::Unchecked;
|
||||
}
|
||||
// Nothing to show
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QModelIndex C4ConsoleQtDefinitionFileListModel::index(int row, int column, const QModelIndex &parent) const
|
||||
{
|
||||
if (column) return QModelIndex();
|
||||
DefFileInfo *parent_def = &root;
|
||||
if (parent.isValid()) parent_def = static_cast<DefFileInfo *>(parent.internalPointer());
|
||||
if (!parent_def) return QModelIndex();
|
||||
return createIndex(row, column, parent_def->GetChild(row));
|
||||
}
|
||||
|
||||
QModelIndex C4ConsoleQtDefinitionFileListModel::parent(const QModelIndex &index) const
|
||||
{
|
||||
DefFileInfo *def = static_cast<DefFileInfo *>(index.internalPointer());
|
||||
if (!def) return QModelIndex();
|
||||
DefFileInfo *parent_def = def->GetParent();
|
||||
if (!parent_def) return QModelIndex();
|
||||
int32_t def_index = parent_def->GetChildIndex(def);
|
||||
if (def_index < 0) return QModelIndex(); // can't happen
|
||||
return createIndex(def_index, 0, parent_def);
|
||||
}
|
||||
|
||||
Qt::ItemFlags C4ConsoleQtDefinitionFileListModel::flags(const QModelIndex &index) const
|
||||
{
|
||||
Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsUserCheckable;
|
||||
DefFileInfo *def = static_cast<DefFileInfo *>(index.internalPointer());
|
||||
if (def && !def->IsDisabled()) flags |= Qt::ItemIsEnabled;
|
||||
return flags;
|
||||
}
|
||||
|
||||
bool C4ConsoleQtDefinitionFileListModel::setData(const QModelIndex& index, const QVariant& value, int role)
|
||||
{
|
||||
// Adjust check-state
|
||||
if (role == Qt::CheckStateRole)
|
||||
{
|
||||
DefFileInfo *def = static_cast<DefFileInfo *>(index.internalPointer());
|
||||
if (def && !def->IsDisabled())
|
||||
{
|
||||
def->SetSelected(value.toBool());
|
||||
// Update changed index and all children
|
||||
int32_t child_count = def->GetChildCount();
|
||||
QModelIndex end_changed = index;
|
||||
if (child_count) end_changed = createIndex(child_count - 1, 0, def->GetChild(child_count - 1));
|
||||
emit dataChanged(index, end_changed);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* New scenario dialogue */
|
||||
|
||||
C4ConsoleQtNewScenarioDlg::C4ConsoleQtNewScenarioDlg(class QMainWindow *parent_window)
|
||||
: QDialog(parent_window, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint)
|
||||
, has_custom_filename(false)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
adjustSize();
|
||||
setMinimumSize(size());
|
||||
ui.filenameEdit->setText(::Config.General.UserDataPath);
|
||||
ui.definitionTreeView->setModel(&def_file_model);
|
||||
}
|
||||
|
||||
bool C4ConsoleQtNewScenarioDlg::SaveScenario(C4Group &grp)
|
||||
{
|
||||
// Save c4s
|
||||
if (!c4s.Save(grp)) return false;
|
||||
//return grp.Save(false); -- not needed because group is unpacked
|
||||
return true;
|
||||
}
|
||||
|
||||
void C4ConsoleQtNewScenarioDlg::CreatePressed()
|
||||
{
|
||||
// Take over settings
|
||||
c4s.Landscape.MapWdt.SetConstant(ui.mapWidthSpinBox->value());
|
||||
c4s.Landscape.MapHgt.SetConstant(ui.mapHeightSpinBox->value());
|
||||
c4s.Landscape.MapZoom.SetConstant(ui.mapZoomSpinBox->value());
|
||||
SCopy(ui.titleEdit->text().toUtf8(), c4s.Head.Title, C4MaxTitle);
|
||||
c4s.Game.Mode.Copy(ui.gameModeComboBox->currentText().toUtf8());
|
||||
if (c4s.Game.Mode == "Undefined") c4s.Game.Mode.Clear();
|
||||
filename.Copy(ui.filenameEdit->text().toUtf8());
|
||||
std::list<const char *> definitions = def_file_model.GetSelectedDefinitions();
|
||||
if (definitions.size() > C4S_MaxDefinitions)
|
||||
{
|
||||
DoError(FormatString(::LoadResStr("IDS_ERR_TOOMANYDEFINITIONS"), (int)definitions.size(), (int)C4S_MaxDefinitions).getData());
|
||||
ui.definitionTreeView->setFocus();
|
||||
return;
|
||||
}
|
||||
std::ostringstream definitions_join("");
|
||||
if (definitions.size())
|
||||
{
|
||||
// definitions_join = definitions.join(";")
|
||||
auto iter_end = definitions.end();
|
||||
std::copy(definitions.begin(), --iter_end, std::ostream_iterator<std::string>(definitions_join, ";"));
|
||||
definitions_join << *iter_end;
|
||||
}
|
||||
c4s.Definitions.SetModules(definitions_join.str().c_str());
|
||||
// Check validity of settings
|
||||
if (!*c4s.Head.Title)
|
||||
{
|
||||
DoError(::LoadResStr("IDS_ERR_ENTERTITLE"));
|
||||
ui.titleEdit->setFocus();
|
||||
return;
|
||||
}
|
||||
if (ItemExists(filename.getData()))
|
||||
{
|
||||
DoError(::LoadResStr("IDS_ERR_NEWSCENARIOFILEEXISTS"));
|
||||
ui.titleEdit->setFocus();
|
||||
return;
|
||||
}
|
||||
// Try to create scenario
|
||||
if (!CreatePath(filename.getData()))
|
||||
{
|
||||
DoError(::LoadResStr("IDS_ERR_CREATESCENARIO"));
|
||||
ui.titleEdit->setFocus();
|
||||
return;
|
||||
}
|
||||
C4Group grp;
|
||||
if (!grp.Open(filename.getData(), false) || !SaveScenario(grp))
|
||||
{
|
||||
grp.Close();
|
||||
EraseDirectory(filename.getData());
|
||||
DoError(::LoadResStr("IDS_ERR_CREATESCENARIO"));
|
||||
ui.titleEdit->setFocus();
|
||||
return;
|
||||
}
|
||||
// Close dialogue with OK
|
||||
accept();
|
||||
}
|
||||
|
||||
// Filter for allowed characters in filename
|
||||
// (Also replace space, because spaces in filenames suk)
|
||||
static char ReplaceSpecialFilenameChars(char c)
|
||||
{
|
||||
const char *special_chars = "\\/:<>|$?\" ";
|
||||
return strchr(special_chars, c) ? '_' : c;
|
||||
}
|
||||
|
||||
void C4ConsoleQtNewScenarioDlg::TitleChanged(const QString &new_title)
|
||||
{
|
||||
if (!has_custom_filename)
|
||||
{
|
||||
// Default filename by title
|
||||
std::string filename = new_title.toStdString();
|
||||
std::transform(filename.begin(), filename.end(), filename.begin(), ReplaceSpecialFilenameChars);
|
||||
filename += (C4CFN_ScenarioFiles+1);
|
||||
ui.filenameEdit->setText(Config.AtUserDataPath(filename.c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
void C4ConsoleQtNewScenarioDlg::DoError(const char *msg)
|
||||
{
|
||||
QMessageBox::critical(this, ::LoadResStr("IDS_ERR_TITLE"), QString(msg));
|
||||
}
|
||||
|
||||
void C4ConsoleQtNewScenarioDlg::BrowsePressed()
|
||||
{
|
||||
// Browse for new filename to be used instead of the filename generated from the title
|
||||
QString new_file;
|
||||
for (;;)
|
||||
{
|
||||
new_file = QFileDialog::getSaveFileName(this, LoadResStr("IDS_CNS_NEWSCENARIO"), Config.General.UserDataPath, QString("%1 (%2)").arg(LoadResStr("IDS_CNS_SCENARIOFILE")).arg(C4CFN_ScenarioFiles), NULL, QFileDialog::DontConfirmOverwrite);
|
||||
if (!new_file.size()) return;
|
||||
// Extension must be .ocs
|
||||
if (!new_file.endsWith(C4CFN_ScenarioFiles + 1)) new_file += (C4CFN_ScenarioFiles + 1);
|
||||
if (!ItemExists(new_file.toUtf8())) break;
|
||||
// Overwriting of existing scenarios not supported
|
||||
QMessageBox::critical(this, ::LoadResStr("IDS_ERR_TITLE"), ::LoadResStr("IDS_ERR_NEWSCENARIOFILEEXISTS"));
|
||||
}
|
||||
filename.Copy(new_file.toUtf8());
|
||||
ui.filenameEdit->setText(filename.getData()); // set from converted filename just in case weird stuff happened in toUtf8
|
||||
// After setting a new filename, it no longer changes when changing the title
|
||||
has_custom_filename = true;
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
* OpenClonk, http://www.openclonk.org
|
||||
*
|
||||
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
|
||||
* Copyright (c) 2013, The OpenClonk Team and contributors
|
||||
*
|
||||
* Distributed under the terms of the ISC license; see accompanying file
|
||||
* "COPYING" for details.
|
||||
*
|
||||
* "Clonk" is a registered trademark of Matthes Bender, used with permission.
|
||||
* See accompanying file "TRADEMARK" for details.
|
||||
*
|
||||
* To redistribute this file separately, substitute the full license texts
|
||||
* for the above references.
|
||||
*/
|
||||
|
||||
/* Proplist table view */
|
||||
|
||||
#ifndef INC_C4ConsoleQtNewScenario
|
||||
#define INC_C4ConsoleQtNewScenario
|
||||
#ifdef WITH_QT_EDITOR
|
||||
|
||||
#include <C4Include.h> // needed for automoc
|
||||
#include <C4ConsoleGUI.h> // for glew.h
|
||||
#include <C4ConsoleQt.h>
|
||||
#include <ui_C4ConsoleQtNewScenario.h>
|
||||
#include <C4Scenario.h>
|
||||
|
||||
// Definition file view for selection in New Scenario dialogue
|
||||
class C4ConsoleQtDefinitionFileListModel : public QAbstractItemModel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
C4ConsoleQtDefinitionFileListModel();
|
||||
~C4ConsoleQtDefinitionFileListModel();
|
||||
std::list<const char *> GetSelectedDefinitions() const;
|
||||
|
||||
private:
|
||||
|
||||
// Cached def file info: Children loaded on demand (if user expands into tree)
|
||||
class DefFileInfo
|
||||
{
|
||||
DefFileInfo *parent;
|
||||
C4Group grp;
|
||||
std::vector< std::unique_ptr<DefFileInfo> > children;
|
||||
StdCopyStrBuf filename, root_path, full_filename;
|
||||
bool was_opened, is_root;
|
||||
bool selected, disabled;
|
||||
|
||||
bool OpenGroup();
|
||||
public:
|
||||
DefFileInfo(DefFileInfo *parent, const char *filename, const char *root_path);
|
||||
DefFileInfo(); // init as root
|
||||
int32_t GetChildCount();
|
||||
DefFileInfo *GetParent() const { return parent; }
|
||||
DefFileInfo *GetChild(int32_t index);
|
||||
int32_t GetChildIndex(const DefFileInfo *child);
|
||||
const char *GetName() const { return filename.getData(); }
|
||||
bool IsRoot() const { return is_root; }
|
||||
void SetSelected(bool to_val);
|
||||
bool IsSelected() const { return selected; }
|
||||
void SetDisabled(bool to_val) { disabled = to_val; }
|
||||
bool IsDisabled() const { return disabled; }
|
||||
void AddSelectedDefinitions(std::list<const char *> *result) const;
|
||||
};
|
||||
|
||||
mutable DefFileInfo root;
|
||||
|
||||
protected:
|
||||
int rowCount(const QModelIndex & parent = QModelIndex()) const override;
|
||||
int columnCount(const QModelIndex & parent = QModelIndex()) const override;
|
||||
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
|
||||
QModelIndex index(int row, int column, const QModelIndex &parent) const override;
|
||||
QModelIndex parent(const QModelIndex &index) const override;
|
||||
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
||||
bool setData(const QModelIndex& index, const QVariant& value, int role) override;
|
||||
};
|
||||
|
||||
class C4ConsoleQtNewScenarioDlg : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Ui::NewScenarioDialog ui;
|
||||
StdCopyStrBuf filename;
|
||||
C4Scenario c4s;
|
||||
bool has_custom_filename;
|
||||
C4ConsoleQtDefinitionFileListModel def_file_model;
|
||||
|
||||
public:
|
||||
C4ConsoleQtNewScenarioDlg(class QMainWindow *parent_window);
|
||||
const char *GetFilename() const { return filename.getData(); }
|
||||
|
||||
private:
|
||||
bool SaveScenario(class C4Group &grp);
|
||||
void DoError(const char *msg);
|
||||
|
||||
protected slots:
|
||||
void CreatePressed();
|
||||
void BrowsePressed();
|
||||
void TitleChanged(const QString &new_title);
|
||||
};
|
||||
|
||||
#endif // WITH_QT_EDITOR
|
||||
#endif // INC_C4ConsoleQtNewScenario
|
|
@ -0,0 +1,450 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>NewScenarioDialog</class>
|
||||
<widget class="QDialog" name="NewScenarioDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>713</width>
|
||||
<height>277</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>323</width>
|
||||
<height>114</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string comment="res">IDS_CNS_NEWSCENARIO</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="resource.qrc">
|
||||
<normaloff>:/editor/res/ocs.ico</normaloff>:/editor/res/ocs.ico</iconset>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="1" column="0">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string comment="res">IDS_CNS_SCENARIOSETTINGS</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="2" column="3">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="filenameEdit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="browseButton">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_BROWSE</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLineEdit" name="titleEdit"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_MAPSIZE</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_TITLE</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>(</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_WIDTH</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="mapWidthSpinBox">
|
||||
<property name="minimum">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>50</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>x</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_HEIGHT</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="mapHeightSpinBox">
|
||||
<property name="minimum">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>40</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>) x</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_MAPZOOM</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="mapZoomSpinBox">
|
||||
<property name="minimum">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>24</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>8</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_FILENAME</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_DEFINITIONS</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="3">
|
||||
<widget class="QTreeView" name="definitionTreeView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="baseSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="headerHidden">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_GAMEMODE</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QComboBox" name="gameModeComboBox">
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QComboBox::AdjustToContents</enum>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Unspecified</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Melee</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Parkour</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Settlement</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Defense</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>131</width>
|
||||
<height>31</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="okButton">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_CNS_CREATE</string>
|
||||
</property>
|
||||
<property name="default">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="cancelButton">
|
||||
<property name="text">
|
||||
<string comment="res">IDS_DLG_CANCEL</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>titleEdit</tabstop>
|
||||
<tabstop>filenameEdit</tabstop>
|
||||
<tabstop>browseButton</tabstop>
|
||||
<tabstop>mapWidthSpinBox</tabstop>
|
||||
<tabstop>mapHeightSpinBox</tabstop>
|
||||
<tabstop>mapZoomSpinBox</tabstop>
|
||||
<tabstop>gameModeComboBox</tabstop>
|
||||
<tabstop>definitionTreeView</tabstop>
|
||||
<tabstop>okButton</tabstop>
|
||||
<tabstop>cancelButton</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="resource.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>okButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>NewScenarioDialog</receiver>
|
||||
<slot>CreatePressed()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>596</x>
|
||||
<y>262</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>96</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cancelButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>NewScenarioDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>701</x>
|
||||
<y>262</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>179</x>
|
||||
<y>276</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>titleEdit</sender>
|
||||
<signal>textEdited(QString)</signal>
|
||||
<receiver>NewScenarioDialog</receiver>
|
||||
<slot>TitleChanged(QString)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>416</x>
|
||||
<y>43</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>356</x>
|
||||
<y>138</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>browseButton</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>NewScenarioDialog</receiver>
|
||||
<slot>BrowsePressed()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>638</x>
|
||||
<y>73</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>356</x>
|
||||
<y>138</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>CreatePressed()</slot>
|
||||
<slot>TitleChanged(QString)</slot>
|
||||
<slot>BrowsePressed()</slot>
|
||||
</slots>
|
||||
</ui>
|
|
@ -21,6 +21,7 @@
|
|||
#include <C4ConsoleQtPropListViewer.h>
|
||||
#include <C4ConsoleQtObjectListViewer.h>
|
||||
#include <C4ConsoleQtDefinitionListViewer.h>
|
||||
#include <C4ConsoleQtNewScenario.h>
|
||||
#include <C4ConsoleQtViewport.h>
|
||||
#include <C4Console.h>
|
||||
#include <StdRegistry.h>
|
||||
|
@ -261,6 +262,7 @@ void C4ConsoleQtMainWindow::DrawSizeChanged(int newval)
|
|||
}
|
||||
|
||||
// File menu
|
||||
void C4ConsoleQtMainWindow::FileNew() { ::Console.FileNew(); }
|
||||
void C4ConsoleQtMainWindow::FileOpen() { ::Console.FileOpen(); }
|
||||
void C4ConsoleQtMainWindow::FileOpenWithPlayers() { Console.FileOpenWPlrs(); }
|
||||
void C4ConsoleQtMainWindow::FileRecord() { ::Console.FileRecord(); }
|
||||
|
@ -269,6 +271,7 @@ void C4ConsoleQtMainWindow::FileSaveAs() { ::Console.FileSaveAs(false); }
|
|||
void C4ConsoleQtMainWindow::FileSaveGameAs() { ::Console.FileSaveAs(true); }
|
||||
void C4ConsoleQtMainWindow::FileClose() { ::Console.FileClose(); }
|
||||
void C4ConsoleQtMainWindow::FileQuit() { ::Console.FileQuit(); }
|
||||
|
||||
// Player menu
|
||||
void C4ConsoleQtMainWindow::PlayerJoin() { ::Console.PlayerJoin(); }
|
||||
// Window menu
|
||||
|
@ -486,6 +489,7 @@ void C4ConsoleGUIState::UpdateActionStates()
|
|||
bool has_draw_tools = enabled && landscape_mode != C4LSC_Dynamic;
|
||||
bool has_exact_draw_tools = enabled && landscape_mode == C4LSC_Exact;
|
||||
bool is_drawing = has_draw_tools && editcursor_mode == C4CNS_ModeDraw;
|
||||
ui.actionFileNew->setEnabled(!enabled);
|
||||
ui.actionPlay->setEnabled(enabled);
|
||||
ui.actionPause->setEnabled(enabled);
|
||||
ui.actionCursorGame->setEnabled(enabled);
|
||||
|
@ -762,3 +766,13 @@ void C4ConsoleGUIState::OnCreatorCurrentChanged(const QModelIndex & current, con
|
|||
//if (new_def) ::Console.EditCursor.SetMode(C4CNS_ModeCreateObject); - done by selection change
|
||||
::Console.EditCursor.SetCreatorDef(new_def); // set or clear def in EditCursor
|
||||
}
|
||||
|
||||
bool C4ConsoleGUIState::CreateNewScenario(StdStrBuf *out_filename)
|
||||
{
|
||||
// Show dialogue
|
||||
std::unique_ptr<C4ConsoleQtNewScenarioDlg> dlg(new C4ConsoleQtNewScenarioDlg(window.get()));
|
||||
if (!dlg->exec()) return false;
|
||||
// Dlg said OK! Scenario created
|
||||
out_filename->Copy(dlg->GetFilename());
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ public:
|
|||
|
||||
void closeEvent(class QCloseEvent *event) override;
|
||||
|
||||
public slots:
|
||||
public slots:
|
||||
// Toolbar items
|
||||
void PlayPressed(bool down);
|
||||
void PausePressed(bool down);
|
||||
|
@ -112,6 +112,7 @@ public:
|
|||
void ExactLandscapePressed(bool down);
|
||||
void DrawSizeChanged(int newval);
|
||||
// File menu
|
||||
void FileNew();
|
||||
void FileOpen();
|
||||
void FileOpenWithPlayers();
|
||||
void FileRecord();
|
||||
|
@ -210,6 +211,8 @@ public:
|
|||
void OnObjectListSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected);
|
||||
void OnCreatorCurrentChanged(const QModelIndex & current, const QModelIndex & previous);
|
||||
|
||||
bool CreateNewScenario(StdStrBuf *out_filename); // show "new scenario" dialogue; return true if new scenario is created
|
||||
|
||||
#ifdef USE_WIN32_WINDOWS
|
||||
bool HandleWin32KeyboardMessage(MSG *msg);
|
||||
#endif
|
||||
|
|
|
@ -14,5 +14,6 @@
|
|||
<file>../res/Play_Trans.png</file>
|
||||
<file>../res/Rect_Trans.png</file>
|
||||
<file>../res/Static_Trans.png</file>
|
||||
<file>../res/ocs.ico</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -38,6 +38,15 @@ void C4SVal::Set(int32_t std, int32_t rnd, int32_t min, int32_t max)
|
|||
Std=std; Rnd=rnd; Min=min; Max=max;
|
||||
}
|
||||
|
||||
void C4SVal::SetConstant(int32_t val)
|
||||
{
|
||||
// Set to constant value and ensure limits allow it
|
||||
Std = val;
|
||||
Rnd = 0;
|
||||
Min = std::min<int32_t>(Min, val);
|
||||
Max = std::max<int32_t>(Max, val);
|
||||
}
|
||||
|
||||
int32_t C4SVal::Evaluate()
|
||||
{
|
||||
return Clamp(Std+Random(2*Rnd+1)-Rnd,Min,Max);
|
||||
|
|
|
@ -32,6 +32,7 @@ public:
|
|||
public:
|
||||
void Default();
|
||||
void Set(int32_t std=0, int32_t rnd=0, int32_t min=0, int32_t max=100);
|
||||
void SetConstant(int32_t val);
|
||||
int32_t Evaluate();
|
||||
void CompileFunc(StdCompiler *pComp);
|
||||
public:
|
||||
|
|
|
@ -548,6 +548,7 @@ public:
|
|||
StdStrBuf &operator += (const char *szString) { Append(szString); return *this; }
|
||||
StdStrBuf operator + (const StdStrBuf &Buf2) const { StdStrBuf Buf = getRef(); Buf.Append(Buf2); return Buf; }
|
||||
StdStrBuf operator + (const char *szString) const { StdStrBuf Buf = getRef(); Buf.Append(szString); return Buf; }
|
||||
StdStrBuf operator + (char c) const { StdStrBuf Buf = getRef(); Buf.AppendChar(c); return Buf; }
|
||||
|
||||
bool operator == (const StdStrBuf &Buf2) const
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue