diff options
263 files changed, 7772 insertions, 2166 deletions
@@ -1,5 +1,5 @@ ScummVM -Copyright (C) 2001-2016 by the following: +Copyright (C) 2001-2017 by the following: If you have contributed to this project then you deserve to be on this list. Contact us (see: AUTHORS) and we'll add you. diff --git a/audio/decoders/wave.cpp b/audio/decoders/wave.cpp index 803bdf3cf0..55c7034df6 100644 --- a/audio/decoders/wave.cpp +++ b/audio/decoders/wave.cpp @@ -61,6 +61,13 @@ bool loadWAVFromStream(Common::SeekableReadStream &stream, int &size, int &rate, } stream.read(buf, 4); + if (memcmp(buf, "fact", 4) == 0) { + // Initial fact chunk, so skip over it + uint32 factLen = stream.readUint32LE(); + stream.skip(factLen); + stream.read(buf, 4); + } + if (memcmp(buf, "fmt ", 4) != 0) { warning("getWavInfo: No 'fmt' header"); return false; diff --git a/backends/platform/symbian/README b/backends/platform/symbian/README index 47a3097ac0..cdff5f9787 100644 --- a/backends/platform/symbian/README +++ b/backends/platform/symbian/README @@ -1,7 +1,7 @@ ScummVM - ScummVM ported to EPOC/SymbianOS - Copyright (C) 2008-2016 ScummVM Team + Copyright (C) 2008-2017 ScummVM Team Copyright (C) 2013-2013 Fedor Strizhniou aka zanac Copyright (C) 2003-2013 Lars 'AnotherGuest' Persson Copyright (C) 2002-2008 Jurgen 'SumthinWicked' Braam diff --git a/backends/platform/symbian/S60/ScummVM_S60.mmp.in b/backends/platform/symbian/S60/ScummVM_S60.mmp.in index 14e586246a..9f47612f22 100644 --- a/backends/platform/symbian/S60/ScummVM_S60.mmp.in +++ b/backends/platform/symbian/S60/ScummVM_S60.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/S60/ScummVM_S60_App.mmp b/backends/platform/symbian/S60/ScummVM_S60_App.mmp index e75059b4b7..df70046bf4 100644 --- a/backends/platform/symbian/S60/ScummVM_S60_App.mmp +++ b/backends/platform/symbian/S60/ScummVM_S60_App.mmp @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in b/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in index a669943933..e6ae1b9f27 100644 --- a/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in +++ b/backends/platform/symbian/S60v3/ScummVM_A0000658_S60v3.mmp.in @@ -3,7 +3,7 @@ * Copyright (C) 2003-2014 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer * Copyright (C) 2013-2014 Fedor Strizhniou Additional library porting, engine support, help files etc - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in index ac8fc6b35a..1555db872b 100644 --- a/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in +++ b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in @@ -3,7 +3,7 @@ * Copyright (C) 2003-2014 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer * Copyright (C) 2013-2014 Fedor Strizhniou Additional library porting, engine support, help files etc - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/S80/ScummVM_S80.mmp.in b/backends/platform/symbian/S80/ScummVM_S80.mmp.in index e7ebe900bb..304423e671 100644 --- a/backends/platform/symbian/S80/ScummVM_S80.mmp.in +++ b/backends/platform/symbian/S80/ScummVM_S80.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/S80/ScummVM_S80_App.mmp b/backends/platform/symbian/S80/ScummVM_S80_App.mmp index 4b3fc052cf..abf7c72aed 100644 --- a/backends/platform/symbian/S80/ScummVM_S80_App.mmp +++ b/backends/platform/symbian/S80/ScummVM_S80_App.mmp @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/S90/Scummvm_S90.mmp.in b/backends/platform/symbian/S90/Scummvm_S90.mmp.in index e35cdb9107..3f44b3ac26 100644 --- a/backends/platform/symbian/S90/Scummvm_S90.mmp.in +++ b/backends/platform/symbian/S90/Scummvm_S90.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/S90/Scummvm_S90_App.mmp b/backends/platform/symbian/S90/Scummvm_S90_App.mmp index 1716629ceb..e794acd3d3 100644 --- a/backends/platform/symbian/S90/Scummvm_S90_App.mmp +++ b/backends/platform/symbian/S90/Scummvm_S90_App.mmp @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/UIQ2/ScummVM.rss b/backends/platform/symbian/UIQ2/ScummVM.rss index 13712e26c4..c7d703bc5c 100644 --- a/backends/platform/symbian/UIQ2/ScummVM.rss +++ b/backends/platform/symbian/UIQ2/ScummVM.rss @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/backends/platform/symbian/UIQ3/ScummVM.rss b/backends/platform/symbian/UIQ3/ScummVM.rss index 5e133ac137..2f6d17fe3b 100644 --- a/backends/platform/symbian/UIQ3/ScummVM.rss +++ b/backends/platform/symbian/UIQ3/ScummVM.rss @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss b/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss index 5e133ac137..2f6d17fe3b 100644 --- a/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss +++ b/backends/platform/symbian/UIQ3/ScummVM_A0000658.rss @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in b/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in index 5e27b87433..0bc0bf1f8e 100644 --- a/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in +++ b/backends/platform/symbian/UIQ3/ScummVM_A0000658_UIQ3.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2009 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2009 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in b/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in index 8568a51ec3..1c5127ff0f 100644 --- a/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in +++ b/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss b/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss index 8f8ff5c3b0..1e08f72002 100644 --- a/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss +++ b/backends/platform/symbian/UIQ3/scummvm_A0000658_loc.rss @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/config.mmh b/backends/platform/symbian/mmp/config.mmh index 8a81fd2b78..414110ccd0 100644 --- a/backends/platform/symbian/mmp/config.mmh +++ b/backends/platform/symbian/mmp/config.mmh @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2014 Fedor Strizhniou * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_access.mmp.in b/backends/platform/symbian/mmp/scummvm_access.mmp.in index 8e1c85f3e3..d6dd0c3753 100644 --- a/backends/platform/symbian/mmp/scummvm_access.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_access.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM project + * Copyright (C) 2005-2017 The ScummVM project * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_agi.mmp.in b/backends/platform/symbian/mmp/scummvm_agi.mmp.in index dcea8f023b..76df3cf57d 100644 --- a/backends/platform/symbian/mmp/scummvm_agi.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_agi.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_agos.mmp.in b/backends/platform/symbian/mmp/scummvm_agos.mmp.in index c5eb4d8ad4..22d8fdcae0 100644 --- a/backends/platform/symbian/mmp/scummvm_agos.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_agos.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in b/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in index a9580c643e..adb18d3915 100644 --- a/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_avalanche.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2013 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_base.mmp.in b/backends/platform/symbian/mmp/scummvm_base.mmp.in index 58a56c95ac..703d2c6c32 100644 --- a/backends/platform/symbian/mmp/scummvm_base.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_base.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in b/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in index 864d019c97..9c27028682 100644 --- a/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_bbvs.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2014 Fedor Strizhniou - Epoc project file * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_cge.mmp.in b/backends/platform/symbian/mmp/scummvm_cge.mmp.in index bcfbec8a70..330ce0fe3b 100644 --- a/backends/platform/symbian/mmp/scummvm_cge.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_cge.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_cge2.mmp.in b/backends/platform/symbian/mmp/scummvm_cge2.mmp.in index f09a2b2427..7e32ef4766 100644 --- a/backends/platform/symbian/mmp/scummvm_cge2.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_cge2.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_cine.mmp.in b/backends/platform/symbian/mmp/scummvm_cine.mmp.in index ff55b1bc1d..d811d0529b 100644 --- a/backends/platform/symbian/mmp/scummvm_cine.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_cine.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_composer.mmp.in b/backends/platform/symbian/mmp/scummvm_composer.mmp.in index c974df098a..9838194d0f 100644 --- a/backends/platform/symbian/mmp/scummvm_composer.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_composer.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_cruise.mmp.in b/backends/platform/symbian/mmp/scummvm_cruise.mmp.in index 134c924d2a..dadc04e544 100644 --- a/backends/platform/symbian/mmp/scummvm_cruise.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_cruise.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_draci.mmp.in b/backends/platform/symbian/mmp/scummvm_draci.mmp.in index 66d111efb0..26ef912cfb 100644 --- a/backends/platform/symbian/mmp/scummvm_draci.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_draci.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_drascula.mmp.in b/backends/platform/symbian/mmp/scummvm_drascula.mmp.in index b3128978c3..bb695bdb5c 100644 --- a/backends/platform/symbian/mmp/scummvm_drascula.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_drascula.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in b/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in index b7841ee9cb..0829f4a2f0 100644 --- a/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_dreamweb.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2013 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in b/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in index 85bbfa69be..79a5641c80 100644 --- a/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_fullpipe.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2013 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_gob.mmp.in b/backends/platform/symbian/mmp/scummvm_gob.mmp.in index b91fbb68b7..def031ec56 100644 --- a/backends/platform/symbian/mmp/scummvm_gob.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_gob.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_groovie.mmp.in b/backends/platform/symbian/mmp/scummvm_groovie.mmp.in index effff997df..eb2778f4e4 100644 --- a/backends/platform/symbian/mmp/scummvm_groovie.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_groovie.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in b/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in index 4df1db9be6..7f344fb5ef 100644 --- a/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_hopkins.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_hugo.mmp.in b/backends/platform/symbian/mmp/scummvm_hugo.mmp.in index c294588147..bdad87c480 100644 --- a/backends/platform/symbian/mmp/scummvm_hugo.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_hugo.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_kyra.mmp.in b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in index ad6dfebe71..21730e4761 100644 --- a/backends/platform/symbian/mmp/scummvm_kyra.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in b/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in index 9c49fe7dcb..ba93db6bbd 100644 --- a/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_lastexpress.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_lure.mmp.in b/backends/platform/symbian/mmp/scummvm_lure.mmp.in index 4982576432..32ac942f15 100644 --- a/backends/platform/symbian/mmp/scummvm_lure.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_lure.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_m4.mmp.in b/backends/platform/symbian/mmp/scummvm_m4.mmp.in index 5a87e3fd14..f910e54214 100644 --- a/backends/platform/symbian/mmp/scummvm_m4.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_m4.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_made.mmp.in b/backends/platform/symbian/mmp/scummvm_made.mmp.in index ab809351c5..b8f77c04a9 100644 --- a/backends/platform/symbian/mmp/scummvm_made.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_made.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_mads.mmp.in b/backends/platform/symbian/mmp/scummvm_mads.mmp.in index 65224af700..43da279c4f 100644 --- a/backends/platform/symbian/mmp/scummvm_mads.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_mads.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2014 Fedor Strizhniou - Epoc project file * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in b/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in index ff3bce9767..379614d12f 100644 --- a/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_mohawk.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in b/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in index e04006ea85..57484f4ccb 100644 --- a/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_mortevielle.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2013 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in b/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in index 05f195c2c4..1f4edd5627 100644 --- a/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_neverhood.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in b/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in index 933deec4b7..7ee266fd0b 100644 --- a/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in b/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in index e292764ed9..1e62557c14 100644 --- a/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_pegasus.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_prince.mmp.in b/backends/platform/symbian/mmp/scummvm_prince.mmp.in index c0b8193c38..466ba9bc5d 100644 --- a/backends/platform/symbian/mmp/scummvm_prince.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_prince.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM project + * Copyright (C) 2005-2017 The ScummVM project * Copyright (C) 2014 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_queen.mmp.in b/backends/platform/symbian/mmp/scummvm_queen.mmp.in index 106037e741..301ead5ccb 100644 --- a/backends/platform/symbian/mmp/scummvm_queen.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_queen.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_saga.mmp.in b/backends/platform/symbian/mmp/scummvm_saga.mmp.in index 230b54ed07..5f035578a4 100644 --- a/backends/platform/symbian/mmp/scummvm_saga.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_saga.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_sci.mmp.in b/backends/platform/symbian/mmp/scummvm_sci.mmp.in index 42c79c4ccf..3db2e5b1ab 100644 --- a/backends/platform/symbian/mmp/scummvm_sci.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_sci.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_scumm.mmp.in b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in index c727a6f1be..bebe5e72f2 100644 --- a/backends/platform/symbian/mmp/scummvm_scumm.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in b/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in index 4c4117f39e..353442bfcb 100644 --- a/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_sherlock.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2015 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_sky.mmp.in b/backends/platform/symbian/mmp/scummvm_sky.mmp.in index 621dcd8699..d849c57704 100644 --- a/backends/platform/symbian/mmp/scummvm_sky.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_sky.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_sword1.mmp.in b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in index 0904732a1b..7321f85805 100644 --- a/backends/platform/symbian/mmp/scummvm_sword1.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_sword2.mmp.in b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in index 48aea59db3..0b9f6daf3f 100644 --- a/backends/platform/symbian/mmp/scummvm_sword2.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_sword25.mmp.in b/backends/platform/symbian/mmp/scummvm_sword25.mmp.in index 49e37e3140..6704c13b4a 100644 --- a/backends/platform/symbian/mmp/scummvm_sword25.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_sword25.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2013 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in b/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in index 85091abf2c..73a08491a7 100644 --- a/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_teenagent.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_testbed.mmp.in b/backends/platform/symbian/mmp/scummvm_testbed.mmp.in index 3302bfe8af..160ab4c6ea 100644 --- a/backends/platform/symbian/mmp/scummvm_testbed.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_testbed.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2013 Strizniou Fedor * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in b/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in index 21fe837a8a..f2ced4aa9f 100644 --- a/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_tinsel.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in b/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in index 00f2d2261d..5ca28c2736 100644 --- a/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_toltecs.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_tony.mmp.in b/backends/platform/symbian/mmp/scummvm_tony.mmp.in index a05fba8842..64426475fa 100644 --- a/backends/platform/symbian/mmp/scummvm_tony.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_tony.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_toon.mmp.in b/backends/platform/symbian/mmp/scummvm_toon.mmp.in index 1f268b3c00..5ca4176053 100644 --- a/backends/platform/symbian/mmp/scummvm_toon.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_toon.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_touche.mmp.in b/backends/platform/symbian/mmp/scummvm_touche.mmp.in index 636b448168..90b18518e0 100644 --- a/backends/platform/symbian/mmp/scummvm_touche.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_touche.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_tsage.mmp.in b/backends/platform/symbian/mmp/scummvm_tsage.mmp.in index d45a808628..a6ef4129cf 100644 --- a/backends/platform/symbian/mmp/scummvm_tsage.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_tsage.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_tucker.mmp.in b/backends/platform/symbian/mmp/scummvm_tucker.mmp.in index 68c81aebbb..d7d6803ee7 100644 --- a/backends/platform/symbian/mmp/scummvm_tucker.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_tucker.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in b/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in index 9e02567651..7f8ec39e42 100644 --- a/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_voyeur.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in b/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in index d5eef5d3a3..c74b6b17d3 100644 --- a/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_wintermute.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/mmp/scummvm_zvision.mmp.in b/backends/platform/symbian/mmp/scummvm_zvision.mmp.in index 1bd34dfe38..89f5fd02f9 100644 --- a/backends/platform/symbian/mmp/scummvm_zvision.mmp.in +++ b/backends/platform/symbian/mmp/scummvm_zvision.mmp.in @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * Copyright (C) 2013 Strizniou Fedor - Epoc project file * * ScummVM is the legal property of its developers, whose names diff --git a/backends/platform/symbian/res/ScummVmAif.rss b/backends/platform/symbian/res/ScummVmAif.rss index 3bb86ca796..358356194e 100644 --- a/backends/platform/symbian/res/ScummVmAif.rss +++ b/backends/platform/symbian/res/ScummVmAif.rss @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/res/scummvm.rss b/backends/platform/symbian/res/scummvm.rss index 67af8b77d0..051f1f4856 100644 --- a/backends/platform/symbian/res/scummvm.rss +++ b/backends/platform/symbian/res/scummvm.rss @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/res/scummvm_A0000658.rss b/backends/platform/symbian/res/scummvm_A0000658.rss index 2f478962de..938abe7e3b 100644 --- a/backends/platform/symbian/res/scummvm_A0000658.rss +++ b/backends/platform/symbian/res/scummvm_A0000658.rss @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/backends/platform/symbian/src/ScummVm.hrh b/backends/platform/symbian/src/ScummVm.hrh index 927da51e3d..cedf644879 100644 --- a/backends/platform/symbian/src/ScummVm.hrh +++ b/backends/platform/symbian/src/ScummVm.hrh @@ -2,7 +2,7 @@ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer - * Copyright (C) 2005-2016 The ScummVM Team + * Copyright (C) 2005-2017 The ScummVM Team * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT diff --git a/common/scummsys.h b/common/scummsys.h index 959c67a404..1845f218bd 100644 --- a/common/scummsys.h +++ b/common/scummsys.h @@ -132,6 +132,7 @@ #include <stdlib.h> #include <string.h> #include <stdarg.h> + #include <stddef.h> #include <assert.h> #include <ctype.h> // MSVC does not define M_PI, M_SQRT2 and other math defines by default. diff --git a/devtools/create_titanic/create_titanic_dat.cpp b/devtools/create_titanic/create_titanic_dat.cpp index 3822a9a955..0454f876ba 100644 --- a/devtools/create_titanic/create_titanic_dat.cpp +++ b/devtools/create_titanic/create_titanic_dat.cpp @@ -416,7 +416,7 @@ static const BedheadEntry OFF_RESTING_D_WRONG[1] = { { "Any", "Any", "Any", "ClosedWrong", 59, 70 } }; -static const char *const STRINGS_EN[133] = { +static const char *const STRINGS_EN[137] = { "", "You are standing outside the Pellerator.", "I'm sorry, you cannot enter this pellerator at present as a bot is in the way.", @@ -554,10 +554,14 @@ static const char *const STRINGS_EN[133] = { "1st class", "2nd class", "SGT class", - "no class" + "no class", + "Your assigned room: ", + "A previously assigned room: ", + "Saved Chevron: ", + "Current location: " }; -static const char *const STRINGS_DE[178] = { +static const char *const STRINGS_DE[182] = { // TODO: Still many strings to translate to German "", "Sie befinden sich vor dem Pellerator.", @@ -712,6 +716,10 @@ static const char *const STRINGS_DE[178] = { "2nd class", "SGT class", "no class", + "Your assigned room: ", + "A previously assigned room: ", + "Saved Chevron: ", + "Current location: ", "Sommer", "Herbst", @@ -1242,8 +1250,8 @@ void writeData() { writeStringArray("TEXT/ITEM_NAMES", ITEM_NAMES, 46); writeStringArray("TEXT/ITEM_IDS", ITEM_IDS, 40); writeStringArray("TEXT/ROOM_NAMES", ROOM_NAMES, 34); - writeStringArray("TEXT/STRINGS", STRINGS_EN, 133); - writeStringArray("TEXT/STRINGS/DE", STRINGS_DE, 178); + writeStringArray("TEXT/STRINGS", STRINGS_EN, 137); + writeStringArray("TEXT/STRINGS/DE", STRINGS_DE, 182); const int TEXT_PHRASES[3] = { 0x61D3C8, 0x618340, 0x61B1E0 }; const int TEXT_REPLACEMENTS1[3] = { 0x61D9B0, 0x61C788, 0x61B7C8 }; const int TEXT_REPLACEMENTS2[3] = { 0x61DD20, 0x61CAF8, 0x61BB38 }; diff --git a/dists/debian/copyright b/dists/debian/copyright index 06705fd6bc..0123b2886c 100644 --- a/dists/debian/copyright +++ b/dists/debian/copyright @@ -7,7 +7,7 @@ It was downloaded from <http://www.scummvm.org/>. Upstream Authors: see `/usr/share/doc/scummvm/AUTHORS'. -ScummVM is Copyright © 2002-2016 The ScummVM Team +ScummVM is Copyright © 2002-2017 The ScummVM Team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the diff --git a/dists/macosx/Info.plist b/dists/macosx/Info.plist index aeab8eaf2d..ab0bf4db27 100644 --- a/dists/macosx/Info.plist +++ b/dists/macosx/Info.plist @@ -9,7 +9,7 @@ <key>CFBundleExecutable</key> <string>scummvm</string> <key>CFBundleGetInfoString</key> - <string>1.10.0git, Copyright 2001-2016 The ScummVM Team</string> + <string>1.10.0git, Copyright 2001-2017 The ScummVM Team</string> <key>CFBundleIconFile</key> <string>scummvm.icns</string> <key>CFBundleIdentifier</key> @@ -49,7 +49,7 @@ <key>CFBundleVersion</key> <string>1.10.0git</string> <key>NSHumanReadableCopyright</key> - <string>Copyright 2001-2016 The ScummVM Team</string> + <string>Copyright 2001-2017 The ScummVM Team</string> <key>NSPrincipalClass</key> <string>NSApplication</string> <key>SUFeedURL</key> diff --git a/dists/macosx/Info.plist.in b/dists/macosx/Info.plist.in index c5f54fe3f0..db740769ef 100644 --- a/dists/macosx/Info.plist.in +++ b/dists/macosx/Info.plist.in @@ -9,7 +9,7 @@ <key>CFBundleExecutable</key> <string>scummvm</string> <key>CFBundleGetInfoString</key> - <string>@VERSION@, Copyright 2001-2016 The ScummVM Team</string> + <string>@VERSION@, Copyright 2001-2017 The ScummVM Team</string> <key>CFBundleIconFile</key> <string>scummvm.icns</string> <key>CFBundleIdentifier</key> @@ -49,7 +49,7 @@ <key>CFBundleVersion</key> <string>@VERSION@</string> <key>NSHumanReadableCopyright</key> - <string>Copyright 2001-2016 The ScummVM Team</string> + <string>Copyright 2001-2017 The ScummVM Team</string> <key>NSPrincipalClass</key> <string>NSApplication</string> <key>SUFeedURL</key> diff --git a/dists/macosx/dockplugin/Info.plist b/dists/macosx/dockplugin/Info.plist index a8eab8afd8..dc2a4fda45 100644 --- a/dists/macosx/dockplugin/Info.plist +++ b/dists/macosx/dockplugin/Info.plist @@ -19,7 +19,7 @@ <key>CFBundleVersion</key> <string>1.10.0git</string> <key>NSHumanReadableCopyright</key> - <string>Copyright 2001-2016 The ScummVM Team</string> + <string>Copyright 2001-2017 The ScummVM Team</string> <key>NSPrincipalClass</key> <string>ScummVMDockTilePlugIn</string> </dict> diff --git a/dists/macosx/dockplugin/Info.plist.in b/dists/macosx/dockplugin/Info.plist.in index 851fc70f11..57699e6151 100644 --- a/dists/macosx/dockplugin/Info.plist.in +++ b/dists/macosx/dockplugin/Info.plist.in @@ -19,7 +19,7 @@ <key>CFBundleVersion</key> <string>@VERSION@</string> <key>NSHumanReadableCopyright</key> - <string>Copyright 2001-2016 The ScummVM Team</string> + <string>Copyright 2001-2017 The ScummVM Team</string> <key>NSPrincipalClass</key> <string>ScummVMDockTilePlugIn</string> </dict> diff --git a/dists/scummvm.rc b/dists/scummvm.rc index 699f5ce871..5fa760e06b 100644 --- a/dists/scummvm.rc +++ b/dists/scummvm.rc @@ -88,7 +88,7 @@ BEGIN VALUE "FileDescription", "http://www.scummvm.org/\0" VALUE "FileVersion", "1.10.0git\0" VALUE "InternalName", "scummvm\0" - VALUE "LegalCopyright", "Copyright © 2001-2016 The ScummVM Team\0" + VALUE "LegalCopyright", "Copyright © 2001-2017 The ScummVM Team\0" VALUE "LegalTrademarks", "'SCUMM', and all SCUMM games are a TM of LucasArts. Simon The Sorcerer is a TM of AdventureSoft. Beneath a Steel Sky and Broken Sword are a TM of Revolution. Flight of the Amazon Queen is a TM of John Passfield and Steve Stamatiadis. \0" VALUE "OriginalFilename", "scummvm.exe\0" VALUE "ProductName", "ScummVM\0" diff --git a/dists/scummvm.rc.in b/dists/scummvm.rc.in index f78aa3acf5..411dbcaa7b 100644 --- a/dists/scummvm.rc.in +++ b/dists/scummvm.rc.in @@ -88,7 +88,7 @@ BEGIN VALUE "FileDescription", "http://www.scummvm.org/\0" VALUE "FileVersion", "@VERSION@\0" VALUE "InternalName", "scummvm\0" - VALUE "LegalCopyright", "Copyright © 2001-2016 The ScummVM Team\0" + VALUE "LegalCopyright", "Copyright © 2001-2017 The ScummVM Team\0" VALUE "LegalTrademarks", "'SCUMM', and all SCUMM games are a TM of LucasArts. Simon The Sorcerer is a TM of AdventureSoft. Beneath a Steel Sky and Broken Sword are a TM of Revolution. Flight of the Amazon Queen is a TM of John Passfield and Steve Stamatiadis. \0" VALUE "OriginalFilename", "scummvm.exe\0" VALUE "ProductName", "ScummVM\0" diff --git a/dists/win32/ScummVM.iss b/dists/win32/ScummVM.iss index 6a5b7d91da..a4a63f4df4 100644 --- a/dists/win32/ScummVM.iss +++ b/dists/win32/ScummVM.iss @@ -1,5 +1,5 @@ [Setup] -AppCopyright=2016 +AppCopyright=2017 AppName=ScummVM AppVerName=ScummVM Git AppPublisher=The ScummVM Team diff --git a/dists/win32/migration.bat b/dists/win32/migration.bat index 0ab38653f6..6ec7806b5f 100644 --- a/dists/win32/migration.bat +++ b/dists/win32/migration.bat @@ -4,7 +4,7 @@ :: This script will copy any saved games located in the :: old default location, to the new default location. :: -:: (c) 2012-2016 ScummVM Team +:: (c) 2012-2017 ScummVM Team :: @echo off diff --git a/engines/adl/adl.cpp b/engines/adl/adl.cpp index bc5bc74f3a..c1c3820b10 100644 --- a/engines/adl/adl.cpp +++ b/engines/adl/adl.cpp @@ -56,11 +56,14 @@ AdlEngine::AdlEngine(OSystem *syst, const AdlGameDescription *gd) : _dumpFile(nullptr), _display(nullptr), _graphics(nullptr), + _speaker(nullptr), _isRestarting(false), _isRestoring(false), _isQuitting(false), _skipOneCommand(false), _gameDescription(gd), + _console(nullptr), + _messageIds(), _saveVerb(0), _saveNoun(0), _restoreVerb(0), @@ -427,6 +430,11 @@ void AdlEngine::initState() { initGameState(); } +void AdlEngine::switchRoom(byte roomNr) { + getCurRoom().curPicture = getCurRoom().picture; + _state.room = roomNr; +} + byte AdlEngine::roomArg(byte room) const { return room; } @@ -578,6 +586,60 @@ void AdlEngine::dropItem(byte noun) { printMessage(_messageIds.dontUnderstand); } +void AdlEngine::gameLoop() { + uint verb = 0, noun = 0; + _isRestarting = false; + + // When restoring from the launcher, we don't read + // input on the first iteration. This is needed to + // ensure that restoring from the launcher and + // restoring in-game brings us to the same game state. + // (Also see comment below.) + if (!_isRestoring) { + showRoom(); + + if (_isRestarting) + return; + + _canSaveNow = _canRestoreNow = true; + getInput(verb, noun); + _canSaveNow = _canRestoreNow = false; + + if (shouldQuit()) + return; + + // If we just restored from the GMM, we skip this command + // set, as no command has been input by the user + if (!_isRestoring) + checkInput(verb, noun); + } + + if (_isRestoring) { + // We restored from the GMM or launcher. As restoring + // with "RESTORE GAME" does not end command processing, + // we don't break it off here either. This essentially + // means that restoring a game will always run through + // the global commands and increase the move counter + // before the first user input. + _display->printAsciiString("\r"); + _isRestoring = false; + verb = _restoreVerb; + noun = _restoreNoun; + } + + // Restarting does end command processing + if (_isRestarting) + return; + + doAllCommands(_globalCommands, verb, noun); + + if (_isRestarting) + return; + + advanceClock(); + _state.moves++; +} + Common::Error AdlEngine::run() { initGraphics(DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 2, true); @@ -603,59 +665,8 @@ Common::Error AdlEngine::run() { _display->setMode(DISPLAY_MODE_MIXED); - while (!_isQuitting) { - uint verb = 0, noun = 0; - _isRestarting = false; - - // When restoring from the launcher, we don't read - // input on the first iteration. This is needed to - // ensure that restoring from the launcher and - // restoring in-game brings us to the same game state. - // (Also see comment below.) - if (!_isRestoring) { - showRoom(); - - if (_isRestarting) - continue; - - _canSaveNow = _canRestoreNow = true; - getInput(verb, noun); - _canSaveNow = _canRestoreNow = false; - - if (shouldQuit()) - break; - - // If we just restored from the GMM, we skip this command - // set, as no command has been input by the user - if (!_isRestoring) - checkInput(verb, noun); - } - - if (_isRestoring) { - // We restored from the GMM or launcher. As restoring - // with "RESTORE GAME" does not end command processing, - // we don't break it off here either. This essentially - // means that restoring a game will always run through - // the global commands and increase the move counter - // before the first user input. - _display->printAsciiString("\r"); - _isRestoring = false; - verb = _restoreVerb; - noun = _restoreNoun; - } - - // Restarting does end command processing - if (_isRestarting) - continue; - - doAllCommands(_globalCommands, verb, noun); - - if (_isRestarting) - continue; - - advanceClock(); - _state.moves++; - } + while (!(_isQuitting || shouldQuit())) + gameLoop(); return Common::kNoError; } @@ -671,6 +682,49 @@ bool AdlEngine::hasFeature(EngineFeature f) const { } } +void AdlEngine::loadState(Common::ReadStream &stream) { + _state.room = stream.readByte(); + _state.moves = stream.readByte(); + _state.isDark = stream.readByte(); + _state.time.hours = stream.readByte(); + _state.time.minutes = stream.readByte(); + + uint32 size = stream.readUint32BE(); + if (size != _state.rooms.size()) + error("Room count mismatch (expected %i; found %i)", _state.rooms.size(), size); + + for (uint i = 0; i < size; ++i) { + _state.rooms[i].picture = stream.readByte(); + _state.rooms[i].curPicture = stream.readByte(); + _state.rooms[i].isFirstTime = stream.readByte(); + } + + // NOTE: _state.curPicture is part of the save state in the original engine. We + // reconstruct it instead. This is believed to be safe for at least hires 0-2, but + // this may need to be re-evaluated for later games. + _state.curPicture = getCurRoom().curPicture; + + size = stream.readUint32BE(); + if (size != _state.items.size()) + error("Item count mismatch (expected %i; found %i)", _state.items.size(), size); + + Common::List<Item>::iterator item; + for (item = _state.items.begin(); item != _state.items.end(); ++item) { + item->room = stream.readByte(); + item->picture = stream.readByte(); + item->position.x = stream.readByte(); + item->position.y = stream.readByte(); + item->state = stream.readByte(); + } + + size = stream.readUint32BE(); + if (size != _state.vars.size()) + error("Variable count mismatch (expected %i; found %i)", _state.vars.size(), size); + + for (uint i = 0; i < size; ++i) + _state.vars[i] = stream.readByte(); +} + Common::Error AdlEngine::loadGameState(int slot) { Common::String fileName = Common::String::format("%s.s%02d", _targetName.c_str(), slot); Common::InSaveFile *inFile = getSaveFileManager()->openForLoading(fileName); @@ -703,47 +757,7 @@ Common::Error AdlEngine::loadGameState(int slot) { Graphics::skipThumbnail(*inFile); initState(); - - _state.room = inFile->readByte(); - _state.moves = inFile->readByte(); - _state.isDark = inFile->readByte(); - _state.time.hours = inFile->readByte(); - _state.time.minutes = inFile->readByte(); - - uint32 size = inFile->readUint32BE(); - if (size != _state.rooms.size()) - error("Room count mismatch (expected %i; found %i)", _state.rooms.size(), size); - - for (uint i = 0; i < size; ++i) { - _state.rooms[i].picture = inFile->readByte(); - _state.rooms[i].curPicture = inFile->readByte(); - _state.rooms[i].isFirstTime = inFile->readByte(); - } - - // NOTE: _state.curPicture is part of the save state in the original engine. We - // reconstruct it instead. This is believed to be safe for at least hires 0-2, but - // this may need to be re-evaluated for later games. - _state.curPicture = getCurRoom().curPicture; - - size = inFile->readUint32BE(); - if (size != _state.items.size()) - error("Item count mismatch (expected %i; found %i)", _state.items.size(), size); - - Common::List<Item>::iterator item; - for (item = _state.items.begin(); item != _state.items.end(); ++item) { - item->room = inFile->readByte(); - item->picture = inFile->readByte(); - item->position.x = inFile->readByte(); - item->position.y = inFile->readByte(); - item->state = inFile->readByte(); - } - - size = inFile->readUint32BE(); - if (size != _state.vars.size()) - error("Variable count mismatch (expected %i; found %i)", _state.vars.size(), size); - - for (uint i = 0; i < size; ++i) - _state.vars[i] = inFile->readByte(); + loadState(*inFile); if (inFile->err() || inFile->eos()) error("Failed to load game '%s'", fileName.c_str()); @@ -760,6 +774,35 @@ bool AdlEngine::canLoadGameStateCurrently() { return _canRestoreNow; } +void AdlEngine::saveState(Common::WriteStream &stream) { + stream.writeByte(_state.room); + stream.writeByte(_state.moves); + stream.writeByte(_state.isDark); + stream.writeByte(_state.time.hours); + stream.writeByte(_state.time.minutes); + + stream.writeUint32BE(_state.rooms.size()); + for (uint i = 0; i < _state.rooms.size(); ++i) { + stream.writeByte(_state.rooms[i].picture); + stream.writeByte(_state.rooms[i].curPicture); + stream.writeByte(_state.rooms[i].isFirstTime); + } + + stream.writeUint32BE(_state.items.size()); + Common::List<Item>::const_iterator item; + for (item = _state.items.begin(); item != _state.items.end(); ++item) { + stream.writeByte(item->room); + stream.writeByte(item->picture); + stream.writeByte(item->position.x); + stream.writeByte(item->position.y); + stream.writeByte(item->state); + } + + stream.writeUint32BE(_state.vars.size()); + for (uint i = 0; i < _state.vars.size(); ++i) + stream.writeByte(_state.vars[i]); +} + Common::Error AdlEngine::saveGameState(int slot, const Common::String &desc) { Common::String fileName = Common::String::format("%s.s%02d", _targetName.c_str(), slot); Common::OutSaveFile *outFile = getSaveFileManager()->openForSaving(fileName); @@ -797,34 +840,7 @@ Common::Error AdlEngine::saveGameState(int slot, const Common::String &desc) { outFile->writeUint32BE(playTime); _display->saveThumbnail(*outFile); - - outFile->writeByte(_state.room); - outFile->writeByte(_state.moves); - outFile->writeByte(_state.isDark); - outFile->writeByte(_state.time.hours); - outFile->writeByte(_state.time.minutes); - - outFile->writeUint32BE(_state.rooms.size()); - for (uint i = 0; i < _state.rooms.size(); ++i) { - outFile->writeByte(_state.rooms[i].picture); - outFile->writeByte(_state.rooms[i].curPicture); - outFile->writeByte(_state.rooms[i].isFirstTime); - } - - outFile->writeUint32BE(_state.items.size()); - Common::List<Item>::const_iterator item; - for (item = _state.items.begin(); item != _state.items.end(); ++item) { - outFile->writeByte(item->room); - outFile->writeByte(item->picture); - outFile->writeByte(item->position.x); - outFile->writeByte(item->position.y); - outFile->writeByte(item->state); - } - - outFile->writeUint32BE(_state.vars.size()); - for (uint i = 0; i < _state.vars.size(); ++i) - outFile->writeByte(_state.vars[i]); - + saveState(*outFile); outFile->finalize(); if (outFile->err()) { @@ -1073,8 +1089,7 @@ int AdlEngine::o1_moveItem(ScriptEnv &e) { int AdlEngine::o1_setRoom(ScriptEnv &e) { OP_DEBUG_1("\tROOM = %d", e.arg(1)); - getCurRoom().curPicture = getCurRoom().picture; - _state.room = e.arg(1); + switchRoom(e.arg(1)); return 1; } @@ -1228,8 +1243,8 @@ bool AdlEngine::matchCommand(ScriptEnv &env) const { return false; if (DebugMan.isDebugChannelEnabled(kDebugChannelScript)) { - op_debug("IF\n\tROOM == %s", roomStr(env.getCommand().room).c_str()); - op_debug("\t&& SAID(%s, %s)", verbStr(env.getCommand().verb).c_str(), nounStr(env.getCommand().noun).c_str()); + (void)op_debug("IF\n\tROOM == %s", roomStr(env.getCommand().room).c_str()); + (void)op_debug("\t&& SAID(%s, %s)", verbStr(env.getCommand().verb).c_str(), nounStr(env.getCommand().noun).c_str()); } for (uint i = 0; i < env.getCondCount(); ++i) { @@ -1242,7 +1257,7 @@ bool AdlEngine::matchCommand(ScriptEnv &env) const { if (numArgs < 0) { if (DebugMan.isDebugChannelEnabled(kDebugChannelScript)) - op_debug("FAIL\n"); + (void)op_debug("FAIL\n"); return false; } @@ -1254,7 +1269,7 @@ bool AdlEngine::matchCommand(ScriptEnv &env) const { void AdlEngine::doActions(ScriptEnv &env) { if (DebugMan.isDebugChannelEnabled(kDebugChannelScript)) - op_debug("THEN"); + (void)op_debug("THEN"); for (uint i = 0; i < env.getActCount(); ++i) { byte op = env.op(); @@ -1266,7 +1281,7 @@ void AdlEngine::doActions(ScriptEnv &env) { if (numArgs < 0) { if (DebugMan.isDebugChannelEnabled(kDebugChannelScript)) - op_debug("ABORT\n"); + (void)op_debug("ABORT\n"); return; } @@ -1274,7 +1289,7 @@ void AdlEngine::doActions(ScriptEnv &env) { } if (DebugMan.isDebugChannelEnabled(kDebugChannelScript)) - op_debug("END\n"); + (void)op_debug("END\n"); } bool AdlEngine::doOneCommand(const Commands &commands, byte verb, byte noun) { diff --git a/engines/adl/adl.h b/engines/adl/adl.h index 87e99a5537..62c5ea1b8e 100644 --- a/engines/adl/adl.h +++ b/engines/adl/adl.h @@ -42,6 +42,7 @@ namespace Common { class ReadStream; +class WriteStream; class SeekableReadStream; class File; struct Event; @@ -84,7 +85,8 @@ struct Room { Room() : description(0), picture(0), - curPicture(0) { + curPicture(0), + isFirstTime(true) { memset(connections, 0, sizeof(connections)); } @@ -152,6 +154,8 @@ struct Item { byte description; Common::Array<byte> roomPictures; bool isOnScreen; + + Item() : id(0), noun(0), region(0), room(0), picture(0), isLineArt(false), state(0), description(0), isOnScreen(false) { } }; struct Time { @@ -235,6 +239,9 @@ protected: Common::Error loadGameState(int slot); Common::Error saveGameState(int slot, const Common::String &desc); + virtual void gameLoop(); + virtual void loadState(Common::ReadStream &stream); + virtual void saveState(Common::WriteStream &stream); Common::String readString(Common::ReadStream &stream, byte until = 0) const; Common::String readStringAt(Common::SeekableReadStream &stream, uint offset, byte until = 0) const; void openFile(Common::File &file, const Common::String &name) const; @@ -247,6 +254,7 @@ protected: Common::String inputString(byte prompt = 0) const; byte inputKey(bool showCursor = true) const; + void getInput(uint &verb, uint &noun); virtual Common::String formatVerbError(const Common::String &verb) const; virtual Common::String formatNounError(const Common::String &verb, const Common::String &noun) const; @@ -262,6 +270,7 @@ protected: virtual void setupOpcodeTables(); virtual void initState(); + virtual void switchRoom(byte roomNr); virtual byte roomArg(byte room) const; virtual void advanceClock() { } void loadDroppedItemOffsets(Common::ReadStream &stream, byte count); @@ -381,6 +390,7 @@ protected: State _state; bool _isRestarting, _isRestoring, _isQuitting; + bool _canSaveNow, _canRestoreNow; bool _skipOneCommand; const AdlGameDescription *_gameDescription; @@ -393,6 +403,7 @@ private: virtual void drawItem(Item &item, const Common::Point &pos) = 0; virtual void loadRoom(byte roomNr) = 0; virtual void showRoom() = 0; + virtual void switchRegion(byte region) { } // Engine Common::Error run(); @@ -404,12 +415,10 @@ private: byte convertKey(uint16 ascii) const; Common::String getLine() const; Common::String getWord(const Common::String &line, uint &index) const; - void getInput(uint &verb, uint &noun); Console *_console; GUI::Debugger *getDebugger() { return _console; } byte _saveVerb, _saveNoun, _restoreVerb, _restoreNoun; - bool _canSaveNow, _canRestoreNow; }; } // End of namespace Adl diff --git a/engines/adl/adl_v2.cpp b/engines/adl/adl_v2.cpp index 8670bd08df..c3e82117d8 100644 --- a/engines/adl/adl_v2.cpp +++ b/engines/adl/adl_v2.cpp @@ -367,7 +367,8 @@ DataBlockPtr AdlEngine_v2::readDataBlockPtr(Common::ReadStream &f) const { void AdlEngine_v2::loadItems(Common::ReadStream &stream) { byte id; while ((id = stream.readByte()) != 0xff && !stream.eos() && !stream.err()) { - Item item = Item(); + Item item; + item.id = id; item.noun = stream.readByte(); item.room = stream.readByte(); diff --git a/engines/adl/adl_v2.h b/engines/adl/adl_v2.h index fe0c781f44..f0af9eba22 100644 --- a/engines/adl/adl_v2.h +++ b/engines/adl/adl_v2.h @@ -59,6 +59,7 @@ protected: void loadPictures(Common::ReadStream &stream); void loadItemPictures(Common::ReadStream &stream, byte count); virtual bool isInventoryFull() { return false; } + int askForSlot(const Common::String &question); void checkTextOverflow(char c); @@ -91,8 +92,6 @@ protected: byte _roomOnScreen, _picOnScreen, _itemsOnScreen; private: - int askForSlot(const Common::String &question); - Common::RandomSource *_random; }; diff --git a/engines/adl/adl_v4.cpp b/engines/adl/adl_v4.cpp index 456ee10dca..dcf0f997c9 100644 --- a/engines/adl/adl_v4.cpp +++ b/engines/adl/adl_v4.cpp @@ -21,6 +21,7 @@ */ #include "adl/adl_v4.h" +#include "adl/display.h" #include "adl/detection.h" namespace Adl { @@ -36,6 +37,143 @@ AdlEngine_v4::~AdlEngine_v4() { delete _itemPicIndex; } +void AdlEngine_v4::gameLoop() { + uint verb = 0, noun = 0; + _isRestarting = false; + + if (_isRestoring) { + // Game restored from launcher. As this version of ADL long jumps to + // the game loop after restoring, no special action is required. + _isRestoring = false; + } + + showRoom(); + + if (_isRestarting || shouldQuit()) + return; + + _canSaveNow = _canRestoreNow = true; + getInput(verb, noun); + _canSaveNow = _canRestoreNow = false; + + if (_isRestoring) { + // Game restored from GMM. Move cursor to next line and jump to + // start of game loop. + _display->printAsciiString("\r"); + _isRestoring = false; + return; + } + + if (_isRestarting || shouldQuit()) + return; + + _linesPrinted = 0; + + checkInput(verb, noun); + + if (_isRestarting || shouldQuit()) + return; + + doAllCommands(_globalCommands, verb, noun); + + if (_isRestarting || shouldQuit()) + return; + + _state.moves++; +} + +void AdlEngine_v4::loadState(Common::ReadStream &stream) { + _state.room = stream.readByte(); + _state.region = stream.readByte(); + _state.prevRegion = stream.readByte(); + + uint32 size = stream.readUint32BE(); + if (size != _state.regions.size()) + error("Region count mismatch (expected %i; found %i)", _state.regions.size(), size); + + Common::Array<Region>::iterator region; + for (region = _state.regions.begin(); region != _state.regions.end(); ++region) { + size = stream.readUint32BE(); + if (size != region->rooms.size()) + error("Room count mismatch (expected %i; found %i)", region->rooms.size(), size); + + Common::Array<RoomState>::iterator room; + for (room = region->rooms.begin(); room != region->rooms.end(); ++room) { + room->picture = stream.readByte(); + room->isFirstTime = stream.readByte(); + } + + size = stream.readUint32BE(); + if (size != region->vars.size()) + error("Variable count mismatch (expected %i; found %i)", region->vars.size(), size); + + for (uint i = 0; i < region->vars.size(); ++i) + region->vars[i] = stream.readByte(); + } + + size = stream.readUint32BE(); + if (size != _state.items.size()) + error("Item count mismatch (expected %i; found %i)", _state.items.size(), size); + + Common::List<Item>::iterator item; + for (item = _state.items.begin(); item != _state.items.end(); ++item) { + item->room = stream.readByte(); + item->region = stream.readByte(); + item->state = stream.readByte(); + } + + size = stream.readUint32BE(); + const uint expectedSize = _state.vars.size() - getRegion(1).vars.size(); + if (size != expectedSize) + error("Variable count mismatch (expected %i; found %i)", expectedSize, size); + + for (uint i = getRegion(1).vars.size(); i < size; ++i) + _state.vars[i] = stream.readByte(); + + if (stream.err() || stream.eos()) + return; + + loadRegion(_state.region); + restoreRoomState(_state.room); + _roomOnScreen = _picOnScreen = 0; +} + +void AdlEngine_v4::saveState(Common::WriteStream &stream) { + backupVars(); + backupRoomState(_state.room); + + stream.writeByte(_state.room); + stream.writeByte(_state.region); + stream.writeByte(_state.prevRegion); + + stream.writeUint32BE(_state.regions.size()); + Common::Array<Region>::const_iterator region; + for (region = _state.regions.begin(); region != _state.regions.end(); ++region) { + stream.writeUint32BE(region->rooms.size()); + Common::Array<RoomState>::const_iterator room; + for (room = region->rooms.begin(); room != region->rooms.end(); ++room) { + stream.writeByte(room->picture); + stream.writeByte(room->isFirstTime); + } + + stream.writeUint32BE(region->vars.size()); + for (uint i = 0; i < region->vars.size(); ++i) + stream.writeByte(region->vars[i]); + } + + stream.writeUint32BE(_state.items.size()); + Common::List<Item>::const_iterator item; + for (item = _state.items.begin(); item != _state.items.end(); ++item) { + stream.writeByte(item->room); + stream.writeByte(item->region); + stream.writeByte(item->state); + } + + stream.writeUint32BE(_state.vars.size() - getRegion(1).vars.size()); + for (uint i = getRegion(1).vars.size(); i < _state.vars.size(); ++i) + stream.writeByte(_state.vars[i]); +} + Common::String AdlEngine_v4::loadMessage(uint idx) const { Common::String str = AdlEngine_v3::loadMessage(idx); @@ -268,6 +406,14 @@ void AdlEngine_v4::switchRegion(byte region) { _picOnScreen = _roomOnScreen = 0; } +void AdlEngine_v4::switchRoom(byte roomNr) { + getCurRoom().curPicture = getCurRoom().picture; + getCurRoom().isFirstTime = false; + backupRoomState(_state.room); + _state.room = roomNr; + restoreRoomState(_state.room); +} + int AdlEngine_v4::o4_isItemInRoom(ScriptEnv &e) { OP_DEBUG_2("\t&& GET_ITEM_ROOM(%s) == %s", itemStr(e.arg(1)).c_str(), itemRoomStr(e.arg(2)).c_str()); @@ -297,17 +443,6 @@ int AdlEngine_v4::o4_moveItem(ScriptEnv &e) { return 2; } -int AdlEngine_v4::o4_setRoom(ScriptEnv &e) { - OP_DEBUG_1("\tROOM = %d", e.arg(1)); - - getCurRoom().curPicture = getCurRoom().picture; - getCurRoom().isFirstTime = false; - backupRoomState(_state.room); - _state.room = e.arg(1); - restoreRoomState(_state.room); - return 1; -} - int AdlEngine_v4::o4_setRegionToPrev(ScriptEnv &e) { OP_DEBUG_0("\tREGION = PREV_REGION"); @@ -363,6 +498,68 @@ int AdlEngine_v4::o4_setRegion(ScriptEnv &e) { return -1; } +int AdlEngine_v4::o4_save(ScriptEnv &e) { + OP_DEBUG_0("\tSAVE_GAME()"); + + _display->printString(_strings_v2.saveReplace); + const char key = inputKey(); + + if (shouldQuit()) + return -1; + + if (key != APPLECHAR('Y')) + return 0; + + const int slot = askForSlot(_strings_v2.saveInsert); + + if (slot < 0) + return -1; + + saveGameState(slot, ""); + return 0; +} + +int AdlEngine_v4::o4_restore(ScriptEnv &e) { + OP_DEBUG_0("\tRESTORE_GAME()"); + + const int slot = askForSlot(_strings_v2.restoreInsert); + + if (slot < 0) + return -1; + + loadGameState(slot); + _isRestoring = false; + + _picOnScreen = 0; + _roomOnScreen = 0; + + // Long jump + _isRestarting = true; + return -1; +} + +int AdlEngine_v4::o4_restart(ScriptEnv &e) { + OP_DEBUG_0("\tRESTART_GAME()"); + + while (true) { + _display->printString(_strings.playAgain); + const Common::String input(inputString()); + + if (shouldQuit()) + return -1; + + if (input.firstChar() == APPLECHAR('N')) { + return o1_quit(e); + } else if (input.firstChar() == APPLECHAR('Y')) { + // The original game loads a special save game from volume 3 + initState(); + // Long jump + _isRestarting = true; + return -1; + } + } +} + int AdlEngine_v4::o4_setRegionRoom(ScriptEnv &e) { OP_DEBUG_2("\tSET_REGION_ROOM(%d, %d)", e.arg(1), e.arg(2)); diff --git a/engines/adl/adl_v4.h b/engines/adl/adl_v4.h index 1bc7664d58..4e87530673 100644 --- a/engines/adl/adl_v4.h +++ b/engines/adl/adl_v4.h @@ -49,8 +49,13 @@ protected: AdlEngine_v4(OSystem *syst, const AdlGameDescription *gd); // AdlEngine + virtual void gameLoop(); + virtual void loadState(Common::ReadStream &stream); + virtual void saveState(Common::WriteStream &stream); virtual Common::String loadMessage(uint idx) const; virtual Common::String getItemDescription(const Item &item) const; + virtual void switchRegion(byte region); + virtual void switchRoom(byte roomNr); // AdlEngine_v2 virtual void adjustDataBlockPtr(byte &track, byte §or, byte &offset, byte &size) const; @@ -67,15 +72,16 @@ protected: void restoreRoomState(byte room); void backupVars(); void restoreVars(); - void switchRegion(byte region); int o4_isItemInRoom(ScriptEnv &e); int o4_isVarGT(ScriptEnv &e); int o4_moveItem(ScriptEnv &e); - int o4_setRoom(ScriptEnv &e); int o4_setRegionToPrev(ScriptEnv &e); int o4_moveAllItems(ScriptEnv &e); int o4_setRegion(ScriptEnv &e); + int o4_save(ScriptEnv &e); + int o4_restore(ScriptEnv &e); + int o4_restart(ScriptEnv &e); int o4_setRegionRoom(ScriptEnv &e); int o4_setRoomPic(ScriptEnv &e); diff --git a/engines/adl/console.cpp b/engines/adl/console.cpp index c35e8b02aa..7305ec8125 100644 --- a/engines/adl/console.cpp +++ b/engines/adl/console.cpp @@ -35,6 +35,7 @@ Console::Console(AdlEngine *engine) : GUI::Debugger() { registerCmd("verbs", WRAP_METHOD(Console, Cmd_Verbs)); registerCmd("dump_scripts", WRAP_METHOD(Console, Cmd_DumpScripts)); registerCmd("valid_cmds", WRAP_METHOD(Console, Cmd_ValidCommands)); + registerCmd("region", WRAP_METHOD(Console, Cmd_Region)); registerCmd("room", WRAP_METHOD(Console, Cmd_Room)); registerCmd("items", WRAP_METHOD(Console, Cmd_Items)); registerCmd("give_item", WRAP_METHOD(Console, Cmd_GiveItem)); @@ -112,35 +113,55 @@ bool Console::Cmd_ValidCommands(int argc, const char **argv) { return true; } -bool Console::Cmd_DumpScripts(int argc, const char **argv) { - if (argc != 1) { - debugPrintf("Usage: %s\n", argv[0]); - return true; - } - - bool oldFlag = DebugMan.isDebugChannelEnabled(kDebugChannelScript); - - DebugMan.enableDebugChannel("Script"); - - _engine->_dumpFile = new Common::DumpFile(); - +void Console::dumpScripts(const Common::String &prefix) { for (byte roomNr = 1; roomNr <= _engine->_state.rooms.size(); ++roomNr) { _engine->loadRoom(roomNr); if (_engine->_roomData.commands.size() != 0) { - _engine->_dumpFile->open(Common::String::format("%03d.ADL", roomNr).c_str()); + _engine->_dumpFile->open(prefix + Common::String::format("%03d.ADL", roomNr).c_str()); _engine->doAllCommands(_engine->_roomData.commands, IDI_ANY, IDI_ANY); _engine->_dumpFile->close(); } } _engine->loadRoom(_engine->_state.room); - _engine->_dumpFile->open("GLOBAL.ADL"); + _engine->_dumpFile->open(prefix + "GLOBAL.ADL"); _engine->doAllCommands(_engine->_globalCommands, IDI_ANY, IDI_ANY); _engine->_dumpFile->close(); - _engine->_dumpFile->open("RESPONSE.ADL"); + _engine->_dumpFile->open(prefix + "RESPONSE.ADL"); _engine->doAllCommands(_engine->_roomCommands, IDI_ANY, IDI_ANY); _engine->_dumpFile->close(); +} + +bool Console::Cmd_DumpScripts(int argc, const char **argv) { + if (argc != 1) { + debugPrintf("Usage: %s\n", argv[0]); + return true; + } + + bool oldFlag = DebugMan.isDebugChannelEnabled(kDebugChannelScript); + + DebugMan.enableDebugChannel("Script"); + + _engine->_dumpFile = new Common::DumpFile(); + + if (_engine->_state.regions.empty()) { + dumpScripts(); + } else { + const byte oldRegion = _engine->_state.region; + const byte oldPrevRegion = _engine->_state.prevRegion; + const byte oldRoom = _engine->_state.room; + + for (byte regionNr = 1; regionNr <= _engine->_state.regions.size(); ++regionNr) { + _engine->switchRegion(regionNr); + dumpScripts(Common::String::format("%03d-", regionNr)); + } + + _engine->switchRegion(oldRegion); + _engine->_state.prevRegion = oldPrevRegion; + _engine->_state.room = oldRoom; + _engine->loadRoom(oldRoom); + } delete _engine->_dumpFile; _engine->_dumpFile = nullptr; @@ -151,6 +172,42 @@ bool Console::Cmd_DumpScripts(int argc, const char **argv) { return true; } +void Console::prepareGame() { + _engine->clearScreen(); + _engine->loadRoom(_engine->_state.room); + _engine->showRoom(); + _engine->_display->updateTextScreen(); + _engine->_display->updateHiResScreen(); +} + +bool Console::Cmd_Region(int argc, const char **argv) { + if (argc > 2) { + debugPrintf("Usage: %s [<new_region>]\n", argv[0]); + return true; + } + + if (argc == 2) { + if (!_engine->_canRestoreNow) { + debugPrintf("Cannot change regions right now\n"); + return true; + } + + uint regionCount = _engine->_state.regions.size(); + uint region = strtoul(argv[1], NULL, 0); + if (region < 1 || region > regionCount) { + debugPrintf("Region %u out of valid range [1, %u]\n", region, regionCount); + return true; + } + + _engine->switchRegion(region); + prepareGame(); + } + + debugPrintf("Current region: %u\n", _engine->_state.region); + + return true; +} + bool Console::Cmd_Room(int argc, const char **argv) { if (argc > 2) { debugPrintf("Usage: %s [<new_room>]\n", argv[0]); @@ -170,12 +227,8 @@ bool Console::Cmd_Room(int argc, const char **argv) { return true; } - _engine->_state.room = room; - _engine->clearScreen(); - _engine->loadRoom(_engine->_state.room); - _engine->showRoom(); - _engine->_display->updateTextScreen(); - _engine->_display->updateHiResScreen(); + _engine->switchRoom(room); + prepareGame(); } debugPrintf("Current room: %u\n", _engine->_state.room); diff --git a/engines/adl/console.h b/engines/adl/console.h index a8c6adc1cc..68787e148a 100644 --- a/engines/adl/console.h +++ b/engines/adl/console.h @@ -48,6 +48,7 @@ private: bool Cmd_Verbs(int argc, const char **argv); bool Cmd_DumpScripts(int argc, const char **argv); bool Cmd_ValidCommands(int argc, const char **argv); + bool Cmd_Region(int argc, const char **argv); bool Cmd_Room(int argc, const char **argv); bool Cmd_Items(int argc, const char **argv); bool Cmd_GiveItem(int argc, const char **argv); @@ -56,6 +57,8 @@ private: void printItem(const Item &item); void printWordMap(const Common::HashMap<Common::String, uint> &wordMap); + void dumpScripts(const Common::String &prefix = Common::String()); + void prepareGame(); AdlEngine *_engine; }; diff --git a/engines/adl/display.cpp b/engines/adl/display.cpp index 2cf50f72fc..feef8fb2a4 100644 --- a/engines/adl/display.cpp +++ b/engines/adl/display.cpp @@ -130,7 +130,7 @@ Display::Display() : _frameBufSurface->create(DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 2, Graphics::PixelFormat::createFormatCLUT8()); _textBuf = new byte[TEXT_BUF_SIZE]; - memset(_textBuf, APPLECHAR(' '), TEXT_BUF_SIZE); + memset(_textBuf, (byte)APPLECHAR(' '), TEXT_BUF_SIZE); _textBufSurface = new Graphics::Surface; // For ease of copying, also use 2x scaling here _textBufSurface->create(DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 2, Graphics::PixelFormat::createFormatCLUT8()); @@ -267,7 +267,7 @@ void Display::clear(byte color) { } void Display::home() { - memset(_textBuf, APPLECHAR(' '), TEXT_BUF_SIZE); + memset(_textBuf, (byte)APPLECHAR(' '), TEXT_BUF_SIZE); _cursorPos = 0; } @@ -546,7 +546,7 @@ void Display::createFont() { void Display::scrollUp() { memmove(_textBuf, _textBuf + TEXT_WIDTH, TEXT_BUF_SIZE - TEXT_WIDTH); - memset(_textBuf + TEXT_BUF_SIZE - TEXT_WIDTH, APPLECHAR(' '), TEXT_WIDTH); + memset(_textBuf + TEXT_BUF_SIZE - TEXT_WIDTH, (byte)APPLECHAR(' '), TEXT_WIDTH); if (_cursorPos >= TEXT_WIDTH) _cursorPos -= TEXT_WIDTH; } diff --git a/engines/adl/hires1.cpp b/engines/adl/hires1.cpp index 8bd49c75b4..e811b747c3 100644 --- a/engines/adl/hires1.cpp +++ b/engines/adl/hires1.cpp @@ -318,7 +318,8 @@ void HiRes1Engine::initGameState() { stream->seek(IDI_HR1_OFS_ITEMS); byte id; while ((id = stream->readByte()) != 0xff) { - Item item = Item(); + Item item; + item.id = id; item.noun = stream->readByte(); item.room = stream->readByte(); diff --git a/engines/adl/hires5.cpp b/engines/adl/hires5.cpp index a3ed6d890e..c1ada9e7d3 100644 --- a/engines/adl/hires5.cpp +++ b/engines/adl/hires5.cpp @@ -100,7 +100,7 @@ void HiRes5Engine::setupOpcodeTables() { // 0x04 Opcode(o1_listInv); Opcode(o4_moveItem); - Opcode(o4_setRoom); + Opcode(o1_setRoom); Opcode(o2_setCurPic); // 0x08 Opcode(o2_setPic); @@ -111,10 +111,10 @@ void HiRes5Engine::setupOpcodeTables() { Opcode(o4_moveAllItems); Opcode(o1_quit); Opcode(o4_setRegion); - Opcode(o2_save); // TODO + Opcode(o4_save); // 0x10 - Opcode(o2_restore); // TODO - Opcode(o1_restart); // TODO + Opcode(o4_restore); + Opcode(o4_restart); Opcode(o4_setRegionRoom); Opcode(o_startAnimation); // 0x14 @@ -244,7 +244,11 @@ void HiRes5Engine::init() { stream.reset(_disk->createReadStream(0x7, 0xc)); _strings.lineFeeds = readString(*stream); - // TODO: opcode strings + stream.reset(_disk->createReadStream(0x8, 0x3, 0x00, 2)); + _strings_v2.saveInsert = readStringAt(*stream, 0x66); + _strings_v2.saveReplace = readStringAt(*stream, 0x112); + _strings_v2.restoreInsert = readStringAt(*stream, 0x180); + _strings.playAgain = readStringAt(*stream, 0x247, 0xff); _messageIds.cantGoThere = 110; _messageIds.dontUnderstand = 112; diff --git a/engines/fullpipe/detection.cpp b/engines/fullpipe/detection.cpp index 8f4de11e79..e22bcd3d50 100644 --- a/engines/fullpipe/detection.cpp +++ b/engines/fullpipe/detection.cpp @@ -25,6 +25,8 @@ #include "engines/advancedDetector.h" #include "common/file.h" +#include "graphics/surface.h" + #include "fullpipe/fullpipe.h" #include "fullpipe/gameloader.h" diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp index 10c1744dd9..9c474d111b 100644 --- a/engines/fullpipe/fullpipe.cpp +++ b/engines/fullpipe/fullpipe.cpp @@ -28,6 +28,7 @@ #include "audio/mixer.h" #include "engines/util.h" +#include "graphics/surface.h" #include "fullpipe/fullpipe.h" #include "fullpipe/gameloader.h" @@ -285,7 +286,8 @@ Common::Error FullpipeEngine::run() { // Initialize backend initGraphics(800, 600, true, &format); - _backgroundSurface.create(800, 600, format); + _backgroundSurface = new Graphics::Surface; + _backgroundSurface->create(800, 600, format); _origFormat = new Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0); @@ -502,7 +504,9 @@ void FullpipeEngine::cleanup() { stopAllSoundStreams(); delete _origFormat; - _backgroundSurface.free(); + _backgroundSurface->free(); + + delete _backgroundSurface; } void FullpipeEngine::updateScreen() { diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h index b00da629fe..3733bed65d 100644 --- a/engines/fullpipe/fullpipe.h +++ b/engines/fullpipe/fullpipe.h @@ -30,8 +30,6 @@ #include "common/savefile.h" #include "common/system.h" -#include "graphics/transparent_surface.h" - #include "engines/engine.h" #include "gui/debugger.h" @@ -123,7 +121,7 @@ public: void updateEvents(); - Graphics::Surface _backgroundSurface; + Graphics::Surface *_backgroundSurface; Graphics::PixelFormat *_origFormat; GameLoader *_gameLoader; diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp index 4dec4b640c..619f41d6da 100644 --- a/engines/fullpipe/gfx.cpp +++ b/engines/fullpipe/gfx.cpp @@ -30,6 +30,7 @@ #include "fullpipe/gameloader.h" #include "common/memstream.h" +#include "graphics/transparent_surface.h" namespace Fullpipe { @@ -478,7 +479,7 @@ void Picture::freePicture() { if (_bitmap) { if (testFlags() && !_field_54) { freeData(); - //free(_bitmap); + free(_bitmap); _bitmap = 0; } } @@ -677,8 +678,8 @@ void Picture::displayPicture() { if (!_dataSize) return; - g_fp->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0); - g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(0, 0), g_fp->_backgroundSurface.pitch, 0, 0, 800, 600); + g_fp->_backgroundSurface->fillRect(Common::Rect(0, 0, 800, 600), 0); + g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface->getBasePtr(0, 0), g_fp->_backgroundSurface->pitch, 0, 0, 800, 600); draw(0, 0, 0, 0); @@ -771,6 +772,7 @@ Bitmap::Bitmap() { _flags = 0; _surface = 0; _flipping = Graphics::FLIP_NONE; + _copied_surface = false; } Bitmap::Bitmap(Bitmap *src) { @@ -783,15 +785,16 @@ Bitmap::Bitmap(Bitmap *src) { _height = src->_height; _pixels = src->_pixels; _surface = new Graphics::TransparentSurface(*src->_surface); + _copied_surface = true; _flipping = src->_flipping; } Bitmap::~Bitmap() { - if (_pixels) - free(_pixels); - _surface->free(); + if (!_copied_surface) + _surface->free(); delete _surface; + _surface = 0; _pixels = 0; } @@ -858,8 +861,8 @@ void Bitmap::putDib(int x, int y, int32 *palette, byte alpha) { int alphac = TS_ARGB(0xff, alpha, 0xff, 0xff); - _surface->blit(g_fp->_backgroundSurface, x1, y1, _flipping, &sub, alphac); - g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(x1, y1), g_fp->_backgroundSurface.pitch, x1, y1, sub.width(), sub.height()); + _surface->blit(*g_fp->_backgroundSurface, x1, y1, _flipping, &sub, alphac); + g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface->getBasePtr(x1, y1), g_fp->_backgroundSurface->pitch, x1, y1, sub.width(), sub.height()); } bool Bitmap::putDibRB(int32 *palette) { @@ -1255,7 +1258,7 @@ DynamicPhase *Shadows::findSize(int width, int height) { void FullpipeEngine::drawAlphaRectangle(int x1, int y1, int x2, int y2, int alpha) { for (int y = y1; y < y2; y++) { - uint32 *ptr = (uint32 *)g_fp->_backgroundSurface.getBasePtr(x1, y); + uint32 *ptr = (uint32 *)g_fp->_backgroundSurface->getBasePtr(x1, y); for (int x = x1; x < x2; x++) { uint32 color = *ptr; @@ -1274,8 +1277,8 @@ void FullpipeEngine::sceneFade(Scene *sc, bool direction) { int ticks = g_fp->_system->getMillis(); sc->draw(); - drawAlphaRectangle(0, 0, g_fp->_backgroundSurface.w, g_fp->_backgroundSurface.h, direction ? dim : 255 - dim); - g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface.getBasePtr(0, 0), g_fp->_backgroundSurface.pitch, 0, 0, 800, 600); + drawAlphaRectangle(0, 0, g_fp->_backgroundSurface->w, g_fp->_backgroundSurface->h, direction ? dim : 255 - dim); + g_fp->_system->copyRectToScreen(g_fp->_backgroundSurface->getBasePtr(0, 0), g_fp->_backgroundSurface->pitch, 0, 0, 800, 600); g_fp->_system->updateScreen(); ticks = g_fp->_system->getMillis() - ticks; diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h index 566586fb48..43c23b49bc 100644 --- a/engines/fullpipe/gfx.h +++ b/engines/fullpipe/gfx.h @@ -23,6 +23,11 @@ #ifndef FULLPIPE_GFX_H #define FULLPIPE_GFX_H +namespace Graphics { + struct Surface; + struct TransparentSurface; +} + namespace Fullpipe { class DynamicPhase; @@ -40,6 +45,7 @@ struct Bitmap { int _flags; Graphics::TransparentSurface *_surface; int _flipping; + bool _copied_surface; Bitmap(); Bitmap(Bitmap *src); diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp index 41c1ba368b..3faa035c60 100644 --- a/engines/fullpipe/modal.cpp +++ b/engines/fullpipe/modal.cpp @@ -33,6 +33,7 @@ #include "fullpipe/objectnames.h" #include "graphics/palette.h" +#include "graphics/surface.h" #include "video/avi_decoder.h" #include "engines/savestate.h" @@ -2397,8 +2398,7 @@ bool ModalDemo::init(int counterDiff) { if (_clickedQuit == -1) return true; - // open URL - // http://www.amazon.de/EuroVideo-Bildprogramm-GmbH-Full-Pipe/dp/B003TO51YE/ref=sr_1_1?ie=UTF8&s=videogames&qid=1279207213&sr=8-1 + g_system->openUrl("http://www.amazon.de/EuroVideo-Bildprogramm-GmbH-Full-Pipe/dp/B003TO51YE/ref=sr_1_1?ie=UTF8&s=videogames&qid=1279207213&sr=8-1"); g_fp->_gameContinue = false; @@ -2407,8 +2407,7 @@ bool ModalDemo::init(int counterDiff) { bool ModalDemo::init2(int counterDiff) { if (_clickedQuit) { - // open URL - // http://pipestudio.ru/fullpipe/ + g_system->openUrl("http://pipestudio.ru/fullpipe/"); g_fp->_gameContinue = false; diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp index d560703fa5..4e3678bfb4 100644 --- a/engines/fullpipe/scene.cpp +++ b/engines/fullpipe/scene.cpp @@ -31,6 +31,7 @@ #include "fullpipe/constants.h" #include "common/algorithm.h" +#include "graphics/surface.h" namespace Fullpipe { @@ -534,7 +535,7 @@ void Scene::draw() { updateScrolling(); // Clean previous stuff - g_fp->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0); + g_fp->_backgroundSurface->fillRect(Common::Rect(0, 0, 800, 600), 0); drawContent(60000, 0, true); diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp index ece4f43e9f..bc66ebf40b 100644 --- a/engines/fullpipe/statics.cpp +++ b/engines/fullpipe/statics.cpp @@ -552,6 +552,8 @@ void Movement::draw(bool flipFlag, int angle) { } else { bmp->putDib(x, y, (int32 *)_currDynamicPhase->_paletteData, _currDynamicPhase->_alpha); } + //Prevent memory leak after new was used to create bmp in reverseImage() + delete bmp; if (_currDynamicPhase->_rect->top) { if (!_currDynamicPhase->_convertedBitmap) { diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h index 0709bd4606..98dab7b176 100644 --- a/engines/sci/detection_tables.h +++ b/engines/sci/detection_tables.h @@ -840,16 +840,12 @@ static const struct ADGameDescription SciGameDescriptions[] = { AD_LISTEND}, Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_UNSTABLE, GUIO_GK1_MAC }, -#define GUIO_GK2_DEMO GUIO5(GUIO_NOSPEECH, \ +#define GUIO_GK2_DEMO GUIO3(GUIO_NOSPEECH, \ GUIO_NOASPECT, \ - GAMEOPTION_PREFER_DIGITAL_SFX, \ - GAMEOPTION_ORIGINAL_SAVELOAD, \ - GAMEOPTION_FB01_MIDI) -#define GUIO_GK2 GUIO5(GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \ + GAMEOPTION_ORIGINAL_SAVELOAD) +#define GUIO_GK2 GUIO3(GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \ GUIO_NOASPECT, \ - GAMEOPTION_PREFER_DIGITAL_SFX, \ - GAMEOPTION_ORIGINAL_SAVELOAD, \ - GAMEOPTION_FB01_MIDI) + GAMEOPTION_ORIGINAL_SAVELOAD) #define GUIO_GK2_MAC GUIO_GK2 // Gabriel Knight 2 - English Windows Non-Interactive Demo diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index 0e29ccf783..77ef92b349 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -102,15 +102,9 @@ reg_t kLock(EngineState *s, int argc, reg_t *argv) { } reg_t kResCheck(EngineState *s, int argc, reg_t *argv) { - Resource *res = NULL; + Resource *res = nullptr; ResourceType restype = g_sci->getResMan()->convertResType(argv[0].toUint16()); - if (restype == kResourceTypeVMD) { - char fileName[10]; - sprintf(fileName, "%d.vmd", argv[1].toUint16()); - return make_reg(0, Common::File::exists(fileName)); - } - if ((restype == kResourceTypeAudio36) || (restype == kResourceTypeSync36)) { if (argc >= 6) { uint noun = argv[2].toUint16() & 0xff; @@ -124,7 +118,16 @@ reg_t kResCheck(EngineState *s, int argc, reg_t *argv) { res = g_sci->getResMan()->testResource(ResourceId(restype, argv[1].toUint16())); } - return make_reg(0, res != NULL); +#ifdef ENABLE_SCI32 + // GK2 stores some VMDs inside of resource volumes, but usually they are + // streamed from the filesystem + if (res == nullptr && restype == kResourceTypeVMD) { + const Common::String fileName = Common::String::format("%u.vmd", argv[1].toUint16()); + return make_reg(0, Common::File::exists(fileName)); + } +#endif + + return make_reg(0, res != nullptr); } reg_t kClone(EngineState *s, int argc, reg_t *argv) { diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index dcefa219f7..0c4f0da959 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -1488,6 +1488,7 @@ static const uint16 kq6CDPatchAudioTextSupport2[] = { // Additional patch specifically for King's Quest 6 // Fixes special windows, used for example in the Pawn shop (room 280), // when the man in a robe complains about no more mints. +// Or also in room 300 at the cliffs (aka copy protection), when Alexander falls down the cliffs. // We have to change even more code, because the game uses PODialog class for // text windows and myDialog class for audio. Both are saved to KQ6Print::dialog // Sadly PODialog is created during KQ6Print::addText, myDialog is set during @@ -1514,13 +1515,34 @@ static const uint16 kq6CDSignatureAudioTextSupport3[] = { }; static const uint16 kq6CDPatchAudioTextSupport3[] = { - 0x31, 0x5c, // adjust jump to reuse audio mode addText-calling code - PATCH_ADDTOOFFSET(102), - 0x48, // ret - 0x48, // ret (waste byte) + 0x31, 0x68, // adjust jump to reuse audio mode addText-calling code + PATCH_ADDTOOFFSET(+85), // right at the MAGIC_DWORD + // check, if text is supposed to be shown. If yes, skip the follow-up check (param[1]) + 0x89, 0x5a, // lsg global[5Ah] + 0x35, 0x01, // ldi 01 + 0x12, // and + 0x2f, 0x07, // bt [skip over param check] + // original code, checks param[1] + 0x8f, 0x01, // lsp param[1] + 0x35, 0x01, // ldi 01 + 0x1a, // eq? + 0x31, 0x10, // bnt [code to set property repressText to 1], adjusted + // use myDialog class, so that text box automatically disappears (this is not done for text only mode, like in the original) 0x72, 0x0e, 0x00, // lofsa myDialog 0x65, 0x12, // aTop dialog - 0x33, 0xed, // jump back to audio mode addText-calling code + // followed by original addText-calling code + 0x38, + PATCH_GETORIGINALBYTE(+95), + PATCH_GETORIGINALBYTE(+96), // pushi addText + 0x78, // push1 + 0x8f, 0x02, // lsp param[2] + 0x59, 0x03, // &rest 03 + 0x54, 0x06, // self 06 + 0x48, // ret + + 0x35, 0x01, // ldi 01 + 0x65, 0x2e, // aTop repressText + 0x48, // ret PATCH_END }; diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index ed3c604f38..f3e22b7c51 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -521,7 +521,8 @@ const SciWorkaroundEntry kDisplay_workarounds[] = { { GID_LONGBOW, 220, 220, 0, "moveOn", "changeState", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: during second room "Outwit and outfight..." { GID_LONGBOW, 210, 210, 0, "mama", "changeState", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: during third room "Fall under the spell..." { GID_LONGBOW, 320, 320, 0, "flyin", "changeState", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: during fourth room "Conspiracies, love..." - { GID_PQ2, 23, 23, 0, "rm23Script", "elements", sig_kDisplay_pq2_1, 0, { WORKAROUND_IGNORE, 0 } }, // when looking at the 2nd page of pate's file - 0x75 as id - bug #5223 + { GID_PQ2, 23, 23, 0, "rm23Script", "elements", sig_kDisplay_pq2_1, 0, { WORKAROUND_IGNORE, 0 } }, // when looking at the 2nd page of files in jail - 0x75 as id - bug #5223 + { GID_PQ2, 23, 23, 0, "rm23Script", "handleEvent", sig_kDisplay_pq2_1, 0, { WORKAROUND_IGNORE, 0 } }, // when looking at the 2nd page of file in jail - 0x75 as id - bug #9670 { GID_QFG1, 11, 11, 0, "battle", "init", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: When entering battle, 0x75 as id { GID_SQ4, 397, 0, 0, "", "export 12", NULL, 0, { WORKAROUND_IGNORE, 0 } }, // FLOPPY: when going into the computer store - bug #5227 { GID_SQ4, 391, 391, 0, "doCatalog", "changeState", sig_kDisplay_sq4_1, 0, { WORKAROUND_IGNORE, 0 } }, // CD: clicking on catalog in roboter sale - a parameter is an object diff --git a/engines/sci/graphics/video32.cpp b/engines/sci/graphics/video32.cpp index c3aafb62bf..4af1e76ed9 100644 --- a/engines/sci/graphics/video32.cpp +++ b/engines/sci/graphics/video32.cpp @@ -39,6 +39,7 @@ #include "sci/graphics/palette32.h" // for GfxPalette32 #include "sci/graphics/plane32.h" // for Plane, PlanePictureCodes::kP... #include "sci/graphics/screen_item32.h" // for ScaleInfo, ScreenItem, Scale... +#include "sci/resource.h" // for ResourceManager, ResourceId,... #include "sci/sci.h" // for SciEngine, g_sci, getSciVersion #include "sci/sound/audio32.h" // for Audio32 #include "sci/video/seq_decoder.h" // for SEQDecoder @@ -492,6 +493,7 @@ VMDPlayer::VMDPlayer(SegManager *segMan, EventManager *eventMan) : _isOpen(false), _isInitialized(false), + _bundledVmd(nullptr), _yieldFrame(0), _yieldInterval(0), _lastYieldedFrameNo(0), @@ -536,15 +538,29 @@ VMDPlayer::IOStatus VMDPlayer::open(const Common::String &fileName, const OpenFl g_sci->_audio32->stop(kAllChannels); } - if (_decoder->loadFile(fileName)) { + Resource *bundledVmd = g_sci->getResMan()->findResource(ResourceId(kResourceTypeVMD, fileName.asUint64()), true); + + if (bundledVmd != nullptr) { + Common::SeekableReadStream *stream = bundledVmd->makeStream(); + if (_decoder->loadStream(stream)) { + _bundledVmd = bundledVmd; + _isOpen = true; + } else { + delete stream; + g_sci->getResMan()->unlockResource(bundledVmd); + } + } else if (_decoder->loadFile(fileName)) { + _isOpen = true; + } + + if (_isOpen) { if (flags & kOpenFlagMute) { _decoder->setVolume(0); } - _isOpen = true; return kIOSuccess; - } else { - return kIOError; } + + return kIOError; } void VMDPlayer::init(const int16 x, const int16 y, const PlayFlags flags, const int16 boostPercent, const int16 boostStartColor, const int16 boostEndColor) { @@ -571,6 +587,11 @@ VMDPlayer::IOStatus VMDPlayer::close() { _isInitialized = false; _ignorePalettes = false; + if (_bundledVmd) { + g_sci->getResMan()->unlockResource(_bundledVmd); + _bundledVmd = nullptr; + } + _segMan->freeBitmap(_screenItem->_celInfo.bitmap); if (!_planeIsOwned && _screenItem != nullptr) { diff --git a/engines/sci/graphics/video32.h b/engines/sci/graphics/video32.h index 69acdf2fce..5ed8fd954a 100644 --- a/engines/sci/graphics/video32.h +++ b/engines/sci/graphics/video32.h @@ -321,6 +321,13 @@ private: bool _isInitialized; /** + * The Resource object for VMDs that are read out + * of a resource bundle instead of being streamed + * from the filesystem. + */ + Resource *_bundledVmd; + + /** * For VMDs played with the `kEventFlagToFrame` flag, * the target frame for yielding back to the SCI VM. */ diff --git a/engines/titanic/carry/bridge_piece.cpp b/engines/titanic/carry/bridge_piece.cpp index 487ea32df6..f90f7cbd4d 100644 --- a/engines/titanic/carry/bridge_piece.cpp +++ b/engines/titanic/carry/bridge_piece.cpp @@ -77,7 +77,7 @@ bool CBridgePiece::UseWithOtherMsg(CUseWithOtherMsg *msg) { } else if (name == "SeasonBridge") { frameMsg._frameNumber = 3; } else if (name == "BeamBridge") { - frameMsg._frameNumber = 0; + frameMsg._frameNumber = 4; } frameMsg.execute(shipSetting); diff --git a/engines/titanic/carry/carry_parrot.cpp b/engines/titanic/carry/carry_parrot.cpp index ed86384147..8b332610e2 100644 --- a/engines/titanic/carry/carry_parrot.cpp +++ b/engines/titanic/carry/carry_parrot.cpp @@ -42,13 +42,13 @@ BEGIN_MESSAGE_MAP(CCarryParrot, CCarry) ON_MESSAGE(ActMsg) END_MESSAGE_MAP() -CCarryParrot::CCarryParrot() : CCarry(), _string6("PerchedParrot"), +CCarryParrot::CCarryParrot() : CCarry(), _parrotName("PerchedParrot"), _timerId(0), _freeCounter(0), _feathersFlag(false) { } void CCarryParrot::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeQuotedLine(_string6, indent); + file->writeQuotedLine(_parrotName, indent); file->writeNumberLine(_timerId, indent); file->writeNumberLine(_freeCounter, indent); file->writeNumberLine(_feathersFlag, indent); @@ -58,7 +58,7 @@ void CCarryParrot::save(SimpleFile *file, int indent) { void CCarryParrot::load(SimpleFile *file) { file->readNumber(); - _string6 = file->readString(); + _parrotName = file->readString(); _timerId = file->readNumber(); _freeCounter = file->readNumber(); _feathersFlag = file->readNumber(); @@ -67,7 +67,7 @@ void CCarryParrot::load(SimpleFile *file) { } bool CCarryParrot::PETGainedObjectMsg(CPETGainedObjectMsg *msg) { - CParrot::_v4 = 4; + CParrot::_state = PARROT_4; CActMsg actMsg("Shut"); actMsg.execute("ParrotCage"); @@ -75,7 +75,7 @@ bool CCarryParrot::PETGainedObjectMsg(CPETGainedObjectMsg *msg) { } bool CCarryParrot::TimerMsg(CTimerMsg *msg) { - if (CParrot::_v4 == 1 || CParrot::_v4 == 4) { + if (CParrot::_state == PARROT_1 || CParrot::_state == PARROT_4) { if (++_freeCounter >= 30) { CActMsg actMsg("FreeParrot"); actMsg.execute(this); @@ -94,7 +94,7 @@ bool CCarryParrot::LeaveViewMsg(CLeaveViewMsg *msg) { if (_visible) { setVisible(false); _fieldE0 = 0; - CParrot::_v4 = 2; + CParrot::_state = PARROT_ESCAPED; } return true; @@ -105,10 +105,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) { if (msg->_mousePos.y >= 360) { petAddToInventory(); - return true; - } - - if (compareViewNameTo("ParrotLobby.Node 1.N")) { + } else if (compareViewNameTo("ParrotLobby.Node 1.N")) { if (msg->_mousePos.x >= 75 && msg->_mousePos.x <= 565 && !CParrot::_v2 && !CCage::_open) { setVisible(false); @@ -123,7 +120,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) { } else { setVisible(false); _fieldE0 = 0; - CParrot::_v4 = 2; + CParrot::_state = PARROT_ESCAPED; playSound("z#475.wav"); sound8(true); moveUnder(findRoom()); @@ -150,7 +147,7 @@ bool CCarryParrot::MouseDragEndMsg(CMouseDragEndMsg *msg) { } bool CCarryParrot::PassOnDragStartMsg(CPassOnDragStartMsg *msg) { - if (CParrot::_v4 != 3) { + if (CParrot::_state != PARROT_MAILED) { moveToView(); setPosition(Point(0, 0)); setVisible(true); @@ -161,21 +158,22 @@ bool CCarryParrot::PassOnDragStartMsg(CPassOnDragStartMsg *msg) { _timerId = addTimer(1000, 1000); _freeCounter = 0; - CParrot::_v4 = 1; + CParrot::_state = PARROT_1; msg->_value3 = 1; return CCarry::PassOnDragStartMsg(msg); } - CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_string6)); + CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_parrotName)); if (npc) startTalking(npc, 0x446BF); _fieldE0 = 0; playSound("z#475.wav"); moveUnder(findRoom()); - msg->_value4 = 1; + CParrot::_state = PARROT_ESCAPED; + msg->_value4 = 1; return true; } @@ -191,24 +189,21 @@ bool CCarryParrot::PreEnterViewMsg(CPreEnterViewMsg *msg) { bool CCarryParrot::UseWithCharMsg(CUseWithCharMsg *msg) { CSuccUBus *succubus = dynamic_cast<CSuccUBus *>(msg->_character); if (succubus) - CParrot::_v4 = 3; + CParrot::_state = PARROT_MAILED; return CCarry::UseWithCharMsg(msg); } bool CCarryParrot::ActMsg(CActMsg *msg) { - if (msg->_action == "FreeParrot" && (CParrot::_v4 == 4 || CParrot::_v4 == 1)) { - CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_string6)); + if (msg->_action == "FreeParrot" && (CParrot::_state == PARROT_4 || CParrot::_state == PARROT_1)) { + CTrueTalkNPC *npc = dynamic_cast<CTrueTalkNPC *>(getRoot()->findByName(_parrotName)); if (npc) startTalking(npc, 0x446BF); setVisible(false); _fieldE0 = 0; - if (CParrot::_v4 == 4) { - CActMsg actMsg("Shut"); - actMsg.execute("ParrotCage"); - } else { + if (CParrot::_state == PARROT_4) { playSound("z#475.wav"); if (!_feathersFlag) { @@ -221,13 +216,17 @@ bool CCarryParrot::ActMsg(CActMsg *msg) { _feathersFlag = true; } - getPetControl()->removeFromInventory(this); - getPetControl()->setAreaChangeType(1); + CPetControl *pet = getPetControl(); + pet->removeFromInventory(this); + pet->setAreaChangeType(1); moveUnder(getRoom()); + } else { + CActMsg actMsg("Shut"); + actMsg.execute("ParrotCage"); } - CParrot::_v4 = 2; - stopTimer(_timerId); + CParrot::_state = PARROT_ESCAPED; + stopAnimTimer(_timerId); _timerId = 0; } diff --git a/engines/titanic/carry/carry_parrot.h b/engines/titanic/carry/carry_parrot.h index c42475e5f0..e165482edc 100644 --- a/engines/titanic/carry/carry_parrot.h +++ b/engines/titanic/carry/carry_parrot.h @@ -42,7 +42,7 @@ class CCarryParrot : public CCarry { bool UseWithCharMsg(CUseWithCharMsg *msg); bool ActMsg(CActMsg *msg); private: - CString _string6; + CString _parrotName; int _timerId; int _freeCounter; bool _feathersFlag; diff --git a/engines/titanic/continue_save_dialog.h b/engines/titanic/continue_save_dialog.h index 58c7deef00..b6d9aebfac 100644 --- a/engines/titanic/continue_save_dialog.h +++ b/engines/titanic/continue_save_dialog.h @@ -28,7 +28,7 @@ #include "titanic/support/image.h" #include "titanic/support/rect.h" #include "titanic/support/string.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" namespace Titanic { @@ -43,7 +43,7 @@ class CContinueSaveDialog : public CEventTarget { }; private: Common::Array<SaveEntry> _saves; - CPetText _slotNames[5]; + CTextControl _slotNames[5]; int _highlightedSlot, _selectedSlot; Point _mousePos; bool _evilTwinShown; diff --git a/engines/titanic/core/drop_target.cpp b/engines/titanic/core/drop_target.cpp index f02efeee5d..ffeab03545 100644 --- a/engines/titanic/core/drop_target.cpp +++ b/engines/titanic/core/drop_target.cpp @@ -34,7 +34,7 @@ BEGIN_MESSAGE_MAP(CDropTarget, CGameObject) END_MESSAGE_MAP() CDropTarget::CDropTarget() : CGameObject(), _itemFrame(0), - _itemMatchSize(0), _showItem(false), _fieldF4(0), _dropFrame(0), + _itemMatchSize(0), _showItem(false), _dropEnabled(false), _dropFrame(0), _dragFrame(0), _dragCursorId(CURSOR_ARROW), _dropCursorId(CURSOR_HAND), _clipFlags(20) { } @@ -48,7 +48,7 @@ void CDropTarget::save(SimpleFile *file, int indent) { file->writeQuotedLine(_soundName, indent); file->writeNumberLine(_showItem, indent); file->writeQuotedLine(_itemName, indent); - file->writeNumberLine(_fieldF4, indent); + file->writeNumberLine(_dropEnabled, indent); file->writeNumberLine(_dropFrame, indent); file->writeNumberLine(_dragFrame, indent); file->writeQuotedLine(_clipName, indent); @@ -68,7 +68,7 @@ void CDropTarget::load(SimpleFile *file) { _soundName = file->readString(); _showItem = file->readNumber(); _itemName = file->readString(); - _fieldF4 = file->readNumber(); + _dropEnabled = file->readNumber(); _dropFrame = file->readNumber(); _dragFrame = file->readNumber(); _clipName = file->readString(); @@ -119,7 +119,7 @@ bool CDropTarget::MouseDragStartMsg(CMouseDragStartMsg *msg) { msg->_dragItem = dragItem; CGameObject *obj = dynamic_cast<CGameObject *>(findByName(_itemName)); - if (_itemName.empty() || _fieldF4 || !obj) + if (_itemName.empty() || _dropEnabled || !obj) return false; CDropZoneLostObjectMsg lostMsg; @@ -161,7 +161,7 @@ bool CDropTarget::EnterViewMsg(CEnterViewMsg *msg) { bool CDropTarget::VisibleMsg(CVisibleMsg *msg) { setVisible(msg->_visible); - _fieldF4 = !msg->_visible; + _dropEnabled = !msg->_visible; return true; } diff --git a/engines/titanic/core/drop_target.h b/engines/titanic/core/drop_target.h index e07b640c9f..bdf8891789 100644 --- a/engines/titanic/core/drop_target.h +++ b/engines/titanic/core/drop_target.h @@ -42,7 +42,7 @@ protected: CString _soundName; bool _showItem; CString _itemName; - int _fieldF4; + bool _dropEnabled; int _dropFrame; int _dragFrame; CString _clipName; diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp index bfcfa9fbff..0a0b3b1c42 100644 --- a/engines/titanic/core/game_object.cpp +++ b/engines/titanic/core/game_object.cpp @@ -63,7 +63,7 @@ CGameObject::CGameObject(): CNamedItem() { _field44 = 0xF0; _field48 = 0xF0; _field4C = 0xFF; - _isMail = false; + _isPendingMail = false; _destRoomFlags = 0; _roomFlags = 0; _visible = true; @@ -119,7 +119,7 @@ void CGameObject::save(SimpleFile *file, int indent) { file->writeNumberLine(_field4C, indent + 1); file->writeNumberLine(_fieldB8, indent + 1); file->writeNumberLine(_visible, indent + 1); - file->writeNumberLine(_isMail, indent + 1); + file->writeNumberLine(_isPendingMail, indent + 1); file->writeNumberLine(_destRoomFlags, indent + 1); file->writeNumberLine(_roomFlags, indent + 1); @@ -174,7 +174,7 @@ void CGameObject::load(SimpleFile *file) { _field4C = file->readNumber(); _fieldB8 = file->readNumber(); _visible = file->readNumber() != 0; - _isMail = file->readNumber(); + _isPendingMail = file->readNumber(); _destRoomFlags = file->readNumber(); _roomFlags = file->readNumber(); @@ -1081,10 +1081,11 @@ void CGameObject::setMovieFrameRate(double rate) { void CGameObject::setText(const CString &str, int border, int borderRight) { if (!_text) - _text = new CPetText(); + _text = new CTextControl(); _textBorder = border; _textBorderRight = borderRight; + setTextBounds(); _text->setText(str); CScreenManager *screenManager = getGameManager()->setScreenManager(); _text->scrollToTop(screenManager); @@ -1092,7 +1093,7 @@ void CGameObject::setText(const CString &str, int border, int borderRight) { void CGameObject::setTextHasBorders(bool hasBorders) { if (!_text) - _text = new CPetText(); + _text = new CTextControl(); _text->setHasBorder(hasBorders); } @@ -1108,14 +1109,14 @@ void CGameObject::setTextBounds() { void CGameObject::setTextColor(byte r, byte g, byte b) { if (!_text) - _text = new CPetText(); + _text = new CTextControl(); _text->setColor(r, g, b); } void CGameObject::setTextFontNumber(int fontNumber) { if (!_text) - _text = new CPetText(); + _text = new CTextControl(); _text->setFontNumber(fontNumber); } @@ -1132,11 +1133,13 @@ CTextCursor *CGameObject::getTextCursor() const { void CGameObject::scrollTextUp() { if (_text) _text->scrollUp(CScreenManager::_screenManagerPtr); + makeDirty(); } void CGameObject::scrollTextDown() { if (_text) _text->scrollDown(CScreenManager::_screenManagerPtr); + makeDirty(); } void CGameObject::lockMouse() { @@ -1451,10 +1454,10 @@ CGameObject *CGameObject::findMail(uint roomFlags) const { return mailMan ? mailMan->findMail(roomFlags) : nullptr; } -void CGameObject::removeMail(uint destRoomFlags, uint newRoomFlags) { +void CGameObject::sendMail(uint currRoomFlags, uint newRoomFlags) { CMailMan *mailMan = getMailMan(); if (mailMan) - mailMan->removeMail(destRoomFlags, newRoomFlags); + mailMan->sendMail(currRoomFlags, newRoomFlags); } void CGameObject::resetMail() { diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h index 8702b5f522..629c6a038d 100644 --- a/engines/titanic/core/game_object.h +++ b/engines/titanic/core/game_object.h @@ -34,7 +34,7 @@ #include "titanic/support/strings.h" #include "titanic/support/movie_clip.h" #include "titanic/pet_control/pet_section.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" #include "titanic/game_state.h" namespace Titanic { @@ -87,7 +87,7 @@ protected: int _initialFrame; CMovieRangeInfoList _movieRangeInfoList; int _frameNumber; - CPetText *_text; + CTextControl *_text; uint _textBorder; uint _textBorderRight; int _field9C; @@ -519,57 +519,12 @@ protected: void setMovieFrameRate(double rate); /** - * Set up the text and borders for the object - */ - void setText(const CString &str, int border = 0, int borderRight = 0); - - /** - * Sets whether the text will use borders - */ - void setTextHasBorders(bool hasBorders); - - /** - * Sets the bounds for a previously defined text area - */ - void setTextBounds(); - - /** - * Sets the color for the object's text - */ - void setTextColor(byte r, byte g, byte b); - - /** - * Sets the font number to use for text - */ - void setTextFontNumber(int fontNumber); - - /** - * Gets the width of the text contents - */ - int getTextWidth() const; - - /** - * Returns the text cursor - */ - CTextCursor *getTextCursor() const; - - /** - * Scroll text up - */ - void scrollTextUp(); - - /** - * Scroll text down - */ - void scrollTextDown(); - - /** * Gets a new random number */ int getRandomNumber(int max, int *oldVal = nullptr); public: Rect _bounds; - bool _isMail; + bool _isPendingMail; uint _destRoomFlags; uint _roomFlags; int _field60; @@ -748,11 +703,6 @@ public: CGameObject *getHiddenObject(const CString &name) const; /** - * Sets up credits text - */ - void createCredits(); - - /** * Support function for drag moving */ void dragMove(const Point &pt); @@ -764,6 +714,58 @@ public: bool compareRoomFlags(int mode, uint flags1, uint flags2); + /*--- Text display methods ---*/ + + /** + * Sets up credits text + */ + void createCredits(); + + /** + * Set up the text and borders for the object + */ + void setText(const CString &str, int border = 0, int borderRight = 0); + + /** + * Sets whether the text will use borders + */ + void setTextHasBorders(bool hasBorders); + + /** + * Sets the bounds for a previously defined text area + */ + void setTextBounds(); + + /** + * Sets the color for the object's text + */ + void setTextColor(byte r, byte g, byte b); + + /** + * Sets the font number to use for text + */ + void setTextFontNumber(int fontNumber); + + /** + * Gets the width of the text contents + */ + int getTextWidth() const; + + /** + * Scroll text up + */ + void scrollTextUp(); + + /** + * Scroll text down + */ + void scrollTextDown(); + + /** + * Returns the text cursor + */ + CTextCursor *getTextCursor() const; + /*--- CGameManager Methods ---*/ /** @@ -797,9 +799,9 @@ public: void addMail(uint destRoomFlags); /** - * Remove an object from the mail list + * Sends a pending mail object to a given destination */ - void removeMail(uint destRoomFlags, uint newRoomFlags); + void sendMail(uint currRoomFlags, uint newRoomFlags); /** * Return the full Id of the current view in a diff --git a/engines/titanic/core/mail_man.cpp b/engines/titanic/core/mail_man.cpp index 851e52694d..a34c69674b 100644 --- a/engines/titanic/core/mail_man.cpp +++ b/engines/titanic/core/mail_man.cpp @@ -56,22 +56,22 @@ void CMailMan::addMail(CGameObject *obj, uint destRoomFlags) { void CMailMan::setMailDest(CGameObject *obj, uint roomFlags) { obj->_destRoomFlags = roomFlags; obj->_roomFlags = 0; - obj->_isMail = true; + obj->_isPendingMail = true; } CGameObject *CMailMan::findMail(uint roomFlags) const { for (CGameObject *obj = getFirstObject(); obj; obj = getNextObject(obj)) { - if (obj->_isMail && obj->_destRoomFlags == roomFlags) + if (obj->_isPendingMail && obj->_destRoomFlags == roomFlags) return obj; } return nullptr; } -void CMailMan::removeMail(uint destRoomFlags, uint newRoomFlags) { +void CMailMan::sendMail(uint currRoomFlags, uint newRoomFlags) { for (CGameObject *obj = getFirstObject(); obj; obj = getNextObject(obj)) { - if (obj->_isMail && obj->_destRoomFlags == destRoomFlags) { - obj->_isMail = false; + if (obj->_isPendingMail && obj->_destRoomFlags == currRoomFlags) { + obj->_isPendingMail = false; obj->_roomFlags = newRoomFlags; break; } diff --git a/engines/titanic/core/mail_man.h b/engines/titanic/core/mail_man.h index 0a8d5fa90a..b5d6a153fc 100644 --- a/engines/titanic/core/mail_man.h +++ b/engines/titanic/core/mail_man.h @@ -71,9 +71,9 @@ public: CGameObject *findMail(uint roomFlags) const; /** - * Remove a mail item + * Sends a pending mail object to a given destination */ - void removeMail(uint destRoomFlags, uint newRoomFlags); + void sendMail(uint currRoomFlags, uint newRoomFlags); void resetValue() { _value = 0; } }; diff --git a/engines/titanic/core/project_item.cpp b/engines/titanic/core/project_item.cpp index af67f69580..1093a5c6e7 100644 --- a/engines/titanic/core/project_item.cpp +++ b/engines/titanic/core/project_item.cpp @@ -158,8 +158,8 @@ void CProjectItem::loadGame(int slotId) { CompressedFile file; // Clear any existing project contents and call preload code - clear(); preLoad(); + clear(); // Open either an existing savegame slot or the new game template if (slotId >= 0) { @@ -309,6 +309,10 @@ void CProjectItem::saveData(SimpleFile *file, CTreeItem *item) const { void CProjectItem::preLoad() { if (_gameManager) _gameManager->preLoad(); + + CScreenManager *scrManager = CScreenManager::_currentScreenManagerPtr; + if (scrManager) + scrManager->preLoad(); } void CProjectItem::postLoad() { diff --git a/engines/titanic/core/saveable_object.cpp b/engines/titanic/core/saveable_object.cpp index 73b4bf861f..f718ba79b3 100644 --- a/engines/titanic/core/saveable_object.cpp +++ b/engines/titanic/core/saveable_object.cpp @@ -1473,6 +1473,9 @@ void CSaveableObject::initClassList() { ADDFN(CEnterNodeMsg, CMessage); ADDFN(CEnterRoomMsg, CMessage); ADDFN(CEnterViewMsg, CMessage); + ADDFN(CPreEnterNodeMsg, CMessage); + ADDFN(CPreEnterRoomMsg, CMessage); + ADDFN(CPreEnterViewMsg, CMessage); ADDFN(CPreSaveMsg, CMessage); ADDFN(CProdMaitreDMsg, CMessage); ADDFN(CPumpingMsg, CMessage); diff --git a/engines/titanic/core/view_item.cpp b/engines/titanic/core/view_item.cpp index c25461f5cc..9109bcc5b2 100644 --- a/engines/titanic/core/view_item.cpp +++ b/engines/titanic/core/view_item.cpp @@ -195,6 +195,8 @@ bool CViewItem::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { linkItem = dynamic_cast<CLinkItem *>( findNextInstanceOf(CLinkItem::_type, linkItem)); } + + handleMouseMsg(msg, false); } } } diff --git a/engines/titanic/events.cpp b/engines/titanic/events.cpp index 97f9a86eb3..d29a19dec6 100644 --- a/engines/titanic/events.cpp +++ b/engines/titanic/events.cpp @@ -127,7 +127,7 @@ bool Events::checkForNextFrameCounter() { } uint32 Events::getTicksCount() const { - return g_system->getMillis(); + return _frameCounter * GAME_FRAME_TIME; } void Events::sleep(uint time) { diff --git a/engines/titanic/game/announce.cpp b/engines/titanic/game/announce.cpp index 74c126476f..16298f7b99 100644 --- a/engines/titanic/game/announce.cpp +++ b/engines/titanic/game/announce.cpp @@ -30,14 +30,14 @@ BEGIN_MESSAGE_MAP(CAnnounce, CGameObject) ON_MESSAGE(ActMsg) END_MESSAGE_MAP() -CAnnounce::CAnnounce() : _nameIndex(0), _soundHandle(0), _leaveFlag(1), _enabled(false) { +CAnnounce::CAnnounce() : _nameIndex(0), _soundHandle(0), _notActivatedFlag(true), _enabled(false) { } void CAnnounce::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); file->writeNumberLine(_nameIndex, indent); file->writeNumberLine(_soundHandle, indent); - file->writeNumberLine(_leaveFlag, indent); + file->writeNumberLine(_notActivatedFlag, indent); file->writeNumberLine(_enabled, indent); CGameObject::save(file, indent); @@ -47,7 +47,7 @@ void CAnnounce::load(SimpleFile *file) { file->readNumber(); _nameIndex = file->readNumber(); _soundHandle = file->readNumber(); - _leaveFlag = file->readNumber(); + _notActivatedFlag = file->readNumber(); _enabled = file->readNumber(); CGameObject::load(file); @@ -97,6 +97,7 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) { break; } + // Schedule another announcement for a random future time addTimer(1, 300000 + getRandomNumber(30000), 0); if (getRandomNumber(3) == 0) addTimer(2, 4000, 0); @@ -111,9 +112,10 @@ bool CAnnounce::TimerMsg(CTimerMsg *msg) { } bool CAnnounce::LeaveRoomMsg(CLeaveRoomMsg *msg) { - if (_leaveFlag) { + // The very first time the player leaves the Embarklation Lobby, start announcements + if (_notActivatedFlag) { addTimer(1, 1000, 0); - _leaveFlag = 0; + _notActivatedFlag = false; _enabled = true; } @@ -121,6 +123,7 @@ bool CAnnounce::LeaveRoomMsg(CLeaveRoomMsg *msg) { } bool CAnnounce::ActMsg(CActMsg *msg) { + // Handle enabling or disabling announcements if (msg->_action == "Enable") _enabled = true; else if (msg->_action == "Disable") diff --git a/engines/titanic/game/announce.h b/engines/titanic/game/announce.h index 9bf060daae..caacb8ffa1 100644 --- a/engines/titanic/game/announce.h +++ b/engines/titanic/game/announce.h @@ -35,7 +35,7 @@ class CAnnounce : public CGameObject { private: int _nameIndex; int _soundHandle; - bool _leaveFlag; + bool _notActivatedFlag; bool _enabled; public: CLASSDEF; diff --git a/engines/titanic/game/broken_pell_base.cpp b/engines/titanic/game/broken_pell_base.cpp index 02c2d873ac..a3825d503e 100644 --- a/engines/titanic/game/broken_pell_base.cpp +++ b/engines/titanic/game/broken_pell_base.cpp @@ -33,7 +33,7 @@ void CBrokenPellBase::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); file->writeNumberLine(_v1, indent); file->writeNumberLine(_v2, indent); - file->writeNumberLine(_fieldE0, indent); + file->writeNumberLine(_exitAction, indent); CBackground::save(file, indent); } @@ -41,7 +41,7 @@ void CBrokenPellBase::load(SimpleFile *file) { file->readNumber(); _v1 = file->readNumber(); _v2 = file->readNumber(); - _fieldE0 = file->readNumber(); + _exitAction = file->readNumber(); CBackground::load(file); } diff --git a/engines/titanic/game/broken_pell_base.h b/engines/titanic/game/broken_pell_base.h index 4ca7eddd20..c5b27d88bf 100644 --- a/engines/titanic/game/broken_pell_base.h +++ b/engines/titanic/game/broken_pell_base.h @@ -33,10 +33,10 @@ protected: static bool _v1; static int _v2; - int _fieldE0; + int _exitAction; public: CLASSDEF; - CBrokenPellBase() : CBackground(), _fieldE0(0) {} + CBrokenPellBase() : CBackground(), _exitAction(0) {} /** * Save the data for the class to file diff --git a/engines/titanic/game/broken_pellerator.cpp b/engines/titanic/game/broken_pellerator.cpp index 8fb7244b7e..d3664acccd 100644 --- a/engines/titanic/game/broken_pellerator.cpp +++ b/engines/titanic/game/broken_pellerator.cpp @@ -34,8 +34,8 @@ END_MESSAGE_MAP() void CBrokenPellerator::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeQuotedLine(_string2, indent); - file->writeQuotedLine(_string3, indent); + file->writeQuotedLine(_exitLeftView, indent); + file->writeQuotedLine(_exitRightView, indent); file->writeQuotedLine(_string4, indent); file->writeQuotedLine(_string5, indent); @@ -44,8 +44,8 @@ void CBrokenPellerator::save(SimpleFile *file, int indent) { void CBrokenPellerator::load(SimpleFile *file) { file->readNumber(); - _string2 = file->readString(); - _string3 = file->readString(); + _exitLeftView = file->readString(); + _exitRightView = file->readString(); _string4 = file->readString(); _string5 = file->readString(); @@ -86,15 +86,15 @@ bool CBrokenPellerator::ActMsg(CActMsg *msg) { CStatusChangeMsg statusMsg; statusMsg.execute("PickupHose"); } else { - _fieldE0 = 0; + _exitAction = 0; bool closeFlag = msg->_action == "Close"; if (msg->_action == "CloseLeft") { closeFlag = true; - _fieldE0 = 1; + _exitAction = 1; } if (msg->_action == "CloseRight") { closeFlag = true; - _fieldE0 = 2; + _exitAction = 2; } if (closeFlag) { @@ -105,18 +105,18 @@ bool CBrokenPellerator::ActMsg(CActMsg *msg) { else playMovie(14, 28, MOVIE_NOTIFY_OBJECT); } else { - switch (_fieldE0) { + switch (_exitAction) { case 1: - changeView(_string2); + changeView(_exitLeftView); break; case 2: - changeView(_string3); + changeView(_exitRightView); break; default: break; } - _fieldE0 = 0; + _exitAction = 0; } } } @@ -126,23 +126,25 @@ bool CBrokenPellerator::ActMsg(CActMsg *msg) { bool CBrokenPellerator::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == 14) { + // Pellerator has been opened, so let the hose be picked up (if it's still there) CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("PickUpHose"); } if (msg->_endFrame == 28) { + // Pellerator has been closed, so disable the hose (if it's still there) CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PickUpHose"); } - switch (_fieldE0) { + switch (_exitAction) { case 1: - changeView(_string2); + changeView(_exitLeftView); break; case 2: - changeView(_string3); + changeView(_exitRightView); break; default: break; diff --git a/engines/titanic/game/broken_pellerator.h b/engines/titanic/game/broken_pellerator.h index 3b8c3ba587..f243f4ebfe 100644 --- a/engines/titanic/game/broken_pellerator.h +++ b/engines/titanic/game/broken_pellerator.h @@ -34,8 +34,8 @@ class CBrokenPellerator : public CBrokenPellBase { bool ActMsg(CActMsg *msg); bool MovieEndMsg(CMovieEndMsg *msg); private: - CString _string2; - CString _string3; + CString _exitLeftView; + CString _exitRightView; CString _string4; CString _string5; public: diff --git a/engines/titanic/game/broken_pellerator_froz.cpp b/engines/titanic/game/broken_pellerator_froz.cpp index 690ab76820..7025b37a0c 100644 --- a/engines/titanic/game/broken_pellerator_froz.cpp +++ b/engines/titanic/game/broken_pellerator_froz.cpp @@ -85,15 +85,15 @@ bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) { statusMsg._newStatus = 0; statusMsg.execute("FPickUpHose"); } else { - _fieldE0 = 0; + _exitAction = 0; bool closeFlag = msg->_action == "Close"; if (msg->_action == "CloseLeft") { closeFlag = true; - _fieldE0 = 1; + _exitAction = 1; } if (msg->_action == "CloseRight") { closeFlag = true; - _fieldE0 = 2; + _exitAction = 2; } if (closeFlag) { @@ -104,7 +104,7 @@ bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) { else playMovie(72, 84, MOVIE_NOTIFY_OBJECT); } else { - switch (_fieldE0) { + switch (_exitAction) { case 1: changeView(_string2); break; @@ -115,7 +115,7 @@ bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) { break; } - _fieldE0 = 0; + _exitAction = 0; } } } @@ -136,12 +136,12 @@ bool CBrokenPelleratorFroz::MovieEndMsg(CMovieEndMsg *msg) { statusMsg.execute("FPickUpHose"); } - if (_fieldE0 == 1) { + if (_exitAction == 1) { changeView(_string2); - _fieldE0 = 0; - } else if (_fieldE0 == 2) { + _exitAction = 0; + } else if (_exitAction == 2) { changeView(_string3); - _fieldE0 = 0; + _exitAction = 0; } return true; diff --git a/engines/titanic/game/cage.cpp b/engines/titanic/game/cage.cpp index bbac384cea..11f5837e4c 100644 --- a/engines/titanic/game/cage.cpp +++ b/engines/titanic/game/cage.cpp @@ -53,7 +53,7 @@ void CCage::load(SimpleFile *file) { } bool CCage::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { - if (CParrot::_v4 && !CParrot::_v5) { + if (CParrot::_state != PARROT_IN_CAGE && !CParrot::_v5) { CActMsg actMsg(_open ? "Open" : "Shut"); actMsg.execute(this); } @@ -88,7 +88,7 @@ bool CCage::MovieEndMsg(CMovieEndMsg *msg) { _open = clipExistsByEnd("Shut", msg->_endFrame); CStatusChangeMsg statusMsg; - statusMsg._newStatus = _open ? 1 : (CParrot::_v4 == 0 ? 1 : 0); + statusMsg._newStatus = _open ? 1 : (CParrot::_state == PARROT_IN_CAGE ? 1 : 0); statusMsg.execute("PerchCoreHolder"); return true; @@ -96,14 +96,14 @@ bool CCage::MovieEndMsg(CMovieEndMsg *msg) { bool CCage::PreEnterViewMsg(CPreEnterViewMsg *msg) { loadSurface(); - _open = CParrot::_v4 != 0; + _open = CParrot::_state != PARROT_IN_CAGE; loadFrame(_open ? 8 : 0); return true; } bool CCage::MouseMoveMsg(CMouseMoveMsg *msg) { - _cursorId = CParrot::_v4 && !CParrot::_v5 ? CURSOR_ACTIVATE : CURSOR_ARROW; + _cursorId = CParrot::_state != PARROT_IN_CAGE && !CParrot::_v5 ? CURSOR_ACTIVATE : CURSOR_ARROW; return true; } diff --git a/engines/titanic/game/fan_control.cpp b/engines/titanic/game/fan_control.cpp index b3c3b2e816..ca664764ea 100644 --- a/engines/titanic/game/fan_control.cpp +++ b/engines/titanic/game/fan_control.cpp @@ -32,17 +32,17 @@ BEGIN_MESSAGE_MAP(CFanControl, CGameObject) ON_MESSAGE(TimerMsg) END_MESSAGE_MAP() -CFanControl::CFanControl() : CGameObject(), _state(-1), - _enabled(false), _fieldC4(0), _fieldC8(false), _fieldCC(0) { +CFanControl::CFanControl() : CGameObject(), _state(-1), _enabled(false), + _starlings(false), _fanOn(false), _starlingsDying(false) { } void CFanControl::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); file->writeNumberLine(_state, indent); file->writeNumberLine(_enabled, indent); - file->writeNumberLine(_fieldC4, indent); - file->writeNumberLine(_fieldC8, indent); - file->writeNumberLine(_fieldCC, indent); + file->writeNumberLine(_starlings, indent); + file->writeNumberLine(_fanOn, indent); + file->writeNumberLine(_starlingsDying, indent); CGameObject::save(file, indent); } @@ -51,9 +51,9 @@ void CFanControl::load(SimpleFile *file) { file->readNumber(); _state = file->readNumber(); _enabled = file->readNumber(); - _fieldC4 = file->readNumber(); - _fieldC8 = file->readNumber(); - _fieldCC = file->readNumber(); + _starlings = file->readNumber(); + _fanOn = file->readNumber(); + _starlingsDying = file->readNumber(); CGameObject::load(file); } @@ -64,22 +64,23 @@ bool CFanControl::ActMsg(CActMsg *msg) { else if (msg->_action == "DisableObject") _enabled = false; else if (msg->_action == "StarlingsDead") { - _fieldC4 = 0; + _starlings = false; decTransitions(); - _fieldCC = 0; + _starlingsDying = false; } return true; } bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) { - if (!_fieldCC) { + if (!_starlingsDying) { playSound("z#42.wav"); if (_enabled) { switch (msg->_newStatus) { case 1: - _fieldC8 = !_fieldC8; - if (_fieldC8) { + // Fan Power button + _fanOn = !_fanOn; + if (_fanOn) { playMovie(6, 8, 0); _state = 0; } else { @@ -104,7 +105,8 @@ bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) { break; case 2: - if (_fieldC8) { + // Fan Speed button + if (_fanOn) { _state = (_state + 1) % 4; switch (_state) { case 0: @@ -115,9 +117,10 @@ bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) { playMovie(8, 12, 0); break; case 2: - if (_fieldC4) { + if (_starlings) { + // It's puret time incTransitions(); - _fieldCC = 1; + _starlingsDying = true; playMovie(12, 18, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); } else { playMovie(12, 18, 0); @@ -146,16 +149,20 @@ bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) { bool CFanControl::EnterViewMsg(CEnterViewMsg *msg) { switch (_state) { - case 0: + case -1: + // Fan off loadFrame(6); break; - case 1: + case 0: + // Low speed loadFrame(4); break; - case 2: + case 1: + // Medium speed loadFrame(0); break; - case 3: + case 2: + // High speed loadFrame(18); break; default: diff --git a/engines/titanic/game/fan_control.h b/engines/titanic/game/fan_control.h index 1f7402db12..063243c164 100644 --- a/engines/titanic/game/fan_control.h +++ b/engines/titanic/game/fan_control.h @@ -37,9 +37,9 @@ class CFanControl : public CGameObject { public: int _state; bool _enabled; - int _fieldC4; - bool _fieldC8; - int _fieldCC; + bool _starlings; + bool _fanOn; + bool _starlingsDying; public: CLASSDEF; CFanControl(); diff --git a/engines/titanic/game/hammer_dispensor.cpp b/engines/titanic/game/hammer_dispensor.cpp index bc6a3d5ad8..2450868b14 100644 --- a/engines/titanic/game/hammer_dispensor.cpp +++ b/engines/titanic/game/hammer_dispensor.cpp @@ -32,13 +32,13 @@ BEGIN_MESSAGE_MAP(CHammerDispensor, CBackground) END_MESSAGE_MAP() CHammerDispensor::CHammerDispensor() : CBackground(), - _fieldE0(false), _fieldE4(true), _state(0) { + _isOpen(false), _panUp(true), _state(0) { } void CHammerDispensor::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_fieldE0, indent); - file->writeNumberLine(_fieldE4, indent); + file->writeNumberLine(_isOpen, indent); + file->writeNumberLine(_panUp, indent); file->writeNumberLine(_state, indent); CBackground::save(file, indent); @@ -46,44 +46,44 @@ void CHammerDispensor::save(SimpleFile *file, int indent) { void CHammerDispensor::load(SimpleFile *file) { file->readNumber(); - _fieldE0 = file->readNumber(); - _fieldE4 = file->readNumber(); + _isOpen = file->readNumber(); + _panUp = file->readNumber(); _state = file->readNumber(); CBackground::load(file); } bool CHammerDispensor::ActMsg(CActMsg *msg) { - if (msg->_action == "DispenseHammer" && !_fieldE0) { + if (msg->_action == "DispenseHammer" && !_isOpen) { _state = 1; playMovie(15, 31, MOVIE_NOTIFY_OBJECT); - _fieldE0 = true; + _isOpen = true; } - if (msg->_action == "HammerTaken" && _fieldE0) + if (msg->_action == "HammerTaken" && _isOpen) loadFrame(32); return true; } bool CHammerDispensor::EnterViewMsg(CEnterViewMsg *msg) { - if (_fieldE4) { + if (_panUp) { playMovie(7, 14, 0); - _fieldE4 = false; + _panUp = false; } return true; } bool CHammerDispensor::LeaveViewMsg(CLeaveViewMsg *msg) { - _fieldE4 = true; - _fieldE0 = 0; - _state = 2; - - if (_fieldE0) + if (_isOpen) playMovie(32, 50, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); else playMovie(0, 7, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + + _panUp = true; + _isOpen = false; + _state = 2; return true; } diff --git a/engines/titanic/game/hammer_dispensor.h b/engines/titanic/game/hammer_dispensor.h index 2383a3349e..f93f4141ab 100644 --- a/engines/titanic/game/hammer_dispensor.h +++ b/engines/titanic/game/hammer_dispensor.h @@ -34,8 +34,8 @@ class CHammerDispensor : public CBackground { bool LeaveViewMsg(CLeaveViewMsg *msg); bool MovieEndMsg(CMovieEndMsg *msg); private: - bool _fieldE0; - bool _fieldE4; + bool _isOpen; + bool _panUp; int _state; public: CLASSDEF; diff --git a/engines/titanic/game/hammer_dispensor_button.cpp b/engines/titanic/game/hammer_dispensor_button.cpp index 89d37a0476..661a92eb17 100644 --- a/engines/titanic/game/hammer_dispensor_button.cpp +++ b/engines/titanic/game/hammer_dispensor_button.cpp @@ -34,36 +34,36 @@ BEGIN_MESSAGE_MAP(CHammerDispensorButton, CStartAction) END_MESSAGE_MAP() CHammerDispensorButton::CHammerDispensorButton() : CStartAction(), - _fieldF8(0), _fieldFC(0), _field100(0), _btnPos(Point(56, 6)), - _field10C(nullptr), _field110(0) { + _active(false), _open(false), _hitCounter(0), _btnPos(Point(56, 6)), + _perch(nullptr), _hammerTaken(0) { } void CHammerDispensorButton::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_fieldF8, indent); - file->writeNumberLine(_fieldFC, indent); - file->writeNumberLine(_field100, indent); + file->writeNumberLine(_active, indent); + file->writeNumberLine(_open, indent); + file->writeNumberLine(_hitCounter, indent); file->writeNumberLine(_btnPos.x, indent); file->writeNumberLine(_btnPos.y, indent); - file->writeNumberLine(_field110, indent); + file->writeNumberLine(_hammerTaken, indent); CStartAction::save(file, indent); } void CHammerDispensorButton::load(SimpleFile *file) { file->readNumber(); - _fieldF8 = file->readNumber(); - _fieldFC = file->readNumber(); - _field100 = file->readNumber(); + _active = file->readNumber(); + _open = file->readNumber(); + _hitCounter = file->readNumber(); _btnPos.x = file->readNumber(); _btnPos.y = file->readNumber(); - _field110 = file->readNumber(); + _hammerTaken = file->readNumber(); CStartAction::load(file); } bool CHammerDispensorButton::PuzzleSolvedMsg(CPuzzleSolvedMsg *msg) { - _fieldF8 = 1; + _active = true; return true; } @@ -75,54 +75,47 @@ bool CHammerDispensorButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) { bool CHammerDispensorButton::ActMsg(CActMsg *msg) { if (msg->_action == "HammerTaken") - _field110 = true; + _hammerTaken = true; return true; } bool CHammerDispensorButton::FrameMsg(CFrameMsg *msg) { - if (!_fieldF8) + if (!_active) return true; - if (!_field10C) { + if (!_perch) { CGameObject *obj = getDraggingObject(); if (obj) { if (obj->isEquals("Perch") && getView() == findView()) - _field10C = obj; + _perch = static_cast<CPerch *>(obj); } } - if (_field10C) { - Point pt(_btnPos.x + _bounds.left, _btnPos.y + _bounds.top); + if (_perch) { + Point pt(_btnPos.x + _perch->_bounds.left, _btnPos.y + _perch->_bounds.top); bool flag = checkPoint(pt, true); - switch (_fieldFC) { - case 0: + if (!_open) { if (flag) { playSound("z#93.wav"); - if (++_field100 == 5) { - if (!_field110) { + if (++_hitCounter == 5) { + if (!_hammerTaken) { CActMsg actMsg(_msgAction); actMsg.execute(_msgTarget); } setVisible(false); - _fieldF8 = 0; - _field100 = 0; + _active = false; + _hitCounter = 0; } - _fieldFC = 1; + _open = true; } - break; - - case 1: + } else { if (!flag) { - _fieldFC = 0; - ++_field100; + _open = false; + ++_hitCounter; } - break; - - default: - break; } } @@ -130,15 +123,15 @@ bool CHammerDispensorButton::FrameMsg(CFrameMsg *msg) { } bool CHammerDispensorButton::LeaveViewMsg(CLeaveViewMsg *msg) { - _field10C = nullptr; - _field100 = 0; - _fieldFC = 0; + _perch = nullptr; + _hitCounter = 0; + _open = false; return true; } bool CHammerDispensorButton::EnterViewMsg(CEnterViewMsg *msg) { setVisible(true); - _fieldF8 = 1; + _active = true; return true; } diff --git a/engines/titanic/game/hammer_dispensor_button.h b/engines/titanic/game/hammer_dispensor_button.h index f497b9dae1..0194021943 100644 --- a/engines/titanic/game/hammer_dispensor_button.h +++ b/engines/titanic/game/hammer_dispensor_button.h @@ -24,6 +24,7 @@ #define TITANIC_HAMMER_DISPENSOR_BUTTON_H #include "titanic/game/start_action.h" +#include "titanic/carry/perch.h" namespace Titanic { @@ -36,12 +37,12 @@ class CHammerDispensorButton : public CStartAction { bool LeaveViewMsg(CLeaveViewMsg *msg); bool EnterViewMsg(CEnterViewMsg *msg); private: - int _fieldF8; - int _fieldFC; - int _field100; + bool _active; + bool _open; + int _hitCounter; Point _btnPos; - CGameObject *_field10C; - int _field110; + CPerch *_perch; + bool _hammerTaken; public: CLASSDEF; CHammerDispensorButton(); diff --git a/engines/titanic/game/maitred/maitred_arm_holder.cpp b/engines/titanic/game/maitred/maitred_arm_holder.cpp index 75d95640d2..51c19561a7 100644 --- a/engines/titanic/game/maitred/maitred_arm_holder.cpp +++ b/engines/titanic/game/maitred/maitred_arm_holder.cpp @@ -40,7 +40,7 @@ void CMaitreDArmHolder::load(SimpleFile *file) { } bool CMaitreDArmHolder::MaitreDArmHolder(CMaitreDArmHolder *msg) { - _fieldF4 = 0; + _dropEnabled = false; return true; } diff --git a/engines/titanic/game/missiveomat.cpp b/engines/titanic/game/missiveomat.cpp index 8f7845bc3f..fa0a9d7c74 100644 --- a/engines/titanic/game/missiveomat.cpp +++ b/engines/titanic/game/missiveomat.cpp @@ -34,8 +34,8 @@ BEGIN_MESSAGE_MAP(CMissiveOMat, CGameObject) ON_MESSAGE(LeaveViewMsg) END_MESSAGE_MAP() -CMissiveOMat::CMissiveOMat() : CGameObject(), _mode(1), - _totalMessages(0), _messageNum(0), _personIndex(-1) { +CMissiveOMat::CMissiveOMat() : CGameObject(), _mode(MMODE_USERNAME), + _totalMessages(0), _messageNum(0), _account(NO_ACCOUNT) { // Load data for the messages, their from and to names loadArray(_welcomeMessages, "TEXT/MISSIVEOMAT/WELCOME", 3); loadArray(_messages, "TEXT/MISSIVEOMAT/MESSAGES", 58); @@ -55,129 +55,150 @@ void CMissiveOMat::save(SimpleFile *file, int indent) { file->writeNumberLine(_mode, indent); file->writeNumberLine(_totalMessages, indent); file->writeNumberLine(_messageNum, indent); - file->writeQuotedLine(_string1, indent); - file->writeQuotedLine(_string2, indent); - file->writeNumberLine(_personIndex, indent); + file->writeQuotedLine(_username, indent); + file->writeQuotedLine(_password, indent); + file->writeNumberLine(_account, indent); CGameObject::save(file, indent); } void CMissiveOMat::load(SimpleFile *file) { file->readNumber(); - _mode = file->readNumber(); + _mode = (MissiveOMatMode)file->readNumber(); _totalMessages = file->readNumber(); _messageNum = file->readNumber(); - _string1 = file->readString(); - _string2 = file->readString(); - _personIndex = file->readNumber(); + _username = file->readString(); + _password = file->readString(); + _account = (MissiveOMatAccount)file->readNumber(); CGameObject::load(file); } bool CMissiveOMat::EnterViewMsg(CEnterViewMsg *msg) { - CMissiveOMatActionMsg actionMsg(9); + CMissiveOMatActionMsg actionMsg(MESSAGE_9); actionMsg.execute(this); return true; } bool CMissiveOMat::KeyCharMsg(CKeyCharMsg *msg) { CTreeItem *loginControl = findRoom()->findByName("MissiveOMat Login Control"); - CTreeItem *welcome = findRoom()->findByName("MissiveOMat Welcome"); - CTreeItem *scrollUp = findRoom()->findByName("MissiveOMat ScrollUp Button"); CEditControlMsg editMsg; switch (_mode) { - case 1: { + case MMODE_USERNAME: + if (!msg->_key) + return true; + playSound("z#228.wav"); - editMsg._mode = 6; + editMsg._mode = EDIT_KEYPRESS; editMsg._param = msg->_key; editMsg.execute(loginControl); if (editMsg._param == 1000) { - editMsg._mode = 3; + // Get the username + editMsg._mode = EDIT_GET_TEXT; editMsg.execute(loginControl); + _username = editMsg._text; + _username.toLowercase(); - _string1 = editMsg._text; - if (!_string1.empty()) { + // Next ask for the password + if (!_username.empty()) { loadFrame(2); - _mode = 2; + _mode = MMODE_PASSWORD; - editMsg._mode = 1; + editMsg._mode = EDIT_CLEAR; editMsg.execute(loginControl); - editMsg._mode = 10; + editMsg._mode = EDIT_BORDERS; editMsg._param = 24; editMsg.execute(loginControl); } } break; - } - case 2: { + case MMODE_PASSWORD: + if (!msg->_key) + return true; + playSound("z#228.wav"); - editMsg._mode = 6; + editMsg._mode = EDIT_KEYPRESS; editMsg._param = msg->_key; editMsg.execute(loginControl); - _string2 = editMsg._text; - if (_string1 == "Droot Scraliontis") { - _string1 = "Scraliontis"; - } else if (_string1 == "Antar Brobostigon") { - _string1 = "Brobostigon"; - } else if (_string1 == "colin") { - _string1 = "Leovinus"; - } - - bool flag = false; - if (_string1 == "Leovinus") { - if (_string2 == "Other") { - flag = true; - _personIndex = 0; - } - } else if (_string1 == "Scraliontis") { - if (_string2 == "This") { - flag = true; - _personIndex = 1; + if (editMsg._param == 1000) { + // Get the password + editMsg._mode = EDIT_GET_TEXT; + editMsg.execute(loginControl); + _password = editMsg._text; + _password.toLowercase(); + + // Handle special variations of the names + if (_username == "droot scraliontis") { + _username = "scraliontis"; + } else if (_username == "antar brobostigon") { + _username = "brobostigon"; + } else if (_username == "colin") { + _username = "leovinus"; } - } else if (_string1 == "Brobostigon") { - if (_string2 == "That") { - flag = true; - _personIndex = 2; + + // Check whether a valid username and password has been entered + static const char *const PASSWORDS_EN[3] = { "other", "this", "that" }; + static const char *const PASSWORDS_DE[3] = { "t'ok", "t'ik", "t'ak" }; + static const char *const *pwds = g_vm->isGerman() ? PASSWORDS_DE : PASSWORDS_EN; + + bool validFlag = false; + if ((_username == "leovinus" && _password == pwds[0]) || + (_username == "scummvm")) { + validFlag = true; + _account = LEOVINUS; + } else if (_username == "scraliontis" && _password == pwds[1]) { + validFlag = true; + _account = SCRALIONTIS; + } else if (_username == "brobostigon" && _password == pwds[2]) { + validFlag = true; + _account = BROBOSTIGON; } - } - if (flag) { - _mode = 4; - loadFrame(4); - editMsg._mode = 1; - editMsg.execute(loginControl); + if (validFlag) { + // Credentials were valid, so log in + _mode = MMODE_LOGGED_IN; + loadFrame(4); + editMsg._mode = EDIT_CLEAR; + editMsg.execute(loginControl); - getTextCursor()->hide(); - editMsg._mode = 13; - editMsg.execute(loginControl); + CRoomItem *room = findRoom(); + CTreeItem *welcome = room->findByName("MissiveOMat Welcome"); + CTreeItem *scrollUp = room->findByName("MissiveOMat ScrollUp Button"); + CTreeItem *scrollDown = room->findByName("MissiveOMat ScrollDown Button"); + CTreeItem *ok = room->findByName("MissiveOMat OK Button"); - editMsg._mode = 12; - editMsg.execute(welcome); + getTextCursor()->hide(); + editMsg._mode = EDIT_HIDE; + editMsg.execute(loginControl); - editMsg._mode = 2; - editMsg._text = _welcomeMessages[_personIndex]; - editMsg.execute(welcome); + editMsg._mode = EDIT_SHOW; + editMsg.execute(welcome); - editMsg._mode = 12; - editMsg._text = "MissiveOMat OK Button"; - editMsg.execute(welcome); - editMsg.execute(scrollUp); - } else { - _mode = 3; - loadFrame(3); - addTimer(1500); + editMsg._mode = EDIT_SET_TEXT; + editMsg._text = _welcomeMessages[_account]; + editMsg.execute(welcome); - editMsg._mode = 1; - editMsg.execute(loginControl); + editMsg._mode = EDIT_SHOW; + editMsg.execute(ok); + editMsg.execute(scrollUp); + editMsg.execute(scrollDown); + } else { + // Credentials were invalid, so access denied + _mode = MMODE_DENIED; + loadFrame(3); + addTimer(1500); + + editMsg._mode = EDIT_CLEAR; + editMsg.execute(loginControl); - getTextCursor()->hide(); + getTextCursor()->hide(); + } } break; - } default: break; @@ -187,10 +208,14 @@ bool CMissiveOMat::KeyCharMsg(CKeyCharMsg *msg) { } bool CMissiveOMat::TimerMsg(CTimerMsg *msg) { - if (_mode == 3) { + if (_mode == MMODE_DENIED) { + // Reset back to asking for a login username + _mode = MMODE_USERNAME; + loadFrame(1); + CTreeItem *loginControl = findRoom()->findByName("MissiveOMat Login Control"); CEditControlMsg editMsg; - editMsg._mode = 10; + editMsg._mode = EDIT_BORDERS; editMsg._param = 8; editMsg.execute(loginControl); } @@ -199,16 +224,17 @@ bool CMissiveOMat::TimerMsg(CTimerMsg *msg) { } bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) { - CTreeItem *welcome = findByName("MissiveOMat Welcome"); + CGameObject *welcome = static_cast<CGameObject *>(findByName("MissiveOMat Welcome")); switch (msg->_action) { case MESSAGE_SHOW: { - CTreeItem *btnOk = findRoom()->findByName("MissiveOMat OK Button"); - CTreeItem *btnNext = findRoom()->findByName("MissiveOMat Next Button"); - CTreeItem *btnPrev = findRoom()->findByName("MissiveOMat Prev Button"); - CTreeItem *btnLogout = findRoom()->findByName("MissiveOMat Logout Button"); + CRoomItem *room = findRoom(); + CTreeItem *btnOk = room->findByName("MissiveOMat OK Button"); + CTreeItem *btnNext = room->findByName("MissiveOMat Next Button"); + CTreeItem *btnPrev = room->findByName("MissiveOMat Prev Button"); + CTreeItem *btnLogout = room->findByName("MissiveOMat Logout Button"); - _mode = MESSAGE_5; + _mode = MMODE_5; CVisibleMsg visibleMsg; visibleMsg._visible = false; visibleMsg.execute(btnOk); @@ -219,7 +245,7 @@ bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) { _messageNum = 0; _totalMessages = 0; - CString *strP = &_messages[_personIndex * 19]; + CString *strP = &_messages[_account * 19]; for (_totalMessages = 0; !strP->empty(); ++strP, ++_totalMessages) ; @@ -256,58 +282,58 @@ bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) { case MESSAGE_DOWN: if (welcome) - scrollTextDown(); + welcome->scrollTextDown(); break; case MESSAGE_UP: if (welcome) - scrollTextUp(); + welcome->scrollTextUp(); break; case REDRAW_MESSAGE: if (welcome) { CString str = CString::format( "Missive %d of %d.\nFrom: %s\nTo: %s\n\n%s\n", - _messageNum + 1, _totalMessages, _from[_messageNum].c_str(), - _to[_messageNum].c_str(), _messages[_messageNum].c_str()); + _messageNum + 1, _totalMessages, _from[_account * 19 + _messageNum].c_str(), + _to[_account * 19 + _messageNum].c_str(), _messages[_account * 19 + _messageNum].c_str()); - setText(str); + welcome->setText(str); } break; case MESSAGE_9: { loadFrame(1); - _mode = MESSAGE_NONE; - _personIndex = -1; - - static const char *const WIDGETS[7] = { - "MissiveOMat Login Control", "MissiveOMat OK Button", - "MissiveOMat Next Button", "MissiveOMat Prev Button", - "MissiveOMat Logout Button", "MissiveOMat ScrollDown Button", - "MissiveOMat ScrollUp Button" + _mode = MMODE_USERNAME; + _account = NO_ACCOUNT; + + static const char *const WIDGETS[8] = { + "MissiveOMat Login Control", "MissiveOMat Welcome", + "MissiveOMat OK Button", "MissiveOMat Next Button", + "MissiveOMat Prev Button", "MissiveOMat Logout Button", + "MissiveOMat ScrollDown Button", "MissiveOMat ScrollUp Button" }; CEditControlMsg editMsg; - for (int idx = 0; idx < 7; ++idx) { - editMsg._mode = 0; + for (int idx = 0; idx < 8; ++idx) { + editMsg._mode = EDIT_INIT; editMsg._param = 12; editMsg.execute(WIDGETS[idx]); - editMsg._mode = 1; + editMsg._mode = EDIT_CLEAR; editMsg.execute(WIDGETS[idx]); - editMsg._mode = 13; + editMsg._mode = EDIT_HIDE; editMsg.execute(WIDGETS[idx]); } - editMsg._mode = 12; + editMsg._mode = EDIT_SHOW; editMsg.execute("MissiveOMat Login Control"); - editMsg._mode = 10; + editMsg._mode = EDIT_BORDERS; editMsg._param = 8; editMsg.execute("MissiveOMat Login Control"); - editMsg._mode = 8; + editMsg._mode = EDIT_SHOW_CURSOR; editMsg.execute("MissiveOMat Login Control"); - _string1.clear(); - _string2.clear(); + _username.clear(); + _password.clear(); break; } @@ -320,7 +346,7 @@ bool CMissiveOMat::MissiveOMatActionMsg(CMissiveOMatActionMsg *msg) { bool CMissiveOMat::LeaveViewMsg(CLeaveViewMsg *msg) { CEditControlMsg editMsg; - editMsg._mode = 9; + editMsg._mode = EDIT_HIDE_CURSOR; editMsg.execute("MissiveOMat Login Control"); petShowCursor(); diff --git a/engines/titanic/game/missiveomat.h b/engines/titanic/game/missiveomat.h index 9810fcc403..c8441edff2 100644 --- a/engines/titanic/game/missiveomat.h +++ b/engines/titanic/game/missiveomat.h @@ -27,10 +27,16 @@ namespace Titanic { -enum MissiveOMatAction { - MESSAGE_NONE = 1, MESSAGE_SHOW = 2, NEXT_MESSAGE = 3, PRIOR_MESSAGE = 4, - MESSAGE_5 = 5, MESSAGE_DOWN = 6, MESSAGE_UP = 7, REDRAW_MESSAGE = 8, - MESSAGE_9 = 9 +enum MissiveOMatMode { + MMODE_USERNAME = 1, + MMODE_PASSWORD = 2, + MMODE_DENIED = 3, + MMODE_LOGGED_IN = 4, + MMODE_5 = 5 +}; + +enum MissiveOMatAccount { + NO_ACCOUNT = -1, LEOVINUS = 0, SCRALIONTIS = 1, BROBOSTIGON = 2 }; class CMissiveOMat : public CGameObject { @@ -48,12 +54,12 @@ private: private: void loadArray(CString *arr, const CString &resName, int count); public: - int _mode; + MissiveOMatMode _mode; int _totalMessages; int _messageNum; - CString _string1; - CString _string2; - int _personIndex; + CString _username; + CString _password; + MissiveOMatAccount _account; public: CLASSDEF; CMissiveOMat(); diff --git a/engines/titanic/game/missiveomat_button.cpp b/engines/titanic/game/missiveomat_button.cpp index b7ad7f8f6f..8c1f6c51c6 100644 --- a/engines/titanic/game/missiveomat_button.cpp +++ b/engines/titanic/game/missiveomat_button.cpp @@ -40,7 +40,7 @@ void CMissiveOMatButton::save(SimpleFile *file, int indent) { void CMissiveOMatButton::load(SimpleFile *file) { file->readNumber(); - _buttonId = file->readNumber(); + _buttonId = (MissiveOMatAction)file->readNumber(); CEditControl::load(file); } diff --git a/engines/titanic/game/missiveomat_button.h b/engines/titanic/game/missiveomat_button.h index 6dbfd4cd56..b029f6ce85 100644 --- a/engines/titanic/game/missiveomat_button.h +++ b/engines/titanic/game/missiveomat_button.h @@ -24,6 +24,7 @@ #define TITANIC_MISSIVEOMAT_BUTTON_H #include "titanic/gfx/edit_control.h" +#include "titanic/messages/messages.h" namespace Titanic { @@ -33,10 +34,10 @@ class CMissiveOMatButton : public CEditControl { bool VisibleMsg(CVisibleMsg *msg); bool MouseDoubleClickMsg(CMouseDoubleClickMsg *msg); public: - int _buttonId; + MissiveOMatAction _buttonId; public: CLASSDEF; - CMissiveOMatButton() : CEditControl(), _buttonId(2) {} + CMissiveOMatButton() : CEditControl(), _buttonId(MESSAGE_SHOW) {} /** * Save the data for the class to file diff --git a/engines/titanic/game/nose_holder.cpp b/engines/titanic/game/nose_holder.cpp index ac6c10dafd..d00c7b372e 100644 --- a/engines/titanic/game/nose_holder.cpp +++ b/engines/titanic/game/nose_holder.cpp @@ -33,25 +33,25 @@ BEGIN_MESSAGE_MAP(CNoseHolder, CDropTarget) END_MESSAGE_MAP() CNoseHolder::CNoseHolder() : CDropTarget(), _dragObject(nullptr), - _field11C(0) { + _draggingFeather(false) { } void CNoseHolder::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_field11C, indent); + file->writeNumberLine(_draggingFeather, indent); CDropTarget::save(file, indent); } void CNoseHolder::load(SimpleFile *file) { file->readNumber(); - _field11C = file->readNumber(); + _draggingFeather = file->readNumber(); CDropTarget::load(file); } bool CNoseHolder::ActMsg(CActMsg *msg) { - if (msg->_action == "Sneeze" && !_itemName.empty() && _fieldF4) { + if (msg->_action == "Sneeze" && !_itemName.empty() && _dropEnabled) { CProximity prox; prox._positioningMode = POSMODE_VECTOR; playSound("z#35.wav", prox); @@ -78,13 +78,12 @@ bool CNoseHolder::FrameMsg(CFrameMsg *msg) { } if (_dragObject) { - if (!checkPoint(Point(_dragObject->_bounds.left, - _dragObject->_bounds.top))) { - _field11C = false; - } else if (!_field11C) { + if (!checkPoint(Point(_dragObject->_bounds.left, _dragObject->_bounds.top), true)) { + _draggingFeather = false; + } else if (!_draggingFeather) { CActMsg actMsg("Sneeze"); actMsg.execute(this); - _field11C = true; + _draggingFeather = true; } } @@ -92,9 +91,9 @@ bool CNoseHolder::FrameMsg(CFrameMsg *msg) { } bool CNoseHolder::LeaveViewMsg(CLeaveViewMsg *msg) { - _field11C = false; + _draggingFeather = false; _dragObject = nullptr; - if (_fieldF4) { + if (_dropEnabled) { loadFrame(_dropFrame); setVisible(false); } @@ -103,7 +102,7 @@ bool CNoseHolder::LeaveViewMsg(CLeaveViewMsg *msg) { } bool CNoseHolder::MovieEndMsg(CMovieEndMsg *msg) { - if (_fieldF4) { + if (_dropEnabled) { loadFrame(_dropFrame); setVisible(false); } @@ -112,7 +111,7 @@ bool CNoseHolder::MovieEndMsg(CMovieEndMsg *msg) { } bool CNoseHolder::EnterViewMsg(CEnterViewMsg *msg) { - if (_fieldF4) + if (_dropEnabled) setVisible(false); return CDropTarget::EnterViewMsg(msg); diff --git a/engines/titanic/game/nose_holder.h b/engines/titanic/game/nose_holder.h index 7b3fbba625..ef20b6f78e 100644 --- a/engines/titanic/game/nose_holder.h +++ b/engines/titanic/game/nose_holder.h @@ -36,7 +36,7 @@ class CNoseHolder : public CDropTarget { bool EnterViewMsg(CEnterViewMsg *msg); private: CGameObject *_dragObject; - int _field11C; + bool _draggingFeather; public: CLASSDEF; CNoseHolder(); diff --git a/engines/titanic/game/parrot/parrot_nut_eater.cpp b/engines/titanic/game/parrot/parrot_nut_eater.cpp index 49b8de509f..b9697d7b61 100644 --- a/engines/titanic/game/parrot/parrot_nut_eater.cpp +++ b/engines/titanic/game/parrot/parrot_nut_eater.cpp @@ -66,6 +66,7 @@ bool CParrotNutEater::ReplaceBowlAndNutsMsg(CReplaceBowlAndNutsMsg *msg) { bool CParrotNutEater::NutPuzzleMsg(CNutPuzzleMsg *msg) { if (msg->_value == "Jiggle") { + setVisible(true); playMovie(MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(68); movieEvent(132); diff --git a/engines/titanic/game/parrot/parrot_perch_holder.cpp b/engines/titanic/game/parrot/parrot_perch_holder.cpp index 205995cf1c..557f70437a 100644 --- a/engines/titanic/game/parrot/parrot_perch_holder.cpp +++ b/engines/titanic/game/parrot/parrot_perch_holder.cpp @@ -48,7 +48,7 @@ bool CParrotPerchHolder::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { if (!CParrot::_v1) { if (CCage::_open) { petDisplayMessage(CANNOT_TAKE_CAGE_LOCKED); - } else if (!CParrot::_v4) { + } else if (CParrot::_state == PARROT_IN_CAGE) { CTrueTalkTriggerActionMsg triggerMsg(280252, 0, 0); triggerMsg.execute(getRoot(), CParrot::_type, MSGFLAG_CLASS_DEF | MSGFLAG_BREAK_IF_HANDLED | MSGFLAG_SCAN); @@ -59,7 +59,7 @@ bool CParrotPerchHolder::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { } bool CParrotPerchHolder::StatusChangeMsg(CStatusChangeMsg *msg) { - _fieldF4 = msg->_newStatus; + _dropEnabled = msg->_newStatus; return true; } diff --git a/engines/titanic/game/pickup/pick_up_hose.cpp b/engines/titanic/game/pickup/pick_up_hose.cpp index d07088cefd..442c43f9b0 100644 --- a/engines/titanic/game/pickup/pick_up_hose.cpp +++ b/engines/titanic/game/pickup/pick_up_hose.cpp @@ -72,13 +72,13 @@ bool CPickUpHose::MouseDragStartMsg(CMouseDragStartMsg *msg) { if (hose) { CVisibleMsg visibleMsg; - visibleMsg.execute(this); - moveUnder(view); + visibleMsg.execute(hose); + hose->moveUnder(view); CPassOnDragStartMsg passMsg(msg->_mousePos, 1); passMsg.execute("Hose"); - msg->_dragItem = getRoot()->findByName("Hose"); + msg->_dragItem = hose; _cursorId = CURSOR_IGNORE; CActMsg actMsg("PlayerGetsHose"); @@ -91,7 +91,7 @@ bool CPickUpHose::MouseDragStartMsg(CMouseDragStartMsg *msg) { bool CPickUpHose::StatusChangeMsg(CStatusChangeMsg *msg) { _cursorId = msg->_newStatus == 1 ? CURSOR_HAND : CURSOR_IGNORE; - return true; + return CPickUp::StatusChangeMsg(msg); } bool CPickUpHose::EnterViewMsg(CEnterViewMsg *msg) { diff --git a/engines/titanic/game/restaurant_cylinder_holder.cpp b/engines/titanic/game/restaurant_cylinder_holder.cpp index adf029d8f7..5fb8c97cde 100644 --- a/engines/titanic/game/restaurant_cylinder_holder.cpp +++ b/engines/titanic/game/restaurant_cylinder_holder.cpp @@ -71,7 +71,7 @@ bool CRestaurantCylinderHolder::EjectCylinderMsg(CEjectCylinderMsg *msg) { if (_field118) { playClip(hasCylinder ? "CloseHolder_Full" : "CloseHolder_Empty", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); - _fieldF4 = 1; + _dropEnabled = true; } else { playClip(hasCylinder ? "OpenHolder_Full" : "OpenHolder_Empty", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); @@ -109,7 +109,7 @@ bool CRestaurantCylinderHolder::MovieEndMsg(CMovieEndMsg *msg) { readyMsg.execute(_target); } else { _field118 = true; - _fieldF4 = false; + _dropEnabled = false; _cursorId = findByName("Phonograph Cylinder") ? _dropCursorId : _dragCursorId; } diff --git a/engines/titanic/game/start_action.cpp b/engines/titanic/game/start_action.cpp index ab356ea1f4..c4f8db8190 100644 --- a/engines/titanic/game/start_action.cpp +++ b/engines/titanic/game/start_action.cpp @@ -50,14 +50,13 @@ void CStartAction::load(SimpleFile *file) { } bool CStartAction::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { - // Dispatch the desired action to the desired target - CActMsg actMsg(_msgAction); - actMsg.execute(_msgTarget); - return true; } bool CStartAction::MouseButtonUpMsg(CMouseButtonUpMsg *msg) { + // Dispatch the desired action to the desired target + CActMsg actMsg(_msgAction); + actMsg.execute(_msgTarget); return true; } diff --git a/engines/titanic/game/sweet_bowl.cpp b/engines/titanic/game/sweet_bowl.cpp index 29d8044a85..7a3832e7c2 100644 --- a/engines/titanic/game/sweet_bowl.cpp +++ b/engines/titanic/game/sweet_bowl.cpp @@ -48,7 +48,7 @@ bool CSweetBowl::MovieEndMsg(CMovieEndMsg *msg) { bool CSweetBowl::EnterViewMsg(CEnterViewMsg *msg) { setVisible(false); loadSound("b#43.wav"); - playSound("b#42.wav"); + loadSound("b#42.wav"); return true; } diff --git a/engines/titanic/game/television.cpp b/engines/titanic/game/television.cpp index 390d8553a6..a0499f1d39 100644 --- a/engines/titanic/game/television.cpp +++ b/engines/titanic/game/television.cpp @@ -246,7 +246,7 @@ bool CTelevision::MovieEndMsg(CMovieEndMsg *msg) { debugC(kDebugScripts, "Assigned room - %d", roomFlags); magazine->addMail(roomFlags); - magazine->removeMail(roomFlags, roomFlags); + magazine->sendMail(roomFlags, roomFlags); } loadFrame(561); diff --git a/engines/titanic/game/tow_parrot_nav.cpp b/engines/titanic/game/tow_parrot_nav.cpp index 57f1649add..b8a99a5f1b 100644 --- a/engines/titanic/game/tow_parrot_nav.cpp +++ b/engines/titanic/game/tow_parrot_nav.cpp @@ -44,7 +44,7 @@ bool CTOWParrotNav::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { actMsg.execute("PerchedParrot"); CString clipString = "_EXIT,36,1,N,9,3,N"; - if (CParrot::_v4) + if (CParrot::_state != PARROT_IN_CAGE) clipString += 'a'; changeView("ParrotLobby.Node 3.N", clipString); diff --git a/engines/titanic/game_state.cpp b/engines/titanic/game_state.cpp index 26a4297358..49779ad745 100644 --- a/engines/titanic/game_state.cpp +++ b/engines/titanic/game_state.cpp @@ -83,11 +83,11 @@ void CGameState::setMode(GameStateMode newMode) { _gameManager->lockInputHandler(); if (sm && sm->_mouseCursor) - sm->_mouseCursor->hide(); + sm->_mouseCursor->setBusy(); } else if (newMode != GSMODE_CUTSCENE && _mode == GSMODE_CUTSCENE) { if (sm && sm->_mouseCursor) - sm->_mouseCursor->show(); + sm->_mouseCursor->clearBusy(); if (_gameManager) _gameManager->unlockInputHandler(); diff --git a/engines/titanic/gfx/edit_control.cpp b/engines/titanic/gfx/edit_control.cpp index 3f3c4d4035..33707f93f6 100644 --- a/engines/titanic/gfx/edit_control.cpp +++ b/engines/titanic/gfx/edit_control.cpp @@ -26,15 +26,16 @@ namespace Titanic { BEGIN_MESSAGE_MAP(CEditControl, CGameObject) ON_MESSAGE(EditControlMsg) + ON_MESSAGE(MouseWheelMsg) END_MESSAGE_MAP() -CEditControl::CEditControl() : CGameObject(), _fieldBC(false), _fontNumber(0), _fieldD4(2), - _textR(0), _textG(0), _textB(0), _fieldF0(0), _fieldF4(0) { +CEditControl::CEditControl() : CGameObject(), _showCursor(false), _fontNumber(0), _fieldD4(2), + _textR(0), _textG(0), _textB(0), _fieldF0(0), _isPassword(false) { } void CEditControl::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_fieldBC, indent); + file->writeNumberLine(_showCursor, indent); file->writeNumberLine(_editLeft, indent); file->writeNumberLine(_editBottom, indent); file->writeNumberLine(_editHeight, indent); @@ -46,14 +47,14 @@ void CEditControl::save(SimpleFile *file, int indent) { file->writeNumberLine(_textB, indent); file->writeQuotedLine(_text, indent); file->writeNumberLine(_fieldF0, indent); - file->writeNumberLine(_fieldF4, indent); + file->writeNumberLine(_isPassword, indent); CGameObject::save(file, indent); } void CEditControl::load(SimpleFile *file) { file->readNumber(); - _fieldBC = file->readNumber(); + _showCursor = file->readNumber(); _editLeft = file->readNumber(); _editBottom = file->readNumber(); _editHeight = file->readNumber(); @@ -65,67 +66,68 @@ void CEditControl::load(SimpleFile *file) { _textB = file->readNumber(); _text = file->readString(); _fieldF0 = file->readNumber(); - _fieldF4 = file->readNumber(); + _isPassword = file->readNumber(); CGameObject::load(file); } bool CEditControl::EditControlMsg(CEditControlMsg *msg) { switch (msg->_mode) { - case 0: - if (!_editLeft) { - _editHeight = _bounds.height(); - _editBottom = _bounds.bottom; - _editLeft = _bounds.left + _bounds.width() / 2; - _maxTextChars = msg->_param; - setTextFontNumber(_fontNumber); + case EDIT_INIT: { + // WORKAROUND: Fix original bug where MissiveOMat username & password + // text weren't initialised after the first time you use the MissiveOMat + _editHeight = _bounds.height(); + _editBottom = _bounds.bottom; + _editLeft = _bounds.left + _bounds.width() / 2; + _maxTextChars = msg->_param; + setTextFontNumber(_fontNumber); - CEditControlMsg ctlMsg; - ctlMsg._mode = 10; - ctlMsg._param = _fieldD4; - ctlMsg.execute(this); + CEditControlMsg ctlMsg; + ctlMsg._mode = EDIT_BORDERS; + ctlMsg._param = _fieldD4; + ctlMsg.execute(this); - ctlMsg._mode = 11; - ctlMsg._textR = _textR; - ctlMsg._textG = _textG; - ctlMsg._textB = _textB; - ctlMsg.execute(this); - } + ctlMsg._mode = EDIT_SET_COLOR; + ctlMsg._textR = _textR; + ctlMsg._textG = _textG; + ctlMsg._textB = _textB; + ctlMsg.execute(this); break; + } - case 1: { + case EDIT_CLEAR: { _text = ""; CEditControlMsg ctlMsg; - ctlMsg._mode = 14; + ctlMsg._mode = EDIT_RENDER; ctlMsg.execute(this); break; } - case 2: { + case EDIT_SET_TEXT: { _text = msg->_text; CEditControlMsg ctlMsg; - ctlMsg._mode = 14; + ctlMsg._mode = EDIT_RENDER; ctlMsg.execute(this); break; } - case 3: + case EDIT_GET_TEXT: msg->_text = _text; break; - case 4: + case EDIT_LENGTH: msg->_param = _text.size(); break; - case 5: + case EDIT_MAX_LENGTH: _maxTextChars = msg->_param; break; - case 6: + case EDIT_KEYPRESS: if (msg->_param == 8 && !_text.empty()) { _text = _text.left(_text.size() - 1); CEditControlMsg ctlMsg; - ctlMsg._mode = 14; + ctlMsg._mode = EDIT_RENDER; ctlMsg.execute(this); } else if (msg->_param == 13) { msg->_param = 1000; @@ -135,32 +137,32 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) { _text += c; CEditControlMsg ctlMsg; - ctlMsg._mode = 14; + ctlMsg._mode = EDIT_RENDER; ctlMsg.execute(this); } break; - case 7: + case EDIT_SET_FONT: setTextFontNumber(msg->_param); break; - case 8: - if (!_fieldBC) { - _fieldBC = true; + case EDIT_SHOW_CURSOR: + if (!_showCursor) { + _showCursor = true; CEditControlMsg ctlMsg; - ctlMsg._mode = 14; + ctlMsg._mode = EDIT_RENDER; ctlMsg.execute(this); } break; - case 9: - if (_fieldBC) { - _fieldBC = false; + case EDIT_HIDE_CURSOR: + if (_showCursor) { + _showCursor = false; getTextCursor()->hide(); } break; - case 10: { + case EDIT_BORDERS: { setTextHasBorders((msg->_param & 1) != 0); if (msg->_param & 4) _fieldF0 = 1; @@ -169,28 +171,28 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) { else _fieldF0 = 0; - _fieldF4 = msg->_param & 0x10; + _isPassword = (msg->_param & 0x10) != 0; CEditControlMsg ctlMsg; - ctlMsg._mode = 14; + ctlMsg._mode = EDIT_RENDER; ctlMsg.execute(this); break; } - case 11: + case EDIT_SET_COLOR: setTextColor(msg->_textR, msg->_textG, msg->_textB); break; - case 12: + case EDIT_SHOW: setVisible(true); break; - case 13: + case EDIT_HIDE: setVisible(false); break; - case 14: { + case EDIT_RENDER: { makeDirty(); - CString str = _fieldF4 ? CString('*', _text.size()) : _text; + CString str = _isPassword ? CString('*', _text.size()) : _text; setText(str); int textWidth = getTextWidth(); @@ -201,7 +203,7 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) { makeDirty(); } - if (_fieldBC) { + if (_showCursor) { CTextCursor *textCursor = getTextCursor(); textCursor->show(); textCursor->setPos(Point(_bounds.left + textWidth + 1, _bounds.top + 3)); @@ -219,4 +221,15 @@ bool CEditControl::EditControlMsg(CEditControlMsg *msg) { return true; } +bool CEditControl::MouseWheelMsg(CMouseWheelMsg *msg) { + if (_name != "MissiveOMat Welcome") + return false; + + if (msg->_wheelUp) + scrollTextUp(); + else + scrollTextDown(); + return true; +} + } // End of namespace Titanic diff --git a/engines/titanic/gfx/edit_control.h b/engines/titanic/gfx/edit_control.h index 6c02f7afb9..5ed91c9e84 100644 --- a/engines/titanic/gfx/edit_control.h +++ b/engines/titanic/gfx/edit_control.h @@ -30,8 +30,9 @@ namespace Titanic { class CEditControl : public CGameObject { DECLARE_MESSAGE_MAP; bool EditControlMsg(CEditControlMsg *msg); + bool MouseWheelMsg(CMouseWheelMsg *msg); protected: - bool _fieldBC; + bool _showCursor; int _editLeft; int _editBottom; int _editHeight; @@ -43,7 +44,7 @@ protected: byte _textB; CString _text; int _fieldF0; - int _fieldF4; + bool _isPassword; public: CLASSDEF; CEditControl(); diff --git a/engines/titanic/pet_control/pet_text.cpp b/engines/titanic/gfx/text_control.cpp index 05038d2fd0..f731dbb340 100644 --- a/engines/titanic/pet_control/pet_text.cpp +++ b/engines/titanic/gfx/text_control.cpp @@ -20,12 +20,12 @@ * */ -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" #include "titanic/titanic.h" namespace Titanic { -CPetText::CPetText(uint count) : +CTextControl::CTextControl(uint count) : _stringsMerged(false), _maxCharsPerLine(-1), _lineCount(0), _displayEndCharIndex(-1), _unused1(0), _unused2(0), _unused3(0), _backR(0xff), _backG(0xff), _backB(0xff), @@ -35,18 +35,18 @@ CPetText::CPetText(uint count) : setupArrays(count); } -void CPetText::setupArrays(int count) { +void CTextControl::setupArrays(int count) { freeArrays(); if (count < 10 || count > 60) count = 10; _array.resize(count); } -void CPetText::freeArrays() { +void CTextControl::freeArrays() { _array.clear(); } -void CPetText::setup() { +void CTextControl::setup() { for (int idx = 0; idx < (int)_array.size(); ++idx) { _array[idx]._line.clear(); setLineColor(idx, _textR, _textG, _textB); @@ -57,16 +57,16 @@ void CPetText::setup() { _stringsMerged = false; } -void CPetText::setLineColor(uint lineNum, uint col) { +void CTextControl::setLineColor(uint lineNum, uint col) { setLineColor(lineNum, col & 0xff, (col >> 8) & 0xff, (col >> 16) & 0xff); } -void CPetText::setLineColor(uint lineNum, byte r, byte g, byte b) { +void CTextControl::setLineColor(uint lineNum, byte r, byte g, byte b) { _array[lineNum]._rgb = getColorText(r, g, b); _stringsMerged = false; } -CString CPetText::getColorText(byte r, byte g, byte b) { +CString CTextControl::getColorText(byte r, byte g, byte b) { char buffer[6]; if (!r) r = 1; @@ -85,7 +85,7 @@ CString CPetText::getColorText(byte r, byte g, byte b) { return CString(buffer); } -void CPetText::load(SimpleFile *file, int param) { +void CTextControl::load(SimpleFile *file, int param) { if (!param) { uint numLines = file->readNumber(); int charsPerLine = file->readNumber(); @@ -116,7 +116,7 @@ void CPetText::load(SimpleFile *file, int param) { } } -void CPetText::save(SimpleFile *file, int indent) { +void CTextControl::save(SimpleFile *file, int indent) { int numLines = _lineCount + 1; file->writeNumberLine(_array.size(), indent); @@ -143,7 +143,7 @@ void CPetText::save(SimpleFile *file, int indent) { } } -void CPetText::draw(CScreenManager *screenManager) { +void CTextControl::draw(CScreenManager *screenManager) { Rect tempRect = _bounds; if (_hasBorder) { @@ -179,7 +179,7 @@ void CPetText::draw(CScreenManager *screenManager) { screenManager->setFontNumber(oldFontNumber); } -void CPetText::mergeStrings() { +void CTextControl::mergeStrings() { if (!_stringsMerged) { _lines.clear(); @@ -193,14 +193,14 @@ void CPetText::mergeStrings() { } } -void CPetText::resize(uint count) { +void CTextControl::resize(uint count) { if (!count || _array.size() == count) return; _array.clear(); _array.resize(count); } -CString CPetText::getText() const { +CString CTextControl::getText() const { CString result = ""; for (int idx = 0; idx <= _lineCount; ++idx) result += _array[idx]._line; @@ -208,16 +208,16 @@ CString CPetText::getText() const { return result; } -void CPetText::setText(const CString &str) { +void CTextControl::setText(const CString &str) { setup(); appendText(str); } -void CPetText::setText(StringId stringId) { +void CTextControl::setText(StringId stringId) { setText(g_vm->_strings[stringId]); } -void CPetText::appendText(const CString &str) { +void CTextControl::appendText(const CString &str) { int lineSize = _array[_lineCount]._line.size(); int strSize = str.size(); @@ -236,19 +236,19 @@ void CPetText::appendText(const CString &str) { _stringsMerged = false; } -void CPetText::setColor(uint col) { +void CTextControl::setColor(uint col) { _textR = col & 0xff; _textG = (col >> 8) & 0xff; _textB = (col >> 16) & 0xff; } -void CPetText::setColor(byte r, byte g, byte b) { +void CTextControl::setColor(byte r, byte g, byte b) { _textR = r; _textG = g; _textB = b; } -void CPetText::remapColors(uint count, uint *srcColors, uint *destColors) { +void CTextControl::remapColors(uint count, uint *srcColors, uint *destColors) { for (int lineNum = 0; lineNum <= _lineCount; ++lineNum) { if (_array[lineNum]._rgb.empty()) continue; @@ -271,12 +271,12 @@ void CPetText::remapColors(uint count, uint *srcColors, uint *destColors) { _stringsMerged = false; } -void CPetText::setMaxCharsPerLine(int maxChars) { +void CTextControl::setMaxCharsPerLine(int maxChars) { if (maxChars >= -1 && maxChars < 257) _maxCharsPerLine = maxChars; } -void CPetText::updateStr3(int lineNum) { +void CTextControl::updateStr3(int lineNum) { if (_npcFlag > 0 && _npcId > 0) { char line[5]; line[0] = line[3] = TEXTCMD_NPC; @@ -290,7 +290,7 @@ void CPetText::updateStr3(int lineNum) { } } -int CPetText::getTextWidth(CScreenManager *screenManager) { +int CTextControl::getTextWidth(CScreenManager *screenManager) { mergeStrings(); int oldFontNumber = screenManager->setFontNumber(_fontNumber); int textWidth = screenManager->stringWidth(_lines); @@ -299,7 +299,7 @@ int CPetText::getTextWidth(CScreenManager *screenManager) { return textWidth; } -int CPetText::getTextHeight(CScreenManager *screenManager) { +int CTextControl::getTextHeight(CScreenManager *screenManager) { mergeStrings(); int oldFontNumber = screenManager->setFontNumber(_fontNumber); int textHeight = screenManager->getTextBounds(_lines, _bounds.width() - 4); @@ -308,63 +308,63 @@ int CPetText::getTextHeight(CScreenManager *screenManager) { return textHeight; } -void CPetText::deleteLastChar() { +void CTextControl::deleteLastChar() { if (!_array[_lineCount]._line.empty()) { _array[_lineCount]._line.deleteLastChar(); _stringsMerged = false; } } -void CPetText::setNPC(int npcFlag, int npcId) { +void CTextControl::setNPC(int npcFlag, int npcId) { _npcFlag = npcFlag; _npcId = npcId; } -void CPetText::scrollUp(CScreenManager *screenManager) { +void CTextControl::scrollUp(CScreenManager *screenManager) { int oldFontNumber = screenManager->setFontNumber(_fontNumber); _scrollTop -= screenManager->getFontHeight(); constrainScrollUp(screenManager); screenManager->setFontNumber(oldFontNumber); } -void CPetText::scrollDown(CScreenManager *screenManager) { +void CTextControl::scrollDown(CScreenManager *screenManager) { int oldFontNumber = screenManager->setFontNumber(_fontNumber); _scrollTop += screenManager->getFontHeight(); constrainScrollDown(screenManager); screenManager->setFontNumber(oldFontNumber); } -void CPetText::scrollUpPage(CScreenManager *screenManager) { +void CTextControl::scrollUpPage(CScreenManager *screenManager) { int oldFontNumber = screenManager->setFontNumber(_fontNumber); _scrollTop -= getPageHeight(screenManager); constrainScrollUp(screenManager); screenManager->setFontNumber(oldFontNumber); } -void CPetText::scrollDownPage(CScreenManager *screenManager) { +void CTextControl::scrollDownPage(CScreenManager *screenManager) { int oldFontNumber = screenManager->setFontNumber(_fontNumber); _scrollTop += getPageHeight(screenManager); constrainScrollDown(screenManager); screenManager->setFontNumber(oldFontNumber); } -void CPetText::scrollToTop(CScreenManager *screenManager) { +void CTextControl::scrollToTop(CScreenManager *screenManager) { _scrollTop = 0; } -void CPetText::scrollToBottom(CScreenManager *screenManager) { +void CTextControl::scrollToBottom(CScreenManager *screenManager) { int oldFontNumber = screenManager->setFontNumber(_fontNumber); _scrollTop = getTextHeight(screenManager); constrainScrollDown(screenManager); screenManager->setFontNumber(oldFontNumber); } -void CPetText::constrainScrollUp(CScreenManager *screenManager) { +void CTextControl::constrainScrollUp(CScreenManager *screenManager) { if (_scrollTop < 0) _scrollTop = 0; } -void CPetText::constrainScrollDown(CScreenManager *screenManager) { +void CTextControl::constrainScrollDown(CScreenManager *screenManager) { // Figure out the maximum scroll amount allowed int maxScroll = getTextHeight(screenManager) - _bounds.height() - 4; if (maxScroll < 0) @@ -374,7 +374,7 @@ void CPetText::constrainScrollDown(CScreenManager *screenManager) { _scrollTop = maxScroll; } -int CPetText::getPageHeight(CScreenManager *screenManager) { +int CTextControl::getPageHeight(CScreenManager *screenManager) { int textHeight = _bounds.height(); int oldFontNumber = screenManager->setFontNumber(_fontNumber); int fontHeight = screenManager->getFontHeight(); @@ -390,16 +390,16 @@ int CPetText::getPageHeight(CScreenManager *screenManager) { } } -void CPetText::addLine(const CString &str) { +void CTextControl::addLine(const CString &str) { addLine(str, _textR, _textG, _textB); } -void CPetText::addLine(const CString &str, uint color) { +void CTextControl::addLine(const CString &str, uint color) { addLine(str, color & 0xff, (color >> 8) & 0xff, (color >> 16) & 0xff); } -void CPetText::addLine(const CString &str, byte r, byte g, byte b) { +void CTextControl::addLine(const CString &str, byte r, byte g, byte b) { if (_lineCount == ((int)_array.size() - 1)) { // Lines array is full if (_array.size() > 1) { @@ -416,7 +416,7 @@ void CPetText::addLine(const CString &str, byte r, byte g, byte b) { ++_lineCount; } -bool CPetText::handleKey(char c) { +bool CTextControl::handleKey(char c) { switch (c) { case (char)Common::KEYCODE_BACKSPACE: deleteLastChar(); @@ -434,7 +434,7 @@ bool CPetText::handleKey(char c) { return false; } -void CPetText::showCursor(int mode) { +void CTextControl::showCursor(int mode) { CScreenManager *screenManager = CScreenManager::setCurrent(); _textCursor = screenManager->_textCursor; if (_textCursor) { @@ -448,7 +448,7 @@ void CPetText::showCursor(int mode) { } } -void CPetText::hideCursor() { +void CTextControl::hideCursor() { if (_textCursor) { _textCursor->setMode(-1); _textCursor->hide(); @@ -456,7 +456,7 @@ void CPetText::hideCursor() { } } -int CPetText::getNPCNum(uint ident, uint startIndex) { +int CTextControl::getNPCNum(uint ident, uint startIndex) { if (!_stringsMerged) { mergeStrings(); if (!_stringsMerged) @@ -483,7 +483,7 @@ int CPetText::getNPCNum(uint ident, uint startIndex) { return -1; } -void CPetText::setFontNumber(int fontNumber) { +void CTextControl::setFontNumber(int fontNumber) { if (fontNumber >= 0 && fontNumber <= 2) _fontNumber = fontNumber; } diff --git a/engines/titanic/pet_control/pet_text.h b/engines/titanic/gfx/text_control.h index 9b2f47274c..d4ef19a7cf 100644 --- a/engines/titanic/pet_control/pet_text.h +++ b/engines/titanic/gfx/text_control.h @@ -20,8 +20,8 @@ * */ -#ifndef TITANIC_PET_TEXT_H -#define TITANIC_PET_TEXT_H +#ifndef TITANIC_TEXT_CONTROL_H +#define TITANIC_TEXT_CONTROL_H #include "common/keyboard.h" #include "titanic/support/simple_file.h" @@ -30,7 +30,7 @@ namespace Titanic { -class CPetText { +class CTextControl { struct ArrayEntry { CString _line; CString _rgb; @@ -91,7 +91,7 @@ private: */ int getPageHeight(CScreenManager *screenManager); public: - CPetText(uint count = 10); + CTextControl(uint count = 10); /** * Set up the control @@ -282,4 +282,4 @@ public: } // End of namespace Titanic -#endif /* TITANIC_PET_TEXT_H */ +#endif /* TITANIC_TEXT_CONTROL_H */ diff --git a/engines/titanic/input_handler.cpp b/engines/titanic/input_handler.cpp index ba2c08ed89..481224141d 100644 --- a/engines/titanic/input_handler.cpp +++ b/engines/titanic/input_handler.cpp @@ -32,7 +32,7 @@ namespace Titanic { CInputHandler::CInputHandler(CGameManager *owner) : _gameManager(owner), _inputTranslator(nullptr), _dragging(false), _buttonDown(false), _dragItem(nullptr), _lockCount(0), - _singleton(false) { + _abortMessage(false) { CScreenManager::_screenManagerPtr->_inputHandler = this; } @@ -59,7 +59,7 @@ void CInputHandler::decLockCount() { } _buttonDown = _inputTranslator->isMousePressed(); - _singleton = true; + _abortMessage = true; } } @@ -75,11 +75,11 @@ void CInputHandler::handleMessage(CMessage &msg, bool respectLock) { void CInputHandler::processMessage(CMessage *msg) { const CMouseMsg *mouseMsg = dynamic_cast<const CMouseMsg *>(msg); - _singleton = false; + _abortMessage = false; dispatchMessage(msg); - if (_singleton) { - _singleton = false; + if (_abortMessage) { + _abortMessage = false; } else if (mouseMsg) { // Keep the game state mouse position up to date if (_mousePos != mouseMsg->_mousePos) { diff --git a/engines/titanic/input_handler.h b/engines/titanic/input_handler.h index d5f29b7921..5f0be04f1a 100644 --- a/engines/titanic/input_handler.h +++ b/engines/titanic/input_handler.h @@ -56,7 +56,7 @@ public: Point _dragStartPos; Point _mousePos; int _lockCount; - bool _singleton; + bool _abortMessage; public: CInputHandler(CGameManager *owner); ~CInputHandler(); diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h index a40477a702..0cbb4b0e76 100644 --- a/engines/titanic/messages/messages.h +++ b/engines/titanic/messages/messages.h @@ -87,6 +87,7 @@ class CRoomItem; class CNodeItem; class CViewItem; class CMusicPlayer; +class CMovePlayerTo; class CMessage : public CSaveableObject { private: @@ -148,9 +149,27 @@ public: virtual bool isLeaveViewMsg() const; }; +enum EditControlAction { + EDIT_INIT = 0, + EDIT_CLEAR = 1, + EDIT_SET_TEXT = 2, + EDIT_GET_TEXT = 3, + EDIT_LENGTH = 4, + EDIT_MAX_LENGTH = 5, + EDIT_KEYPRESS = 6, + EDIT_SET_FONT = 7, + EDIT_SHOW_CURSOR = 8, + EDIT_HIDE_CURSOR = 9, + EDIT_BORDERS = 10, + EDIT_SET_COLOR = 11, + EDIT_SHOW = 12, + EDIT_HIDE = 13, + EDIT_RENDER = 14 +}; + class CEditControlMsg : public CMessage { public: - int _mode; + EditControlAction _mode; int _param; CString _text; byte _textR; @@ -158,7 +177,7 @@ public: byte _textB; public: CLASSDEF; - CEditControlMsg() : _mode(0), _param(0), _textR(0), _textG(0), _textB(0) {} + CEditControlMsg() : _mode(EDIT_INIT), _param(0), _textR(0), _textG(0), _textB(0) {} static bool isSupportedBy(const CTreeItem *item) { return CMessage::supports(item, _type); @@ -197,6 +216,12 @@ public: } }; +enum MissiveOMatAction { + MESSAGE_NONE = 1, MESSAGE_SHOW = 2, NEXT_MESSAGE = 3, PRIOR_MESSAGE = 4, + MESSAGE_5 = 5, MESSAGE_DOWN = 6, MESSAGE_UP = 7, REDRAW_MESSAGE = 8, + MESSAGE_9 = 9 +}; + MESSAGE1(CActMsg, CString, action, ""); MESSAGE1(CActivationmsg, CString, value, ""); MESSAGE1(CAddHeadPieceMsg, CString, value, "NULL"); @@ -260,7 +285,7 @@ MESSAGE1(CLoadSuccessMsg, int, ticks, 0); MESSAGE1(CLockPhonographMsg, int, value, 0); MESSAGE0(CMaitreDDefeatedMsg); MESSAGE0(CMaitreDHappyMsg); -MESSAGE1(CMissiveOMatActionMsg, int, action, 0); +MESSAGE1(CMissiveOMatActionMsg, MissiveOMatAction, action, MESSAGE_NONE); MESSAGE0(CMoveToStartPosMsg); MESSAGE2(CMovieEndMsg, int, startFrame, 0, int, endFrame, 0); MESSAGE2(CMovieFrameMsg, int, frameNumber, 0, int, value2, 0); @@ -274,7 +299,7 @@ MESSAGE0(CNPCQueueIdleAnimMsg); MESSAGE1(CNutPuzzleMsg, CString, value, ""); MESSAGE1(COnSummonBotMsg, int, value, 0); MESSAGE0(COpeningCreditsMsg); -MESSAGE1(CPanningAwayFromParrotMsg, CTreeItem *, target, nullptr); +MESSAGE1(CPanningAwayFromParrotMsg, CMovePlayerTo *, target, nullptr); MESSAGE2(CParrotSpeakMsg, CString, target, "", CString, action, ""); MESSAGE2(CParrotTriesChickenMsg, int, value1, 0, int, value2, 0); MESSAGE1(CPhonographPlayMsg, int, value, 0); diff --git a/engines/titanic/module.mk b/engines/titanic/module.mk index e802456c5a..51c77ba1dd 100644 --- a/engines/titanic/module.mk +++ b/engines/titanic/module.mk @@ -280,6 +280,7 @@ MODULE_OBJS := \ gfx/chev_right_on.o \ gfx/chev_send_rec_switch.o \ gfx/edit_control.o \ + gfx/text_control.o \ gfx/elevator_button.o \ gfx/get_from_succ.o \ gfx/helmet_on_off.o \ @@ -398,7 +399,6 @@ MODULE_OBJS := \ pet_control/pet_show_translation.o \ pet_control/pet_slider.o \ pet_control/pet_sound.o \ - pet_control/pet_text.o \ sound/auto_music_player.o \ sound/auto_music_player_base.o \ sound/auto_sound_player.o \ diff --git a/engines/titanic/npcs/bilge_succubus.cpp b/engines/titanic/npcs/bilge_succubus.cpp index d0a5dc17ae..36627842a5 100644 --- a/engines/titanic/npcs/bilge_succubus.cpp +++ b/engines/titanic/npcs/bilge_succubus.cpp @@ -42,26 +42,26 @@ BEGIN_MESSAGE_MAP(CBilgeSuccUBus, CSuccUBus) END_MESSAGE_MAP() CBilgeSuccUBus::CBilgeSuccUBus() : CSuccUBus(), - _bilgeStartFrame1(-1), _bilgeEndFrame1(-1), - _bilgeStartFrame2(-1), _bilgeEndFrame2(-1) { + _sneezing2StartFrame(-1), _sneezing2EndFrame(-1), + _sneezing1StartFrame(-1), _sneezing1EndFrame(-1) { } void CBilgeSuccUBus::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_bilgeStartFrame1, indent); - file->writeNumberLine(_bilgeEndFrame1, indent); - file->writeNumberLine(_bilgeStartFrame2, indent); - file->writeNumberLine(_bilgeEndFrame2, indent); + file->writeNumberLine(_sneezing2StartFrame, indent); + file->writeNumberLine(_sneezing2EndFrame, indent); + file->writeNumberLine(_sneezing1StartFrame, indent); + file->writeNumberLine(_sneezing1EndFrame, indent); CSuccUBus::save(file, indent); } void CBilgeSuccUBus::load(SimpleFile *file) { file->readNumber(); - _bilgeStartFrame1 = file->readNumber(); - _bilgeEndFrame1 = file->readNumber(); - _bilgeStartFrame2 = file->readNumber(); - _bilgeEndFrame2 = file->readNumber(); + _sneezing2StartFrame = file->readNumber(); + _sneezing2EndFrame = file->readNumber(); + _sneezing1StartFrame = file->readNumber(); + _sneezing1EndFrame = file->readNumber(); CSuccUBus::load(file); } @@ -74,10 +74,10 @@ bool CBilgeSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) { CPetControl *pet = getPetControl(); if (_v2) { - if (_startFrame4 >= 0) - playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE); - if (_startFrame5 >= 0) - playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE); + if (_receiveStartFrame >= 0) + playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_GAMESTATE); + if (_afterReceiveStartFrame >= 0) + playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, MOVIE_GAMESTATE); playSound("z#28.wav", 70); } else if (!_enabled) { @@ -93,8 +93,8 @@ bool CBilgeSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) { if (mailObject) { _mailP = mailObject; - if (_startFrame4 >= 0) - playMovie(_startFrame4, _endFrame4, MOVIE_GAMESTATE); + if (_receiveStartFrame >= 0) + playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_GAMESTATE); } else { petDisplayMessage(2, NOTHING_TO_DELIVER); } @@ -116,14 +116,13 @@ bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) { return true; } - _field19C = 0; + _sendLost = false; _mailP = mailObject; uint roomFlags = _roomFlags; - if (!pet->testRooms5(roomFlags) || - getPassengerClass() > pet->getMailDest(roomFlags)) { + if (!pet->isSuccUBusDest(roomFlags) || pet->getMailDestClass(roomFlags) < getPassengerClass()) { roomFlags = pet->getSpecialRoomFlags("BilgeRoom"); - _field19C = 1; + _sendLost = true; } _isChicken = mailObject->getName() == "Chicken"; @@ -135,42 +134,42 @@ bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) { startTalking(this, 230022); _field158 = 1; - if (_startFrame3 >= 0) - playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT); + if (_sendStartFrame >= 0) + playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT); - if (_bilgeStartFrame1 >= 0) { - playMovie(_startFrame12, _endFrame12, MOVIE_GAMESTATE); - playMovie(_bilgeStartFrame2, _bilgeEndFrame2, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); - playMovie(_bilgeStartFrame1, _bilgeEndFrame1, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + if (_sneezing2StartFrame >= 0) { + playMovie(_trayOutStartFrame, _trayOutEndFrame, MOVIE_GAMESTATE); + playMovie(_sneezing1StartFrame, _sneezing1EndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + playMovie(_sneezing2StartFrame, _sneezing2EndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); incTransitions(); } } else { startTalking(this, 230012); _field158 = 2; - if (_startFrame3 >= 0) - playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); - if (_startFrame4 >= 0) - playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); - if (_startFrame5 >= 0) - playMovie(_startFrame5, _endFrame5, MOVIE_GAMESTATE); + if (_sendStartFrame >= 0) + playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + if (_receiveStartFrame >= 0) + playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + if (_afterReceiveStartFrame >= 0) + playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, MOVIE_GAMESTATE); } } else { if (_isFeathers) { startTalking(this, 230022); _field158 = 3; - if (_startFrame3 >= 0) - playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); - if (_startFrame4 >= 0) - playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); - if (_startFrame5 >= 0) - playMovie(_startFrame5, _endFrame5, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + if (_sendStartFrame >= 0) + playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + if (_receiveStartFrame >= 0) + playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + if (_afterReceiveStartFrame >= 0) + playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); } else { - removeMail(petRoomFlags, roomFlags); + sendMail(petRoomFlags, roomFlags); startTalking(this, 230012); - if (_startFrame3 >= 0) { + if (_sendStartFrame >= 0) { _field158 = 4; - playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); } } } @@ -181,14 +180,14 @@ bool CBilgeSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) { bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { CPetControl *pet = getPetControl(); - if (msg->_endFrame == _endFrame12) { - if (_startFrame10 >= 0) + if (msg->_endFrame == _trayOutEndFrame) { + if (_offStartFrame >= 0) playSound("z#27.wav"); - } else if (msg->_endFrame == _endFrame10) { + } else if (msg->_endFrame == _offEndFrame) { if (_startFrame11 >= 0) playSound("z#30.wav"); } else { - if (_endFrame9 == _endFrame10 && pet) { + if (msg->_endFrame == _onEndFrame && pet) { if (_v2) { startTalking(this, getRandomNumber(1) ? 230062 : 230063); } else if (!findMail(pet->getRoomFlags())) { @@ -206,9 +205,8 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { break; } } - } - if (msg->_endFrame == _endFrame3) { + } else if (msg->_endFrame == _sendEndFrame) { switch (_field158) { case 1: stopSound(_soundHandle); @@ -236,11 +234,7 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { CSUBTransition transMsg; transMsg.execute(this); - } else if (msg->_endFrame == _bilgeEndFrame2) { - playSound("z#25.wav", 70); - playSound("z#24.wav", 70); - - } else if (msg->_endFrame == _endFrame4) { + } else if (msg->_endFrame == _receiveEndFrame) { if (_mailP) { _mailP->petAddToInventory(); CVisibleMsg visibleMsg(true); @@ -253,7 +247,11 @@ bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { transMsg.execute(this); } - } else if (msg->_endFrame == _bilgeEndFrame1) { + } else if (msg->_endFrame == _sneezing1EndFrame) { + playSound("z#25.wav", 70); + playSound("z#24.wav", 70); + + } else if (msg->_endFrame == _sneezing2EndFrame) { changeView("BilgeRoomWith.Node 1.N", ""); _v2 = 0; resetMail(); @@ -342,14 +340,14 @@ bool CBilgeSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) { bool chickenFlag = chicken ? chicken->_string6 == "None" : false; if (chickenFlag) { - if (_startFrame2 >= 0) { + if (_okStartFrame >= 0) { startTalking(this, 70219); - playMovie(_startFrame2, _endFrame2, 0); + playMovie(_okStartFrame, _okEndFrame, 0); } - if (_startFrame3 >= 0) { + if (_sendStartFrame >= 0) { _field158 = 5; - playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT); + playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT); } CViewItem *view = parseView(item->_fullViewName); @@ -365,8 +363,8 @@ bool CBilgeSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) { } } else { item->addMail(petRoomFlags); - if (_startFrame2 >= 0) - playMovie(_startFrame2, _endFrame2, 0); + if (_okStartFrame >= 0) + playMovie(_okStartFrame, _okEndFrame, 0); petSetArea(PET_REMOTE); CSUBTransition transMsg; @@ -397,7 +395,7 @@ bool CBilgeSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) { if (_enabled) { _enabled = false; - if (_startFrame10 >= 0) + if (_offStartFrame >= 0) playSound("z#27.wav"); } @@ -419,13 +417,13 @@ bool CBilgeSuccUBus::TurnOn(CTurnOn *msg) { CPetControl *pet = getPetControl(); if (pet) { - if (_startFrame9 >= 0) { - playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT); + if (_onStartFrame >= 0) { + playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT); playSound("z#26.wav"); } - if (mailExists(pet->getRoomFlags()) && _startFrame2 >= 0) - playMovie(_startFrame2, _endFrame2, 0); + if (mailExists(pet->getRoomFlags()) && _okStartFrame >= 0) + playMovie(_okStartFrame, _okEndFrame, 0); _enabled = true; CSUBTransition transMsg; @@ -442,18 +440,18 @@ bool CBilgeSuccUBus::TurnOn(CTurnOn *msg) { bool CBilgeSuccUBus::TurnOff(CTurnOff *msg) { CPetControl *pet = getPetControl(); - if (pet && mailExists(pet->getRoomFlags()) && _startFrame12 >= 0) - playMovie(_startFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT); - else if (_endFrame12 >= 0) - playMovie(_endFrame12, _endFrame12, MOVIE_NOTIFY_OBJECT); + if (pet && mailExists(pet->getRoomFlags()) && _trayOutStartFrame >= 0) + playMovie(_trayOutStartFrame, _trayOutEndFrame, MOVIE_NOTIFY_OBJECT); + else if (_trayOutEndFrame >= 0) + playMovie(_trayOutEndFrame, _trayOutEndFrame, MOVIE_NOTIFY_OBJECT); if (_soundHandle != -1) { stopSound(_soundHandle); _soundHandle = -1; } - if (_startFrame10 >= 0) - playMovie(_startFrame10, _endFrame10, MOVIE_NOTIFY_OBJECT); + if (_offStartFrame >= 0) + playMovie(_offStartFrame, _offEndFrame, MOVIE_NOTIFY_OBJECT); _enabled = false; performAction(true); diff --git a/engines/titanic/npcs/bilge_succubus.h b/engines/titanic/npcs/bilge_succubus.h index 754949a306..b56716d110 100644 --- a/engines/titanic/npcs/bilge_succubus.h +++ b/engines/titanic/npcs/bilge_succubus.h @@ -41,10 +41,10 @@ class CBilgeSuccUBus : public CSuccUBus { bool TurnOn(CTurnOn *msg); bool TurnOff(CTurnOff *msg); public: - int _bilgeStartFrame1; - int _bilgeEndFrame1; - int _bilgeStartFrame2; - int _bilgeEndFrame2; + int _sneezing2StartFrame; + int _sneezing2EndFrame; + int _sneezing1StartFrame; + int _sneezing1EndFrame; public: CLASSDEF; CBilgeSuccUBus(); diff --git a/engines/titanic/npcs/parrot.cpp b/engines/titanic/npcs/parrot.cpp index e9aeba11cd..e039b15dfe 100644 --- a/engines/titanic/npcs/parrot.cpp +++ b/engines/titanic/npcs/parrot.cpp @@ -48,7 +48,7 @@ END_MESSAGE_MAP() int CParrot::_v1; int CParrot::_v2; int CParrot::_v3; -int CParrot::_v4; +ParrotState CParrot::_state; int CParrot::_v5; CParrot::CParrot() : CTrueTalkNPC() { @@ -56,12 +56,12 @@ CParrot::CParrot() : CTrueTalkNPC() { _string2 = "CarryParrot"; _field118 = 1; _field11C = 25; - _field120 = 0; - _field124 = 73; - _field128 = 58; + _lastSpeakTime = 0; + _newXp = 73; + _newXc = 58; _field12C = 0; _field130 = 0; - _field134 = nullptr; + _panTarget = nullptr; _field138 = 851; _field13C = 851; _field140 = 265; @@ -126,12 +126,12 @@ void CParrot::save(SimpleFile *file, int indent) { file->writeQuotedLine(_string2, indent); file->writeNumberLine(_field118, indent); file->writeNumberLine(_field11C, indent); - file->writeNumberLine(_field120, indent); - file->writeNumberLine(_field124, indent); - file->writeNumberLine(_field128, indent); + file->writeNumberLine(_lastSpeakTime, indent); + file->writeNumberLine(_newXp, indent); + file->writeNumberLine(_newXc, indent); file->writeNumberLine(_field12C, indent); file->writeNumberLine(_field130, indent); - file->writeNumberLine(_v4, indent); + file->writeNumberLine(_state, indent); file->writeNumberLine(_v5, indent); CTrueTalkNPC::save(file, indent); @@ -150,12 +150,12 @@ void CParrot::load(SimpleFile *file) { _string2 = file->readString(); _field118 = file->readNumber(); _field11C = file->readNumber(); - _field120 = file->readNumber(); - _field124 = file->readNumber(); - _field128 = file->readNumber(); + _lastSpeakTime = file->readNumber(); + _newXp = file->readNumber(); + _newXc = file->readNumber(); _field12C = file->readNumber(); _field130 = file->readNumber(); - _v4 = file->readNumber(); + _state = (ParrotState)file->readNumber(); _v5 = file->readNumber(); CTrueTalkNPC::load(file); @@ -175,13 +175,13 @@ bool CParrot::ActMsg(CActMsg *msg) { statusMsg.execute("PerchCoreHolder"); } } else if (msg->_action == "StartChickenDrag") { - if (!_v4) { + if (_state == PARROT_IN_CAGE) { stopMovie(); startTalking(this, 280275, findView()); _field12C = 0; } } else if (msg->_action == "EnteringFromTOW" && - (_v4 == 0 || _v4 == 2)) { + (_state == PARROT_IN_CAGE || _state == PARROT_ESCAPED)) { if (_v2) { _v2 = 2; } else { @@ -190,7 +190,7 @@ bool CParrot::ActMsg(CActMsg *msg) { detach(); attach(cageBar); - _v4 = 0; + _state = PARROT_IN_CAGE; CActMsg actMsg1("OpenNow"); actMsg1.execute("ParrotCage"); CActMsg actMsg2("GainParrot"); @@ -219,17 +219,17 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { CActMsg actMsg1("LoseParrot"); actMsg1.execute("ParrotLobbyController"); - if (_field134) { + if (_panTarget) { CActMsg actMsg2("PanAwayFromParrot"); - actMsg2.execute(_field134); - _field134 = nullptr; + actMsg2.execute(_panTarget); + _panTarget = nullptr; } else { CActMsg actMsg2("Shut"); actMsg2.execute("ParrotCage"); } _npcFlags &= ~NPCFLAG_2000000; - _v4 = 2; + _state = PARROT_ESCAPED; } else if (_npcFlags & NPCFLAG_10000) { if (_npcFlags & NPCFLAG_20000) { _npcFlags = (_npcFlags & ~NPCFLAG_20000) | NPCFLAG_40000; @@ -243,7 +243,7 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { int xp = _bounds.left + _bounds.width() / 2; if (_npcFlags & NPCFLAG_100000) { - if ((xp - _field128) > 32) { + if ((xp - _newXc) > 32) { setPosition(Point(_bounds.left - 40, _bounds.top)); playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT); movieEvent(236); @@ -253,7 +253,7 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { _npcFlags = (_npcFlags & ~NPCFLAG_40000) | NPCFLAG_80000; } } else { - if ((_field128 - xp) > 32) { + if ((_newXc - xp) > 32) { playClip("Walk Right Loop", MOVIE_NOTIFY_OBJECT); movieEvent(244); } else { @@ -347,8 +347,8 @@ bool CParrot::EnterViewMsg(CEnterViewMsg *msg) { "Talking5", "Talking6", "Talking7", nullptr }; - if (!_v4) { - setPosition(Point(_field124, _bounds.top)); + if (_state == PARROT_IN_CAGE) { + setPosition(Point(_newXp, _bounds.top)); _field118 = 1; _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000); loadFrame(0); @@ -369,7 +369,7 @@ bool CParrot::EnterViewMsg(CEnterViewMsg *msg) { } bool CParrot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) { - if (_v4 != 3) { + if (_state != PARROT_MAILED) { CViewItem *view = msg->_param2 ? findView() : nullptr; startTalking(this, msg->_action, view); } @@ -378,7 +378,7 @@ bool CParrot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) { } bool CParrot::MouseDragStartMsg(CMouseDragStartMsg *msg) { - if (_field118 && !_v4 && checkPoint(msg->_mousePos, false, true)) { + if (_field118 && _state == PARROT_IN_CAGE && checkPoint(msg->_mousePos, false, true)) { setVisible(false); CRoomItem *room = findRoom(); @@ -416,7 +416,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) { "Lift", "ServiceElevator", "Dome", "Home", "MoonEmbLobby", nullptr }; - if (!stateGetParrotMet() || _v4 == 3 || compareViewNameTo("Titania.Node 18.N")) + if (!stateGetParrotMet() || _state == PARROT_MAILED || compareViewNameTo("Titania.Node 18.N")) return true; // Check for rooms not to speak in @@ -426,7 +426,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) { } // Don't have the parrot speak too often - if ((getTicksCount() - _field120) < 20000 || _speechCounter) + if ((getTicksCount() - _lastSpeakTime) < 20000 || _speechCounter) return true; playSound("z#475.wav", 50); @@ -473,7 +473,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) { } } - _field120 = getTicksCount(); + _lastSpeakTime = getTicksCount(); return true; } @@ -484,7 +484,7 @@ bool CParrot::NPCPlayTalkingAnimationMsg(CNPCPlayTalkingAnimationMsg *msg) { }; if (!(_npcFlags & (NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000)) - && _visible && !_v4) { + && _visible && _state == PARROT_IN_CAGE) { if (!compareViewNameTo("ParrotLobby.Node 1.N")) msg->_names = NAMES; } @@ -499,7 +499,7 @@ bool CParrot::NPCPlayIdleAnimationMsg(CNPCPlayIdleAnimationMsg *msg) { }; if (!(_npcFlags & (NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000)) - && _visible && !_v4 && !compareViewNameTo("ParrotLobby.Node 1.N")) { + && _visible && _state == PARROT_IN_CAGE && !compareViewNameTo("ParrotLobby.Node 1.N")) { CGameObject *dragItem = getDraggingObject(); if (!dragItem || dragItem->getName() == "Chicken") { if (!_v5 ||getRandomNumber(3) != 0) { @@ -564,9 +564,9 @@ bool CParrot::NPCPlayIdleAnimationMsg(CNPCPlayIdleAnimationMsg *msg) { } bool CParrot::FrameMsg(CFrameMsg *msg) { - if (compareViewNameTo("ParrotLobby.Node 1.N")) + if (!compareViewNameTo("ParrotLobby.Node 1.N")) return false; - if (_v4) + if (_state != PARROT_IN_CAGE) return true; Point pt = getMousePos(); @@ -574,12 +574,14 @@ bool CParrot::FrameMsg(CFrameMsg *msg) { int xp = _bounds.left + _bounds.width() / 2; if ((_npcFlags & NPCFLAG_400000) && !hasActiveMovie()) { - _field128 = xp - (_field124 + _bounds.width() / 2); + _newXc = _newXp + _bounds.width() / 2; + int xDiff = ABS(xp - _newXc); - if (xp < 64) { - if (_field134) { + if (xDiff < 64) { + if (_panTarget) { CActMsg actMsg("PanAwayFromParrot"); - actMsg.execute(_field134); + actMsg.execute(_panTarget); + _panTarget = nullptr; } _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 @@ -601,14 +603,14 @@ bool CParrot::FrameMsg(CFrameMsg *msg) { return false; } - _field128 = CLIP((int)pt.x, 230, 480); + _newXc = CLIP((int)pt.x, 230, 480); if ((_npcFlags & NPCFLAG_10000) || hasActiveMovie()) return true; - if (_field128 > 64) { + if (_newXc > 64) { _npcFlags |= NPCFLAG_10000 | NPCFLAG_20000; - if (_field128 >= xp) { + if (_newXc >= xp) { setPosition(Point(_bounds.left + 30, _bounds.top)); _npcFlags |= NPCFLAG_200000; playClip("Walk Right Intro", MOVIE_NOTIFY_OBJECT); @@ -707,7 +709,7 @@ bool CParrot::PutParrotBackMsg(CPutParrotBackMsg *msg) { int xp = CLIP(msg->_value, 230, 480); setVisible(true); moveToView(); - _v4 = 0; + _state = PARROT_IN_CAGE; setPosition(Point(xp - _bounds.width() / 2, _bounds.top)); playRandomClip(NAMES, MOVIE_NOTIFY_OBJECT); @@ -719,7 +721,7 @@ bool CParrot::PutParrotBackMsg(CPutParrotBackMsg *msg) { } bool CParrot::PreEnterViewMsg(CPreEnterViewMsg *msg) { - if (!_v4) { + if (_state == PARROT_IN_CAGE) { loadMovie("z167.avi", false); loadFrame(0); } @@ -728,19 +730,19 @@ bool CParrot::PreEnterViewMsg(CPreEnterViewMsg *msg) { } bool CParrot::PanningAwayFromParrotMsg(CPanningAwayFromParrotMsg *msg) { - if (_v4) { + if (_state != PARROT_IN_CAGE) { CActMsg actMsg("PanAwayFromParrot"); actMsg.execute(msg->_target); - _field134 = 0; + _panTarget = nullptr; } else if (_v2) { - _field134 = msg->_target; + _panTarget = msg->_target; loadMovie("z168.avi", false); stopMovie(); playClip("Take Off", MOVIE_NOTIFY_OBJECT); _npcFlags |= NPCFLAG_2000000; } else { _npcFlags |= NPCFLAG_400000; - _field134 = msg->_target; + _panTarget = msg->_target; stopMovie(); } @@ -748,7 +750,7 @@ bool CParrot::PanningAwayFromParrotMsg(CPanningAwayFromParrotMsg *msg) { } bool CParrot::LeaveRoomMsg(CLeaveRoomMsg *msg) { - if (!_v4) + if (_state == PARROT_IN_CAGE) startTalking(this, 280259); return true; diff --git a/engines/titanic/npcs/parrot.h b/engines/titanic/npcs/parrot.h index 93e0643857..ce0397fb71 100644 --- a/engines/titanic/npcs/parrot.h +++ b/engines/titanic/npcs/parrot.h @@ -24,9 +24,15 @@ #define TITANIC_PARROT_H #include "titanic/npcs/true_talk_npc.h" +#include "titanic/moves/move_player_to.h" namespace Titanic { +enum ParrotState { + PARROT_IN_CAGE = 0, PARROT_1 = 1, PARROT_ESCAPED = 2, + PARROT_MAILED = 3, PARROT_4 = 4 +}; + class CParrot : public CTrueTalkNPC { DECLARE_MESSAGE_MAP; bool ActMsg(CActMsg *msg); @@ -49,19 +55,19 @@ public: static int _v1; static int _v2; static int _v3; - static int _v4; + static ParrotState _state; static int _v5; private: int _field108; CString _string2; int _field118; int _field11C; - int _field120; - int _field124; - int _field128; + uint _lastSpeakTime; + int _newXp; + int _newXc; int _field12C; int _field130; - CTreeItem *_field134; + CMovePlayerTo *_panTarget; int _field138; int _field13C; int _field140; diff --git a/engines/titanic/npcs/parrot_succubus.cpp b/engines/titanic/npcs/parrot_succubus.cpp index 657bde5b66..08866f187d 100644 --- a/engines/titanic/npcs/parrot_succubus.cpp +++ b/engines/titanic/npcs/parrot_succubus.cpp @@ -78,7 +78,7 @@ bool CParrotSuccUBus::HoseConnectedMsg(CHoseConnectedMsg *msg) { if (_enabled) { _enabled = false; } else { - playMovie(_startFrame9, _endFrame9, 0); + playMovie(_onStartFrame, _onEndFrame, 0); playSound("z#26.wav"); } diff --git a/engines/titanic/npcs/starlings.cpp b/engines/titanic/npcs/starlings.cpp index 7e5907f577..ff1c40cf29 100644 --- a/engines/titanic/npcs/starlings.cpp +++ b/engines/titanic/npcs/starlings.cpp @@ -29,34 +29,39 @@ BEGIN_MESSAGE_MAP(CStarlings, CCharacter) ON_MESSAGE(StatusChangeMsg) END_MESSAGE_MAP() -CStarlings::CStarlings() : CCharacter(), _enabled(false) { +bool CStarlings::_dead; + +CStarlings::CStarlings() : CCharacter() { } void CStarlings::save(SimpleFile *file, int indent) { file->writeNumberLine(1, indent); - file->writeNumberLine(_enabled, indent); + file->writeNumberLine(_dead, indent); CCharacter::save(file, indent); } void CStarlings::load(SimpleFile *file) { file->readNumber(); - _enabled = file->readNumber(); + _dead = file->readNumber(); CCharacter::load(file); } bool CStarlings::EnterViewMsg(CEnterViewMsg *msg) { - if (_enabled) + if (_dead) + // Tis but a flesh wound setVisible(false); else + // Repeatedly play the starlings flying playMovie(MOVIE_REPEAT); return true; } bool CStarlings::StatusChangeMsg(CStatusChangeMsg *msg) { - _enabled = msg->_newStatus == 1; - setVisible(!_enabled); + // I'm not dead.. I'm getting better. + _dead = msg->_newStatus == 1; + setVisible(!_dead); return true; } diff --git a/engines/titanic/npcs/starlings.h b/engines/titanic/npcs/starlings.h index 1998e6490d..4885777087 100644 --- a/engines/titanic/npcs/starlings.h +++ b/engines/titanic/npcs/starlings.h @@ -32,7 +32,8 @@ class CStarlings : public CCharacter { bool EnterViewMsg(CEnterViewMsg *msg); bool StatusChangeMsg(CStatusChangeMsg *msg); private: - bool _enabled; + // This needs to be static to be shared across all starling instances + static bool _dead; public: CLASSDEF; CStarlings(); diff --git a/engines/titanic/npcs/succubus.cpp b/engines/titanic/npcs/succubus.cpp index af859f9f3c..a05cc71d00 100644 --- a/engines/titanic/npcs/succubus.cpp +++ b/engines/titanic/npcs/succubus.cpp @@ -57,22 +57,22 @@ CSuccUBus::CSuccUBus() : CTrueTalkNPC() { _endFrame8 = -1; _startFrame11 = -1; _endFrame11 = -1; - _startFrame3 = 68; - _endFrame3 = 168; - _startFrame4 = 168; - _endFrame4 = 248; - _startFrame9 = 0; - _endFrame9 = 0x0E; - _startFrame10 = 0x0E; - _endFrame10 = 27; - _startFrame2 = 40; - _endFrame2 = 68; + _sendStartFrame = 68; + _sendEndFrame = 168; + _receiveStartFrame = 168; + _receiveEndFrame = 248; + _onStartFrame = 0; + _onEndFrame = 0x0E; + _offStartFrame = 0x0E; + _offEndFrame = 27; + _okStartFrame = 40; + _okEndFrame = 68; _field140 = 1; _mailP = nullptr; - _startFrame5 = 0; - _endFrame5 = 0; - _startFrame12 = 224; - _endFrame12 = 248; + _afterReceiveStartFrame = 0; + _afterReceiveEndFrame = 0; + _trayOutStartFrame = 224; + _trayOutEndFrame = 248; _field158 = 0; _field15C = 0; _string2 = "NULL"; @@ -82,16 +82,16 @@ CSuccUBus::CSuccUBus() : CTrueTalkNPC() { _field184 = 15; _field188 = 0; _rect2 = Rect(0, 0, 240, 340); - _field19C = 0; + _sendLost = false; _soundHandle = -1; _isChicken = false; _isFeathers = false; _field1AC = 0; _field1B0 = 0; - _startFrame6 = 303; - _endFrame6 = 312; - _startFrame7 = 313; - _endFrame7 = 325; + _emptyStartFrame = 303; + _emptyEndFrame = 312; + _smokeStartFrame = 313; + _smokeEndFrame = 325; _field1C4 = 326; _field1C8 = 347; _field1CC = 348; @@ -108,23 +108,23 @@ void CSuccUBus::save(SimpleFile *file, int indent) { file->writeNumberLine(_endFrame8, indent); file->writeNumberLine(_startFrame11, indent); file->writeNumberLine(_endFrame11, indent); - file->writeNumberLine(_startFrame3, indent); - file->writeNumberLine(_endFrame3, indent); - file->writeNumberLine(_startFrame4, indent); - file->writeNumberLine(_endFrame4, indent); - file->writeNumberLine(_startFrame9, indent); - file->writeNumberLine(_endFrame9, indent); - file->writeNumberLine(_startFrame10, indent); - file->writeNumberLine(_endFrame10, indent); - file->writeNumberLine(_startFrame2, indent); - file->writeNumberLine(_endFrame2, indent); + file->writeNumberLine(_sendStartFrame, indent); + file->writeNumberLine(_sendEndFrame, indent); + file->writeNumberLine(_receiveStartFrame, indent); + file->writeNumberLine(_receiveEndFrame, indent); + file->writeNumberLine(_onStartFrame, indent); + file->writeNumberLine(_onEndFrame, indent); + file->writeNumberLine(_offStartFrame, indent); + file->writeNumberLine(_offEndFrame, indent); + file->writeNumberLine(_okStartFrame, indent); + file->writeNumberLine(_okEndFrame, indent); file->writeNumberLine(_field140, indent); file->writeNumberLine(_v2, indent); - file->writeNumberLine(_startFrame5, indent); - file->writeNumberLine(_endFrame5, indent); - file->writeNumberLine(_startFrame12, indent); - file->writeNumberLine(_endFrame12, indent); + file->writeNumberLine(_afterReceiveStartFrame, indent); + file->writeNumberLine(_afterReceiveEndFrame, indent); + file->writeNumberLine(_trayOutStartFrame, indent); + file->writeNumberLine(_trayOutEndFrame, indent); file->writeNumberLine(_field158, indent); file->writeNumberLine(_field15C, indent); @@ -141,16 +141,16 @@ void CSuccUBus::save(SimpleFile *file, int indent) { file->writeNumberLine(_rect2.top, indent); file->writeNumberLine(_rect2.right, indent); file->writeNumberLine(_rect2.bottom, indent); - file->writeNumberLine(_field19C, indent); + file->writeNumberLine(_sendLost, indent); file->writeNumberLine(_soundHandle, indent); file->writeNumberLine(_isChicken, indent); file->writeNumberLine(_isFeathers, indent); file->writeNumberLine(_field1AC, indent); file->writeNumberLine(_field1B0, indent); - file->writeNumberLine(_startFrame6, indent); - file->writeNumberLine(_endFrame6, indent); - file->writeNumberLine(_startFrame7, indent); - file->writeNumberLine(_endFrame7, indent); + file->writeNumberLine(_emptyStartFrame, indent); + file->writeNumberLine(_emptyEndFrame, indent); + file->writeNumberLine(_smokeStartFrame, indent); + file->writeNumberLine(_smokeEndFrame, indent); file->writeNumberLine(_field1C4, indent); file->writeNumberLine(_field1C8, indent); file->writeNumberLine(_field1CC, indent); @@ -172,23 +172,23 @@ void CSuccUBus::load(SimpleFile *file) { _endFrame8 = file->readNumber(); _startFrame11 = file->readNumber(); _endFrame11 = file->readNumber(); - _startFrame3 = file->readNumber(); - _endFrame3 = file->readNumber(); - _startFrame4 = file->readNumber(); - _endFrame4 = file->readNumber(); - _startFrame9 = file->readNumber(); - _endFrame9 = file->readNumber(); - _startFrame10 = file->readNumber(); - _endFrame10 = file->readNumber(); - _startFrame2 = file->readNumber(); - _endFrame2 = file->readNumber(); + _sendStartFrame = file->readNumber(); + _sendEndFrame = file->readNumber(); + _receiveStartFrame = file->readNumber(); + _receiveEndFrame = file->readNumber(); + _onStartFrame = file->readNumber(); + _onEndFrame = file->readNumber(); + _offStartFrame = file->readNumber(); + _offEndFrame = file->readNumber(); + _okStartFrame = file->readNumber(); + _okEndFrame = file->readNumber(); _field140 = file->readNumber(); _v2 = file->readNumber(); - _startFrame5 = file->readNumber(); - _endFrame5 = file->readNumber(); - _startFrame12 = file->readNumber(); - _endFrame12 = file->readNumber(); + _afterReceiveStartFrame = file->readNumber(); + _afterReceiveEndFrame = file->readNumber(); + _trayOutStartFrame = file->readNumber(); + _trayOutEndFrame = file->readNumber(); _field158 = file->readNumber(); _field15C = file->readNumber(); @@ -205,16 +205,16 @@ void CSuccUBus::load(SimpleFile *file) { _rect2.top = file->readNumber(); _rect2.right = file->readNumber(); _rect2.bottom = file->readNumber(); - _field19C = file->readNumber(); + _sendLost = file->readNumber(); _soundHandle = file->readNumber(); _isChicken = file->readNumber(); _isFeathers = file->readNumber(); _field1AC = file->readNumber(); _field1B0 = file->readNumber(); - _startFrame6 = file->readNumber(); - _endFrame6 = file->readNumber(); - _startFrame7 = file->readNumber(); - _endFrame7 = file->readNumber(); + _emptyStartFrame = file->readNumber(); + _emptyEndFrame = file->readNumber(); + _smokeStartFrame = file->readNumber(); + _smokeEndFrame = file->readNumber(); _field1C4 = file->readNumber(); _field1C8 = file->readNumber(); _field1CC = file->readNumber(); @@ -297,13 +297,13 @@ bool CSuccUBus::SubAcceptCCarryMsg(CSubAcceptCCarryMsg *msg) { CSUBTransition transMsg; transMsg.execute(this); } else { - if (_startFrame2 >= 0) { + if (_okStartFrame >= 0) { startTalking(this, 70219, findView()); - playMovie(_startFrame2, _endFrame2, 0); + playMovie(_okStartFrame, _okEndFrame, 0); } - if (_startFrame3 >= 0) { - playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT); + if (_sendStartFrame >= 0) { + playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT); _field158 = 2; } @@ -340,8 +340,8 @@ bool CSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) { petDisplayMessage(2, BLANK); if (_startFrame8 >= 0) loadFrame(_startFrame8); - else if (!_field15C && _startFrame9 >= 0) - loadFrame(_startFrame9); + else if (!_field15C && _onStartFrame >= 0) + loadFrame(_onStartFrame); petClear(); if (_soundHandle != -1) { @@ -351,7 +351,7 @@ bool CSuccUBus::LeaveViewMsg(CLeaveViewMsg *msg) { if (_enabled) { _enabled = false; - if (_startFrame10 >= 0) + if (_offStartFrame >= 0) playSound("z#27.wav", 100); if (_field15C) @@ -397,14 +397,12 @@ bool CSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) { petDisplayMessage(2, NOTHING_IN_SUCCUBUS_TRAY); } else { - _field19C = 0; + _sendLost = false; CRoomFlags roomFlags = _roomFlags; - if (!pet->testRooms5(roomFlags) || getPassengerClass() > 0) { + if (!pet->isSuccUBusDest(roomFlags) || pet->getMailDestClass(roomFlags) < getPassengerClass()) { roomFlags = pet->getSpecialRoomFlags("BilgeRoom"); - _field19C = 1; - } else { - pet->getMailDest(roomFlags); + _sendLost = true; } _isFeathers = mailObject->getName() == "Feathers"; @@ -415,38 +413,40 @@ bool CSuccUBus::PETDeliverMsg(CPETDeliverMsg *msg) { incTransitions(); if (_isFeathers) { - _field19C = 0; - removeMail(destRoomFlags, roomFlags); + // The feather has special handling to be rejected by the SuccUBus + _sendLost = false; + sendMail(destRoomFlags, roomFlags); pet->phonographAction(""); - if (_startFrame2 >= 0) { - playMovie(_startFrame2, _endFrame2, 0); + if (_okStartFrame >= 0) { + playMovie(_okStartFrame, _okEndFrame, 0); startTalking(this, 230022, findView()); } _field158 = 1; - if (_startFrame3 >= 0) - playMovie(_startFrame3, _endFrame3, 0); + if (_sendStartFrame >= 0) + playMovie(_sendStartFrame, _sendEndFrame, 0); - if (_startFrame4 >= 0) { + if (_receiveStartFrame >= 0) { _mailP = mailObject; - playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT); + playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT); } - if (_startFrame5 >= 0) { - playMovie(_startFrame5, _endFrame5, 0); + if (_afterReceiveStartFrame >= 0) { + playMovie(_afterReceiveStartFrame, _afterReceiveEndFrame, 0); } } else { - removeMail(pet->getRoomFlags(), roomFlags); + // Send the mail to the destination + sendMail(pet->getRoomFlags(), roomFlags); pet->phonographAction(""); - if (_startFrame2 >= 0) { - playMovie(_startFrame2, _endFrame2, 0); + if (_okStartFrame >= 0) { + playMovie(_okStartFrame, _okEndFrame, 0); startTalking(this, 230012, findView()); } - if (_startFrame3 >= 0) - playMovie(_startFrame3, _endFrame3, MOVIE_NOTIFY_OBJECT); + if (_sendStartFrame >= 0) + playMovie(_sendStartFrame, _sendEndFrame, MOVIE_NOTIFY_OBJECT); } } @@ -465,6 +465,7 @@ bool CSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) { uint petRoomFlags = pet->getRoomFlags(); if (mailExists(petRoomFlags)) { + // There's already something to send in the tray, so you can't receive switch (getRandomNumber(2)) { case 0: startTalking(this, 70080, findView()); @@ -482,24 +483,26 @@ bool CSuccUBus::PETReceiveMsg(CPETReceiveMsg *msg) { CGameObject *mailObject = findMailByFlags( _v3 && compareRoomNameTo("Titania") ? 3 : _field140, petRoomFlags); if (!mailObject) { + // No mail for this SuccUBus if (getRandomNumber(1) == 0) { startTalking(this, 70104, findView()); } else { startTalking(this, 70105, findView()); } - playMovie(_startFrame6, _endFrame6, 0); - playMovie(_startFrame7, _endFrame7, 0); + playMovie(_emptyStartFrame, _emptyEndFrame, 0); + playMovie(_smokeStartFrame, _smokeEndFrame, 0); petDisplayMessage(2, NOTHING_TO_DELIVER); } else { + // Receive the mail addressed to this SuccUBus _mailP = mailObject; startTalking(this, 230004, findView()); - if (_startFrame4 >= 0) { + if (_receiveStartFrame >= 0) { _field158 = 1; _field1D8 = 1; incTransitions(); - playMovie(_startFrame4, _endFrame4, MOVIE_NOTIFY_OBJECT); + playMovie(_receiveStartFrame, _receiveEndFrame, MOVIE_NOTIFY_OBJECT); } } } @@ -511,7 +514,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { CPetControl *pet = getPetControl(); uint petRoomFlags = pet ? pet->getRoomFlags() : 0; - if (msg->_endFrame == _endFrame10) { + if (msg->_endFrame == _offEndFrame) { if (_startFrame11 >= 0) playSound("z#30.wav", 100); @@ -524,7 +527,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { } } - if (msg->_endFrame == _endFrame9) { + if (msg->_endFrame == _onEndFrame) { bool flag = false; if (pet && !mailExists(petRoomFlags)) { @@ -585,14 +588,14 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { } } - if (msg->_endFrame == _endFrame3) { + if (msg->_endFrame == _sendEndFrame) { if (_field158 == 1) { startTalking(this, 230022, findView()); } else if (_field158 == 2) { startTalking(this, 230017, findView()); - } else if (_field19C) { + } else if (_sendLost) { startTalking(this, 230019, findView()); - _field19C = 0; + _sendLost = false; } else if (_isChicken) { startTalking(this, 230018, findView()); _isChicken = false; @@ -609,7 +612,7 @@ bool CSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { transMsg.execute(this); } - if (msg->_endFrame == _endFrame4) { + if (msg->_endFrame == _receiveEndFrame) { // SuccUBus disgorged mail if (pet && _mailP) { _mailP->setMailDest(petRoomFlags); @@ -661,8 +664,8 @@ bool CSuccUBus::TurnOn(CTurnOn *msg) { playSound("z#30.wav", 100); } - if (_startFrame9 >= 0) { - playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT); + if (_onStartFrame >= 0) { + playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT); playSound("z#26.wav", 100); } @@ -689,9 +692,9 @@ bool CSuccUBus::TurnOff(CTurnOff *msg) { _soundHandle = -1; } - if (_startFrame10 >= 0) { + if (_offStartFrame >= 0) { playSound("z#27.wav", 100); - playMovie(_startFrame10, _endFrame10, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); + playMovie(_offStartFrame, _offEndFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); } if (!_field15C && _startFrame11 >= 0) diff --git a/engines/titanic/npcs/succubus.h b/engines/titanic/npcs/succubus.h index 7ca8037a0a..d996bcdc68 100644 --- a/engines/titanic/npcs/succubus.h +++ b/engines/titanic/npcs/succubus.h @@ -56,22 +56,22 @@ protected: int _endFrame8; int _startFrame11; int _endFrame11; - int _startFrame3; - int _endFrame3; - int _startFrame4; - int _endFrame4; - int _startFrame9; - int _endFrame9; - int _startFrame10; - int _endFrame10; - int _startFrame2; - int _endFrame2; + int _sendStartFrame; + int _sendEndFrame; + int _receiveStartFrame; + int _receiveEndFrame; + int _onStartFrame; + int _onEndFrame; + int _offStartFrame; + int _offEndFrame; + int _okStartFrame; + int _okEndFrame; int _field140; CGameObject *_mailP; - int _startFrame5; - int _endFrame5; - int _startFrame12; - int _endFrame12; + int _afterReceiveStartFrame; + int _afterReceiveEndFrame; + int _trayOutStartFrame; + int _trayOutEndFrame; int _field158; bool _field15C; CString _string2; @@ -84,16 +84,16 @@ protected: int _field190; int _field194; int _field198; - int _field19C; + bool _sendLost; int _soundHandle; bool _isChicken; bool _isFeathers; int _field1AC; int _field1B0; - int _startFrame6; - int _endFrame6; - int _startFrame7; - int _endFrame7; + int _emptyStartFrame; + int _emptyEndFrame; + int _smokeStartFrame; + int _smokeEndFrame; int _field1C4; int _field1C8; int _field1CC; diff --git a/engines/titanic/pet_control/pet_control.cpp b/engines/titanic/pet_control/pet_control.cpp index b7fece7569..55b2ecc24b 100644 --- a/engines/titanic/pet_control/pet_control.cpp +++ b/engines/titanic/pet_control/pet_control.cpp @@ -699,11 +699,11 @@ void CPetControl::resetDials0() { _conversations.resetDials0(); } -int CPetControl::getMailDest(const CRoomFlags &roomFlags) const { +PassengerClass CPetControl::getMailDestClass(const CRoomFlags &roomFlags) const { if (!roomFlags.isSuccUBusRoomFlags()) - return (int)roomFlags.getPassengerClassNum(); + return roomFlags.getPassengerClassNum(); - return roomFlags.getSuccUBusNum(roomFlags.getSuccUBusRoomName()); + return roomFlags.getSuccUBusClass(roomFlags.getSuccUBusRoomName()); } void CPetControl::starsSetButtons(int val1, int val2) { diff --git a/engines/titanic/pet_control/pet_control.h b/engines/titanic/pet_control/pet_control.h index 0a8b6295be..a63c29d6b3 100644 --- a/engines/titanic/pet_control/pet_control.h +++ b/engines/titanic/pet_control/pet_control.h @@ -522,11 +522,14 @@ public: } /** - * Get mail destination given the specified flags + * Get the passenger class of the specified room flags */ - int getMailDest(const CRoomFlags &roomFlags) const; + PassengerClass getMailDestClass(const CRoomFlags &roomFlags) const; - bool testRooms5(uint roomFlags) { + /** + * Returns whether the given room flags specify a location with a SuccUBus + */ + bool isSuccUBusDest(uint roomFlags) { return CRoomFlags(roomFlags).not5(); } diff --git a/engines/titanic/pet_control/pet_conversations.h b/engines/titanic/pet_control/pet_conversations.h index c3508f62a8..37d216ed2f 100644 --- a/engines/titanic/pet_control/pet_conversations.h +++ b/engines/titanic/pet_control/pet_conversations.h @@ -24,7 +24,7 @@ #define TITANIC_PET_CONVERSATIONS_H #include "titanic/pet_control/pet_section.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" #include "titanic/pet_control/pet_gfx_element.h" #include "titanic/true_talk/true_talk_manager.h" @@ -48,8 +48,8 @@ private: CPetGfxElement _splitter; CPetGfxElement _npcIcons[9]; int _npcNum; - CPetText _log; - CPetText _textInput; + CTextControl _log; + CTextControl _textInput; bool _logChanged; int _field418; CString _npcName; diff --git a/engines/titanic/pet_control/pet_drag_chev.cpp b/engines/titanic/pet_control/pet_drag_chev.cpp index 957fe5295c..4b54d3e69c 100644 --- a/engines/titanic/pet_control/pet_drag_chev.cpp +++ b/engines/titanic/pet_control/pet_drag_chev.cpp @@ -59,6 +59,7 @@ bool CPetDragChev::MouseDragEndMsg(CMouseDragEndMsg *msg) { if (succubus) { CSetChevRoomBits chevMsg(_destRoomFlags); chevMsg.execute(succubus); + petMoveToHiddenRoom(); } else { CPetControl *petControl = getPetControl(); if (!petControl || !petControl->contains(msg->_mousePos) diff --git a/engines/titanic/pet_control/pet_glyphs.cpp b/engines/titanic/pet_control/pet_glyphs.cpp index ed043811ce..b42b87199b 100644 --- a/engines/titanic/pet_control/pet_glyphs.cpp +++ b/engines/titanic/pet_control/pet_glyphs.cpp @@ -39,7 +39,7 @@ void CPetGlyph::drawAt(CScreenManager *screenManager, const Point &pt, bool isHi } void CPetGlyph::updateTooltip() { - CPetText *petText = getPetSection()->getText(); + CTextControl *petText = getPetSection()->getText(); if (petText) { petText->setColor(getPetSection()->getColor(0)); getTooltip(petText); diff --git a/engines/titanic/pet_control/pet_glyphs.h b/engines/titanic/pet_control/pet_glyphs.h index ac008c5ab0..6229d17994 100644 --- a/engines/titanic/pet_control/pet_glyphs.h +++ b/engines/titanic/pet_control/pet_glyphs.h @@ -35,7 +35,7 @@ namespace Titanic { class CPetGlyphs; class CPetSection; -class CPetText; +class CTextControl; enum GlyphActionMode { ACTION_REMOVE = 0, ACTION_REMOVED = 1, ACTION_CHANGE = 2 }; @@ -177,7 +177,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text) {} + virtual void getTooltip(CTextControl *text) {} /** * Saves the data for the glyph diff --git a/engines/titanic/pet_control/pet_inventory.cpp b/engines/titanic/pet_control/pet_inventory.cpp index c1eb0754a2..aa1bb31809 100644 --- a/engines/titanic/pet_control/pet_inventory.cpp +++ b/engines/titanic/pet_control/pet_inventory.cpp @@ -94,6 +94,15 @@ bool CPetInventory::VirtualKeyCharMsg(CVirtualKeyCharMsg *msg) { return _items.VirtualKeyCharMsg(msg); } +bool CPetInventory::MouseWheelMsg(CMouseWheelMsg *msg) { + if (msg->_wheelUp) + _items.scrollLeft(); + else + _items.scrollRight(); + + return true; +} + CGameObject *CPetInventory::dragEnd(const Point &pt) const { return _items.getObjectAt(pt); } diff --git a/engines/titanic/pet_control/pet_inventory.h b/engines/titanic/pet_control/pet_inventory.h index 5433feae95..7efc0755d8 100644 --- a/engines/titanic/pet_control/pet_inventory.h +++ b/engines/titanic/pet_control/pet_inventory.h @@ -26,7 +26,7 @@ #include "titanic/support/simple_file.h" #include "titanic/pet_control/pet_section.h" #include "titanic/pet_control/pet_inventory_glyphs.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" namespace Titanic { @@ -35,7 +35,7 @@ namespace Titanic { */ class CPetInventory : public CPetSection { private: - CPetText _text; + CTextControl _text; CPetInventoryGlyphs _items; CGameObject *_itemBackgrounds[46]; CGameObject *_itemGlyphs[46]; @@ -94,6 +94,7 @@ public: virtual bool MouseButtonUpMsg(CMouseButtonUpMsg *msg); virtual bool MouseDoubleClickMsg(CMouseDoubleClickMsg *msg); virtual bool VirtualKeyCharMsg(CVirtualKeyCharMsg *msg); + virtual bool MouseWheelMsg(CMouseWheelMsg *msg); /** * Returns item a drag-drop operation has dropped on, if any @@ -133,7 +134,7 @@ public: /** * Get a reference to the tooltip text associated with the section */ - virtual CPetText *getText() { return &_text; } + virtual CTextControl *getText() { return &_text; } /** * Special retrieval of glyph background image diff --git a/engines/titanic/pet_control/pet_inventory_glyphs.cpp b/engines/titanic/pet_control/pet_inventory_glyphs.cpp index 74d769af6d..9d745d8806 100644 --- a/engines/titanic/pet_control/pet_inventory_glyphs.cpp +++ b/engines/titanic/pet_control/pet_inventory_glyphs.cpp @@ -143,7 +143,7 @@ bool CPetInventoryGlyph::dragGlyph(const Point &topLeft, CMouseDragStartMsg *msg } } -void CPetInventoryGlyph::getTooltip(CPetText *text) { +void CPetInventoryGlyph::getTooltip(CTextControl *text) { if (text) { text->setText(""); diff --git a/engines/titanic/pet_control/pet_inventory_glyphs.h b/engines/titanic/pet_control/pet_inventory_glyphs.h index 508db67f2d..e843cf53f9 100644 --- a/engines/titanic/pet_control/pet_inventory_glyphs.h +++ b/engines/titanic/pet_control/pet_inventory_glyphs.h @@ -106,7 +106,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); /** * Return whether the glyph is currently valid diff --git a/engines/titanic/pet_control/pet_load.cpp b/engines/titanic/pet_control/pet_load.cpp index 3d67cf6d71..81ea85874f 100644 --- a/engines/titanic/pet_control/pet_load.cpp +++ b/engines/titanic/pet_control/pet_load.cpp @@ -50,7 +50,7 @@ bool CPetLoad::MouseButtonUpMsg(const Point &pt) { } } -void CPetLoad::getTooltip(CPetText *text) { +void CPetLoad::getTooltip(CTextControl *text) { text->setText("Load the game."); } diff --git a/engines/titanic/pet_control/pet_load.h b/engines/titanic/pet_control/pet_load.h index 5669991b59..103477a2f5 100644 --- a/engines/titanic/pet_control/pet_load.h +++ b/engines/titanic/pet_control/pet_load.h @@ -47,7 +47,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); /** * Highlights a save slot diff --git a/engines/titanic/pet_control/pet_load_save.h b/engines/titanic/pet_control/pet_load_save.h index 26ddec0ff9..5bdb2b5485 100644 --- a/engines/titanic/pet_control/pet_load_save.h +++ b/engines/titanic/pet_control/pet_load_save.h @@ -24,7 +24,7 @@ #define TITANIC_PET_LOAD_SAVE_H #include "titanic/pet_control/pet_glyphs.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" namespace Titanic { @@ -52,7 +52,7 @@ private: */ bool isSlotHighlighted(int index, const Point &pt); protected: - CPetText _slotNames[SAVEGAME_SLOTS_COUNT]; + CTextControl _slotNames[SAVEGAME_SLOTS_COUNT]; bool _slotInUse[SAVEGAME_SLOTS_COUNT]; CPetGfxElement _btnLoadSave; CPetGfxElement _gutter; diff --git a/engines/titanic/pet_control/pet_quit.cpp b/engines/titanic/pet_control/pet_quit.cpp index a6fb22d7e1..0d94474f99 100644 --- a/engines/titanic/pet_control/pet_quit.cpp +++ b/engines/titanic/pet_control/pet_quit.cpp @@ -83,7 +83,7 @@ bool CPetQuit::MouseButtonUpMsg(const Point &pt) { } } -void CPetQuit::getTooltip(CPetText *text) { +void CPetQuit::getTooltip(CTextControl *text) { text->setText("Quit the game."); } diff --git a/engines/titanic/pet_control/pet_quit.h b/engines/titanic/pet_control/pet_quit.h index b775000933..7eeedaf701 100644 --- a/engines/titanic/pet_control/pet_quit.h +++ b/engines/titanic/pet_control/pet_quit.h @@ -25,13 +25,13 @@ #include "titanic/pet_control/pet_gfx_element.h" #include "titanic/pet_control/pet_glyphs.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" namespace Titanic { class CPetQuit : public CPetGlyph { private: - CPetText _text; + CTextControl _text; CPetGfxElement _btnYes; public: /** @@ -62,12 +62,12 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); /** * Get a reference to the tooltip text associated with the section */ - virtual CPetText *getText() { return &_text; } + virtual CTextControl *getText() { return &_text; } }; } // End of namespace Titanic diff --git a/engines/titanic/pet_control/pet_real_life.h b/engines/titanic/pet_control/pet_real_life.h index 7c7101a84b..294f9a3f9f 100644 --- a/engines/titanic/pet_control/pet_real_life.h +++ b/engines/titanic/pet_control/pet_real_life.h @@ -25,7 +25,7 @@ #include "titanic/pet_control/pet_section.h" #include "titanic/pet_control/pet_glyphs.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" namespace Titanic { @@ -35,7 +35,7 @@ class CPetSaveGlyphs : public CPetGlyphs { class CPetRealLife : public CPetSection { private: CPetGlyphs _glyphs; - CPetText _text; + CTextControl _text; private: /** * Does setup @@ -124,7 +124,7 @@ public: /** * Get a reference to the tooltip text associated with the section */ - virtual CPetText *getText() { return &_text; } + virtual CTextControl *getText() { return &_text; } }; diff --git a/engines/titanic/pet_control/pet_remote.cpp b/engines/titanic/pet_control/pet_remote.cpp index 3f00ce5066..0293ec93a1 100644 --- a/engines/titanic/pet_control/pet_remote.cpp +++ b/engines/titanic/pet_control/pet_remote.cpp @@ -202,7 +202,7 @@ void CPetRemote::enterRoom(CRoomItem *room) { } } -CPetText *CPetRemote::getText() { +CTextControl *CPetRemote::getText() { return &_text; } diff --git a/engines/titanic/pet_control/pet_remote.h b/engines/titanic/pet_control/pet_remote.h index 9cd9c1e9d7..008c6459df 100644 --- a/engines/titanic/pet_control/pet_remote.h +++ b/engines/titanic/pet_control/pet_remote.h @@ -27,7 +27,7 @@ #include "titanic/pet_control/pet_section.h" #include "titanic/pet_control/pet_glyphs.h" #include "titanic/pet_control/pet_remote_glyphs.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" namespace Titanic { @@ -45,7 +45,7 @@ private: CPetGfxElement _send; CPetGfxElement _receive; CPetGfxElement _call; - CPetText _text; + CTextControl _text; private: /** * Setup the control @@ -137,7 +137,7 @@ public: /** * Get a reference to the tooltip text associated with the section */ - virtual CPetText *getText(); + virtual CTextControl *getText(); /** * Get an element from the section by a designated Id diff --git a/engines/titanic/pet_control/pet_remote_glyphs.cpp b/engines/titanic/pet_control/pet_remote_glyphs.cpp index f0e71d31ee..7f52ca7ee9 100644 --- a/engines/titanic/pet_control/pet_remote_glyphs.cpp +++ b/engines/titanic/pet_control/pet_remote_glyphs.cpp @@ -81,7 +81,7 @@ bool CBasicRemoteGlyph::MouseButtonUpMsg(const Point &pt) { return false; } -void CBasicRemoteGlyph::getTooltip(CPetText *text) { +void CBasicRemoteGlyph::getTooltip(CTextControl *text) { text->setText(_tooltip); } @@ -160,7 +160,7 @@ bool CRemoteGotoGlyph::MouseButtonUpMsg(const Point &pt) { return true; } -void CRemoteGotoGlyph::getTooltip(CPetText *text) { +void CRemoteGotoGlyph::getTooltip(CTextControl *text) { text->setText(_tooltip); } @@ -216,7 +216,7 @@ bool CTelevisionControlGlyph::MouseButtonUpMsg(const Point &pt) { return false; } -void CTelevisionControlGlyph::getTooltip(CPetText *text) { +void CTelevisionControlGlyph::getTooltip(CTextControl *text) { text->setText(TELEVISION_CONTROL); } @@ -280,7 +280,7 @@ bool CEntertainmentDeviceGlyph::MouseButtonUpMsg(const Point &pt) { return false; } -void CEntertainmentDeviceGlyph::getTooltip(CPetText *text) { +void CEntertainmentDeviceGlyph::getTooltip(CTextControl *text) { text->setText(OPERATE_ENTERTAINMENT); } @@ -334,7 +334,7 @@ bool COperateLightsGlyph::MouseButtonUpMsg(const Point &pt) { return true; } -void COperateLightsGlyph::getTooltip(CPetText *text) { +void COperateLightsGlyph::getTooltip(CTextControl *text) { text->setText(OPERATE_LIGHTS); } @@ -346,7 +346,7 @@ bool CDeployFloralGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) { return true; } -void CDeployFloralGlyph::getTooltip(CPetText *text) { +void CDeployFloralGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_FLORAL_ENHANCEMENT); } @@ -359,7 +359,7 @@ bool CDeployFullyRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *own return true; } -void CDeployFullyRelaxationGlyph::getTooltip(CPetText *text) { +void CDeployFullyRelaxationGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_FULLY_RELAXATION); } @@ -371,7 +371,7 @@ bool CDeployComfortGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) { return true; } -void CDeployComfortGlyph::getTooltip(CPetText *text) { +void CDeployComfortGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_COMFORT_WORKSTATION); } @@ -383,7 +383,7 @@ bool CDeployMinorStorageGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) return true; } -void CDeployMinorStorageGlyph::getTooltip(CPetText *text) { +void CDeployMinorStorageGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_MINOR_STORAGE); } @@ -395,7 +395,7 @@ bool CDeployMajorRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *own return true; } -void CDeployMajorRelaxationGlyph::getTooltip(CPetText *text) { +void CDeployMajorRelaxationGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_MAJOR_RELAXATION); } @@ -407,7 +407,7 @@ bool CInflateRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) return true; } -void CInflateRelaxationGlyph::getTooltip(CPetText *text) { +void CInflateRelaxationGlyph::getTooltip(CTextControl *text) { text->setText(INFLATE_RELAXATION_DEVICE); } @@ -419,7 +419,7 @@ bool CDeployMaintenanceGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) return true; } -void CDeployMaintenanceGlyph::getTooltip(CPetText *text) { +void CDeployMaintenanceGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_MAINTENANCE_HUB); } @@ -431,7 +431,7 @@ bool CDeployWorkSurfaceGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) return true; } -void CDeployWorkSurfaceGlyph::getTooltip(CPetText *text) { +void CDeployWorkSurfaceGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_EXECUTIVE_SURFACE); } @@ -443,7 +443,7 @@ bool CDeployMinorRelaxationGlyph::setup(CPetControl *petControl, CPetGlyphs *own return true; } -void CDeployMinorRelaxationGlyph::getTooltip(CPetText *text) { +void CDeployMinorRelaxationGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_MINOR_RELAXATION); } @@ -455,7 +455,7 @@ bool CDeploySinkGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) { return true; } -void CDeploySinkGlyph::getTooltip(CPetText *text) { +void CDeploySinkGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_SINK); } @@ -467,7 +467,7 @@ bool CDeployMajorStorageGlyph::setup(CPetControl *petControl, CPetGlyphs *owner) return true; } -void CDeployMajorStorageGlyph::getTooltip(CPetText *text) { +void CDeployMajorStorageGlyph::getTooltip(CTextControl *text) { text->setText(DEPLOY_MAJOR_STORAGE); } @@ -515,7 +515,7 @@ bool CSuccubusDeliveryGlyph::MouseButtonUpMsg(const Point &pt) { return true; } -void CSuccubusDeliveryGlyph::getTooltip(CPetText *text) { +void CSuccubusDeliveryGlyph::getTooltip(CTextControl *text) { text->setText(SUCCUBUS_DELIVERY_SYSTEM); } @@ -554,7 +554,7 @@ bool CNavigationControllerGlyph::MouseButtonUpMsg(const Point &pt) { return true; } -void CNavigationControllerGlyph::getTooltip(CPetText *text) { +void CNavigationControllerGlyph::getTooltip(CTextControl *text) { text->setText(NAVIGATION_CONTROLLER); } diff --git a/engines/titanic/pet_control/pet_remote_glyphs.h b/engines/titanic/pet_control/pet_remote_glyphs.h index 691a70f609..0a035ec03a 100644 --- a/engines/titanic/pet_control/pet_remote_glyphs.h +++ b/engines/titanic/pet_control/pet_remote_glyphs.h @@ -116,7 +116,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CToggleRemoteGlyph : public CPetRemoteGlyph { @@ -181,7 +181,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CSummonElevatorGlyph : public CBasicRemoteGlyph { @@ -225,7 +225,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CEntertainmentDeviceGlyph : public CToggleRemoteGlyph { @@ -259,7 +259,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; @@ -293,7 +293,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployFloralGlyph : public CToggleRemoteGlyph { @@ -320,7 +320,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployFullyRelaxationGlyph : public CToggleRemoteGlyph { @@ -347,7 +347,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployComfortGlyph : public CToggleRemoteGlyph { @@ -374,7 +374,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployMinorStorageGlyph : public CToggleRemoteGlyph { @@ -401,7 +401,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployMajorRelaxationGlyph : public CToggleRemoteGlyph { @@ -428,7 +428,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CInflateRelaxationGlyph : public CToggleRemoteGlyph { @@ -455,7 +455,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployMaintenanceGlyph : public CToggleRemoteGlyph { @@ -482,7 +482,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployWorkSurfaceGlyph : public CToggleRemoteGlyph { @@ -509,7 +509,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployMinorRelaxationGlyph : public CToggleRemoteGlyph { @@ -536,7 +536,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeploySinkGlyph : public CToggleRemoteGlyph { @@ -563,7 +563,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CDeployMajorStorageGlyph : public CToggleRemoteGlyph { @@ -590,7 +590,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CSuccubusDeliveryGlyph : public CPetRemoteGlyph { @@ -623,7 +623,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CNavigationControllerGlyph : public CPetRemoteGlyph { @@ -657,7 +657,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; class CGotoBottomOfWellGlyph : public CRemoteGotoGlyph { diff --git a/engines/titanic/pet_control/pet_rooms.cpp b/engines/titanic/pet_control/pet_rooms.cpp index f8017373ec..88d9df15cd 100644 --- a/engines/titanic/pet_control/pet_rooms.cpp +++ b/engines/titanic/pet_control/pet_rooms.cpp @@ -97,8 +97,8 @@ bool CPetRooms::VirtualKeyCharMsg(CVirtualKeyCharMsg *msg) { } bool CPetRooms::checkDragEnd(CGameObject *item) { - // Ignore any item drops except valid mail items - if (!item->_isMail) + // Ignore any item drops except onto mail items + if (!item->_isPendingMail) return false; uint roomFlags = item->_destRoomFlags; @@ -170,7 +170,7 @@ void CPetRooms::enterRoom(CRoomItem *room) { resetHighlight(); } -CPetText *CPetRooms::getText() { +CTextControl *CPetRooms::getText() { return &_text; } diff --git a/engines/titanic/pet_control/pet_rooms.h b/engines/titanic/pet_control/pet_rooms.h index 19c97c0d4e..6b71359ce6 100644 --- a/engines/titanic/pet_control/pet_rooms.h +++ b/engines/titanic/pet_control/pet_rooms.h @@ -24,7 +24,7 @@ #define TITANIC_PET_ROOMS_H #include "titanic/pet_control/pet_section.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" #include "titanic/pet_control/pet_rooms_glyphs.h" #include "titanic/game_location.h" @@ -43,7 +43,7 @@ private: CGameObject *_chevRightOnLit; CGameObject *_chevRightOffLit; CPetGfxElement _plinth; - CPetText _text; + CTextControl _text; int _floorNum; int _elevatorNum; int _roomNum; @@ -141,7 +141,7 @@ public: /** * Get a reference to the tooltip text associated with the section */ - virtual CPetText *getText(); + virtual CTextControl *getText(); /** * Special retrieval of glyph background image diff --git a/engines/titanic/pet_control/pet_rooms_glyphs.cpp b/engines/titanic/pet_control/pet_rooms_glyphs.cpp index e911759f25..a69704c7a5 100644 --- a/engines/titanic/pet_control/pet_rooms_glyphs.cpp +++ b/engines/titanic/pet_control/pet_rooms_glyphs.cpp @@ -124,7 +124,7 @@ bool CPetRoomsGlyph::dragGlyph(const Point &topLeft, CMouseDragStartMsg *msg) { if (chevron) { chevron->_destRoomFlags = _roomFlags; - chevron->_isMail = _mailFlag != 0; + chevron->_isPendingMail = _mailFlag != 0; petControl->removeFromInventory(chevron, false, false); chevron->loadSurface(); @@ -141,19 +141,19 @@ bool CPetRoomsGlyph::dragGlyph(const Point &topLeft, CMouseDragStartMsg *msg) { return false; } -void CPetRoomsGlyph::getTooltip(CPetText *text) { +void CPetRoomsGlyph::getTooltip(CTextControl *text) { CRoomFlags roomFlags(_roomFlags); CPetRooms *owner = static_cast<CPetRooms *>(getPetSection()); - CString msg; + CString prefix; if (isCurrentlyAssigned()) { - msg = "Your assigned room: "; + prefix = "Your assigned room: "; } else if (isPreviouslyAssigned()) { - msg = "A previously assigned room: "; + prefix = "A previously assigned room: "; } else if (!_mailFlag) { - msg = "Saved Chevron: "; + prefix = "Saved Chevron: "; } else if (_mailFlag == 1 && owner->getRoomFlags() == _roomFlags) { - msg = "Current location: "; + prefix = "Current location: "; } // Get the room description @@ -165,7 +165,7 @@ void CPetRoomsGlyph::getTooltip(CPetText *text) { } roomStr += " (shift-click edits)"; - text->setText(roomStr); + text->setText(prefix + roomStr); } void CPetRoomsGlyph::saveGlyph(SimpleFile *file, int indent) { diff --git a/engines/titanic/pet_control/pet_rooms_glyphs.h b/engines/titanic/pet_control/pet_rooms_glyphs.h index 6c51b6f875..3a43bdc06c 100644 --- a/engines/titanic/pet_control/pet_rooms_glyphs.h +++ b/engines/titanic/pet_control/pet_rooms_glyphs.h @@ -89,7 +89,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); /** * Saves the data for the glyph diff --git a/engines/titanic/pet_control/pet_save.cpp b/engines/titanic/pet_control/pet_save.cpp index 60afa11ab4..00dbfa6b4a 100644 --- a/engines/titanic/pet_control/pet_save.cpp +++ b/engines/titanic/pet_control/pet_save.cpp @@ -64,7 +64,7 @@ void CPetSave::highlightCurrent(const Point &pt) { highlightSave(_savegameSlotNum); } -void CPetSave::getTooltip(CPetText *text) { +void CPetSave::getTooltip(CTextControl *text) { text->setText("Save the game."); } diff --git a/engines/titanic/pet_control/pet_save.h b/engines/titanic/pet_control/pet_save.h index 39a25eb087..9b3c11566f 100644 --- a/engines/titanic/pet_control/pet_save.h +++ b/engines/titanic/pet_control/pet_save.h @@ -57,7 +57,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); /** * Called on a highlighted item when PET area is entered diff --git a/engines/titanic/pet_control/pet_section.cpp b/engines/titanic/pet_control/pet_section.cpp index aced697705..2c2238e3f9 100644 --- a/engines/titanic/pet_control/pet_section.cpp +++ b/engines/titanic/pet_control/pet_section.cpp @@ -39,7 +39,7 @@ static const uint PALETTE3[5] = { }; void CPetSection::displayMessage(const CString &msg) { - CPetText *text = getText(); + CTextControl *text = getText(); if (text) { text->setColor(getColor(1)); @@ -64,7 +64,7 @@ void CPetSection::removeText(int duration) { } void CPetSection::removeText() { - CPetText *text = getText(); + CTextControl *text = getText(); if (text) text->setup(); } diff --git a/engines/titanic/pet_control/pet_section.h b/engines/titanic/pet_control/pet_section.h index c68aa90411..e245d5176b 100644 --- a/engines/titanic/pet_control/pet_section.h +++ b/engines/titanic/pet_control/pet_section.h @@ -35,7 +35,7 @@ enum PetArea { class CPetControl; class CPetElement; -class CPetText; +class CTextControl; class CScreenManager; class CRoomItem; @@ -170,7 +170,7 @@ public: /** * Get a reference to the tooltip text associated with the section */ - virtual CPetText *getText() { return nullptr; } + virtual CTextControl *getText() { return nullptr; } /** * Removes text after a given duration diff --git a/engines/titanic/pet_control/pet_sound.cpp b/engines/titanic/pet_control/pet_sound.cpp index e9958c67be..f4d45038e9 100644 --- a/engines/titanic/pet_control/pet_sound.cpp +++ b/engines/titanic/pet_control/pet_sound.cpp @@ -275,7 +275,7 @@ bool CPetSound::MouseButtonUpMsg(const Point &pt) { return true; } -void CPetSound::getTooltip(CPetText *text) { +void CPetSound::getTooltip(CTextControl *text) { text->setText("Change the volume settings."); } diff --git a/engines/titanic/pet_control/pet_sound.h b/engines/titanic/pet_control/pet_sound.h index c4b663ad44..fed4f43f92 100644 --- a/engines/titanic/pet_control/pet_sound.h +++ b/engines/titanic/pet_control/pet_sound.h @@ -25,7 +25,7 @@ #include "titanic/pet_control/pet_glyphs.h" #include "titanic/pet_control/pet_gfx_element.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" #include "titanic/pet_control/pet_slider.h" namespace Titanic { @@ -39,10 +39,10 @@ private: CPetSlider _musicVolume; CPetSlider _parrotVolume; CPetSlider _speechVolume; - CPetText _textMasterVolume; - CPetText _textMusicVolume; - CPetText _textParrotVolume; - CPetText _textSpeechVolume; + CTextControl _textMasterVolume; + CTextControl _textMusicVolume; + CTextControl _textParrotVolume; + CTextControl _textSpeechVolume; CPetSlider *_draggingSlider; int _draggingSliderNum; private: @@ -96,7 +96,7 @@ public: /** * Returns the tooltip text for when the glyph is selected */ - virtual void getTooltip(CPetText *text); + virtual void getTooltip(CTextControl *text); }; } // End of namespace Titanic diff --git a/engines/titanic/pet_control/pet_starfield.h b/engines/titanic/pet_control/pet_starfield.h index 6c47f47d67..ec96fb93ef 100644 --- a/engines/titanic/pet_control/pet_starfield.h +++ b/engines/titanic/pet_control/pet_starfield.h @@ -24,7 +24,7 @@ #define TITANIC_PET_STARFIELD_H #include "titanic/pet_control/pet_section.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" #include "titanic/pet_control/pet_gfx_element.h" namespace Titanic { @@ -39,7 +39,7 @@ private: CPetGfxElement _leds[6]; Rect _rect1; int _field18C; - CPetText _text; + CTextControl _text; bool _photoOn; bool _hasReference; private: diff --git a/engines/titanic/pet_control/pet_translation.cpp b/engines/titanic/pet_control/pet_translation.cpp index fe6c37c8ab..9509047325 100644 --- a/engines/titanic/pet_control/pet_translation.cpp +++ b/engines/titanic/pet_control/pet_translation.cpp @@ -61,8 +61,8 @@ void CPetTranslation::clearTranslation() { void CPetTranslation::addTranslation(const CString &str1, const CString &str2) { CString msg = CString::format("%s%s - %s%s", - CPetText::getColorText(0, 0x80, 0).c_str(), str1.c_str(), - CPetText::getColorText(0, 0, 0).c_str(), str2.c_str()); + CTextControl::getColorText(0, 0x80, 0).c_str(), str1.c_str(), + CTextControl::getColorText(0, 0, 0).c_str(), str2.c_str()); _message.addLine(msg); _petControl->makeDirty(); } diff --git a/engines/titanic/pet_control/pet_translation.h b/engines/titanic/pet_control/pet_translation.h index 26070d6e59..ce12be454e 100644 --- a/engines/titanic/pet_control/pet_translation.h +++ b/engines/titanic/pet_control/pet_translation.h @@ -24,14 +24,14 @@ #define TITANIC_PET_TRANSLATION_H #include "titanic/pet_control/pet_section.h" -#include "titanic/pet_control/pet_text.h" +#include "titanic/gfx/text_control.h" namespace Titanic { class CPetTranslation : public CPetSection { private: - CPetText _message; - CPetText _tooltip; + CTextControl _message; + CTextControl _tooltip; private: /** * Setup the control @@ -87,7 +87,7 @@ public: /** * Get a reference to the tooltip text associated with the section */ - virtual CPetText *getText() { return &_tooltip; } + virtual CTextControl *getText() { return &_tooltip; } /** * Clear any current translation text diff --git a/engines/titanic/room_flags.cpp b/engines/titanic/room_flags.cpp index 25c604ba93..57156f0655 100644 --- a/engines/titanic/room_flags.cpp +++ b/engines/titanic/room_flags.cpp @@ -41,7 +41,7 @@ struct TransportFlagsEntry { struct SuccUBusFlagsEntry { const char *const _roomName; uint _roomFlags; - uint _succubusNum; + PassengerClass _classNum; }; #define TRANSPORT_ROOMS_SIZE 6 @@ -56,23 +56,23 @@ const TransportFlagsEntry TRANSPORT_ROOMS[TRANSPORT_ROOMS_SIZE] = { #define SUCCUBUS_ROOMS_SIZE 17 const SuccUBusFlagsEntry SUCCUBUS_ROOMS[SUCCUBUS_ROOMS_SIZE] = { - { "ParrotLobby", 0x1D0D9, 3 }, - { "SculptureChamber", 0x465FB, 2 }, - { "Bar", 0x0B3D97, 2 }, - { "EmbLobby", 0x0CC971, 3 }, - { "MoonEmbLobby", 0x0CC971, 3 }, - { "MusicRoom", 0x0F34DB, 2 }, - { "MusicRoomLobby", 0x0F34DB, 2 }, - { "Titania", 0x8A397, 3 }, - { "BottomOfWell", 0x59FAD, 3 }, - { "Arboretum", 0x4D6AF, 1 }, - { "PromenadeDeck", 0x79C45, 2 }, - { "1stClassRestaurant", 0x896B9, 1 }, - { "CreatorsChamber", 0x2F86D, 2 }, - { "CreatorsChamberOn", 0x2F86D, 2 }, - { "BilgeRoom", 0x3D94B, 3 }, - { "BilgeRoomWith", 0x3D94B, 3 }, - { "Bridge", 0x39FCB, 3 } + { "ParrotLobby", 0x1D0D9, THIRD_CLASS }, + { "SculptureChamber", 0x465FB, SECOND_CLASS }, + { "Bar", 0x0B3D97, SECOND_CLASS }, + { "EmbLobby", 0x0CC971, THIRD_CLASS }, + { "MoonEmbLobby", 0x0CC971, THIRD_CLASS }, + { "MusicRoom", 0x0F34DB, SECOND_CLASS }, + { "MusicRoomLobby", 0x0F34DB, SECOND_CLASS }, + { "Titania", 0x8A397, THIRD_CLASS }, + { "BottomOfWell", 0x59FAD, THIRD_CLASS }, + { "Arboretum", 0x4D6AF, FIRST_CLASS }, + { "PromenadeDeck", 0x79C45, SECOND_CLASS }, + { "1stClassRestaurant", 0x896B9, FIRST_CLASS }, + { "CreatorsChamber", 0x2F86D, SECOND_CLASS }, + { "CreatorsChamberOn", 0x2F86D, SECOND_CLASS }, + { "BilgeRoom", 0x3D94B, THIRD_CLASS }, + { "BilgeRoomWith", 0x3D94B, THIRD_CLASS }, + { "Bridge", 0x39FCB, THIRD_CLASS } }; int CRoomFlags::getConditionally() const { @@ -355,13 +355,13 @@ uint CRoomFlags::getSpecialRoomFlags(const CString &roomName) { return 0; } -uint CRoomFlags::getSuccUBusNum(const CString &roomName) const { +PassengerClass CRoomFlags::getSuccUBusClass(const CString &roomName) const { for (int idx = 0; idx < SUCCUBUS_ROOMS_SIZE; ++idx) { if (roomName == SUCCUBUS_ROOMS[idx]._roomName) - return SUCCUBUS_ROOMS[idx]._succubusNum; + return SUCCUBUS_ROOMS[idx]._classNum; } - return 0; + return NO_CLASS; } CString CRoomFlags::getSuccUBusRoomName() const { @@ -472,7 +472,7 @@ bool CRoomFlags::compareLocation(uint flags1, uint flags2) { CRoomFlags f1(flags1); CRoomFlags f2(flags2); - return f1.getElevatorNum() == f2.getElevatorBits() && + return f1.getElevatorNum() == f2.getElevatorNum() && f1.getFloorNum() == f2.getFloorNum() && f1.getRoomNum() == f2.getRoomNum(); } diff --git a/engines/titanic/room_flags.h b/engines/titanic/room_flags.h index 8e86bf707e..e2fb91015a 100644 --- a/engines/titanic/room_flags.h +++ b/engines/titanic/room_flags.h @@ -209,9 +209,9 @@ public: void setRandomLocation(PassengerClass classNum, bool flag); /** - * Gets the succubus number associated with a given room + * Gets the passenger class for a succubus associated with a given room */ - uint getSuccUBusNum(const CString &roomName) const; + PassengerClass getSuccUBusClass(const CString &roomName) const; /** * Gets the succubus room name associated with the current room flags diff --git a/engines/titanic/sound/auto_music_player_base.cpp b/engines/titanic/sound/auto_music_player_base.cpp index 49ae906e91..b000d8f90d 100644 --- a/engines/titanic/sound/auto_music_player_base.cpp +++ b/engines/titanic/sound/auto_music_player_base.cpp @@ -90,7 +90,7 @@ bool CAutoMusicPlayerBase::ChangeMusicMsg(CChangeMusicMsg *msg) { } } - if (_isRepeated && msg->_flags == 2) { + if (!_isRepeated && msg->_flags == 2) { _isRepeated = true; playGlobalSound(_filename, _volumeMode, _initialMute, true, 0); } diff --git a/engines/titanic/sound/season_noises.cpp b/engines/titanic/sound/season_noises.cpp index 14689d5337..5f139e728f 100644 --- a/engines/titanic/sound/season_noises.cpp +++ b/engines/titanic/sound/season_noises.cpp @@ -31,7 +31,7 @@ BEGIN_MESSAGE_MAP(CSeasonNoises, CViewAutoSoundPlayer) ON_MESSAGE(LoadSuccessMsg) END_MESSAGE_MAP() -CSeasonNoises::CSeasonNoises() : CViewAutoSoundPlayer(), _seasonNumber(0), +CSeasonNoises::CSeasonNoises() : CViewAutoSoundPlayer(), _seasonNumber(SEASON_SUMMER), _springName("NULL"), _summerName("NULL"), _autumnName("NULL"), _winterName("NULL") { } @@ -48,7 +48,7 @@ void CSeasonNoises::save(SimpleFile *file, int indent) { void CSeasonNoises::load(SimpleFile *file) { file->readNumber(); - _seasonNumber = file->readNumber(); + _seasonNumber = (Season)file->readNumber(); _springName = file->readString(); _summerName = file->readString(); _autumnName = file->readString(); @@ -58,7 +58,7 @@ void CSeasonNoises::load(SimpleFile *file) { } bool CSeasonNoises::ChangeSeasonMsg(CChangeSeasonMsg *msg) { - _seasonNumber = (_seasonNumber + 1) % 4; + _seasonNumber = (Season)(((int)_seasonNumber + 1) % 4); CActMsg actMsg("Update"); actMsg.execute(this); @@ -67,6 +67,7 @@ bool CSeasonNoises::ChangeSeasonMsg(CChangeSeasonMsg *msg) { bool CSeasonNoises::EnterViewMsg(CEnterViewMsg *msg) { CActMsg actMsg("Update"); + actMsg.execute(this); return true; } @@ -74,18 +75,18 @@ bool CSeasonNoises::ActMsg(CActMsg *msg) { msg->_action = "Update"; switch (_seasonNumber) { - case 0: - _filename = _springName; - break; - case 1: + case SEASON_SUMMER: _filename = _summerName; break; - case 2: + case SEASON_AUTUMN: _filename = _autumnName; break; - case 3: + case SEASON_WINTER: _filename = _winterName; break; + case SEASON_SPRING: + _filename = _springName; + break; default: break; } diff --git a/engines/titanic/sound/season_noises.h b/engines/titanic/sound/season_noises.h index 796628d10d..cab8d5907f 100644 --- a/engines/titanic/sound/season_noises.h +++ b/engines/titanic/sound/season_noises.h @@ -34,7 +34,7 @@ class CSeasonNoises : public CViewAutoSoundPlayer { bool ActMsg(CActMsg *msg); bool LoadSuccessMsg(CLoadSuccessMsg *msg); private: - int _seasonNumber; + Season _seasonNumber; CString _springName; CString _summerName; CString _autumnName; diff --git a/engines/titanic/support/avi_surface.cpp b/engines/titanic/support/avi_surface.cpp index de7b9abe3e..22b3e98c16 100644 --- a/engines/titanic/support/avi_surface.cpp +++ b/engines/titanic/support/avi_surface.cpp @@ -273,12 +273,14 @@ void AVISurface::setupDecompressor() { } void AVISurface::copyMovieFrame(const Graphics::Surface &src, Graphics::ManagedSurface &dest) { - assert(src.w == dest.w && src.h == dest.h); + // WORKAROUND: A bad video in the Promenade has a frame with a width slightly larger + // than the defined width for the movie it's in. Hence the assert below is >= + assert(src.w >= dest.w && src.h == dest.h); if (src.format.bytesPerPixel == 1) { // Paletted 8-bit, so convert to 16-bit and copy over Graphics::Surface *s = src.convertTo(dest.format, _decoder->getPalette()); - dest.blitFrom(*s); + dest.blitFrom(*s, Common::Rect(0, 0, dest.w, dest.h), Common::Point(0, 0)); s->free(); delete s; } else if (src.format.bytesPerPixel == 2) { diff --git a/engines/titanic/support/avi_surface.h b/engines/titanic/support/avi_surface.h index 216d4f8837..4ee6cc6e0b 100644 --- a/engines/titanic/support/avi_surface.h +++ b/engines/titanic/support/avi_surface.h @@ -179,11 +179,6 @@ public: int getFrame() const { return _currentFrame; } /** - * Returns true if the surface is playing in reverse - */ - bool isReversed() const { return _isReversed; } - - /** * Add a movie event */ bool addEvent(int frameNumber, CGameObject *obj); diff --git a/engines/titanic/support/mouse_cursor.cpp b/engines/titanic/support/mouse_cursor.cpp index 6300f65a3b..c6942510cc 100644 --- a/engines/titanic/support/mouse_cursor.cpp +++ b/engines/titanic/support/mouse_cursor.cpp @@ -192,6 +192,14 @@ void CMouseCursor::enableControl() { CScreenManager::_screenManagerPtr->_inputHandler->decLockCount(); } +void CMouseCursor::setBusy() { + setCursor(CURSOR_HOURGLASS); +} + +void CMouseCursor::clearBusy() { + setCursor(CURSOR_ARROW); +} + void CMouseCursor::setPosition(const Point &pt, double duration) { _moveStartPos = g_vm->_events->getMousePos(); _moveDestPos = pt; diff --git a/engines/titanic/support/mouse_cursor.h b/engines/titanic/support/mouse_cursor.h index 1662ce743d..d61e5fe0bc 100644 --- a/engines/titanic/support/mouse_cursor.h +++ b/engines/titanic/support/mouse_cursor.h @@ -144,6 +144,17 @@ public: void enableControl(); /** + * Shows the busy cursor + */ + void setBusy(); + + /** + * Resets the cursor back to normal + */ + void clearBusy(); + + + /** * Move the mouse to a new position */ void setPosition(const Point &pt, double duration); diff --git a/engines/titanic/support/screen_manager.cpp b/engines/titanic/support/screen_manager.cpp index 553486d094..cc9054e688 100644 --- a/engines/titanic/support/screen_manager.cpp +++ b/engines/titanic/support/screen_manager.cpp @@ -73,6 +73,11 @@ int CScreenManager::setFontNumber(int fontNumber) { return oldFontNumber; } +void CScreenManager::preLoad() { + if (_textCursor) + _textCursor->hide(); +} + /*------------------------------------------------------------------------*/ OSScreenManager::OSScreenManager(TitanicEngine *vm): CScreenManager(vm), diff --git a/engines/titanic/support/screen_manager.h b/engines/titanic/support/screen_manager.h index a7c929fb5f..7140001bd4 100644 --- a/engines/titanic/support/screen_manager.h +++ b/engines/titanic/support/screen_manager.h @@ -228,6 +228,11 @@ public: * Set the current font number */ int setFontNumber(int fontNumber); + + /** + * Called when a game is about to be loaded + */ + void preLoad(); }; class OSScreenManager: CScreenManager { diff --git a/engines/titanic/support/strings.h b/engines/titanic/support/strings.h index e82f882028..97928dc6e8 100644 --- a/engines/titanic/support/strings.h +++ b/engines/titanic/support/strings.h @@ -162,6 +162,10 @@ enum StringId { CLASS_2, CLASS_3, CLASS_NONE, + YOUR_ASSIGNED_ROOM, + PREVIOUSLY_ASSIGNED_ROOM, + SAVED_CHEVRON, + CURRENT_LOCATION, // German version only DE_SUMMER, diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp index 8b1cd8cc9a..446a32eaae 100644 --- a/engines/titanic/true_talk/true_talk_manager.cpp +++ b/engines/titanic/true_talk/true_talk_manager.cpp @@ -538,9 +538,10 @@ void CTrueTalkManager::playSpeech(TTtalker *talker, TTroomScript *roomScript, CV if (!milli) continue; +#ifdef SPATIAL_SOUND if (idx == 0) g_vm->_events->sleep(milli); -#ifdef SPATIAL_SOUND + // TODO: Figure out if these below are needed. It kinda looks like they were // simply playing the same speech at different spatial co-ordinates. And since // we don't support spatial processing in ScummVM yet, they're being left disabled diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp index ef3cc2d84f..24779b9793 100644 --- a/engines/wintermute/base/base_game.cpp +++ b/engines/wintermute/base/base_game.cpp @@ -361,6 +361,12 @@ bool BaseGame::initConfManSettings() { _debugShowFPS = false; } + if (ConfMan.hasKey("bilinear_filtering")) { + _bilinearFiltering = ConfMan.getBool("bilinear_filtering"); + } else { + _bilinearFiltering = false; + } + if (ConfMan.hasKey("disable_smartcache")) { _smartCache = ConfMan.getBool("disable_smartcache"); } else { diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h index 6aacc1feab..46484cc5ca 100644 --- a/engines/wintermute/base/base_game.h +++ b/engines/wintermute/base/base_game.h @@ -101,7 +101,7 @@ public: virtual bool displayDebugInfo(); void setShowFPS(bool enabled) { _debugShowFPS = enabled; } - + bool getBilinearFiltering() { return _bilinearFiltering; } bool getSuspendedRendering() const { return _suspendedRendering; } TTextEncoding _textEncoding; @@ -279,6 +279,7 @@ protected: VideoTheoraPlayer *_theoraPlayer; private: bool _debugShowFPS; + bool _bilinearFiltering; void *_debugLogFile; void DEBUG_DebugDisable(); void DEBUG_DebugEnable(const char *filename = nullptr); diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp index d0c51616f4..0684b3f591 100644 --- a/engines/wintermute/base/file/base_disk_file.cpp +++ b/engines/wintermute/base/file/base_disk_file.cpp @@ -29,6 +29,7 @@ #include "engines/wintermute/dcgf.h" #include "engines/wintermute/base/file/base_disk_file.h" #include "engines/wintermute/base/base_file_manager.h" +#include "engines/wintermute/utils/path_util.h" #include "common/stream.h" #include "common/memstream.h" #include "common/file.h" @@ -37,6 +38,7 @@ #include "common/tokenizer.h" #include "common/config-manager.h" + namespace Wintermute { void correctSlashes(Common::String &fileName) { @@ -150,7 +152,7 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) { } // File wasn't found in SearchMan, try to parse the path as a relative path. if (!file) { - Common::FSNode searchNode = getNodeForRelativePath(filename); + Common::FSNode searchNode = getNodeForRelativePath(PathUtil::normalizeFileName(filename)); if (searchNode.exists() && !searchNode.isDirectory() && searchNode.isReadable()) { file = searchNode.createReadStream(); } diff --git a/engines/wintermute/base/gfx/osystem/render_ticket.cpp b/engines/wintermute/base/gfx/osystem/render_ticket.cpp index afe884300a..acc9530684 100644 --- a/engines/wintermute/base/gfx/osystem/render_ticket.cpp +++ b/engines/wintermute/base/gfx/osystem/render_ticket.cpp @@ -27,6 +27,7 @@ */ +#include "engines/wintermute/base/base_game.h" #include "engines/wintermute/base/gfx/osystem/render_ticket.h" #include "engines/wintermute/base/gfx/osystem/base_surface_osystem.h" #include "graphics/transform_tools.h" @@ -59,7 +60,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s // TransformTools.) if (_transform._angle != Graphics::kDefaultAngle) { Graphics::TransparentSurface src(*_surface, false); - Graphics::Surface *temp = src.rotoscale(transform); + Graphics::Surface *temp; + if (owner->_gameRef->getBilinearFiltering()) { + temp = src.rotoscaleT<Graphics::FILTER_BILINEAR>(transform); + } else { + temp = src.rotoscaleT<Graphics::FILTER_NEAREST>(transform); + } _surface->free(); delete _surface; _surface = temp; @@ -67,7 +73,12 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s dstRect->height() != srcRect->height()) && _transform._numTimesX * _transform._numTimesY == 1) { Graphics::TransparentSurface src(*_surface, false); - Graphics::Surface *temp = src.scale(dstRect->width(), dstRect->height()); + Graphics::Surface *temp; + if (owner->_gameRef->getBilinearFiltering()) { + temp = src.scaleT<Graphics::FILTER_BILINEAR>(dstRect->width(), dstRect->height()); + } else { + temp = src.scaleT<Graphics::FILTER_NEAREST>(dstRect->width(), dstRect->height()); + } _surface->free(); delete _surface; _surface = temp; diff --git a/engines/wintermute/dctypes.h b/engines/wintermute/dctypes.h index 90340f437d..571ce21931 100644 --- a/engines/wintermute/dctypes.h +++ b/engines/wintermute/dctypes.h @@ -37,9 +37,6 @@ namespace Wintermute { -//typedef std::string AnsiString; -//typedef std::string Utf8String; -//typedef std::wstring WideString; typedef Common::String AnsiString; typedef Common::String Utf8String; typedef Common::U32String WideString; diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp index 4e8eab505f..9ccb75d62f 100644 --- a/engines/wintermute/detection.cpp +++ b/engines/wintermute/detection.cpp @@ -59,8 +59,19 @@ static const ADExtraGuiOptionsMap gameGuiOptions[] = { _s("Show the current number of frames per second in the upper left corner"), "show_fps", false + }, + }, + + { + GAMEOPTION_BILINEAR, + { + _s("Sprite bilinear filtering (SLOW)"), + _s("Apply bilinear filtering to individual sprites"), + "bilinear_filtering", + false } }, + AD_EXTRA_GUI_OPTIONS_TERMINATOR }; @@ -76,7 +87,7 @@ class WintermuteMetaEngine : public AdvancedMetaEngine { public: WintermuteMetaEngine() : AdvancedMetaEngine(Wintermute::gameDescriptions, sizeof(WMEGameDescription), Wintermute::wintermuteGames, gameGuiOptions) { _singleId = "wintermute"; - _guiOptions = GUIO2(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS); + _guiOptions = GUIO3(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS, GAMEOPTION_BILINEAR); _maxScanDepth = 2; _directoryGlobs = directoryGlobs; } diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h index 68985d8d0c..5b87dd439c 100644 --- a/engines/wintermute/detection_tables.h +++ b/engines/wintermute/detection_tables.h @@ -23,6 +23,7 @@ namespace Wintermute { #define GAMEOPTION_SHOW_FPS GUIO_GAMEOPTIONS1 +#define GAMEOPTION_BILINEAR GUIO_GAMEOPTIONS2 static const PlainGameDescriptor wintermuteGames[] = { {"5ld", "Five Lethal Demons"}, @@ -42,6 +43,8 @@ static const PlainGameDescriptor wintermuteGames[] = { {"conspiracao", "Conspiracao Dumont"}, {"corrosion", "Corrosion: Cold Winter Waiting"}, {"deadcity", "Dead City"}, + {"dfafadventure", "DFAF Adventure"}, + {"dreamcat", "Dreamcat"}, {"dreaming", "Des Reves Elastiques Avec Mille Insectes Nommes Georges"}, {"dirtysplit", "Dirty Split"}, {"dreamscape", "Dreamscape"}, @@ -60,6 +63,7 @@ static const PlainGameDescriptor wintermuteGames[] = { {"mirage", "Mirage"}, {"nighttrain", "Night Train"}, {"oknytt", "Oknytt"}, + {"openquest", "Open Quest"}, {"paintaria", "Paintaria"}, {"pigeons", "Pigeons in the Park"}, {"projectdoom", "Project: Doom"}, @@ -237,6 +241,9 @@ static const WMEGameDescription gameDescriptions[] = { WME_WINENTRY("deadcity", "", WME_ENTRY2s("russian.dcp", "a0ae71e9e1185596fffb07ad2c951eb9", 653317, "data.dcp", "7ebfd50d1a22370ed7b079bcaa631d62", 9070205), Common::RU_RUS, ADGF_UNSTABLE, LATEST_VERSION), + // DFAF Adventure + WME_WINENTRY("dfafadventure", "", + WME_ENTRY1s("data.dcp","5704ebef961176f647742aa66bd09352", 10083417), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION), // Dirty Split (Czech) WME_WINENTRY("dirtysplit", "", WME_ENTRY2s("czech.dcp", "08a71446467cf8f9444cfea446b46ad6", 127697934, @@ -262,6 +269,9 @@ static const WMEGameDescription gameDescriptions[] = { // Des Reves Elastiques Avec Mille Insectes Nommes Georges WME_WINENTRY("dreaming", "", WME_ENTRY1s("data.dcp", "4af26d97ea063fc1277ce30ae431de90", 8804073), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION), + // Dreamcat + WME_WINENTRY("dreamcat", "", + WME_ENTRY1s("data.dcp","189bd4eef29034f4ff4ed30120eaac4e", 7758040), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION), // Dreamscape WME_WINENTRY("dreamscape", "", WME_ENTRY1s("data.dcp", "7a5752ed4446c862be9f02d7932acf54", 17034377), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION), @@ -366,6 +376,9 @@ static const WMEGameDescription gameDescriptions[] = { WME_WINENTRY("oknytt", "Version 1.13", WME_ENTRY2s("spanish.dcp", "10c46152cb29581671f3b6b7c229c957", 319406572, "d_sounds.dcp", "7d04dff8ca11174486bd4b7a80fdcabb", 154943401), Common::ES_ESP, ADGF_UNSTABLE, LATEST_VERSION), + // Open Quest + WME_WINENTRY("openquest", "", + WME_ENTRY1s("data.dcp", "16893e3fc15a211a49654ae66f684f28", 82281736), Common::EN_ANY, ADGF_UNSTABLE | ADGF_DEMO, LATEST_VERSION), // Night Train Demo WME_WINENTRY("nighttrain", "", WME_ENTRY1s("data.dcp", "5a027ef84b083a730c9a4c85ec1d3a32", 131760816), Common::EN_ANY, ADGF_UNSTABLE | ADGF_DEMO, LATEST_VERSION), diff --git a/engines/wintermute/utils/path_util.cpp b/engines/wintermute/utils/path_util.cpp index 71311713af..8518f8968f 100644 --- a/engines/wintermute/utils/path_util.cpp +++ b/engines/wintermute/utils/path_util.cpp @@ -32,8 +32,8 @@ namespace Wintermute { ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::unifySeparators(const AnsiString &path) { - AnsiString newPath = path; +Common::String PathUtil::unifySeparators(const Common::String &path) { + Common::String newPath = path; for (uint32 i = 0; i < newPath.size(); i++) { if (newPath[i] == '\\') { @@ -45,16 +45,16 @@ AnsiString PathUtil::unifySeparators(const AnsiString &path) { } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::normalizeFileName(const AnsiString &path) { - AnsiString newPath = unifySeparators(path); +Common::String PathUtil::normalizeFileName(const Common::String &path) { + Common::String newPath = unifySeparators(path); newPath.toLowercase(); return newPath; } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::combine(const AnsiString &path1, const AnsiString &path2) { - AnsiString newPath1 = unifySeparators(path1); - AnsiString newPath2 = unifySeparators(path2); +Common::String PathUtil::combine(const Common::String &path1, const Common::String &path2) { + Common::String newPath1 = unifySeparators(path1); + Common::String newPath2 = unifySeparators(path2); if (!newPath1.hasSuffix("/") && !newPath2.hasPrefix("/")) { newPath1 += "/"; @@ -63,29 +63,37 @@ AnsiString PathUtil::combine(const AnsiString &path1, const AnsiString &path2) { return newPath1 + newPath2; } +bool PathUtil::hasTrailingSlash(const Common::String &path) { + return (path.size() > 0 && path[path.size() - 1 ] == '/'); +} + ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getDirectoryName(const AnsiString &path) { - AnsiString newPath = unifySeparators(path); +Common::String PathUtil::getDirectoryName(const Common::String &path) { + Common::String newPath = unifySeparators(path); Common::String filename = getFileName(path); - return Common::String(path.c_str(), path.size() - filename.size()); + if (hasTrailingSlash(newPath)) { + return path; + } else { + return Common::String(path.c_str(), path.size() - filename.size()); + } } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getFileName(const AnsiString &path) { - AnsiString newPath = unifySeparators(path); +Common::String PathUtil::getFileName(const Common::String &path) { + Common::String newPath = unifySeparators(path); Common::String lastPart = Common::lastPathComponent(newPath, '/'); - if (lastPart[lastPart.size() - 1 ] != '/') { - return lastPart; + if (hasTrailingSlash(newPath)) { + return Common::String(""); } else { - return path; + return lastPart; } } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getFileNameWithoutExtension(const AnsiString &path) { - AnsiString fileName = getFileName(path); +Common::String PathUtil::getFileNameWithoutExtension(const Common::String &path) { + Common::String fileName = getFileName(path); // TODO: Prettify this. - AnsiString extension = Common::lastPathComponent(fileName, '.'); + Common::String extension = Common::lastPathComponent(fileName, '.'); for (uint32 i = 0; i < extension.size() + 1; i++) { fileName.deleteLastChar(); } @@ -93,8 +101,8 @@ AnsiString PathUtil::getFileNameWithoutExtension(const AnsiString &path) { } ////////////////////////////////////////////////////////////////////////// -AnsiString PathUtil::getExtension(const AnsiString &path) { - AnsiString fileName = getFileName(path); +Common::String PathUtil::getExtension(const Common::String &path) { + Common::String fileName = getFileName(path); return Common::lastPathComponent(path, '.'); } diff --git a/engines/wintermute/utils/path_util.h b/engines/wintermute/utils/path_util.h index 264dc5d241..8050cdfae2 100644 --- a/engines/wintermute/utils/path_util.h +++ b/engines/wintermute/utils/path_util.h @@ -35,13 +35,14 @@ namespace Wintermute { class PathUtil { public: - static AnsiString unifySeparators(const AnsiString &path); - static AnsiString normalizeFileName(const AnsiString &path); - static AnsiString combine(const AnsiString &path1, const AnsiString &path2); - static AnsiString getDirectoryName(const AnsiString &path); - static AnsiString getFileName(const AnsiString &path); - static AnsiString getFileNameWithoutExtension(const AnsiString &path); - static AnsiString getExtension(const AnsiString &path); + static Common::String unifySeparators(const Common::String &path); + static Common::String normalizeFileName(const Common::String &path); + static Common::String combine(const Common::String &path1, const Common::String &path2); + static Common::String getDirectoryName(const Common::String &path); + static Common::String getFileName(const Common::String &path); + static Common::String getFileNameWithoutExtension(const Common::String &path); + static Common::String getExtension(const Common::String &path); + static bool hasTrailingSlash(const Common::String &path); }; } // End of namespace Wintermute diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp index 2dc1fc8e2c..06354457f2 100644 --- a/graphics/macgui/mactext.cpp +++ b/graphics/macgui/mactext.cpp @@ -30,6 +30,7 @@ MacText::MacText(Common::String s, Graphics::Font *font, int fgcolor, int bgcolo _fgcolor = fgcolor; _bgcolor = bgcolor; _maxWidth = maxWidth; + _surface = nullptr; _interLinear = 0; // 0 pixels between the lines by default @@ -69,57 +70,89 @@ void MacText::splitString(Common::String &str) { tmp += *s; } - if (_text.size()) + if (tmp.size()) _maxWidth = MIN(_font->wordWrapText(tmp, _maxWidth, _text), _maxWidth); } void MacText::reallocSurface() { - int lineHeight = _font->getFontHeight() + _interLinear; - int requiredHeight = (_text.size() + (_text.size() * 10 + 9) / 10) * lineHeight; + int lineH = _font->getFontHeight() + _interLinear; + // round to closest 10 + int requiredH = (_text.size() + (_text.size() * 10 + 9) / 10) * lineH; + int surfW = _maxWidth == -1 ? _textMaxWidth : _maxWidth; + + if (!_surface) { + _surface = new ManagedSurface(surfW, requiredH); + + return; + } + + if (_surface->h < requiredH) { + // realloc surface and copy old content + ManagedSurface *n = new ManagedSurface(surfW, requiredH); + n->blitFrom(*_surface, Common::Point(0, 0)); - if (_surface.w < requiredHeight) { - // realloc surface - _surface.create(_maxWidth == -1 ? _textMaxWidth : _maxWidth, requiredHeight); + delete _surface; + _surface = n; } } void MacText::render() { if (_fullRefresh) { - reallocSurface(); + render(0, _text.size()); - _surface.clear(_bgcolor); + _fullRefresh = false; + } +} - int y = 0; +void MacText::render(int from, int to) { + reallocSurface(); - for (uint i = 0; i < _text.size(); i++) { - _font->drawString(&_surface, _text[i], 0, y, _textMaxWidth, _fgcolor); + from = MAX<int>(0, from); + to = MIN<int>(to, _text.size()); - y += _font->getFontHeight() + _interLinear; - } + int lineH = _font->getFontHeight() + _interLinear; + int y = from * lineH; - _fullRefresh = false; + // Clear the screen + _surface->fillRect(Common::Rect(0, y, _surface->w, to * lineH), _bgcolor); + + for (uint i = from; i < to; i++) { + _font->drawString(_surface, _text[i], 0, y, _textMaxWidth, _fgcolor); + + y += _font->getFontHeight() + _interLinear; } + } void MacText::draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff) { render(); - if (x + w < _surface.w || y + h < _surface.h) { + if (x + w < _surface->w || y + h < _surface->h) { g->fillRect(Common::Rect(x, y, x + w, y + w), _bgcolor); } - g->blitFrom(_surface, Common::Rect(MIN<int>(_surface.w, x), MIN<int>(_surface.h, y), - MIN<int>(_surface.w, x + w), MIN<int>(_surface.w, y + w)), Common::Point(xoff, yoff)); + g->blitFrom(*_surface, Common::Rect(MIN<int>(_surface->w, x), MIN<int>(_surface->h, y), + MIN<int>(_surface->w, x + w), MIN<int>(_surface->w, y + w)), + Common::Point(xoff, yoff)); } void MacText::appendText(Common::String str) { - //int oldLen = _text.size(); + int oldLen = _text.size(); splitString(str); - reallocSurface(); + render(oldLen + 1, _text.size()); +} + +void MacText::replaceLastLine(Common::String str) { + int oldLen = MAX<int>(0, _text.size() - 1); + + if (_text.size()) + _text.pop_back(); + + splitString(str); - //render(oldLen + 1, _text.size()); + render(oldLen, _text.size()); } } // End of namespace Graphics diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h index 65e93ca5c3..e035eb123f 100644 --- a/graphics/macgui/mactext.h +++ b/graphics/macgui/mactext.h @@ -36,11 +36,12 @@ public: void draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff); void appendText(Common::String str); - + void replaceLastLine(Common::String str); private: void splitString(Common::String &s); void render(); + void render(int from, int to); void calcMaxWidth(); void reallocSurface(); @@ -56,7 +57,7 @@ private: int _textMaxWidth; - Graphics::ManagedSurface _surface; + Graphics::ManagedSurface *_surface; bool _fullRefresh; }; diff --git a/graphics/transparent_surface.cpp b/graphics/transparent_surface.cpp index 7ef7d00286..48e6da6c79 100644 --- a/graphics/transparent_surface.cpp +++ b/graphics/transparent_surface.cpp @@ -37,8 +37,6 @@ #include "graphics/transparent_surface.h" #include "graphics/transform_tools.h" -//#define ENABLE_BILINEAR - namespace Graphics { static const int kBModShift = 0;//img->format.bShift; @@ -676,8 +674,10 @@ systems. +struct tColorRGBA { byte r; byte g; byte b; byte a; }; -TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transform) const { +template <TFilteringMode filteringMode> +TransparentSurface *TransparentSurface::rotoscaleT(const TransformStruct &transform) const { assert(transform._angle != 0); // This would not be ideal; rotoscale() should never be called in conditional branches where angle = 0 anyway. @@ -704,7 +704,6 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo float invCos = cos(invAngle * M_PI / 180.0); float invSin = sin(invAngle * M_PI / 180.0); - struct tColorRGBA { byte r; byte g; byte b; byte a; }; int icosx = (int)(invCos * (65536.0f * kDefaultZoomX / transform._zoom.x)); int isinx = (int)(invSin * (65536.0f * kDefaultZoomX / transform._zoom.x)); int icosy = (int)(invCos * (65536.0f * kDefaultZoomY / transform._zoom.y)); @@ -739,50 +738,50 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo dy = sh - dy; } -#ifdef ENABLE_BILINEAR - if ((dx > -1) && (dy > -1) && (dx < sw) && (dy < sh)) { - const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy); - tColorRGBA c00, c01, c10, c11, cswap; - c00 = *sp; - sp += 1; - c01 = *sp; - sp += (this->pitch / 4); - c11 = *sp; - sp -= 1; - c10 = *sp; - if (flipx) { - cswap = c00; c00=c01; c01=cswap; - cswap = c10; c10=c11; c11=cswap; + if (filteringMode == FILTER_BILINEAR) { + if ((dx > -1) && (dy > -1) && (dx < sw) && (dy < sh)) { + const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy); + tColorRGBA c00, c01, c10, c11, cswap; + c00 = *sp; + sp += 1; + c01 = *sp; + sp += (this->pitch / 4); + c11 = *sp; + sp -= 1; + c10 = *sp; + if (flipx) { + cswap = c00; c00=c01; c01=cswap; + cswap = c10; c10=c11; c11=cswap; + } + if (flipy) { + cswap = c00; c00=c10; c10=cswap; + cswap = c01; c01=c11; c11=cswap; + } + /* + * Interpolate colors + */ + int ex = (sdx & 0xffff); + int ey = (sdy & 0xffff); + int t1, t2; + t1 = ((((c01.r - c00.r) * ex) >> 16) + c00.r) & 0xff; + t2 = ((((c11.r - c10.r) * ex) >> 16) + c10.r) & 0xff; + pc->r = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01.g - c00.g) * ex) >> 16) + c00.g) & 0xff; + t2 = ((((c11.g - c10.g) * ex) >> 16) + c10.g) & 0xff; + pc->g = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01.b - c00.b) * ex) >> 16) + c00.b) & 0xff; + t2 = ((((c11.b - c10.b) * ex) >> 16) + c10.b) & 0xff; + pc->b = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01.a - c00.a) * ex) >> 16) + c00.a) & 0xff; + t2 = ((((c11.a - c10.a) * ex) >> 16) + c10.a) & 0xff; + pc->a = (((t2 - t1) * ey) >> 16) + t1; } - if (flipy) { - cswap = c00; c00=c10; c10=cswap; - cswap = c01; c01=c11; c11=cswap; + } else { + if ((dx >= 0) && (dy >= 0) && (dx < srcW) && (dy < srcH)) { + const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy); + *pc = *sp; } - /* - * Interpolate colors - */ - int ex = (sdx & 0xffff); - int ey = (sdy & 0xffff); - int t1, t2; - t1 = ((((c01.r - c00.r) * ex) >> 16) + c00.r) & 0xff; - t2 = ((((c11.r - c10.r) * ex) >> 16) + c10.r) & 0xff; - pc->r = (((t2 - t1) * ey) >> 16) + t1; - t1 = ((((c01.g - c00.g) * ex) >> 16) + c00.g) & 0xff; - t2 = ((((c11.g - c10.g) * ex) >> 16) + c10.g) & 0xff; - pc->g = (((t2 - t1) * ey) >> 16) + t1; - t1 = ((((c01.b - c00.b) * ex) >> 16) + c00.b) & 0xff; - t2 = ((((c11.b - c10.b) * ex) >> 16) + c10.b) & 0xff; - pc->b = (((t2 - t1) * ey) >> 16) + t1; - t1 = ((((c01.a - c00.a) * ex) >> 16) + c00.a) & 0xff; - t2 = ((((c11.a - c10.a) * ex) >> 16) + c10.a) & 0xff; - pc->a = (((t2 - t1) * ey) >> 16) + t1; } -#else - if ((dx >= 0) && (dy >= 0) && (dx < srcW) && (dy < srcH)) { - const tColorRGBA *sp = (const tColorRGBA *)getBasePtr(dx, dy); - *pc = *sp; - } -#endif sdx += icosx; sdy += isiny; pc++; @@ -791,7 +790,8 @@ TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transfo return target; } -TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight) const { +template <TFilteringMode filteringMode> +TransparentSurface *TransparentSurface::scaleT(uint16 newWidth, uint16 newHeight) const { Common::Rect srcRect(0, 0, (int16)w, (int16)h); Common::Rect dstRect(0, 0, (int16)newWidth, (int16)newHeight); @@ -807,173 +807,169 @@ TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight) target->create((uint16)dstW, (uint16)dstH, this->format); -#ifdef ENABLE_BILINEAR + if (filteringMode == FILTER_BILINEAR) { - // NB: The actual order of these bytes may not be correct, but - // since all values are treated equal, that does not matter. - struct tColorRGBA { byte r; byte g; byte b; byte a; }; + bool flipx = false, flipy = false; // TODO: See mirroring comment in RenderTicket ctor - bool flipx = false, flipy = false; // TODO: See mirroring comment in RenderTicket ctor + int *sax = new int[dstW + 1]; + int *say = new int[dstH + 1]; + assert(sax && say); + + /* + * Precalculate row increments + */ + int spixelw = (srcW - 1); + int spixelh = (srcH - 1); + int sx = (int) (65536.0f * (float) spixelw / (float) (dstW - 1)); + int sy = (int) (65536.0f * (float) spixelh / (float) (dstH - 1)); + + /* Maximum scaled source size */ + int ssx = (srcW << 16) - 1; + int ssy = (srcH << 16) - 1; + + /* Precalculate horizontal row increments */ + int csx = 0; + int *csax = sax; + for (int x = 0; x <= dstW; x++) { + *csax = csx; + csax++; + csx += sx; - int *sax = new int[dstW + 1]; - int *say = new int[dstH + 1]; - assert(sax && say); - - /* - * Precalculate row increments - */ - int spixelw = (srcW - 1); - int spixelh = (srcH - 1); - int sx = (int) (65536.0f * (float) spixelw / (float) (dstW - 1)); - int sy = (int) (65536.0f * (float) spixelh / (float) (dstH - 1)); - - /* Maximum scaled source size */ - int ssx = (srcW << 16) - 1; - int ssy = (srcH << 16) - 1; - - /* Precalculate horizontal row increments */ - int csx = 0; - int *csax = sax; - for (int x = 0; x <= dstW; x++) { - *csax = csx; - csax++; - csx += sx; - - /* Guard from overflows */ - if (csx > ssx) { - csx = ssx; + /* Guard from overflows */ + if (csx > ssx) { + csx = ssx; + } } - } - /* Precalculate vertical row increments */ - int csy = 0; - int *csay = say; - for (int y = 0; y <= dstH; y++) { - *csay = csy; - csay++; - csy += sy; - - /* Guard from overflows */ - if (csy > ssy) { - csy = ssy; + /* Precalculate vertical row increments */ + int csy = 0; + int *csay = say; + for (int y = 0; y <= dstH; y++) { + *csay = csy; + csay++; + csy += sy; + + /* Guard from overflows */ + if (csy > ssy) { + csy = ssy; + } } - } - const tColorRGBA *sp = (const tColorRGBA *) getBasePtr(0, 0); - tColorRGBA *dp = (tColorRGBA *) target->getBasePtr(0, 0); - int spixelgap = srcW; + const tColorRGBA *sp = (const tColorRGBA *) getBasePtr(0, 0); + tColorRGBA *dp = (tColorRGBA *) target->getBasePtr(0, 0); + int spixelgap = srcW; - if (flipx) { - sp += spixelw; - } - if (flipy) { - sp += spixelgap * spixelh; - } + if (flipx) { + sp += spixelw; + } + if (flipy) { + sp += spixelgap * spixelh; + } - csay = say; - for (int y = 0; y < dstH; y++) { - const tColorRGBA *csp = sp; - csax = sax; - for (int x = 0; x < dstW; x++) { - /* - * Setup color source pointers - */ - int ex = (*csax & 0xffff); - int ey = (*csay & 0xffff); - int cx = (*csax >> 16); - int cy = (*csay >> 16); - - const tColorRGBA *c00, *c01, *c10, *c11; - c00 = sp; - c01 = sp; - c10 = sp; - if (cy < spixelh) { - if (flipy) { - c10 -= spixelgap; - } else { - c10 += spixelgap; + csay = say; + for (int y = 0; y < dstH; y++) { + const tColorRGBA *csp = sp; + csax = sax; + for (int x = 0; x < dstW; x++) { + /* + * Setup color source pointers + */ + int ex = (*csax & 0xffff); + int ey = (*csay & 0xffff); + int cx = (*csax >> 16); + int cy = (*csay >> 16); + + const tColorRGBA *c00, *c01, *c10, *c11; + c00 = sp; + c01 = sp; + c10 = sp; + if (cy < spixelh) { + if (flipy) { + c10 -= spixelgap; + } else { + c10 += spixelgap; + } } - } - c11 = c10; - if (cx < spixelw) { + c11 = c10; + if (cx < spixelw) { + if (flipx) { + c01--; + c11--; + } else { + c01++; + c11++; + } + } + + /* + * Draw and interpolate colors + */ + int t1, t2; + t1 = ((((c01->r - c00->r) * ex) >> 16) + c00->r) & 0xff; + t2 = ((((c11->r - c10->r) * ex) >> 16) + c10->r) & 0xff; + dp->r = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01->g - c00->g) * ex) >> 16) + c00->g) & 0xff; + t2 = ((((c11->g - c10->g) * ex) >> 16) + c10->g) & 0xff; + dp->g = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01->b - c00->b) * ex) >> 16) + c00->b) & 0xff; + t2 = ((((c11->b - c10->b) * ex) >> 16) + c10->b) & 0xff; + dp->b = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01->a - c00->a) * ex) >> 16) + c00->a) & 0xff; + t2 = ((((c11->a - c10->a) * ex) >> 16) + c10->a) & 0xff; + dp->a = (((t2 - t1) * ey) >> 16) + t1; + + /* + * Advance source pointer x + */ + int *salastx = csax; + csax++; + int sstepx = (*csax >> 16) - (*salastx >> 16); if (flipx) { - c01--; - c11--; + sp -= sstepx; } else { - c01++; - c11++; + sp += sstepx; } - } - - /* - * Draw and interpolate colors - */ - int t1, t2; - t1 = ((((c01->r - c00->r) * ex) >> 16) + c00->r) & 0xff; - t2 = ((((c11->r - c10->r) * ex) >> 16) + c10->r) & 0xff; - dp->r = (((t2 - t1) * ey) >> 16) + t1; - t1 = ((((c01->g - c00->g) * ex) >> 16) + c00->g) & 0xff; - t2 = ((((c11->g - c10->g) * ex) >> 16) + c10->g) & 0xff; - dp->g = (((t2 - t1) * ey) >> 16) + t1; - t1 = ((((c01->b - c00->b) * ex) >> 16) + c00->b) & 0xff; - t2 = ((((c11->b - c10->b) * ex) >> 16) + c10->b) & 0xff; - dp->b = (((t2 - t1) * ey) >> 16) + t1; - t1 = ((((c01->a - c00->a) * ex) >> 16) + c00->a) & 0xff; - t2 = ((((c11->a - c10->a) * ex) >> 16) + c10->a) & 0xff; - dp->a = (((t2 - t1) * ey) >> 16) + t1; + /* + * Advance destination pointer x + */ + dp++; + } /* - * Advance source pointer x + * Advance source pointer y */ - int *salastx = csax; - csax++; - int sstepx = (*csax >> 16) - (*salastx >> 16); - if (flipx) { - sp -= sstepx; + int *salasty = csay; + csay++; + int sstepy = (*csay >> 16) - (*salasty >> 16); + sstepy *= spixelgap; + if (flipy) { + sp = csp - sstepy; } else { - sp += sstepx; + sp = csp + sstepy; } - - /* - * Advance destination pointer x - */ - dp++; - } - /* - * Advance source pointer y - */ - int *salasty = csay; - csay++; - int sstepy = (*csay >> 16) - (*salasty >> 16); - sstepy *= spixelgap; - if (flipy) { - sp = csp - sstepy; - } else { - sp = csp + sstepy; } - } - delete[] sax; - delete[] say; + delete[] sax; + delete[] say; -#else - - int *scaleCacheX = new int[dstW]; - for (int x = 0; x < dstW; x++) { - scaleCacheX[x] = (x * srcW) / dstW; - } + } else { - for (int y = 0; y < dstH; y++) { - uint32 *destP = (uint32 *)target->getBasePtr(0, y); - const uint32 *srcP = (const uint32 *)getBasePtr(0, (y * srcH) / dstH); + int *scaleCacheX = new int[dstW]; for (int x = 0; x < dstW; x++) { - *destP++ = srcP[scaleCacheX[x]]; + scaleCacheX[x] = (x * srcW) / dstW; } - } - delete[] scaleCacheX; -#endif + for (int y = 0; y < dstH; y++) { + uint32 *destP = (uint32 *)target->getBasePtr(0, y); + const uint32 *srcP = (const uint32 *)getBasePtr(0, (y * srcH) / dstH); + for (int x = 0; x < dstW; x++) { + *destP++ = srcP[scaleCacheX[x]]; + } + } + delete[] scaleCacheX; + + } return target; @@ -1057,4 +1053,18 @@ TransparentSurface *TransparentSurface::convertTo(const PixelFormat &dstFormat, return surface; } + +template TransparentSurface *TransparentSurface::rotoscaleT<FILTER_NEAREST>(const TransformStruct &transform) const; +template TransparentSurface *TransparentSurface::rotoscaleT<FILTER_BILINEAR>(const TransformStruct &transform) const; +template TransparentSurface *TransparentSurface::scaleT<FILTER_NEAREST>(uint16 newWidth, uint16 newHeight) const; +template TransparentSurface *TransparentSurface::scaleT<FILTER_BILINEAR>(uint16 newWidth, uint16 newHeight) const; + +TransparentSurface *TransparentSurface::rotoscale(const TransformStruct &transform) const { + return rotoscaleT<FILTER_BILINEAR>(transform); +} + +TransparentSurface *TransparentSurface::scale(uint16 newWidth, uint16 newHeight) const { + return scaleT<FILTER_NEAREST>(newWidth, newHeight); +} + } // End of namespace Graphics diff --git a/graphics/transparent_surface.h b/graphics/transparent_surface.h index 8654183548..6fcdac1735 100644 --- a/graphics/transparent_surface.h +++ b/graphics/transparent_surface.h @@ -68,6 +68,11 @@ enum AlphaType { ALPHA_FULL = 2 }; +enum TFilteringMode { + FILTER_NEAREST = 0, + FILTER_BILINEAR = 1 +}; + /** * A transparent graphics surface, which implements alpha blitting. */ @@ -141,8 +146,10 @@ struct TransparentSurface : public Graphics::Surface { * @param newHeight the resulting height. * @see TransformStruct */ - TransparentSurface *scale(uint16 newWidth, uint16 newHeight) const; + template <TFilteringMode filteringMode> + TransparentSurface *scaleT(uint16 newWidth, uint16 newHeight) const; + TransparentSurface *scale(uint16 newWidth, uint16 newHeight) const; /** * @brief Rotoscale function; this returns a transformed version of this surface after rotation and * scaling. Please do not use this if angle == 0, use plain old scaling function. @@ -150,6 +157,9 @@ struct TransparentSurface : public Graphics::Surface { * @param transform a TransformStruct wrapping the required info. @see TransformStruct * */ + template <TFilteringMode filteringMode> + TransparentSurface *rotoscaleT(const TransformStruct &transform) const; + TransparentSurface *rotoscale(const TransformStruct &transform) const; TransparentSurface *convertTo(const PixelFormat &dstFormat, const byte *palette = 0) const; diff --git a/gui/about.cpp b/gui/about.cpp index 211542adb3..bde5db310a 100644 --- a/gui/about.cpp +++ b/gui/about.cpp @@ -57,7 +57,7 @@ enum { static const char *copyright_text[] = { "", -"C0""Copyright (C) 2001-2016 The ScummVM Team", +"C0""Copyright (C) 2001-2017 The ScummVM Team", "C0""http://www.scummvm.org", "", "C0""ScummVM is the legal property of its developers, whose names are too numerous to list here. Please refer to the COPYRIGHT file distributed with this binary.", diff --git a/gui/themes/translations.dat b/gui/themes/translations.dat Binary files differindex ea9a61e6e5..2121155363 100644 --- a/gui/themes/translations.dat +++ b/gui/themes/translations.dat diff --git a/image/codecs/indeo/indeo.cpp b/image/codecs/indeo/indeo.cpp index a20a3ec113..65c0647083 100644 --- a/image/codecs/indeo/indeo.cpp +++ b/image/codecs/indeo/indeo.cpp @@ -21,12 +21,7 @@ */ /* Common structures, macros, and base class shared by both Indeo4 and - * Indeo5 decoders, derived from ffmpeg. We don't currently support Indeo5 - * decoding, but just in case we eventually need it, this is kept as a separate - * file like it is in ffmpeg. - * - * Original copyright note: * Intel Indeo 4 (IV41, IV42, etc.) video decoder for ffmpeg - * written, produced, and directed by Alan Smithee + * Indeo5 decoders, derived from ffmpeg. */ #include "image/codecs/indeo/indeo.h" diff --git a/image/codecs/indeo4.cpp b/image/codecs/indeo4.cpp index b3a5d3a2bf..8dc67d5501 100644 --- a/image/codecs/indeo4.cpp +++ b/image/codecs/indeo4.cpp @@ -22,7 +22,7 @@ /* Intel Indeo 4 decompressor, derived from ffmpeg. * - * Original copyright note: * Intel Indeo 3 (IV41, IV42, etc.) video decoder for ffmpeg + * Original copyright note: * Intel Indeo 4 (IV41, IV42, etc.) video decoder for ffmpeg * written, produced, and directed by Alan Smithee */ diff --git a/image/codecs/indeo5.cpp b/image/codecs/indeo5.cpp index f4a78574d3..aca49c3d55 100644 --- a/image/codecs/indeo5.cpp +++ b/image/codecs/indeo5.cpp @@ -22,7 +22,7 @@ /* Intel Indeo 5 decompressor, derived from ffmpeg. * - * Original copyright note: * Intel Indeo 3 (IV41, IV42, etc.) video decoder for ffmpeg + * Original copyright note: * Intel Indeo 5 (IV51, IV52, etc.) video decoder for ffmpeg * written, produced, and directed by Alan Smithee */ diff --git a/image/tga.cpp b/image/tga.cpp index adfe7eefbb..b23c597ed5 100644 --- a/image/tga.cpp +++ b/image/tga.cpp @@ -27,6 +27,7 @@ #include "image/tga.h" #include "common/util.h" +#include "common/algorithm.h" #include "common/stream.h" #include "common/textconsole.h" #include "common/error.h" @@ -437,6 +438,22 @@ bool TGADecoder::readDataRLE(Common::SeekableReadStream &tga, byte imageType, by } else { return false; } + + // If it's a bottom origin image, we need to vertically flip the image + if (!_originTop) { + byte *tempLine = new byte[_surface.pitch]; + byte *line1 = (byte *)_surface.getBasePtr(0, 0); + byte *line2 = (byte *)_surface.getBasePtr(0, _surface.h - 1); + + for (int y = 0; y < (_surface.h / 2); ++y, line1 += _surface.pitch, line2 -= _surface.pitch) { + Common::copy(line1, line1 + _surface.pitch, tempLine); + Common::copy(line2, line2 + _surface.pitch, line1); + Common::copy(tempLine, tempLine + _surface.pitch, line2); + } + + delete[] tempLine; + } + return true; } diff --git a/po/be_BY.po b/po/be_BY.po index 62c2ce3610..6f4a91ee9f 100644 --- a/po/be_BY.po +++ b/po/be_BY.po @@ -1,23 +1,23 @@ # Belarusian translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2013-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. -# Ivan Lukyanov <greencis@mail.ru>, 2013-2016. +# Ivan Lukyanov <greencis@mail.ru>, 2013-2017. # msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-11-27 18:01+0000\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-31 15:15+0000\n" "Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n" -"Language-Team: Belarusian <https://translations.scummvm.org/projects/scummvm/" -"scummvm/be/>\n" +"Language-Team: Belarusian " +"<https://translations.scummvm.org/projects/scummvm/scummvm/be/>\n" "Language: be_BY\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-5\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.9\n" "X-Language-name: Belarusian\n" @@ -845,9 +845,8 @@ msgid "the fullscreen setting could not be changed" msgstr "ßÞþÝÐíÚàÐÝÝë àíÖëÜ ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë" #: gui/options.cpp:486 -#, fuzzy msgid "the filtering setting could not be changed" -msgstr "ßÞþÝÐíÚàÐÝÝë àíÖëÜ ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë" +msgstr "àíÖëÜ äöÛìâàÐÒÐÝÝï ÝÕ ÜÞÖÐ Ñëæì ×ÜÕÝÕÝë" #: gui/options.cpp:809 msgid "Graphics mode:" @@ -867,13 +866,12 @@ msgid "Fullscreen mode" msgstr "¿ÞþÝÐíÚàÐÝÝë àíÖëÜ" #: gui/options.cpp:838 -#, fuzzy msgid "Filter graphics" -msgstr "²ëÚÐàëáâÞþÒÐæì ÚÐÛïàÞÒãî ÓàÐäöÚã" +msgstr "ÄöÛìâàÐÒÐÝÝÕ ÓàÐäöÚö" #: gui/options.cpp:838 msgid "Use linear filtering when scaling graphics" -msgstr "" +msgstr "²ëÚÐàëáâÞþÒÐæì ÛöÝÕÙÝãî äöÛìâàÐæëî ÔÛï ßÐÒÕÛöçíÝÝï ÐÔàÞ×ÝÕÝÝï" #: gui/options.cpp:841 msgid "Aspect ratio correction" @@ -1279,7 +1277,7 @@ msgstr "" #: gui/options.cpp:1462 msgid "Apply" -msgstr "" +msgstr "ÃÖëæì" #: gui/options.cpp:1628 msgid "Failed to change cloud storage!" @@ -1458,9 +1456,8 @@ msgid "Playtime: " msgstr "ÇÐá ÓãÛìÝö: " #: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665 -#, fuzzy msgid "Untitled saved game" -msgstr "·ÐåÐÒÐÝÝÕ ÑÕ× öÜï" +msgstr "·ÐåÐÒÐÝÐï ÓãÛìÝï ÑÕ× öÜï" #: gui/saveload-dialog.cpp:718 msgid "Next" @@ -1700,9 +1697,8 @@ msgid "Could not find suitable engine plugin" msgstr "½Õ ÜÐÓã ×ÝÐÙáæö ßÐÔëåÞÔÝë ßÛÐÓöÝ ÔÛï àãåÐÒöçÚÐ" #: common/error.cpp:68 -#, fuzzy msgid "Engine plugin does not support saved games" -msgstr "ÀãåÐÒöçÞÚ ÝÕ ßÐÔâàëÜÛöÒÐÕ ×ÐåÐÒÐÝÝö" +msgstr "ÀãåÐÒöçÞÚ ÝÕ ßÐÔâàëÜÛöÒÐÕ ×ÐåÐÒÐÝÝÕ ÓãÛìÝïþ" #: common/error.cpp:71 msgid "User canceled" @@ -1762,6 +1758,9 @@ msgid "" "Please, report the following data to the ScummVM team along with name\n" "of the game you tried to add and its version, language, etc.:" msgstr "" +"·ÔÐÕææÐ, ÓãÛìÝï þ '%s' ÝÕÒïÔÞÜÐï.\n" +"ºÐÛö ÛÐáÚÐ, ßÕàÐÔÐÙæÕ ÚÐÜÐÝÔ×Õ ScummVM ÝÐáâãßÝëï ÔÐÔ×ÕÝëï àÐ×ÐÜ\n" +"× ÝÐ×ÒÐÙ ÓãÛìÝö, ïÕ ÒÕàáöïÙ, ÜÞÒÐÙ ö öÝè.:" #: engines/dialogs.cpp:85 msgid "~R~esume" @@ -1844,13 +1843,13 @@ msgstr "" "öÝáâàãÚæëïÜö ßàÐ âÞÕ, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî ÔÐßÐÜÞÓã." #: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393 -#, fuzzy, c-format +#, c-format msgid "" "Failed to save game (%s)! Please consult the README for basic information, " "and for instructions on how to obtain further assistance." msgstr "" "½Õ ÐâàëÜÐÛÐáï ×ÐåÐÒÐæì ÓãÛìÝî (%s)! ºÐÛö ÛÐáÚÐ, ×ÒïàÝöæÕáï ÔÐ äÐÙÛÐ README " -"×Ð ÑÐ×ÐÒÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö ßàÐ âÞÕ, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî " +"×Ð ÐáÝÞþÝÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî " "ÔÐßÐÜÞÓã." #: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100 @@ -1884,9 +1883,8 @@ msgid "Could not apply fullscreen setting." msgstr "½Õ ÜÐÓã þÖëæì ßÞþÝÐíÚàÐÝÝë àíÖëÜ." #: engines/engine.cpp:373 -#, fuzzy msgid "Could not apply filtering setting." -msgstr "½Õ ÜÐÓã þÖëæì ßÞþÝÐíÚàÐÝÝë àíÖëÜ." +msgstr "½Õ ÜÐÓã þÖëæì ÝÐÛÐÔë äöÛìâàÐæëö." #: engines/engine.cpp:473 msgid "" @@ -1918,14 +1916,14 @@ msgstr "" "äÐÙÛÕ README." #: engines/engine.cpp:542 -#, fuzzy, c-format +#, c-format msgid "" "Failed to load saved game (%s)! Please consult the README for basic " "information, and for instructions on how to obtain further assistance." msgstr "" -"½Õ ÐâàëÜÐÛÐáï ßàÐçëâÐæì ×ÐåÐÒÐÝÝÕ ÓãÛìÝö (%s)! ºÐÛö ÛÐáÚÐ, ×ÒïàÝöæÕáï þ äÐÙÛ " -"README ×Ð ÑÐ×ÐÒÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö ßàÐ âÞÕ, ïÚ ÐâàëÜÐæì " -"ÔÐÛÕÙèãî ÔÐßÐÜÞÓã." +"½Õ ÐâàëÜÐÛÐáï ×ÐÓàã×öæì ÓãÛìÝî (%s)! ºÐÛö ÛÐáÚÐ, ×ÒïàÝöæÕáï ÔÐ äÐÙÛÐ README " +"×Ð ÐáÝÞþÝÐÙ öÝäÐàÜÐæëïÙ, Ð âÐÚáÐÜÐ öÝáâàãÚæëïÜö, ïÚ ÐâàëÜÐæì ÔÐÛÕÙèãî " +"ÔÐßÐÜÞÓã." #: engines/engine.cpp:555 msgid "" @@ -2188,7 +2186,7 @@ msgstr "°ÚÞÝÝë àíÖëÜ" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:710 #, c-format msgid "Resolution: %dx%d" -msgstr "" +msgstr "°ÔàÞ×ÝÕÝÝÕ: %dx%d" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:731 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338 @@ -2202,15 +2200,13 @@ msgstr "ºÐàíÚæëï áãÐÔÝÞáöÝ ÑÐÚÞþ ÒëÚÛîçÐÝÐ" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:753 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362 -#, fuzzy msgid "Filtering enabled" -msgstr "¿áâàëçÚö þÚÛîçÐÝë" +msgstr "ÄöÛìâàÐæëï þÚÛîçÐÝÐ" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:755 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364 -#, fuzzy msgid "Filtering disabled" -msgstr "¿áâàëçÚö ÒëÚÛîçÐÝë" +msgstr "ÄöÛìâàÐæëï ÒëÚÛîçÐÝÐï" #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47 #: backends/graphics/wincesdl/wincesdl-graphics.cpp:88 @@ -4410,6 +4406,14 @@ msgstr "¿ÐÚÐ×Ðæì ÛöçëÛìÝöÚ ÚÐÔàÐþ ã áÕÚãÝÔã" msgid "Show the current number of frames per second in the upper left corner" msgstr "¿ÐÚÐ×Ðæì ã ÒÕàåÝöÜ ÛÕÒëÜ ÚãæÕ ÑïÓãçãî ÚÞÛìÚÐáæì ÚÐÔàÐþ ã áÕÚãÝÔã" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/ca_ES.po b/po/ca_ES.po index 161347dce7..56f73ae845 100644 --- a/po/ca_ES.po +++ b/po/ca_ES.po @@ -1,5 +1,5 @@ # Catalan translation for ScummVM. -# Copyright (C) 2007-2016 The ScummVM Team +# Copyright (C) 2007-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Jordi Vilalta Prat <jvprat@jvprat.com>, 2007-2011. # @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.6.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-12-04 15:46+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Catalan <https://translations.scummvm.org/projects/scummvm/" @@ -4414,6 +4414,14 @@ msgstr "" msgid "Show the current number of frames per second in the upper left corner" msgstr "" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 #, fuzzy msgid "Use the original save/load screens instead of the ScummVM interface" diff --git a/po/cs_CZ.po b/po/cs_CZ.po index be63eb7eb5..f1238bc515 100644 --- a/po/cs_CZ.po +++ b/po/cs_CZ.po @@ -1,5 +1,5 @@ # Czech translation for ScummVM. -# Copyright (C) 2001-2016 The ScummVM Team +# Copyright (C) 2011-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Zbynìk Schwarz <zbynek.schwarz@gmail.com>, 2011-2013. # @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.7.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-12-04 15:43+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Czech <https://translations.scummvm.org/projects/scummvm/" @@ -4391,6 +4391,14 @@ msgstr "Zobrazit poèítadlo FPS" msgid "Show the current number of frames per second in the upper left corner" msgstr "Zobrazit souèasný poèet snímkù za sekundu v horním levém rohu" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "Pou¾ít pùvodní obrazovky naètení/ulo¾ení místo rozhraní ScummVM" diff --git a/po/da_DK.po b/po/da_DK.po index 0434175bea..4c46d1fd31 100644 --- a/po/da_DK.po +++ b/po/da_DK.po @@ -1,5 +1,5 @@ # Dansk translation for ScummVM -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Steffen Nyeland <steffen@nyeland.dk>, 2010. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-06 22:20+0000\n" -"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Danish <https://translations.scummvm.org/projects/scummvm/" -"scummvm/da/>\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-29 07:29+0000\n" +"Last-Translator: poulsen93 <poulsen93@gmail.com>\n" +"Language-Team: Danish " +"<https://translations.scummvm.org/projects/scummvm/scummvm/da/>\n" "Language: da_DK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -89,24 +89,24 @@ msgstr "Vælg bibliotek med spil data" #: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263 msgid "From: " -msgstr "" +msgstr "Fra: " #: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264 msgid "To: " -msgstr "" +msgstr "Til: " #: gui/downloaddialog.cpp:63 msgid "Cancel download" -msgstr "" +msgstr "Annuller download" #: gui/downloaddialog.cpp:65 msgctxt "lowres" msgid "Cancel download" -msgstr "" +msgstr "Annuller download" #: gui/downloaddialog.cpp:67 msgid "Hide" -msgstr "" +msgstr "Skjul" #: gui/downloaddialog.cpp:117 msgid "" @@ -701,7 +701,7 @@ msgstr "" #: gui/launcher.cpp:365 msgid "This directory cannot be used yet, it is being downloaded into!" -msgstr "" +msgstr "Denne mappe kan ikke bruges endnu, der downloades filer til den!" #: gui/launcher.cpp:415 msgid "Do you really want to remove this game configuration?" @@ -4395,6 +4395,14 @@ msgstr "Vis FPS-tæller" msgid "Show the current number of frames per second in the upper left corner" msgstr "Vis det nuværende antal billeder per sekund i øverste venstre hjørne" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/de_DE.po b/po/de_DE.po index cc9fad379d..069602d3d6 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -1,5 +1,5 @@ # German translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Simon Sawatzki <SimSaw@gmx.de>, Lothar Serra Mari <rootfather@scummvm.org>, 2016. # @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.10.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-19 08:20+0000\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-27 09:55+0000\n" "Last-Translator: Lothar Serra Mari <rootfather@scummvm.org>\n" "Language-Team: German " "<https://translations.scummvm.org/projects/scummvm/scummvm/de/>\n" @@ -2797,8 +2797,8 @@ msgid "" "Incorrect version of the '%s' engine data file found. Expected %d.%d but got " "%d.%d." msgstr "" -"Falsche Version der Engine-Datendatei '%s' gefunden. %d.%d erwartet, aber " -"%d.%d bekommen." +"Falsche Version der Engine-Datendatei '%s' gefunden. %d.%d erwartet, aber %d." +"%d bekommen." #: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55 msgid "Color mode" @@ -4449,6 +4449,14 @@ msgid "Show the current number of frames per second in the upper left corner" msgstr "" "Zeige die aktuelle Anzahl von Bildern pro Sekunde in der oberen linken Ecke" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "Bilineare Filterung für Sprites (LANGSAM)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "Bilineare Filterung auf einzelne Sprites anwenden" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/el.po b/po/el.po new file mode 100644 index 0000000000..9ecdcf4e33 --- /dev/null +++ b/po/el.po @@ -0,0 +1,4495 @@ +# Greek translation for ScummVM. +# Copyright (C) 2016-2017 ScummVM Team +# This file is distributed under the same license as the ScummVM package. +# Filippos Karapetis <md5@scummvm.org>, 2016. +msgid "" +msgstr "" +"Project-Id-Version: ScummVM 1.10.0git\n" +"Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2017-01-04 23:55+0200\n" +"Last-Translator: Filippos Karapetis <bluegr@gmail.com>\n" +"Language-Team: Greek " +"<https://translations.scummvm.org/projects/scummvm/scummvm/el/>\n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-7\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.8.11\n" +"X-Language-name: Greek\n" + +#: gui/about.cpp:94 +#, c-format +msgid "(built on %s)" +msgstr "(äçìéïõñãÞèçêå ôçí %s)" + +#: gui/about.cpp:101 +msgid "Features compiled in:" +msgstr "×áñáêôçñéóôéêÜ ðïõ ðåñéëáìâÜíïíôáé:" + +#: gui/about.cpp:110 +msgid "Available engines:" +msgstr "ÄéáèÝóéìåò ìç÷áíÝò:" + +#: gui/browser.cpp:68 gui/browser_osx.mm:104 +msgid "Show hidden files" +msgstr "ÅìöÜíéóç êñõöþí áñ÷åßùí" + +#: gui/browser.cpp:68 +msgid "Show files marked with the hidden attribute" +msgstr "ÅìöÜíåéóç áñ÷åßùí ðïõ Ý÷ïõí åðéóçìáíèåß ùò êñõöÜ" + +#: gui/browser.cpp:72 gui/remotebrowser.cpp:56 +msgid "Go up" +msgstr "ÌåôÜâáóç ðÜíù" + +#: gui/browser.cpp:72 gui/browser.cpp:74 gui/remotebrowser.cpp:56 +#: gui/remotebrowser.cpp:58 +msgid "Go to previous directory level" +msgstr "ÌåôÜâáóç óôï ðñïçãïýìåíï åðßðåäï êáôáëüãïõ" + +#: gui/browser.cpp:74 gui/remotebrowser.cpp:58 +msgctxt "lowres" +msgid "Go up" +msgstr "ÌåôÜâáóç ðÜíù" + +#: gui/browser.cpp:75 gui/chooser.cpp:46 gui/editgamedialog.cpp:292 +#: gui/editrecorddialog.cpp:67 gui/filebrowser-dialog.cpp:64 +#: gui/fluidsynth-dialog.cpp:152 gui/KeysDialog.cpp:43 gui/massadd.cpp:95 +#: gui/options.cpp:1461 gui/predictivedialog.cpp:73 gui/recorderdialog.cpp:69 +#: gui/recorderdialog.cpp:155 gui/remotebrowser.cpp:59 +#: gui/saveload-dialog.cpp:383 gui/saveload-dialog.cpp:443 +#: gui/saveload-dialog.cpp:717 gui/saveload-dialog.cpp:1111 +#: gui/storagewizarddialog.cpp:68 gui/themebrowser.cpp:55 +#: gui/updates-dialog.cpp:113 engines/engine.cpp:558 +#: backends/events/default/default-events.cpp:196 +#: backends/events/default/default-events.cpp:218 +#: backends/platform/wii/options.cpp:48 engines/drascula/saveload.cpp:49 +#: engines/parallaction/saveload.cpp:271 engines/scumm/dialogs.cpp:187 +#: engines/sword1/control.cpp:865 +msgid "Cancel" +msgstr "Áêýñùóç" + +#: gui/browser.cpp:76 gui/browser_osx.mm:103 gui/chooser.cpp:47 +#: gui/filebrowser-dialog.cpp:65 gui/remotebrowser.cpp:60 +#: gui/themebrowser.cpp:56 +msgid "Choose" +msgstr "ÅðéëïãÞ" + +#: gui/downloaddialog.cpp:48 +msgid "Select directory where to download game data" +msgstr "ÅðéëÝîôå öÜêåëï ãéá íá ìåôáöïñôþóåôå ôá äåäïìÝíá ðáé÷íéäéþí" + +#: gui/downloaddialog.cpp:49 gui/editgamedialog.cpp:470 gui/launcher.cpp:197 +msgid "Select directory with game data" +msgstr "ÅðéëÝîôå öÜêåëï ìå äåäïìÝíá ðáé÷íéäéïý" + +#: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263 +msgid "From: " +msgstr "Áðü: " + +#: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264 +msgid "To: " +msgstr "¸ùò: " + +#: gui/downloaddialog.cpp:63 +msgid "Cancel download" +msgstr "Áêýñùóç ëÞøçò" + +#: gui/downloaddialog.cpp:65 +msgctxt "lowres" +msgid "Cancel download" +msgstr "Áêýñùóç ëÞøçò" + +#: gui/downloaddialog.cpp:67 +msgid "Hide" +msgstr "Áðüêñõøç" + +#: gui/downloaddialog.cpp:117 +msgid "" +"It looks like your connection is limited. Do you really want to download " +"files with it?" +msgstr "" +"Öáßíåôáé ðùò ç óýíäåóÞ óáò åßíáé ðåñéïñéóìÝíç. ÈÝëåôå ðñáãìáôéêÜ íá " +"ìåôáöïñôþóåôå áñ÷åßá ìå áõôÞ;" + +#: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:152 +#: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217 +#: gui/launcher.cpp:307 gui/launcher.cpp:415 gui/launcher.cpp:474 +#: gui/storagewizarddialog.cpp:112 +#: backends/events/symbiansdl/symbiansdl-events.cpp:186 +#: backends/platform/wince/CEActionsPocket.cpp:326 +#: backends/platform/wince/CEActionsSmartphone.cpp:287 +#: backends/platform/wince/CELauncherDialog.cpp:83 +#: engines/kyra/saveload_eob.cpp:557 engines/kyra/saveload_eob.cpp:590 +#: engines/sci/graphics/controls32.cpp:827 +msgid "Yes" +msgstr "Íáé" + +#: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:153 +#: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217 +#: gui/launcher.cpp:307 gui/launcher.cpp:415 gui/launcher.cpp:474 +#: gui/storagewizarddialog.cpp:112 +#: backends/events/symbiansdl/symbiansdl-events.cpp:186 +#: backends/platform/wince/CEActionsPocket.cpp:326 +#: backends/platform/wince/CEActionsSmartphone.cpp:287 +#: backends/platform/wince/CELauncherDialog.cpp:83 +#: engines/kyra/saveload_eob.cpp:557 engines/kyra/saveload_eob.cpp:590 +#: engines/sci/graphics/controls32.cpp:827 +msgid "No" +msgstr "¼÷é" + +#: gui/downloaddialog.cpp:136 gui/launcher.cpp:565 +msgid "ScummVM couldn't open the specified directory!" +msgstr "Ôï ScummVM äå ìðüñåóå íá áíïßîåé ôï êáèïñéóìÝíï öÜêåëï!" + +#: gui/downloaddialog.cpp:146 +msgid "" +"Cannot create a directory to download - the specified directory has a file " +"with the same name." +msgstr "" +"Äåí Þôáí äõíáôÞ ç äçìéïõñãßá öáêÝëïõ ãéá ìåôáöüñôùóç - ï ðñïêáèïñéóìÝíïò " +"öÜêåëïò Ý÷åé Ýíá áñ÷åßï ìå ôï ßäéï üíïìá." + +#: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293 +#: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:522 +#: gui/launcher.cpp:526 gui/massadd.cpp:92 gui/options.cpp:1463 +#: gui/saveload-dialog.cpp:1112 engines/engine.cpp:477 engines/engine.cpp:488 +#: backends/platform/wii/options.cpp:47 +#: backends/platform/wince/CELauncherDialog.cpp:54 +#: engines/agos/animation.cpp:559 engines/drascula/saveload.cpp:49 +#: engines/groovie/script.cpp:407 engines/parallaction/saveload.cpp:271 +#: engines/sci/graphics/controls32.cpp:824 engines/scumm/dialogs.cpp:189 +#: engines/scumm/scumm.cpp:1882 engines/scumm/players/player_v3m.cpp:130 +#: engines/scumm/players/player_v5m.cpp:108 engines/sky/compact.cpp:141 +#: engines/sword1/animation.cpp:524 engines/sword1/animation.cpp:545 +#: engines/sword1/animation.cpp:561 engines/sword1/animation.cpp:569 +#: engines/sword1/control.cpp:865 engines/sword1/logic.cpp:1633 +#: engines/sword2/animation.cpp:425 engines/sword2/animation.cpp:445 +#: engines/sword2/animation.cpp:461 engines/sword2/animation.cpp:471 +#: engines/zvision/file/save_manager.cpp:224 +msgid "OK" +msgstr "OK" + +#: gui/downloaddialog.cpp:151 +#, c-format +msgid "" +"The \"%s\" already exists in the specified directory.\n" +"Do you really want to download files into that directory?" +msgstr "" +"Ôï \"%s\" õðÜñ÷åé Þäç óôïí ðñïêáèïñéóìÝíï öÜêåëï.\n" +"ÈÝëåôå ðñáãìáôéêÜ íá ìåôáöïñôþóåôå áñ÷åßá óå áõôü ôï öÜêåëï;" + +#: gui/downloaddialog.cpp:251 +#, c-format +msgid "Downloaded %s %s / %s %s" +msgstr "Ìåôáöïñôþèçêáí %s %s / %s %s" + +#: gui/downloaddialog.cpp:258 +#, c-format +msgid "Download speed: %s %s" +msgstr "Ôá÷ýôçôá ìåôáöüñôùóçò: %s %s" + +#: gui/editgamedialog.cpp:132 +msgid "Game" +msgstr "Ðáé÷íßäé" + +#: gui/editgamedialog.cpp:136 +msgid "ID:" +msgstr "ID:" + +#: gui/editgamedialog.cpp:136 gui/editgamedialog.cpp:138 +#: gui/editgamedialog.cpp:139 +msgid "" +"Short game identifier used for referring to saved games and running the game " +"from the command line" +msgstr "" +"Óýíôïìï áíáãíùñéóôéêü ðáé÷íéäéïý ðïõ ÷ñçóéìïðïéåßôáé ãéá ôçí ðáñáðïìðÞ " +"áðïèçêåõìÝíùí ðáé÷íéäéþí êáé ãéá ôçí åêôÝëåóç ôïõ ðáé÷íéäéïý áðü ôç ãñáììÞ " +"åíôïëþí" + +#: gui/editgamedialog.cpp:138 +msgctxt "lowres" +msgid "ID:" +msgstr "ID:" + +#: gui/editgamedialog.cpp:143 gui/editrecorddialog.cpp:59 +msgid "Name:" +msgstr "¼íïìá:" + +#: gui/editgamedialog.cpp:143 gui/editgamedialog.cpp:145 +#: gui/editgamedialog.cpp:146 +msgid "Full title of the game" +msgstr "ÐëÞñçò ôßôëïò ôïõ ðáé÷íéäéïý" + +#: gui/editgamedialog.cpp:145 +msgctxt "lowres" +msgid "Name:" +msgstr "¼íïìá:" + +#: gui/editgamedialog.cpp:149 +msgid "Language:" +msgstr "Ãëþóóá:" + +#: gui/editgamedialog.cpp:149 gui/editgamedialog.cpp:150 +msgid "" +"Language of the game. This will not turn your Spanish game version into " +"English" +msgstr "" +"Ãëþóóá ôïõ ðáé÷íéäéïý. Áõôü äå èá ìåôáôñÝøåé ôçí ÉóðáíéêÞ Ýêäïóç ôïõ " +"ðáé÷íéäéïý óáò óå ÁããëéêÞ" + +#: gui/editgamedialog.cpp:151 gui/editgamedialog.cpp:165 gui/options.cpp:121 +#: gui/options.cpp:812 gui/options.cpp:825 gui/options.cpp:1356 +#: audio/null.cpp:41 +msgid "<default>" +msgstr "<ðñïêáèïñéóìÝíç>" + +#: gui/editgamedialog.cpp:161 +msgid "Platform:" +msgstr "Ðëáôöüñìá:" + +#: gui/editgamedialog.cpp:161 gui/editgamedialog.cpp:163 +#: gui/editgamedialog.cpp:164 +msgid "Platform the game was originally designed for" +msgstr "Ðëáôöüñìá ãéá ôçí ïðïßá ó÷åäéÜóôçêå áñ÷éêÜ ôï ðáé÷íßäé" + +#: gui/editgamedialog.cpp:163 +msgctxt "lowres" +msgid "Platform:" +msgstr "Ðëáôöüñìá:" + +#: gui/editgamedialog.cpp:176 +msgid "Engine" +msgstr "Ìç÷áíÞ" + +#: gui/editgamedialog.cpp:184 gui/options.cpp:1147 gui/options.cpp:1232 +msgid "Graphics" +msgstr "ÃñáöéêÜ" + +#: gui/editgamedialog.cpp:184 gui/options.cpp:1147 gui/options.cpp:1232 +msgid "GFX" +msgstr "Ãñáö." + +#: gui/editgamedialog.cpp:187 +msgid "Override global graphic settings" +msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí ãñáöéêþí" + +#: gui/editgamedialog.cpp:189 +msgctxt "lowres" +msgid "Override global graphic settings" +msgstr "ÐáñÜêáìøç ñõèì, ãñáöéêþí" + +#: gui/editgamedialog.cpp:196 gui/options.cpp:1238 +msgid "Audio" +msgstr "¹÷ïò" + +#: gui/editgamedialog.cpp:199 +msgid "Override global audio settings" +msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí Þ÷ïõ" + +#: gui/editgamedialog.cpp:201 +msgctxt "lowres" +msgid "Override global audio settings" +msgstr "ÐáñÜêáìøç ñõèì. Þ÷ïõ" + +#: gui/editgamedialog.cpp:210 gui/options.cpp:1243 +msgid "Volume" +msgstr "¸íôáóç" + +#: gui/editgamedialog.cpp:212 gui/options.cpp:1245 +msgctxt "lowres" +msgid "Volume" +msgstr "¸íôáóç" + +#: gui/editgamedialog.cpp:215 +msgid "Override global volume settings" +msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí Ýíôáóçò" + +#: gui/editgamedialog.cpp:217 +msgctxt "lowres" +msgid "Override global volume settings" +msgstr "ÐáñÜêáìøç ñõèì. Ýíôáóçò" + +#: gui/editgamedialog.cpp:226 gui/options.cpp:1253 +msgid "MIDI" +msgstr "MIDI" + +#: gui/editgamedialog.cpp:229 +msgid "Override global MIDI settings" +msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí MIDI" + +#: gui/editgamedialog.cpp:231 +msgctxt "lowres" +msgid "Override global MIDI settings" +msgstr "ÐáñÜêáìøç ñõèì. MIDI" + +#: gui/editgamedialog.cpp:241 gui/options.cpp:1263 +msgid "MT-32" +msgstr "MT-32" + +#: gui/editgamedialog.cpp:244 +msgid "Override global MT-32 settings" +msgstr "ÐáñÜêáìøç êáèïëéêþí ñõèìßóåùí MT-32" + +#: gui/editgamedialog.cpp:246 +msgctxt "lowres" +msgid "Override global MT-32 settings" +msgstr "ÐáñÜêáìøç ñõèì. MT-32" + +#: gui/editgamedialog.cpp:255 gui/options.cpp:1270 +msgid "Paths" +msgstr "ÖÜêåëïé" + +#: gui/editgamedialog.cpp:257 gui/options.cpp:1272 +msgctxt "lowres" +msgid "Paths" +msgstr "ÖÜêåëïé" + +#: gui/editgamedialog.cpp:264 +msgid "Game Path:" +msgstr "ÖÜêåëïò Ðáé÷íéäéïý:" + +#: gui/editgamedialog.cpp:266 +msgctxt "lowres" +msgid "Game Path:" +msgstr "ÖÜêåëïò Ðáé÷íéäéïý:" + +#: gui/editgamedialog.cpp:271 gui/options.cpp:1296 +msgid "Extra Path:" +msgstr "ÖÜêåëïò ¸îôñá:" + +#: gui/editgamedialog.cpp:271 gui/editgamedialog.cpp:273 +#: gui/editgamedialog.cpp:274 +msgid "Specifies path to additional data used by the game" +msgstr "" +"Êáèïñßæåé äéáäñïìÞ ãéá ðñüóèåôá äåäïìÝíá ðïõ ÷ñçóéìïðïéïýíôáé áðü ôï ðáé÷íßäé" + +#: gui/editgamedialog.cpp:273 gui/options.cpp:1298 +msgctxt "lowres" +msgid "Extra Path:" +msgstr "ÖÜêåëïò ¸îôñá:" + +#: gui/editgamedialog.cpp:280 gui/options.cpp:1280 +msgid "Save Path:" +msgstr "ÖÜêåëïò ÁðïèÞêåõóçò:" + +#: gui/editgamedialog.cpp:280 gui/editgamedialog.cpp:282 +#: gui/editgamedialog.cpp:283 gui/options.cpp:1280 gui/options.cpp:1282 +#: gui/options.cpp:1283 +msgid "Specifies where your saved games are put" +msgstr "Êáèïñßæåé ôçí ôïðïèåóßá ôùí áðïèçêåõìÝíùí ðáé÷íéäéþí óáò" + +#: gui/editgamedialog.cpp:282 gui/options.cpp:1282 +msgctxt "lowres" +msgid "Save Path:" +msgstr "ÖÜêåëïò Áðïè.:" + +#: gui/editgamedialog.cpp:301 gui/editgamedialog.cpp:398 +#: gui/editgamedialog.cpp:457 gui/editgamedialog.cpp:518 gui/options.cpp:1291 +#: gui/options.cpp:1299 gui/options.cpp:1308 gui/options.cpp:1488 +#: gui/options.cpp:1494 gui/options.cpp:1502 gui/options.cpp:1525 +#: gui/options.cpp:1554 gui/options.cpp:1560 gui/options.cpp:1567 +#: gui/options.cpp:1575 gui/options.cpp:1758 gui/options.cpp:1761 +#: gui/options.cpp:1768 gui/options.cpp:1778 +msgctxt "path" +msgid "None" +msgstr "ÊáíÝíá" + +#: gui/editgamedialog.cpp:306 gui/editgamedialog.cpp:404 +#: gui/editgamedialog.cpp:522 gui/options.cpp:1482 gui/options.cpp:1548 +#: gui/options.cpp:1764 backends/platform/wii/options.cpp:56 +msgid "Default" +msgstr "ÐñïêáèïñéóìÝíï" + +#: gui/editgamedialog.cpp:450 gui/options.cpp:1772 +msgid "Select SoundFont" +msgstr "ÅðéëÝîôå SoundFont" + +#: gui/editgamedialog.cpp:489 +msgid "Select additional game directory" +msgstr "ÅðéëÝîôå ðñüóèåôï öÜêåëï ðáé÷íéäéïý" + +#: gui/editgamedialog.cpp:502 gui/options.cpp:1695 +msgid "Select directory for saved games" +msgstr "ÅðéëÝîôå öÜêåëï ãéá áðïèçêåõìÝíá ðáé÷íßäéá" + +#: gui/editgamedialog.cpp:508 +msgid "" +"Saved games sync feature doesn't work with non-default directories. If you " +"want your saved games to sync, use default directory." +msgstr "" +"Ç ëåéôïõñãßá óõã÷ñïíéóìïý áðïèçêåõìÝíùí ðáé÷íéäéþí äå ëåéôïõñãåß ìå ìç-" +"ðñïåðéëåãìÝíïõò öáêÝëïõò. Áí åðéèõìåßôå íá óõã÷ñïíßæïíôáé ôá áðïèçêåõìÝíá " +"ðáé÷íßäéá óáò, ÷ñçóéìïðïéÞóôå ôïí ðñïåðéëåãìÝíï öÜêåëï." + +#: gui/editgamedialog.cpp:534 +msgid "This game ID is already taken. Please choose another one." +msgstr "" +"Áõôü ôï áíáãíùñéóôéêü ðáé÷íéäéïý ÷ñçóéìïðïéåßôáé Þäç. Ðáñáêáëþ åðéëÝîôå Ýíá " +"Üëëï." + +#: gui/editrecorddialog.cpp:58 +msgid "Author:" +msgstr "ÓõããñáöÝáò:" + +#: gui/editrecorddialog.cpp:60 +msgid "Notes:" +msgstr "Óçìåéþóåéò:" + +#: gui/editrecorddialog.cpp:68 gui/predictivedialog.cpp:74 +msgid "Ok" +msgstr "Ok" + +#: gui/filebrowser-dialog.cpp:49 +msgid "Choose file for loading" +msgstr "ÅðéëïãÞ áñ÷åßïõ ãéá öüñôùóç" + +#: gui/filebrowser-dialog.cpp:49 +msgid "Enter filename for saving" +msgstr "ÅéóÜãåôå üíïìá áñ÷åßïõ ãéá áðïèÞêåõóç" + +#: gui/filebrowser-dialog.cpp:132 +msgid "Do you really want to overwrite the file?" +msgstr "ÈÝëåôå ðñáãìáôéêÜ íá áíôéêáôáóôÞóåôå ôï áñ÷åßï;" + +#: gui/fluidsynth-dialog.cpp:68 +msgid "Reverb" +msgstr "ÁíôÞ÷çóç" + +#: gui/fluidsynth-dialog.cpp:70 gui/fluidsynth-dialog.cpp:102 +msgid "Active" +msgstr "Åíåñãü" + +#: gui/fluidsynth-dialog.cpp:72 +msgid "Room:" +msgstr "ÄùìÜôéï:" + +#: gui/fluidsynth-dialog.cpp:79 +msgid "Damp:" +msgstr "Õãñáóßá:" + +#: gui/fluidsynth-dialog.cpp:86 +msgid "Width:" +msgstr "ÐëÜôïò:" + +#: gui/fluidsynth-dialog.cpp:93 gui/fluidsynth-dialog.cpp:111 +msgid "Level:" +msgstr "Åðßðåäï:" + +#: gui/fluidsynth-dialog.cpp:100 +msgid "Chorus" +msgstr "×ïñùäßá" + +#: gui/fluidsynth-dialog.cpp:104 +msgid "N:" +msgstr "N:" + +#: gui/fluidsynth-dialog.cpp:118 +msgid "Speed:" +msgstr "Ôá÷ýôçôá:" + +#: gui/fluidsynth-dialog.cpp:125 +msgid "Depth:" +msgstr "ÂÜèïò:" + +#: gui/fluidsynth-dialog.cpp:132 +msgid "Type:" +msgstr "Ôýðïò:" + +#: gui/fluidsynth-dialog.cpp:135 +msgid "Sine" +msgstr "Çìßôïíï" + +#: gui/fluidsynth-dialog.cpp:136 +msgid "Triangle" +msgstr "Ôñßãùíï" + +#: gui/fluidsynth-dialog.cpp:138 gui/options.cpp:1316 +msgid "Misc" +msgstr "ÄéÜöïñá" + +#: gui/fluidsynth-dialog.cpp:140 +msgid "Interpolation:" +msgstr "ÐáñåìâïëÞ:" + +#: gui/fluidsynth-dialog.cpp:143 +msgid "None (fastest)" +msgstr "Êáìßá (ãñçãïñüôåñï)" + +#: gui/fluidsynth-dialog.cpp:144 +msgid "Linear" +msgstr "ÃñáììéêÞ" + +#: gui/fluidsynth-dialog.cpp:145 +msgid "Fourth-order" +msgstr "ÔÝôáñôçò-ôÜîçò" + +#: gui/fluidsynth-dialog.cpp:146 +msgid "Seventh-order" +msgstr "¸âäïìçò-ôÜîçò" + +#: gui/fluidsynth-dialog.cpp:150 +msgid "Reset" +msgstr "ÅðáíáöïñÜ" + +#: gui/fluidsynth-dialog.cpp:150 +msgid "Reset all FluidSynth settings to their default values." +msgstr "" +"ÅðáíáöïñÜ üëùí ôùí ñõèìßóåùí ôïõ FluidSynth óôéò ðñïêáèïñéóìÝíåò ôïõò ôéìÝò." + +#: gui/fluidsynth-dialog.cpp:217 +msgid "" +"Do you really want to reset all FluidSynth settings to their default values?" +msgstr "" +"ÈÝëåôå ðñáãìáôéêÜ íá åðáíáöÝñåôå üëåò ôéò ñõèìßóåéò ôïõ FluidSynth óôéò " +"ðñïêáèïñéóìÝíåò ôïõò ôéìÝò;" + +#: gui/gui-manager.cpp:119 backends/keymapper/remap-dialog.cpp:53 +#: engines/scumm/help.cpp:126 engines/scumm/help.cpp:141 +#: engines/scumm/help.cpp:166 engines/scumm/help.cpp:192 +#: engines/scumm/help.cpp:210 +msgid "Close" +msgstr "Êëåßóéìï" + +#: gui/gui-manager.cpp:122 +msgid "Mouse click" +msgstr "Click ðïíôéêéïý" + +#: gui/gui-manager.cpp:126 base/main.cpp:340 +msgid "Display keyboard" +msgstr "ÐñïâïëÞ ðëçêôñïëïãßïõ" + +#: gui/gui-manager.cpp:130 base/main.cpp:344 +msgid "Remap keys" +msgstr "Áíôéóôïß÷éóç ðëÞêôñùí" + +#: gui/gui-manager.cpp:133 base/main.cpp:347 engines/scumm/help.cpp:87 +msgid "Toggle fullscreen" +msgstr "Ëåéôïõñãßá ðëÞñïõò ïèüíçò" + +#: gui/KeysDialog.cpp:41 +msgid "Map" +msgstr "Áíôéóôïß÷éóç" + +#: gui/KeysDialog.cpp:49 +msgid "Select an action and click 'Map'" +msgstr "ÅðéëÝîôå ìéá åíÝñãåéá êáé ðáôÞóôå 'Áíôéóôïß÷éóç'" + +#: gui/KeysDialog.cpp:80 gui/KeysDialog.cpp:102 gui/KeysDialog.cpp:141 +#, c-format +msgid "Associated key : %s" +msgstr "Óõó÷åôéóìÝíï êëåéäß : %s" + +#: gui/KeysDialog.cpp:82 gui/KeysDialog.cpp:104 gui/KeysDialog.cpp:143 +#, c-format +msgid "Associated key : none" +msgstr "Óõó÷åôéóìÝíï êëåéäß: êáíÝíá" + +#: gui/KeysDialog.cpp:90 +msgid "Please select an action" +msgstr "Ðáñáêáëþ åðéëÝîôå ìéá åíÝñãåéá" + +#: gui/KeysDialog.cpp:106 +msgid "Press the key to associate" +msgstr "ÐáôÞóôå ôï ðëÞêôñï ãéá óõó÷Ýôéóç" + +#: gui/KeysDialog.cpp:145 gui/KeysDialog.h:36 +msgid "Choose an action to map" +msgstr "ÅðéëÝîôå ìéá åíÝñãåéá ãéá áíôéóôïß÷éóç" + +#: gui/launcher.cpp:141 engines/dialogs.cpp:111 engines/mohawk/dialogs.cpp:98 +msgid "~Q~uit" +msgstr "¸~î~ïäïò" + +#: gui/launcher.cpp:141 backends/platform/sdl/macosx/appmenu_osx.mm:106 +msgid "Quit ScummVM" +msgstr "¸îïäïò áðü ôï ScummVM" + +#: gui/launcher.cpp:142 +msgid "A~b~out..." +msgstr "~Ð~åñß..." + +#: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80 +msgid "About ScummVM" +msgstr "Ðåñß ôïõ ScummVM" + +#: gui/launcher.cpp:143 +msgid "~O~ptions..." +msgstr "~Å~ðéëïãÝò..." + +#: gui/launcher.cpp:143 +msgid "Change global ScummVM options" +msgstr "ÁëëáãÞ êáèïëéêþí åðéëïãþí ôïõ ScummVM" + +#: gui/launcher.cpp:145 +msgid "~S~tart" +msgstr "Å~ê~êßíçóç" + +#: gui/launcher.cpp:145 +msgid "Start selected game" +msgstr "Åêêßíçóç åðéëåãìÝíïõ ðáé÷íéäéïý" + +#: gui/launcher.cpp:148 +msgid "~L~oad..." +msgstr "~Ö~üñôùóç..." + +#: gui/launcher.cpp:148 +msgid "Load saved game for selected game" +msgstr "Öüñôùóç áðïèçêåõìÝíïõ ðáé÷íéäéïý ãéá ôï åðéëåãìÝíï ðáé÷íßäé" + +#: gui/launcher.cpp:153 +msgid "~A~dd Game..." +msgstr "~Ð~ñïóèÞêç Ðáé÷íéäéïý..." + +#: gui/launcher.cpp:153 gui/launcher.cpp:160 +msgid "Hold Shift for Mass Add" +msgstr "ÊñáôÞóôå ðáôçìÝíï ôï Shift ãéá ÌáæéêÞ ÐñïóèÞêç" + +#: gui/launcher.cpp:155 +msgid "~E~dit Game..." +msgstr "~Ä~éüñèùóç Ðáé÷íéäéïý..." + +#: gui/launcher.cpp:155 gui/launcher.cpp:162 +msgid "Change game options" +msgstr "ÁëëáãÞ åðéëïãþí ðáé÷íéäéïý" + +#: gui/launcher.cpp:157 +msgid "~R~emove Game" +msgstr "~Á~öáßñåóç Ðáé÷íéäéïý" + +#: gui/launcher.cpp:157 gui/launcher.cpp:164 +msgid "Remove game from the list. The game data files stay intact" +msgstr "" +"Áöáßñåóç ðáé÷íéäéïý áðü ôç ëßóôá. Ôá áñ÷åßá äåäïìÝíùí ôïõ ðáé÷íéäéïý ìÝíïõí " +"áíÝðáöá" + +#: gui/launcher.cpp:160 +msgctxt "lowres" +msgid "~A~dd Game..." +msgstr "~Ð~ñïóè. Ðáé÷í..." + +#: gui/launcher.cpp:162 +msgctxt "lowres" +msgid "~E~dit Game..." +msgstr "~Ä~éüñè. Ðáé÷í..." + +#: gui/launcher.cpp:164 +msgctxt "lowres" +msgid "~R~emove Game" +msgstr "~Á~öáßñ. Ðáé÷í" + +#: gui/launcher.cpp:172 +msgid "Search in game list" +msgstr "ÁíáæÞôçóç óôç ëßóôá ðáé÷íéäéþí" + +#: gui/launcher.cpp:176 gui/launcher.cpp:771 +msgid "Search:" +msgstr "ÁíáæÞôçóç:" + +#: gui/launcher.cpp:200 engines/dialogs.cpp:115 engines/cruise/menu.cpp:214 +#: engines/mohawk/dialogs.cpp:103 engines/mohawk/riven.cpp:734 +#: engines/pegasus/pegasus.cpp:353 engines/tsage/scenes.cpp:601 +#: engines/wage/saveload.cpp:748 +msgid "Load game:" +msgstr "Öüñôùóç ðáé÷íéäéïý:" + +#: gui/launcher.cpp:200 engines/dialogs.cpp:115 +#: backends/platform/wince/CEActionsPocket.cpp:267 +#: backends/platform/wince/CEActionsSmartphone.cpp:231 +#: engines/cruise/menu.cpp:214 engines/mohawk/dialogs.cpp:103 +#: engines/mohawk/riven.cpp:734 engines/parallaction/saveload.cpp:194 +#: engines/pegasus/pegasus.cpp:353 engines/scumm/dialogs.cpp:185 +#: engines/tsage/scenes.cpp:601 engines/wage/saveload.cpp:748 +msgid "Load" +msgstr "Öüñôùóç" + +#: gui/launcher.cpp:306 +msgid "" +"Do you really want to run the mass game detector? This could potentially add " +"a huge number of games." +msgstr "" +"ÈÝëåôå ðñáãìáôéêÜ íá ôñÝîåôå ôïí ìáæéêü áíé÷íåõôÞ ðáé÷íéäéþí; Áõôü èá " +"ìðïñïýóå åíäå÷ïìÝíùò íá ðñïóèÝóåé Ýíá ôåñÜóôéï áñéèìü ðáé÷íéäéþí." + +#: gui/launcher.cpp:365 +msgid "This directory cannot be used yet, it is being downloaded into!" +msgstr "" +"Áõôüò ï öÜêåëïò äå ìðïñåß íá ÷ñçóéìïðïéçèåß áêüìç, ãßíåôáé ìåôáöüñôùóç óå " +"áõôüí!" + +#: gui/launcher.cpp:415 +msgid "Do you really want to remove this game configuration?" +msgstr "ÈÝëåôå ðñáãìáôéêÜ íá óâÞóåôå ôéò ñõèìßóåéò áõôïý ôïõ ðáé÷íéäéïý;" + +#: gui/launcher.cpp:473 +msgid "Do you want to load saved game?" +msgstr "ÈÝëåôå íá öïñôþóåôå ôï áðïèçêåõìÝíï ðáé÷íßäé;" + +#: gui/launcher.cpp:522 +msgid "This game does not support loading games from the launcher." +msgstr "Áõôü ôï ðáé÷íßäé äåí õðïóôçñßæåé öüñôùóç ðáé÷íéäéþí áðü ôïí ðñïùèçôÞ." + +#: gui/launcher.cpp:526 +msgid "ScummVM could not find any engine capable of running the selected game!" +msgstr "" +"Ôï ScummVM äå ìðüñåóå íá âñåß êÜðïéá ìç÷áíÞ éêáíÞ íá åêôåëÝóåé ôï åðéëåãìÝíï " +"ðáé÷íßäé!" + +#: gui/launcher.cpp:577 +msgid "ScummVM could not find any game in the specified directory!" +msgstr "" +"Ôï ScummVM äå ìðüñåóå íá âñåß êÜðïéï ðáé÷íßäé óôïí ðñïêáèïñéóìÝíï öÜêåëï!" + +#: gui/launcher.cpp:590 +msgid "Pick the game:" +msgstr "ÄéáëÝîôå ôï ðáé÷íßäé:" + +#: gui/launcher.cpp:708 +msgid "Mass Add..." +msgstr "ÌáæéêÞ ÐñïóèÞêç..." + +#: gui/launcher.cpp:710 +msgid "Record..." +msgstr "ÅããñáöÞ..." + +#: gui/massadd.cpp:79 gui/massadd.cpp:82 +msgid "... progress ..." +msgstr "... ðñüïäïò ..." + +#: gui/massadd.cpp:259 +msgid "Scan complete!" +msgstr "Ç óÜñùóç ïëïêëçñþèçêå!" + +#: gui/massadd.cpp:262 +#, c-format +msgid "Discovered %d new games, ignored %d previously added games." +msgstr "" +"Áíáêáëýöèçêáí %d íÝá ðáé÷íßäéá, áãíïÞèçêáí %d ðáé÷íßäéá ðïõ Ý÷ïõí Þäç " +"ðñïóôåèåß." + +#: gui/massadd.cpp:266 +#, c-format +msgid "Scanned %d directories ..." +msgstr "Óáñþèçêáí %d öÜêåëïé ..." + +#: gui/massadd.cpp:269 +#, c-format +msgid "Discovered %d new games, ignored %d previously added games ..." +msgstr "" +"Áíáêáëýöèçêáí %d íÝá ðáé÷íßäéá, áãíïÞèçêáí %d ðáé÷íßäéá ðïõ Ý÷ïõí Þäç " +"ðñïóôåèåß ..." + +#: gui/onscreendialog.cpp:101 gui/onscreendialog.cpp:103 +msgid "Stop" +msgstr "Óôïð" + +#: gui/onscreendialog.cpp:106 +msgid "Edit record description" +msgstr "Äéüñèùóç ðåñéãñáöÞò åããñáöÞò" + +#: gui/onscreendialog.cpp:108 +msgid "Switch to Game" +msgstr "ÌåôÜâáóç óôï Ðáé÷íßäé" + +#: gui/onscreendialog.cpp:110 +msgid "Fast replay" +msgstr "ÃñÞãïñç åðáíÜëçøç" + +#: gui/options.cpp:119 common/updates.cpp:56 +msgid "Never" +msgstr "ÐïôÝ" + +#: gui/options.cpp:119 +msgid "every 5 mins" +msgstr "êÜèå 5 ëåðôÜ" + +#: gui/options.cpp:119 +msgid "every 10 mins" +msgstr "êÜèå 10 ëåðôÜ" + +#: gui/options.cpp:119 +msgid "every 15 mins" +msgstr "êÜèå 15 ëåðôÜ" + +#: gui/options.cpp:119 +msgid "every 30 mins" +msgstr "êÜèå 30 ëåðôÜ" + +#: gui/options.cpp:121 +msgid "8 kHz" +msgstr "8 kHz" + +#: gui/options.cpp:121 +msgid "11 kHz" +msgstr "11 kHz" + +#: gui/options.cpp:121 +msgid "22 kHz" +msgstr "22 kHz" + +#: gui/options.cpp:121 +msgid "44 kHz" +msgstr "44 kHz" + +#: gui/options.cpp:121 +msgid "48 kHz" +msgstr "48 kHz" + +#: gui/options.cpp:289 gui/options.cpp:552 gui/options.cpp:657 +#: gui/options.cpp:726 gui/options.cpp:937 +msgctxt "soundfont" +msgid "None" +msgstr "ÊáíÝíá" + +#: gui/options.cpp:456 +msgid "Failed to apply some of the graphic options changes:" +msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ïñéóìÝíùí áëëáãþí óôéò åðéëïãÝò ãñáöéêþí:" + +#: gui/options.cpp:468 +msgid "the video mode could not be changed." +msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ëåéôïõñãßáò âßíôåï." + +#: gui/options.cpp:474 +msgid "the aspect ratio setting could not be changed" +msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò äéüñèùóçò áíáëïãßáò äéáóôÜóåùí" + +#: gui/options.cpp:480 +msgid "the fullscreen setting could not be changed" +msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ñýèìéóçò ðëÞñïõò ïèüíçò" + +#: gui/options.cpp:486 +msgid "the filtering setting could not be changed" +msgstr "äåí Þôáí äõíáôÞ ç áëëáãÞ ôçò ñýèìéóçò öéëôñáñßóìáôïò" + +#: gui/options.cpp:809 +msgid "Graphics mode:" +msgstr "Ëåéôïõñãßá ãñáöéêþí:" + +#: gui/options.cpp:823 +msgid "Render mode:" +msgstr "Ëåéôïõñãßá áðüäïóçò:" + +#: gui/options.cpp:823 gui/options.cpp:824 +msgid "Special dithering modes supported by some games" +msgstr "" +"ÅéäéêÝò ëåéôïõñãßåò ÷ñùìáôéêÞò áíôéðáñÜèåóçò ïé ïðïßåò õðïóôçñßæïíôáé áðü " +"ïñéóìÝíá ðáé÷íßäéá" + +#: gui/options.cpp:835 backends/graphics/openglsdl/openglsdl-graphics.cpp:615 +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2460 +msgid "Fullscreen mode" +msgstr "Ëåéôïõñãßá ðëÞñïõò ïèüíçò" + +#: gui/options.cpp:838 +msgid "Filter graphics" +msgstr "Ößëôñï ãñáöéêþí" + +#: gui/options.cpp:838 +msgid "Use linear filtering when scaling graphics" +msgstr "×ñÞóç ãñáììéêïý öéëôñáñßóìáôïò ãéá ôçí êëéìÜêùóç ãñáöéêþí" + +#: gui/options.cpp:841 +msgid "Aspect ratio correction" +msgstr "Äéüñèùóç áíáëïãßáò äéáóôÜóåùí" + +#: gui/options.cpp:841 +msgid "Correct aspect ratio for 320x200 games" +msgstr "Äéüñèùóç áíáëïãßáò äéáóôÜóåùí ãéá ðáé÷íßäéá 320x200" + +#: gui/options.cpp:849 +msgid "Preferred Device:" +msgstr "Ðñïôéìþìåíç óõóêåõÞ:" + +#: gui/options.cpp:849 +msgid "Music Device:" +msgstr "ÓõóêåõÞ ÌïõóéêÞò:" + +#: gui/options.cpp:849 gui/options.cpp:851 +msgid "Specifies preferred sound device or sound card emulator" +msgstr "Êáèïñßæåé ôçí ðñïôéìþìåíç óõóêåõÞ åîüäïõ Þ÷ïõ Þ åîïìïéùôÞ êÜñôáò Þ÷ïõ" + +#: gui/options.cpp:849 gui/options.cpp:851 gui/options.cpp:852 +msgid "Specifies output sound device or sound card emulator" +msgstr "Êáèïñßæåé ôç óõóêåõÞ åîüäïõ Þ÷ïõ Þ åîïìïéùôÞ êÜñôáò Þ÷ïõ" + +#: gui/options.cpp:851 +msgctxt "lowres" +msgid "Preferred Dev.:" +msgstr "Ðñïôéì. Óõóê.:" + +#: gui/options.cpp:851 +msgctxt "lowres" +msgid "Music Device:" +msgstr "Óõóê. Ìïõó.:" + +#: gui/options.cpp:878 +msgid "AdLib emulator:" +msgstr "ÅîïìïéùôÞò Adlib:" + +#: gui/options.cpp:878 gui/options.cpp:879 +msgid "AdLib is used for music in many games" +msgstr "Ç Adlib ÷ñçóéìïðïéåßôáé ãéá ìïõóéêÞ óå ðïëëÜ ðáé÷íßäéá" + +#: gui/options.cpp:889 +msgid "Output rate:" +msgstr "Ñõèìüò åîüäïõ:" + +#: gui/options.cpp:889 gui/options.cpp:890 +msgid "" +"Higher value specifies better sound quality but may be not supported by your " +"soundcard" +msgstr "" +"Õøçëüôåñç ôéìÞ êáèïñßæåé êáëýôåñç ðïéüôçôá Þ÷ïõ, áëëÜ ìðïñåß íá ìçí " +"õðïóôçñßæåôáé áðü ôçí êÜñôá Þ÷ïõ óáò" + +#: gui/options.cpp:900 +msgid "GM Device:" +msgstr "ÓõóêåõÞ GM:" + +#: gui/options.cpp:900 +msgid "Specifies default sound device for General MIDI output" +msgstr "Êáèïñßæåé ðñïåðéëåãìÝíç óõóêåõÞ Þ÷ïõ ãéá ôçí Ýîïäï General MIDI" + +#: gui/options.cpp:911 +msgid "Don't use General MIDI music" +msgstr "Ìç ÷ñÞóç ìïõóéêÞò General MIDI" + +#: gui/options.cpp:922 gui/options.cpp:984 +msgid "Use first available device" +msgstr "×ñÞóç ðñþôçò äéáèÝóéìçò óõóêåõÞò" + +#: gui/options.cpp:934 +msgid "SoundFont:" +msgstr "SoundFont:" + +#: gui/options.cpp:934 gui/options.cpp:936 gui/options.cpp:937 +msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity" +msgstr "" +"Ôï SoundFont õðïóôçñßæåôáé áðü ìåñéêÝò êÜñôåò Þ÷ïõ, ôï FluidSynth êáé ôï " +"Timidity" + +#: gui/options.cpp:936 +msgctxt "lowres" +msgid "SoundFont:" +msgstr "SoundFont:" + +#: gui/options.cpp:942 +msgid "Mixed AdLib/MIDI mode" +msgstr "ÌéêôÞ ëåéôïõñãßá Adlib/MIDI" + +#: gui/options.cpp:942 +msgid "Use both MIDI and AdLib sound generation" +msgstr "×ñÞóç MIDI êáé Adlib ãéá äçìéïõñãßá Þ÷ïõ" + +#: gui/options.cpp:945 +msgid "MIDI gain:" +msgstr "Áýîçóç MIDI:" + +#: gui/options.cpp:955 +msgid "MT-32 Device:" +msgstr "ÓõóêåõÞ MT-32:" + +#: gui/options.cpp:955 +msgid "Specifies default sound device for Roland MT-32/LAPC1/CM32l/CM64 output" +msgstr "" +"Êáèïñßæåé ðñïåðéëåãìÝíç óõóêåõÞ Þ÷ïõ ãéá Ýîïäï Roland MT-32/LAPC1/CM32l/CM64" + +#: gui/options.cpp:960 +msgid "True Roland MT-32 (disable GM emulation)" +msgstr "ÐñáãìáôéêÞ Roland MT-32 (áðåíåñãïðïßçóç åîïìïéùôÞ GM)" + +#: gui/options.cpp:960 gui/options.cpp:962 +msgid "" +"Check if you want to use your real hardware Roland-compatible sound device " +"connected to your computer" +msgstr "" +"ÅðéëÝîôå áí èÝëåôå íá ÷ñçóéìïðïéÞóåôå óõóêåõÞ Þ÷ïõ óõìâáôÞ ìå Roland, ç " +"ïðïßá åßíáé óõíäåäåìÝíç óôïí õðïëïãéóôÞ óáò" + +#: gui/options.cpp:962 +msgctxt "lowres" +msgid "True Roland MT-32 (no GM emulation)" +msgstr "ÐñáãìáôéêÞ Roland MT-32 (÷ùñßò åîïìïßùóç GM)" + +#: gui/options.cpp:965 +msgid "Roland GS Device (enable MT-32 mappings)" +msgstr "ÓõóêåõÞ Roland GS (åíåñãïðïßçóç áíôéóôïé÷ßóåùí MT-32)" + +#: gui/options.cpp:965 +msgid "" +"Check if you want to enable patch mappings to emulate an MT-32 on a Roland " +"GS device" +msgstr "" +"ÅðéëÝîôå áí èÝëåôå íá åíåñãïðïéÞóåôå äéïñèùìÝíåò áíôéóôïé÷ßóåéò ãéá íá " +"åîïìïéþóåôå ìéá MT-32 óå óõóêåõÞ Roland GS" + +#: gui/options.cpp:974 +msgid "Don't use Roland MT-32 music" +msgstr "Ìç ÷ñÞóç ìïõóéêÞò Roland MT-32" + +#: gui/options.cpp:1001 +msgid "Text and Speech:" +msgstr "Êåßìåíï êáé Ïìéëßá:" + +#: gui/options.cpp:1005 gui/options.cpp:1015 +msgid "Speech" +msgstr "Ïìéëßá" + +#: gui/options.cpp:1006 gui/options.cpp:1016 +msgid "Subtitles" +msgstr "Õðüôéôëïé" + +#: gui/options.cpp:1007 +msgid "Both" +msgstr "Êáé ôá äõï" + +#: gui/options.cpp:1009 +msgid "Subtitle speed:" +msgstr "Ôá÷ýôçôá õðïôßôëùí:" + +#: gui/options.cpp:1011 +msgctxt "lowres" +msgid "Text and Speech:" +msgstr "Êåßìåíï êáé Ïìéëßá:" + +#: gui/options.cpp:1015 +msgid "Spch" +msgstr "Ïìéëßá" + +#: gui/options.cpp:1016 +msgid "Subs" +msgstr "Õðüô." + +#: gui/options.cpp:1017 +msgctxt "lowres" +msgid "Both" +msgstr "Êáé ôá äõï" + +#: gui/options.cpp:1017 +msgid "Show subtitles and play speech" +msgstr "ÐñïâïëÞ õðïôßôëùí êáé áíáðáñáãùãÞ öùíÞò" + +#: gui/options.cpp:1019 +msgctxt "lowres" +msgid "Subtitle speed:" +msgstr "Ôá÷ýôçôá õðüô.:" + +#: gui/options.cpp:1035 +msgid "Music volume:" +msgstr "¸íôáóç ìïõóéêÞò:" + +#: gui/options.cpp:1037 +msgctxt "lowres" +msgid "Music volume:" +msgstr "¸íôáóç ìïõóéêÞò:" + +#: gui/options.cpp:1044 +msgid "Mute All" +msgstr "Óßãáóç ¼ëùí" + +#: gui/options.cpp:1047 +msgid "SFX volume:" +msgstr "¸íôáóç åöÝ:" + +#: gui/options.cpp:1047 gui/options.cpp:1049 gui/options.cpp:1050 +msgid "Special sound effects volume" +msgstr "¸íôáóç åéäéêþí áêïõóôéêþí åöÝ" + +#: gui/options.cpp:1049 +msgctxt "lowres" +msgid "SFX volume:" +msgstr "¸íôáóç åöÝ:" + +#: gui/options.cpp:1057 +msgid "Speech volume:" +msgstr "¸íôáóç ïìéëßáò:" + +#: gui/options.cpp:1059 +msgctxt "lowres" +msgid "Speech volume:" +msgstr "¸íôáóç ïìéëßáò:" + +#: gui/options.cpp:1257 +msgid "FluidSynth Settings" +msgstr "Ñõèìßóåéò FluidSynth" + +#: gui/options.cpp:1288 +msgid "Theme Path:" +msgstr "ÖÜêåëïò ÈÝìáôïò:" + +#: gui/options.cpp:1290 +msgctxt "lowres" +msgid "Theme Path:" +msgstr "ÖÜêåëïò ÈÝìáôïò:" + +#: gui/options.cpp:1296 gui/options.cpp:1298 gui/options.cpp:1299 +msgid "Specifies path to additional data used by all games or ScummVM" +msgstr "" +"Êáèïñßæåé ôç äéáäñïìÞ ãéá ðñüóèåôá äåäïìÝíá ðïõ ÷ñçóéìïðïéïýíôáé áðü üëá ôá " +"ðáé÷íßäéá Þ ôï ScummVM" + +#: gui/options.cpp:1305 +msgid "Plugins Path:" +msgstr "ÄéáäñïìÞ Ðñüóèåôùí:" + +#: gui/options.cpp:1307 +msgctxt "lowres" +msgid "Plugins Path:" +msgstr "Äéáäñ. Ðñüóè.:" + +#: gui/options.cpp:1318 +msgctxt "lowres" +msgid "Misc" +msgstr "ËïéðÜ" + +#: gui/options.cpp:1320 +msgid "Theme:" +msgstr "ÈÝìá:" + +#: gui/options.cpp:1324 +msgid "GUI Renderer:" +msgstr "Áðåéêüíéóç GUI:" + +#: gui/options.cpp:1336 +msgid "Autosave:" +msgstr "Áõôüìáôç áðïèÞêåõóç:" + +#: gui/options.cpp:1338 +msgctxt "lowres" +msgid "Autosave:" +msgstr "Áõôüì. áðïè.:" + +#: gui/options.cpp:1346 +msgid "Keys" +msgstr "ÐëÞêôñá" + +#: gui/options.cpp:1353 +msgid "GUI Language:" +msgstr "Ãëþóóá GUI:" + +#: gui/options.cpp:1353 +msgid "Language of ScummVM GUI" +msgstr "Ãëþóóá ôïõ ScummVM GUI" + +#: gui/options.cpp:1381 +msgid "Update check:" +msgstr "¸ëåã÷ïò áíáâáèìßóåùí:" + +#: gui/options.cpp:1381 +msgid "How often to check ScummVM updates" +msgstr "Óõ÷íüôçôá åëÝã÷ïõ åíçìåñþóåùí ôïõ ScummVM" + +#: gui/options.cpp:1393 +msgid "Check now" +msgstr "ÅëÝãîôå ôþñá" + +#: gui/options.cpp:1401 +msgid "Cloud" +msgstr "Óýííåöï" + +#: gui/options.cpp:1403 +msgctxt "lowres" +msgid "Cloud" +msgstr "Óýííåöï" + +#: gui/options.cpp:1408 +msgid "Storage:" +msgstr "ÁðïèÞêåõóç:" + +#: gui/options.cpp:1408 +msgid "Active cloud storage" +msgstr "ÅíåñãÞ áðïèÞêåõóç óýííåöïõ" + +#: gui/options.cpp:1415 gui/options.cpp:1972 +msgid "<none>" +msgstr "<êáìßá>" + +#: gui/options.cpp:1419 backends/platform/wii/options.cpp:114 +msgid "Username:" +msgstr "¼íïìá ÷ñÞóôç:" + +#: gui/options.cpp:1419 +msgid "Username used by this storage" +msgstr "Ôï üíïìá ÷ñÞóôç ðïõ ÷ñçóéìïðïéåßôáé áðü áõôÞ ôçí áðïèÞêç" + +#: gui/options.cpp:1422 +msgid "Used space:" +msgstr "×ñçóéìïðïéçìÝíïò ÷þñïò:" + +#: gui/options.cpp:1422 +msgid "Space used by ScummVM's saved games on this storage" +msgstr "" +"×þñïò ðïõ ÷ñçóéìïðïéåßôáé áðü ôá áðïèçêåõìÝíá ðáé÷íßäéá ôïõ ScummVM óå áõôÞ " +"ôçí áðïèÞêç" + +#: gui/options.cpp:1425 +msgid "Last sync time:" +msgstr "Ôåëåõôáßá þñá óõã÷ñïíéóìïý:" + +#: gui/options.cpp:1425 +msgid "When the last saved games sync for this storage occured" +msgstr "" +"Ðüôå ðñáãìáôïðïéÞèçêå ï ôåëåõôáßïò óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí" + +#: gui/options.cpp:1428 gui/storagewizarddialog.cpp:71 +msgid "Connect" +msgstr "Óýíäåóç" + +#: gui/options.cpp:1428 +msgid "Open wizard dialog to connect your cloud storage account" +msgstr "" +"Áíïßîôå ôï äéÜëïãï ïäçãïý ãéá íá óõíäÝóåôå ôï ëïãáñéáóìü ôïý óýííåöïõ " +"áðïèÞêåõóÞò óáò" + +#: gui/options.cpp:1429 +msgid "Refresh" +msgstr "ÁíáíÝùóç" + +#: gui/options.cpp:1429 +msgid "Refresh current cloud storage information (username and usage)" +msgstr "" +"ÁíáíÝùóç ðëçñïöïñéþí ôñÝ÷ïíôïò ÷þñïõ áðïèÞêåõóçò óôï óýííåöï (üíïìá ÷ñÞóôç " +"êáé ÷ñÞóç)" + +#: gui/options.cpp:1430 +msgid "Download" +msgstr "Ìåôáöüñôùóç" + +#: gui/options.cpp:1430 +msgid "Open downloads manager dialog" +msgstr "¶íïéãìá äéáëüãïõ äéá÷åßñéóçò ìåôáöïñôþóåùí" + +#: gui/options.cpp:1432 +msgid "Run server" +msgstr "ÅêôÝëåóç äéáêïìéóôÞ" + +#: gui/options.cpp:1432 +msgid "Run local webserver" +msgstr "ÅêôÝëåóç ôïðéêïý äéáêïìéóôÞ web" + +#: gui/options.cpp:1433 gui/options.cpp:2082 +msgid "Not running" +msgstr "Äåí åêôåëåßôáé" + +#: gui/options.cpp:1437 +msgid "/root/ Path:" +msgstr "/root/ ÄéáäñïìÞ:" + +#: gui/options.cpp:1437 gui/options.cpp:1439 gui/options.cpp:1440 +msgid "Specifies which directory the Files Manager can access" +msgstr "Êáèïñßæåé ôï öÜêåëï óôïí ïðïßï Ý÷åé ðñüóâáóç ï File Manager" + +#: gui/options.cpp:1439 +msgctxt "lowres" +msgid "/root/ Path:" +msgstr "/root/ ÄéáäñïìÞ:" + +#: gui/options.cpp:1449 +msgid "Server's port:" +msgstr "Èýñá åîõðçñåôçôÞ:" + +#: gui/options.cpp:1449 +msgid "" +"Which port is used by the server\n" +"Auth with server is not available with non-default port" +msgstr "" +"ÐïéÜ èýñá ÷ñçóéìïðïéåßôáé áðü ôï äéáêïìéóôÞ\n" +"Äåí åßíáé äéáèÝóéìç ç ðéóôïðïßçóç ìå ôï äéáêïìéóôÞ óå ìç-ðñïåðéëåãìÝíç èýñá" + +#: gui/options.cpp:1462 +msgid "Apply" +msgstr "ÅöáñìïãÞ" + +#: gui/options.cpp:1628 +msgid "Failed to change cloud storage!" +msgstr "Áäõíáìßá áëëáãÞò áðïèÞêåõóçò óýííåöïõ!" + +#: gui/options.cpp:1631 +msgid "Another cloud storage is already active." +msgstr "Ìéá Üëëç áðïèÞêåõóç óýííåöïõ åßíáé Þäç åíåñãÞ." + +#: gui/options.cpp:1667 +msgid "" +"The theme you selected does not support your current language. If you want " +"to use this theme you need to switch to another language first." +msgstr "" +"Ôï èÝìá ðïõ åðéëÝîáôå äåí õðïóôçñßæåé ôçí ôñÝ÷ïõóá ãëþóóá óáò. Áí åðéèõìåßôå " +"íá ÷ñçóéìïðïéÞóåôå áõôü ôï èÝìá èá ðñÝðåé ðñþôá íá áëëÜîåôå óå êÜðïéá Üëëç " +"ãëþóóá." + +#: gui/options.cpp:1702 +msgid "The chosen directory cannot be written to. Please select another one." +msgstr "" +"Äåí Þôáí äõíáôÞ ç åããñáöÞ óôïí åðéëåãìÝíï öÜêåëï. Ðáñáêáëþ åðéëÝîôå êÜðïéïí " +"Üëëï." + +#: gui/options.cpp:1711 +msgid "Select directory for GUI themes" +msgstr "ÅðéëÝîôå öÜêåëï ãéá èÝìáôá GUI" + +#: gui/options.cpp:1721 +msgid "Select directory for extra files" +msgstr "ÅðéëÝîôå öÜêåëï ãéá Ýîôñá áñ÷åßá" + +#: gui/options.cpp:1732 +msgid "Select directory for plugins" +msgstr "ÅðéëÝîôå öÜêåëï ãéá ðñüóèåôá" + +#: gui/options.cpp:1744 +msgid "Select directory for Files Manager /root/" +msgstr "ÅðéëÝîôå öÜêåëï ãéá ôï /root/ ôïõ Äéá÷åéñéóôÞ Áñ÷åßùí" + +#: gui/options.cpp:1979 +#, c-format +msgid "%llu bytes" +msgstr "%llu bytes" + +#: gui/options.cpp:1987 +msgid "<right now>" +msgstr "<Üìåóá>" + +#: gui/options.cpp:1989 +msgid "<never>" +msgstr "<ðïôÝ>" + +#: gui/options.cpp:2073 +msgid "Stop server" +msgstr "ÄéáêïðÞ åîõðçñåôçôÞ" + +#: gui/options.cpp:2074 +msgid "Stop local webserver" +msgstr "ÄéáêïðÞ ôïðéêïý åîõðçñåôçôÞ web" + +#: gui/options.cpp:2163 +msgid "" +"Request failed.\n" +"Check your Internet connection." +msgstr "" +"Ôï áßôçìá áðÝôõ÷å.\n" +"ÅëÝãîôå ôç óýíäåóÞ óáò óôï Internet." + +#. I18N: You must leave "#" as is, only word 'next' is translatable +#: gui/predictivedialog.cpp:86 +msgid "# next" +msgstr "# åðüìåíï" + +#: gui/predictivedialog.cpp:87 +msgid "add" +msgstr "ðñïóèÞêç" + +#: gui/predictivedialog.cpp:92 gui/predictivedialog.cpp:167 +msgid "Delete char" +msgstr "ÄéáãñáöÞ ÷áñáêôÞñá" + +#: gui/predictivedialog.cpp:97 gui/predictivedialog.cpp:171 +msgid "<" +msgstr "<" + +#. I18N: Pre means 'Predictive', leave '*' as is +#: gui/predictivedialog.cpp:99 gui/predictivedialog.cpp:575 +msgid "* Pre" +msgstr "* Pre" + +#. I18N: 'Num' means Numbers +#: gui/predictivedialog.cpp:578 +msgid "* Num" +msgstr "* Áñéè" + +#. I18N: 'Abc' means Latin alphabet input +#: gui/predictivedialog.cpp:581 +msgid "* Abc" +msgstr "* Abc" + +#: gui/recorderdialog.cpp:63 +msgid "Recorder or Playback Gameplay" +msgstr "ÅããñáöÞ Þ ÁíáðáñáãùãÞ Gameplay" + +#: gui/recorderdialog.cpp:68 gui/recorderdialog.cpp:155 +#: gui/saveload-dialog.cpp:387 gui/saveload-dialog.cpp:443 +msgid "Delete" +msgstr "ÓâÞóéìï" + +#: gui/recorderdialog.cpp:70 +msgid "Record" +msgstr "ÅããñáöÞ" + +#: gui/recorderdialog.cpp:71 +msgid "Playback" +msgstr "ÁíáðáñáãùãÞ" + +#: gui/recorderdialog.cpp:73 +msgid "Edit" +msgstr "Äéüñèùóç" + +#: gui/recorderdialog.cpp:85 gui/recorderdialog.cpp:242 +#: gui/recorderdialog.cpp:252 +msgid "Author: " +msgstr "ÓõããñáöÝáò: " + +#: gui/recorderdialog.cpp:86 gui/recorderdialog.cpp:243 +#: gui/recorderdialog.cpp:253 +msgid "Notes: " +msgstr "Óçìåéþóåéò: " + +#: gui/recorderdialog.cpp:154 +msgid "Do you really want to delete this record?" +msgstr "ÈÝëåôå ðñáãìáôéêÜ íá óâÞóåôå áõôÞ ôçí åããñáöÞ;" + +#: gui/recorderdialog.cpp:173 +msgid "Unknown Author" +msgstr "¶ãíùóôïò ÓõããñáöÝáò" + +#: gui/remotebrowser.cpp:128 +msgid "ScummVM could not access the directory!" +msgstr "Ôï ScummVM äå ìðüñåóå íá ðñïóðåëÜóåé ôïí öÜêåëï!" + +#: gui/saveload-dialog.cpp:334 +msgid "List view" +msgstr "ÐñïâïëÞ ëßóôáò" + +#: gui/saveload-dialog.cpp:335 +msgid "Grid view" +msgstr "ÐñïâïëÞ ðëÝãìáôïò" + +#: gui/saveload-dialog.cpp:378 gui/saveload-dialog.cpp:528 +msgid "No date saved" +msgstr "×ùñßò áðïèçê. çì/íßá" + +#: gui/saveload-dialog.cpp:379 gui/saveload-dialog.cpp:529 +msgid "No time saved" +msgstr "×ùñßò áðïèçê. þñá" + +#: gui/saveload-dialog.cpp:380 gui/saveload-dialog.cpp:530 +msgid "No playtime saved" +msgstr "×ùñßò áðïèçê. þñá ðáé÷íéäéïý" + +#: gui/saveload-dialog.cpp:442 +msgid "Do you really want to delete this saved game?" +msgstr "ÈÝëåôå ðñáãìáôéêÜ íá óâÞóåôå áõôü ôï áðïèçêåõìÝíï ðáé÷íßäé;" + +#: gui/saveload-dialog.cpp:554 gui/saveload-dialog.cpp:1060 +msgid "Date: " +msgstr "Çìåñïìçíßá: " + +#: gui/saveload-dialog.cpp:558 gui/saveload-dialog.cpp:1066 +msgid "Time: " +msgstr "¿ñá: " + +#: gui/saveload-dialog.cpp:564 gui/saveload-dialog.cpp:1074 +msgid "Playtime: " +msgstr "¿ñá ðáé÷íéäéïý: " + +#: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665 +msgid "Untitled saved game" +msgstr "ÁðïèçêåõìÝíï ðáé÷íßäé ÷ùñßò üíïìá" + +#: gui/saveload-dialog.cpp:718 +msgid "Next" +msgstr "Åðüìåíï" + +#: gui/saveload-dialog.cpp:721 +msgid "Prev" +msgstr "Ðñïçãïýìåíï" + +#: gui/saveload-dialog.cpp:924 +msgid "New Save" +msgstr "ÍÝá ÁðïèÞêåõóç" + +#: gui/saveload-dialog.cpp:924 +msgid "Create a new saved game" +msgstr "Äçìéïõñãßá íÝïõ áðïèçêåõìÝíïõ ðáé÷íéäéïý" + +#: gui/saveload-dialog.cpp:1053 +msgid "Name: " +msgstr "¼íïìá: " + +#: gui/saveload-dialog.cpp:1131 +#, c-format +msgid "Enter a description for slot %d:" +msgstr "ÅéóÜãåôå ðåñéãñáöÞ ãéá ôç èõñßäá %d:" + +#: gui/storagewizarddialog.cpp:55 +#, c-format +msgid "%s Storage Connection Wizard" +msgstr "%s Ïäçãüò Óýíäåóçò ÁðïèÞêåõóçò" + +#: gui/storagewizarddialog.cpp:58 +msgid "Navigate to the following URL:" +msgstr "Ðëïçãçèåßôå óôçí áêüëïõèç äéåýèõíóç URL:" + +#: gui/storagewizarddialog.cpp:61 +msgid "Obtain the code from the storage, enter it" +msgstr "ÁðïêôÞóôå ôïí êùäéêü áðü ôçí áðïèÞêåõóç, åéóÜãåôÝ ôïí" + +#: gui/storagewizarddialog.cpp:62 +msgid "in the following field and press 'Connect':" +msgstr "óôï ðáñáêÜôù ðåäßï êáé ðáôÞóôå \"Óýíäåóç\":" + +#: gui/storagewizarddialog.cpp:69 +msgid "Open URL" +msgstr "¶íïéãìá äéåýèõíóçò URL" + +#: gui/storagewizarddialog.cpp:70 +msgid "Paste" +msgstr "Åðéêüëëçóç" + +#: gui/storagewizarddialog.cpp:70 +msgid "Pastes clipboard contents into fields" +msgstr "Åðéêüëëçóç ðåñéå÷üìåíïõ ðñü÷åéñïõ óå ðåäßá" + +#: gui/storagewizarddialog.cpp:78 +msgid "You will be directed to ScummVM's page where" +msgstr "Èá ïäçãçèåßôå óôç óåëßäá ScummVM üðïõ" + +#: gui/storagewizarddialog.cpp:79 +msgid "you should allow it to access your storage." +msgstr "èá ðñÝðåé íá åðéôñÝøåôå ôçí ðñüóâáóç óôïí áðïèçêåõôéêü ÷þñï óáò." + +#: gui/storagewizarddialog.cpp:112 +msgid "Another Storage is active. Do you want to interrupt it?" +msgstr "ÊÜðïéá Üëëç ÁðïèÞêåõóç åßíáé åíåñãÞ. Åðéèõìåßôå íá ôç äéáêüøåôå;" + +#: gui/storagewizarddialog.cpp:121 +msgid "Wait until current Storage finishes up and try again." +msgstr "ÁíáìïíÞ ìÝ÷ñé íá ïëïêëçñùèåß ç ôñÝ÷ïõóá ÁðïèÞêåõóç êáé äïêéìÜóôå îáíÜ." + +#: gui/storagewizarddialog.cpp:182 +#, c-format +msgid "Field %s has a mistake in it." +msgstr "Ôï ðåäßï %s ðåñéÝ÷åé Ýíá ëÜèïò." + +#: gui/storagewizarddialog.cpp:184 +#, c-format +msgid "Fields %s have mistakes in them." +msgstr "Ôá ðåäßá %s ðåñéÝ÷ïõí ëÜèç." + +#: gui/storagewizarddialog.cpp:199 +msgid "All OK!" +msgstr "¼ëá OK!" + +#: gui/storagewizarddialog.cpp:201 +msgid "Invalid code" +msgstr "ÅóöáëìÝíïò êùäéêüò" + +#: gui/storagewizarddialog.cpp:209 +msgid "" +"Failed to open URL!\n" +"Please navigate to this page manually." +msgstr "" +"Áðïôõ÷ßá áíïßãìáôïò ôïõ URL!\n" +"Ðáñáêáëïýìå, ìåôáöåñèåßôå óå áõôÞ ôç óåëßäá ÷åéñïêßíçôá." + +#: gui/themebrowser.cpp:45 +msgid "Select a Theme" +msgstr "ÅðéëÝîôå èÝìá" + +#: gui/ThemeEngine.cpp:452 +msgid "Disabled GFX" +msgstr "ÁðåíåñãïðïéçìÝíá ãñáöéêÜ" + +#: gui/ThemeEngine.cpp:452 +msgctxt "lowres" +msgid "Disabled GFX" +msgstr "Áðåíåñã. ãñáöéêÜ" + +#: gui/ThemeEngine.cpp:453 +msgid "Standard Renderer" +msgstr "ÊáíïíéêÞ Áðåéêüíéóç" + +#: gui/ThemeEngine.cpp:453 engines/scumm/dialogs.cpp:659 +msgid "Standard" +msgstr "Êáíïíéêü" + +#: gui/ThemeEngine.cpp:455 +msgid "Antialiased Renderer" +msgstr "ÅîïìáëõìÝíç Áðüäïóç" + +#: gui/ThemeEngine.cpp:455 +msgid "Antialiased" +msgstr "ÅîïìáëõìÝíç" + +#: gui/updates-dialog.cpp:51 +msgid "" +"ScummVM now supports automatic check for updates\n" +"which requires access to the Internet.\n" +"\n" +"Would you like to enable this feature?" +msgstr "" +"Ôï ScummVM ôþñá õðïóôçñßæåé áõôüìáôï Ýëåã÷ï ãéá åíçìåñþóåéò\n" +"ôï ïðïßï áðáéôåß ðñüóâáóç óôï Internet.\n" +"\n" +"ÈÝëåôå íá åíåñãïðïéÞóåôå áõôÞ ôç äõíáôüôçôá;" + +#: gui/updates-dialog.cpp:55 +msgid "(You can always enable it in the options dialog on the Misc tab)" +msgstr "" +"(Ìðïñåßôå ðÜíôá íá ôçí åíåñãïðïéÞóåôå óôï ðáñÜèõñï äéáëüãïõ ÅðéëïãÝò óôçí " +"êáñôÝëá ÄéÜöïñá)" + +#: gui/updates-dialog.cpp:92 +msgid "Check for updates automatically" +msgstr "Áõôüìáôïò Ýëåã÷ïò åíçìåñþóåùí" + +#: gui/updates-dialog.cpp:111 +msgid "Proceed" +msgstr "Ðñï÷þñá" + +#: gui/widget.cpp:366 gui/widget.cpp:368 gui/widget.cpp:374 gui/widget.cpp:376 +msgid "Clear value" +msgstr "ÓâÞóéìï ôéìÞò" + +#: base/main.cpp:253 +#, c-format +msgid "Engine does not support debug level '%s'" +msgstr "Ç ìç÷áíÞ äåí õðïóôçñßæåé åðßðåäï åíôïðéóìïý óöáëìÜôùí '%s'" + +#: base/main.cpp:327 +msgid "Menu" +msgstr "Ìåíïý" + +#: base/main.cpp:330 backends/platform/symbian/src/SymbianActions.cpp:45 +#: backends/platform/wince/CEActionsPocket.cpp:45 +#: backends/platform/wince/CEActionsSmartphone.cpp:46 +msgid "Skip" +msgstr "ÐáñÜëåéøç" + +#: base/main.cpp:333 backends/platform/symbian/src/SymbianActions.cpp:50 +#: backends/platform/wince/CEActionsPocket.cpp:42 +msgid "Pause" +msgstr "Ðáýóç" + +#: base/main.cpp:336 +msgid "Skip line" +msgstr "ÐáñÜëåéøç ãñáììÞò" + +#: base/main.cpp:547 +msgid "Error running game:" +msgstr "ÓöÜëìá êáôÜ ôçí åêôÝëåóç ôïõ ðáé÷íéäéïý:" + +#: base/main.cpp:594 +msgid "Could not find any engine capable of running the selected game" +msgstr "" +"Äåí Þôáí äõíáôÞ ç åýñåóç ìç÷áíÞò ç ïðïßá íá ìðïñåß íá åêôåëÝóåé ôï " +"óõãêåêñéìÝíï ðáé÷íßäé" + +#: common/error.cpp:38 +msgid "No error" +msgstr "ÊáíÝíá óöÜëìá" + +#: common/error.cpp:40 +msgid "Game data not found" +msgstr "Äå âñÝèçêáí äåäïìÝíá ðáé÷íéäéïý" + +#: common/error.cpp:42 +msgid "Game id not supported" +msgstr "Ôï áíáãíùñéóôéêü ðáé÷íéäéïý äåí õðïóôçñßæåôáé" + +#: common/error.cpp:44 +msgid "Unsupported color mode" +msgstr "Ìç õðïóôçñéæüìåíç ëåéôïõñãßá ÷ñþìáôïò" + +#: common/error.cpp:47 +msgid "Read permission denied" +msgstr "¶ñíçóç Üäåéáò áíÜãíùóçò" + +#: common/error.cpp:49 +msgid "Write permission denied" +msgstr "¶ñíçóç Üäåéáò åããñáöÞò" + +#: common/error.cpp:52 +msgid "Path does not exist" +msgstr "Ç äéáäñïìÞ äåí õðÜñ÷åé" + +#: common/error.cpp:54 +msgid "Path not a directory" +msgstr "Ç äéáäñïìÞ äåí åßíáé öÜêåëïò" + +#: common/error.cpp:56 +msgid "Path not a file" +msgstr "Ç äéáäñïìÞ äåí åßíáé áñ÷åßï" + +#: common/error.cpp:59 +msgid "Cannot create file" +msgstr "Äåí åßíáé äõíáôÞ ç äçìéïõñãßá ôïõ áñ÷åßïõ" + +#: common/error.cpp:61 +msgid "Reading data failed" +msgstr "Ç áíÜãíùóç äåäïìÝíùí áðÝôõ÷å" + +#: common/error.cpp:63 +msgid "Writing data failed" +msgstr "Ç åããñáöÞ äåäïìÝíùí áðÝôõ÷å" + +#: common/error.cpp:66 +msgid "Could not find suitable engine plugin" +msgstr "Äåí Þôáí äõíáôÞ ç åýñåóç êáôÜëëçëïõ ðñüóèåôïõ ìç÷áíÞò" + +#: common/error.cpp:68 +msgid "Engine plugin does not support saved games" +msgstr "Ôï ðñüóèåôï ìç÷áíÞò äåí õðïóôçñßæåé áðïèçêåõìÝíá ðáé÷íßäéá" + +#: common/error.cpp:71 +msgid "User canceled" +msgstr "Ï ÷ñÞóôçò áêýñùóå" + +#: common/error.cpp:75 +msgid "Unknown error" +msgstr "¶ãíùóôï óöÜëìá" + +#. I18N: Hercules is graphics card name +#: common/rendermode.cpp:35 +msgid "Hercules Green" +msgstr "ÐñÜóéíç Hercules" + +#: common/rendermode.cpp:36 +msgid "Hercules Amber" +msgstr "Ðïñôïêáëß Hercules" + +#: common/rendermode.cpp:42 +msgid "PC-9821 (256 Colors)" +msgstr "PC-9821 (256 ×ñþìáôá)" + +#: common/rendermode.cpp:43 +msgid "PC-9801 (16 Colors)" +msgstr "PC-9801 (16 ×ñþìáôá)" + +#: common/rendermode.cpp:73 +msgctxt "lowres" +msgid "Hercules Green" +msgstr "ÐñÜóéíç Hercules" + +#: common/rendermode.cpp:74 +msgctxt "lowres" +msgid "Hercules Amber" +msgstr "Ðïñôïêáëß Hercules" + +#: common/updates.cpp:58 +msgid "Daily" +msgstr "ÊáèçìåñéíÜ" + +#: common/updates.cpp:60 +msgid "Weekly" +msgstr "Åâäïìáäéáßá" + +#: common/updates.cpp:62 +msgid "Monthly" +msgstr "Ìçíéáßá" + +#: common/updates.cpp:64 +msgid "<Bad value>" +msgstr "<ÅóöáëìÝíç ôéìÞ>" + +#: engines/advancedDetector.cpp:335 +#, c-format +msgid "" +"The game in '%s' seems to be unknown.\n" +"Please, report the following data to the ScummVM team along with name\n" +"of the game you tried to add and its version, language, etc.:" +msgstr "" +"Ôï ðáé÷íßäé óôï '%s' öáßíåôáé íá åßíáé Üãíùóôï.\n" +"Ðáñáêáëïýìå, áíáöÝñåôå ôá áêüëïõèá óôïé÷åßá óôçí ïìÜäá ScummVM ìáæß ìå ôï " +"üíïìá\n" +"ôïõ ðáé÷íéäéïý ðïõ ðñïóðáèÞóáôå íá ðñïóèÝóåôå êáé ôçí Ýêäïóç, ôç ãëþóóá ôïõ, " +"êëð.:" + +#: engines/dialogs.cpp:85 +msgid "~R~esume" +msgstr "~Ó~õíÝ÷åéá" + +#: engines/dialogs.cpp:87 engines/mohawk/dialogs.cpp:96 +msgid "~L~oad" +msgstr "~Ö~üñôùóç" + +#: engines/dialogs.cpp:91 engines/mohawk/dialogs.cpp:97 +msgid "~S~ave" +msgstr "~Á~ðïèÞêåõóç" + +#: engines/dialogs.cpp:95 +msgid "~O~ptions" +msgstr "~Å~ðéëïãÝò" + +#: engines/dialogs.cpp:100 +msgid "~H~elp" +msgstr "~Â~ïÞèåéá" + +#: engines/dialogs.cpp:102 +msgid "~A~bout" +msgstr "~Ð~åñß" + +#: engines/dialogs.cpp:105 engines/dialogs.cpp:181 +msgid "~R~eturn to Launcher" +msgstr "Åðéó~ô~ñïöÞ óôïí ÏäçãçôÞ" + +#: engines/dialogs.cpp:107 engines/dialogs.cpp:183 +msgctxt "lowres" +msgid "~R~eturn to Launcher" +msgstr "Åðéó~ô~ñ. óôïí ÏäçãçôÞ" + +#: engines/dialogs.cpp:116 engines/agi/saveload.cpp:761 +#: engines/avalanche/parser.cpp:1900 engines/cge/events.cpp:72 +#: engines/cge2/events.cpp:65 engines/cine/various.cpp:348 +#: engines/cruise/menu.cpp:212 engines/dm/loadsave.cpp:196 +#: engines/drascula/saveload.cpp:364 engines/dreamweb/saveload.cpp:262 +#: engines/gnap/menu.cpp:464 engines/hugo/file.cpp:298 +#: engines/mads/nebular/dialogs_nebular.cpp:350 engines/mohawk/dialogs.cpp:104 +#: engines/neverhood/menumodule.cpp:880 engines/pegasus/pegasus.cpp:377 +#: engines/sci/engine/kfile.cpp:891 engines/sci/engine/kfile.cpp:1167 +#: engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 +#: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 +#: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 +msgid "Save game:" +msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý:" + +#: engines/dialogs.cpp:116 backends/platform/symbian/src/SymbianActions.cpp:44 +#: backends/platform/wince/CEActionsPocket.cpp:43 +#: backends/platform/wince/CEActionsPocket.cpp:267 +#: backends/platform/wince/CEActionsSmartphone.cpp:45 +#: backends/platform/wince/CEActionsSmartphone.cpp:231 +#: engines/agi/saveload.cpp:761 engines/avalanche/parser.cpp:1900 +#: engines/cge/events.cpp:72 engines/cge2/events.cpp:65 +#: engines/cine/various.cpp:348 engines/cruise/menu.cpp:212 +#: engines/dm/loadsave.cpp:196 engines/drascula/saveload.cpp:364 +#: engines/dreamweb/saveload.cpp:262 engines/gnap/menu.cpp:464 +#: engines/hugo/file.cpp:298 engines/mads/nebular/dialogs_nebular.cpp:350 +#: engines/mohawk/dialogs.cpp:104 engines/neverhood/menumodule.cpp:880 +#: engines/parallaction/saveload.cpp:209 engines/pegasus/pegasus.cpp:377 +#: engines/sci/engine/kfile.cpp:891 engines/sci/engine/kfile.cpp:1167 +#: engines/scumm/dialogs.cpp:184 engines/sherlock/scalpel/scalpel.cpp:1250 +#: engines/sherlock/tattoo/widget_files.cpp:75 engines/toltecs/menu.cpp:291 +#: engines/toon/toon.cpp:3340 engines/tsage/scenes.cpp:599 +#: engines/wage/saveload.cpp:758 engines/zvision/file/save_manager.cpp:49 +msgid "Save" +msgstr "ÁðïèÞêåõóç" + +#: engines/dialogs.cpp:145 +msgid "" +"Sorry, this engine does not currently provide in-game help. Please consult " +"the README for basic information, and for instructions on how to obtain " +"further assistance." +msgstr "" +"Ëõðïýìáóôå, áõôÞ ç ìç÷áíÞ äåí ðáñÝ÷åé ðñïò ôï ðáñüí âïÞèåéá åíôüò " +"ðáé÷íéäéïý. Ðáñáêáëïýìå óõìâïõëåõôåßôå ôï áñ÷åßï README ãéá âáóéêÝò " +"ðëçñïöïñßåò, êáèþò êáé ãéá ïäçãßåò ó÷åôéêÜ ìå ôï ðþò íá ëÜâåôå ðåñáéôÝñù " +"âïÞèåéá." + +#: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393 +#, c-format +msgid "" +"Failed to save game (%s)! Please consult the README for basic information, " +"and for instructions on how to obtain further assistance." +msgstr "" +"Áðïôõ÷ßá áðïèÞêåõóçò ôïõ ðáé÷íéäéïý (%s)! Ðáñáêáëïýìå óõìâïõëåõôåßôå ôï " +"áñ÷åßï README ãéá âáóéêÝò ðëçñïöïñßåò, êáèþò êáé ãéá ïäçãßåò ó÷åôéêÜ ìå ôï " +"ðþò íá ëÜâåôå ðåñáéôÝñù âïÞèåéá." + +#: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100 +#: engines/tsage/dialogs.cpp:112 +msgid "~O~K" +msgstr "~Ï~Ê" + +#: engines/dialogs.cpp:308 engines/mohawk/dialogs.cpp:101 +#: engines/tsage/dialogs.cpp:113 +msgid "~C~ancel" +msgstr "~Á~êýñùóç" + +#: engines/dialogs.cpp:311 +msgid "~K~eys" +msgstr "Ð~ë~Þêôñá" + +#: engines/engine.cpp:346 +msgid "Could not initialize color format." +msgstr "Äåí Þôáí äõíáôÞ ç ðñïåôïéìáóßá ìïñöÞò ÷ñþìáôïò." + +#: engines/engine.cpp:354 +msgid "Could not switch to video mode: '" +msgstr "Äåí Þôáí äõíáôÞ ç áëëáãÞ óå ëåéôïõñãßá ïèüíçò: '" + +#: engines/engine.cpp:363 +msgid "Could not apply aspect ratio setting." +msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ñýèìéóçò äéüñèùóçò áíáëïãßáò äéáóôÜóåùí." + +#: engines/engine.cpp:368 +msgid "Could not apply fullscreen setting." +msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ñýèìéóçò ðëÞñïõò ïèüíçò." + +#: engines/engine.cpp:373 +msgid "Could not apply filtering setting." +msgstr "Äåí Þôáí äõíáôÞ ç åöáñìïãÞ ñýèìéóçò öéëôñáñßóìáôïò." + +#: engines/engine.cpp:473 +msgid "" +"You appear to be playing this game directly\n" +"from the CD. This is known to cause problems,\n" +"and it is therefore recommended that you copy\n" +"the data files to your hard disk instead.\n" +"See the README file for details." +msgstr "" +"Öáßíåôå üôé ðáßæåôå ôï ðáé÷íßäé áðåõèåßáò\n" +"áðü ôï CD. Áõôü åßíáé ãíùóôü üôé ðñïêáëåß ðñïâëÞìáôá,\n" +"êáé ùò åê ôïýôïõ óõíéóôÜôáé íá áíôéãñÜøåôå áíô'áõôïý\n" +"ôá áñ÷åßá äåäïìÝíùí óôï óêëçñü óáò äßóêï.\n" +"Äåßôå ôï áñ÷åßï README ãéá ëåðôïìÝñåéåò." + +#: engines/engine.cpp:484 +msgid "" +"This game has audio tracks in its disk. These\n" +"tracks need to be ripped from the disk using\n" +"an appropriate CD audio extracting tool in\n" +"order to listen to the game's music.\n" +"See the README file for details." +msgstr "" +"Áõôü ôï ðáé÷íßäé Ý÷åé êïììÜôéá Þ÷ïõ óôï äßóêï ôïõ. ÁõôÜ ôá\n" +"êïììÜôéá ðñÝðåé íá áíôéãñáöïýí áðü ôï äßóêï ìå ôç ÷ñÞóç\n" +"åíüò êáôÜëëçëïõ åñãáëåßïõ åîáãùãÞò Þ÷ïõ CD þóôå\n" +"íá áêïýóåôå ôç ìïõóéêÞ ôïõ ðáé÷íéäéïý.\n" +"Äåßôå ôï áñ÷åßï README ãéá ëåðôïìÝñåéåò." + +#: engines/engine.cpp:542 +#, c-format +msgid "" +"Failed to load saved game (%s)! Please consult the README for basic " +"information, and for instructions on how to obtain further assistance." +msgstr "" +"Áðïôõ÷ßá öüñôùóçò áðïèçêåõìÝíïõ ðáé÷íéäéïý (%s)! Ðáñáêáëïýìå óõìâïõëåõôåßôå " +"ôï áñ÷åßï README ãéá âáóéêÝò ðëçñïöïñßåò, êáèþò êáé ãéá ïäçãßåò ó÷åôéêÜ ìå " +"ôï ðþò íá ëÜâåôå ðåñáéôÝñù âïÞèåéá." + +#: engines/engine.cpp:555 +msgid "" +"WARNING: The game you are about to start is not yet fully supported by " +"ScummVM. As such, it is likely to be unstable, and any saved game you make " +"might not work in future versions of ScummVM." +msgstr "" +"ÐÑÏÓÏ×Ç: Ôï ðáé÷íßäé ðïõ èá îåêéíÞóåé, äåí õðïóôçñßæåôáé áêüìá ðëÞñùò áðü ôï " +"ScummVM. Ùò åê ôïýôïõ, åßíáé ðéèáíü íá åßíáé áóôáèÝò, êáé êÜèå áðïèçêåõìÝíï " +"ðáé÷íßäé ðïõ êÜíåôå ìðïñåß íá ìç ëåéôïõñãåß óå ìåëëïíôéêÝò åêäüóåéò ôïõ " +"ScummVM." + +#: engines/engine.cpp:558 +msgid "Start anyway" +msgstr "Åêêßíçóç ïýôùò Þ Üëëùò" + +#: audio/adlib.cpp:2290 +msgid "AdLib Emulator" +msgstr "ÅîïìïéùôÞò Adlib" + +#: audio/fmopl.cpp:62 +msgid "MAME OPL emulator" +msgstr "ÅîïìïéùôÞò MAME OPL" + +#: audio/fmopl.cpp:64 +msgid "DOSBox OPL emulator" +msgstr "ÅîïìïéùôÞò DOSBox OPL" + +#: audio/fmopl.cpp:67 +msgid "ALSA Direct FM" +msgstr "ALSA Direct FM" + +#: audio/mididrv.cpp:209 +#, c-format +msgid "" +"The selected audio device '%s' was not found (e.g. might be turned off or " +"disconnected)." +msgstr "" +"Ç åðéëåãìÝíç óõóêåõÞ Þ÷ïõ '%s' äå âñÝèçêå (ð.÷. ìðïñåß íá åßíáé óâçóôÞ Þ " +"áðïóõíäåäåìÝíç)." + +#: audio/mididrv.cpp:209 audio/mididrv.cpp:221 audio/mididrv.cpp:257 +#: audio/mididrv.cpp:272 +msgid "Attempting to fall back to the next available device..." +msgstr "ÐñïóðÜèåéá ìåôÜðôùóçò óôçí åðüìåíç äéáèÝóéìç óõóêåõÞ ..." + +#: audio/mididrv.cpp:221 +#, c-format +msgid "" +"The selected audio device '%s' cannot be used. See log file for more " +"information." +msgstr "" +"Ç åðéëåãìÝíç óõóêåõÞ Þ÷ïõ '%s' äåí Þôáí äõíáôü íá ÷ñçóéìïðïéçèåß. Äåßôå ôï " +"áñ÷åßï êáôáãñáöÞò ãéá ðåñéóóüôåñåò ðëçñïöïñßåò." + +#: audio/mididrv.cpp:257 +#, c-format +msgid "" +"The preferred audio device '%s' was not found (e.g. might be turned off or " +"disconnected)." +msgstr "" +"Ç åðéèõìçôÞ óõóêåõÞ Þ÷ïõ '%s' äå âñÝèçêå (ð.÷. ìðïñåß íá åßíáé óâçóôÞ Þ " +"áðïóõíäåäåìÝíç)." + +#: audio/mididrv.cpp:272 +#, c-format +msgid "" +"The preferred audio device '%s' cannot be used. See log file for more " +"information." +msgstr "" +"Ç åðéèõìçôÞ óõóêåõÞ Þ÷ïõ '%s' äåí Þôáí äõíáôü íá ÷ñçóéìïðïéçèåß. Äåßôå ôï " +"áñ÷åßï êáôáãñáöÞò ãéá ðåñéóóüôåñåò ðëçñïöïñßåò." + +#: audio/mods/paula.cpp:196 +msgid "Amiga Audio Emulator" +msgstr "ÅîïìïéùôÞò ¹÷ïõ Amiga" + +#: audio/null.h:44 +msgid "No music" +msgstr "×ùñßò ìïõóéêÞ" + +#: audio/softsynth/appleiigs.cpp:33 +msgid "Apple II GS Emulator (NOT IMPLEMENTED)" +msgstr "ÅîïìïéùôÞò Apple II GS (ÄÅÍ Å×ÅÉ ÕËÏÐÏÉÇÈÅÉ)" + +#: audio/softsynth/cms.cpp:350 +msgid "Creative Music System Emulator" +msgstr "ÅîïìïéùôÞò Creative Music System" + +#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:33 +msgid "FM-Towns Audio" +msgstr "¹÷ïò FM-Towns" + +#: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:58 +msgid "PC-98 Audio" +msgstr "¹÷ïò PC-98" + +#: audio/softsynth/mt32.cpp:175 +msgid "Initializing MT-32 Emulator" +msgstr "Ðñïåôïéìáóßá ÅîïìïéùôÞ MT-32" + +#: audio/softsynth/mt32.cpp:437 +msgid "MT-32 Emulator" +msgstr "ÅîïìïéùôÞò MT-32" + +#: audio/softsynth/pcspk.cpp:139 +msgid "PC Speaker Emulator" +msgstr "ÅîïìïéùôÞò Ç÷åßïõ PC" + +#: audio/softsynth/pcspk.cpp:158 +msgid "IBM PCjr Emulator" +msgstr "ÅîïìïéùôÞò IBM PCjr" + +#: audio/softsynth/sid.cpp:1430 +msgid "C64 Audio Emulator" +msgstr "ÅîïìïéùôÞò ¹÷ïõ C64" + +#: backends/cloud/storage.cpp:211 +msgid "Saved games sync complete." +msgstr "Ï óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí ïëïêëçñþèçêå." + +#: backends/cloud/storage.cpp:222 +msgid "Saved games sync was cancelled." +msgstr "Ï óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí áêõñþèçêå." + +#: backends/cloud/storage.cpp:224 +msgid "" +"Saved games sync failed.\n" +"Check your Internet connection." +msgstr "" +"Ï óõã÷ñïíéóìüò áðïèçêåõìÝíùí ðáé÷íéäéþí áðÝôõ÷å.\n" +"ÅëÝãîôå ôç óýíäåóÞ óáò óôï Internet." + +#: backends/cloud/storage.cpp:328 +#, c-format +msgid "" +"Download complete.\n" +"Failed to download %u files." +msgstr "" +"Ç ìåôáöüñôùóç ïëïêëçñþèçêå.\n" +"Äåí Þôáí äõíáôÞ ç ìåôáöüñôùóç %u áñ÷åßùí." + +#: backends/cloud/storage.cpp:330 +msgid "Download complete." +msgstr "Ç ìåôáöüñôùóç ïëïêëçñþèçêå." + +#: backends/cloud/storage.cpp:340 +msgid "Download failed." +msgstr "Ç ìåôáöüñôùóç áðÝôõ÷å." + +#: backends/events/default/default-events.cpp:196 +msgid "Do you really want to return to the Launcher?" +msgstr "ÈÝëåôå ðñáãìáôéêÜ íá åðéóôñÝøåôå óôïí ÐñïùèçôÞ;" + +#: backends/events/default/default-events.cpp:196 +msgid "Launcher" +msgstr "ÐñïùèçôÞò" + +#: backends/events/default/default-events.cpp:218 +msgid "Do you really want to quit?" +msgstr "Åßóôå óßãïõñïé üôé èÝëåôå íá âãåßôå áðü ôï ðñüãñáììá;" + +#: backends/events/default/default-events.cpp:218 +#: backends/platform/symbian/src/SymbianActions.cpp:52 +#: backends/platform/wince/CEActionsPocket.cpp:44 +#: backends/platform/wince/CEActionsSmartphone.cpp:52 +#: engines/scumm/dialogs.cpp:188 engines/scumm/help.cpp:83 +#: engines/scumm/help.cpp:85 +msgid "Quit" +msgstr "¸îïäïò" + +#: backends/events/gph/gph-events.cpp:385 +#: backends/events/gph/gph-events.cpp:428 +#: backends/events/openpandora/op-events.cpp:168 +msgid "Touchscreen 'Tap Mode' - Left Click" +msgstr "'Ëåéôïõñãßá Tap' ïèüíçò áöÞò - Áñéóôåñü Click" + +#: backends/events/gph/gph-events.cpp:387 +#: backends/events/gph/gph-events.cpp:430 +#: backends/events/openpandora/op-events.cpp:170 +msgid "Touchscreen 'Tap Mode' - Right Click" +msgstr "'Ëåéôïõñãßá Tap' ïèüíçò áöÞò - Äåîß Click" + +#: backends/events/gph/gph-events.cpp:389 +#: backends/events/gph/gph-events.cpp:432 +#: backends/events/openpandora/op-events.cpp:172 +msgid "Touchscreen 'Tap Mode' - Hover (No Click)" +msgstr "" + +#: backends/events/gph/gph-events.cpp:409 +msgid "Maximum Volume" +msgstr "ÌÝãéóôç ¸íôáóç" + +#: backends/events/gph/gph-events.cpp:411 +msgid "Increasing Volume" +msgstr "Áýîçóç ¸íôáóçò" + +#: backends/events/gph/gph-events.cpp:417 +msgid "Minimal Volume" +msgstr "ÅëÜ÷éóôç ¸íôáóç" + +#: backends/events/gph/gph-events.cpp:419 +msgid "Decreasing Volume" +msgstr "Ìåßùóç ¸íôáóçò" + +#: backends/events/maemosdl/maemosdl-events.cpp:180 +msgid "Clicking Enabled" +msgstr "ÅíåñãïðïéçìÝíï Clicking" + +#: backends/events/maemosdl/maemosdl-events.cpp:180 +msgid "Clicking Disabled" +msgstr "ÁðåíåñãïðïéçìÝíï Clicking" + +#: backends/events/openpandora/op-events.cpp:174 +msgid "Touchscreen 'Tap Mode' - Hover (DPad Clicks)" +msgstr "" + +#: backends/events/symbiansdl/symbiansdl-events.cpp:186 +msgid "Do you want to quit ?" +msgstr "ÈÝëåôå íá âãåßôå áðü ôï ðñüãñáììá;" + +#. I18N: Trackpad mode toggle status. +#: backends/events/webossdl/webossdl-events.cpp:308 +msgid "Trackpad mode is now" +msgstr "Ç ëåéôïõñãßá trackpad åßíáé ôþñá" + +#. I18N: Trackpad mode on or off. +#. I18N: Auto-drag on or off. +#: backends/events/webossdl/webossdl-events.cpp:311 +#: backends/events/webossdl/webossdl-events.cpp:338 +msgid "ON" +msgstr "ÅíåñãïðïéçìÝíç" + +#: backends/events/webossdl/webossdl-events.cpp:311 +#: backends/events/webossdl/webossdl-events.cpp:338 +msgid "OFF" +msgstr "ÁðåíåñãïðïéçìÝíç" + +#: backends/events/webossdl/webossdl-events.cpp:315 +msgid "Swipe two fingers to the right to toggle." +msgstr "ÐåñÜóôå äýï äÜ÷ôõëá ðñïò ôá äåîéÜ ãéá åíáëëáãÞ." + +#. I18N: Auto-drag toggle status. +#: backends/events/webossdl/webossdl-events.cpp:335 +msgid "Auto-drag mode is now" +msgstr "Ç ëåéôïõñãßá auto-drag åßíáé ôþñá" + +#: backends/events/webossdl/webossdl-events.cpp:342 +msgid "Swipe three fingers to the right to toggle." +msgstr "ÐåñÜóôå ôñßá äÜ÷ôõëá ðñïò ôá äåîéÜ ãéá åíáëëáãÞ." + +#: backends/graphics/opengl/opengl-graphics.cpp:146 +msgid "OpenGL" +msgstr "OpenGL" + +#: backends/graphics/openglsdl/openglsdl-graphics.cpp:617 +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2462 +msgid "Windowed mode" +msgstr "Ëåéôïõñãßá ðáñáèýñïõ" + +#: backends/graphics/openglsdl/openglsdl-graphics.cpp:710 +#, c-format +msgid "Resolution: %dx%d" +msgstr "ÁíÜëõóç: %dx%d" + +#: backends/graphics/openglsdl/openglsdl-graphics.cpp:731 +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338 +msgid "Enabled aspect ratio correction" +msgstr "ÅíåñãïðïéçìÝíç äéüñèùóç áíáëïãßáò äéáóôÜóåùí" + +#: backends/graphics/openglsdl/openglsdl-graphics.cpp:733 +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2344 +msgid "Disabled aspect ratio correction" +msgstr "ÁðåíåñãïðïéçìÝíç äéüñèùóç áíáëïãßáò äéáóôÜóåùí" + +#: backends/graphics/openglsdl/openglsdl-graphics.cpp:753 +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362 +msgid "Filtering enabled" +msgstr "Åíåñãïðïßçóç öéëôñáñßóìáôïò" + +#: backends/graphics/openglsdl/openglsdl-graphics.cpp:755 +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364 +msgid "Filtering disabled" +msgstr "Áðåíåñãïðïßçóç öéëôñáñßóìáôïò" + +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47 +#: backends/graphics/wincesdl/wincesdl-graphics.cpp:88 +#: backends/graphics/wincesdl/wincesdl-graphics.cpp:95 +msgid "Normal (no scaling)" +msgstr "Êáíïíéêü (÷ùñßò êëéìÜêùóç)" + +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:66 +msgctxt "lowres" +msgid "Normal (no scaling)" +msgstr "Êáíïíéêü (÷ùñßò êëéìÜêùóç)" + +#: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2417 +msgid "Active graphics filter:" +msgstr "Åíåñãü ößëôñï ãñáöéêþí:" + +#: backends/keymapper/remap-dialog.cpp:48 +msgid "Keymap:" +msgstr "Áíôéóôïé÷ßóåéò ðëÞêôñùí:" + +#: backends/keymapper/remap-dialog.cpp:67 +msgid " (Effective)" +msgstr " (Éó÷ýïí)" + +#: backends/keymapper/remap-dialog.cpp:107 +msgid " (Active)" +msgstr " (Åíåñãü)" + +#: backends/keymapper/remap-dialog.cpp:107 +msgid " (Blocked)" +msgstr " (ÁðïêëåéóìÝíï)" + +#: backends/keymapper/remap-dialog.cpp:120 +msgid " (Global)" +msgstr " (Ïëéêü)" + +#: backends/keymapper/remap-dialog.cpp:128 +msgid " (Game)" +msgstr " (Ðáé÷íßäé)" + +#: backends/midi/windows.cpp:165 +msgid "Windows MIDI" +msgstr "Windows MIDI" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:56 +#: engines/scumm/dialogs.cpp:287 +msgid "~C~lose" +msgstr "~Ê~ëåßóéìï" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:57 +msgid "ScummVM Main Menu" +msgstr "Êåíôñéêü Ìåíïý ScummVM" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:63 +msgid "~L~eft handed mode" +msgstr "~Ë~åéôïõñãßá ãéá áñéóôåñü÷åéñåò" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:64 +msgid "~I~ndy fight controls" +msgstr "~×~åéñéóìïß ìÜ÷çò ºíôõ" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:65 +msgid "Show mouse cursor" +msgstr "ÐñïâïëÞ äñïìÝá ðïíôéêéïý" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:66 +msgid "Snap to edges" +msgstr "ÓõãêñÜôçóç óôéò Üêñåò" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:68 +msgid "Touch X Offset" +msgstr "Ìåôáôüðéóç ÁöÞò ×" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:75 +msgid "Touch Y Offset" +msgstr "Ìåôáôüðéóç ÁöÞò Ø" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:87 +msgid "Use laptop trackpad-style cursor control" +msgstr "×ñÞóç åëÝã÷ïõ äñïìÝá ôýðïõ laptop trackpad" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:88 +msgid "Tap for left click, double tap right click" +msgstr "ÐáôÞóôå ãéá áñéóôåñü click, ðáôÞóôå äéðëÜ ãéá äåîß click" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:90 +msgid "Sensitivity" +msgstr "Åõáéóèçóßá" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:99 +msgid "Initial top screen scale:" +msgstr "Áñ÷éêÞ ðÜíù êëßìáêá ïèüíçò:" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:105 +msgid "Main screen scaling:" +msgstr "Êýñéá êëéìÜêùóç ôçò ïèüíçò:" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:107 +msgid "Hardware scale (fast, but low quality)" +msgstr "Êëßìáêá õëéêïý (ãñÞãïñç, áëëÜ ÷áìçëÞò ðïéüôçôáò)" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:108 +msgid "Software scale (good quality, but slower)" +msgstr "Êëßìáêá ëïãéóìéêïý (êáëÞ ðïéüôçôá, áëëÜ ðéï áñãÞ)" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:109 +msgid "Unscaled (you must scroll left and right)" +msgstr "×ùñßò êëßìáêá (ðñÝðåé íá êõëßóåôå ôçí ïèüíç áñéóôåñÜ êáé äåîéÜ)" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:111 +msgid "Brightness:" +msgstr "Öùôåéíüôçôá:" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:121 +msgid "High quality audio (slower) (reboot)" +msgstr "¹÷ïò õøçëÞò ðïéüôçôáò (ðéï áñãü) (åðáíåêêßíçóç)" + +#: backends/platform/ds/arm9/source/dsoptions.cpp:122 +msgid "Disable power off" +msgstr "Áðåíåñãïðïßçóç óâçóßìáôïò" + +#: backends/platform/ios7/ios7_osys_events.cpp:309 +#: backends/platform/ios7/ios7_osys_events.cpp:519 +#: backends/platform/iphone/osys_events.cpp:300 +msgid "Mouse-click-and-drag mode enabled." +msgstr "Åíåñãïðïßçóç ëåéôïõñãßáò ðïíôéêéïý click-and-drag." + +#: backends/platform/ios7/ios7_osys_events.cpp:311 +#: backends/platform/ios7/ios7_osys_events.cpp:521 +#: backends/platform/iphone/osys_events.cpp:302 +msgid "Mouse-click-and-drag mode disabled." +msgstr "Áðåíåñãïðïßçóç ëåéôïõñãßáò ðïíôéêéïý click-and-drag." + +#: backends/platform/ios7/ios7_osys_events.cpp:322 +#: backends/platform/ios7/ios7_osys_events.cpp:540 +#: backends/platform/iphone/osys_events.cpp:313 +msgid "Touchpad mode enabled." +msgstr "Ëåéôïõñãßá Touchpad åíåñãïðïéçìÝíç." + +#: backends/platform/ios7/ios7_osys_events.cpp:324 +#: backends/platform/ios7/ios7_osys_events.cpp:542 +#: backends/platform/iphone/osys_events.cpp:315 +msgid "Touchpad mode disabled." +msgstr "Ëåéôïõñãßá Touchpad áðåíåñãïðïéçìÝíç." + +#: backends/platform/maemo/maemo.cpp:208 +msgid "Click Mode" +msgstr "Ëåéôïõñãßá Click" + +#: backends/platform/maemo/maemo.cpp:214 +#: backends/platform/symbian/src/SymbianActions.cpp:42 +#: backends/platform/tizen/form.cpp:275 +#: backends/platform/wince/CEActionsPocket.cpp:60 +#: backends/platform/wince/CEActionsSmartphone.cpp:43 +msgid "Left Click" +msgstr "Áñéóôåñü Click" + +#: backends/platform/maemo/maemo.cpp:217 +msgid "Middle Click" +msgstr "Ìåóáßï Click" + +#: backends/platform/maemo/maemo.cpp:220 +#: backends/platform/symbian/src/SymbianActions.cpp:43 +#: backends/platform/tizen/form.cpp:267 +#: backends/platform/wince/CEActionsSmartphone.cpp:44 +msgid "Right Click" +msgstr "Äåîß Click" + +#: backends/platform/sdl/macosx/appmenu_osx.mm:88 +msgid "Hide ScummVM" +msgstr "Áðüêñõøç ScummVM" + +#: backends/platform/sdl/macosx/appmenu_osx.mm:93 +msgid "Hide Others" +msgstr "Áðüêñõøç ¶ëëùí" + +#: backends/platform/sdl/macosx/appmenu_osx.mm:98 +msgid "Show All" +msgstr "ÐñïâïëÞ üëùí" + +#: backends/platform/sdl/macosx/appmenu_osx.mm:120 +#: backends/platform/sdl/macosx/appmenu_osx.mm:131 +msgid "Window" +msgstr "ÐáñÜèõñï" + +#: backends/platform/sdl/macosx/appmenu_osx.mm:125 +msgid "Minimize" +msgstr "Åëá÷éóôïðïßçóç" + +#: backends/platform/symbian/src/SymbianActions.cpp:38 +#: backends/platform/wince/CEActionsSmartphone.cpp:39 +msgid "Up" +msgstr "ÐÜíù" + +#: backends/platform/symbian/src/SymbianActions.cpp:39 +#: backends/platform/wince/CEActionsSmartphone.cpp:40 +msgid "Down" +msgstr "ÊÜôù" + +#: backends/platform/symbian/src/SymbianActions.cpp:40 +#: backends/platform/wince/CEActionsSmartphone.cpp:41 +msgid "Left" +msgstr "ÁñéóôåñÜ" + +#: backends/platform/symbian/src/SymbianActions.cpp:41 +#: backends/platform/wince/CEActionsSmartphone.cpp:42 +msgid "Right" +msgstr "ÄåîéÜ" + +#: backends/platform/symbian/src/SymbianActions.cpp:46 +#: backends/platform/wince/CEActionsSmartphone.cpp:47 +msgid "Zone" +msgstr "Æþíç" + +#: backends/platform/symbian/src/SymbianActions.cpp:47 +#: backends/platform/wince/CEActionsPocket.cpp:54 +#: backends/platform/wince/CEActionsSmartphone.cpp:48 +msgid "Multi Function" +msgstr "ÐïëëáðëÞ Ëåéôïõñãßá" + +#: backends/platform/symbian/src/SymbianActions.cpp:48 +msgid "Swap character" +msgstr "ÁíôáëëáãÞ ÷áñáêôÞñá" + +#: backends/platform/symbian/src/SymbianActions.cpp:49 +msgid "Skip text" +msgstr "ÐáñÜëåéøç êåéìÝíïõ" + +#: backends/platform/symbian/src/SymbianActions.cpp:51 +msgid "Fast mode" +msgstr "ÃñÞãïñç ëåéôïõñãßá" + +#: backends/platform/symbian/src/SymbianActions.cpp:53 +msgid "Debugger" +msgstr "ÅíôïðéóôÞò óöáëìÜôùí" + +#: backends/platform/symbian/src/SymbianActions.cpp:54 +msgid "Global menu" +msgstr "Êáèïëéêü ìåíïý" + +#: backends/platform/symbian/src/SymbianActions.cpp:55 +msgid "Virtual keyboard" +msgstr "Åéêïíéêü ðëçêôñïëüãéï" + +#: backends/platform/symbian/src/SymbianActions.cpp:56 +msgid "Key mapper" +msgstr "" + +#: backends/platform/tizen/form.cpp:263 +msgid "Right Click Once" +msgstr "Äåîß Click Ìéá ÖïñÜ" + +#: backends/platform/tizen/form.cpp:271 +msgid "Move Only" +msgstr "Ìüíï Ìåôáêßíçóç" + +#: backends/platform/tizen/form.cpp:294 +msgid "Escape Key" +msgstr "ÐëÞêôñï Escape" + +#: backends/platform/tizen/form.cpp:299 +msgid "Game Menu" +msgstr "Ìåíïý Ðáé÷íéäéïý" + +#: backends/platform/tizen/form.cpp:304 +msgid "Show Keypad" +msgstr "ÐñïâïëÞ Áñéèìçôéêïý Ðëçêôñïëïãßïõ" + +#: backends/platform/tizen/form.cpp:309 +msgid "Control Mouse" +msgstr "¸ëåã÷ïò Ðïíôéêéïý" + +#: backends/platform/tizen/fs.cpp:259 +msgid "[ Data ]" +msgstr "[ ÄåäïìÝíá ]" + +#: backends/platform/tizen/fs.cpp:263 +msgid "[ Resources ]" +msgstr "[ Ðüñïé ]" + +#: backends/platform/tizen/fs.cpp:267 +msgid "[ SDCard ]" +msgstr "[ ÊÜñôá SD ]" + +#: backends/platform/tizen/fs.cpp:271 +msgid "[ Media ]" +msgstr "[ ÌÝóá ]" + +#: backends/platform/tizen/fs.cpp:275 +msgid "[ Shared ]" +msgstr "[ Êïéíü÷ñçóôá ]" + +#: backends/platform/wii/options.cpp:51 +msgid "Video" +msgstr "Âßíôåï" + +#: backends/platform/wii/options.cpp:54 +msgid "Current video mode:" +msgstr "ÔñÝ÷ïõóá ëåéôïõñãßá âßíôåï:" + +#: backends/platform/wii/options.cpp:56 +msgid "Double-strike" +msgstr "Äéðëü-êôýðçìá" + +#: backends/platform/wii/options.cpp:60 +msgid "Horizontal underscan:" +msgstr "Ïñéæüíôéá ÕðïóÜñùóç:" + +#: backends/platform/wii/options.cpp:66 +msgid "Vertical underscan:" +msgstr "ÊÜèåôç ÕðïóÜñùóç:" + +#: backends/platform/wii/options.cpp:71 +msgid "Input" +msgstr "Åßóïäïò" + +#: backends/platform/wii/options.cpp:74 +msgid "GC Pad sensitivity:" +msgstr "Åõáéóèçóßá GC Pad:" + +#: backends/platform/wii/options.cpp:80 +msgid "GC Pad acceleration:" +msgstr "ÅðéôÜ÷õíóç GC Pad:" + +#: backends/platform/wii/options.cpp:86 +msgid "DVD" +msgstr "DVD" + +#: backends/platform/wii/options.cpp:89 backends/platform/wii/options.cpp:101 +msgid "Status:" +msgstr "ÊáôÜóôáóç:" + +#: backends/platform/wii/options.cpp:90 backends/platform/wii/options.cpp:102 +msgid "Unknown" +msgstr "¶ãíùóôï" + +#: backends/platform/wii/options.cpp:93 +msgid "Mount DVD" +msgstr "ÐñïóÜñôçóç DVD" + +#: backends/platform/wii/options.cpp:94 +msgid "Unmount DVD" +msgstr "ÁðïðñïóÜñôçóç DVD" + +#: backends/platform/wii/options.cpp:98 +msgid "SMB" +msgstr "SMB" + +#: backends/platform/wii/options.cpp:106 +msgid "Server:" +msgstr "ÅîõðçñåôçôÞò:" + +#: backends/platform/wii/options.cpp:110 +msgid "Share:" +msgstr "Êïéíü÷ñçóôï:" + +#: backends/platform/wii/options.cpp:118 +msgid "Password:" +msgstr "Êùäéêüò:" + +#: backends/platform/wii/options.cpp:121 +msgid "Init network" +msgstr "Ðñïåôïéìáóßá äéêôýïõ" + +#: backends/platform/wii/options.cpp:123 +msgid "Mount SMB" +msgstr "ÐñïóÜñôçóç SMB" + +#: backends/platform/wii/options.cpp:124 +msgid "Unmount SMB" +msgstr "ÁðïðñïóÜñôçóç SMB" + +#: backends/platform/wii/options.cpp:143 +msgid "DVD Mounted successfully" +msgstr "Ôï DVD ðñïóáñôÞèçêå ìå åðéôõ÷ßá" + +#: backends/platform/wii/options.cpp:146 +msgid "Error while mounting the DVD" +msgstr "ÓöÜëìá êáôÜ ôçí ðñïóÜñôçóç ôïõ DVD" + +#: backends/platform/wii/options.cpp:148 +msgid "DVD not mounted" +msgstr "Ôï DVD äåí ðñïóáñôÞèçêå" + +#: backends/platform/wii/options.cpp:161 +msgid "Network up, share mounted" +msgstr "Äßêôõï åíåñãü, ï êïéíü÷ñçóôïò öÜêåëïò ðñïóáñôÞèçêå" + +#: backends/platform/wii/options.cpp:163 +msgid "Network up" +msgstr "Äßêôõï åíåñãü" + +#: backends/platform/wii/options.cpp:166 +msgid ", error while mounting the share" +msgstr ", óöÜëìá êáôÜ ôçí ðñïóÜñôçóç ôïõ êïéíü÷ñçóôïõ öáêÝëïõ" + +#: backends/platform/wii/options.cpp:168 +msgid ", share not mounted" +msgstr ", ï êïéíü÷ñçóôïò öÜêåëïò äåí ðñïóáñôÞèçêå" + +#: backends/platform/wii/options.cpp:174 +msgid "Network down" +msgstr "Äßêôõï áíåíåñãü" + +#: backends/platform/wii/options.cpp:178 +msgid "Initializing network" +msgstr "Áñ÷éêïðïßçóç äéêôýïõ" + +#: backends/platform/wii/options.cpp:182 +msgid "Timeout while initializing network" +msgstr "ÅîÜíôëçóç ÷ñïíéêïý ïñßïõ êáôÜ ôçí áñ÷éêïðïßçóç äéêôýïõ" + +#: backends/platform/wii/options.cpp:186 +#, c-format +msgid "Network not initialized (%d)" +msgstr "Ôï äßêôõï äåí áñ÷éêïðïéÞèçêå (%d)" + +#: backends/platform/wince/CEActionsPocket.cpp:46 +msgid "Hide Toolbar" +msgstr "Áðüêñõøç ÃñáììÞò Åñãáëåßùí" + +#: backends/platform/wince/CEActionsPocket.cpp:47 +msgid "Show Keyboard" +msgstr "ÐñïâïëÞ Ðëçêôñïëïãßïõ" + +#: backends/platform/wince/CEActionsPocket.cpp:48 +msgid "Sound on/off" +msgstr "¹÷ïò áíïéêôüò/êëåéóôüò" + +#: backends/platform/wince/CEActionsPocket.cpp:49 +msgid "Right click" +msgstr "Äåîß click" + +#: backends/platform/wince/CEActionsPocket.cpp:50 +msgid "Show/Hide Cursor" +msgstr "ÅìöÜíéóç/Áðüêñõøç ÄñïìÝá" + +#: backends/platform/wince/CEActionsPocket.cpp:51 +msgid "Free look" +msgstr "Åëåýèåñç ðåñéÞãçóç" + +#: backends/platform/wince/CEActionsPocket.cpp:52 +msgid "Zoom up" +msgstr "ÌåãÝèõíóç ðÜíù" + +#: backends/platform/wince/CEActionsPocket.cpp:53 +msgid "Zoom down" +msgstr "ÌåãÝèõíóç êÜôù" + +#: backends/platform/wince/CEActionsPocket.cpp:55 +#: backends/platform/wince/CEActionsSmartphone.cpp:49 +msgid "Bind Keys" +msgstr "ÄÝóìåõóç ÐëÞêôñùí" + +#: backends/platform/wince/CEActionsPocket.cpp:56 +msgid "Cursor Up" +msgstr "ÄñïìÝáò ÐÜíù" + +#: backends/platform/wince/CEActionsPocket.cpp:57 +msgid "Cursor Down" +msgstr "ÄñïìÝáò ÊÜôù" + +#: backends/platform/wince/CEActionsPocket.cpp:58 +msgid "Cursor Left" +msgstr "ÄñïìÝáò ÁñéóôåñÜ" + +#: backends/platform/wince/CEActionsPocket.cpp:59 +msgid "Cursor Right" +msgstr "ÄñïìÝáò ÄåîéÜ" + +#: backends/platform/wince/CEActionsPocket.cpp:267 +#: backends/platform/wince/CEActionsSmartphone.cpp:231 +msgid "Do you want to load or save the game?" +msgstr "ÈÝëåôå íá öïñôþóåôå Þ íá áðïèçêåýóåôå ôï ðáé÷íßäé;" + +#: backends/platform/wince/CEActionsPocket.cpp:326 +#: backends/platform/wince/CEActionsSmartphone.cpp:287 +msgid " Are you sure you want to quit ? " +msgstr " Åßóôå óßãïõñïé üôé èÝëåôå íá âãåßôå áðü ôï ðñüãñáììá ; " + +#: backends/platform/wince/CEActionsSmartphone.cpp:50 +msgid "Keyboard" +msgstr "Ðëçêôñïëüãéï" + +#: backends/platform/wince/CEActionsSmartphone.cpp:51 +msgid "Rotate" +msgstr "ÐåñéóôñïöÞ" + +#: backends/platform/wince/CELauncherDialog.cpp:56 +msgid "Using SDL driver " +msgstr "×ñÞóç ïäçãïý SDL " + +#: backends/platform/wince/CELauncherDialog.cpp:60 +msgid "Display " +msgstr "Áðåéêüíéóç " + +#: backends/platform/wince/CELauncherDialog.cpp:83 +msgid "Do you want to perform an automatic scan ?" +msgstr "ÈÝëåôå íá ðñáãìáôïðïéçèåß áõôïìáôïðïéçìÝíç óÜñùóç ;" + +#: backends/platform/wince/wince-sdl.cpp:516 +msgid "Map right click action" +msgstr "Áíôéóôïß÷éóç åíÝñãåéáò äåîß click" + +#: backends/platform/wince/wince-sdl.cpp:520 +msgid "You must map a key to the 'Right Click' action to play this game" +msgstr "" +"Èá ðñÝðåé íá áíôéóôïé÷ßóåôå Ýíá ðëÞêôñï óôçí åíÝñãåéá \"Äåîß click\" ãéá íá " +"ðáßîåôå áõôü ôï ðáé÷íßäé" + +#: backends/platform/wince/wince-sdl.cpp:529 +msgid "Map hide toolbar action" +msgstr "Áíôéóôïß÷éóç åíÝñãåéáò áðüêñõøçò ãñáììÞò åñãáëåßùí" + +#: backends/platform/wince/wince-sdl.cpp:533 +msgid "You must map a key to the 'Hide toolbar' action to play this game" +msgstr "" +"Èá ðñÝðåé íá áíôéóôïé÷ßóåôå Ýíá ðëÞêôñï óôçí åíÝñãåéá \"Áðüêñõøç ãñáììÞò " +"åñãáëåßùí\" ãéá íá ðáßîåôå áõôü ôï ðáé÷íßäé" + +#: backends/platform/wince/wince-sdl.cpp:542 +msgid "Map Zoom Up action (optional)" +msgstr "" + +#: backends/platform/wince/wince-sdl.cpp:545 +msgid "Map Zoom Down action (optional)" +msgstr "" + +#: backends/platform/wince/wince-sdl.cpp:553 +msgid "" +"Don't forget to map a key to 'Hide Toolbar' action to see the whole inventory" +msgstr "" +"Ìçí îå÷Üóåôå íá áíôéóôïé÷ßóåôå Ýíá ðëÞêôñï ãéá ôçí åíÝñãåéá \"Áðüêñõøç " +"ÃñáììÞò Åñãáëåßùí\" ãéá íá äåßôå üëá ôá áíôéêåßìåíá" + +#: backends/updates/macosx/macosx-updates.mm:79 +msgid "Check for Updates..." +msgstr "¸ëåã÷ïò Åíçìåñþóåùí..." + +#: engines/access/resources.cpp:44 engines/drascula/drascula.cpp:965 +#: engines/hugo/hugo.cpp:437 engines/lure/lure.cpp:64 +#: engines/mortevielle/mortevielle.cpp:306 engines/sky/compact.cpp:131 +#: engines/teenagent/resources.cpp:97 engines/tony/tony.cpp:198 +#: engines/toon/toon.cpp:4918 +#, c-format +msgid "Unable to locate the '%s' engine data file." +msgstr "Äåí Þôáí äõíáôÞ ç åýñåóç ôïõ áñ÷åßïõ ðáé÷íéäéïý '%s'." + +#: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979 +#: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73 +#: engines/mortevielle/mortevielle.cpp:315 engines/tony/tony.cpp:210 +#: engines/toon/toon.cpp:4930 +#, c-format +msgid "The '%s' engine data file is corrupt." +msgstr "Ôï áñ÷åéï ðáé÷íéäéïý '%s' åßíáé êáôåóôñáììÝíï." + +#: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990 +#: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76 +#: engines/mortevielle/mortevielle.cpp:326 engines/tony/tony.cpp:221 +#: engines/toon/toon.cpp:4941 +#, c-format +msgid "" +"Incorrect version of the '%s' engine data file found. Expected %d.%d but got " +"%d.%d." +msgstr "" +"ÂñÝèçêå ëáíèáóìÝíç Ýêäïóç ôïõ '%s' áñ÷åßïõ ðáé÷íéäéïý. Áíáìåíüìåíç %d.%d " +"áëëÜ âñÝèçêå ç %d.%d." + +#: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55 +msgid "Color mode" +msgstr "Ëåéôïõñãßá ÷ñþìáôïò" + +#: engines/adl/detection.cpp:46 engines/adl/detection.cpp:56 +msgid "Use color graphics" +msgstr "×ñÞóç Ýã÷ñùìùí ãñáöéêþí" + +#: engines/adl/detection.cpp:65 +msgid "Scanlines" +msgstr "ÃñáììÝò óÜñùóçò" + +#: engines/adl/detection.cpp:66 +msgid "Show scanlines" +msgstr "ÐñïâïëÞ ãñáììþí óÜñùóçò" + +#: engines/agi/detection.cpp:147 engines/cine/detection.cpp:70 +#: engines/drascula/detection.cpp:302 engines/dreamweb/detection.cpp:48 +#: engines/neverhood/detection.cpp:177 engines/sci/detection.cpp:430 +#: engines/sherlock/detection.cpp:71 engines/toltecs/detection.cpp:200 +#: engines/zvision/detection_tables.h:51 +msgid "Use original save/load screens" +msgstr "×ñÞóç áñ÷éêþí ïèïíþí áðïèÞêåõóçò/öüñôùóçò" + +#: engines/agi/detection.cpp:148 engines/cine/detection.cpp:71 +#: engines/drascula/detection.cpp:303 engines/dreamweb/detection.cpp:49 +#: engines/neverhood/detection.cpp:178 engines/sci/detection.cpp:431 +#: engines/sherlock/detection.cpp:72 engines/toltecs/detection.cpp:201 +msgid "Use the original save/load screens instead of the ScummVM ones" +msgstr "" +"×ñÞóç ôùí áñ÷éêþí ïèïíþí áðïèÞêåõóçò/öüñôùóçò áíôß ãéá áõôÝò ôïõ ScummVM" + +#: engines/agi/detection.cpp:157 +msgid "Use an alternative palette" +msgstr "×ñÞóç åíáëëáêôéêÞò ðáëÝôáò" + +#: engines/agi/detection.cpp:158 +msgid "" +"Use an alternative palette, common for all Amiga games. This was the old " +"behavior" +msgstr "" +"×ñÞóç åíáëëáêôéêÞò ðáëÝôáò, êïéíÞò ãéá üëá ôá ðáé÷íßäéá Amiga. ÁõôÞ Þôáí ç " +"ðáëéÜ óõìðåñéöïñÜ" + +#: engines/agi/detection.cpp:167 +msgid "Mouse support" +msgstr "ÕðïóôÞñéîç ðïíôéêéïý" + +#: engines/agi/detection.cpp:168 +msgid "" +"Enables mouse support. Allows to use mouse for movement and in game menus." +msgstr "" +"Åíåñãïðïßçóç ôçò õðïóôÞñéîçò ôïõ ðïíôéêéïý. ÅðéôñÝðåé ôç ÷ñÞóç ôïõ ðïíôéêéïý " +"ãéá êßíçóç êáé ôá ìåíïý ôïõ ðáé÷íéäéïý." + +#: engines/agi/detection.cpp:177 +msgid "Use Hercules hires font" +msgstr "×ñÞóç ãñáììáôïóåéñÜò Hercules õøçëÞò åõêñßíåéáò" + +#: engines/agi/detection.cpp:178 +msgid "Uses Hercules hires font, when font file is available." +msgstr "" +"×ñÞóç ãñáììáôïóåéñÜò Hercules õøçëÞò åõêñßíåéáò, üôáí ç ãñáììáôïóåéñÜ åßíáé " +"äéáèÝóéìç." + +#: engines/agi/detection.cpp:187 +msgid "Pause when entering commands" +msgstr "Ðáýóç êáôÜ ôçí åéóáãùãÞ åíôïëþí" + +#: engines/agi/detection.cpp:188 +msgid "" +"Shows a command prompt window and pauses the game (like in SCI) instead of a " +"real-time prompt." +msgstr "" +"Åìöáíßæåé Ýíá ðáñÜèõñï ãñáììÞò åíôïëþí êáé ðáýåé ôï ðáé÷íßäé (üðùò êáé ôï " +"SCI) áíôß ôçò ãñáììÞò åíôïëþí ðñáãìáôéêïý ÷ñüíïõ." + +#: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888 +#: engines/cge/events.cpp:83 engines/cge2/events.cpp:76 +#: engines/cine/various.cpp:359 engines/dm/dm.cpp:269 +#: engines/dm/loadsave.cpp:184 engines/drascula/saveload.cpp:377 +#: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 +#: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 +#: engines/neverhood/menumodule.cpp:893 engines/sci/engine/kfile.cpp:1010 +#: engines/sci/engine/kfile.cpp:1239 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 +#: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 +msgid "Restore game:" +msgstr "ÅðáíáöïñÜ ðáé÷íéäéïý:" + +#: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888 +#: engines/cge/events.cpp:83 engines/cge2/events.cpp:76 +#: engines/cine/various.cpp:359 engines/dm/dm.cpp:269 +#: engines/dm/loadsave.cpp:184 engines/drascula/saveload.cpp:377 +#: engines/dreamweb/saveload.cpp:170 engines/gnap/menu.cpp:473 +#: engines/hugo/file.cpp:400 engines/mads/nebular/dialogs_nebular.cpp:377 +#: engines/neverhood/menumodule.cpp:893 engines/sci/engine/kfile.cpp:1010 +#: engines/sci/engine/kfile.cpp:1239 engines/sherlock/scalpel/scalpel.cpp:1263 +#: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 +#: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 +msgid "Restore" +msgstr "ÅðáíáöïñÜ" + +#: engines/agos/saveload.cpp:159 engines/scumm/scumm.cpp:2436 +#, c-format +msgid "" +"Failed to load saved game from file:\n" +"\n" +"%s" +msgstr "" +"Áðïôõ÷ßá öüñôùóçò ðáé÷íéäéïý áðü ôï áñ÷åßï:\n" +"\n" +"%s" + +#: engines/agos/saveload.cpp:194 engines/scumm/scumm.cpp:2429 +#, c-format +msgid "" +"Failed to save game to file:\n" +"\n" +"%s" +msgstr "" +"Áðïôõ÷ßá áðïèÞêåõóçò ðáé÷íéäéïý óôï áñ÷åßï:\n" +"\n" +"%s" + +#: engines/agos/saveload.cpp:202 engines/scumm/scumm.cpp:2447 +#, c-format +msgid "" +"Successfully saved game in file:\n" +"\n" +"%s" +msgstr "" +"Åðéôõ÷Þò áðïèÞêåõóç ðáé÷íéäéïý óôï áñ÷åßï:\n" +"\n" +"%s" + +#: engines/agos/animation.cpp:558 +#, c-format +msgid "Cutscene file '%s' not found!" +msgstr "" + +#: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101 +msgid "Color Blind Mode" +msgstr "Ëåéôïõñãßá ãéá ¶ôïìá ìå Á÷ñùìáôïøßá" + +#: engines/cge/detection.cpp:106 engines/cge2/detection.cpp:102 +msgid "Enable Color Blind Mode by default" +msgstr "Åíåñãïðïßçóç ëåéôïõñãßáò ãéá ¶ôïìá ìå Á÷ñùìáôïøßá åî'ïñéóìïý" + +#: engines/drascula/saveload.cpp:47 +msgid "" +"ScummVM found that you have old saved games for Drascula that should be " +"converted.\n" +"The old saved game format is no longer supported, so you will not be able to " +"load your games if you don't convert them.\n" +"\n" +"Press OK to convert them now, otherwise you will be asked again the next " +"time you start the game.\n" +msgstr "" +"Ôï ScummVM äéáðßóôùóå üôé Ý÷åôå ðáëéÜ áðïèçêåõìÝíá ðáé÷íßäéá ãéá ôï Drascula " +"ðïõ èá ðñÝðåé íá ìåôáôñáðïýí.\n" +"Ç ðáëéÜ áðïèçêåõìÝíç ìïñöÞ ðáé÷íéäéþí äåí õðïóôçñßæåôáé ðëÝïí, ïðüôå äå èá " +"åßóôå óå èÝóç íá öïñôþóåôå ôá ðáé÷íßäéá óáò, áí äåí ôá ìåôáôñÝøåôå.\n" +"\n" +"ÐáôÞóôå OK ãéá íá ôá ìåôáôñÝøåôå ôþñá, áëëéþò èá óáò æçôçèåß îáíÜ ôçí " +"åðüìåíç öïñÜ ðïõ èá îåêéíÞóåôå ôï ðáé÷íßäé.\n" + +#: engines/dreamweb/detection.cpp:58 +msgid "Use bright palette mode" +msgstr "×ñÞóç ëáìðåñÞò ðáëÝôáò" + +#: engines/dreamweb/detection.cpp:59 +msgid "Display graphics using the game's bright palette" +msgstr "ÐñïâïëÞ ãñáöéêþí ìå ÷ñÞóç ôçò ëáìðåñÞò ðáëÝôáò ôïõ ðáé÷íéäéïý" + +#: engines/gob/inter_playtoons.cpp:255 engines/gob/inter_v2.cpp:1467 +#: engines/gob/inter_geisha.cpp:232 engines/tinsel/saveload.cpp:532 +msgid "Failed to load saved game from file." +msgstr "Ç áíÜãíùóç áðïèçêåõìÝíïõ ðáé÷íéäéïý áðü áñ÷åßï áðÝôõ÷å." + +#: engines/gob/inter_v2.cpp:1537 engines/gob/inter_geisha.cpp:263 +#: engines/tinsel/saveload.cpp:545 +msgid "Failed to save game to file." +msgstr "Ç åããñáöÞ áðïèçêåõìÝíïõ ðáé÷íéäéïý óå áñ÷åßï áðÝôõ÷å." + +#: engines/gob/inter_v5.cpp:107 +msgid "Failed to delete file." +msgstr "Ç äéáãñáöÞ ôïõ áñ÷åßïõ áðÝôõ÷å." + +#: engines/groovie/detection.cpp:312 +msgid "Fast movie speed" +msgstr "ÃñÞãïñç ôá÷ýôçôá ôáéíéþí" + +#: engines/groovie/detection.cpp:313 +msgid "Play movies at an increased speed" +msgstr "ÁíáðáñáãùãÞ ôáéíéþí ìå áõîçìÝíç ôá÷ýôçôá" + +#: engines/groovie/script.cpp:407 +msgid "Failed to save game" +msgstr "Áäõíáìßá áðïèÞêåõóçò ðáé÷íéäéïý" + +#: engines/hopkins/detection.cpp:76 engines/hopkins/detection.cpp:86 +msgid "Gore Mode" +msgstr "Ëåéôïõñãßá Áßìáôïò" + +#: engines/hopkins/detection.cpp:77 engines/hopkins/detection.cpp:87 +msgid "Enable Gore Mode when available" +msgstr "Åíåñãïðïßçóç Ëåéôïõñãßáò Áßìáôïò üôáí õðÜñ÷åé äéáèåóéìüôçôá" + +#. I18N: Studio audience adds an applause and cheering sounds whenever +#. Malcolm makes a joke. +#: engines/kyra/detection.cpp:62 +msgid "Studio audience" +msgstr "Êïéíü óôïýíôéï" + +#: engines/kyra/detection.cpp:63 +msgid "Enable studio audience" +msgstr "Åíåñãïðïßçóç êïéíïý óôïýíôéï" + +#. I18N: This option allows the user to skip text and cutscenes. +#: engines/kyra/detection.cpp:73 +msgid "Skip support" +msgstr "ÕðïóôÞñéîç ðáñÜëåéøçò" + +#: engines/kyra/detection.cpp:74 +msgid "Allow text and cutscenes to be skipped" +msgstr "Íá åðéôñÝðåôáé ç ðáñÜëåéøç êåéìÝíïõ êáé ôáéíéþí" + +#. I18N: Helium mode makes people sound like they've inhaled Helium. +#: engines/kyra/detection.cpp:84 +msgid "Helium mode" +msgstr "Ëåéôïõñãßá çëßïõ" + +#: engines/kyra/detection.cpp:85 +msgid "Enable helium mode" +msgstr "Åíåñãïðïßçóç ëåéôïõñãßáò çëßïõ" + +#. I18N: When enabled, this option makes scrolling smoother when +#. changing from one screen to another. +#: engines/kyra/detection.cpp:99 +msgid "Smooth scrolling" +msgstr "ÏìáëÞ êýëéóç" + +#: engines/kyra/detection.cpp:100 +msgid "Enable smooth scrolling when walking" +msgstr "Åíåñãïðïßçóç ïìáëÞò êýëéóçò êáôÜ ôï ðåñðÜôçìá" + +#. I18N: When enabled, this option changes the cursor when it floats to the +#. edge of the screen to a directional arrow. The player can then click to +#. walk towards that direction. +#: engines/kyra/detection.cpp:112 +msgid "Floating cursors" +msgstr "" + +#: engines/kyra/detection.cpp:113 +msgid "Enable floating cursors" +msgstr "" + +#. I18N: HP stands for Hit Points +#: engines/kyra/detection.cpp:127 +msgid "HP bar graphs" +msgstr "ÑáâäïãñÜììáôá HP" + +#: engines/kyra/detection.cpp:128 +msgid "Enable hit point bar graphs" +msgstr "Åíåñãïðïßçóç ñáâäïãñáììÜôùí ãéá hit points" + +#: engines/kyra/eobcommon.cpp:331 engines/kyra/lol.cpp:481 +msgid "Move Forward" +msgstr "Ðñï÷þñçóå ÌðñïóôÜ" + +#: engines/kyra/eobcommon.cpp:332 engines/kyra/lol.cpp:482 +msgid "Move Back" +msgstr "Ðñï÷þñçóå Ðßóù" + +#: engines/kyra/eobcommon.cpp:333 +msgid "Move Left" +msgstr "Ðñï÷þñçóå ÁñéóôåñÜ" + +#: engines/kyra/eobcommon.cpp:334 +msgid "Move Right" +msgstr "Ðñï÷þñçóå ÄåîéÜ" + +#: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485 +#: engines/pegasus/pegasus.cpp:2509 +msgid "Turn Left" +msgstr "Óôñßøå ÁñéóôåñÜ" + +#: engines/kyra/eobcommon.cpp:336 engines/kyra/lol.cpp:486 +#: engines/pegasus/pegasus.cpp:2510 +msgid "Turn Right" +msgstr "Óôñßøå ÄåîéÜ" + +#: engines/kyra/eobcommon.cpp:337 +msgid "Open/Close Inventory" +msgstr "¶íïéãìá/Êëåßóéìï ÁíôéêåéìÝíùí" + +#: engines/kyra/eobcommon.cpp:338 +msgid "Switch Inventory/Character screen" +msgstr "ÅíáëëáãÞ ïèüíçò ÁíôéêåéìÝíùí/×áñáêôÞñùí" + +#: engines/kyra/eobcommon.cpp:339 +msgid "Camp" +msgstr "ÊáôáóêÞíùóå" + +#: engines/kyra/eobcommon.cpp:340 +msgid "Cast Spell" +msgstr "ÊÜíå Îüñêé" + +#: engines/kyra/eobcommon.cpp:343 +msgid "Spell Level 1" +msgstr "Îüñêé ÅðéðÝäïõ 1" + +#: engines/kyra/eobcommon.cpp:344 +msgid "Spell Level 2" +msgstr "Îüñêé ÅðéðÝäïõ 2" + +#: engines/kyra/eobcommon.cpp:345 +msgid "Spell Level 3" +msgstr "Îüñêé ÅðéðÝäïõ 3" + +#: engines/kyra/eobcommon.cpp:346 +msgid "Spell Level 4" +msgstr "Îüñêé ÅðéðÝäïõ 4" + +#: engines/kyra/eobcommon.cpp:347 +msgid "Spell Level 5" +msgstr "Îüñêé ÅðéðÝäïõ 5" + +#: engines/kyra/eobcommon.cpp:356 +msgid "Spell Level 6" +msgstr "Îüñêé ÅðéðÝäïõ 6" + +#: engines/kyra/lol.cpp:478 +msgid "Attack 1" +msgstr "Åðßèåóç 1" + +#: engines/kyra/lol.cpp:479 +msgid "Attack 2" +msgstr "Åðßèåóç 2" + +#: engines/kyra/lol.cpp:480 +msgid "Attack 3" +msgstr "Åðßèåóç 3" + +#: engines/kyra/lol.cpp:483 +msgid "Slide Left" +msgstr "Ïëßóèçóç ÁñéóôåñÜ" + +#: engines/kyra/lol.cpp:484 +msgid "Slide Right" +msgstr "Ïëßóèçóç ÄåîéÜ" + +#: engines/kyra/lol.cpp:487 +msgid "Rest" +msgstr "ÁíÜðáõóç" + +#: engines/kyra/lol.cpp:488 +msgid "Options" +msgstr "ÅðéëïãÝò" + +#: engines/kyra/lol.cpp:489 +msgid "Choose Spell" +msgstr "ÅðéëÝîôå Îüñêé" + +#: engines/kyra/sound_midi.cpp:477 +msgid "" +"You appear to be using a General MIDI device,\n" +"but your game only supports Roland MT32 MIDI.\n" +"We try to map the Roland MT32 instruments to\n" +"General MIDI ones. It is still possible that\n" +"some tracks sound incorrect." +msgstr "" +"Öáßíåôáé ðùò ÷ñçóéìïðïéåßôå ìéá óõóêåõÞ General MIDI,\n" +"áëëÜ ôï ðáé÷íßäé óáò õðïóôçñßæåé ìüíï Roland MT32 MIDI.\n" +"Ðñïóðáèïýìå íá ÷áñôïãñáöÞóïõìå ôá üñãáíá ôçò\n" +"Roland MT32 óå áõôÜ ôïõ General MIDI. Åßíáé ðéèáíü üôé\n" +"ïñéóìÝíá êïììÜôéá èá áêïýãïíôáé åóöáëìÝíá." + +#: engines/kyra/saveload_eob.cpp:557 +#, c-format +msgid "" +"The following original saved game file has been found in your game path:\n" +"\n" +"%s %s\n" +"\n" +"Do you wish to use this saved game file with ScummVM?\n" +"\n" +msgstr "" +"Ôï áêüëïõèï áðïèçêåõìÝíï áñ÷åßï ôïõ áñ÷éêïý ðáé÷íéäéïý Ý÷åé âñåèåß óôï " +"öÜêåëï ôïõ ðáé÷íéäéïý óáò:\n" +"\n" +"%s %s\n" +"\n" +"ÈÝëåôå íá ÷ñçóéìïðïéÞóåôå áõôü ôï áðïèçêåõìÝíï áñ÷åßï ðáé÷íéäéïý ìå ôï " +"ScummVM;\n" + +#: engines/kyra/saveload_eob.cpp:590 +#, c-format +msgid "" +"A saved game file was found in the specified slot %d. Overwrite?\n" +"\n" +msgstr "" +"¸íá áðïèçêåõìÝíï áñ÷åßï ðáé÷íéäéïý âñÝèçêå óôçí åðéëåãìÝíç èõñßäá %d. " +"ÁíôéêáôÜóôáóç;\n" +"\n" + +#: engines/kyra/saveload_eob.cpp:623 +#, c-format +msgid "" +"%d original saved games have been successfully imported into\n" +"ScummVM. If you want to manually import original saved game later you will\n" +"need to open the ScummVM debug console and use the command " +"'import_savefile'.\n" +"\n" +msgstr "" + +#: engines/mads/detection.cpp:91 +msgid "Easy mouse interface" +msgstr "Åýêïëç äéåðáöÞ ðïíôéêéïý" + +#: engines/mads/detection.cpp:92 +msgid "Shows object names when hovering the mouse over them" +msgstr "" +"Åìöáíßæåé ôá ïíüìáôá ôùí áíôéêåéìÝíùí üôáí áéùñåßôáé ôï ðïíôßêé ðÜíù ôïõò" + +#: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102 +msgid "Animated inventory items" +msgstr "Êéíïýìåíá áíôéêåßìåíá" + +#: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112 +msgid "Animated game interface" +msgstr "Êéíïýìåíç äéåðáöÞ ðáé÷íéäéïý" + +#: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122 +msgid "Naughty game mode" +msgstr "Ëåéôïõñãßá ðáé÷íéäéïý ãéá Üôáêôïõò" + +#: engines/mohawk/detection.cpp:169 +msgid "Play the Myst fly by movie" +msgstr "" + +#: engines/mohawk/detection.cpp:170 +msgid "The Myst fly by movie was not played by the original engine." +msgstr "" + +#. I18N: Option for fast scene switching +#: engines/mohawk/dialogs.cpp:181 engines/mohawk/dialogs.cpp:267 +msgid "~Z~ip Mode Activated" +msgstr "Ëåéôïõñãßá ~Z~ip ÅíåñãïðïéçìÝíç" + +#: engines/mohawk/dialogs.cpp:182 +msgid "~T~ransitions Enabled" +msgstr "~Ì~åôáâÜóåéò ÅíåñãïðïéçìÝíåò" + +#. I18N: Drop book page +#: engines/mohawk/dialogs.cpp:184 +msgid "~D~rop Page" +msgstr "~Ñ~ßîéìï Óåëßäáò" + +#: engines/mohawk/dialogs.cpp:188 +msgid "Show ~M~ap" +msgstr "ÅìöÜíéóç ~×~Üñôç" + +#: engines/mohawk/dialogs.cpp:194 +msgid "Main Men~u~" +msgstr "Êåíôñéêü Ìåíï~ý~" + +#: engines/mohawk/dialogs.cpp:268 +msgid "~W~ater Effect Enabled" +msgstr "ÅöÝ ~Í~åñïý ÅíåñãïðïéçìÝíï" + +#: engines/mohawk/riven.cpp:150 +msgid "" +"You're missing a Riven executable. The Windows executable is 'riven.exe' or " +"'rivendmo.exe'. " +msgstr "" +"Ëåßðåé ôï åêôåëÝóéìï ôïõ Riven. Ôï åêôåëÝóéìï ãéá Windows åßíáé 'riven.exe' " +"Þ 'rivendemo.exe'. " + +#: engines/mohawk/riven.cpp:151 +msgid "" +"Using the 'arcriven.z' installer file also works. In addition, you can use " +"the Mac 'Riven' executable." +msgstr "" +"Ç ÷ñÞóç ôïõ áñ÷åßïõ åãêáôÜóôáóçò 'arcriven.z' ëåéôïõñãåß åðßóçò. ÅðéðëÝïí, " +"ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï åêôåëÝóéìï ôïõ Mac 'Riven'." + +#: engines/mohawk/riven.cpp:162 +msgid "" +"You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also " +"works." +msgstr "" +"Óáò ëåßðåé ôï 'extras.mhk'. Ç ÷ñÞóç ôïõ áñ÷åßïõ åãêáôÜóôáóçò 'arcriven.z' " +"ëåéôïõñãåß åðßóçò." + +#: engines/mohawk/riven_external.cpp:213 +msgid "" +"Exploration beyond this point available only within the full version of\n" +"the game." +msgstr "" +"Ç åîåñåýíçóç ðÝñá áðü áõôü ôï óçìåßï åßíáé äéáèÝóéìç ìüíï ìÝóù ôçò\n" +"ðëÞñïõò Ýêäïóçò ôïõ ðáé÷íéäéïý." + +#: engines/mohawk/riven_external.cpp:655 +msgid "" +"At this point, the Riven Demo would\n" +"ask if you would like to open a web browser\n" +"to bring you to the Red Orb store to buy\n" +"the game. ScummVM cannot do that and\n" +"the site no longer exists." +msgstr "" +"Óå áõôü ôï óçìåßï, ç äïêéìáóôéêÞ Ýêäïóç ôïõ Riven\n" +"èá óáò ñùôïýóå áí èÝëåôå íá áíïßîåôå Ýíá öõëëïìåôñçôÞ\n" +"ãéá íá ìåôáâåßôå óôï çëåêôñïíéêü êáôÜóôçìá ôçò Red Orb\n" +"ãéá íá áãïñÜóåôå ôï ðáé÷íßäé. Ôï ScummVM äå ìðïñåß íá\n" +"ôï êÜíåé áõôü êáé ç éóôïóåëßäá äåí õðÜñ÷åé ðëÝïí." + +#: engines/mohawk/mohawk.cpp:61 +msgid "The game is paused. Press any key to continue." +msgstr "" +"Ôï ðáé÷íßäé âñßóêåôáé óå ðáýóç. ÐáôÞóôå ïðïéïäÞðïôå êïõìðß ãéá íá óõíå÷ßóåôå." + +#: engines/neverhood/detection.cpp:184 +msgid "Skip the Hall of Records storyboard scenes" +msgstr "" + +#: engines/neverhood/detection.cpp:185 +msgid "Allows the player to skip past the Hall of Records storyboard scenes" +msgstr "" + +#: engines/neverhood/detection.cpp:191 +msgid "Scale the making of videos to full screen" +msgstr "ÊëéìÜêùóç ôùí ôáéíéþí äçìéïõñãßáò óå ðëÞñç ïèüíç" + +#: engines/neverhood/detection.cpp:192 +msgid "Scale the making of videos, so that they use the whole screen" +msgstr "ÊëéìÜêùóç ôùí ôáéíéþí äçìéïõñãßáò, þóôå íá êáôáëáìâÜíïõí üëç ôçí ïèüíç" + +#: engines/parallaction/saveload.cpp:130 +#, c-format +msgid "" +"Can't save game in slot %i\n" +"\n" +msgstr "" +"Äåí Þôáí äõíáôÞ ç áðïèÞêåõóç ðáé÷íéäéïý óôç èõñßäá %i\n" +"\n" + +#: engines/parallaction/saveload.cpp:194 +msgid "Load file" +msgstr "Öüñôùóç áñ÷åßïõ" + +#: engines/parallaction/saveload.cpp:201 +msgid "Loading game..." +msgstr "Öüñôùóç ðáé÷íéäéïý..." + +#: engines/parallaction/saveload.cpp:209 +msgid "Save file" +msgstr "ÁðïèÞêåõóç áñ÷åßïõ" + +#: engines/parallaction/saveload.cpp:216 +msgid "Saving game..." +msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý..." + +#: engines/parallaction/saveload.cpp:269 +msgid "" +"ScummVM found that you have old saved games for Nippon Safes that should be " +"renamed.\n" +"The old names are no longer supported, so you will not be able to load your " +"games if you don't convert them.\n" +"\n" +"Press OK to convert them now, otherwise you will be asked next time.\n" +msgstr "" +"Ôï ScummVM äéáðßóôùóå üôé Ý÷åôå ðáëéÜ áðïèçêåõìÝíá ðáé÷íßäéá ôïõ Nippon " +"Safes ôá ïðïßá èá ðñÝðåé íá ìåôïíïìáóôïýí.\n" +"Ôá ðáëéÜ ïíüìáôá äåí õðïóôçñßæïíôáé ðëÝïí, ïðüôå äå èá åßóôå óå èÝóç íá " +"öïñôþóåôå ôá ðáé÷íßäéá óáò, áí äåí ôá ìåôáôñÝøåôå.\n" +"\n" +"ÐáôÞóôå OK ãéá íá ôá ìåôáôñÝøåôå ôþñá, áëëéþò èá óáò æçôçèåß ôçí åðüìåíç " +"öïñÜ.\n" + +#: engines/parallaction/saveload.cpp:316 +msgid "ScummVM successfully converted all your saved games." +msgstr "Ôï ScummVM ìåôÜôñåøå åðéôõ÷þò üëá ôá áðïèçêåõìÝíá ðáé÷íßäéá óáò." + +#: engines/parallaction/saveload.cpp:318 +msgid "" +"ScummVM printed some warnings in your console window and can't guarantee all " +"your files have been converted.\n" +"\n" +"Please report to the team." +msgstr "" +"Ôï ScummVM ôýðùóå êÜðïéåò ðñïåéäïðïéÞóåéò óôï ðáñÜèõñï ôçò êïíóüëáò óáò êáé " +"äåí ìðïñåß íá åããõçèåß üôé üëá ôá áñ÷åßá óáò Ý÷ïõí ìåôáôñáðåß.\n" +"\n" +"Ðáñáêáëïýìå áíáöÝñåôå óôçí ïìÜäá." + +#: engines/pegasus/pegasus.cpp:714 +msgid "Invalid file name for saving" +msgstr "ÅóöáëìÝíï üíïìá áñ÷åßïõ ãéá áðïèÞêåõóç" + +#: engines/pegasus/pegasus.cpp:2507 +msgid "Up/Zoom In/Move Forward/Open Doors" +msgstr "ÐÜíù/ÌåãÝèõíóç/Ìåôáêßíçóç Åìðñüò/¶íïéãìá Èõñþí" + +#: engines/pegasus/pegasus.cpp:2508 +msgid "Down/Zoom Out" +msgstr "ÊÜôù/Óìßêñõíóç" + +#: engines/pegasus/pegasus.cpp:2511 +msgid "Display/Hide Inventory Tray" +msgstr "ÅìöÜíéóç/Áðüêñõøç Äßóêïõ ÁíôéêåéìÝíùí" + +#: engines/pegasus/pegasus.cpp:2512 +msgid "Display/Hide Biochip Tray" +msgstr "ÅìöÜíéóç/Áðüêñõøç Äßóêïõ Biochip" + +#: engines/pegasus/pegasus.cpp:2513 +msgid "Action/Select" +msgstr "ÅíÝñãåéá/ÅðéëïãÞ" + +#: engines/pegasus/pegasus.cpp:2514 +msgid "Toggle Center Data Display" +msgstr "ÅíáëëáãÞ ÊåíôñéêÞò Ðáñïõóßáóçò ÄåäïìÝíùí" + +#: engines/pegasus/pegasus.cpp:2515 +msgid "Display/Hide Info Screen" +msgstr "ÐñïâïëÞ/Áðüêñõøç Ïèüíçò Ðëçñïöïñéþí" + +#: engines/pegasus/pegasus.cpp:2516 +msgid "Display/Hide Pause Menu" +msgstr "ÐñïâïëÞ/Áðüêñõøç Ìåíïý Ðáýóçò" + +#: engines/queen/detection.cpp:56 +msgid "Alternative intro" +msgstr "ÅíáëëáêôéêÞ åéóáãùãÞ" + +#: engines/queen/detection.cpp:57 +msgid "Use an alternative game intro (CD version only)" +msgstr "×ñÞóç åíáëëáêôéêÞò åéóáãùãÞò ðáé÷íéäéïý (Ýêäïóç CD ìüíï)" + +#: engines/sci/detection.cpp:390 +msgid "Skip EGA dithering pass (full color backgrounds)" +msgstr "" + +#: engines/sci/detection.cpp:391 +msgid "Skip dithering pass in EGA games, graphics are shown with full colors" +msgstr "" + +#: engines/sci/detection.cpp:400 +msgid "Enable high resolution graphics" +msgstr "Åíåñãïðïßçóç ãñáöéêþí õøçëÞò áíÜëõóçò" + +#: engines/sci/detection.cpp:401 +msgid "Enable high resolution graphics/content" +msgstr "Åíåñãïðïßçóç ãñáöéêþí/ðåñéå÷ïìÝíïõ õøçëÞò áíÜëõóçò" + +#: engines/sci/detection.cpp:410 +msgid "Enable black-lined video" +msgstr "Åíåñãïðïßçóç âßíôåï ìå ìáýñåò ãñáììÝò" + +#: engines/sci/detection.cpp:411 +msgid "Draw black lines over videos to increase their apparent sharpness" +msgstr "" +"Ó÷åäéáóìüò ìáýñùí ãñáììþí ðÜíù óôá âßíôåï ãéá ôçí áýîçóç ôçò ïîýôçôáò ôïõò" + +#: engines/sci/detection.cpp:420 +msgid "Prefer digital sound effects" +msgstr "Ðñïôßìçóç øçöéáêþí áêïõóôéêþí åöå" + +#: engines/sci/detection.cpp:421 +msgid "Prefer digital sound effects instead of synthesized ones" +msgstr "Ðñïôßìçóç øçöéáêþí ç÷çôéêþí åöÝ áíôß ãéá åöÝ äõíáìéêÞò óýíèåóçò" + +#: engines/sci/detection.cpp:440 +msgid "Use IMF/Yamaha FB-01 for MIDI output" +msgstr "×ñÞóç IMF/Yamaha FB-01 ãéá Ýîïäï MIDI" + +#: engines/sci/detection.cpp:441 +msgid "" +"Use an IBM Music Feature card or a Yamaha FB-01 FM synth module for MIDI " +"output" +msgstr "" +"×ñÞóç ìéáò êÜñôáò IBM Music Feature Þ ìéá ìïíÜäá óýíèåóçò FM Yamaha FB-01 " +"ãéá Ýîïäï MIDI" + +#: engines/sci/detection.cpp:451 +msgid "Use CD audio" +msgstr "×ñÞóç Þ÷ïõ CD" + +#: engines/sci/detection.cpp:452 +msgid "Use CD audio instead of in-game audio, if available" +msgstr "×ñÞóç Þ÷ïõ CD áíôß ãéá Þ÷ï ðáé÷íéäéïý, üðïõ åßíáé äéáèÝóéìï" + +#: engines/sci/detection.cpp:462 +msgid "Use Windows cursors" +msgstr "×ñÞóç äñïìÝùí Windows" + +#: engines/sci/detection.cpp:463 +msgid "" +"Use the Windows cursors (smaller and monochrome) instead of the DOS ones" +msgstr "" +"×ñÞóç äñïìÝùí Windows (ìéêñüôåñïé êáé áóðñüìáõñïé) áíôß ãéá ôïõò äñïìåßò DOS" + +#: engines/sci/detection.cpp:473 +msgid "Use silver cursors" +msgstr "×ñÞóç áóçìÝíéùí äñïìÝùí" + +#: engines/sci/detection.cpp:474 +msgid "" +"Use the alternate set of silver cursors instead of the normal golden ones" +msgstr "" +"×ñÞóç ôùí åíáëëáêôéêþí áóçìÝíéùí äñïìÝùí áíôß ôùí ðñïêáèïñéóìÝíùí ÷ñõóþí" + +#: engines/scumm/detection.cpp:1120 +msgid "" +"Your game version appears to be unknown. If this is *NOT* a fan-modified\n" +"version (in particular, not a fan-made translation), please, report the\n" +"following data to the ScummVM team along with the name of the game you " +"tried\n" +"to add and its version, language, etc.:\n" +msgstr "" +"Ç Ýêäïóç ôïõ ðáé÷íéäéïý óáò öáßíåôáé íá åßíáé Üãíùóôç. Áí áõôÞ åßíáé *ÄÅÍ* " +"åßíáé Ýêäïóç ôñïðïðïéçìÝíç\n" +"áðü èáõìáóôÝò (åéäéêüôåñá, äåí åßíáé ìéá ìåôÜöñáóç öôéáãìÝíç áðü èáõìáóôÝò), " +"ðáñáêáëþ, áíáöÝñåôå ôá\n" +"áêüëïõèá äåäïìÝíá óôçí ïìÜäá ôïõ ScummVM ìáæß ìå ôï üíïìá ôïõ ðáé÷íéäéïý ðïõ " +"ðñïóðáèÞóáôå\n" +"íá ðñïóèÝóåôå êáé ôçí ÝêäïóÞ ôïõ, ôç ãëþóóá ôïõ, êëð.:\n" + +#: engines/scumm/detection.cpp:1138 +msgid "" +"The Lite version of Putt-Putt Saves the Zoo iOS is not supported to avoid " +"piracy.\n" +"The full version is available for purchase from the iTunes Store." +msgstr "" +"Ç Lite Ýêäïóç ôïõ Putt-Putt Saves the Zoo ãéá iOS äåí õðïóôçñßæåôáé ãéá " +"áðïöõãÞ ðåéñáôåßáò.\n" +"Ç ðëÞñçò Ýêäïóç åßíáé äéáèÝóéìç ãéá áãïñÜ áðü ôï ÊáôÜóôçìá iTunes." + +#: engines/scumm/detection.cpp:1341 +msgid "Show Object Line" +msgstr "ÐñïâïëÞ ÃñáììÞò ÁíôéêåéìÝíùí" + +#: engines/scumm/detection.cpp:1342 +msgid "Show the names of objects at the bottom of the screen" +msgstr "Ðáñïõóßáóç ôùí ïíïìÜôùí ôùí áíôéêåéìÝíùí óôï êÜôù ìÝñïò ôçò ïèüíçò" + +#: engines/scumm/dialogs.cpp:172 +#, c-format +msgid "Insert Disk %c and Press Button to Continue." +msgstr "ÅéóÜãåôå ôç ÄéóêÝôá %c êáé ÐáôÞóôå Êïõìðß ãéá ÓõíÝ÷åéá." + +#: engines/scumm/dialogs.cpp:173 +#, c-format +msgid "Unable to Find %s, (%c%d) Press Button." +msgstr "Äåí Þôáí äõíáôÞ ç Åýñåóç ôïõ %s, (%c%d) ÐáôÞóôå Ýíá Êïõìðß." + +#: engines/scumm/dialogs.cpp:174 +#, c-format +msgid "Error reading disk %c, (%c%d) Press Button." +msgstr "ÓöÜëìá áíÜãíùóçò äßóêïõ %c, (%c%d) ÐáôÞóôå Ýíá Êïõìðß." + +#: engines/scumm/dialogs.cpp:175 +msgid "Game Paused. Press SPACE to Continue." +msgstr "Ôï ðáé÷íßäé åßíáé óå Ðáýóç. ÐáôÞóôå ôï SPACE ãéá íá Óõíå÷ßóåôå." + +#. I18N: You may specify 'Yes' symbol at the end of the line, like this: +#. "Moechten Sie wirklich neu starten? (J/N)J" +#. Will react to J as 'Yes' +#: engines/scumm/dialogs.cpp:179 +msgid "Are you sure you want to restart? (Y/N)Y" +msgstr "Åßóôå óßãïõñïé üôé èÝëåôå íá ãßíåé åðáíåêêßíçóç; (Í/Ï)Í" + +#. I18N: you may specify 'Yes' symbol at the end of the line. See previous comment +#: engines/scumm/dialogs.cpp:181 +msgid "Are you sure you want to quit? (Y/N)Y" +msgstr "Åßóôå óßãïõñïé üôé èÝëåôå íá âãåßôå áðü ôï ðñüãñáììá; (N/O)N" + +#: engines/scumm/dialogs.cpp:186 +msgid "Play" +msgstr "Ðáßîå" + +#: engines/scumm/dialogs.cpp:190 +msgid "Insert save/load game disk" +msgstr "ÅéóÜãåôå äéóêÝôá áðïèÞêåõóçò/öüñôùóçò ðáé÷íéäéïý" + +#: engines/scumm/dialogs.cpp:191 +msgid "You must enter a name" +msgstr "ÐñÝðåé íá åéóÜãåôå Ýíá üíïìá" + +#: engines/scumm/dialogs.cpp:192 +msgid "The game was NOT saved (disk full?)" +msgstr "Ôï ðáé÷íßäé ÄÅÍ áðïèçêåýôçêå (ãåìÜôïò äßóêïò;)" + +#: engines/scumm/dialogs.cpp:193 +msgid "The game was NOT loaded" +msgstr "Ôï ðáé÷íßäé ÄÅÍ öïñôþèçêå" + +#: engines/scumm/dialogs.cpp:194 +#, c-format +msgid "Saving '%s'" +msgstr "ÁðïèÞêåõóç '%s'" + +#: engines/scumm/dialogs.cpp:195 +#, c-format +msgid "Loading '%s'" +msgstr "Öüñôùóç '%s'" + +#: engines/scumm/dialogs.cpp:196 +msgid "Name your SAVE game" +msgstr "ÏíïìÜóôå ôï ðáé÷íßäé ÁÐÏÈÇÊÅÕÓÇÓ" + +#: engines/scumm/dialogs.cpp:197 +msgid "Select a game to LOAD" +msgstr "ÅðéëÝîôå Ýíá ðáé÷íßäé ãéá ÖÏÑÔÙÓÇ" + +#: engines/scumm/dialogs.cpp:198 +msgid "Game title)" +msgstr "ôßôëïõ Ðáé÷íéäéïý)" + +#. I18N: Previous page button +#: engines/scumm/dialogs.cpp:284 +msgid "~P~revious" +msgstr "~Ð~ñïçãïýìåíï" + +#. I18N: Next page button +#: engines/scumm/dialogs.cpp:286 +msgid "~N~ext" +msgstr "~Å~ðüìåíï" + +#: engines/scumm/dialogs.cpp:598 +msgid "Speech Only" +msgstr "Ìüíï Ïìéëßá" + +#: engines/scumm/dialogs.cpp:599 +msgid "Speech and Subtitles" +msgstr "Ïìéëßá êáé Õðüôéôëïé" + +#: engines/scumm/dialogs.cpp:600 +msgid "Subtitles Only" +msgstr "Ìüíï Õðüôéôëïé" + +#: engines/scumm/dialogs.cpp:608 +msgctxt "lowres" +msgid "Speech & Subs" +msgstr "Ïìéëßá & Õðüô" + +#: engines/scumm/dialogs.cpp:654 +msgid "Select a Proficiency Level." +msgstr "ÅðéëÝîôå Åðßðåäï Éêáíüôçôáò." + +#: engines/scumm/dialogs.cpp:656 +msgid "Refer to your Loom(TM) manual for help." +msgstr "ÁíáôñÝîôå óôï åã÷åéñßäéï Loom(TM) óáò ãéá âïÞèåéá." + +#: engines/scumm/dialogs.cpp:660 +msgid "Practice" +msgstr "ÅîÜóêçóç" + +#: engines/scumm/dialogs.cpp:661 +msgid "Expert" +msgstr "Åéäéêüò" + +#: engines/scumm/help.cpp:74 +msgid "Common keyboard commands:" +msgstr "Óýíçèåéò åíôïëÝò ðëçêôñïëïãßïõ:" + +#: engines/scumm/help.cpp:75 +msgid "Save / Load dialog" +msgstr "ÄéÜëïãïò ÁðïèÞêåõóçò / Öüñôùóçò" + +#: engines/scumm/help.cpp:77 +msgid "Skip line of text" +msgstr "ÐáñÜëåéøç ãñáììÞò êåéìÝíïõ" + +#: engines/scumm/help.cpp:78 +msgid "Esc" +msgstr "Esc" + +#: engines/scumm/help.cpp:78 +msgid "Skip cutscene" +msgstr "ÐáñÜëåéøç ôáéíßáò" + +#: engines/scumm/help.cpp:79 +msgid "Space" +msgstr "Space" + +#: engines/scumm/help.cpp:79 +msgid "Pause game" +msgstr "Ðáýóç ðáé÷íéäéïý" + +#: engines/scumm/help.cpp:80 engines/scumm/help.cpp:85 +#: engines/scumm/help.cpp:96 engines/scumm/help.cpp:97 +#: engines/scumm/help.cpp:98 engines/scumm/help.cpp:99 +#: engines/scumm/help.cpp:100 engines/scumm/help.cpp:101 +#: engines/scumm/help.cpp:102 engines/scumm/help.cpp:103 +msgid "Ctrl" +msgstr "Ctrl" + +#: engines/scumm/help.cpp:80 +msgid "Load saved game 1-10" +msgstr "Öüñôùóç áðïèçêåõìÝíïõ ðáé÷íéäéïý 1-10" + +#: engines/scumm/help.cpp:81 engines/scumm/help.cpp:85 +#: engines/scumm/help.cpp:87 engines/scumm/help.cpp:101 +#: engines/scumm/help.cpp:102 engines/scumm/help.cpp:103 +msgid "Alt" +msgstr "Alt" + +#: engines/scumm/help.cpp:81 +msgid "Save game 1-10" +msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý 1-10" + +#: engines/scumm/help.cpp:87 engines/scumm/help.cpp:90 +msgid "Enter" +msgstr "Enter" + +#: engines/scumm/help.cpp:88 +msgid "Music volume up / down" +msgstr "¸íôáóç ìïõóéêÞò ðÜíù / êÜôù" + +#: engines/scumm/help.cpp:89 +msgid "Text speed slower / faster" +msgstr "Ôá÷ýôçôá êåéìÝíïõ ðéï áñãÞ / ðéï ãñÞãïñç" + +#: engines/scumm/help.cpp:90 +msgid "Simulate left mouse button" +msgstr "Åîïìïßùóç áñéóôåñïý êïõìðéïý ðïíôéêéïý" + +#: engines/scumm/help.cpp:91 +msgid "Tab" +msgstr "Tab" + +#: engines/scumm/help.cpp:91 +msgid "Simulate right mouse button" +msgstr "Åîïìïßùóç äåîéïý êïõìðéïý ðïíôéêéïý" + +#: engines/scumm/help.cpp:94 +msgid "Special keyboard commands:" +msgstr "ÅéäéêÝò åíôïëÝò ðëçêôñïëïãßïõ:" + +#: engines/scumm/help.cpp:95 +msgid "Show / Hide console" +msgstr "ÅìöÜíéóç / Áðüêñõøç êïíóüëáò" + +#: engines/scumm/help.cpp:96 +msgid "Start the debugger" +msgstr "Åêêßíçóç ôïõ åíôïðéóìïý óöáëìÜôùí" + +#: engines/scumm/help.cpp:97 +msgid "Show memory consumption" +msgstr "ÅìöÜíéóç êáôáíÜëùóçò ìíÞìçò" + +#: engines/scumm/help.cpp:98 +msgid "Run in fast mode (*)" +msgstr "ÅêôÝëåóç óå ãñÞãïñç ëåéôïõñãßá (*)" + +#: engines/scumm/help.cpp:99 +msgid "Run in really fast mode (*)" +msgstr "ÅêôÝëåóç óå ðïëý ãñÞãïñç ëåéôïõñãßá (*)" + +#: engines/scumm/help.cpp:100 +msgid "Toggle mouse capture" +msgstr "ÅíáëëáãÞ êñÜôçóçò ðïíôéêéïý" + +#: engines/scumm/help.cpp:101 +msgid "Switch between graphics filters" +msgstr "ÅíáëëáãÞ ìåôáîý ößëôñùí ãñáöéêþí" + +#: engines/scumm/help.cpp:102 +msgid "Increase / Decrease scale factor" +msgstr "Áýîçóç / Ìåßùóç óõíôåëåóôÞ êëßìáêáò" + +#: engines/scumm/help.cpp:103 +msgid "Toggle aspect-ratio correction" +msgstr "ÅíáëëáãÞ äéüñèùóçò áíáëïãßáò äéáóôÜóåùí" + +#: engines/scumm/help.cpp:108 +msgid "* Note that using ctrl-f and" +msgstr "* Íá óçìåéùèåß üôé ç ÷ñÞóç ôïõ ctrl-f" + +#: engines/scumm/help.cpp:109 +msgid " ctrl-g are not recommended" +msgstr " êáé ôïõ ctrl-g äå óõíßóôáôáé, ìéá" + +#: engines/scumm/help.cpp:110 +msgid " since they may cause crashes" +msgstr " êáé ìðïñåß íá ðñïêáëÝóïõí êïëëÞìáôá" + +#: engines/scumm/help.cpp:111 +msgid " or incorrect game behavior." +msgstr " Þ åóöáëìÝíç óõìðåñéöïñÜ ðáé÷íéäéþí." + +#: engines/scumm/help.cpp:115 +msgid "Spinning drafts on the keyboard:" +msgstr "" + +#: engines/scumm/help.cpp:117 +msgid "Main game controls:" +msgstr "Êýñéïé ÷åéñéóìïß ðáé÷íéäéïý:" + +#: engines/scumm/help.cpp:122 engines/scumm/help.cpp:137 +#: engines/scumm/help.cpp:162 +msgid "Push" +msgstr "Óðñþîå" + +#: engines/scumm/help.cpp:123 engines/scumm/help.cpp:138 +#: engines/scumm/help.cpp:163 +msgid "Pull" +msgstr "ÔñÜâçîå" + +#: engines/scumm/help.cpp:124 engines/scumm/help.cpp:139 +#: engines/scumm/help.cpp:164 engines/scumm/help.cpp:198 +#: engines/scumm/help.cpp:208 +msgid "Give" +msgstr "Äþóå" + +#: engines/scumm/help.cpp:125 engines/scumm/help.cpp:140 +#: engines/scumm/help.cpp:165 engines/scumm/help.cpp:191 +#: engines/scumm/help.cpp:209 +msgid "Open" +msgstr "¶íïéîå" + +#: engines/scumm/help.cpp:127 +msgid "Go to" +msgstr "ÌåôÜâáóç óå" + +#: engines/scumm/help.cpp:128 +msgid "Get" +msgstr "ÐÜñå" + +#: engines/scumm/help.cpp:129 engines/scumm/help.cpp:153 +#: engines/scumm/help.cpp:171 engines/scumm/help.cpp:199 +#: engines/scumm/help.cpp:214 engines/scumm/help.cpp:225 +#: engines/scumm/help.cpp:251 +msgid "Use" +msgstr "×ñÞóç" + +#: engines/scumm/help.cpp:130 engines/scumm/help.cpp:142 +msgid "Read" +msgstr "ÄéÜâáóå" + +#: engines/scumm/help.cpp:131 engines/scumm/help.cpp:148 +msgid "New kid" +msgstr "ÍÝï ðáéäß" + +#: engines/scumm/help.cpp:132 engines/scumm/help.cpp:154 +#: engines/scumm/help.cpp:172 +msgid "Turn on" +msgstr "¶íáøå" + +#: engines/scumm/help.cpp:133 engines/scumm/help.cpp:155 +#: engines/scumm/help.cpp:173 +msgid "Turn off" +msgstr "ÓâÞóå" + +#: engines/scumm/help.cpp:143 engines/scumm/help.cpp:168 +#: engines/scumm/help.cpp:195 +msgid "Walk to" +msgstr "ÐåñðÜôçóå óå" + +#: engines/scumm/help.cpp:144 engines/scumm/help.cpp:169 +#: engines/scumm/help.cpp:196 engines/scumm/help.cpp:211 +#: engines/scumm/help.cpp:228 +msgid "Pick up" +msgstr "ÌÜæåøå" + +#: engines/scumm/help.cpp:145 engines/scumm/help.cpp:170 +msgid "What is" +msgstr "Ôé åßíáé" + +#: engines/scumm/help.cpp:147 +msgid "Unlock" +msgstr "Îåêëåßäùóå" + +#: engines/scumm/help.cpp:150 +msgid "Put on" +msgstr "Öüñåóå" + +#: engines/scumm/help.cpp:151 +msgid "Take off" +msgstr "ÂãÜëå" + +#: engines/scumm/help.cpp:157 +msgid "Fix" +msgstr "Äéüñèùóå" + +#: engines/scumm/help.cpp:159 +msgid "Switch" +msgstr "¶ëëáîå" + +#: engines/scumm/help.cpp:167 engines/scumm/help.cpp:229 +msgid "Look" +msgstr "Êïßôáîå" + +#: engines/scumm/help.cpp:174 engines/scumm/help.cpp:224 +msgid "Talk" +msgstr "Ìßëá" + +#: engines/scumm/help.cpp:175 +msgid "Travel" +msgstr "Ôáîßäåøå" + +#: engines/scumm/help.cpp:176 +msgid "To Henry / To Indy" +msgstr "Óôï ×Ýíñõ / Óôïí ºíôõ" + +#. I18N: These are different musical notes +#: engines/scumm/help.cpp:180 +msgid "play C minor on distaff" +msgstr "ðáßîå C åëÜóóïíá óôç ñüêá" + +#: engines/scumm/help.cpp:181 +msgid "play D on distaff" +msgstr "ðáßîå D óôç ñüêá" + +#: engines/scumm/help.cpp:182 +msgid "play E on distaff" +msgstr "ðáßîå E óôç ñüêá" + +#: engines/scumm/help.cpp:183 +msgid "play F on distaff" +msgstr "ðáßîå F óôç ñüêá" + +#: engines/scumm/help.cpp:184 +msgid "play G on distaff" +msgstr "ðáßîå G óôç ñüêá" + +#: engines/scumm/help.cpp:185 +msgid "play A on distaff" +msgstr "ðáßîå A óôç ñüêá" + +#: engines/scumm/help.cpp:186 +msgid "play B on distaff" +msgstr "ðáßîå B óôç ñüêá" + +#: engines/scumm/help.cpp:187 +msgid "play C major on distaff" +msgstr "ðáßîå C ìåßæïíá óôç ñüêá" + +#: engines/scumm/help.cpp:193 engines/scumm/help.cpp:215 +msgid "puSh" +msgstr "Óðñþîå (S)" + +#: engines/scumm/help.cpp:194 engines/scumm/help.cpp:216 +msgid "pull (Yank)" +msgstr "ÔñÜâçîå (Y)" + +#: engines/scumm/help.cpp:197 engines/scumm/help.cpp:213 +#: engines/scumm/help.cpp:249 +msgid "Talk to" +msgstr "Ìßëá ìå (T)" + +#: engines/scumm/help.cpp:200 engines/scumm/help.cpp:212 +msgid "Look at" +msgstr "Êïßôáîå ôï" + +#: engines/scumm/help.cpp:201 +msgid "turn oN" +msgstr "Üíáøå (N)" + +#: engines/scumm/help.cpp:202 +msgid "turn oFf" +msgstr "óâÞóå (F)" + +#: engines/scumm/help.cpp:218 +msgid "KeyUp" +msgstr "ÐëÞêôñï ðÜíù" + +#: engines/scumm/help.cpp:218 +msgid "Highlight prev dialogue" +msgstr "ÅðéóÞìáíóç ðñïçãïýìåíïõ äéáëüãïõ" + +#: engines/scumm/help.cpp:219 +msgid "KeyDown" +msgstr "ÐëÞêôñï êÜôù" + +#: engines/scumm/help.cpp:219 +msgid "Highlight next dialogue" +msgstr "ÅðéóÞìáíóç åðüìåíïõ äéáëüãïõ" + +#: engines/scumm/help.cpp:223 +msgid "Walk" +msgstr "ÐåñðÜôçóå" + +#: engines/scumm/help.cpp:226 engines/scumm/help.cpp:235 +#: engines/scumm/help.cpp:242 engines/scumm/help.cpp:250 +msgid "Inventory" +msgstr "Áíôéêåßìåíá" + +#: engines/scumm/help.cpp:227 +msgid "Object" +msgstr "Áíôéêåßìåíï" + +#: engines/scumm/help.cpp:230 +msgid "Black and White / Color" +msgstr "Áóðñüìáõñï / ¸ã÷ñùìï" + +#: engines/scumm/help.cpp:233 +msgid "Eyes" +msgstr "ÌÜôéá" + +#: engines/scumm/help.cpp:234 +msgid "Tongue" +msgstr "Ãëþóóá" + +#: engines/scumm/help.cpp:236 +msgid "Punch" +msgstr "ÃñïèéÜ" + +#: engines/scumm/help.cpp:237 +msgid "Kick" +msgstr "ÊëùôóéÜ" + +#: engines/scumm/help.cpp:240 engines/scumm/help.cpp:248 +msgid "Examine" +msgstr "ÅîÝôáóå" + +#: engines/scumm/help.cpp:241 +msgid "Regular cursor" +msgstr "Êáíïíéêüò äñïìÝáò" + +#. I18N: Comm is a communication device +#: engines/scumm/help.cpp:244 +msgid "Comm" +msgstr "Äéáâßâáóç" + +#: engines/scumm/help.cpp:247 +msgid "Save / Load / Options" +msgstr "ÁðïèÞêåõóç / Öüñôùóç / ÅðéëïãÝò" + +#: engines/scumm/help.cpp:256 +msgid "Other game controls:" +msgstr "¶ëëïé ÷åéñéóìïß ôïõ ðáé÷íéäéïý:" + +#: engines/scumm/help.cpp:258 engines/scumm/help.cpp:268 +msgid "Inventory:" +msgstr "Áíôéêåßìåíá:" + +#: engines/scumm/help.cpp:259 engines/scumm/help.cpp:275 +msgid "Scroll list up" +msgstr "Êýëéóç ëßóôáò ðÜíù" + +#: engines/scumm/help.cpp:260 engines/scumm/help.cpp:276 +msgid "Scroll list down" +msgstr "Êýëéóç ëßóôáò êÜôù" + +#: engines/scumm/help.cpp:261 engines/scumm/help.cpp:269 +msgid "Upper left item" +msgstr "ÐÜíù áñéóôåñÜ áíôéêåßìåíï" + +#: engines/scumm/help.cpp:262 engines/scumm/help.cpp:271 +msgid "Lower left item" +msgstr "ÊÜôù áñéóôåñÜ áíôéêåßìåíï" + +#: engines/scumm/help.cpp:263 engines/scumm/help.cpp:272 +msgid "Upper right item" +msgstr "ÐÜíù äåîéÜ áíôéêåßìåíï" + +#: engines/scumm/help.cpp:264 engines/scumm/help.cpp:274 +msgid "Lower right item" +msgstr "ÊÜôù äåîéÜ áíôéêåßìåíï" + +#: engines/scumm/help.cpp:270 +msgid "Middle left item" +msgstr "Ìåóáßï áñéóôåñÜ áíôéêåßìåíï" + +#: engines/scumm/help.cpp:273 +msgid "Middle right item" +msgstr "Ìåóáßï äåîéÜ áíôéêåßìåíï" + +#: engines/scumm/help.cpp:280 engines/scumm/help.cpp:285 +msgid "Switching characters:" +msgstr "ÅíáëëáãÞ ÷áñáêôÞñùí:" + +#: engines/scumm/help.cpp:282 +msgid "Second kid" +msgstr "Äåýôåñï ðáéäß" + +#: engines/scumm/help.cpp:283 +msgid "Third kid" +msgstr "Ôñßôï ðáéäß" + +#: engines/scumm/help.cpp:292 +msgid "Toggle Inventory/IQ Points display" +msgstr "ÅíáëëáãÞ ÁíôéêåéìÝíùí/ðñïâïëÞ Ðüíôùí IQ" + +#: engines/scumm/help.cpp:293 +msgid "Toggle Keyboard/Mouse Fighting (*)" +msgstr "ÅíáëëáãÞ ÐÜëçò Ðëçêôñïëïãßïõ/Ðïíôéêéïý (*)" + +#: engines/scumm/help.cpp:295 +msgid "* Keyboard Fighting is always on," +msgstr "" + +#: engines/scumm/help.cpp:296 +msgid " so despite the in-game message this" +msgstr "" + +#: engines/scumm/help.cpp:297 +msgid " actually toggles Mouse Fighting Off/On" +msgstr "" + +#: engines/scumm/help.cpp:304 +msgid "Fighting controls (numpad):" +msgstr "×åéñéóìïß ìÜ÷çò (áñéè. ðëçêôñ.):" + +#: engines/scumm/help.cpp:305 engines/scumm/help.cpp:306 +#: engines/scumm/help.cpp:307 +msgid "Step back" +msgstr "ÊÜíå ðßóù" + +#: engines/scumm/help.cpp:308 +msgid "Block high" +msgstr "Õøçëü ìðëïêÜñéóìá" + +#: engines/scumm/help.cpp:309 +msgid "Block middle" +msgstr "Ìåóáßï ìðëïêÜñéóìá" + +#: engines/scumm/help.cpp:310 +msgid "Block low" +msgstr "×áìçëü ìðëïêÜñéóìá" + +#: engines/scumm/help.cpp:311 +msgid "Punch high" +msgstr "ØçëÞ ìðïõíéÜ" + +#: engines/scumm/help.cpp:312 +msgid "Punch middle" +msgstr "Ìåóáßá ìðïõíéÜ" + +#: engines/scumm/help.cpp:313 +msgid "Punch low" +msgstr "×áìçëÞ ìðïõíéÜ" + +#: engines/scumm/help.cpp:315 +msgid "Sucker punch" +msgstr "Áéöíéäéáóôéêü ÷ôýðçìá" + +#: engines/scumm/help.cpp:318 +msgid "These are for Indy on left." +msgstr "ÁõôÜ éó÷ýïõí üôáí ï ºíôõ åßíáé óôá áñéóôåñÜ." + +#: engines/scumm/help.cpp:319 +msgid "When Indy is on the right," +msgstr "¼ôáí ï ºíôõ åßíáé óôá äåîéÜ," + +#: engines/scumm/help.cpp:320 +msgid "7, 4, and 1 are switched with" +msgstr "ôá 7, 4 êáé 1 åíáëëÜóóïíôáé ìå ôá" + +#: engines/scumm/help.cpp:321 +msgid "9, 6, and 3, respectively." +msgstr "9, 6 êáé 3, áíôßóôïé÷á." + +#: engines/scumm/help.cpp:328 +msgid "Biplane controls (numpad):" +msgstr "×åéñéóìüò äßðôåñïõ (áñéè. ðëçêôñ.):" + +#: engines/scumm/help.cpp:329 +msgid "Fly to upper left" +msgstr "ÐÝôáîå ðÜíù áñéóôåñÜ" + +#: engines/scumm/help.cpp:330 +msgid "Fly to left" +msgstr "ÐÝôáîå áñéóôåñÜ" + +#: engines/scumm/help.cpp:331 +msgid "Fly to lower left" +msgstr "ÐÝôáîå êÜôù áñéóôåñÜ" + +#: engines/scumm/help.cpp:332 +msgid "Fly upwards" +msgstr "ÐÝôáîå ðÜíù" + +#: engines/scumm/help.cpp:333 +msgid "Fly straight" +msgstr "ÐÝôáîå åõèåßá" + +#: engines/scumm/help.cpp:334 +msgid "Fly down" +msgstr "ÐÝôáîå êÜôù" + +#: engines/scumm/help.cpp:335 +msgid "Fly to upper right" +msgstr "ÐÝôáîå ðÜíù äåîéÜ" + +#: engines/scumm/help.cpp:336 +msgid "Fly to right" +msgstr "ÐÝôáîå äåîéÜ" + +#: engines/scumm/help.cpp:337 +msgid "Fly to lower right" +msgstr "ÐÝôáîå êÜôù äåîéÜ" + +#: engines/scumm/input.cpp:578 +msgid "Snap scroll on" +msgstr "" + +#: engines/scumm/input.cpp:580 +msgid "Snap scroll off" +msgstr "" + +#: engines/scumm/input.cpp:593 +msgid "Music volume: " +msgstr "¸íôáóç ìïõóéêÞò: " + +#: engines/scumm/input.cpp:610 +msgid "Subtitle speed: " +msgstr "Ôá÷ýôçôá õðïôßôëùí: " + +#: engines/scumm/scumm.cpp:1880 +#, c-format +msgid "" +"Native MIDI support requires the Roland Upgrade from LucasArts,\n" +"but %s is missing. Using AdLib instead." +msgstr "" +"Ç õðïóôÞñéîç native MIDI áðáéôåß ôçí ÁíáâÜèìéóç Roland áðü ôç LucasArts,\n" +"áëëÜ ôï %s ëåßðåé. Ãßíåôáé ÷ñÞóç AdLib áíô 'áõôïý." + +#: engines/scumm/scumm.cpp:2733 +msgid "" +"Usually, Maniac Mansion would start now. But for that to work, the game " +"files for Maniac Mansion have to be in the 'Maniac' directory inside the " +"Tentacle game directory, and the game has to be added to ScummVM." +msgstr "" +"ÊáíïíéêÜ, ôþñá èá îåêéíïýóå ôï Maniac Mansion. ÁëëÜ ãéá íá ëåéôïõñãÞóåé " +"áõôü, ôá áñ÷åßá ðáé÷íéäéïý ôïõ Maniac Mansion èá ðñÝðåé íá åßíáé ìÝóá óôï " +"öÜêåëï 'Maniac' ìÝóá óôï öÜêåëï ðáé÷íéäéïý ôïõ Tentacle, êáé ôï ðáé÷íßäé " +"ðñÝðåé íá ðñïóôåèåß óôï ScummVM." + +#: engines/scumm/players/player_v3m.cpp:129 +msgid "" +"Could not find the 'Loom' Macintosh executable to read the\n" +"instruments from. Music will be disabled." +msgstr "" + +#: engines/scumm/players/player_v5m.cpp:107 +msgid "" +"Could not find the 'Monkey Island' Macintosh executable to read the\n" +"instruments from. Music will be disabled." +msgstr "" +"Äåí Þôáí äõíáôÞ ç åýñåóç ôïõ åêôåëÝóéìïõ Macintosh 'Monkey Island' áðü\n" +"ôï ïðïßï íá äéáâáóôïýí ôá üñãáíá ìïõóéêÞò. Ç ìïõóéêÞ èá áðåíåñãïðïéçèåß." + +#: engines/sherlock/detection.cpp:81 +msgid "Pixellated scene transitions" +msgstr "ÐéîåëéáóìÝíåò ìåôáâÜóåéò óêçíÞò" + +#: engines/sherlock/detection.cpp:82 +msgid "When changing scenes, a randomized pixel transition is done" +msgstr "Óôçí åíáëëáãÞ óêçíþí, ðñáãìáôïðïéåßôáé ìéá ôõ÷áßá ìåôÜâáóç pixel" + +#: engines/sherlock/detection.cpp:91 +msgid "Don't show hotspots when moving mouse" +msgstr "Áðüêñõøç åíåñãþí ðåñéï÷þí üôáí ìåôáêéíåßôáé ï äñïìÝáò" + +#: engines/sherlock/detection.cpp:92 +msgid "" +"Only show hotspot names after you actually click on a hotspot or action " +"button" +msgstr "" + +#: engines/sherlock/detection.cpp:101 +msgid "Show character portraits" +msgstr "ÐñïâïëÞ ðïñôñÝôùí ÷áñáêôÞñùí" + +#: engines/sherlock/detection.cpp:102 +msgid "Show portraits for the characters when conversing" +msgstr "ÅìöÜíéóç ðïñôñÝôùí ÷áñáêôÞñùí êáôÜ ôç äéÜñêåéá óõíïìéëßáò" + +#: engines/sherlock/detection.cpp:111 +msgid "Slide dialogs into view" +msgstr "Êýëéóç äéáëüãùí üôáí åìöáíßæïíôáé" + +#: engines/sherlock/detection.cpp:112 +msgid "Slide UI dialogs into view, rather than simply showing them immediately" +msgstr "Êýëéóç äéáëüãùí äéåðáöÞò üôáí åìöáíßæïíôáé, áíôß íá åìöáíßæïíôáé Üìåóá" + +#: engines/sherlock/detection.cpp:121 +msgid "Transparent windows" +msgstr "ÄéáöáíÞ ðáñÜèõñá" + +#: engines/sherlock/detection.cpp:122 +msgid "Show windows with a partially transparent background" +msgstr "ÅìöÜíéóç ðáñáèýñùí ìå Ýíá ìåñéêþò äéáöáíÝò öüíôï" + +#: engines/sky/compact.cpp:141 +msgid "The \"sky.cpt\" engine data file has an incorrect size." +msgstr "Ôï áñ÷åßï äåäïìÝíùí ðáé÷íéäéïý \"sky.cpt\" Ý÷åé åóöáëìÝíï ìÝãåèïò." + +#: engines/sky/detection.cpp:44 +msgid "Floppy intro" +msgstr "ÅéóáãùãÞ Ýêäïóçò äéóêÝôáò" + +#: engines/sky/detection.cpp:45 +msgid "Use the floppy version's intro (CD version only)" +msgstr "×ñÞóç ôçò åéóáãùãÞò áðü ôçí Ýêäïóç äéóêÝôáò (Ýêäïóç CD ìüíï)" + +#: engines/sword1/animation.cpp:524 +#, c-format +msgid "PSX stream cutscene '%s' cannot be played in paletted mode" +msgstr "" + +#: engines/sword1/animation.cpp:545 engines/sword2/animation.cpp:445 +msgid "DXA cutscenes found but ScummVM has been built without zlib" +msgstr "" +"ÂñÝèçêáí ôáéíßåò DXA áëëÜ ôï ScummVM Ý÷åé öôéá÷ôåß ÷ùñßò õðïóôÞñéîç zlib" + +#: engines/sword1/animation.cpp:561 engines/sword2/animation.cpp:461 +msgid "" +"MPEG-2 cutscenes found but ScummVM has been built without MPEG-2 support" +msgstr "" +"ÂñÝèçêáí âßíôåï MPEG-2 áëëÜ ôï ScummVM êáôáóêåõÜóôçêå ÷ùñßò õðïóôÞñéîç MPEG-2" + +#: engines/sword1/animation.cpp:568 engines/sword2/animation.cpp:470 +#, c-format +msgid "Cutscene '%s' not found" +msgstr "" + +#: engines/sword1/control.cpp:863 +msgid "" +"ScummVM found that you have old saved games for Broken Sword 1 that should " +"be converted.\n" +"The old saved game format is no longer supported, so you will not be able to " +"load your games if you don't convert them.\n" +"\n" +"Press OK to convert them now, otherwise you will be asked again the next " +"time you start the game.\n" +msgstr "" +"Ôï ScummVM äéáðßóôùóå üôé Ý÷åôå ðáëéÜ áðïèçêåõìÝíá ðáé÷íßäéá ãéá ôï Broken " +"Sword 1 ðïõ èá ðñÝðåé íá ìåôáôñáðïýí.\n" +"Ç ðáëéÜ áðïèçêåõìÝíç ìïñöÞ ðáé÷íéäéïý äåí õðïóôçñßæåôáé ðëÝïí, ïðüôå äå èá " +"åßóôå óå èÝóç íá öïñôþóåôå ôá ðáé÷íßäéá óáò, áí äåí ôá ìåôáôñÝøåôå.\n" +"\n" +"ÐáôÞóôå OK ãéá íá ôá ìåôáôñÝøåôå ôþñá, áëëéþò èá óáò æçôçèåß îáíÜ ôçí " +"åðüìåíç öïñÜ ðïõ èá îåêéíÞóåôå ôï ðáé÷íßäé.\n" + +#: engines/sword1/control.cpp:1232 +#, c-format +msgid "" +"Target new saved game already exists!\n" +"Would you like to keep the old saved game (%s) or the new one (%s)?\n" +msgstr "" +"Ôï íÝï áðïèçêåõìÝíï ðáé÷íßäé õðÜñ÷åé Þäç óôïí ðñïïñéóìü!\n" +"ÈÝëåôå íá äéáôçñÞóåôå ôï ðáëéü áðïèçêåõìÝíï ðáé÷íßäé (%s) Þ ôï íÝï (%s);\n" + +#: engines/sword1/control.cpp:1235 +msgid "Keep the old one" +msgstr "ÊñÜôçóå ôï ðáëéü" + +#: engines/sword1/control.cpp:1235 +msgid "Keep the new one" +msgstr "ÊñÜôçóå ôï êáéíïýñãéï" + +#: engines/sword1/logic.cpp:1633 +msgid "This is the end of the Broken Sword 1 Demo" +msgstr "Áõôü åßíáé ôï ôÝëïò ôçò åðßäåéîçò ôïõ Broken Sword 1" + +#: engines/sword2/animation.cpp:425 +msgid "" +"PSX cutscenes found but ScummVM has been built without RGB color support" +msgstr "" +"ÂñÝèçêáí âßíôåï PSX áëëÜ ôï ScummVM äçìéïõñãÞèçêå ÷ùñßò õðïóôÞñéîç ÷ñþìáôïò " +"RGB" + +#: engines/sword2/sword2.cpp:79 +msgid "Show object labels" +msgstr "ÐñïâïëÞ åôéêåôþí áíôéêåéìÝíùí" + +#: engines/sword2/sword2.cpp:80 +msgid "Show labels for objects on mouse hover" +msgstr "ÅìöÜíéóç åôéêåôþí ãéá áíôéêåßìåíá êáôÜ ôçí áéþñçóç ôïõ ðïíôéêéïý" + +#: engines/sword25/detection.cpp:46 +msgid "Use English speech" +msgstr "×ñÞóç ÁããëéêÞò ïìéëßáò" + +#: engines/sword25/detection.cpp:47 +msgid "" +"Use English speech instead of German for every language other than German" +msgstr "" +"×ñÞóç ÁããëéêÞò ïìéëßáò áíôß ãéá ÃåñìáíéêÞ ãéá êÜèå ãëþóóá åêôüò ôçò " +"ÃåñìáíéêÞò" + +#: engines/teenagent/resources.cpp:118 +msgid "" +"The teenagent.dat file is compressed and zlib hasn't been included in this " +"executable. Please decompress it" +msgstr "" +"Ôï áñ÷åßï teenagent.dat åßíáé óõìðéåóìÝíï êáé ç zlib äåí Ý÷åé óõìðåñéëçöèåß " +"óå áõôü ôï åêôåëÝóéìï. Ðáñáêáëþ áðïóõìðéÝóôå ôï" + +#: engines/tony/tony.cpp:258 +#, c-format +msgid "Font variant not present in '%s' engine data file." +msgstr "" +"H ðáñáëëáãÞ ãñáììáôïóåéñÜò äåí õðÜñ÷åé óôï áñ÷åßï äåäïìÝíùí '%s' ôçò ìç÷áíÞò." + +#: engines/toon/toon.cpp:222 +#, c-format +msgid "Saved game in slot #%d " +msgstr "ÁðïèÞêåõóç ðáé÷íéäéïý óôç èõñßäá #%d " + +#: engines/toon/toon.cpp:226 +#, c-format +msgid "Could not quick save into slot #%d" +msgstr "Äåí Þôáí äõíáôÞ ç ãñÞãïñç áðïèÞêåõóç óôç èõñßäá #%d" + +#: engines/toon/toon.cpp:239 +#, c-format +msgid "Saved game #%d quick loaded" +msgstr "Ôï áðïèçêåõìÝíç ðáé÷íßäé #%d öïñôþèçêå ãñÞãïñá" + +#: engines/toon/toon.cpp:243 +#, c-format +msgid "Could not quick load the saved game #%d" +msgstr "Äåí Þôáí äõíáôÞ ç ãñÞãïñç öüñôùóç ôïõ áðïèçêåõìÝíïõ ðáé÷íéäéïý #%d" + +#: engines/wintermute/detection.cpp:58 +msgid "Show FPS-counter" +msgstr "ÐñïâïëÞ ìåôñçôÞ FPS" + +#: engines/wintermute/detection.cpp:59 +msgid "Show the current number of frames per second in the upper left corner" +msgstr "" +"ÅìöÜíéóç ôïõ ôñÝ÷ïíôïò áñéèìïý êáñÝ áíÜ äåõôåñüëåðôï óôçí åðÜíù áñéóôåñÞ " +"ãùíßá" + +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "Äéãñáììéêü öéëôñÜñéóìá óôïé÷åßùí (ÁÑÃÏ)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "ÅöáñìïãÞ äéãñáììéêïý öéëôñáñßóìáôïò óå ìåìïíùìÝíá óôïé÷åßá" + +#: engines/zvision/detection_tables.h:52 +msgid "Use the original save/load screens instead of the ScummVM interface" +msgstr "" + +#: engines/zvision/detection_tables.h:61 +msgid "Double FPS" +msgstr "ÄéðëÜóéá FPS" + +#: engines/zvision/detection_tables.h:62 +msgid "Increase framerate from 30 to 60 FPS" +msgstr "" + +#: engines/zvision/detection_tables.h:71 +msgid "Enable Venus" +msgstr "Åíåñãïðïßçóç Áöñïäßôçò" + +#: engines/zvision/detection_tables.h:72 +msgid "Enable the Venus help system" +msgstr "Åíåñãïðïßçóç ôïõ óõóôÞìáôïò âïÞèåéáò ôçò Áöñïäßôçò" + +#: engines/zvision/detection_tables.h:81 +msgid "Disable animation while turning" +msgstr "Áðåíåñãïðïßçóç êßíçóçò êáôÜ ôçí ðåñéóôñïöÞ" + +#: engines/zvision/detection_tables.h:82 +msgid "Disable animation while turning in panorama mode" +msgstr "Áðåíåñãïðïßçóç êßíçóçò êáôÜ ôçí ðåñéóôñïöÞ óå ëåéôïõñãßá ðáíïñÜìáôïò" + +#: engines/zvision/detection_tables.h:91 +msgid "Use high resolution MPEG video" +msgstr "×ñÞóç MPEG âßíôåï õøçëÞò áíÜëõóçò" + +#: engines/zvision/detection_tables.h:92 +msgid "Use MPEG video from the DVD version instead of lower resolution AVI" +msgstr "" +"×ñÞóç âßíôåï MPEG áðü ôçí Ýêäïóç DVD áíôß ãéá ôï ÷áìçëüôåñçò áíÜëõóçò AVI" + +#: engines/zvision/file/save_manager.cpp:220 +#, c-format +msgid "" +"This saved game uses version %u, but this engine only supports up to version " +"%d. You will need an updated version of the engine to use this saved game." +msgstr "" +"Áõôü ôï áðïèçêåõìÝíï ðáé÷íßäé ÷ñçóéìïðïéåß Ýêäïóç%u, áëëÜ ç ìç÷áíÞ áõôÞ " +"õðïóôçñßæåé ìüíï ìÝ÷ñé ôçí Ýêäïóç%d. Èá ÷ñåéáóôåßôå ìéá åíçìåñùìÝíç Ýêäïóç " +"ôçò ìç÷áíÞò ãéá íá ÷ñçóéìïðïéÞóåôå áõôü ôï áðïèçêåõìÝíï ðáé÷íßäé." diff --git a/po/es_ES.po b/po/es_ES.po index aaea82720f..d7a0bf71dd 100644 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -1,5 +1,5 @@ # Spanish translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Tomás Maidagan, 2011. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.4.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-06 22:15+0000\n" -"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Spanish <https://translations.scummvm.org/projects/scummvm/" -"scummvm/es/>\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-30 20:22+0000\n" +"Last-Translator: Luis <luissagasta@gmail.com>\n" +"Language-Team: Spanish " +"<https://translations.scummvm.org/projects/scummvm/scummvm/es/>\n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -2759,7 +2759,7 @@ msgstr "Buscar actualizaciones..." #: engines/toon/toon.cpp:4918 #, c-format msgid "Unable to locate the '%s' engine data file." -msgstr "" +msgstr "No se puede localizar el archivo de datos del motor '%s'." #: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979 #: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73 @@ -2767,7 +2767,7 @@ msgstr "" #: engines/toon/toon.cpp:4930 #, c-format msgid "The '%s' engine data file is corrupt." -msgstr "" +msgstr "El archivo de datos del motor '%s' está corrupto." #: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990 #: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76 @@ -2778,6 +2778,8 @@ msgid "" "Incorrect version of the '%s' engine data file found. Expected %d.%d but got " "%d.%d." msgstr "" +"Se ha encontrado una versión incorrecta del archivo de datos del motor '%s'. " +"Se esperaba %d.%d pero se encontró %d.%d." #: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55 msgid "Color mode" @@ -3074,7 +3076,7 @@ msgstr "Abrir/Cerrar Inventario" #: engines/kyra/eobcommon.cpp:338 msgid "Switch Inventory/Character screen" -msgstr "Intercambiar pantalla de Inventario/Personaje" +msgstr "Cambiar pantalla de Inventario/Personaje" #: engines/kyra/eobcommon.cpp:339 msgid "Camp" @@ -3196,7 +3198,7 @@ msgstr "" #: engines/mads/detection.cpp:91 msgid "Easy mouse interface" -msgstr "Interfaz de ratón fácil" +msgstr "Interfaz de mouse sencilla" #: engines/mads/detection.cpp:92 msgid "Shows object names when hovering the mouse over them" @@ -3204,7 +3206,7 @@ msgstr "Muestra los nombres de los objetos al pasar el ratón" #: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102 msgid "Animated inventory items" -msgstr "Objetos del inventario animados" +msgstr "Items de inventario animados" #: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112 msgid "Animated game interface" @@ -3212,7 +3214,7 @@ msgstr "Interfaz de juego animada" #: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122 msgid "Naughty game mode" -msgstr "Modo de juego travieso" +msgstr "Modo de juego picante" #: engines/mohawk/detection.cpp:169 msgid "Play the Myst fly by movie" @@ -3254,16 +3256,16 @@ msgid "" "You're missing a Riven executable. The Windows executable is 'riven.exe' or " "'rivendmo.exe'. " msgstr "" -"Falta el ejecutable de Riven. El ejecutable de Windows es 'riven.exe' o " -"'rivendmo.exe'. " +"El ejecutable de Riven no ha sido encontrado. El ejecutable de Windows es " +"'riven.exe' o 'rivendmo.exe'. " #: engines/mohawk/riven.cpp:151 msgid "" "Using the 'arcriven.z' installer file also works. In addition, you can use " "the Mac 'Riven' executable." msgstr "" -"También es posible usar el instalador 'arcriven.z'. Además, puedes usar el " -"ejecutable de Mac 'Riven'." +"Usar el archivo de instalacion 'arcriven.z' es funcional. Tambien puedes " +"utilizar el ejecutable de Mac." #: engines/mohawk/riven.cpp:162 msgid "" @@ -3278,8 +3280,7 @@ msgid "" "Exploration beyond this point available only within the full version of\n" "the game." msgstr "" -"La exploración a partir de este punto solo está disponible en la versión\n" -"completa del juego." +"Exploracion mas alla de aquí solo esta disponible en la version completa." #: engines/mohawk/riven_external.cpp:655 msgid "" @@ -3289,11 +3290,11 @@ msgid "" "the game. ScummVM cannot do that and\n" "the site no longer exists." msgstr "" -"En este punto, la Demo de Riven\n" -"preguntaría si quieres abrir un navegador\n" -"para llevarte a la Red Orb store para comprar\n" -"el juego. ScummVM no puede hacer eso y\n" -"la página ya no existe." +"En este punto, la demo de Riven te\n" +"preguntaria si quisieras abrir un navegador de internet\n" +"para llevarte a la tienda de Red Orb para\n" +"comprar el juego. ScummVM no puede hacer eso y\n" +"el sitio ya no existe." #: engines/mohawk/mohawk.cpp:61 msgid "The game is paused. Press any key to continue." @@ -3516,9 +3517,9 @@ msgid "" "piracy.\n" "The full version is available for purchase from the iTunes Store." msgstr "" -"La versión Lite de Putt-Putt Saves the Zoo iOS no está soportada para evitar " -"la piratería.\n" -"La versión completa está disponible para comprar en la tienda iTunes." +"La version de prueba de Putt-Putt Saves the Zoo para IOS no esta soportada " +"para prevenir pirateria\n" +"La version completa puede ser comprada en la tienda de iTunes." #: engines/scumm/detection.cpp:1341 msgid "Show Object Line" @@ -4419,6 +4420,14 @@ msgid "Show the current number of frames per second in the upper left corner" msgstr "" "El número de fotogramas por segundo aparece en la esquina superior izquierda" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" @@ -4453,10 +4462,9 @@ msgid "Use high resolution MPEG video" msgstr "Usar vídeos MPEG de alta resolución" #: engines/zvision/detection_tables.h:92 -#, fuzzy msgid "Use MPEG video from the DVD version instead of lower resolution AVI" msgstr "" -"Usar los vídeos MPEG de la versión DVD, en vez de los AVI de baja resolución" +"Usar los vídeos MPEG de la versión DVD en vez de los AVI de baja resolución" #: engines/zvision/file/save_manager.cpp:220 #, c-format @@ -1,5 +1,5 @@ # Basque translation for ScummVM. -# Copyright (C) 2012-2016 The ScummVM Team +# Copyright (C) 2012-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Mikel Iturbe Urretxa <mikel@hamahiru.org>, 2012. # @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.5.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-12-04 13:27+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Basque <https://translations.scummvm.org/projects/scummvm/" @@ -4402,6 +4402,14 @@ msgstr "Erakutsi FPS kontatzailea" msgid "Show the current number of frames per second in the upper left corner" msgstr "Erakutsi momentuko FPS (frames per second) goiko ezkerreko ertzean" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/fi_FI.po b/po/fi_FI.po index 139c031881..1474fe13a2 100644 --- a/po/fi_FI.po +++ b/po/fi_FI.po @@ -1,5 +1,5 @@ # Finnish translation for ScummVM. -# Copyright (c) 2012-2016 The ScummVM Team +# Copyright (c) 2012-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Toni Saarela <saarela@gmail.com>, 2012. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.6.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-12 00:10+0000\n" -"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Finnish <https://translations.scummvm.org/projects/scummvm/" -"scummvm/fi/>\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2017-01-04 21:26+0000\n" +"Last-Translator: Timo Mikkolainen <tmikkola@gmail.com>\n" +"Language-Team: Finnish " +"<https://translations.scummvm.org/projects/scummvm/scummvm/fi/>\n" "Language: fi_FI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -79,21 +79,20 @@ msgid "Choose" msgstr "Valitse" #: gui/downloaddialog.cpp:48 -#, fuzzy msgid "Select directory where to download game data" -msgstr "Valitse pelin kansio" +msgstr "Valitse hakemisto pelilataukselle" #: gui/downloaddialog.cpp:49 gui/editgamedialog.cpp:470 gui/launcher.cpp:197 msgid "Select directory with game data" -msgstr "Valitse pelin kansio" +msgstr "Valitse pelin hakemisto" #: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263 msgid "From: " -msgstr "" +msgstr "Lähde: " #: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264 msgid "To: " -msgstr "" +msgstr "Kohde: " #: gui/downloaddialog.cpp:63 msgid "Cancel download" @@ -113,6 +112,7 @@ msgid "" "It looks like your connection is limited. Do you really want to download " "files with it?" msgstr "" +"Yhteytesi vaikuttaa rajatulta. Haluatko varmasti ladata tiedostoja sillä?" #: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:152 #: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217 @@ -149,6 +149,8 @@ msgid "" "Cannot create a directory to download - the specified directory has a file " "with the same name." msgstr "" +"Kansion luonti latausta varten epäonnistui - valitussa kansiossa on jo " +"tiedosto samalla nimellä." #: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293 #: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:522 @@ -168,7 +170,7 @@ msgstr "" #: engines/sword2/animation.cpp:461 engines/sword2/animation.cpp:471 #: engines/zvision/file/save_manager.cpp:224 msgid "OK" -msgstr "Tallenna" +msgstr "OK" #: gui/downloaddialog.cpp:151 #, c-format @@ -176,11 +178,13 @@ msgid "" "The \"%s\" already exists in the specified directory.\n" "Do you really want to download files into that directory?" msgstr "" +"\"%s\" on jo olemassa valitussa hakemistossa. Haluatko varmasti ladata " +"tiedostoja tähän hakemistoon?" #: gui/downloaddialog.cpp:251 #, c-format msgid "Downloaded %s %s / %s %s" -msgstr "" +msgstr "Ladattu %s %s / %s %s" #: gui/downloaddialog.cpp:258 #, c-format @@ -257,7 +261,7 @@ msgstr "Alusta:" #: gui/editgamedialog.cpp:176 msgid "Engine" -msgstr "Moottori" +msgstr "Pelimoottori" #: gui/editgamedialog.cpp:184 gui/options.cpp:1147 gui/options.cpp:1232 msgid "Graphics" @@ -399,21 +403,23 @@ msgstr "Oletus" #: gui/editgamedialog.cpp:450 gui/options.cpp:1772 msgid "Select SoundFont" -msgstr "Valitse äänifontti" +msgstr "Valitse SoundFont" #: gui/editgamedialog.cpp:489 msgid "Select additional game directory" -msgstr "Valitse lisäkansio pelille" +msgstr "Valitse lisähakemisto pelille" #: gui/editgamedialog.cpp:502 gui/options.cpp:1695 msgid "Select directory for saved games" -msgstr "Valitse kansio pelitallennuksille" +msgstr "Valitse hakemisto pelitallennuksille" #: gui/editgamedialog.cpp:508 msgid "" "Saved games sync feature doesn't work with non-default directories. If you " "want your saved games to sync, use default directory." msgstr "" +"Pelitallennusten synkronointiominaisuus toimii ainoastaa vakiohakemistoilla. " +"Jos haluat synkronoida pelitallennuksesi, käytä vakiohakemistoa." #: gui/editgamedialog.cpp:534 msgid "This game ID is already taken. Please choose another one." @@ -421,11 +427,11 @@ msgstr "Pelin tunnus on jo käytössä. Valitse jokin muu." #: gui/editrecorddialog.cpp:58 msgid "Author:" -msgstr "" +msgstr "Tekijä:" #: gui/editrecorddialog.cpp:60 msgid "Notes:" -msgstr "" +msgstr "Merkinnät:" #: gui/editrecorddialog.cpp:68 gui/predictivedialog.cpp:74 msgid "Ok" @@ -433,11 +439,11 @@ msgstr "Ok" #: gui/filebrowser-dialog.cpp:49 msgid "Choose file for loading" -msgstr "" +msgstr "Valitse ladattava tiedosto" #: gui/filebrowser-dialog.cpp:49 msgid "Enter filename for saving" -msgstr "" +msgstr "Syötä tiedoston nimi tallennukselle" #: gui/filebrowser-dialog.cpp:132 msgid "Do you really want to overwrite the file?" @@ -448,9 +454,8 @@ msgid "Reverb" msgstr "Kaiku" #: gui/fluidsynth-dialog.cpp:70 gui/fluidsynth-dialog.cpp:102 -#, fuzzy msgid "Active" -msgstr " (Aktiivinen)" +msgstr "Aktiivinen" #: gui/fluidsynth-dialog.cpp:72 msgid "Room:" @@ -458,7 +463,7 @@ msgstr "Huone:" #: gui/fluidsynth-dialog.cpp:79 msgid "Damp:" -msgstr "" +msgstr "Vaimennus:" #: gui/fluidsynth-dialog.cpp:86 msgid "Width:" @@ -470,11 +475,11 @@ msgstr "Taso:" #: gui/fluidsynth-dialog.cpp:100 msgid "Chorus" -msgstr "" +msgstr "Korus" #: gui/fluidsynth-dialog.cpp:104 msgid "N:" -msgstr "" +msgstr "N:" #: gui/fluidsynth-dialog.cpp:118 msgid "Speed:" @@ -506,7 +511,7 @@ msgstr "Interpolaatio:" #: gui/fluidsynth-dialog.cpp:143 msgid "None (fastest)" -msgstr "ei päällä (nopein)" +msgstr "Ei päällä (nopein)" #: gui/fluidsynth-dialog.cpp:144 msgid "Linear" @@ -522,11 +527,11 @@ msgstr "Seitsemännen asteen" #: gui/fluidsynth-dialog.cpp:150 msgid "Reset" -msgstr "" +msgstr "Tyhjää valinnat" #: gui/fluidsynth-dialog.cpp:150 msgid "Reset all FluidSynth settings to their default values." -msgstr "" +msgstr "Palauta FluidSynth vaikoasetukset." #: gui/fluidsynth-dialog.cpp:217 msgid "" @@ -700,7 +705,7 @@ msgstr "" #: gui/launcher.cpp:365 msgid "This directory cannot be used yet, it is being downloaded into!" -msgstr "" +msgstr "Tätä kansiota ei voi käyttää vielä, siihen ladataan tiedostoja!" #: gui/launcher.cpp:415 msgid "Do you really want to remove this game configuration?" @@ -732,7 +737,7 @@ msgstr "Lisää monta..." #: gui/launcher.cpp:710 msgid "Record..." -msgstr "" +msgstr "Nauhoita..." #: gui/massadd.cpp:79 gui/massadd.cpp:82 msgid "... progress ..." @@ -763,21 +768,19 @@ msgstr "" #: gui/onscreendialog.cpp:101 gui/onscreendialog.cpp:103 msgid "Stop" -msgstr "" +msgstr "Pysäytä" #: gui/onscreendialog.cpp:106 msgid "Edit record description" -msgstr "" +msgstr "Muokkaa nauhoituksen kuvausta" #: gui/onscreendialog.cpp:108 -#, fuzzy msgid "Switch to Game" -msgstr "Vaihda" +msgstr "Vaihda peliin" #: gui/onscreendialog.cpp:110 -#, fuzzy msgid "Fast replay" -msgstr "Nopea moodi" +msgstr "Nopea toisto" #: gui/options.cpp:119 common/updates.cpp:56 msgid "Never" @@ -842,9 +845,8 @@ msgid "the fullscreen setting could not be changed" msgstr "kokoruututilaa ei voitu muuttaa" #: gui/options.cpp:486 -#, fuzzy msgid "the filtering setting could not be changed" -msgstr "kokoruututilaa ei voitu muuttaa" +msgstr "Suodatusasetusta ei voitu muuttaa" #: gui/options.cpp:809 msgid "Graphics mode:" @@ -864,13 +866,12 @@ msgid "Fullscreen mode" msgstr "Kokoruututila" #: gui/options.cpp:838 -#, fuzzy msgid "Filter graphics" -msgstr "Grafiikka" +msgstr "Suodata grafiikka" #: gui/options.cpp:838 msgid "Use linear filtering when scaling graphics" -msgstr "" +msgstr "Käytä bilineaarista suodatinta grafiikan skaalauksessa" #: gui/options.cpp:841 msgid "Aspect ratio correction" @@ -878,7 +879,7 @@ msgstr "Kuvasuhteen korjaus" #: gui/options.cpp:841 msgid "Correct aspect ratio for 320x200 games" -msgstr "Oikea kuvasuhde 320x200 peleille" +msgstr "Korjaa kuvasuhde 320x200 peleille" #: gui/options.cpp:849 msgid "Preferred Device:" @@ -946,7 +947,7 @@ msgstr "Käytä ensimmäistä laitetta" #: gui/options.cpp:934 msgid "SoundFont:" -msgstr "Äänifontti:" +msgstr "SoundFont:" #: gui/options.cpp:934 gui/options.cpp:936 gui/options.cpp:937 msgid "SoundFont is supported by some audio cards, FluidSynth and Timidity" @@ -956,7 +957,7 @@ msgstr "" #: gui/options.cpp:936 msgctxt "lowres" msgid "SoundFont:" -msgstr "Äänifontti:" +msgstr "SoundFont:" #: gui/options.cpp:942 msgid "Mixed AdLib/MIDI mode" @@ -996,15 +997,16 @@ msgid "True Roland MT-32 (no GM emulation)" msgstr "Aito Roland MT-32 (ei GM emulointia)" #: gui/options.cpp:965 -#, fuzzy msgid "Roland GS Device (enable MT-32 mappings)" -msgstr "Aito Roland MT-32 (ei GM emulointia)" +msgstr "Roland GS Laite (aktivoi MT-32 mappaukset)" #: gui/options.cpp:965 msgid "" "Check if you want to enable patch mappings to emulate an MT-32 on a Roland " "GS device" msgstr "" +"Valitse jos haluat käyttää patch mappingia MT-32:n emultointiin Roland GS " +"laitteella" #: gui/options.cpp:974 msgid "Don't use Roland MT-32 music" @@ -1028,7 +1030,7 @@ msgstr "Molemmat" #: gui/options.cpp:1009 msgid "Subtitle speed:" -msgstr "Tekstin nopeus:" +msgstr "Tekstityksen nopeus:" #: gui/options.cpp:1011 msgctxt "lowres" @@ -1055,7 +1057,7 @@ msgstr "Näytä tekstitys ja käytä puhetta" #: gui/options.cpp:1019 msgctxt "lowres" msgid "Subtitle speed:" -msgstr "Tekstin nopeus:" +msgstr "Tekstityksen nopeus:" #: gui/options.cpp:1035 msgid "Music volume:" @@ -1156,15 +1158,15 @@ msgstr "ScummVM käyttöliittymän kieli" #: gui/options.cpp:1381 msgid "Update check:" -msgstr "" +msgstr "Päivitystarkistus:" #: gui/options.cpp:1381 msgid "How often to check ScummVM updates" -msgstr "" +msgstr "Kuinka usein tarkistaa onko ScummVM:ään päivityksiä" #: gui/options.cpp:1393 msgid "Check now" -msgstr "" +msgstr "Tarkista nyt" #: gui/options.cpp:1401 msgid "Cloud" @@ -1177,15 +1179,15 @@ msgstr "Pilvi" #: gui/options.cpp:1408 msgid "Storage:" -msgstr "" +msgstr "Tallennustila:" #: gui/options.cpp:1408 msgid "Active cloud storage" -msgstr "" +msgstr "Aktiivinen pilvitallennus" #: gui/options.cpp:1415 gui/options.cpp:1972 msgid "<none>" -msgstr "" +msgstr "<tyhjä>" #: gui/options.cpp:1419 backends/platform/wii/options.cpp:114 msgid "Username:" @@ -1193,7 +1195,7 @@ msgstr "Käyttäjänimi:" #: gui/options.cpp:1419 msgid "Username used by this storage" -msgstr "" +msgstr "Tallennustilan käyttäjänimi" #: gui/options.cpp:1422 msgid "Used space:" @@ -1201,31 +1203,31 @@ msgstr "Käytetty tila:" #: gui/options.cpp:1422 msgid "Space used by ScummVM's saved games on this storage" -msgstr "" +msgstr "ScummVM:n pelitallennusten käyttämä tila tallennustilassa" #: gui/options.cpp:1425 msgid "Last sync time:" -msgstr "" +msgstr "Viimeisin synkronointi:" #: gui/options.cpp:1425 msgid "When the last saved games sync for this storage occured" -msgstr "" +msgstr "Milloin pelitallennukset viimeksi synkronoitiin tähän tallennustilaan" #: gui/options.cpp:1428 gui/storagewizarddialog.cpp:71 msgid "Connect" -msgstr "" +msgstr "Yhdistä" #: gui/options.cpp:1428 msgid "Open wizard dialog to connect your cloud storage account" -msgstr "" +msgstr "Avaa velhodialogi pilvitilan tiliin kirjautumiseen" #: gui/options.cpp:1429 msgid "Refresh" -msgstr "" +msgstr "Päivitä" #: gui/options.cpp:1429 msgid "Refresh current cloud storage information (username and usage)" -msgstr "" +msgstr "Päivitä tämänhetkiset pilvitilan tiedot (käyttäjänimi ja käyttöaste)" #: gui/options.cpp:1430 msgid "Download" @@ -1233,36 +1235,32 @@ msgstr "Lataa" #: gui/options.cpp:1430 msgid "Open downloads manager dialog" -msgstr "" +msgstr "Avaa lataustenhallintadialogi" #: gui/options.cpp:1432 msgid "Run server" -msgstr "" +msgstr "Käynnistä palvelin" #: gui/options.cpp:1432 msgid "Run local webserver" -msgstr "" +msgstr "Käynnistä paikallinen webpalvelin" #: gui/options.cpp:1433 gui/options.cpp:2082 -#, fuzzy msgid "Not running" -msgstr "Virhe ajettaessa peliä:" +msgstr "Ei käynnissä" #: gui/options.cpp:1437 -#, fuzzy msgid "/root/ Path:" -msgstr "Lisäkansio:" +msgstr "/root/-polku:" #: gui/options.cpp:1437 gui/options.cpp:1439 gui/options.cpp:1440 -#, fuzzy msgid "Specifies which directory the Files Manager can access" -msgstr "Määrittää polun pelitallennuksille" +msgstr "Määrittää hakemiston johon tiedostonhallinnalla on pääsy" #: gui/options.cpp:1439 -#, fuzzy msgctxt "lowres" msgid "/root/ Path:" -msgstr "Lisäkansio:" +msgstr "/root/-polku:" #: gui/options.cpp:1449 msgid "Server's port:" @@ -1273,19 +1271,20 @@ msgid "" "Which port is used by the server\n" "Auth with server is not available with non-default port" msgstr "" +"Palvelimen käyttämä portti\n" +"Autentikaatio palvelimella on mahdollista vain vakioportilla" #: gui/options.cpp:1462 msgid "Apply" -msgstr "" +msgstr "Käytä" #: gui/options.cpp:1628 -#, fuzzy msgid "Failed to change cloud storage!" -msgstr "Pelin tallentaminen epäonnistui." +msgstr "Pilvitallennustilan vaihtaminen epäonnistui!" #: gui/options.cpp:1631 msgid "Another cloud storage is already active." -msgstr "" +msgstr "Toinen pilvitila on jo aktiivinen." #: gui/options.cpp:1667 msgid "" @@ -1312,23 +1311,21 @@ msgid "Select directory for plugins" msgstr "Valitse hakemisto plugineille" #: gui/options.cpp:1744 -#, fuzzy msgid "Select directory for Files Manager /root/" -msgstr "Valitse hakemisto lisätiedostoille" +msgstr "Valitse /root/ hakemisto tiedostonhallinnalle" #: gui/options.cpp:1979 #, c-format msgid "%llu bytes" -msgstr "" +msgstr "%llu tavua" #: gui/options.cpp:1987 msgid "<right now>" msgstr "<nyt>" #: gui/options.cpp:1989 -#, fuzzy msgid "<never>" -msgstr "Ei koskaan" +msgstr "<ei koskaan>" #: gui/options.cpp:2073 msgid "Stop server" @@ -1336,13 +1333,15 @@ msgstr "Pysäytä palvelin" #: gui/options.cpp:2074 msgid "Stop local webserver" -msgstr "" +msgstr "Pysäytä paikallinen webpalvelin" #: gui/options.cpp:2163 msgid "" "Request failed.\n" "Check your Internet connection." msgstr "" +"Pyyntö epäonnistui\n" +"Tarkista verkkoyhteytesi." #. I18N: You must leave "#" as is, only word 'next' is translatable #: gui/predictivedialog.cpp:86 @@ -1354,9 +1353,8 @@ msgid "add" msgstr "lisää" #: gui/predictivedialog.cpp:92 gui/predictivedialog.cpp:167 -#, fuzzy msgid "Delete char" -msgstr "Poista" +msgstr "Poista merkki" #: gui/predictivedialog.cpp:97 gui/predictivedialog.cpp:171 msgid "<" @@ -1379,7 +1377,7 @@ msgstr "* Abc" #: gui/recorderdialog.cpp:63 msgid "Recorder or Playback Gameplay" -msgstr "" +msgstr "Nauhoitin tai Toista Tallennus" #: gui/recorderdialog.cpp:68 gui/recorderdialog.cpp:155 #: gui/saveload-dialog.cpp:387 gui/saveload-dialog.cpp:443 @@ -1388,12 +1386,11 @@ msgstr "Poista" #: gui/recorderdialog.cpp:70 msgid "Record" -msgstr "" +msgstr "Nauhoita" #: gui/recorderdialog.cpp:71 -#, fuzzy msgid "Playback" -msgstr "Pelaa" +msgstr "Toista" #: gui/recorderdialog.cpp:73 msgid "Edit" @@ -1402,25 +1399,22 @@ msgstr "Muokkaa" #: gui/recorderdialog.cpp:85 gui/recorderdialog.cpp:242 #: gui/recorderdialog.cpp:252 msgid "Author: " -msgstr "" +msgstr "Tekijä: " #: gui/recorderdialog.cpp:86 gui/recorderdialog.cpp:243 #: gui/recorderdialog.cpp:253 msgid "Notes: " -msgstr "" +msgstr "Merkinnät: " #: gui/recorderdialog.cpp:154 -#, fuzzy msgid "Do you really want to delete this record?" -msgstr "Haluatko varmasti poistaa tämän pelitallennuksen?" +msgstr "Haluatko varmasti poistaa tämän pelinauhoituksen?" #: gui/recorderdialog.cpp:173 -#, fuzzy msgid "Unknown Author" -msgstr "Tuntematon virhe" +msgstr "Tuntematon tekijä" #: gui/remotebrowser.cpp:128 -#, fuzzy msgid "ScummVM could not access the directory!" msgstr "ScummVM ei voi avata kyseistä hakemistoa!" @@ -1461,7 +1455,6 @@ msgid "Playtime: " msgstr "Peliaika: " #: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665 -#, fuzzy msgid "Untitled saved game" msgstr "Nimetön pelitallennus" @@ -1493,19 +1486,19 @@ msgstr "Anna kuvaus tallennukselle numero %d:" #: gui/storagewizarddialog.cpp:55 #, c-format msgid "%s Storage Connection Wizard" -msgstr "" +msgstr "%s Tallennustilan Yhdistämisvelho" #: gui/storagewizarddialog.cpp:58 msgid "Navigate to the following URL:" -msgstr "" +msgstr "Siirry seuraavaan osoitteeseen:" #: gui/storagewizarddialog.cpp:61 msgid "Obtain the code from the storage, enter it" -msgstr "" +msgstr "Hanki koodi tallennustilasta, syötä se" #: gui/storagewizarddialog.cpp:62 msgid "in the following field and press 'Connect':" -msgstr "" +msgstr "seuraavasta kentästä ja paina 'Yhdistä':" #: gui/storagewizarddialog.cpp:69 msgid "Open URL" @@ -1517,33 +1510,33 @@ msgstr "Liitä" #: gui/storagewizarddialog.cpp:70 msgid "Pastes clipboard contents into fields" -msgstr "" +msgstr "Liittää lekepöydän sisällön kenttiin" #: gui/storagewizarddialog.cpp:78 msgid "You will be directed to ScummVM's page where" -msgstr "" +msgstr "Sinut ohjataan ScummVM:n sivuille jossa" #: gui/storagewizarddialog.cpp:79 msgid "you should allow it to access your storage." -msgstr "" +msgstr "sinun pitää sallia sen pääsy tallennustilaasi." #: gui/storagewizarddialog.cpp:112 msgid "Another Storage is active. Do you want to interrupt it?" -msgstr "" +msgstr "Toinen tallennustila on aktiivinen. Haluatko keskeyttää sen?" #: gui/storagewizarddialog.cpp:121 msgid "Wait until current Storage finishes up and try again." -msgstr "" +msgstr "Odota kunnes aktiivinen Tallennus on valmis ja yritä sitten uudestaan." #: gui/storagewizarddialog.cpp:182 #, c-format msgid "Field %s has a mistake in it." -msgstr "" +msgstr "%s-kentässä on virhe." #: gui/storagewizarddialog.cpp:184 #, c-format msgid "Fields %s have mistakes in them." -msgstr "" +msgstr "Seuraavissa kentissä on virheitä: %s." #: gui/storagewizarddialog.cpp:199 msgid "All OK!" @@ -1558,6 +1551,8 @@ msgid "" "Failed to open URL!\n" "Please navigate to this page manually." msgstr "" +"Osoitteen avaaminen epäonnistui!\n" +"Ole hyvä ja siirry osoitteeseen käsin." #: gui/themebrowser.cpp:45 msgid "Select a Theme" @@ -1573,23 +1568,20 @@ msgid "Disabled GFX" msgstr "Disabloitu GFX" #: gui/ThemeEngine.cpp:453 -#, fuzzy msgid "Standard Renderer" -msgstr "Standardirenderöijä (16 bpp)" +msgstr "Standardirenderöijä" #: gui/ThemeEngine.cpp:453 engines/scumm/dialogs.cpp:659 msgid "Standard" msgstr "Standardi" #: gui/ThemeEngine.cpp:455 -#, fuzzy msgid "Antialiased Renderer" -msgstr "Antialiasoitu renderöijä (16 bpp)" +msgstr "Antialiasoitu renderöijä" #: gui/ThemeEngine.cpp:455 -#, fuzzy msgid "Antialiased" -msgstr "Antialiasoitu (16 bpp)" +msgstr "Antialiasoitu" #: gui/updates-dialog.cpp:51 msgid "" @@ -1598,10 +1590,14 @@ msgid "" "\n" "Would you like to enable this feature?" msgstr "" +"ScummVM tukee nyt automaattista päivitysten tarkistusta\n" +"joka vaatii pääsyn internetiin\n" +"\n" +"Haluaisitko laittaa päälle tämän ominaisuuden?" #: gui/updates-dialog.cpp:55 msgid "(You can always enable it in the options dialog on the Misc tab)" -msgstr "" +msgstr "(Voit aina laittaa sen päälle asetusvalikon \"Muut\"-välilehdestä)" #: gui/updates-dialog.cpp:92 msgid "Check for updates automatically" @@ -1700,9 +1696,8 @@ msgid "Could not find suitable engine plugin" msgstr "Sopivaa pelimoottorin pluginia ei löytynyt" #: common/error.cpp:68 -#, fuzzy msgid "Engine plugin does not support saved games" -msgstr "Pelimoottori ei tue tallennustiloja" +msgstr "Pelimoottoriliitännäinen ei tue pelitallenteita" #: common/error.cpp:71 msgid "User canceled" @@ -1715,11 +1710,11 @@ msgstr "Tuntematon virhe" #. I18N: Hercules is graphics card name #: common/rendermode.cpp:35 msgid "Hercules Green" -msgstr "" +msgstr "Hercules vihreä" #: common/rendermode.cpp:36 msgid "Hercules Amber" -msgstr "" +msgstr "Hercules keltainen" #: common/rendermode.cpp:42 msgid "PC-9821 (256 Colors)" @@ -1732,12 +1727,12 @@ msgstr "PC-9801 (16 Väriä)" #: common/rendermode.cpp:73 msgctxt "lowres" msgid "Hercules Green" -msgstr "" +msgstr "Hercules vihreä" #: common/rendermode.cpp:74 msgctxt "lowres" msgid "Hercules Amber" -msgstr "" +msgstr "Hercules keltainen" #: common/updates.cpp:58 msgid "Daily" @@ -1752,9 +1747,8 @@ msgid "Monthly" msgstr "Kuukausittain" #: common/updates.cpp:64 -#, fuzzy msgid "<Bad value>" -msgstr "Tyhjennä arvo" +msgstr "<Huono arvo>" #: engines/advancedDetector.cpp:335 #, c-format @@ -1763,6 +1757,9 @@ msgid "" "Please, report the following data to the ScummVM team along with name\n" "of the game you tried to add and its version, language, etc.:" msgstr "" +"Peli kansiossa \"%s\" näyttää olevan tuntematon.\n" +"Ole kiltti ja raportoi seuraavat tiedot ScummVM:n kehittäjille pelin nimen,\n" +"version, kielen, yms. kera:" #: engines/dialogs.cpp:85 msgid "~R~esume" @@ -1844,13 +1841,13 @@ msgstr "" "tiedosto saadaksesi lisätietoa." #: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393 -#, fuzzy, c-format +#, c-format msgid "" "Failed to save game (%s)! Please consult the README for basic information, " "and for instructions on how to obtain further assistance." msgstr "" -"Pelitilan tallennus epäonnistui (%s)! Avaa LUEMINUT tiedosto saadaksesi " -"lisätietoa." +"Pelitilan tallennus epäonnistui (%s)! Konsultoi README-tiedostoa saadaksesi " +"lisätietoa ja ohjeita avun hankkimiseen." #: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100 #: engines/tsage/dialogs.cpp:112 @@ -1883,9 +1880,8 @@ msgid "Could not apply fullscreen setting." msgstr "Kokoruututila-asetusta ei voi asettaa." #: engines/engine.cpp:373 -#, fuzzy msgid "Could not apply filtering setting." -msgstr "Kokoruututila-asetusta ei voi asettaa." +msgstr "Suodatusasetusta ei voitu ottaa käyttöön." #: engines/engine.cpp:473 msgid "" @@ -1914,13 +1910,13 @@ msgstr "" "kuuluvat. Lue ohjeet LUEMINUT tiedostosta." #: engines/engine.cpp:542 -#, fuzzy, c-format +#, c-format msgid "" "Failed to load saved game (%s)! Please consult the README for basic " "information, and for instructions on how to obtain further assistance." msgstr "" -"Pelitilan lataus epäonnistui (%s)! Avaa LUEMINUT tiedosto saadaksesi " -"lisätietoa." +"Pelitilan lataus epäonnistui (%s)! Konsultoi README-tiedostoa saadaksesi " +"lisätietoa ja ohjeita avun hankkimiseen." #: engines/engine.cpp:555 msgid "" @@ -2011,7 +2007,7 @@ msgstr "Creative Music System-emulaattori" #: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:33 msgid "FM-Towns Audio" -msgstr "" +msgstr "FM-Towns Ääni" #: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:58 msgid "PC-98 Audio" @@ -2043,13 +2039,15 @@ msgstr "Tallennuksien synkronointi valmis." #: backends/cloud/storage.cpp:222 msgid "Saved games sync was cancelled." -msgstr "" +msgstr "Pelitallennusten synkronointi peruttiin." #: backends/cloud/storage.cpp:224 msgid "" "Saved games sync failed.\n" "Check your Internet connection." msgstr "" +"Pelitallennusten synkronointi epäonnistui.\n" +"Tarkista verkkoyhteytesi." #: backends/cloud/storage.cpp:328 #, c-format @@ -2057,6 +2055,8 @@ msgid "" "Download complete.\n" "Failed to download %u files." msgstr "" +"Lataus valmis.\n" +"%u:n tiedoston lataus epäonnistui." #: backends/cloud/storage.cpp:330 msgid "Download complete." @@ -2130,9 +2130,8 @@ msgid "Clicking Disabled" msgstr "Klikkaus pois päältä" #: backends/events/openpandora/op-events.cpp:174 -#, fuzzy msgid "Touchscreen 'Tap Mode' - Hover (DPad Clicks)" -msgstr "Kosketusnäytön 'Tap moodi' - ei klikkausta" +msgstr "Kosketusnäytön 'Tap moodi' - Hover (DPad klikkaus)" #: backends/events/symbiansdl/symbiansdl-events.cpp:186 msgid "Do you want to quit ?" @@ -2140,34 +2139,33 @@ msgstr "Haluatko lopettaa?" #. I18N: Trackpad mode toggle status. #: backends/events/webossdl/webossdl-events.cpp:308 -#, fuzzy msgid "Trackpad mode is now" -msgstr "Touchpad tila pois päältä" +msgstr "Trackpad tila on nyt" #. I18N: Trackpad mode on or off. #. I18N: Auto-drag on or off. #: backends/events/webossdl/webossdl-events.cpp:311 #: backends/events/webossdl/webossdl-events.cpp:338 msgid "ON" -msgstr "" +msgstr "PÄÄLLÄ" #: backends/events/webossdl/webossdl-events.cpp:311 #: backends/events/webossdl/webossdl-events.cpp:338 msgid "OFF" -msgstr "" +msgstr "POIS" #: backends/events/webossdl/webossdl-events.cpp:315 msgid "Swipe two fingers to the right to toggle." -msgstr "" +msgstr "Aktivoi pyyhkäisemällä kahdella sormella oikealle." #. I18N: Auto-drag toggle status. #: backends/events/webossdl/webossdl-events.cpp:335 msgid "Auto-drag mode is now" -msgstr "" +msgstr "Automaattiraahaustila on nyt" #: backends/events/webossdl/webossdl-events.cpp:342 msgid "Swipe three fingers to the right to toggle." -msgstr "" +msgstr "Aktivoi pyyhkäisemällä kolmella sormella oikealle." #: backends/graphics/opengl/opengl-graphics.cpp:146 msgid "OpenGL" @@ -2224,7 +2222,7 @@ msgstr "Näppäinkartta:" #: backends/keymapper/remap-dialog.cpp:67 msgid " (Effective)" -msgstr "" +msgstr " (Efektiivinen)" #: backends/keymapper/remap-dialog.cpp:107 msgid " (Active)" @@ -2295,7 +2293,7 @@ msgstr "Herkkyys" #: backends/platform/ds/arm9/source/dsoptions.cpp:99 msgid "Initial top screen scale:" -msgstr "" +msgstr "Alustava ylänäytön skaala:" #: backends/platform/ds/arm9/source/dsoptions.cpp:105 msgid "Main screen scaling:" @@ -2323,7 +2321,7 @@ msgstr "Korkealuokkainen ääni (hidas) (buuttaus)" #: backends/platform/ds/arm9/source/dsoptions.cpp:122 msgid "Disable power off" -msgstr "" +msgstr "Poista virran sammutus käytöstä" #: backends/platform/ios7/ios7_osys_events.cpp:309 #: backends/platform/ios7/ios7_osys_events.cpp:519 @@ -2422,7 +2420,7 @@ msgstr "Alue" #: backends/platform/wince/CEActionsPocket.cpp:54 #: backends/platform/wince/CEActionsSmartphone.cpp:48 msgid "Multi Function" -msgstr "" +msgstr "Monitoiminen" #: backends/platform/symbian/src/SymbianActions.cpp:48 msgid "Swap character" @@ -2458,7 +2456,7 @@ msgstr "Klikkaa oikealla kerran" #: backends/platform/tizen/form.cpp:271 msgid "Move Only" -msgstr "" +msgstr "Vain siirto" #: backends/platform/tizen/form.cpp:294 msgid "Escape Key" @@ -2493,9 +2491,8 @@ msgid "[ Media ]" msgstr "[ Media ]" #: backends/platform/tizen/fs.cpp:275 -#, fuzzy msgid "[ Shared ]" -msgstr "Jako:" +msgstr "[ Jaettu ]" #: backends/platform/wii/options.cpp:51 msgid "Video" @@ -2507,7 +2504,7 @@ msgstr "Nykyinen videotila:" #: backends/platform/wii/options.cpp:56 msgid "Double-strike" -msgstr "" +msgstr "Lomittamaton" #: backends/platform/wii/options.cpp:60 msgid "Horizontal underscan:" @@ -2751,7 +2748,7 @@ msgstr "Tarkista päivitykset..." #: engines/toon/toon.cpp:4918 #, c-format msgid "Unable to locate the '%s' engine data file." -msgstr "" +msgstr "\"%s\" pelimoottorin datatiedostoa ei löydetty." #: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979 #: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73 @@ -2759,7 +2756,7 @@ msgstr "" #: engines/toon/toon.cpp:4930 #, c-format msgid "The '%s' engine data file is corrupt." -msgstr "" +msgstr "\"%s\" pelimoottorin datatiedosto on korruptoitunut." #: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990 #: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76 @@ -2770,6 +2767,8 @@ msgid "" "Incorrect version of the '%s' engine data file found. Expected %d.%d but got " "%d.%d." msgstr "" +"\"%s\" pelimoottorin datatiedostosta löytyi väärä versio. Odotettu versio " +"%d.%d, löytynyt versio %d.%d." #: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55 msgid "Color mode" @@ -2777,7 +2776,7 @@ msgstr "Värimoodi" #: engines/adl/detection.cpp:46 engines/adl/detection.cpp:56 msgid "Use color graphics" -msgstr "" +msgstr "Käytä värigrafiikkaa" #: engines/adl/detection.cpp:65 msgid "Scanlines" @@ -2811,34 +2810,38 @@ msgid "" "Use an alternative palette, common for all Amiga games. This was the old " "behavior" msgstr "" +"Käytä vaihtoehtoista väripalettia, joka on yleinen kaikissa Amigapeleissä. " +"Tämä on vanha toimintamalli" #: engines/agi/detection.cpp:167 -#, fuzzy msgid "Mouse support" -msgstr "Ohita tuki" +msgstr "Hiirituki" #: engines/agi/detection.cpp:168 msgid "" "Enables mouse support. Allows to use mouse for movement and in game menus." -msgstr "" +msgstr "Aktivoi hiirituen. Mahdollistaa hiiren käyttämisen pelivalikoissa." #: engines/agi/detection.cpp:177 msgid "Use Hercules hires font" -msgstr "" +msgstr "Käytä korkearesoluutioista Hercules-fonttia" #: engines/agi/detection.cpp:178 msgid "Uses Hercules hires font, when font file is available." msgstr "" +"Käyttää korkearesoluutioista Hercules-fonttia jos tiedosto on saatavilla." #: engines/agi/detection.cpp:187 msgid "Pause when entering commands" -msgstr "" +msgstr "Pysäytä käskyjen syöttämisen ajaksi" #: engines/agi/detection.cpp:188 msgid "" "Shows a command prompt window and pauses the game (like in SCI) instead of a " "real-time prompt." msgstr "" +"Näyttää komentokehoitteen ja pysäyttää pelin (kuten SCI:ssä) reaaliaikaisen " +"kehoitteen sijaan." #: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888 #: engines/cge/events.cpp:83 engines/cge2/events.cpp:76 @@ -2867,7 +2870,7 @@ msgid "Restore" msgstr "Lataa tallenne" #: engines/agos/saveload.cpp:159 engines/scumm/scumm.cpp:2436 -#, fuzzy, c-format +#, c-format msgid "" "Failed to load saved game from file:\n" "\n" @@ -2878,7 +2881,7 @@ msgstr "" "%s" #: engines/agos/saveload.cpp:194 engines/scumm/scumm.cpp:2429 -#, fuzzy, c-format +#, c-format msgid "" "Failed to save game to file:\n" "\n" @@ -2889,7 +2892,7 @@ msgstr "" "%s" #: engines/agos/saveload.cpp:202 engines/scumm/scumm.cpp:2447 -#, fuzzy, c-format +#, c-format msgid "" "Successfully saved game in file:\n" "\n" @@ -2905,13 +2908,12 @@ msgid "Cutscene file '%s' not found!" msgstr "Videotiedostoa '%s' ei löytynyt!" #: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101 -#, fuzzy msgid "Color Blind Mode" -msgstr "Klikkaus moodi" +msgstr "Värisokeusmoodi" #: engines/cge/detection.cpp:106 engines/cge2/detection.cpp:102 msgid "Enable Color Blind Mode by default" -msgstr "" +msgstr "Aktivoi värisokeusmoodi vakiona" #: engines/drascula/saveload.cpp:47 msgid "" @@ -2939,13 +2941,11 @@ msgstr "Näytä grafiikat käyttäen pelin kirkasta palettia" #: engines/gob/inter_playtoons.cpp:255 engines/gob/inter_v2.cpp:1467 #: engines/gob/inter_geisha.cpp:232 engines/tinsel/saveload.cpp:532 -#, fuzzy msgid "Failed to load saved game from file." msgstr "Pelitallenteen lataaminen tiedostosta epäonnistui." #: engines/gob/inter_v2.cpp:1537 engines/gob/inter_geisha.cpp:263 #: engines/tinsel/saveload.cpp:545 -#, fuzzy msgid "Failed to save game to file." msgstr "Pelin tallentaminen tiedostoon epäonnistui." @@ -2954,13 +2954,12 @@ msgid "Failed to delete file." msgstr "Tiedoston tuhoaminen ei onnistunut." #: engines/groovie/detection.cpp:312 -#, fuzzy msgid "Fast movie speed" -msgstr "Nopea moodi" +msgstr "Nopea videontoisto" #: engines/groovie/detection.cpp:313 msgid "Play movies at an increased speed" -msgstr "" +msgstr "Toista videot nopeampana" #: engines/groovie/script.cpp:407 msgid "Failed to save game" @@ -2972,7 +2971,7 @@ msgstr "Hurmemoodi" #: engines/hopkins/detection.cpp:77 engines/hopkins/detection.cpp:87 msgid "Enable Gore Mode when available" -msgstr "" +msgstr "Aktivoi hurmemoodi jos saatavilla" #. I18N: Studio audience adds an applause and cheering sounds whenever #. Malcolm makes a joke. @@ -3041,12 +3040,10 @@ msgid "Move Back" msgstr "Liiku taaksepäin" #: engines/kyra/eobcommon.cpp:333 -#, fuzzy msgid "Move Left" msgstr "Liiku vasemmalle" #: engines/kyra/eobcommon.cpp:334 -#, fuzzy msgid "Move Right" msgstr "Liiku oikealle" @@ -3061,46 +3058,44 @@ msgid "Turn Right" msgstr "Käänny oikealle" #: engines/kyra/eobcommon.cpp:337 -#, fuzzy msgid "Open/Close Inventory" -msgstr "Tavarat" +msgstr "Avaa/Sulje Inventorio" #: engines/kyra/eobcommon.cpp:338 msgid "Switch Inventory/Character screen" -msgstr "" +msgstr "Vaihda Inventorio/Hahmo näyttö" #: engines/kyra/eobcommon.cpp:339 msgid "Camp" -msgstr "" +msgstr "Leiriydy" #: engines/kyra/eobcommon.cpp:340 -#, fuzzy msgid "Cast Spell" -msgstr "Valitse loitsu" +msgstr "Lue loitsu" #: engines/kyra/eobcommon.cpp:343 msgid "Spell Level 1" -msgstr "" +msgstr "Loitsutaso 1" #: engines/kyra/eobcommon.cpp:344 msgid "Spell Level 2" -msgstr "" +msgstr "Loitsutaso 2" #: engines/kyra/eobcommon.cpp:345 msgid "Spell Level 3" -msgstr "" +msgstr "Loitsutaso 3" #: engines/kyra/eobcommon.cpp:346 msgid "Spell Level 4" -msgstr "" +msgstr "Loitsutaso 4" #: engines/kyra/eobcommon.cpp:347 msgid "Spell Level 5" -msgstr "" +msgstr "Loitsutaso 5" #: engines/kyra/eobcommon.cpp:356 msgid "Spell Level 6" -msgstr "" +msgstr "Loitsutaso 6" #: engines/kyra/lol.cpp:478 msgid "Attack 1" @@ -3156,6 +3151,12 @@ msgid "" "Do you wish to use this saved game file with ScummVM?\n" "\n" msgstr "" +"Seuraava alkuperäinen pelitallennus löydettiin pelipolustasi:\n" +"\n" +"%s %s\n" +"\n" +"Haluatko käyttää tätä tallennusta ScummVM:ssä?\n" +"\n" #: engines/kyra/saveload_eob.cpp:590 #, c-format @@ -3163,6 +3164,8 @@ msgid "" "A saved game file was found in the specified slot %d. Overwrite?\n" "\n" msgstr "" +"Numerolla %d on jo pelitallennus. Ylikirjoitetaanko?\n" +"\n" #: engines/kyra/saveload_eob.cpp:623 #, c-format @@ -3173,23 +3176,26 @@ msgid "" "'import_savefile'.\n" "\n" msgstr "" +"%d alkuperäistä pelitallennusta onnistuneesti ladattu ScummVM:ään.\n" +"Jos haluat myöhemmin ladata pelitallennuksia käsin, joudut avaamaan\n" +"ScummVM:n debug konsolin ja käyttämään komentoa \"import_savefile\".\n" +"\n" #: engines/mads/detection.cpp:91 msgid "Easy mouse interface" -msgstr "" +msgstr "Helppo hiirikäyttöliittymä" #: engines/mads/detection.cpp:92 -#, fuzzy msgid "Shows object names when hovering the mouse over them" msgstr "Näytä esineiden kuvaus kohdistaessasi kursorin esineen ylle" #: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102 msgid "Animated inventory items" -msgstr "" +msgstr "Animoidut inventorioesineet" #: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112 msgid "Animated game interface" -msgstr "" +msgstr "Animoitu pelikäyttöliittymä" #: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122 msgid "Naughty game mode" @@ -3197,11 +3203,11 @@ msgstr "Tuhma pelimoodi" #: engines/mohawk/detection.cpp:169 msgid "Play the Myst fly by movie" -msgstr "" +msgstr "Soita Myst fly by-video" #: engines/mohawk/detection.cpp:170 msgid "The Myst fly by movie was not played by the original engine." -msgstr "" +msgstr "Alkuperäinen pelimoottori ei toistanut Myst fly by-videota." #. I18N: Option for fast scene switching #: engines/mohawk/dialogs.cpp:181 engines/mohawk/dialogs.cpp:267 @@ -3210,22 +3216,20 @@ msgstr "~Z~ip moodi valittu" #: engines/mohawk/dialogs.cpp:182 msgid "~T~ransitions Enabled" -msgstr "Siirtymät päällä" +msgstr "Siir~T~ymät päällä" #. I18N: Drop book page #: engines/mohawk/dialogs.cpp:184 msgid "~D~rop Page" -msgstr "Pudota sivu" +msgstr "Pu~D~ota sivu" #: engines/mohawk/dialogs.cpp:188 -#, fuzzy msgid "Show ~M~ap" -msgstr "Näytä kartta" +msgstr "Näytä kartta ~M~" #: engines/mohawk/dialogs.cpp:194 -#, fuzzy msgid "Main Men~u~" -msgstr "Päävalikko" +msgstr "Päävalikko ~u~" #: engines/mohawk/dialogs.cpp:268 msgid "~W~ater Effect Enabled" @@ -3236,24 +3240,30 @@ msgid "" "You're missing a Riven executable. The Windows executable is 'riven.exe' or " "'rivendmo.exe'. " msgstr "" +"Sinulta puuttuu Riven ohjelmatiedosto. WIndowsissa tiedosto on nimeltään \"" +"riven.exe\" tai \"rivendmo.exe\". " #: engines/mohawk/riven.cpp:151 msgid "" "Using the 'arcriven.z' installer file also works. In addition, you can use " "the Mac 'Riven' executable." msgstr "" +"\"archriven.z\" asennustiedoston käyttö toimii myös. Lisäksi voit käyttää " +"Macin \"Riven\"-ohjelmatiedostoa." #: engines/mohawk/riven.cpp:162 msgid "" "You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also " "works." msgstr "" +"Sinulta puuttuu \"extras.mhk\". \"archriven.z\" asennustiedoston käyttö " +"toimii myös." #: engines/mohawk/riven_external.cpp:213 msgid "" "Exploration beyond this point available only within the full version of\n" "the game." -msgstr "" +msgstr "Tutkiminen tätä pidemmälle on mahdollista vain pelin täysversiossa." #: engines/mohawk/riven_external.cpp:655 msgid "" @@ -3263,27 +3273,32 @@ msgid "" "the game. ScummVM cannot do that and\n" "the site no longer exists." msgstr "" +"Tässä kohtaa Rivenin demo kysyisi\n" +"josko haluaisit avata selaimen\n" +"viedäkseen sinut Red Orb-kauppaan\n" +"josta voisit ostaa pelin. ScummVM ei\n" +"voi tehdä sitä ja sivustoa ei ole enää\n" +"olemassa." #: engines/mohawk/mohawk.cpp:61 -#, fuzzy msgid "The game is paused. Press any key to continue." -msgstr "Pause. Paina välilyöntiä jatkaaksesi." +msgstr "Pause. Paina mitä tahansa nappia jatkaaksesi." #: engines/neverhood/detection.cpp:184 msgid "Skip the Hall of Records storyboard scenes" -msgstr "" +msgstr "Ohita Hall of Records storyboardkohtaukset" #: engines/neverhood/detection.cpp:185 msgid "Allows the player to skip past the Hall of Records storyboard scenes" -msgstr "" +msgstr "Sallii pelaajan ohittaa Hall of Records storyboardkohtaukset" #: engines/neverhood/detection.cpp:191 msgid "Scale the making of videos to full screen" -msgstr "" +msgstr "Skaalaa makin of-videot koko ruudun kokoiseksi" #: engines/neverhood/detection.cpp:192 msgid "Scale the making of videos, so that they use the whole screen" -msgstr "" +msgstr "Skaalaa making of-videot niin että ne käyttävät koko ruudun tilan" #: engines/parallaction/saveload.cpp:130 #, c-format @@ -3295,25 +3310,22 @@ msgstr "" "\n" #: engines/parallaction/saveload.cpp:194 -#, fuzzy msgid "Load file" -msgstr "Lataa peli:" +msgstr "Lataa tiedosto" #: engines/parallaction/saveload.cpp:201 msgid "Loading game..." msgstr "Ladataan peliä..." #: engines/parallaction/saveload.cpp:209 -#, fuzzy msgid "Save file" -msgstr "Tallenna peli:" +msgstr "Tallenna tiedosto" #: engines/parallaction/saveload.cpp:216 msgid "Saving game..." msgstr "Tallennetaan peliä..." #: engines/parallaction/saveload.cpp:269 -#, fuzzy msgid "" "ScummVM found that you have old saved games for Nippon Safes that should be " "renamed.\n" @@ -3322,17 +3334,17 @@ msgid "" "\n" "Press OK to convert them now, otherwise you will be asked next time.\n" msgstr "" -"Pelin Nippon Safes tallennukset ovat vanhassa muodossa, joita ei enää tueta. " -"Tallennukset\n" -"tulee nimetä uudelleen ennen kuin ScummVM voi käyttää niitä. Paina 'Hyväksy' " -"muuntaaksesi tallennukset.\n" -"Jos et tee muunnosta nyt, ScummVM kysyy sinulta uudelleen seuraavalla " -"kerralla kun käynnistät pelin.\n" +"ScummVM löysi pelille Nippon Safes vanhoja pelitallennuksia jotka pitäisi " +"uudelleennimetä.\n" +"Vanhoja nimiä ei enää tueta, joten et pysty lataamaan tallenteitasi ellet " +"muuta niiden nimiä.\n" +"\n" +"Paina OK nimetäksesi tallenteet nyt, muuten kysymme sinulta uudestaan " +"seuraavalla kerralla. \n" #: engines/parallaction/saveload.cpp:316 -#, fuzzy msgid "ScummVM successfully converted all your saved games." -msgstr "ScummVM muunsi kaikki pelitallenteet onnistuneesti" +msgstr "ScummVM muunsi kaikki pelitallenteet onnistuneesti." #: engines/parallaction/saveload.cpp:318 msgid "" @@ -3347,40 +3359,39 @@ msgstr "" #: engines/pegasus/pegasus.cpp:714 msgid "Invalid file name for saving" -msgstr "" +msgstr "Viallinen tiedostonnimi tallennuselle" #: engines/pegasus/pegasus.cpp:2507 msgid "Up/Zoom In/Move Forward/Open Doors" -msgstr "" +msgstr "Ylös/Zoomi Sisään/Liiku Eteen/Avaa Ovia" #: engines/pegasus/pegasus.cpp:2508 -#, fuzzy msgid "Down/Zoom Out" -msgstr "Zoomaa ylös" +msgstr "Alas/Zoomaa ylös" #: engines/pegasus/pegasus.cpp:2511 msgid "Display/Hide Inventory Tray" -msgstr "" +msgstr "Näytä/Piilota Inventorio" #: engines/pegasus/pegasus.cpp:2512 msgid "Display/Hide Biochip Tray" -msgstr "" +msgstr "Näytä/Piilota Biochip" #: engines/pegasus/pegasus.cpp:2513 msgid "Action/Select" -msgstr "" +msgstr "Toiminta/Valitse" #: engines/pegasus/pegasus.cpp:2514 msgid "Toggle Center Data Display" -msgstr "" +msgstr "Aktivoi Keskidatanäyttö" #: engines/pegasus/pegasus.cpp:2515 msgid "Display/Hide Info Screen" -msgstr "" +msgstr "Näytä/Piilota Infonäyttö" #: engines/pegasus/pegasus.cpp:2516 msgid "Display/Hide Pause Menu" -msgstr "" +msgstr "Näytä/Piilota Pausemenu" #: engines/queen/detection.cpp:56 msgid "Alternative intro" @@ -3392,30 +3403,27 @@ msgstr "Käytä vaihtoehtoista pelin introa (vain CD versiossa)" #: engines/sci/detection.cpp:390 msgid "Skip EGA dithering pass (full color backgrounds)" -msgstr "" +msgstr "Ohita EGA dithering pass (täysväritaustat)" #: engines/sci/detection.cpp:391 msgid "Skip dithering pass in EGA games, graphics are shown with full colors" -msgstr "" +msgstr "Ohita dirhering pass EGA peleissä, grafiikat näytetään täysvärisinä" #: engines/sci/detection.cpp:400 -#, fuzzy msgid "Enable high resolution graphics" -msgstr "Käytä kestopisteissä värillisiä grafiikkapalkkeja numeroiden sijaan" +msgstr "Käytä korkearesoluutioisia grafiikoita" #: engines/sci/detection.cpp:401 -#, fuzzy msgid "Enable high resolution graphics/content" -msgstr "Käytä kestopisteissä värillisiä grafiikkapalkkeja numeroiden sijaan" +msgstr "Käytä korkearesoluutioisia grafiikoita/sisältöä" #: engines/sci/detection.cpp:410 -#, fuzzy msgid "Enable black-lined video" -msgstr "Käytä Roland GS moodia" +msgstr "Käytä mustia vuoroviivoja videoissa" #: engines/sci/detection.cpp:411 msgid "Draw black lines over videos to increase their apparent sharpness" -msgstr "" +msgstr "Piirrä mustia vuoroviivoja videoihin jotta ne näyttäisivät terävämmiltä" #: engines/sci/detection.cpp:420 msgid "Prefer digital sound effects" @@ -3460,7 +3468,6 @@ msgid "Use silver cursors" msgstr "Käytä hopeisia kursoreita" #: engines/sci/detection.cpp:474 -#, fuzzy msgid "" "Use the alternate set of silver cursors instead of the normal golden ones" msgstr "Käytä vaihtoehtoisia hopeisia kursoreita normaalien kultaisten sijaan" @@ -3473,6 +3480,10 @@ msgid "" "tried\n" "to add and its version, language, etc.:\n" msgstr "" +"Peliversiosi vaikuttaa olevan tuntematon. Jos tämä *EI* ole faniversio\n" +"(esim. fanikäännös), ole kiltti ja raportoi seuraavat tiedot ScummVM:n " +"kehittäjille pelin nimen,\n" +"version, kielen, yms. kera.\n" #: engines/scumm/detection.cpp:1138 msgid "" @@ -3480,15 +3491,17 @@ msgid "" "piracy.\n" "The full version is available for purchase from the iTunes Store." msgstr "" +"Putt-Putt Saves the Zoo iOS:in kevytversio ei ole tuettu piratismin " +"ehkäisemiseksi.\n" +"Kokoversion voi ostaa iTunes-kaupasta." #: engines/scumm/detection.cpp:1341 -#, fuzzy msgid "Show Object Line" msgstr "Näytä esineiden tiedot" #: engines/scumm/detection.cpp:1342 msgid "Show the names of objects at the bottom of the screen" -msgstr "" +msgstr "Näytä esineiden nimet näytön alalaidassa" #: engines/scumm/dialogs.cpp:172 #, c-format @@ -3513,15 +3526,13 @@ msgstr "Pause. Paina välilyöntiä jatkaaksesi." #. "Moechten Sie wirklich neu starten? (J/N)J" #. Will react to J as 'Yes' #: engines/scumm/dialogs.cpp:179 -#, fuzzy msgid "Are you sure you want to restart? (Y/N)Y" msgstr "Haluatko varmasti aloittaa pelin alusta? (K/E)K" #. I18N: you may specify 'Yes' symbol at the end of the line. See previous comment #: engines/scumm/dialogs.cpp:181 -#, fuzzy msgid "Are you sure you want to quit? (Y/N)Y" -msgstr "Haluatko varmati lopettaa?" +msgstr "Haluatko varmati lopettaa? (K/E)K" #: engines/scumm/dialogs.cpp:186 msgid "Play" @@ -3645,9 +3656,8 @@ msgid "Ctrl" msgstr "Ctrl" #: engines/scumm/help.cpp:80 -#, fuzzy msgid "Load saved game 1-10" -msgstr "Lataa pelitila 1-10" +msgstr "Lataa pelitallennus 1-10" #: engines/scumm/help.cpp:81 engines/scumm/help.cpp:85 #: engines/scumm/help.cpp:87 engines/scumm/help.cpp:101 @@ -3656,9 +3666,8 @@ msgid "Alt" msgstr "Alt" #: engines/scumm/help.cpp:81 -#, fuzzy msgid "Save game 1-10" -msgstr "Tallenna pelitila 1-10" +msgstr "Tee pelitallennus 1-10" #: engines/scumm/help.cpp:87 engines/scumm/help.cpp:90 msgid "Enter" @@ -3742,7 +3751,7 @@ msgstr " mahdollisten virheiden vuoksi." #: engines/scumm/help.cpp:115 msgid "Spinning drafts on the keyboard:" -msgstr "" +msgstr "Kehräysluonnokset näppäimistöllä:" #: engines/scumm/help.cpp:117 msgid "Main game controls:" @@ -3996,27 +4005,27 @@ msgstr "Vieritä listaa alas" #: engines/scumm/help.cpp:261 engines/scumm/help.cpp:269 msgid "Upper left item" -msgstr "" +msgstr "Ylävasen esine" #: engines/scumm/help.cpp:262 engines/scumm/help.cpp:271 msgid "Lower left item" -msgstr "" +msgstr "Alavasen esine" #: engines/scumm/help.cpp:263 engines/scumm/help.cpp:272 msgid "Upper right item" -msgstr "" +msgstr "Yläoikea esine" #: engines/scumm/help.cpp:264 engines/scumm/help.cpp:274 msgid "Lower right item" -msgstr "" +msgstr "Alaoikea esine" #: engines/scumm/help.cpp:270 msgid "Middle left item" -msgstr "" +msgstr "Keskivasen esine" #: engines/scumm/help.cpp:273 msgid "Middle right item" -msgstr "" +msgstr "Keskioikea esine" #: engines/scumm/help.cpp:280 engines/scumm/help.cpp:285 msgid "Switching characters:" @@ -4032,23 +4041,23 @@ msgstr "Kolmas lapsi" #: engines/scumm/help.cpp:292 msgid "Toggle Inventory/IQ Points display" -msgstr "" +msgstr "Inventorio/ÄÖ PIstenäyttö päälle/pois" #: engines/scumm/help.cpp:293 msgid "Toggle Keyboard/Mouse Fighting (*)" -msgstr "" +msgstr "Näppäimistö/Hiiritappelu (*)" #: engines/scumm/help.cpp:295 msgid "* Keyboard Fighting is always on," -msgstr "" +msgstr "* Näppäimistötappelu on aina päällä," #: engines/scumm/help.cpp:296 msgid " so despite the in-game message this" -msgstr "" +msgstr " joten huolimatta viestistä pelissä tämä" #: engines/scumm/help.cpp:297 msgid " actually toggles Mouse Fighting Off/On" -msgstr "" +msgstr " itseasiassa laittaa hiiritappelun päälle/pois" #: engines/scumm/help.cpp:304 msgid "Fighting controls (numpad):" @@ -4085,7 +4094,7 @@ msgstr "Lyö alas" #: engines/scumm/help.cpp:315 msgid "Sucker punch" -msgstr "" +msgstr "Yllätyslyönti" #: engines/scumm/help.cpp:318 msgid "These are for Indy on left." @@ -4144,23 +4153,20 @@ msgid "Fly to lower right" msgstr "Lennä alas oikealle" #: engines/scumm/input.cpp:578 -#, fuzzy msgid "Snap scroll on" -msgstr "Pehmeä vieritys" +msgstr "Pehmeä vieritys päälle" #: engines/scumm/input.cpp:580 msgid "Snap scroll off" -msgstr "" +msgstr "Pehmeä vieritys pois päältä" #: engines/scumm/input.cpp:593 -#, fuzzy msgid "Music volume: " -msgstr "Musiikki:" +msgstr "Musiikin äänenvoimakkuus: " #: engines/scumm/input.cpp:610 -#, fuzzy msgid "Subtitle speed: " -msgstr "Tekstin nopeus:" +msgstr "Tekstityksen nopeus: " #: engines/scumm/scumm.cpp:1880 #, c-format @@ -4172,62 +4178,66 @@ msgstr "" "%s puuttuu. Käytetään AdLibia sen sijaan." #: engines/scumm/scumm.cpp:2733 -#, fuzzy msgid "" "Usually, Maniac Mansion would start now. But for that to work, the game " "files for Maniac Mansion have to be in the 'Maniac' directory inside the " "Tentacle game directory, and the game has to be added to ScummVM." msgstr "" -"Maniac Mansionin pitäisi nyt käynnistyä, mutta ScummVM ei tue sitä vielä. " -"Pelataksesi Maniac Mansionia, mene ScummVM:n päävalikkoon ja paina 'Lisää " -"peli'. Valitse 'Maniac' hakemisto Tentacle hakemiston sisältä." +"Normaalisti Maniac Mansion käynnistyisi nyt. Jotta se olisi mahdollista, " +"Maniac Mansionin pelitiedostojen pitää löytyä \"Maniac\"-kansiosta Tentacle-" +"pelikansion sisältä, ja sen pitää myös olla lisätty pelinä ScummVM:ään." #: engines/scumm/players/player_v3m.cpp:129 msgid "" "Could not find the 'Loom' Macintosh executable to read the\n" "instruments from. Music will be disabled." msgstr "" +"\"Loom\":in Macintosh ohjelmatiedostoa ei löydetty\n" +"instrumenttien lukemiseksi. Emme soita musiikkia." #: engines/scumm/players/player_v5m.cpp:107 msgid "" "Could not find the 'Monkey Island' Macintosh executable to read the\n" "instruments from. Music will be disabled." msgstr "" +"\"Monkey Island\":in Macintosh ohjelmatiedostoa ei löydetty\n" +"instrumenttien lukemiseksi. Emme soita musiikkia." #: engines/sherlock/detection.cpp:81 msgid "Pixellated scene transitions" -msgstr "" +msgstr "Pikselöidyt kohtauksenvaihdot" #: engines/sherlock/detection.cpp:82 msgid "When changing scenes, a randomized pixel transition is done" -msgstr "" +msgstr "Kohtauksia vaihtaessa näytetään sattumanvarainen pikselitransitio" #: engines/sherlock/detection.cpp:91 msgid "Don't show hotspots when moving mouse" -msgstr "" +msgstr "Älä näytä tärkeitä alueita hiirtä liikuttaessa" #: engines/sherlock/detection.cpp:92 msgid "" "Only show hotspot names after you actually click on a hotspot or action " "button" msgstr "" +"Näytä tärkeiden alueiden nimet vain sen jälkeen kun aluetta tai " +"toimintanappia on painettu" #: engines/sherlock/detection.cpp:101 -#, fuzzy msgid "Show character portraits" -msgstr "Vaihda hahmoa" +msgstr "Näytä hahmojen muotokuvat" #: engines/sherlock/detection.cpp:102 msgid "Show portraits for the characters when conversing" -msgstr "" +msgstr "Näytä hahmojen muotokuvat keskustelujen aikana" #: engines/sherlock/detection.cpp:111 msgid "Slide dialogs into view" -msgstr "" +msgstr "Liu'uta dialogit ruudulle" #: engines/sherlock/detection.cpp:112 msgid "Slide UI dialogs into view, rather than simply showing them immediately" -msgstr "" +msgstr "Liu'uta dialogit ruudulle sen sijaan että ne näytettäisiin välittömästi" #: engines/sherlock/detection.cpp:121 msgid "Transparent windows" @@ -4239,7 +4249,7 @@ msgstr "Näytä ikkunat osittain läpinäkyvällä taustalla" #: engines/sky/compact.cpp:141 msgid "The \"sky.cpt\" engine data file has an incorrect size." -msgstr "" +msgstr "\"sky.cpt\" pelimoottorin datatiedostolla on väärä koko." #: engines/sky/detection.cpp:44 msgid "Floppy intro" @@ -4272,7 +4282,6 @@ msgid "Cutscene '%s' not found" msgstr "Videotiedosto '%s' ei löytynyt" #: engines/sword1/control.cpp:863 -#, fuzzy msgid "" "ScummVM found that you have old saved games for Broken Sword 1 that should " "be converted.\n" @@ -4282,11 +4291,13 @@ msgid "" "Press OK to convert them now, otherwise you will be asked again the next " "time you start the game.\n" msgstr "" -"Broken Sword 1:n pelitallennukset ovat vanhassa formaatissa. Tallennukset " -"tulee muuntaa,\n" -"jotta niitä voi käyttää ScummVM:ssä. Paina 'Hyväksy' muuntaaksesi tiedostot. " -"Mikäli et halua muuntaa tiedostoja nyt\n" -"ScummVM kysyy asiaa seuraavan kerran kun käynnistät pelin.\n" +"ScummVM löysi pelille Broken Sword 1 vanhoja pelitallennuksia jotka pitäisi " +"muuntaa.\n" +"Vanhaa formaattia ei enää tueta, joten et pysty lataamaan tallenteitasi " +"ellet muunna niitä.\n" +"\n" +"Paina OK muuntaaksesi tallenteet nyt, muuten kysymme sinulta uudelleestaan " +"seuraavalla kerralla\n" #: engines/sword1/control.cpp:1232 #, c-format @@ -4344,26 +4355,22 @@ msgstr "" #: engines/tony/tony.cpp:258 #, c-format msgid "Font variant not present in '%s' engine data file." -msgstr "" +msgstr "Fonttivarianttia ei löydy %s pelimoottorin datatiedostosta." #: engines/toon/toon.cpp:222 -#, fuzzy, c-format +#, c-format msgid "Saved game in slot #%d " -msgstr "" -"Pelin tallennus kohtaan ei onnistunut kohtaan %i\n" -"\n" +msgstr "Peli tallennettu kohtaan #%d " #: engines/toon/toon.cpp:226 #, c-format msgid "Could not quick save into slot #%d" -msgstr "" +msgstr "Pikapelitallennus kohtaan %d epäonnistui" #: engines/toon/toon.cpp:239 -#, fuzzy, c-format +#, c-format msgid "Saved game #%d quick loaded" -msgstr "" -"Pelin tallennus kohtaan ei onnistunut kohtaan %i\n" -"\n" +msgstr "Pelitallenne #%d pikaladattu" #: engines/toon/toon.cpp:243 #, c-format @@ -4372,16 +4379,24 @@ msgstr "Tallennuksen #%d pikalataus epäonnistui" #: engines/wintermute/detection.cpp:58 msgid "Show FPS-counter" -msgstr "" +msgstr "Näytä FPS-laskuri" #: engines/wintermute/detection.cpp:59 msgid "Show the current number of frames per second in the upper left corner" -msgstr "" +msgstr "Näytä tämänhetkinen kuvia/sekunti määrä vasemmassa ylänurkassa" + +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "Spritejen bilineaarinen suodatus (HIDAS)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "Käytä bilineaarista suodatusta yksittäisiin spriteihin" #: engines/zvision/detection_tables.h:52 -#, fuzzy msgid "Use the original save/load screens instead of the ScummVM interface" -msgstr "Käytä alkuperäisiä tallenna/lataa valikkoja, ScummVM valikoiden sijaan" +msgstr "" +"Käytä alkuperäisiä tallenna/lataa valikkoja ScummVM käyttöliittymän sijaan" #: engines/zvision/detection_tables.h:61 msgid "Double FPS" @@ -4389,25 +4404,23 @@ msgstr "Tupla FPS" #: engines/zvision/detection_tables.h:62 msgid "Increase framerate from 30 to 60 FPS" -msgstr "" +msgstr "Kasvata ruudunpäivitysnopeus 60 FPS:ään 30 FPS:stä" #: engines/zvision/detection_tables.h:71 -#, fuzzy msgid "Enable Venus" -msgstr "Käytä helium moodia" +msgstr "Käytä Venusta" #: engines/zvision/detection_tables.h:72 -#, fuzzy msgid "Enable the Venus help system" -msgstr "Käytä helium moodia" +msgstr "Käytä Venus-avustusjärjestelmää" #: engines/zvision/detection_tables.h:81 msgid "Disable animation while turning" -msgstr "" +msgstr "Animaatio pois päältä kääntyessä" #: engines/zvision/detection_tables.h:82 msgid "Disable animation while turning in panorama mode" -msgstr "" +msgstr "Animaatio pois päältä panoraamamoodissa kääntyessä" #: engines/zvision/detection_tables.h:91 msgid "Use high resolution MPEG video" @@ -4425,6 +4438,9 @@ msgid "" "This saved game uses version %u, but this engine only supports up to version " "%d. You will need an updated version of the engine to use this saved game." msgstr "" +"Tämä pelitallennus käyttää versiota %u, mutta tämä pelimoottorin tuki on " +"vain versioon %d asti. Tarvitset päivitetyn version tästä pelimoottorista " +"käyttääksesi tätä pelitallennusta." #~ msgid "" #~ "Unable to find \"sky.cpt\" file!\n" diff --git a/po/fr_FR.po b/po/fr_FR.po index 7dd2dfb9e6..bbaacffae7 100644 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -1,5 +1,5 @@ # French translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Thierry Crozat <criezy@scummvm.org>, 2011. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-16 21:50+0000\n" -"Last-Translator: Gilles <draky@draky.net>\n" -"Language-Team: French <https://translations.scummvm.org/projects/scummvm/" -"scummvm/fr/>\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2017-01-03 19:44+0000\n" +"Last-Translator: Thierry Crozat <criezy@scummvm.org>\n" +"Language-Team: French " +"<https://translations.scummvm.org/projects/scummvm/scummvm/fr/>\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -2767,7 +2767,7 @@ msgstr "Recherche des mises à jour..." #: engines/toon/toon.cpp:4918 #, c-format msgid "Unable to locate the '%s' engine data file." -msgstr "" +msgstr "Le fichier de données '%s' n'a pu être trouvé." #: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979 #: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73 @@ -2775,7 +2775,7 @@ msgstr "" #: engines/toon/toon.cpp:4930 #, c-format msgid "The '%s' engine data file is corrupt." -msgstr "" +msgstr "Le fichier de données '%s' est corrompu." #: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990 #: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76 @@ -2786,6 +2786,8 @@ msgid "" "Incorrect version of the '%s' engine data file found. Expected %d.%d but got " "%d.%d." msgstr "" +"La bonne version du fichier de données '%s' n'a pu être trouvée. Version " +"attendue : %d.%d ; version trouvée : %d.%d." #: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55 msgid "Color mode" @@ -4288,7 +4290,7 @@ msgstr "Afficher les fenêtres avec un fond partiellement transparent" #: engines/sky/compact.cpp:141 msgid "The \"sky.cpt\" engine data file has an incorrect size." -msgstr "" +msgstr "Le fichier de données 'sky.cpt' n'a pas la taille attendue." #: engines/sky/detection.cpp:44 msgid "Floppy intro" @@ -4399,6 +4401,7 @@ msgstr "" #, c-format msgid "Font variant not present in '%s' engine data file." msgstr "" +"Variante de police de caractères non trouvée dans le fichier de données '%s'." #: engines/toon/toon.cpp:222 #, c-format @@ -4429,6 +4432,14 @@ msgid "Show the current number of frames per second in the upper left corner" msgstr "" "Affiche le nombre d'images par seconde (FPS) dans le coin en haut à gauche" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "Filtrage bilinéaire des images-objets (LENT)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "Applique un filtrage bilinéaire à chaque image-objet" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/gl_ES.po b/po/gl_ES.po index f4ddf359c7..a7af9cf2b1 100644 --- a/po/gl_ES.po +++ b/po/gl_ES.po @@ -1,5 +1,5 @@ # Galician translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Santiago G. Sanz <s.sanz@uvigo.es>, 2013. # @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-11-28 15:51+0000\n" "Last-Translator: Santiago G. Sanz <santiagogarciasanz@gmail.com>\n" "Language-Team: Galician <https://translations.scummvm.org/projects/scummvm/" @@ -4417,6 +4417,14 @@ msgstr "Mostrar FPS" msgid "Show the current number of frames per second in the upper left corner" msgstr "Mostra o número actual de FPS na esquina superior esquerda." +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/hu_HU.po b/po/hu_HU.po index b6ac0ab982..81ff3384c5 100644 --- a/po/hu_HU.po +++ b/po/hu_HU.po @@ -1,12 +1,12 @@ # Hungarian translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # George Kormendi <grubycza@hotmail.com>, 2010, 2016. msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-12-13 20:02+0000\n" "Last-Translator: George Kormendi <grubycza@hotmail.com>\n" "Language-Team: Hungarian <https://translations.scummvm.org/projects/scummvm/" @@ -4373,6 +4373,14 @@ msgid "Show the current number of frames per second in the upper left corner" msgstr "" "A jelenlegi másodpercenkénti képkocka szám kijelzése a bal felsõ sarokban" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "Használd az eredeti mentés/töltés képet a ScummVM felület helyett" diff --git a/po/it_IT.po b/po/it_IT.po index 3306e670a0..1df03cabea 100644 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -1,5 +1,5 @@ # Italian translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Matteo 'Maff' Angelino <matteo.maff at gmail dot com>, 2010. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-13 19:58+0000\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2017-01-04 22:19+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Italian <https://translations.scummvm.org/projects/scummvm/" -"scummvm/it/>\n" +"Language-Team: Italian " +"<https://translations.scummvm.org/projects/scummvm/scummvm/it/>\n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -1254,7 +1254,7 @@ msgstr "Avvia webserver locale" #: gui/options.cpp:1433 gui/options.cpp:2082 msgid "Not running" -msgstr "" +msgstr "Non avviato" #: gui/options.cpp:1437 msgid "/root/ Path:" @@ -1768,6 +1768,11 @@ msgid "" "Please, report the following data to the ScummVM team along with name\n" "of the game you tried to add and its version, language, etc.:" msgstr "" +"Il gioco in '%s' sembra sconosciuto.\n" +"Per favore, comunica al team ScummVM le informazioni riportate di seguito " +"insieme\n" +"al nome del gioco che hai tentato di aggiungere, la sua versione, lingua, " +"etc:" #: engines/dialogs.cpp:85 msgid "~R~esume" @@ -1850,14 +1855,13 @@ msgstr "" "per le istruzioni su come ottenere ulteriore assistenza." #: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393 -#, fuzzy, c-format +#, c-format msgid "" "Failed to save game (%s)! Please consult the README for basic information, " "and for instructions on how to obtain further assistance." msgstr "" -"Salvataggio fallito (%s)! Si prega di consultare il file README per le " -"informazioni di base e per le istruzioni su come ottenere ulteriore " -"assistenza." +"Salvataggio non riuscito (%s). Consultare il file README per le informazioni " +"di base e per le istruzioni su come ottenere ulteriore assistenza." #: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100 #: engines/tsage/dialogs.cpp:112 @@ -1890,9 +1894,8 @@ msgid "Could not apply fullscreen setting." msgstr "Impossibile applicare l'impostazione schermo intero." #: engines/engine.cpp:373 -#, fuzzy msgid "Could not apply filtering setting." -msgstr "Impossibile applicare l'impostazione schermo intero." +msgstr "Impossibile applicare l'impostazione di filtraggio." #: engines/engine.cpp:473 msgid "" @@ -1923,13 +1926,13 @@ msgstr "" "Vedi il file README per i dettagli." #: engines/engine.cpp:542 -#, fuzzy, c-format +#, c-format msgid "" "Failed to load saved game (%s)! Please consult the README for basic " "information, and for instructions on how to obtain further assistance." msgstr "" -"Caricamento salvataggio fallito (%s)! Si prega di consultare il file README " -"per le informazioni di base e per le istruzioni su come ottenere ulteriore " +"Caricamento salvataggio non riuscito (%s). Consultare il file README per le " +"informazioni di base e per le istruzioni su come ottenere ulteriore " "assistenza." #: engines/engine.cpp:555 @@ -1960,7 +1963,7 @@ msgstr "Emulatore OPL DOSBox" #: audio/fmopl.cpp:67 msgid "ALSA Direct FM" -msgstr "" +msgstr "ALSA Direct FM" #: audio/mididrv.cpp:209 #, c-format @@ -2017,17 +2020,15 @@ msgstr "Emulatore Apple II GS (NON IMPLEMENTATO)" #: audio/softsynth/cms.cpp:350 msgid "Creative Music System Emulator" -msgstr "" +msgstr "Emulatore Creative Music System" #: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:33 -#, fuzzy msgid "FM-Towns Audio" msgstr "Emulatore FM Towns" #: audio/softsynth/fmtowns_pc98/towns_pc98_plugins.cpp:58 -#, fuzzy msgid "PC-98 Audio" -msgstr "Audio" +msgstr "Audio PC-98" #: audio/softsynth/mt32.cpp:175 msgid "Initializing MT-32 Emulator" @@ -2050,19 +2051,20 @@ msgid "C64 Audio Emulator" msgstr "Emulatore audio C64" #: backends/cloud/storage.cpp:211 -#, fuzzy msgid "Saved games sync complete." -msgstr "Scansione completa!" +msgstr "Sincronizzazione salvataggi completata." #: backends/cloud/storage.cpp:222 msgid "Saved games sync was cancelled." -msgstr "" +msgstr "Sincronizzazione salvataggi annullata." #: backends/cloud/storage.cpp:224 msgid "" "Saved games sync failed.\n" "Check your Internet connection." msgstr "" +"La sincronizzazione dei salvataggi non è riuscita.\n" +"Controllare la propria connessione Internet." #: backends/cloud/storage.cpp:328 #, c-format @@ -2070,16 +2072,16 @@ msgid "" "Download complete.\n" "Failed to download %u files." msgstr "" +"Scaricamento completato.\n" +"Scaricamento di %u file non riuscito." #: backends/cloud/storage.cpp:330 -#, fuzzy msgid "Download complete." -msgstr "Scansione completa!" +msgstr "Scaricamento completato." #: backends/cloud/storage.cpp:340 -#, fuzzy msgid "Download failed." -msgstr "Carica gioco:" +msgstr "Scaricamento non riuscito." #: backends/events/default/default-events.cpp:196 msgid "Do you really want to return to the Launcher?" @@ -2154,34 +2156,33 @@ msgstr "Sei sicuro di voler uscire?" #. I18N: Trackpad mode toggle status. #: backends/events/webossdl/webossdl-events.cpp:308 -#, fuzzy msgid "Trackpad mode is now" -msgstr "Modalità touchpad disattivata." +msgstr "la modalità touchpad è ora" #. I18N: Trackpad mode on or off. #. I18N: Auto-drag on or off. #: backends/events/webossdl/webossdl-events.cpp:311 #: backends/events/webossdl/webossdl-events.cpp:338 msgid "ON" -msgstr "" +msgstr "On" #: backends/events/webossdl/webossdl-events.cpp:311 #: backends/events/webossdl/webossdl-events.cpp:338 msgid "OFF" -msgstr "" +msgstr "Off" #: backends/events/webossdl/webossdl-events.cpp:315 msgid "Swipe two fingers to the right to toggle." -msgstr "" +msgstr "Fai scivolare due dita verso destra per cambiare." #. I18N: Auto-drag toggle status. #: backends/events/webossdl/webossdl-events.cpp:335 msgid "Auto-drag mode is now" -msgstr "" +msgstr "La modalità di autotrascimento è ora" #: backends/events/webossdl/webossdl-events.cpp:342 msgid "Swipe three fingers to the right to toggle." -msgstr "" +msgstr "Fai scivolare tre dita verso destra per cambiare." #: backends/graphics/opengl/opengl-graphics.cpp:146 msgid "OpenGL" @@ -2195,7 +2196,7 @@ msgstr "Modalità finestra" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:710 #, c-format msgid "Resolution: %dx%d" -msgstr "" +msgstr "Risoluzione: %dx%d" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:731 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338 @@ -2209,15 +2210,13 @@ msgstr "Correzione proporzioni disattivata" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:753 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362 -#, fuzzy msgid "Filtering enabled" -msgstr "Clic attivato" +msgstr "Filtro video attivato" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:755 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364 -#, fuzzy msgid "Filtering disabled" -msgstr "Clic disattivato" +msgstr "Filtro disattivato" #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47 #: backends/graphics/wincesdl/wincesdl-graphics.cpp:88 @@ -2492,24 +2491,23 @@ msgstr "Controllo mouse" #: backends/platform/tizen/fs.cpp:259 msgid "[ Data ]" -msgstr "" +msgstr "[ Dati ]" #: backends/platform/tizen/fs.cpp:263 msgid "[ Resources ]" -msgstr "" +msgstr "[ Risorse ]" #: backends/platform/tizen/fs.cpp:267 msgid "[ SDCard ]" -msgstr "" +msgstr "[ Scheda SD ]" #: backends/platform/tizen/fs.cpp:271 msgid "[ Media ]" -msgstr "" +msgstr "[ Media ]" #: backends/platform/tizen/fs.cpp:275 -#, fuzzy msgid "[ Shared ]" -msgstr "Condivisione:" +msgstr "[ Condivisi ]" #: backends/platform/wii/options.cpp:51 msgid "Video" @@ -2763,7 +2761,7 @@ msgstr "Cerca aggiornamenti..." #: engines/toon/toon.cpp:4918 #, c-format msgid "Unable to locate the '%s' engine data file." -msgstr "" +msgstr "File dati del motore '%s' non trovato." #: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979 #: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73 @@ -2771,7 +2769,7 @@ msgstr "" #: engines/toon/toon.cpp:4930 #, c-format msgid "The '%s' engine data file is corrupt." -msgstr "" +msgstr "Il file dati del motore '%s' è danneggiato." #: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990 #: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76 @@ -2782,24 +2780,24 @@ msgid "" "Incorrect version of the '%s' engine data file found. Expected %d.%d but got " "%d.%d." msgstr "" +"Il file dati del motore '%s' non è corretto. Versione richiesta: %d.%d; " +"versione trovata: %d.%d." #: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55 -#, fuzzy msgid "Color mode" -msgstr "Modalità clic" +msgstr "Modalità colore" #: engines/adl/detection.cpp:46 engines/adl/detection.cpp:56 msgid "Use color graphics" -msgstr "" +msgstr "Usa grafica a colori" #: engines/adl/detection.cpp:65 msgid "Scanlines" -msgstr "" +msgstr "Linee di scansione" #: engines/adl/detection.cpp:66 -#, fuzzy msgid "Show scanlines" -msgstr "Mostra etichette oggetti" +msgstr "Mostra linee di scansione" #: engines/agi/detection.cpp:147 engines/cine/detection.cpp:70 #: engines/drascula/detection.cpp:302 engines/dreamweb/detection.cpp:48 @@ -2813,51 +2811,53 @@ msgstr "Usa schermate di salvataggio originali" #: engines/drascula/detection.cpp:303 engines/dreamweb/detection.cpp:49 #: engines/neverhood/detection.cpp:178 engines/sci/detection.cpp:431 #: engines/sherlock/detection.cpp:72 engines/toltecs/detection.cpp:201 -#, fuzzy msgid "Use the original save/load screens instead of the ScummVM ones" msgstr "" "Usa le schermate originali di salvataggio e caricamento, al posto di quelle " "di ScummVM" #: engines/agi/detection.cpp:157 -#, fuzzy msgid "Use an alternative palette" -msgstr "Usa un'intro del gioco alternativa (solo versione CD)" +msgstr "Usa una differente palette di colori" #: engines/agi/detection.cpp:158 msgid "" "Use an alternative palette, common for all Amiga games. This was the old " "behavior" msgstr "" +"Usa una palette di colori alternativa, comune per tutti i giochi Amiga. " +"Opzione predefinita nelle versioni precedenti" #: engines/agi/detection.cpp:167 -#, fuzzy msgid "Mouse support" -msgstr "Interruzione del parlato" +msgstr "Supporto mouse" #: engines/agi/detection.cpp:168 msgid "" "Enables mouse support. Allows to use mouse for movement and in game menus." msgstr "" +"Abilita il mouse. Permette l'uso del mouse per il movimento e per i menù di " +"gioco." #: engines/agi/detection.cpp:177 -#, fuzzy msgid "Use Hercules hires font" -msgstr "Hercules verde" +msgstr "Usa caratteri Hercules ad alta risoluzione" #: engines/agi/detection.cpp:178 msgid "Uses Hercules hires font, when font file is available." -msgstr "" +msgstr "Utilizza caratteri Hercules ad alta risoluzione, se disponibili." #: engines/agi/detection.cpp:187 msgid "Pause when entering commands" -msgstr "" +msgstr "Pausa per immissione comandi" #: engines/agi/detection.cpp:188 msgid "" "Shows a command prompt window and pauses the game (like in SCI) instead of a " "real-time prompt." msgstr "" +"Apre una finestra di comando e mette in pausa il gioco (come per i giochi " +"SCI), anziché usare un prompt dei comandi in tempo reale." #: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888 #: engines/cge/events.cpp:83 engines/cge2/events.cpp:76 @@ -2886,13 +2886,13 @@ msgid "Restore" msgstr "Ripristina" #: engines/agos/saveload.cpp:159 engines/scumm/scumm.cpp:2436 -#, fuzzy, c-format +#, c-format msgid "" "Failed to load saved game from file:\n" "\n" "%s" msgstr "" -"Impossibile caricare il gioco dal file:\n" +"Impossibile caricare il gioco salvato nel file:\n" "\n" "%s" @@ -2924,16 +2924,14 @@ msgid "Cutscene file '%s' not found!" msgstr "File della scena di intermezzo '%s' non trovato!" #: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101 -#, fuzzy msgid "Color Blind Mode" -msgstr "Modalità clic" +msgstr "Modalità daltonici" #: engines/cge/detection.cpp:106 engines/cge2/detection.cpp:102 msgid "Enable Color Blind Mode by default" -msgstr "" +msgstr "Abilita di default la modalità daltonici" #: engines/drascula/saveload.cpp:47 -#, fuzzy msgid "" "ScummVM found that you have old saved games for Drascula that should be " "converted.\n" @@ -2989,11 +2987,11 @@ msgstr "Impossibile salvare il gioco" #: engines/hopkins/detection.cpp:76 engines/hopkins/detection.cpp:86 msgid "Gore Mode" -msgstr "" +msgstr "Sangue" #: engines/hopkins/detection.cpp:77 engines/hopkins/detection.cpp:87 msgid "Enable Gore Mode when available" -msgstr "" +msgstr "Abilita scene sanguinose (se disponibili)" #. I18N: Studio audience adds an applause and cheering sounds whenever #. Malcolm makes a joke. @@ -3062,14 +3060,12 @@ msgid "Move Back" msgstr "Vai indietro" #: engines/kyra/eobcommon.cpp:333 -#, fuzzy msgid "Move Left" -msgstr "Scorri a sinistra" +msgstr "Vai a sinistra" #: engines/kyra/eobcommon.cpp:334 -#, fuzzy msgid "Move Right" -msgstr "Scorri a destra" +msgstr "Vai a destra" #: engines/kyra/eobcommon.cpp:335 engines/kyra/lol.cpp:485 #: engines/pegasus/pegasus.cpp:2509 @@ -3082,46 +3078,44 @@ msgid "Turn Right" msgstr "Gira a destra" #: engines/kyra/eobcommon.cpp:337 -#, fuzzy msgid "Open/Close Inventory" -msgstr "Inventario" +msgstr "Apri/Chiudi l'inventario" #: engines/kyra/eobcommon.cpp:338 msgid "Switch Inventory/Character screen" -msgstr "" +msgstr "Alterna schermata Inventario/Personaggio" #: engines/kyra/eobcommon.cpp:339 msgid "Camp" -msgstr "" +msgstr "Accampamento" #: engines/kyra/eobcommon.cpp:340 -#, fuzzy msgid "Cast Spell" -msgstr "Scegli incantesimo" +msgstr "Lancia incantesimo" #: engines/kyra/eobcommon.cpp:343 msgid "Spell Level 1" -msgstr "" +msgstr "Incantesimo di livello 1" #: engines/kyra/eobcommon.cpp:344 msgid "Spell Level 2" -msgstr "" +msgstr "Incantesimo di livello 2" #: engines/kyra/eobcommon.cpp:345 msgid "Spell Level 3" -msgstr "" +msgstr "Incantesimo di livello 3" #: engines/kyra/eobcommon.cpp:346 msgid "Spell Level 4" -msgstr "" +msgstr "Incantesimo di livello 4" #: engines/kyra/eobcommon.cpp:347 msgid "Spell Level 5" -msgstr "" +msgstr "Incantesimo di livello 5" #: engines/kyra/eobcommon.cpp:356 msgid "Spell Level 6" -msgstr "" +msgstr "Incantesimo di livello 6" #: engines/kyra/lol.cpp:478 msgid "Attack 1" @@ -3186,6 +3180,8 @@ msgid "" "A saved game file was found in the specified slot %d. Overwrite?\n" "\n" msgstr "" +"È già presente un salvataggio nello slot %d. Sovrascrivere?\n" +"\n" #: engines/kyra/saveload_eob.cpp:623 #, c-format @@ -3196,35 +3192,40 @@ msgid "" "'import_savefile'.\n" "\n" msgstr "" +"%d salvataggi originali sono stati importati con successo in ScummVM.\n" +"Per importare ulteriori salvataggi successivamente, è possibile utilizzare\n" +"il comando 'import_savefile' disponibile nella console di debug di ScummVM.\n" +"\n" #: engines/mads/detection.cpp:91 msgid "Easy mouse interface" -msgstr "" +msgstr "Interfaccia mouse facilitata" #: engines/mads/detection.cpp:92 -#, fuzzy msgid "Shows object names when hovering the mouse over them" -msgstr "Mostra etichette per gli oggetti al passaggio del mouse" +msgstr "Mostra i nomi degli oggetti al passaggio del mouse" #: engines/mads/detection.cpp:101 engines/mads/detection.cpp:102 msgid "Animated inventory items" -msgstr "" +msgstr "Animazioni oggetti inventario" #: engines/mads/detection.cpp:111 engines/mads/detection.cpp:112 msgid "Animated game interface" -msgstr "" +msgstr "Animazioni interfaccia di gioco" #: engines/mads/detection.cpp:121 engines/mads/detection.cpp:122 msgid "Naughty game mode" -msgstr "" +msgstr "Modalità osé" #: engines/mohawk/detection.cpp:169 msgid "Play the Myst fly by movie" -msgstr "" +msgstr "Riproduci il volo panoramico di Myst" #: engines/mohawk/detection.cpp:170 msgid "The Myst fly by movie was not played by the original engine." msgstr "" +"Il filmato del volo panoramico non veniva riprodotto dal motore originale " +"del gioco." #. I18N: Option for fast scene switching #: engines/mohawk/dialogs.cpp:181 engines/mohawk/dialogs.cpp:267 @@ -3241,9 +3242,8 @@ msgid "~D~rop Page" msgstr "~L~ascia pagina" #: engines/mohawk/dialogs.cpp:188 -#, fuzzy msgid "Show ~M~ap" -msgstr "~M~ostra mappa" +msgstr "Mostra ~M~appa" #: engines/mohawk/dialogs.cpp:194 #, fuzzy @@ -3259,24 +3259,30 @@ msgid "" "You're missing a Riven executable. The Windows executable is 'riven.exe' or " "'rivendmo.exe'. " msgstr "" +"File eseguibile di Riven non trovato. L'eseguibile per la versione Windows è " +"'riven.exe' o 'rivendmo.exe'. " #: engines/mohawk/riven.cpp:151 msgid "" "Using the 'arcriven.z' installer file also works. In addition, you can use " "the Mac 'Riven' executable." msgstr "" +"È anche possibile usare il file di installazione 'arcriven.z', o " +"l'eseguibile 'Riven' per la versione Mac." #: engines/mohawk/riven.cpp:162 msgid "" "You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also " "works." msgstr "" +"File 'extras.mhk' non trovato. È anche possibile usare il file di " +"installazione 'arcriven.z'." #: engines/mohawk/riven_external.cpp:213 msgid "" "Exploration beyond this point available only within the full version of\n" "the game." -msgstr "" +msgstr "Le aree oltre questo punto sono disponibili solo nel gioco completo." #: engines/mohawk/riven_external.cpp:655 msgid "" @@ -3286,11 +3292,15 @@ msgid "" "the game. ScummVM cannot do that and\n" "the site no longer exists." msgstr "" +"A questo punto, la demo di Riven dovrebbe\n" +"chiederti se desideri aprire il browser e indirizzarti\n" +"al negozio online della Red Orb, per acquistare\n" +"il gioco. ScummVM non può farlo, e comunque il\n" +"sito non è più disponibile." #: engines/mohawk/mohawk.cpp:61 -#, fuzzy msgid "The game is paused. Press any key to continue." -msgstr "Gioco in pausa. Premere SPAZIO per continuare." +msgstr "Gioco in pausa. Premi un tasto per continuare." #: engines/neverhood/detection.cpp:184 msgid "Skip the Hall of Records storyboard scenes" @@ -3318,25 +3328,22 @@ msgstr "" "\n" #: engines/parallaction/saveload.cpp:194 -#, fuzzy msgid "Load file" -msgstr "Carica gioco:" +msgstr "Carica gioco" #: engines/parallaction/saveload.cpp:201 msgid "Loading game..." msgstr "Caricamento..." #: engines/parallaction/saveload.cpp:209 -#, fuzzy msgid "Save file" -msgstr "Salvataggio fallito!" +msgstr "Salva gioco" #: engines/parallaction/saveload.cpp:216 msgid "Saving game..." msgstr "Salvataggio..." #: engines/parallaction/saveload.cpp:269 -#, fuzzy msgid "" "ScummVM found that you have old saved games for Nippon Safes that should be " "renamed.\n" @@ -3354,7 +3361,6 @@ msgstr "" "volta.\n" #: engines/parallaction/saveload.cpp:316 -#, fuzzy msgid "ScummVM successfully converted all your saved games." msgstr "ScummVM ha convertito con successo tutti i tuoi salvataggi." @@ -3371,7 +3377,6 @@ msgstr "" "Per favore, contatta il team." #: engines/pegasus/pegasus.cpp:714 -#, fuzzy msgid "Invalid file name for saving" msgstr "Nome salvataggio non valido" @@ -3417,30 +3422,30 @@ msgstr "Usa un'intro del gioco alternativa (solo versione CD)" #: engines/sci/detection.cpp:390 msgid "Skip EGA dithering pass (full color backgrounds)" -msgstr "" +msgstr "Non applicare l'effetto dithering EGA (usa sfondi a tinta unita)" #: engines/sci/detection.cpp:391 msgid "Skip dithering pass in EGA games, graphics are shown with full colors" msgstr "" +"Non applica effetti dithering ai giochi con grafica EGA. Verranno sempre " +"usati colori a piena intensità" #: engines/sci/detection.cpp:400 -#, fuzzy msgid "Enable high resolution graphics" -msgstr "Attiva le barre di Hit Point" +msgstr "Abilita grafica ad alta risoluzione" #: engines/sci/detection.cpp:401 -#, fuzzy msgid "Enable high resolution graphics/content" -msgstr "Attiva le barre di Hit Point" +msgstr "Abilita grafica ed altri contenuti ad alta risoluzione" #: engines/sci/detection.cpp:410 -#, fuzzy msgid "Enable black-lined video" -msgstr "Attiva la modalità Roland GS" +msgstr "Abilita linee di scansione nei video" #: engines/sci/detection.cpp:411 msgid "Draw black lines over videos to increase their apparent sharpness" msgstr "" +"Applica linee di scansione ai video per migliorarne la nitidezza (apparente)" #: engines/sci/detection.cpp:420 msgid "Prefer digital sound effects" @@ -3500,6 +3505,12 @@ msgid "" "tried\n" "to add and its version, language, etc.:\n" msgstr "" +"Il tuo gioco sembra essere di una versione sconosciuta. Se *NON* si tratta " +"di\n" +"una versione modificata (per esempio, una traduzione amatoriale), per " +"favore\n" +"comunica le seguenti informazioni al team di ScummVM, indicando il nome del\n" +"gioco e la versione, lingua, eccetera:\n" #: engines/scumm/detection.cpp:1138 msgid "" @@ -3507,15 +3518,17 @@ msgid "" "piracy.\n" "The full version is available for purchase from the iTunes Store." msgstr "" +"La versione lite di \"Putt-Putt Saves the Zoo\" per iOS non è supportata per " +"evitarne la pirateria.\n" +"La versione completa è disponibile per l'acquisto sull'iTunes Store." #: engines/scumm/detection.cpp:1341 -#, fuzzy msgid "Show Object Line" -msgstr "Mostra etichette oggetti" +msgstr "Mostra riga nomi oggetti" #: engines/scumm/detection.cpp:1342 msgid "Show the names of objects at the bottom of the screen" -msgstr "" +msgstr "Mostra i nomi degli oggetti nella parte inferiore dello schermo" #: engines/scumm/dialogs.cpp:172 #, c-format @@ -3540,15 +3553,13 @@ msgstr "Gioco in pausa. Premere SPAZIO per continuare." #. "Moechten Sie wirklich neu starten? (J/N)J" #. Will react to J as 'Yes' #: engines/scumm/dialogs.cpp:179 -#, fuzzy msgid "Are you sure you want to restart? (Y/N)Y" -msgstr "Sei sicuro di voler riavviare? (S/N)S" +msgstr "Sei sicuro di voler ricominciare? (S/N)S" #. I18N: you may specify 'Yes' symbol at the end of the line. See previous comment #: engines/scumm/dialogs.cpp:181 -#, fuzzy msgid "Are you sure you want to quit? (Y/N)Y" -msgstr "Sei sicuro di voler uscire? (S/N)S" +msgstr "Sei sicuro di voler uscire? (S/N)S" #: engines/scumm/dialogs.cpp:186 msgid "Play" @@ -3672,7 +3683,6 @@ msgid "Ctrl" msgstr "Ctrl" #: engines/scumm/help.cpp:80 -#, fuzzy msgid "Load saved game 1-10" msgstr "Carica salvataggio 1-10" @@ -3683,7 +3693,6 @@ msgid "Alt" msgstr "Alt" #: engines/scumm/help.cpp:81 -#, fuzzy msgid "Save game 1-10" msgstr "Salva nella posizione 1-10" @@ -4058,25 +4067,24 @@ msgid "Third kid" msgstr "Terzo ragazzo" #: engines/scumm/help.cpp:292 -#, fuzzy msgid "Toggle Inventory/IQ Points display" -msgstr "Mostra/nascondi schermo centrale dati" +msgstr "Alterna tra visualizzazione Inventario e Punteggio QI" #: engines/scumm/help.cpp:293 msgid "Toggle Keyboard/Mouse Fighting (*)" -msgstr "" +msgstr "Alterna tra Tastiera o Mouse per le fasi di combattimento (*)" #: engines/scumm/help.cpp:295 msgid "* Keyboard Fighting is always on," -msgstr "" +msgstr "* La tastiera è sempre attiva durante i combattimenti," #: engines/scumm/help.cpp:296 msgid " so despite the in-game message this" -msgstr "" +msgstr " quindi indipendentemente dai messaggi nel gioco," #: engines/scumm/help.cpp:297 msgid " actually toggles Mouse Fighting Off/On" -msgstr "" +msgstr " questa opzione non fa altro che attivare/disattivare il mouse" #: engines/scumm/help.cpp:304 msgid "Fighting controls (numpad):" @@ -4113,11 +4121,11 @@ msgstr "Colpisci in basso" #: engines/scumm/help.cpp:315 msgid "Sucker punch" -msgstr "" +msgstr "Pugno \"a tradimento\"" #: engines/scumm/help.cpp:318 msgid "These are for Indy on left." -msgstr "" +msgstr "Validi quando Indy si trova a sinistra." #: engines/scumm/help.cpp:319 msgid "When Indy is on the right," @@ -4181,14 +4189,12 @@ msgid "Snap scroll off" msgstr "" #: engines/scumm/input.cpp:593 -#, fuzzy msgid "Music volume: " -msgstr "Volume musica:" +msgstr "Volume musica: " #: engines/scumm/input.cpp:610 -#, fuzzy msgid "Subtitle speed: " -msgstr "Velocità testo:" +msgstr "Velocità testo: " #: engines/scumm/scumm.cpp:1880 #, c-format @@ -4411,6 +4417,14 @@ msgstr "" msgid "Show the current number of frames per second in the upper left corner" msgstr "" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 #, fuzzy msgid "Use the original save/load screens instead of the ScummVM interface" @@ -4446,7 +4460,7 @@ msgstr "" #: engines/zvision/detection_tables.h:91 msgid "Use high resolution MPEG video" -msgstr "" +msgstr "Usa filmati MPEG ad alta risoluzione" #: engines/zvision/detection_tables.h:92 #, fuzzy @@ -4460,6 +4474,9 @@ msgid "" "This saved game uses version %u, but this engine only supports up to version " "%d. You will need an updated version of the engine to use this saved game." msgstr "" +"Il salvataggio utilizza la versione %u, ma questo motore supporta solo la " +"versione %d o inferiori. Procurati una motore aggiornato per usare questo " +"salvataggio." #~ msgid "" #~ "Unable to find \"sky.cpt\" file!\n" diff --git a/po/nb_NO.po b/po/nb_NO.po index 79aa121e9c..18bba2e9d7 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -1,5 +1,5 @@ # Norwegian (Bokmaal) translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Einar Johan T. Sømåen <einarjohants@gmail.com>, 2010. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-17 11:35+0000\n" -"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Norwegian Bokmål <https://translations.scummvm.org/projects/" -"scummvm/scummvm/nb_NO/>\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-26 17:36+0000\n" +"Last-Translator: Einar Johan Trøan Sømåen <einarjohants@gmail.com>\n" +"Language-Team: Norwegian Bokmål " +"<https://translations.scummvm.org/projects/scummvm/scummvm/nb_NO/>\n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -465,7 +465,7 @@ msgstr "Rom:" #: gui/fluidsynth-dialog.cpp:79 msgid "Damp:" -msgstr "" +msgstr "Demp:" #: gui/fluidsynth-dialog.cpp:86 msgid "Width:" @@ -847,9 +847,8 @@ msgid "the fullscreen setting could not be changed" msgstr "fullskjermsinnstillingen kunne ikke endres" #: gui/options.cpp:486 -#, fuzzy msgid "the filtering setting could not be changed" -msgstr "fullskjermsinnstillingen kunne ikke endres" +msgstr "filterinnstillingen kunne ikke endres" #: gui/options.cpp:809 msgid "Graphics mode:" @@ -869,9 +868,8 @@ msgid "Fullscreen mode" msgstr "Fullskjermsmodus" #: gui/options.cpp:838 -#, fuzzy msgid "Filter graphics" -msgstr "Bruk fargegrafikk" +msgstr "Filtrer grafikk" #: gui/options.cpp:838 msgid "Use linear filtering when scaling graphics" @@ -1349,7 +1347,7 @@ msgstr "# neste" #: gui/predictivedialog.cpp:87 msgid "add" -msgstr "" +msgstr "legg til" #: gui/predictivedialog.cpp:92 gui/predictivedialog.cpp:167 msgid "Delete char" @@ -1696,9 +1694,8 @@ msgid "Could not find suitable engine plugin" msgstr "Kunne ikke finne en passende engine-plugin" #: common/error.cpp:68 -#, fuzzy msgid "Engine plugin does not support saved games" -msgstr "Spillmotor-plugin støtter ikke lagrede tilstander" +msgstr "Spillmotor-plugin støtter ikke lagrede spill" #: common/error.cpp:71 msgid "User canceled" @@ -1879,9 +1876,8 @@ msgid "Could not apply fullscreen setting." msgstr "Kunne ikke aktivere fullskjermsinnstilling." #: engines/engine.cpp:373 -#, fuzzy msgid "Could not apply filtering setting." -msgstr "Kunne ikke aktivere fullskjermsinnstilling." +msgstr "Kunne ikke aktivere filterinnstilling." #: engines/engine.cpp:473 msgid "" @@ -2181,7 +2177,7 @@ msgstr "Vindusmodus" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:710 #, c-format msgid "Resolution: %dx%d" -msgstr "" +msgstr "Oppløsning: %dx%d" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:731 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2338 @@ -2195,15 +2191,13 @@ msgstr "Aspekt-rate korrigering deaktivert" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:753 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362 -#, fuzzy msgid "Filtering enabled" -msgstr "Klikking aktivert" +msgstr "Filtrering aktivert" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:755 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364 -#, fuzzy msgid "Filtering disabled" -msgstr "Klikking deaktivert" +msgstr "Filtrering deaktivert" #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47 #: backends/graphics/wincesdl/wincesdl-graphics.cpp:88 @@ -4386,6 +4380,14 @@ msgstr "" "Vis det gjeldende antall bilder per sekund (FPS) i øvre venstre hjørne av " "skjermen" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" @@ -4420,7 +4422,6 @@ msgid "Use high resolution MPEG video" msgstr "Bruk høyoppløst MPEG-video" #: engines/zvision/detection_tables.h:92 -#, fuzzy msgid "Use MPEG video from the DVD version instead of lower resolution AVI" msgstr "" "Bruk MPEG-video fra DVD-versjonen istedenfor AVI-versjonen med lavere " diff --git a/po/nl_NL.po b/po/nl_NL.po index d0ea83fc20..5fe5dffa24 100644 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -1,5 +1,5 @@ # Dutch translation for ScummVM. -# Copyright (C) 2014-2016 The ScummVM Team +# Copyright (C) 2014-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # FIRST AUTHOR scummvm@bencastricum.nl, 2014. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.9.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-18 19:21+0000\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2017-01-02 18:38+0000\n" "Last-Translator: Ben Castricum <github@bencastricum.nl>\n" -"Language-Team: Dutch <https://translations.scummvm.org/projects/scummvm/" -"scummvm/nl/>\n" +"Language-Team: Dutch " +"<https://translations.scummvm.org/projects/scummvm/scummvm/nl/>\n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -2511,7 +2511,7 @@ msgstr "Huidige videomodus:" #: backends/platform/wii/options.cpp:56 msgid "Double-strike" -msgstr "Dubbele-slag" +msgstr "Double-strike" #: backends/platform/wii/options.cpp:60 msgid "Horizontal underscan:" @@ -4410,6 +4410,14 @@ msgstr "Toon FPS-teller" msgid "Show the current number of frames per second in the upper left corner" msgstr "Toon de huidige Frames Per Second teller in de linkerbovenhoek" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "Sprite bilineair filteren (langzaam)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "Pas bilineair filteren toe op individuele sprites" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/nn_NO.po b/po/nn_NO.po index 9951c5680b..694412c320 100644 --- a/po/nn_NO.po +++ b/po/nn_NO.po @@ -1,5 +1,5 @@ # Norwegian (Nynorsk) translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Einar Johan T. Sømåen <einarjohants@gmail.com>, 2010. # @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-12-18 18:23+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" "Language-Team: Norwegian Nynorsk <https://translations.scummvm.org/projects/" @@ -4343,6 +4343,14 @@ msgid "Show the current number of frames per second in the upper left corner" msgstr "" "Vis det gjeldande antall bilete per sekund i øvre venstre hjørne av skjermen" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/pl_PL.po b/po/pl_PL.po index 4ed6ffc1b3..371395d298 100644 --- a/po/pl_PL.po +++ b/po/pl_PL.po @@ -1,5 +1,5 @@ # Polish translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Grajpopolsku.pl <grajpopolsku@gmail.com>, 2011-2013. # @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-12-12 08:18+0000\n" "Last-Translator: Rafa³ Rzepecki <divided.mind@gmail.com>\n" "Language-Team: Polish <https://translations.scummvm.org/projects/scummvm/" @@ -4395,6 +4395,14 @@ msgstr "Poka¿ licznik klatek na sekundê" msgid "Show the current number of frames per second in the upper left corner" msgstr "Wy¶wietl aktualn± liczbê klatek na sekundê w lewym, górnym logu" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "U¿yj oryginalnych ekranów odczytu/zapisu zamiast interfejsu ScummVM" diff --git a/po/pt_BR.po b/po/pt_BR.po index bd666767e1..5b42e795ee 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,5 +1,5 @@ # Portuguese (Brazilian) translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Saulo Benigno <saulobenigno@gmail.com>, 2010. # @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.3.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-18 18:28+0000\n" -"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-22 21:50+0000\n" +"Last-Translator: Alexandre Folle de Menezes <afmenez@terra.com.br>\n" "Language-Team: Portuguese (Brazil) <https://translations.scummvm.org/" "projects/scummvm/scummvm/pt_BR/>\n" "Language: pt_BR\n" @@ -37,13 +37,12 @@ msgid "Available engines:" msgstr "Programas disponíveis:" #: gui/browser.cpp:68 gui/browser_osx.mm:104 -#, fuzzy msgid "Show hidden files" -msgstr "Mostrar / Ocultar console" +msgstr "Mostrar arquivos ocultos" #: gui/browser.cpp:68 msgid "Show files marked with the hidden attribute" -msgstr "" +msgstr "Mostrar arquivos marcados como ocultos" #: gui/browser.cpp:72 gui/remotebrowser.cpp:56 msgid "Go up" @@ -83,9 +82,8 @@ msgid "Choose" msgstr "Escolher" #: gui/downloaddialog.cpp:48 -#, fuzzy msgid "Select directory where to download game data" -msgstr "Selecione a pasta com os arquivos do jogo" +msgstr "Selecione a pasta para baixar os arquivos do jogo" #: gui/downloaddialog.cpp:49 gui/editgamedialog.cpp:470 gui/launcher.cpp:197 msgid "Select directory with game data" @@ -93,11 +91,11 @@ msgstr "Selecione a pasta com os arquivos do jogo" #: gui/downloaddialog.cpp:51 gui/downloaddialog.cpp:263 msgid "From: " -msgstr "" +msgstr "De: " #: gui/downloaddialog.cpp:52 gui/downloaddialog.cpp:264 msgid "To: " -msgstr "" +msgstr "Para: " #: gui/downloaddialog.cpp:63 msgid "Cancel download" @@ -110,13 +108,14 @@ msgstr "" #: gui/downloaddialog.cpp:67 msgid "Hide" -msgstr "" +msgstr "Ocultar" #: gui/downloaddialog.cpp:117 msgid "" "It looks like your connection is limited. Do you really want to download " "files with it?" msgstr "" +"Parece que a sua conexão é limitada. Deseja baixar os arquivos mesmo assim?" #: gui/downloaddialog.cpp:118 gui/downloaddialog.cpp:152 #: gui/filebrowser-dialog.cpp:132 gui/fluidsynth-dialog.cpp:217 @@ -153,6 +152,8 @@ msgid "" "Cannot create a directory to download - the specified directory has a file " "with the same name." msgstr "" +"Não é possível criar uma pasta para baixar - a pasta especificada possui um " +"arquivo com o mesmo nome." #: gui/downloaddialog.cpp:146 gui/editgamedialog.cpp:293 #: gui/fluidsynth-dialog.cpp:153 gui/KeysDialog.cpp:42 gui/launcher.cpp:522 @@ -180,11 +181,13 @@ msgid "" "The \"%s\" already exists in the specified directory.\n" "Do you really want to download files into that directory?" msgstr "" +"O \"%s\" já existe na pasta especificada.\n" +"Deseja mesmo baixar arquivos nessa pasta?" #: gui/downloaddialog.cpp:251 #, c-format msgid "Downloaded %s %s / %s %s" -msgstr "" +msgstr "Baixado %s %s / %s %s" #: gui/downloaddialog.cpp:258 #, fuzzy, c-format @@ -4434,6 +4437,14 @@ msgstr "" msgid "Show the current number of frames per second in the upper left corner" msgstr "" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" @@ -4466,11 +4477,11 @@ msgstr "" #: engines/zvision/detection_tables.h:91 msgid "Use high resolution MPEG video" -msgstr "" +msgstr "Usar vídeos MPEG de alta resolução" #: engines/zvision/detection_tables.h:92 msgid "Use MPEG video from the DVD version instead of lower resolution AVI" -msgstr "" +msgstr "Usar vídeo MPEG da versão em DVD em vez do AVi de resolução mais baixa" #: engines/zvision/file/save_manager.cpp:220 #, c-format diff --git a/po/pt_PT.po b/po/pt_PT.po index 46fb9ca41c..0773e99203 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -1,13 +1,13 @@ -# LANGUAGE translation for ScummVM. -# Copyright (C) YEAR ScummVM Team +# Portuguese (Portugal) translation for ScummVM. +# Copyright (C) 2016-2017 ScummVM Team # This file is distributed under the same license as the ScummVM package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# Fernando Sarmento <nando_sarmento@hotmail.com>, 2016 # msgid "" msgstr "" "Project-Id-Version: ScummVM 1.10.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: 2016-12-14 00:22+0000\n" "Last-Translator: Fernando Sarmento <nando_sarmento@hotmail.com>\n" "Language-Team: Portuguese (Portugal) <https://translations.scummvm.org/" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 2.9\n" -"X-Language-name: Portugues (Portugal)\n" +"X-Language-name: Portuguese (Portugal)\n" #: gui/about.cpp:94 #, c-format @@ -4237,6 +4237,14 @@ msgstr "" msgid "Show the current number of frames per second in the upper left corner" msgstr "" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/ru_RU.po b/po/ru_RU.po index 0fae24fbc5..e404ee228f 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -1,23 +1,23 @@ # Russian translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. -# Eugene Sandulenko <sev@scummvm.org>, 2010-2016 +# Eugene Sandulenko <sev@scummvm.org>, 2010-2017 # msgid "" msgstr "" "Project-Id-Version: ScummVM 1.8.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-17 22:07+0000\n" -"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Russian <https://translations.scummvm.org/projects/scummvm/" -"scummvm/ru/>\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-31 21:04+0000\n" +"Last-Translator: Ivan Lukyanov <lid-gr@tut.by>\n" +"Language-Team: Russian " +"<https://translations.scummvm.org/projects/scummvm/scummvm/ru/>\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-5\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.9\n" "X-Language-name: Russian\n" @@ -848,7 +848,7 @@ msgstr "ßÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ" #: gui/options.cpp:486 msgid "the filtering setting could not be changed" -msgstr "àÕÖØÜ ÜÐáèâÐÑØàÞÒÐÝØï ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ" +msgstr "àÕÖØÜ äØÛìâàÐæØØ ÝÕ ÜÞÖÕâ Ñëâì Ø×ÜÕÝñÝ" #: gui/options.cpp:809 msgid "Graphics mode:" @@ -869,11 +869,11 @@ msgstr "¿ÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ" #: gui/options.cpp:838 msgid "Filter graphics" -msgstr "¼ÐáèâÐÑØàÞÒÐâì ÓàÐäØÚã" +msgstr "ÄØÛìâàÞÒÐÝØÕ ÓàÐäØÚØ" #: gui/options.cpp:838 msgid "Use linear filtering when scaling graphics" -msgstr "¸áßÞÛì×ÞÒÐâì ÛØÝÕÙÝÞÕ ÜÐáèâÐÑØàÞÒÐÝØï ÔÛï ãÒÕÛØçÕÝØï àÐ×àÕèÕÝØï" +msgstr "¸áßÞÛì×ÞÒÐâì ÛØÝÕÙÝãî äØÛìâàÐæØî ÔÛï ãÒÕÛØçÕÝØï àÐ×àÕèÕÝØï" #: gui/options.cpp:841 msgid "Aspect ratio correction" @@ -1460,7 +1460,7 @@ msgstr "²àÕÜï ØÓàë: " #: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665 msgid "Untitled saved game" -msgstr "ÁÞåàÐÝÕÝØÕ ÑÕ× ØÜÕÝØ" +msgstr "ÁÞåàÐÝñÝÝÐï ØÓàÐ ÑÕ× ØÜÕÝØ" #: gui/saveload-dialog.cpp:718 msgid "Next" @@ -1763,7 +1763,7 @@ msgid "" msgstr "" "¿ÞåÞÖÕ, çâÞ ØÓàÐ Ò '%s' ÝÕØ×ÒÕáâÝÐ.\n" "¿ÞÖÐÛãÙáâÐ, áÞÞÑéØâÕ ÚÞÜÐÝÔÕ ScummVM áÛÕÔãîéØÕ ÔÐÝÝëÕ ÒÜÕáâÕ\n" -"á ÝÐ×ÒÐÝØÕÜ ØÓàë, Õñ ÒÕàáØÕÙ, ï×ëÚÞÜ Ø â. Ô.:" +"á ÝÐ×ÒÐÝØÕÜ ØÓàë, Õñ ÒÕàáØÕÙ, ï×ëÚÞÜ Ø Ôà.:" #: engines/dialogs.cpp:85 msgid "~R~esume" @@ -1887,7 +1887,7 @@ msgstr "½Õ ÜÞÓã ßàØÜÕÝØâì ßÞÛÝÞíÚàÐÝÝëÙ àÕÖØÜ." #: engines/engine.cpp:373 msgid "Could not apply filtering setting." -msgstr "½Õ ÜÞÓã ßàØÜÕÝØâì ÝÐáâàÞÙÚØ ÜÐáèâÐÑØàÞÒÐÝØï." +msgstr "½Õ ÜÞÓã ßàØÜÕÝØâì ÝÐáâàÞÙÚØ äØÛìâàÐæØØ." #: engines/engine.cpp:473 msgid "" @@ -2204,12 +2204,12 @@ msgstr "ºÞààÕÚæØï áÞÞâÝÞèÕÝØï áâÞàÞÝ ÒëÚÛîçÕÝÐ" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:753 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362 msgid "Filtering enabled" -msgstr "¼ÐáèâÐÑØàÞÒÐÝØÕ ÒÚÛîçÕÝÞ" +msgstr "ÄØÛìâàÐæØï ÒÚÛîçÕÝÐ" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:755 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364 msgid "Filtering disabled" -msgstr "¼ÐáèâÐÑØàÞÒÐÝØÕ ÒëÚÛîçÕÝÞ" +msgstr "ÄØÛìàÐæØï ÒëÚÛîçÕÝÐ" #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:47 #: backends/graphics/wincesdl/wincesdl-graphics.cpp:88 @@ -2512,7 +2512,7 @@ msgstr "ÂÕÚãéØÙ ÒØÔÕÞàÕÖØÜ:" #: backends/platform/wii/options.cpp:56 msgid "Double-strike" -msgstr "´ÒÞÙÝÞÙ ãÔÐà" +msgstr "ÃÔÒÞÕÝÝëÙ" #: backends/platform/wii/options.cpp:60 msgid "Horizontal underscan:" @@ -4407,6 +4407,14 @@ msgstr "¿ÞÚÐ×Ðâì áçñâçØÚ ÚÐÔàÞÒ Ò áÕÚãÝÔã" msgid "Show the current number of frames per second in the upper left corner" msgstr "¿ÞÚÐ×Ðâì Ò ÒÕàåÝÕÜ ÛÕÒÞÜ ãÓÛã âÕÚãéÕÕ ÚÞÛØçÕáâÒÞ ÚÐÔàÞÒ Ò áÕÚãÝÔã" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "±ØÛØÝÕÙÝÐï äØÛìâàÐæØï áßàÐÙâÞÒ (ÜÕÔÛÕÝÝÞ)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "¿àØÜÕÝØâì ÑØÛØÝÕÙÝãî äØÛìâàÐæØî ÔÛï ØÝÔØÒØÔãÐÛìÝëå áßàÐÙâÞÒ" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/scummvm.pot b/po/scummvm.pot index 269979290b..9e98951584 100644 --- a/po/scummvm.pot +++ b/po/scummvm.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.10.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -4205,6 +4205,14 @@ msgstr "" msgid "Show the current number of frames per second in the upper left corner" msgstr "" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/sv_SE.po b/po/sv_SE.po index c1593f52d6..0dea06acdc 100644 --- a/po/sv_SE.po +++ b/po/sv_SE.po @@ -1,5 +1,5 @@ # Swedish translation for ScummVM. -# Copyright (C) 2011-2016 The ScummVM Team +# Copyright (C) 2011-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Hampus Flink <hampus.flink@gmail.com>, 2011. # @@ -7,11 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.5.0svn\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-04 13:18+0000\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2017-01-03 16:23+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Swedish <https://translations.scummvm.org/projects/scummvm/" -"scummvm/sv/>\n" +"Language-Team: Swedish " +"<https://translations.scummvm.org/projects/scummvm/scummvm/sv/>\n" "Language: sv_SE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" @@ -870,7 +870,7 @@ msgstr "Fullskärmsläge" #: gui/options.cpp:838 msgid "Filter graphics" -msgstr "Filtergrafik" +msgstr "Filtrera grafik" #: gui/options.cpp:838 msgid "Use linear filtering when scaling graphics" @@ -1760,6 +1760,10 @@ msgid "" "Please, report the following data to the ScummVM team along with name\n" "of the game you tried to add and its version, language, etc.:" msgstr "" +"Spelet i '%s' verkar vara okänt.\n" +"Rapportera informationen nedan till ScummVM-teamet tillsammans med namnet på " +"spelet du försökte lägga till och vilken version det är, vilket språk det är " +"på och så vidare:" #: engines/dialogs.cpp:85 msgid "~R~esume" @@ -1842,13 +1846,13 @@ msgstr "" "ytterligare assistens." #: engines/dialogs.cpp:234 engines/pegasus/pegasus.cpp:393 -#, fuzzy, c-format +#, c-format msgid "" "Failed to save game (%s)! Please consult the README for basic information, " "and for instructions on how to obtain further assistance." msgstr "" -"Kunde inte spara data (%s)! Var god läs README-filen för grundläggande " -"information och instruktioner för hur du kan få mer hjälp." +"Kunde inte spara data (%s)! Läs README-filen för grundläggande information " +"och instruktioner för hur du kan få mer hjälp." #: engines/dialogs.cpp:307 engines/mohawk/dialogs.cpp:100 #: engines/tsage/dialogs.cpp:112 @@ -1882,7 +1886,7 @@ msgstr "Kunde inte applicera fullskärmsinställning." #: engines/engine.cpp:373 msgid "Could not apply filtering setting." -msgstr "Kunde inte ändra filterinställningen." +msgstr "Filterinställningen stöds inte." #: engines/engine.cpp:473 msgid "" @@ -2195,7 +2199,7 @@ msgstr "Korrektion av bildförhållande av" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:753 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2362 msgid "Filtering enabled" -msgstr "Filtrering är aktiverat" +msgstr "Filtrering aktiverat" #: backends/graphics/openglsdl/openglsdl-graphics.cpp:755 #: backends/graphics/surfacesdl/surfacesdl-graphics.cpp:2364 @@ -2746,7 +2750,7 @@ msgstr "Sök efter uppdateringar..." #: engines/toon/toon.cpp:4918 #, c-format msgid "Unable to locate the '%s' engine data file." -msgstr "" +msgstr "Kunde inte hitta spelmotorns datafil '%s'." #: engines/access/resources.cpp:52 engines/drascula/drascula.cpp:979 #: engines/hugo/hugo.cpp:448 engines/lure/lure.cpp:73 @@ -2754,7 +2758,7 @@ msgstr "" #: engines/toon/toon.cpp:4930 #, c-format msgid "The '%s' engine data file is corrupt." -msgstr "" +msgstr "Datafilen '%s' är trasig." #: engines/access/resources.cpp:61 engines/drascula/drascula.cpp:990 #: engines/hugo/hugo.cpp:458 engines/lure/lure.cpp:76 @@ -2765,6 +2769,8 @@ msgid "" "Incorrect version of the '%s' engine data file found. Expected %d.%d but got " "%d.%d." msgstr "" +"Felaktig version av datafilen '%s' hittades. Version %d.%d krävs, hittade " +"%d.%d." #: engines/adl/detection.cpp:45 engines/adl/detection.cpp:55 msgid "Color mode" @@ -2794,9 +2800,9 @@ msgstr "Använd originalskärmar för spara/ladda" #: engines/drascula/detection.cpp:303 engines/dreamweb/detection.cpp:49 #: engines/neverhood/detection.cpp:178 engines/sci/detection.cpp:431 #: engines/sherlock/detection.cpp:72 engines/toltecs/detection.cpp:201 -#, fuzzy msgid "Use the original save/load screens instead of the ScummVM ones" -msgstr "Använder originalskärmarna för spara/ladda istället för ScummVM:s" +msgstr "" +"Använd originalskärmarna för ladda och spara istället för ScummVM:s egna" #: engines/agi/detection.cpp:157 msgid "Use an alternative palette" @@ -2827,12 +2833,11 @@ msgstr "Använd högupplöst typsnitt för Hercules" #: engines/agi/detection.cpp:178 msgid "Uses Hercules hires font, when font file is available." -msgstr "" -"Använd högupplöst typsnitt för Herkules när typsnittsfilen är tillgänglig." +msgstr "Använd högupplöst Herkules-typsnitt när typsnittsfilen är tillgänglig." #: engines/agi/detection.cpp:187 msgid "Pause when entering commands" -msgstr "Pausa när kommandon anges" +msgstr "Pausa spelet när du skriver in kommandon" #: engines/agi/detection.cpp:188 msgid "" @@ -2853,7 +2858,7 @@ msgstr "" #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore game:" -msgstr "Återställ spel:" +msgstr "Ladda sparfil:" #: engines/agi/saveload.cpp:774 engines/avalanche/parser.cpp:1888 #: engines/cge/events.cpp:83 engines/cge2/events.cpp:76 @@ -2866,7 +2871,7 @@ msgstr "Återställ spel:" #: engines/sherlock/tattoo/widget_files.cpp:94 engines/toltecs/menu.cpp:266 #: engines/toon/toon.cpp:3432 engines/zvision/file/save_manager.cpp:62 msgid "Restore" -msgstr "Återställ" +msgstr "Ladda" #: engines/agos/saveload.cpp:159 engines/scumm/scumm.cpp:2436 #, fuzzy, c-format @@ -2904,7 +2909,7 @@ msgstr "" #: engines/agos/animation.cpp:558 #, c-format msgid "Cutscene file '%s' not found!" -msgstr "Filmscensfilen '%s' hittades ej!" +msgstr "Filmfilen '%s' hittades ej!" #: engines/cge/detection.cpp:105 engines/cge2/detection.cpp:101 msgid "Color Blind Mode" @@ -3248,24 +3253,30 @@ msgid "" "You're missing a Riven executable. The Windows executable is 'riven.exe' or " "'rivendmo.exe'. " msgstr "" +"Rivens huvudprogram saknas. Windowsprogrammet heter 'riven.exe' eller " +"'rivendmo.exe'. " #: engines/mohawk/riven.cpp:151 msgid "" "Using the 'arcriven.z' installer file also works. In addition, you can use " "the Mac 'Riven' executable." msgstr "" +"Det går även bra med installationsfilen 'arcriven.z', eller " +"Macintoshprogrammet 'Riven'." #: engines/mohawk/riven.cpp:162 msgid "" "You're missing 'extras.mhk'. Using the 'arcriven.z' installer file also " "works." msgstr "" +"Filen 'extras.mhk' saknas. Det går även bra att använda installationsfilen " +"'arcriven.z' i stället." #: engines/mohawk/riven_external.cpp:213 msgid "" "Exploration beyond this point available only within the full version of\n" "the game." -msgstr "" +msgstr "För fortsatt utforskande krävs den fullständiga versionen av spelet." #: engines/mohawk/riven_external.cpp:655 msgid "" @@ -3275,6 +3286,11 @@ msgid "" "the game. ScummVM cannot do that and\n" "the site no longer exists." msgstr "" +"Har skulle Riven-demon ha\n" +"frågat om du vill öppna en webbläsare\n" +"för att gå in på Red Orb-butiken och köpa\n" +"spelet. Det här går inte i ScummVM, och\n" +"sidan i fråga finns inte längre." #: engines/mohawk/mohawk.cpp:61 msgid "The game is paused. Press any key to continue." @@ -3357,9 +3373,8 @@ msgstr "" "Var god rapportera till teamet." #: engines/pegasus/pegasus.cpp:714 -#, fuzzy msgid "Invalid file name for saving" -msgstr "Ange ett filnamn för att spara" +msgstr "Ogiltigt namn på sparfilen" #: engines/pegasus/pegasus.cpp:2507 msgid "Up/Zoom In/Move Forward/Open Doors" @@ -3468,11 +3483,9 @@ msgid "Use silver cursors" msgstr "Använd silverpekare" #: engines/sci/detection.cpp:474 -#, fuzzy msgid "" "Use the alternate set of silver cursors instead of the normal golden ones" -msgstr "" -"Använd de alternativa silverpekarna istället för de normala guldpekarna" +msgstr "Använd muspekare i silver istället för de vanliga guldfärgade" #: engines/scumm/detection.cpp:1120 msgid "" @@ -3482,6 +3495,10 @@ msgid "" "tried\n" "to add and its version, language, etc.:\n" msgstr "" +"Okänd version av spelet. Om det *INTE* är en spelarmodifierad\n" +"version (som en spelarskapad översättning) rapportera följande\n" +"data till ScummVM-teamet tillsammans med namnet på spelet du\n" +"försökte lägga till och vilken version och språk det har, osv.\n" #: engines/scumm/detection.cpp:1138 msgid "" @@ -3489,6 +3506,9 @@ msgid "" "piracy.\n" "The full version is available for purchase from the iTunes Store." msgstr "" +"Lite-versionen av Putt-Putt Saves the Zoo iOS stöds inte av upphovsrättsliga " +"skäl.\n" +"Den fullständiga versionen går att köpa på iTunes Store." #: engines/scumm/detection.cpp:1341 msgid "Show Object Line" @@ -4248,7 +4268,7 @@ msgstr "Visar fönster med en delvis genomskinlig bakgrund" #: engines/sky/compact.cpp:141 msgid "The \"sky.cpt\" engine data file has an incorrect size." -msgstr "" +msgstr "Datafilen 'sky.cpt' har felaktig storlek." #: engines/sky/detection.cpp:44 msgid "Floppy intro" @@ -4350,7 +4370,7 @@ msgstr "" #: engines/tony/tony.cpp:258 #, c-format msgid "Font variant not present in '%s' engine data file." -msgstr "" +msgstr "Typsnittsvarianten finns inte i datafilen '%s'." #: engines/toon/toon.cpp:222 #, fuzzy, c-format @@ -4362,7 +4382,7 @@ msgstr "" #: engines/toon/toon.cpp:226 #, c-format msgid "Could not quick save into slot #%d" -msgstr "" +msgstr "Det gick inte att snabbspara i position #%d" #: engines/toon/toon.cpp:239 #, fuzzy, c-format @@ -4372,9 +4392,9 @@ msgstr "" "\n" #: engines/toon/toon.cpp:243 -#, fuzzy, c-format +#, c-format msgid "Could not quick load the saved game #%d" -msgstr "Vill du ladda sparat spel?" +msgstr "Det gick inte att snabbladda sparat spel #%d" #: engines/wintermute/detection.cpp:58 msgid "Show FPS-counter" @@ -4385,6 +4405,14 @@ msgid "Show the current number of frames per second in the upper left corner" msgstr "" "Visar det aktuella antalet bildrutor per sekund i det övre vänstra hörnet" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "Bilinjär filtrering av rörliga figurer (LÅNGSAM)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "Tillämpa bilinjär filtrering på enskilda rörliga figurer" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "Använd originalskärmarna för spara/ladda istället för ScummVM:s" @@ -4429,6 +4457,9 @@ msgid "" "This saved game uses version %u, but this engine only supports up to version " "%d. You will need an updated version of the engine to use this saved game." msgstr "" +"Den här sparfilen använder version %u, men spelmotorn har bara stöd för upp " +"till version %d. Det krävs en uppdaterad version av spelmotorn för att " +"använda den här sparfilen." #~ msgid "" #~ "Unable to find \"sky.cpt\" file!\n" diff --git a/po/uk_UA.po b/po/uk_UA.po index 6bf8f4d88c..230c798004 100644 --- a/po/uk_UA.po +++ b/po/uk_UA.po @@ -1,24 +1,24 @@ # Ukrainian translation for ScummVM. -# Copyright (C) 2010-2016 The ScummVM Team +# Copyright (C) 2010-2017 The ScummVM Team # This file is distributed under the same license as the ScummVM package. # Lubomyr Lisen, 2010. -# Eugene Sandulenko <sev@scummvm.org>, 2010-2016 +# Eugene Sandulenko <sev@scummvm.org>, 2010-2017 # msgid "" msgstr "" "Project-Id-Version: ScummVM 1.9.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-12-17 22:05+0000\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2017-01-01 00:02+0000\n" "Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" -"Language-Team: Ukrainian <https://translations.scummvm.org/projects/scummvm/" -"scummvm/uk/>\n" +"Language-Team: Ukrainian " +"<https://translations.scummvm.org/projects/scummvm/scummvm/uk/>\n" "Language: uk_UA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-5\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.9\n" "X-Language-name: Ukrainian\n" @@ -41,7 +41,7 @@ msgstr "¿ÞÚÐ×ÐâØ cåÞÒÐÝö äÐÙÛö" #: gui/browser.cpp:68 msgid "Show files marked with the hidden attribute" -msgstr "¿ÞÚÐ×ãô äÐÙÛØ ïÚö ßÞÜöçÕÝÞ ïÚ áåÞÒÐÝö" +msgstr "¿ÞÚÐ×ãÒÐâØ äÐÙÛØ ïÚö ßÞÜöçÕÝÞ ïÚ áåÞÒÐÝö" #: gui/browser.cpp:72 gui/remotebrowser.cpp:56 msgid "Go up" @@ -2510,7 +2510,7 @@ msgstr "¿ÞâÞçÝØÙ ÒöÔÕÞàÕÖØÜ:" #: backends/platform/wii/options.cpp:56 msgid "Double-strike" -msgstr "¿ÞÔÒöÙÝØÙ ãÔÐà" +msgstr "¿ÞÔÒöÙÝØÙ" #: backends/platform/wii/options.cpp:60 msgid "Horizontal underscan:" @@ -3252,8 +3252,8 @@ msgid "" "You're missing a Riven executable. The Windows executable is 'riven.exe' or " "'rivendmo.exe'. " msgstr "" -"à ÒÐÜ ÝÕÜÐô äÐÙÛã ÔÛï ÒØÚÞÝÐÝÝï Riven. ÄÐÙÛ ÒØÚÞÝÐÝÝï ÔÛï Windows ÜÐô " -"ÝÐ×Òã'riven.exe' ÐÑÞ 'rivendemo.exe'. " +"à ÒÐÜ ÝÕÜÐô äÐÙÛã ÔÛï ÒØÚÞÝÐÝÝï Riven. ÄÐÙÛ ÒØÚÞÝÐÝÝï ÔÛï Windows ÜÐô ÝÐ×Òã " +"'riven.exe' ÐÑÞ 'rivendmo.exe'. " #: engines/mohawk/riven.cpp:151 msgid "" @@ -4395,6 +4395,14 @@ msgstr "¿ÞÚÐ×ÐâØ ÛöçØÛìÝØÚ ÚÐÔàöÒ" msgid "Show the current number of frames per second in the upper left corner" msgstr "¿ÞÚÐ×ãô ã ÒÕàÝìÞÜã ÛöÒÞÜã Úãâö ßÞâÞçÝã ÚöÛìÚöáâì ÚÐÔàöÒ ÝÐ áÕÚãÝÔã" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "±öÛöÝöÙÝÐ äöÛìâàÐæöï áßàÐÙâöÒ (ßÞÒöÛìÝÞ)" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "·ÐáâÞáãÒÐâØ ÑöÛöÝöÙÝã äöÛìâàÐæöî ÔÞ ÞÚàÕÜØå áßàÐÙâöÒ" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "" diff --git a/po/zh-Latn_CN.po b/po/zh-Latn_CN.po index 4eed00943a..ffcf999c85 100644 --- a/po/zh-Latn_CN.po +++ b/po/zh-Latn_CN.po @@ -1,5 +1,5 @@ -# LANGUAGE translation for ScummVM. -# Copyright (C) YEAR ScummVM Team +# Chinese Pinyin (Mandarin) translation for ScummVM. +# Copyright (C) 2016-2017 ScummVM Team # This file is distributed under the same license as the ScummVM package. # Chenbo Li <lichenbo1949@gmail.com>, 2016. # @@ -7,15 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: ScummVM 1.9.0git\n" "Report-Msgid-Bugs-To: scummvm-devel@lists.scummvm.org\n" -"POT-Creation-Date: 2016-12-19 02:13+0100\n" -"PO-Revision-Date: 2016-03-15 04:09-0700\n" -"Last-Translator: Chenbo Li <lichenbo1949@gmail.com>\n" -"Language-Team: Chenbo Li <lichenbo1949@gmail.com>\n" -"Language: Chinese Pinyin (Mandarin)\n" +"POT-Creation-Date: 2016-12-26 16:14+0100\n" +"PO-Revision-Date: 2016-12-26 19:38+0000\n" +"Last-Translator: Eugene Sandulenko <sev@scummvm.org>\n" +"Language-Team: Chinese " +"<https://translations.scummvm.org/projects/scummvm/scummvm/zh_LATN@cn/>\n" +"Language: zh-Latn_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.9\n" "X-Language-name: Chinese Pinyin (Mandarin)\n" #: gui/about.cpp:94 @@ -25,11 +27,11 @@ msgstr "(Bianyiyu %s)" #: gui/about.cpp:101 msgid "Features compiled in:" -msgstr "Gongneng BianyiYu" +msgstr "Gongneng BianyiYu:" #: gui/about.cpp:110 msgid "Available engines:" -msgstr "KeyongDeYinQing" +msgstr "KeyongDeYinQing:" #: gui/browser.cpp:68 gui/browser_osx.mm:104 msgid "Show hidden files" @@ -245,7 +247,7 @@ msgstr "Pingtai:" #: gui/editgamedialog.cpp:161 gui/editgamedialog.cpp:163 #: gui/editgamedialog.cpp:164 msgid "Platform the game was originally designed for" -msgstr "Youxi Chushi Yunxing de Pingtai:" +msgstr "Youxi Chushi Yunxing de Pingtai" #: gui/editgamedialog.cpp:163 msgctxt "lowres" @@ -414,7 +416,7 @@ msgstr "" #: gui/editgamedialog.cpp:534 msgid "This game ID is already taken. Please choose another one." -msgstr "Ci Youxi ID Yi Bei Zhanyong. Qing Xuanze Qita Mingcheng" +msgstr "Ci Youxi ID Yi Bei Zhanyong. Qing Xuanze Qita Mingcheng." #: gui/editrecorddialog.cpp:58 msgid "Author:" @@ -438,7 +440,7 @@ msgstr "Shuru Baocun de Wenjianming" #: gui/filebrowser-dialog.cpp:132 msgid "Do you really want to overwrite the file?" -msgstr "Nin Shifou Queding Fugai Ciwenjian" +msgstr "Nin Shifou Queding Fugai Ciwenjian ?" #: gui/fluidsynth-dialog.cpp:68 msgid "Reverb" @@ -466,7 +468,7 @@ msgstr "Jibie:" #: gui/fluidsynth-dialog.cpp:100 msgid "Chorus" -msgstr "Hechang:" +msgstr "Hechang" #: gui/fluidsynth-dialog.cpp:104 msgid "N:" @@ -522,7 +524,7 @@ msgstr "Chongzhi" #: gui/fluidsynth-dialog.cpp:150 msgid "Reset all FluidSynth settings to their default values." -msgstr "Chongzhi Suoyou de FluidSynth Shezhi" +msgstr "Chongzhi Suoyou de FluidSynth Shezhi." #: gui/fluidsynth-dialog.cpp:217 msgid "" @@ -592,7 +594,7 @@ msgstr "Tuichu ScummVM" #: gui/launcher.cpp:142 msgid "A~b~out..." -msgstr "~b~Guanyu" +msgstr "~b~Guanyu..." #: gui/launcher.cpp:142 backends/platform/sdl/macosx/appmenu_osx.mm:80 msgid "About ScummVM" @@ -600,7 +602,7 @@ msgstr "Guanyu ScummVM" #: gui/launcher.cpp:143 msgid "~O~ptions..." -msgstr "~O~Xuanxiang" +msgstr "~O~Xuanxiang..." #: gui/launcher.cpp:143 msgid "Change global ScummVM options" @@ -616,7 +618,7 @@ msgstr "Kaishi Xuanze de Youxi" #: gui/launcher.cpp:148 msgid "~L~oad..." -msgstr "~L~Jiazai" +msgstr "~L~Jiazai..." #: gui/launcher.cpp:148 msgid "Load saved game for selected game" @@ -659,7 +661,7 @@ msgstr "~E~Bianji Youxi ..." #: gui/launcher.cpp:164 msgctxt "lowres" msgid "~R~emove Game" -msgstr "~R~Yichu Youxi ..." +msgstr "~R~Yichu Youxi" #: gui/launcher.cpp:172 msgid "Search in game list" @@ -741,7 +743,7 @@ msgstr "Saomiao Wancheng!" #: gui/massadd.cpp:262 #, c-format msgid "Discovered %d new games, ignored %d previously added games." -msgstr "Faxian le %d ge Xinyouxi, Hulue %d ge YiTianjia de Youxi" +msgstr "Faxian le %d ge Xinyouxi, Hulue %d ge YiTianjia de Youxi." #: gui/massadd.cpp:266 #, c-format @@ -1045,7 +1047,7 @@ msgstr "Xianshi Zimu Bing Bofang Yuyin" #: gui/options.cpp:1019 msgctxt "lowres" msgid "Subtitle speed:" -msgstr "Zimu Sudu" +msgstr "Zimu Sudu:" #: gui/options.cpp:1035 msgid "Music volume:" @@ -1391,12 +1393,12 @@ msgstr "Binaji" #: gui/recorderdialog.cpp:85 gui/recorderdialog.cpp:242 #: gui/recorderdialog.cpp:252 msgid "Author: " -msgstr "Zuozhe:" +msgstr "Zuozhe: " #: gui/recorderdialog.cpp:86 gui/recorderdialog.cpp:243 #: gui/recorderdialog.cpp:253 msgid "Notes: " -msgstr "Zhushi:" +msgstr "Zhushi: " #: gui/recorderdialog.cpp:154 msgid "Do you really want to delete this record?" @@ -1445,7 +1447,7 @@ msgstr "Shijian: " #: gui/saveload-dialog.cpp:564 gui/saveload-dialog.cpp:1074 msgid "Playtime: " -msgstr "Bofang Shijian:" +msgstr "Bofang Shijian: " #: gui/saveload-dialog.cpp:577 gui/saveload-dialog.cpp:665 #, fuzzy @@ -1470,12 +1472,12 @@ msgstr "Chuangjian Yige Xin Cundang" #: gui/saveload-dialog.cpp:1053 msgid "Name: " -msgstr "Mingcheng:" +msgstr "Mingcheng: " #: gui/saveload-dialog.cpp:1131 #, c-format msgid "Enter a description for slot %d:" -msgstr "Shuru dui %d Dangwei de Miaoshu" +msgstr "Shuru dui %d Dangwei de Miaoshu:" #: gui/storagewizarddialog.cpp:55 #, c-format @@ -1862,11 +1864,11 @@ msgstr "Wufa Qiehuandao Shipin Moshi: '" #: engines/engine.cpp:363 msgid "Could not apply aspect ratio setting." -msgstr "Wufa Shezhi Bili Xuanxiang" +msgstr "Wufa Shezhi Bili Xuanxiang." #: engines/engine.cpp:368 msgid "Could not apply fullscreen setting." -msgstr "Wufa Shezhi Quanping Xuanxiang" +msgstr "Wufa Shezhi Quanping Xuanxiang." #: engines/engine.cpp:373 #, fuzzy @@ -2147,7 +2149,7 @@ msgstr "Guan" #: backends/events/webossdl/webossdl-events.cpp:315 msgid "Swipe two fingers to the right to toggle." -msgstr "XiangYou Shiyong Liang Gen Shouzhi Huadong Qiehuan" +msgstr "XiangYou Shiyong Liang Gen Shouzhi Huadong Qiehuan." #. I18N: Auto-drag toggle status. #: backends/events/webossdl/webossdl-events.cpp:335 @@ -2156,7 +2158,7 @@ msgstr "Muqian Wei Zidong Tuozhuai Moshi" #: backends/events/webossdl/webossdl-events.cpp:342 msgid "Swipe three fingers to the right to toggle." -msgstr "Xiangyou Huadong San Gen Shouzhi Qiehuan" +msgstr "Xiangyou Huadong San Gen Shouzhi Qiehuan." #: backends/graphics/opengl/opengl-graphics.cpp:146 msgid "OpenGL" @@ -2284,11 +2286,11 @@ msgstr "Mingandu" #: backends/platform/ds/arm9/source/dsoptions.cpp:99 msgid "Initial top screen scale:" -msgstr "Chushi Shangping Daxiao" +msgstr "Chushi Shangping Daxiao:" #: backends/platform/ds/arm9/source/dsoptions.cpp:105 msgid "Main screen scaling:" -msgstr "Zhu Pingmu Daxiao" +msgstr "Zhu Pingmu Daxiao:" #: backends/platform/ds/arm9/source/dsoptions.cpp:107 msgid "Hardware scale (fast, but low quality)" @@ -2318,7 +2320,7 @@ msgstr "Jinyong Guanji" #: backends/platform/ios7/ios7_osys_events.cpp:519 #: backends/platform/iphone/osys_events.cpp:300 msgid "Mouse-click-and-drag mode enabled." -msgstr "QIdong Shubiao Dianji-tuozhuai Moshi" +msgstr "QIdong Shubiao Dianji-tuozhuai Moshi." #: backends/platform/ios7/ios7_osys_events.cpp:311 #: backends/platform/ios7/ios7_osys_events.cpp:521 @@ -2330,13 +2332,13 @@ msgstr "Jinyong Shubiao Dianji-Tuozhuai Moshi." #: backends/platform/ios7/ios7_osys_events.cpp:540 #: backends/platform/iphone/osys_events.cpp:313 msgid "Touchpad mode enabled." -msgstr "Qiyong Chumoban Moshi" +msgstr "Qiyong Chumoban Moshi." #: backends/platform/ios7/ios7_osys_events.cpp:324 #: backends/platform/ios7/ios7_osys_events.cpp:542 #: backends/platform/iphone/osys_events.cpp:315 msgid "Touchpad mode disabled." -msgstr "Jinyong Chumoban Moshi" +msgstr "Jinyong Chumoban Moshi." #: backends/platform/maemo/maemo.cpp:208 msgid "Click Mode" @@ -2499,11 +2501,11 @@ msgstr "Shuang Ji" #: backends/platform/wii/options.cpp:60 msgid "Horizontal underscan:" -msgstr "Shuiping Saomiao" +msgstr "Shuiping Saomiao:" #: backends/platform/wii/options.cpp:66 msgid "Vertical underscan:" -msgstr "Chuizhi Saomiao" +msgstr "Chuizhi Saomiao:" #: backends/platform/wii/options.cpp:71 msgid "Input" @@ -2511,11 +2513,11 @@ msgstr "Shuru" #: backends/platform/wii/options.cpp:74 msgid "GC Pad sensitivity:" -msgstr "GC Pan Mingandu" +msgstr "GC Pan Mingandu:" #: backends/platform/wii/options.cpp:80 msgid "GC Pad acceleration:" -msgstr "GC Pad Jiasu" +msgstr "GC Pad Jiasu:" #: backends/platform/wii/options.cpp:86 msgid "DVD" @@ -2671,7 +2673,7 @@ msgstr "Nin Xinagyao Zairu Huo Baocun Youxi Ma?" #: backends/platform/wince/CEActionsPocket.cpp:326 #: backends/platform/wince/CEActionsSmartphone.cpp:287 msgid " Are you sure you want to quit ? " -msgstr "Nin Queding Tuichu ma ?" +msgstr " Nin Queding Tuichu ma ? " #: backends/platform/wince/CEActionsSmartphone.cpp:50 msgid "Keyboard" @@ -2683,11 +2685,11 @@ msgstr "Xuanzhuan" #: backends/platform/wince/CELauncherDialog.cpp:56 msgid "Using SDL driver " -msgstr "Shiyong SDL Qudong" +msgstr "Shiyong SDL Qudong " #: backends/platform/wince/CELauncherDialog.cpp:60 msgid "Display " -msgstr "Xianshi" +msgstr "Xianshi " #: backends/platform/wince/CELauncherDialog.cpp:83 msgid "Do you want to perform an automatic scan ?" @@ -2797,7 +2799,7 @@ msgstr "Shiyong Qita Mianban" msgid "" "Use an alternative palette, common for all Amiga games. This was the old " "behavior" -msgstr "Shiyong QIta Mianban, Yiban Yonghu suoyou de Amiga Youxi. " +msgstr "Shiyong QIta Mianban, Yiban Yonghu suoyou de Amiga Youxi" #: engines/agi/detection.cpp:167 msgid "Mouse support" @@ -2808,7 +2810,7 @@ msgid "" "Enables mouse support. Allows to use mouse for movement and in game menus." msgstr "" "Qiyong shubiao zhichi. Yunxu Shiyong Shubiao jinxing Yidong He Youxi Nei " -"Caidan" +"Caidan." #: engines/agi/detection.cpp:177 #, fuzzy @@ -2942,7 +2944,7 @@ msgstr "Wufa Baocun Cundang " #: engines/gob/inter_v5.cpp:107 msgid "Failed to delete file." -msgstr "Wufa Shanchu Wenjian" +msgstr "Wufa Shanchu Wenjian." #: engines/groovie/detection.cpp:312 msgid "Fast movie speed" @@ -3492,7 +3494,7 @@ msgstr "" #: engines/scumm/dialogs.cpp:172 #, c-format msgid "Insert Disk %c and Press Button to Continue." -msgstr "Charu Guangpan %c Bing An Anniu YI jixu" +msgstr "Charu Guangpan %c Bing An Anniu YI jixu." #: engines/scumm/dialogs.cpp:173 #, c-format @@ -3591,7 +3593,7 @@ msgstr "Yuyin He Zimu" #: engines/scumm/dialogs.cpp:654 msgid "Select a Proficiency Level." -msgstr "Qing Xuanze Shulian Dengji" +msgstr "Qing Xuanze Shulian Dengji." #: engines/scumm/dialogs.cpp:656 msgid "Refer to your Loom(TM) manual for help." @@ -3727,15 +3729,15 @@ msgstr "* Zhuyi Ctrl-f He" #: engines/scumm/help.cpp:109 msgid " ctrl-g are not recommended" -msgstr " Ctrl-g BIngbu zhichi" +msgstr " Ctrl-g BIngbu zhichi" #: engines/scumm/help.cpp:110 msgid " since they may cause crashes" -msgstr " Yinwei Keneng zaocheng cuowu" +msgstr " Yinwei Keneng zaocheng cuowu" #: engines/scumm/help.cpp:111 msgid " or incorrect game behavior." -msgstr " Huo Buzhengque de Youxi xingwei" +msgstr " Huo Buzhengque de Youxi xingwei." #: engines/scumm/help.cpp:115 msgid "Spinning drafts on the keyboard:" @@ -4017,7 +4019,7 @@ msgstr "Zhongyou Wupin" #: engines/scumm/help.cpp:280 engines/scumm/help.cpp:285 msgid "Switching characters:" -msgstr "Qiehuan Juese" +msgstr "Qiehuan Juese:" #: engines/scumm/help.cpp:282 msgid "Second kid" @@ -4041,11 +4043,11 @@ msgstr "* Jianpan Zhandou zongshi Kaiqi," #: engines/scumm/help.cpp:296 msgid " so despite the in-game message this" -msgstr " Suoyi Hulue youxi nei xinxi" +msgstr " Suoyi Hulue youxi nei xinxi" #: engines/scumm/help.cpp:297 msgid " actually toggles Mouse Fighting Off/On" -msgstr " Zhe shiji shang shi Zai qiehuan Shubiao Zhandou de Kaiguan" +msgstr " Zhe shiji shang shi Zai qiehuan Shubiao Zhandou de Kaiguan" #: engines/scumm/help.cpp:304 msgid "Fighting controls (numpad):" @@ -4086,7 +4088,7 @@ msgstr "Sucker Punch" #: engines/scumm/help.cpp:318 msgid "These are for Indy on left." -msgstr "Weile zai Zuobian de Indy" +msgstr "Weile zai Zuobian de Indy." #: engines/scumm/help.cpp:319 msgid "When Indy is on the right," @@ -4150,11 +4152,11 @@ msgstr "Snap Gundong Guan" #: engines/scumm/input.cpp:593 msgid "Music volume: " -msgstr "Yinyue Yinliang:" +msgstr "Yinyue Yinliang: " #: engines/scumm/input.cpp:610 msgid "Subtitle speed: " -msgstr "Zimu Sudu:" +msgstr "Zimu Sudu: " #: engines/scumm/scumm.cpp:1880 #, c-format @@ -4331,7 +4333,7 @@ msgid "" "executable. Please decompress it" msgstr "" "teenagent.dat Wenjian Yibeiyasuo Bingqie zlib Bingmeiyou Zai chengxu Zhong. " -"Qing jieya." +"Qing jieya" #: engines/tony/tony.cpp:258 #, c-format @@ -4370,6 +4372,14 @@ msgstr "Xianshi FPS Jishuqi" msgid "Show the current number of frames per second in the upper left corner" msgstr "Zai Zuoshangjiao Xianshi Xianzai Meimiaozhong Zhenshu" +#: engines/wintermute/detection.cpp:68 +msgid "Sprite bilinear filtering (SLOW)" +msgstr "" + +#: engines/wintermute/detection.cpp:69 +msgid "Apply bilinear filtering to individual sprites" +msgstr "" + #: engines/zvision/detection_tables.h:52 msgid "Use the original save/load screens instead of the ScummVM interface" msgstr "Shiyong Yuanshi baocun/zairu Pingmu Erfei ScummVM jiemian" diff --git a/test/engines/wintermute/path_utils.h b/test/engines/wintermute/path_utils.h new file mode 100644 index 0000000000..26f3404396 --- /dev/null +++ b/test/engines/wintermute/path_utils.h @@ -0,0 +1,236 @@ +#include <cxxtest/TestSuite.h> +#include "engines/wintermute/utils/path_util.h" +/** + * Test suite for the functions in engines/wintermute/utils/path_util.h + * + * NOTE: This is not a prescription; + * this was not written by the original engine author; + * this was not written by the engine porter. + * + * It might, however, help to spot variations in behavior that are introduced by modifications + */ + +class PathUtilTestSuite : public CxxTest::TestSuite { + public: + const Common::String unixPath; + const Common::String unixCapPath; + const Common::String windowsPath; + const Common::String windowsCapPath; + const Common::String emptyString; + const Common::String dualExtPath; + const Common::String manyExtPath; + const Common::String mixedSlashesPath1; + const Common::String mixedSlashesPath2; + const Common::String unixRelativePath; + const Common::String windowsRelativePath; + const Common::String unixDirPath; + const Common::String windowsDirPath; + PathUtilTestSuite () : + unixPath("/some/file.ext"), + unixCapPath("/SOME/FILE.EXT"), + windowsPath("C:\\some\\file.ext"), + windowsCapPath("C:\\SOME\\FILE.EXT"), + emptyString(""), + dualExtPath("/some/file.tar.gz"), + manyExtPath("/some/file.tar.bz2.gz.zip"), + mixedSlashesPath1("C:\\this/IS_REALLY\\weird.exe"), + mixedSlashesPath2("/pretty\\weird/indeed.txt"), + unixRelativePath("some/file.ext"), + windowsRelativePath("some\\file.ext"), + unixDirPath("/some/dir/"), + windowsDirPath("C:\\some\\dir\\") + {} + void test_getdirectoryname() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixPath), + Common::String("/some/") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixCapPath), + Common::String("/SOME/") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsPath), + Common::String("C:\\some\\") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsCapPath), + Common::String("C:\\SOME\\") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(emptyString), + Common::String("") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixDirPath), + Common::String("/some/dir/") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsDirPath), + Common::String("C:\\some\\dir\\") + ); + } + + void test_getfilename() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixPath), + Common::String("file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixCapPath), + Common::String("FILE.EXT") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsPath), + Common::String("file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsCapPath), + Common::String("FILE.EXT") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(emptyString), + Common::String("") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixRelativePath), + Common::String("file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsRelativePath), + Common::String("file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(windowsDirPath), + Common::String("") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileName(unixDirPath), + Common::String("") + ); + } + + void test_getextension() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(windowsPath), + Common::String("ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(windowsCapPath), + Common::String("EXT") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(emptyString), + Common::String("") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(dualExtPath), + Common::String("gz") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(manyExtPath), + Common::String("zip") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(unixRelativePath), + Common::String("ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getExtension(windowsRelativePath), + Common::String("ext") + ); + } + + void test_getfilenamewithoutextension() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(windowsPath), + Common::String("file") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(windowsCapPath), + Common::String("FILE") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(emptyString), + Common::String("") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(dualExtPath), + Common::String("file.tar") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(manyExtPath), + Common::String("file.tar.bz2.gz") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(unixRelativePath), + Common::String("file") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getFileNameWithoutExtension(windowsRelativePath), + Common::String("file") + ); + } + + void test_combine_identity() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(windowsPath) + + "." + + Wintermute::PathUtil::getExtension(windowsPath), + windowsPath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(windowsCapPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(windowsCapPath) + + "." + + Wintermute::PathUtil::getExtension(windowsCapPath), + windowsCapPath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(unixCapPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(unixCapPath) + + "." + + Wintermute::PathUtil::getExtension(unixCapPath), + unixCapPath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::getDirectoryName(manyExtPath) + + Wintermute::PathUtil::getFileNameWithoutExtension(manyExtPath) + + "." + + Wintermute::PathUtil::getExtension(manyExtPath), + manyExtPath + ); + } + + void test_normalize() { + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(windowsCapPath), + Common::String("c:/some/file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(windowsPath), + Common::String("c:/some/file.ext") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(mixedSlashesPath1), + Common::String("c:/this/is_really/weird.exe") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(mixedSlashesPath2), + Common::String("/pretty/weird/indeed.txt") + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(emptyString), + emptyString + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(unixRelativePath), + unixRelativePath + ); + TS_ASSERT_EQUALS( + Wintermute::PathUtil::normalizeFileName(windowsRelativePath), + unixRelativePath // NOT windows + ); + } +}; diff --git a/test/module.mk b/test/module.mk index 11ee6bd200..04e7deeacd 100644 --- a/test/module.mk +++ b/test/module.mk @@ -8,6 +8,11 @@ TESTS := $(srcdir)/test/common/*.h $(srcdir)/test/audio/*.h TEST_LIBS := audio/libaudio.a common/libcommon.a +ifdef ENABLE_WINTERMUTE + TESTS += $(srcdir)/test/engines/wintermute/*.h + TEST_LIBS += engines/wintermute/libwintermute.a +endif + # TEST_FLAGS := --runner=StdioPrinter --no-std --no-eh --include=$(srcdir)/test/cxxtest_mingw.h TEST_CFLAGS := -I$(srcdir)/test/cxxtest diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp index fc73cfaeac..32aa9f9044 100644 --- a/video/avi_decoder.cpp +++ b/video/avi_decoder.cpp @@ -721,18 +721,31 @@ bool AVIDecoder::seekIntern(const Audio::Timestamp &time) { AVIVideoTrack *videoTrack2 = static_cast<AVIVideoTrack *>(_videoTracks.back().track); videoTrack2->setCurFrame((int)frame - 1); - // Find the index entry for the frame and read it in - OldIndex *entry = _indexEntries.find(_videoTracks.back().index, frame); + // Find the index entry for the frame + int indexFrame = frame; + OldIndex *entry = nullptr; + do { + entry = _indexEntries.find(_videoTracks.back().index, indexFrame); + } while (!entry && indexFrame-- > 0); assert(entry); + // Read in the frame Common::SeekableReadStream *chunk = nullptr; _fileStream->seek(entry->offset + 8); _videoTracks.back().chunkSearchOffset = entry->offset; if (entry->size != 0) chunk = _fileStream->readStream(entry->size); - videoTrack2->decodeFrame(chunk); + + if (indexFrame < frame) { + TrackStatus &status = _videoTracks.back(); + while (status.chunkSearchOffset < _movieListEnd && indexFrame++ < frame) { + // There was no index entry for the desired frame, so an earlier one was decoded. + // We now have to sequentially decode frames until we get to the desired frame + handleNextPacket(status); + } + } } // Set the video track's frame |