--- a/.hgtags Tue Oct 06 13:28:11 2015 +0200
+++ b/.hgtags Mon Nov 09 16:34:03 2015 +0000
@@ -64,3 +64,9 @@
7e55468ffe384a3065524c483eb5e3cdb1658fd5 0.9.21-release
7e55468ffe384a3065524c483eb5e3cdb1658fd5 fab746a3597e
0f5961910e2712582b162abd08ae3eed330cc978 Nice one
+d9622394ec9c2974a84b9b4d9e6c0ac26c4060ff 0.9.22-RC
+0f5961910e2712582b162abd08ae3eed330cc978 Nice one
+0000000000000000000000000000000000000000 Nice one
+4c4f22cc3fa4e6c1e5cd6cce35350dd93478415f 0.9.22-release
+4c4f22cc3fa4e6c1e5cd6cce35350dd93478415f 0.9.22-release
+9621fdcad96589b3fd78713a0f31e72f26f068bb 0.9.22-release
--- a/CMakeLists.txt Tue Oct 06 13:28:11 2015 +0200
+++ b/CMakeLists.txt Mon Nov 09 16:34:03 2015 +0000
@@ -52,8 +52,8 @@
#versioning
set(CPACK_PACKAGE_VERSION_MAJOR 0)
set(CPACK_PACKAGE_VERSION_MINOR 9)
-set(CPACK_PACKAGE_VERSION_PATCH 22)
-set(HEDGEWARS_PROTO_VER 50)
+set(CPACK_PACKAGE_VERSION_PATCH 23)
+set(HEDGEWARS_PROTO_VER 52)
set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
include(${CMAKE_MODULE_PATH}/revinfo.cmake)
--- a/ChangeLog.txt Tue Oct 06 13:28:11 2015 +0200
+++ b/ChangeLog.txt Mon Nov 09 16:34:03 2015 +0000
@@ -1,22 +1,39 @@
+ features
* bugfixes
+0.9.22 -> 0.9.23
+ * Hammer damage is now rounded down. This means it will cause NO DAMAGE to a hedgehog with less than 3 hp.
+ * Fixed bee not being affected by wrap world edge while still being thrown
+ * Fixed turn not ending when sticky mine was trapped on rubberband
+
0.9.21 -> 0.9.22
+ + New Weapon / Map object: AirMine (floating mine that will follow nearby hedgehogs)
+ Extensive changes to TechRacer: Variable terrain types, enhanced parameters, hwmap interpreter, fuel limiter, etc.
+ + HedgeEditor - create missions/etc. in-game! see http://hedgewars.org/HedgeEditor
+ Map previews can now take script parameters into account and preview waypoints in TechRacer
+ Added a couple new flags
- + Small improvements to the interface and in-game chat
- + Divided teams options will now just be ignored when more/less than 2 teams, instead of displaying a fatal error
+ + Various tweaks to the interface and in-game chat
+ + Divided teams options will now just be ignored when more/less than 2 teams/clans, instead of displaying a fatal error
+ Added 6 TechRacer maps to TechMaps
+ Added 3 SpeedShoppa Challenges: Shoppa Love, Ropes and Crates, The Customer is King
+ Hammer damage is now rounded up. This means it can be used to execute hedgehogs with only 1 hp.
+ Improved "Art" theme.
* Generated bridges/girders are now connected better to the land mass
* Fixed rubberband sprite
+ * Fixed Wind-Indicator being wrong in certain situations
+ * Melon Bomb Pieces now bounce on Rubberband
+ * Reduced menu music volume
* The game will now fallback to default voicepack if a team's voicepack is not locally installed. (Instead of rendering team voiceless)
* Hammer now does more damage when the Extra-Damage utility is used
* Many other bug fixes
+Lua-API:
+ + New map parameter: MapFeatureSize -- numeric representation of detail slider below map preview; use within onGameInit()/onPreviewInit()
+ + New function: SetMaxBuildDistance([ distInPx ]) -- specify how many pixels away a hedgehog can still place girders/etc. set to 0 for no limit; call with no param to reset to default
+ + New hook: onSuddenDeath() -- called by engine when sudden death begins
+ * Previously missing gear states are now available (gstSubmersible, gstFrozen and gstNoGravity)
+ * Fixed OnHogAttack giving the incorrect AmmoType (amNothing) under certain conditions
+
0.9.20 -> 0.9.21:
+ New type of randomly generated maps: Perlin Maps.
+ Old Random generated maps are more diverse now.
--- a/QTfrontend/res/html/about.html Tue Oct 06 13:28:11 2015 +0200
+++ b/QTfrontend/res/html/about.html Mon Nov 09 16:34:03 2015 +0000
@@ -35,6 +35,7 @@
Keybinds, feedback, maps and hats interfaces: Drew Gottlieb <<a href="mailto:gottlieb.drew@gmail.com">gottlieb.drew@gmail.com</a>><br>
Login dialogs, frontend improvements: Ondrej Skopek <<a href="mailto:skopekondrej@gmail.com">skopekondrej@gmail.com</a>><br>
Icegun weapon: Julia Struchenko <<a href="mailto:urbertar@gmail.com">urbertar@gmail.com</a>><br>
+ iPhone/iPad ports: Anton Malmygin <<a href="mailto:antonc27@mail.ru">antonc27@mail.ru</a>><br>
</p>
<h2>Art:</h2>
@@ -82,7 +83,7 @@
Lithuanian: Lukas Urbonas <<a href="mailto:lukasu08@gmail.com">lukasu08@gmail.com</a>><br>
Polish: Maciej Mroziński <<a href="mailto:mynick2@o2.pl">mynick2@o2.pl</a>>, Wojciech Latkowski <<a href="mailto:magik17l@gmail.com">magik17l@gmail.com</a>>, Piotr Mitana, Maciej Górny<br>
Portuguese: Fábio Canário <<a href="mailto:inufabie@gmail.com">inufabie@gmail.com</a>><br>
- Russian: Andrey Korotaev <<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>>, Vitaly Novichkov <<a href="mailto:admin@wohlnet.ru">admin@wohlnet.ru</a>><br>
+ Russian: Andrey Korotaev <<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>>, Vitaly Novichkov <<a href="mailto:admin@wohlnet.ru">admin@wohlnet.ru</a>>, Anton Malmygin <<a href="mailto:antonc27@mail.ru">antonc27@mail.ru</a>><br>
Slovak: Jose Riha<br>
Spanish: Carlos Vives <<a href="mailto:mail@carlosvives.es">mail@carlosvives.es</a>><br>
Swedish: Niklas Grahn <<a href="mailto:raewolusjoon@yaoo.com">raewolusjoon@yaoo.com</a>>, Henrik Rostedt <<a href="mailto:henrik.rostedt@gmail.com">henrik.rostedt@gmail.com</a>><br>
--- a/QTfrontend/util/LibavInteraction.cpp Tue Oct 06 13:28:11 2015 +0200
+++ b/QTfrontend/util/LibavInteraction.cpp Mon Nov 09 16:34:03 2015 +0000
@@ -21,7 +21,9 @@
#if VIDEOREC
extern "C"
{
+#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
+#include "libavutil/avutil.h"
}
#include <QVector>
@@ -30,13 +32,25 @@
#include "HWApplication.h"
-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 25, 0)
-#define CodecID AVCodecID
+// compatibility section
+#if LIBAVCODEC_VERSION_MAJOR < 55
+#define av_codec_is_encoder(x) x->encode
+#define AVCodecID CodecID
+#endif
+
+#if LIBAVFORMAT_VERSION_MAJOR < 54
+#define avformat_find_stream_info(x, y) av_find_stream_info(x)
+#define avformat_close_input(x) av_close_input_file(*(x))
+#endif
+
+#if LIBAVUTIL_VERSION_MAJOR < 54
+#define AVPixelFormat PixelFormat
+#define AV_PIX_FMT_YUV420P PIX_FMT_YUV420P
#endif
struct Codec
{
- CodecID id;
+ AVCodecID id;
bool isAudio;
QString shortName; // used for identification
QString longName; // used for displaying to user
@@ -56,7 +70,7 @@
QMap<QString,Format> formats;
// test if given format supports given codec
-bool FormatQueryCodec(AVOutputFormat *ofmt, enum CodecID codec_id)
+bool FormatQueryCodec(AVOutputFormat *ofmt, enum AVCodecID codec_id)
{
#if LIBAVFORMAT_VERSION_MAJOR >= 54
return avformat_query_codec(ofmt, codec_id, FF_COMPLIANCE_NORMAL) == 1;
@@ -76,11 +90,7 @@
AVCodec* pCodec = NULL;
while ((pCodec = av_codec_next(pCodec)))
{
-#if LIBAVCODEC_VERSION_MAJOR >= 54
if (!av_codec_is_encoder(pCodec))
-#else
- if (!pCodec->encode)
-#endif
continue;
if (pCodec->type != AVMEDIA_TYPE_VIDEO && pCodec->type != AVMEDIA_TYPE_AUDIO)
@@ -106,8 +116,8 @@
if (!pCodec->pix_fmts)
continue;
bool yuv420Supported = false;
- for (const PixelFormat* pfmt = pCodec->pix_fmts; *pfmt != -1; pfmt++)
- if (*pfmt == PIX_FMT_YUV420P)
+ for (const enum AVPixelFormat* pfmt = pCodec->pix_fmts; *pfmt != -1; pfmt++)
+ if (*pfmt == AV_PIX_FMT_YUV420P)
{
yuv420Supported = true;
break;
@@ -121,7 +131,7 @@
if (!pCodec->sample_fmts)
continue;
bool s16Supported = false;
- for (const AVSampleFormat* pfmt = pCodec->sample_fmts; *pfmt != -1; pfmt++)
+ for (const enum AVSampleFormat* pfmt = pCodec->sample_fmts; *pfmt != -1; pfmt++)
if (*pfmt == AV_SAMPLE_FMT_S16)
{
s16Supported = true;
@@ -274,11 +284,7 @@
QByteArray utf8path = filepath.toUtf8();
if (avformat_open_input(&pContext, utf8path.data(), NULL, NULL) < 0)
return "";
-#if LIBAVFORMAT_VERSION_MAJOR < 53
- if (av_find_stream_info(pContext) < 0)
-#else
if (avformat_find_stream_info(pContext, NULL) < 0)
-#endif
return "";
int s = float(pContext->duration)/AV_TIME_BASE;
@@ -312,11 +318,7 @@
AVDictionaryEntry* pComment = av_dict_get(pContext->metadata, "comment", NULL, 0);
if (pComment)
desc += QString("\n") + pComment->value;
-#if LIBAVFORMAT_VERSION_MAJOR < 53
- av_close_input_file(pContext);
-#else
avformat_close_input(&pContext);
-#endif
return desc;
}
--- a/README Tue Oct 06 13:28:11 2015 +0200
+++ b/README Mon Nov 09 16:34:03 2015 +0000
@@ -1,46 +1,1 @@
-Hedgewars - a turn based strategy game.
-=======================================
-
-Copyright 2004-2015 Andrey Korotaev <unC0Rr@gmail.com> and others.
-See QTfrontend/res/html/about.html and CREDITS for a complete list of authors.
-
-Licence:
---------
-Source code is distributed under the terms of the GNU General Public Licence
-version 2; images and sounds are distributed under the terms of the GNU Free
-Documentation Licence version 1.2. See the COPYING file for the full text of
-the licenses.
-
-Instructions:
--------------
-See our wiki at: https://code.google.com/p/hedgewars/wiki/BuildingHedgewars
-
-You can find an outline of the necessary dependencies in the INSTALL file.
-
-Source code:
-------------
-Our main repository is located at http://hedgewars.googlecode.com using
-Mercurial as DVCS. A Git repository is also available (mirrored daily)
-at https://github.com/hedgewars/hw
-
-Contribute:
------------
-If you see a bug or have any suggestion please use the official bug tracker at
-http://code.google.com/p/hedgewars/issues/list or the integrated feedback
-button.
-
-If you want to help or get to know the sources better you can do that with some
-easy tasks from http://code.google.com/p/hedgewars/wiki/TODO. We also have an
-extended API in LUA to customize your adventures in our wiki at
-http://code.google.com/p/hedgewars/wiki/LuaAPI.
-
-If you know your way through the code feel free to send a patch or open a pull
-request. The best LUA scripts get released in the official DLC page and later
-integrated in the next version.
-
-Contact:
---------
-* IRC channel - irc://irc.freenode.net/hedgewars
-* community forum - http://www.hedgewars.org/forum
-* mailing list - https://mail.gna.org/listinfo/hedgewars-dev
-
+README.md
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,46 @@
+Hedgewars - a turn based strategy game.
+=======================================
+
+Copyright 2004-2015 Andrey Korotaev <unC0Rr@gmail.com> and others.
+See QTfrontend/res/html/about.html and CREDITS for a complete list of authors.
+
+Licence:
+--------
+Source code is distributed under the terms of the GNU General Public Licence
+version 2; images and sounds are distributed under the terms of the GNU Free
+Documentation Licence version 1.2. See the COPYING file for the full text of
+the licenses.
+
+Instructions:
+-------------
+See our wiki at: http://hedgewars.org/kb/BuildingHedgewars
+
+You can find an outline of the necessary dependencies in the INSTALL file.
+
+Source code:
+------------
+Our main repository is located at http://hg.hedgewars.org/hedgewars/ using
+Mercurial as DVCS. A Git repository is also available (mirrored daily)
+at https://github.com/hedgewars/hw
+
+Contribute:
+-----------
+If you see a bug or have any suggestion please use the official bug tracker at
+http://code.google.com/p/hedgewars/issues/list or the integrated feedback
+button.
+
+If you want to help or get to know the sources better you can do that with some
+easy tasks from http://hedgewars.org/kb/TODO. We also have an
+extended API in LUA to customize your adventures in our wiki at
+http://hedgewars.org/kb/LuaAPI.
+
+If you know your way through the code feel free to send a patch or open a pull
+request. The best LUA scripts get released in the official DLC page and later
+integrated in the next version.
+
+Contact:
+--------
+* IRC channel - irc://irc.freenode.net/hedgewars
+* community forum - http://www.hedgewars.org/forum
+* mailing list - https://mail.gna.org/listinfo/hedgewars-dev
+
--- a/gameServer/Actions.hs Tue Oct 06 13:28:11 2015 +0200
+++ b/gameServer/Actions.hs Mon Nov 09 16:34:03 2015 +0000
@@ -757,15 +757,16 @@
processAction (CheckFailed msg) = do
- Just (CheckInfo fileName _) <- client's checkInfo
+ Just (CheckInfo fileName _ _) <- client's checkInfo
io $ moveFailedRecord fileName
processAction (CheckSuccess info) = do
- Just (CheckInfo fileName teams) <- client's checkInfo
+ Just (CheckInfo fileName teams gameDetails) <- client's checkInfo
p <- client's clientProto
si <- gets serverInfo
- io $ writeChan (dbQueries si) $ StoreAchievements p (B.pack fileName) (map toPair teams) info
+ when (isJust gameDetails)
+ $ io $ writeChan (dbQueries si) $ StoreAchievements p (B.pack fileName) (map toPair teams) (fromJust gameDetails) info
io $ moveCheckedRecord fileName
where
toPair t = (teamname t, teamowner t)
--- a/gameServer/CoreTypes.hs Tue Oct 06 13:28:11 2015 +0200
+++ b/gameServer/CoreTypes.hs Mon Nov 09 16:34:03 2015 +0000
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\-}
-{-# LANGUAGE CPP, OverloadedStrings, DeriveDataTypeable #-}
+{-# LANGUAGE CPP, OverloadedStrings, DeriveDataTypeable, GeneralizedNewtypeDeriving #-}
module CoreTypes where
import Control.Concurrent
@@ -119,7 +119,8 @@
CheckInfo
{
recordFileName :: String,
- recordTeams :: [TeamInfo]
+ recordTeams :: [TeamInfo],
+ details :: Maybe GameDetails
}
data ClientInfo =
@@ -303,8 +304,8 @@
ServerInfo
True
"<h2><p align=center><a href=\"http://www.hedgewars.org/\">http://www.hedgewars.org/</a></p></h2>"
- "<font color=yellow><h3 align=center>Hedgewars 0.9.19 is out! Please update.</h3><p align=center><a href=http://hedgewars.org/download.html>Download page here</a></font>"
- 47 -- latestReleaseVersion
+ "<font color=yellow><h3 align=center>Hedgewars 0.9.22 is out! Please update.</h3><p align=center><a href=http://hedgewars.org/download.html>Download page here</a></font>"
+ 51 -- latestReleaseVersion
41 -- earliestCompatibleVersion
46631
""
@@ -345,10 +346,21 @@
CheckAccount ClientIndex Int B.ByteString B.ByteString
| ClearCache
| SendStats Int Int
- | StoreAchievements Word16 B.ByteString [(B.ByteString, B.ByteString)] [B.ByteString]
+ | StoreAchievements Word16 B.ByteString [(B.ByteString, B.ByteString)] GameDetails [B.ByteString]
| GetReplayName ClientIndex Int B.ByteString
deriving (Show, Read)
+data GameDetails =
+ GameDetails {
+ gameScript :: B.ByteString
+ , infRope
+ , isVamp
+ , infAttacks :: Bool
+ } deriving (Show, Read)
+
+instance NFData GameDetails where
+ rnf (GameDetails a b c d) = a `deepseq` b `deepseq` c `deepseq` d `deepseq` ()
+
data CoreMessage =
Accept ClientInfo
| ClientMessage (ClientIndex, [B.ByteString])
--- a/gameServer/EngineInteraction.hs Tue Oct 06 13:28:11 2015 +0200
+++ b/gameServer/EngineInteraction.hs Mon Nov 09 16:34:03 2015 +0000
@@ -100,8 +100,8 @@
-> Map.Map B.ByteString B.ByteString
-> Map.Map B.ByteString [B.ByteString]
-> [B.ByteString]
- -> [B.ByteString]
-replayToDemo ti mParams prms msgs = if not sane then [] else concat [
+ -> (Maybe GameDetails, [B.ByteString])
+replayToDemo ti mParams prms msgs = if not sane then (Nothing, []) else (Just $ GameDetails scriptName infRopes vamp infattacks, concat [
[em "TD"]
, maybeScript
, maybeMap
@@ -117,7 +117,7 @@
, concatMap teamSetup ti
, msgs
, [em "!"]
- ]
+ ])
where
keys1, keys2 :: Set.Set B.ByteString
keys1 = Set.fromList ["FEATURE_SIZE", "MAP", "MAPGEN", "MAZE_SIZE", "SEED", "TEMPLATE"]
@@ -126,8 +126,10 @@
&& Set.null (keys2 Set.\\ Map.keysSet prms)
&& (not . null . drop 41 $ scheme)
&& (not . null . tail $ prms Map.! "AMMO")
+ && ((B.length . head . tail $ prms Map.! "AMMO") > 200)
mapGenTypes = ["+rnd+", "+maze+", "+drawn+", "+perlin+"]
- maybeScript = let s = head . fromMaybe ["Normal"] $ Map.lookup "SCRIPT" prms in if s == "Normal" then [] else [eml ["escript Scripts/Multiplayer/", s, ".lua"]]
+ scriptName = head . fromMaybe ["Normal"] $ Map.lookup "SCRIPT" prms
+ maybeScript = let s = scriptName in if s == "Normal" then [] else [eml ["escript Scripts/Multiplayer/", s, ".lua"]]
maybeMap = let m = mParams Map.! "MAP" in if m `elem` mapGenTypes then [] else [eml ["emap ", m]]
scheme = tail $ prms Map.! "SCHEME"
mapgen = mParams Map.! "MAPGEN"
@@ -161,6 +163,9 @@
])
$ hedgehogs t
)
+ infRopes = ammoStr `B.index` 7 == '9'
+ vamp = gameFlags .&. 0x00000200 /= 0
+ infattacks = gameFlags .&. 0x00100000 /= 0
drawnMapData :: B.ByteString -> [B.ByteString]
drawnMapData =
--- a/gameServer/OfficialServer/GameReplayStore.hs Tue Oct 06 13:28:11 2015 +0200
+++ b/gameServer/OfficialServer/GameReplayStore.hs Mon Nov 09 16:34:03 2015 +0000
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\-}
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}
module OfficialServer.GameReplayStore where
import Data.Time
@@ -70,11 +70,12 @@
where
loadFile :: String -> IO (Maybe CheckInfo, [B.ByteString])
loadFile fileName = E.handle (\(e :: SomeException) ->
- warningM "REPLAYS" ("Problems reading " ++ fileName ++ ": " ++ show e) >> return (Just $ CheckInfo fileName [], [])) $ do
+ warningM "REPLAYS" ("Problems reading " ++ fileName ++ ": " ++ show e) >> return (Just $ CheckInfo fileName [] Nothing, [])) $ do
(teams, params1, params2, roundMsgs) <- liftM read $ readFile fileName
- return $ (
- Just (CheckInfo fileName teams)
- , let d = replayToDemo teams (Map.fromList params1) (Map.fromList params2) (reverse roundMsgs) in d `deepseq` d
+ let d = replayToDemo teams (Map.fromList params1) (Map.fromList params2) (reverse roundMsgs)
+ d `deepseq` return $ (
+ Just (CheckInfo fileName teams (fst d))
+ , snd d
)
moveFailedRecord :: String -> IO ()
--- a/gameServer/OfficialServer/extdbinterface.hs Tue Oct 06 13:28:11 2015 +0200
+++ b/gameServer/OfficialServer/extdbinterface.hs Mon Nov 09 16:34:03 2015 +0000
@@ -28,9 +28,10 @@
import Database.MySQL.Simple
import Database.MySQL.Simple.QueryResults
import Database.MySQL.Simple.Result
-import Data.List (lookup)
+import Data.List (lookup, elem)
import qualified Data.ByteString.Char8 as B
import Data.Word
+import Data.Int
--------------------------
import CoreTypes
import Utils
@@ -50,6 +51,15 @@
\ VALUES (?, (SELECT id FROM achievement_types WHERE name = ?), (SELECT uid FROM users WHERE name = ?), \
\ ?, ?, ?, ?)"
+dbQueryGamesHistory =
+ "INSERT INTO rating_games (script, protocol, filename, time, vamp, ropes, infattacks) \
+ \ VALUES (?, ?, ?, ?, ?, ?, ?)"
+
+dbQueryGameId = "SELECT LAST_INSERT_ID()"
+
+dbQueryGamesHistoryPlaces = "INSERT INTO rating_players (userid, gameid, place) \
+ \ VALUES ((SELECT uid FROM users WHERE name = ?), ?, ?)"
+
dbQueryReplayFilename = "SELECT filename FROM achievements WHERE id = ?"
@@ -83,36 +93,54 @@
SendStats clients rooms ->
void $ execute dbConn dbQueryStats (clients, rooms)
- StoreAchievements p fileName teams info ->
- mapM_ (execute dbConn dbQueryAchievement) $ (parseStats p fileName teams) info
+ StoreAchievements p fileName teams g info ->
+ sequence_ $ parseStats dbConn p fileName teams g info
--readTime = read . B.unpack . B.take 19 . B.drop 8
readTime = B.take 19 . B.drop 8
parseStats ::
- Word16
+ Connection
+ -> Word16
-> B.ByteString
-> [(B.ByteString, B.ByteString)]
- -> [B.ByteString]
- -> [(B.ByteString, B.ByteString, B.ByteString, Int, B.ByteString, B.ByteString, Int)]
-parseStats p fileName teams = ps
+ -> GameDetails
+ -> [B.ByteString]
+ -> [IO Int64]
+parseStats dbConn p fileName teams (GameDetails script infRopes vamp infAttacks) = ps
where
time = readTime fileName
+ ps :: [B.ByteString] -> [IO Int64]
ps [] = []
- ps ("DRAW" : bs) = ps bs
- ps ("WINNERS" : n : bs) = ps $ drop (readInt_ n) bs
- ps ("ACHIEVEMENT" : typ : teamname : location : value : bs) =
+ ps ("DRAW" : bs) = execute dbConn dbQueryGamesHistory (script, (fromIntegral p) :: Int, fileName, time, vamp, infRopes, infAttacks)
+ : places (map drawParams teams)
+ : ps bs
+ ps ("WINNERS" : n : bs) = let winNum = readInt_ n in execute dbConn dbQueryGamesHistory (script, (fromIntegral p) :: Int, fileName, time, vamp, infRopes, infAttacks)
+ : places (map (placeParams (take winNum bs)) teams)
+ : ps (drop winNum bs)
+ ps ("ACHIEVEMENT" : typ : teamname : location : value : bs) = execute dbConn dbQueryAchievement
( time
, typ
, fromMaybe "" (lookup teamname teams)
- , readInt_ value
+ , (readInt_ value) :: Int
, fileName
, location
- , fromIntegral p
+ , (fromIntegral p) :: Int
) : ps bs
ps (b:bs) = ps bs
-
+ drawParams t = (snd t, 0 :: Int)
+ placeParams winners t = (snd t, if (fst t) `elem` winners then 1 else 2 :: Int)
+ places :: [(B.ByteString, Int)] -> IO Int64
+ places params = do
+ res <- query_ dbConn dbQueryGameId
+ let gameId = case res of
+ [Only a] -> a
+ _ -> 0
+ mapM_ (execute dbConn dbQueryGamesHistoryPlaces . midInsert gameId) params
+ return 0
+ midInsert :: Int -> (a, b) -> (a, Int, b)
+ midInsert g (a, b) = (a, g, b)
dbConnectionLoop mySQLConnectionInfo =
Control.Exception.handle (\(e :: SomeException) -> hPutStrLn stderr $ show e) $
--- a/gameServer/Utils.hs Tue Oct 06 13:28:11 2015 +0200
+++ b/gameServer/Utils.hs Mon Nov 09 16:34:03 2015 +0000
@@ -115,6 +115,8 @@
, (48, "0.9.21-dev")
, (49, "0.9.21")
, (50, "0.9.22-dev")
+ , (51, "0.9.22")
+ , (52, "0.9.23-dev")
]
askFromConsole :: B.ByteString -> IO B.ByteString
--- a/hedgewars/CMakeLists.txt Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/CMakeLists.txt Mon Nov 09 16:34:03 2015 +0000
@@ -137,7 +137,7 @@
if(${sdl_framework} GREATER -1)
add_flag_append(CMAKE_Pascal_FLAGS "-k-lsdl -k-lsdl_image -k-lsdl_mixer -k-lsdl_ttf -k-lsdl_net")
else()
- add_flag_append(CMAKE_Pascal_FLAGS "-k-framework -kSDL -k-framework -kSDL_image -k-framework -k SDL_mixer -k-framework -k SDL_net -k-framework -kSDL_net")
+ add_flag_append(CMAKE_Pascal_FLAGS "-k-framework -kSDL -k-framework -kSDL_image -k-framework -kSDL_mixer -k-framework -kSDL_net -k-framework -kSDL_net -k-framework -kSDL_ttf")
endif()
endif()
--- a/hedgewars/avwrapper/avwrapper.c Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/avwrapper/avwrapper.c Mon Nov 09 16:34:03 2015 +0000
@@ -21,13 +21,12 @@
#include <stdint.h>
#include <string.h>
#include <stdarg.h>
+
+#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
+#include "libavutil/avutil.h"
#include "libavutil/mathematics.h"
-#ifndef AVIO_FLAG_WRITE
-#define AVIO_FLAG_WRITE AVIO_WRONLY
-#endif
-
#if (defined _MSC_VER)
#define AVWRAP_DECL __declspec(dllexport)
#elif ((__GNUC__ >= 3) && (!__EMX__) && (!sun))
@@ -57,11 +56,38 @@
static int g_NumSamples;
+// compatibility section
#if LIBAVCODEC_VERSION_MAJOR < 54
#define OUTBUFFER_SIZE 200000
static uint8_t g_OutBuffer[OUTBUFFER_SIZE];
+#define avcodec_open2(x, y, z) avcodec_open(x, y)
#endif
+#if LIBAVCODEC_VERSION_MAJOR < 56
+#define av_frame_alloc avcodec_alloc_frame
+#define av_frame_free av_freep
+#endif
+
+#if LIBAVCODEC_VERSION_MAJOR < 57
+#define AV_CODEC_CAP_DELAY CODEC_CAP_DELAY
+#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE CODEC_CAP_VARIABLE_FRAME_SIZE
+#define AV_CODEC_FLAG_GLOBAL_HEADER CODEC_FLAG_GLOBAL_HEADER
+#define AV_CODEC_FLAG_QSCALE CODEC_FLAG_QSCALE
+#endif
+
+#if LIBAVFORMAT_VERSION_MAJOR < 53
+#define AVIO_FLAG_WRITE AVIO_WRONLY
+#endif
+
+#if LIBAVFORMAT_VERSION_MAJOR < 54
+#define avformat_new_stream(x, y) av_new_stream(x, y->type == AVMEDIA_TYPE_AUDIO)
+#endif
+
+#if LIBAVUTIL_VERSION_MAJOR < 54
+#define AV_PIX_FMT_YUV420P PIX_FMT_YUV420P
+#endif
+
+
// pointer to function from hwengine (uUtils.pas)
static void (*AddFileLogRaw)(const char* pString);
@@ -105,11 +131,7 @@
static void AddAudioStream()
{
-#if LIBAVFORMAT_VERSION_MAJOR >= 53
g_pAStream = avformat_new_stream(g_pContainer, g_pACodec);
-#else
- g_pAStream = av_new_stream(g_pContainer, 1);
-#endif
if(!g_pAStream)
{
Log("Could not allocate audio stream\n");
@@ -131,26 +153,22 @@
g_pAudio->bit_rate = 160000;
// for codecs that support variable bitrate use it, it should be better
- g_pAudio->flags |= CODEC_FLAG_QSCALE;
+ g_pAudio->flags |= AV_CODEC_FLAG_QSCALE;
g_pAudio->global_quality = 1*FF_QP2LAMBDA;
// some formats want stream headers to be separate
if (g_pFormat->flags & AVFMT_GLOBALHEADER)
- g_pAudio->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ g_pAudio->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
// open it
-#if LIBAVCODEC_VERSION_MAJOR >= 53
if (avcodec_open2(g_pAudio, g_pACodec, NULL) < 0)
-#else
- if (avcodec_open(g_pAudio, g_pACodec) < 0)
-#endif
{
Log("Could not open audio codec %s\n", g_pACodec->long_name);
return;
}
#if LIBAVCODEC_VERSION_MAJOR >= 54
- if (g_pACodec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE)
+ if (g_pACodec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE)
#else
if (g_pAudio->frame_size == 0)
#endif
@@ -158,7 +176,7 @@
else
g_NumSamples = g_pAudio->frame_size;
g_pSamples = (int16_t*)av_malloc(g_NumSamples*g_Channels*sizeof(int16_t));
- g_pAFrame = avcodec_alloc_frame();
+ g_pAFrame = av_frame_alloc();
if (!g_pAFrame)
{
Log("Could not allocate frame\n");
@@ -172,7 +190,7 @@
if (!g_pAStream)
return 0;
- AVPacket Packet = { 0 };
+ AVPacket Packet;
av_init_packet(&Packet);
int NumSamples = fread(g_pSamples, 2*g_Channels, g_NumSamples, g_pSoundFile);
@@ -217,11 +235,7 @@
// add a video output stream
static int AddVideoStream()
{
-#if LIBAVFORMAT_VERSION_MAJOR >= 53
g_pVStream = avformat_new_stream(g_pContainer, g_pVCodec);
-#else
- g_pVStream = av_new_stream(g_pContainer, 0);
-#endif
if (!g_pVStream)
return FatalError("Could not allocate video stream");
@@ -241,20 +255,20 @@
g_pVideo->time_base.den = g_Framerate.num;
g_pVideo->time_base.num = g_Framerate.den;
//g_pVideo->gop_size = 12; /* emit one intra frame every twelve frames at most */
- g_pVideo->pix_fmt = PIX_FMT_YUV420P;
+ g_pVideo->pix_fmt = AV_PIX_FMT_YUV420P;
// set quality
if (g_VQuality > 100)
g_pVideo->bit_rate = g_VQuality;
else
{
- g_pVideo->flags |= CODEC_FLAG_QSCALE;
+ g_pVideo->flags |= AV_CODEC_FLAG_QSCALE;
g_pVideo->global_quality = g_VQuality*FF_QP2LAMBDA;
}
// some formats want stream headers to be separate
if (g_pFormat->flags & AVFMT_GLOBALHEADER)
- g_pVideo->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ g_pVideo->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
#if LIBAVCODEC_VERSION_MAJOR < 53
// for some versions of ffmpeg x264 options must be set explicitly
@@ -288,18 +302,10 @@
#endif
// open the codec
-#if LIBAVCODEC_VERSION_MAJOR >= 53
- AVDictionary* pDict = NULL;
- if (strcmp(g_pVCodec->name, "libx264") == 0)
- av_dict_set(&pDict, "preset", "medium", 0);
-
- if (avcodec_open2(g_pVideo, g_pVCodec, &pDict) < 0)
-#else
- if (avcodec_open(g_pVideo, g_pVCodec) < 0)
-#endif
+ if (avcodec_open2(g_pVideo, g_pVCodec, NULL) < 0)
return FatalError("Could not open video codec %s", g_pVCodec->long_name);
- g_pVFrame = avcodec_alloc_frame();
+ g_pVFrame = av_frame_alloc();
if (!g_pVFrame)
return FatalError("Could not allocate frame");
@@ -317,10 +323,10 @@
// write interleaved audio frame
if (g_pAStream)
{
- VideoTime = (double)g_pVStream->pts.val*g_pVStream->time_base.num/g_pVStream->time_base.den;
+ VideoTime = (double)g_pVFrame->pts * g_pVStream->time_base.num/g_pVStream->time_base.den;
do
{
- AudioTime = (double)g_pAStream->pts.val*g_pAStream->time_base.num/g_pAStream->time_base.den;
+ AudioTime = (double)g_pAFrame->pts * g_pAStream->time_base.num/g_pAStream->time_base.den;
ret = WriteAudioFrame();
}
while (AudioTime < VideoTime && ret);
@@ -496,7 +502,7 @@
{
int ret;
// output buffered frames
- if (g_pVCodec->capabilities & CODEC_CAP_DELAY)
+ if (g_pVCodec->capabilities & AV_CODEC_CAP_DELAY)
{
do
ret = WriteFrame(NULL);
@@ -526,14 +532,14 @@
avcodec_close(g_pVideo);
av_free(g_pVideo);
av_free(g_pVStream);
- av_free(g_pVFrame);
+ av_frame_free(&g_pVFrame);
}
if (g_pAStream)
{
avcodec_close(g_pAudio);
av_free(g_pAudio);
av_free(g_pAStream);
- av_free(g_pAFrame);
+ av_frame_free(&g_pAFrame);
av_free(g_pSamples);
fclose(g_pSoundFile);
}
--- a/hedgewars/uGears.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uGears.pas Mon Nov 09 16:34:03 2015 +0000
@@ -320,6 +320,7 @@
Ammoz[amTardis].Probability:= 0;
end;
AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState);
+ ScriptCall('onSuddenDeath');
playSound(sndSuddenDeath);
StopMusic;
if SDMusicFN <> '' then PlayMusic
--- a/hedgewars/uGearsHandlersMess.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uGearsHandlersMess.pas Mon Nov 09 16:34:03 2015 +0000
@@ -1094,6 +1094,7 @@
AllInactive := false;
Gear^.X := Gear^.X + Gear^.dX;
Gear^.Y := Gear^.Y + Gear^.dY;
+ WorldWrap(Gear);
Gear^.dY := Gear^.dY + cGravity;
CheckGearDrowning(Gear);
CheckCollision(Gear);
@@ -1959,7 +1960,7 @@
if land = 0 then land:= TestCollisionYwithGear(Gear,-2);
if land = 0 then land:= TestCollisionXwithGear(Gear,-2);
if land = 0 then land:= TestCollisionYwithGear(Gear, 2);
- if (land <> 0) and (land and lfBouncy = 0) then
+ if (land <> 0) and ((land and lfBouncy = 0) or ((Gear^.State and gstMoving) = 0)) then
begin
if ((Gear^.State and gstMoving) <> 0) or (not isZero(Gear^.dX)) or (not isZero(Gear^.dY)) then
begin
@@ -5197,7 +5198,9 @@
////////////////////////////////////////////////////////////////////////////////
procedure doStepPoisonCloud(Gear: PGear);
begin
- WorldWrap(Gear);
+ // don't bounce
+ if WorldEdge <> weBounce then
+ WorldWrap(Gear);
if Gear^.Timer = 0 then
begin
DeleteGear(Gear);
@@ -5253,13 +5256,12 @@
d:= 2
else
d:= 3;
- // always round up
- if dmg mod d > 0 then
- dmg:= dmg div d + 1
- else
- dmg:= dmg div d;
-
- ApplyDamage(tmp, CurrentHedgehog, dmg, dsUnknown);
+
+ // always rounding down
+ dmg:= dmg div d;
+
+ if dmg > 0 then
+ ApplyDamage(tmp, CurrentHedgehog, dmg, dsUnknown);
end;
end;
@@ -5429,7 +5431,7 @@
for i:= 0 to graves.size - 1 do
if graves.ar^[i]^.Health > 0 then
begin
- resgear := AddGear(hwRound(graves.ar^[i]^.X), hwRound(graves.ar^[i]^.Y), gtHedgehog, gstWait, _0, _0, 0);
+ resgear := AddGear(hwRound(graves.ar^[i]^.X), hwRound(graves.ar^[i]^.Y), gtHedgehog, gstWait, _0, _0, 0,graves.ar^[i]^.Pos);
resgear^.Hedgehog := graves.ar^[i]^.Hedgehog;
resgear^.Health := graves.ar^[i]^.Health;
PHedgehog(graves.ar^[i]^.Hedgehog)^.Gear := resgear;
--- a/hedgewars/uGearsHandlersRope.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uGearsHandlersRope.pas Mon Nov 09 16:34:03 2015 +0000
@@ -42,7 +42,8 @@
OutError('ERROR: doStepRopeAfterAttack called while HHGear = nil', IsNilHHFatal);
DeleteGear(Gear);
exit()
- end;
+ end
+ else if not CurrentTeam^.ExtDriven and (FollowGear <> nil) then FollowGear := HHGear;
tX:= HHGear^.X;
if WorldWrap(HHGear) and (WorldEdge = weWrap) and
@@ -137,7 +138,8 @@
OutError('ERROR: doStepRopeWork called while HHGear = nil', IsNilHHFatal);
DeleteGear(Gear);
exit()
- end;
+ end
+ else if not CurrentTeam^.ExtDriven and (FollowGear <> nil) then FollowGear := HHGear;
if ((HHGear^.State and gstHHDriven) = 0) or
(CheckGearDrowning(HHGear)) or (Gear^.PortalCounter <> 0) then
@@ -425,6 +427,7 @@
HHGear: PGear;
tx, ty, tt: hwFloat;
begin
+
Gear^.X := Gear^.X - Gear^.dX;
Gear^.Y := Gear^.Y - Gear^.dY;
Gear^.Elasticity := Gear^.Elasticity + _1;
@@ -435,7 +438,8 @@
OutError('ERROR: doStepRopeAttach called while HHGear = nil', IsNilHHFatal);
DeleteGear(Gear);
exit()
- end;
+ end
+ else if not CurrentTeam^.ExtDriven and (FollowGear <> nil) then FollowGear := HHGear;
DeleteCI(HHGear);
--- a/hedgewars/uGearsHedgehog.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uGearsHedgehog.pas Mon Nov 09 16:34:03 2015 +0000
@@ -572,6 +572,7 @@
procedure doStepHedgehogDead(Gear: PGear);
const frametime = 200;
timertime = frametime * 6;
+var grave: PGear;
begin
if Gear^.Hedgehog^.Unplaced then
exit;
@@ -587,7 +588,10 @@
Gear^.Hedgehog^.Effects[heFrozen]:= 0;
Gear^.State:= Gear^.State or gstNoDamage;
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, CurrentHedgehog, EXPLAutoSound);
- AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
+ grave:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0);
+ grave^.Hedgehog:= Gear^.Hedgehog;
+ grave^.Pos:= Gear^.uid;
+
DeleteGear(Gear);
SetAllToActive
end
@@ -906,6 +910,7 @@
end;
Gear^.State:= Gear^.State or gstMoving;
if (Gear^.State and gstHHDriven <> 0) and
+ (FollowGear <> nil) and
(not CurrentTeam^.ExtDriven) and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then
begin
// TODO: why so aggressive at setting FollowGear when falling?
--- a/hedgewars/uGearsList.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uGearsList.pas Mon Nov 09 16:34:03 2015 +0000
@@ -23,6 +23,7 @@
uses uFloat, uTypes, SDLh;
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear;
+function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer, newUid: LongWord): PGear;
procedure DeleteGear(Gear: PGear);
procedure InsertGearToList(Gear: PGear);
procedure RemoveGearFromList(Gear: PGear);
@@ -164,11 +165,16 @@
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear;
+begin
+AddGear:= AddGear(X, Y, Kind, State, dX, dY, Timer, 0);
+end;
+function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer, newUid: LongWord): PGear;
var gear: PGear;
//c: byte;
cakeData: PCakeData;
begin
-inc(GCounter);
+if newUid = 0 then
+ inc(GCounter);
AddFileLog('AddGear: #' + inttostr(GCounter) + ' (' + inttostr(x) + ',' + inttostr(y) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + EnumToStr(Kind));
@@ -186,7 +192,9 @@
gear^.doStep:= doStepHandlers[Kind];
gear^.CollisionIndex:= -1;
gear^.Timer:= Timer;
-gear^.uid:= GCounter;
+if newUid = 0 then
+ gear^.uid:= GCounter
+else gear^.uid:= newUid;
gear^.SoundChannel:= -1;
gear^.ImpactSound:= sndNone;
gear^.Density:= _1;
--- a/hedgewars/uLandGenTemplateBased.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uLandGenTemplateBased.pas Mon Nov 09 16:34:03 2015 +0000
@@ -9,7 +9,7 @@
var minDistance, dabDiv: LongInt; // different details size
implementation
-uses uVariables, uConsts, uFloat, uLandUtils, uRandom, SDLh, math;
+uses uVariables, uTypes, uConsts, uFloat, uLandUtils, uRandom, SDLh, math;
procedure SetPoints(var Template: TEdgeTemplate; var pa: TPixAr; fps: PPointArray);
@@ -327,6 +327,9 @@
DivideEdges(Template.FillPointsCount, pa)
until i = pa.Count;
+{$IFDEF IPHONEOS}
+ if GameType <> gmtLandPreview then
+{$ENDIF}
// make it smooth
BezierizeEdge(pa, _0_2);
end;
--- a/hedgewars/uLocale.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uLocale.pas Mon Nov 09 16:34:03 2015 +0000
@@ -138,11 +138,13 @@
PathPrefix := Strpas(path);
uUtils.initModule(false);
+ uVariables.initModule;
uPhysFSLayer.initModule;
LoadLocale(Strpas(filename));
uPhysFSLayer.freeModule;
+ uVariables.freeModule;
uUtils.freeModule;
end;
{$ENDIF}
--- a/hedgewars/uScript.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uScript.pas Mon Nov 09 16:34:03 2015 +0000
@@ -644,7 +644,9 @@
begin
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2),
AmmoCrate, lua_toboolean(L, 3), lua_toboolean(L, 4));
- lua_pushinteger(L, gear^.uid);
+ if gear <> nil then
+ lua_pushinteger(L, gear^.uid)
+ else lua_pushnil(L)
end
else
lua_pushnil(L);
@@ -658,7 +660,9 @@
begin
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2),
UtilityCrate, lua_toboolean(L, 3), lua_toboolean(L, 4));
- lua_pushinteger(L, gear^.uid);
+ if gear <> nil then
+ lua_pushinteger(L, gear^.uid)
+ else lua_pushnil(L)
end
else
lua_pushnil(L);
@@ -677,9 +681,8 @@
health:= cHealthCaseAmount;
gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), HealthCrate, health, 0);
if gear <> nil then
- lua_pushinteger(L, gear^.uid)
- else
- lua_pushnil(L);
+ lua_pushinteger(L, gear^.uid)
+ else lua_pushnil(L);
end
else
lua_pushnil(L);
@@ -696,9 +699,8 @@
gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), AmmoCrate, lua_tointeger(L, 3), 0)
else gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), AmmoCrate, lua_tointeger(L, 3), lua_tointeger(L, 4));
if gear <> nil then
- lua_pushinteger(L, gear^.uid)
- else
- lua_pushnil(L);
+ lua_pushinteger(L, gear^.uid)
+ else lua_pushnil(L);
end
else
lua_pushnil(L);
@@ -715,9 +717,8 @@
gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), UtilityCrate, lua_tointeger(L, 3), 0)
else gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), UtilityCrate, lua_tointeger(L, 3), lua_tointeger(L, 4));
if gear <> nil then
- lua_pushinteger(L, gear^.uid)
- else
- lua_pushnil(L);
+ lua_pushinteger(L, gear^.uid)
+ else lua_pushnil(L);
end
else
lua_pushnil(L);
--- a/hedgewars/uSound.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uSound.pas Mon Nov 09 16:34:03 2015 +0000
@@ -301,7 +301,7 @@
end;
procedure InitSound;
-const channels: LongInt = {$IFDEF MOBILE}1{$ELSE}2{$ENDIF};
+const channels: LongInt = 2;
var success: boolean;
begin
if not (isSoundEnabled or isMusicEnabled) then
--- a/hedgewars/uTouch.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uTouch.pas Mon Nov 09 16:34:03 2015 +0000
@@ -296,7 +296,7 @@
end;
if targetting then
- AddCaption('Press the target button to mark the target', cWhiteColor, capgrpAmmoInfo);
+ AddCaption(trmsg[sidPressTarget], cWhiteColor, capgrpAmmoInfo);
deleteFinger(pointerId);
end;
--- a/hedgewars/uTypes.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uTypes.pas Mon Nov 09 16:34:03 2015 +0000
@@ -61,6 +61,7 @@
{$IFDEF USE_TOUCH_INTERFACE}
sprFireButton, sprArrowUp, sprArrowDown, sprArrowLeft, sprArrowRight,
sprJumpWidget, sprAMWidget, sprPauseButton, sprTimerButton, sprTargetButton,
+ sprSwitchButton,
{$ENDIF}
sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun,
sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer,
@@ -455,7 +456,7 @@
sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync,
sidNoEndTurn, sidNotYetAvailable, sidRoundSD, sidRoundsSD, sidReady,
sidBounce1, sidBounce2, sidBounce3, sidBounce4, sidBounce5, sidBounce,
- sidMute, sidAFK, sidAutoCameraOff, sidAutoCameraOn);
+ sidMute, sidAFK, sidAutoCameraOff, sidAutoCameraOn, sidPressTarget);
// Events that are important for the course of the game or at least interesting for other reasons
TEventId = (eidDied, eidDrowned, eidRoundStart, eidRoundWin, eidRoundDraw,
--- a/hedgewars/uVariables.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uVariables.pas Mon Nov 09 16:34:03 2015 +0000
@@ -441,10 +441,12 @@
Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprJumpWidget
(FileName: 'pause'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 120; Height: 100; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprPauseButton
- (FileName: 'pause'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil;//TODO correct image
- Width: 120; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprTimerButton
- (FileName: 'forwardjump'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil;//TODO correct image
- Width: 120; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprTargetButton
+ (FileName: 'timerbutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil;
+ Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprTimerButton
+ (FileName: 'targetbutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil;
+ Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprTargetButton
+ (FileName: 'switchbutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil;
+ Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprSwitchButton
{$ENDIF}
(FileName: 'Flake'; Path:ptCurrTheme; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlake
@@ -1363,7 +1365,7 @@
NameTex: nil;
Probability: 100;
NumberInCase: 4;
- Ammo: (Propz: 0;
+ Ammo: (Propz: ammoprop_NeedUpDown;
Count: 4;
NumPerTurn: 0;
Timer: 0;
@@ -2154,6 +2156,7 @@
NumberInCase: 1;
Ammo: (Propz: ammoprop_Power or
ammoprop_AltUse or
+ ammoprop_NeedUpDown or
ammoprop_NoRoundEnd;
Count: 2;
NumPerTurn: 0;
@@ -2235,6 +2238,7 @@
Probability: 20;
NumberInCase: 1;
Ammo: (Propz: ammoprop_NoRoundEnd or
+ ammoprop_NeedUpDown or
ammoprop_Utility;
Count: 1;
NumPerTurn: 0;
--- a/hedgewars/uWorld.pas Tue Oct 06 13:28:11 2015 +0200
+++ b/hedgewars/uWorld.pas Mon Nov 09 16:34:03 2015 +0000
@@ -1930,7 +1930,7 @@
ammoType:= CurrentHedgehog^.CurAmmoType;
if(CurrentHedgehog <> nil)then
- if (Ammoz[ammoType].Ammo.Propz and ammoprop_Timerable) <> 0 then
+ if ((Ammoz[ammoType].Ammo.Propz and ammoprop_Timerable) <> 0) and (ammoType <> amDrillStrike) then
begin
utilityWidget.sprite:= sprTimerButton;
animateWidget(@utilityWidget, true, true);
@@ -1942,7 +1942,7 @@
end
else if ammoType = amSwitch then
begin
- utilityWidget.sprite:= sprTargetButton;
+ utilityWidget.sprite:= sprSwitchButton;
animateWidget(@utilityWidget, true, true);
end
else if utilityWidget.show then
--- a/misc/liblua/Xcode/Lua.xcodeproj/project.pbxproj Tue Oct 06 13:28:11 2015 +0200
+++ b/misc/liblua/Xcode/Lua.xcodeproj/project.pbxproj Mon Nov 09 16:34:03 2015 +0000
@@ -290,7 +290,7 @@
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0640;
+ LastUpgradeCheck = 0710;
};
buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "Lua" */;
compatibilityVersion = "Xcode 3.2";
@@ -398,6 +398,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
--- a/misc/libphysfs/Xcode/Physfs.xcodeproj/project.pbxproj Tue Oct 06 13:28:11 2015 +0200
+++ b/misc/libphysfs/Xcode/Physfs.xcodeproj/project.pbxproj Mon Nov 09 16:34:03 2015 +0000
@@ -179,7 +179,7 @@
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0640;
+ LastUpgradeCheck = 0710;
};
buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "Physfs" */;
compatibilityVersion = "Xcode 3.2";
@@ -273,6 +273,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
--- a/misc/libphyslayer/Xcode/Physlayer.xcodeproj/project.pbxproj Tue Oct 06 13:28:11 2015 +0200
+++ b/misc/libphyslayer/Xcode/Physlayer.xcodeproj/project.pbxproj Mon Nov 09 16:34:03 2015 +0000
@@ -125,7 +125,7 @@
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0640;
+ LastUpgradeCheck = 0710;
};
buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "Physlayer" */;
compatibilityVersion = "Xcode 3.2";
@@ -204,6 +204,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
Binary file project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons/switchbutton.png has changed
Binary file project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons/targetbutton.png has changed
Binary file project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons/timerbutton.png has changed
--- a/project_files/HedgewarsMobile/Classes/AboutViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/AboutViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -27,7 +27,10 @@
return rotationManager(interfaceOrientation);
}
--(void) viewDidLoad {
+-(void) viewDidLoad
+{
+ [super viewDidLoad];
+
[self.tableView setBackgroundColorForAnyTable:[UIColor clearColor]];
self.tableView.allowsSelection = NO;
@@ -48,7 +51,7 @@
[self.view insertSubview:background atIndex:0];
[background release];
- [super viewDidLoad];
+ [self localizeSegmentedControl];
}
-(IBAction) buttonPressed:(id) sender {
@@ -56,6 +59,17 @@
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
+#pragma mark - Segmented Control
+
+- (void)localizeSegmentedControl
+{
+ for (NSUInteger i = 0; i < self.segmentedControl.numberOfSegments; i++)
+ {
+ NSString *oldTitle = [self.segmentedControl titleForSegmentAtIndex:i];
+ [self.segmentedControl setTitle:NSLocalizedStringFromTable(oldTitle, @"About", nil) forSegmentAtIndex:i];
+ }
+}
+
-(IBAction) segmentedControlChanged:(id) sender {
[[AudioManagerController mainManager] playClickSound];
[self.tableView setContentOffset:CGPointMake(0, 0) animated:NO];
@@ -119,6 +133,7 @@
label.textColor = [UIColor lightGrayColor];
label.numberOfLines = 5;
label.text = footerString;
+ [footerString release];
label.backgroundColor = [UIColor clearColor];
[footer addSubview:label];
--- a/project_files/HedgewarsMobile/Classes/Appirater.h Tue Oct 06 13:28:11 2015 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- This file is part of Appirater, http://arashpayan.com
-
- Copyright (c) 2010, Arash Payan
- All rights reserved.
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the "Software"), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#import <Foundation/Foundation.h>
-
-extern NSString *const kAppiraterLaunchDate;
-extern NSString *const kAppiraterLaunchCount;
-extern NSString *const kAppiraterCurrentVersion;
-extern NSString *const kAppiraterRatedCurrentVersion;
-extern NSString *const kAppiraterDeclinedToRate;
-
-/*
- Place your Apple generated software id here.
- */
-#define APPIRATER_APP_ID 391234866
-
-/*
- Your app's name.
- */
-#define APPIRATER_APP_NAME [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey]
-
-/*
- This is the message your users will see once they've passed the day+launches
- threshold.
- */
-#define APPIRATER_MESSAGE [NSString stringWithFormat:@"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!", APPIRATER_APP_NAME]
-
-/*
- This is the title of the message alert that users will see.
- */
-#define APPIRATER_MESSAGE_TITLE [NSString stringWithFormat:@"Rate %@", APPIRATER_APP_NAME]
-
-/*
- The text of the button that rejects reviewing the app.
- */
-#define APPIRATER_CANCEL_BUTTON NSLocalizedString(@"No thanks",@"")
-
-/*
- Text of button that will send user to app review page.
- */
-#define APPIRATER_RATE_BUTTON [NSString stringWithFormat:@"Rate %@", APPIRATER_APP_NAME]
-
-/*
- Text for button to remind the user to review later.
- */
-#define APPIRATER_RATE_LATER NSLocalizedString(@"Remind me later",@"")
-
-/*
- Users will need to have the same version of your app installed for this many
- days before they will be prompted to rate it.
- */
-#define DAYS_UNTIL_PROMPT 3 // double
-
-/*
- Users will need to launch the same version of the app this many times before
- they will be prompted to rate it.
- */
-#define LAUNCHES_UNTIL_PROMPT 5 // integer
-
-/*
- 'YES' will show the Appirater alert everytime. Useful for testing how your message
- looks and making sure the link to your app's review page works.
- */
-#define APPIRATER_DEBUG NO // bool
-
-@interface Appirater : NSObject <UIAlertViewDelegate> {
-
-}
-
-+(void) appLaunched;
-
-@end
--- a/project_files/HedgewarsMobile/Classes/Appirater.m Tue Oct 06 13:28:11 2015 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
- This file is part of Appirater, http://arashpayan.com
-
- Copyright (c) 2010, Arash Payan
- All rights reserved.
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the "Software"), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#import "Appirater.h"
-#import <SystemConfiguration/SCNetworkReachability.h>
-#import <netinet/in.h>
-
-NSString *const kAppiraterLaunchDate = @"kAppiraterLaunchDate";
-NSString *const kAppiraterLaunchCount = @"kAppiraterLaunchCount";
-NSString *const kAppiraterCurrentVersion = @"kAppiraterCurrentVersion";
-NSString *const kAppiraterRatedCurrentVersion = @"kAppiraterRatedCurrentVersion";
-NSString *const kAppiraterDeclinedToRate = @"kAppiraterDeclinedToRate";
-
-NSString *templateReviewURL = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software";
-
-@implementation Appirater
-
-+(void) appLaunched {
- Appirater *appirater = [[Appirater alloc] init];
- [NSThread detachNewThreadSelector:@selector(appLaunchedHandler) toTarget:appirater withObject:nil];
-}
-
--(void) appLaunchedHandler {
- @autoreleasepool {
-
- if (APPIRATER_DEBUG) {
- [self performSelectorOnMainThread:@selector(showPrompt) withObject:nil waitUntilDone:NO];
- return;
- }
-
- BOOL willShowPrompt = NO;
-
- // get the app's version
- NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey];
-
- // get the version number that we've been tracking
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- NSString *trackingVersion = [userDefaults stringForKey:kAppiraterCurrentVersion];
- if (trackingVersion == nil) {
- trackingVersion = version;
- [userDefaults setObject:version forKey:kAppiraterCurrentVersion];
- }
-
- if (APPIRATER_DEBUG)
- DLog(@"APPIRATER Tracking version: %@", trackingVersion);
-
- if ([trackingVersion isEqualToString:version]) {
- // get the launch date
- NSTimeInterval timeInterval = [userDefaults doubleForKey:kAppiraterLaunchDate];
- if (timeInterval == 0) {
- timeInterval = [[NSDate date] timeIntervalSince1970];
- [userDefaults setDouble:timeInterval forKey:kAppiraterLaunchDate];
- }
-
- NSTimeInterval secondsSinceLaunch = [[NSDate date] timeIntervalSinceDate:[NSDate dateWithTimeIntervalSince1970:timeInterval]];
- double secondsUntilPrompt = 60 * 60 * 24 * DAYS_UNTIL_PROMPT;
-
- // get the launch count
- NSInteger launchCount = [userDefaults integerForKey:kAppiraterLaunchCount];
- launchCount++;
- [userDefaults setInteger:launchCount forKey:kAppiraterLaunchCount];
- if (APPIRATER_DEBUG)
- NSLog(@"APPIRATER Launch count: %ld", (long)launchCount);
-
- // have they previously declined to rate this version of the app?
- BOOL declinedToRate = [userDefaults boolForKey:kAppiraterDeclinedToRate];
-
- // have they already rated the app?
- BOOL ratedApp = [userDefaults boolForKey:kAppiraterRatedCurrentVersion];
-
- if (secondsSinceLaunch > secondsUntilPrompt &&
- launchCount > LAUNCHES_UNTIL_PROMPT &&
- !declinedToRate &&
- !ratedApp) {
- if ([HWUtils isNetworkReachable]) { // check if they can reach the app store
- willShowPrompt = YES;
- [self performSelectorOnMainThread:@selector(showPrompt) withObject:nil waitUntilDone:NO];
- }
- }
- } else {
- // it's a new version of the app, so restart tracking
- [userDefaults setObject:version forKey:kAppiraterCurrentVersion];
- [userDefaults setDouble:[[NSDate date] timeIntervalSince1970] forKey:kAppiraterLaunchDate];
- [userDefaults setInteger:1 forKey:kAppiraterLaunchCount];
- [userDefaults setBool:NO forKey:kAppiraterRatedCurrentVersion];
- [userDefaults setBool:NO forKey:kAppiraterDeclinedToRate];
- }
-
- [userDefaults synchronize];
- if (!willShowPrompt)
- [self autorelease];
-
- }
-}
-
--(void) showPrompt {
- UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:APPIRATER_MESSAGE_TITLE
- message:APPIRATER_MESSAGE
- delegate:self
- cancelButtonTitle:APPIRATER_CANCEL_BUTTON
- otherButtonTitles:APPIRATER_RATE_BUTTON, APPIRATER_RATE_LATER, nil];
- [alertView show];
- [alertView release];
-}
-
--(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger) buttonIndex {
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
-
- switch (buttonIndex) {
- case 0:
- // they don't want to rate it
- [userDefaults setBool:YES forKey:kAppiraterDeclinedToRate];
- break;
- case 1:
- // they want to rate it
- [[UIApplication sharedApplication] openURL:
- [NSURL URLWithString:[templateReviewURL stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%d", APPIRATER_APP_ID]]]];
-
- [userDefaults setBool:YES forKey:kAppiraterRatedCurrentVersion];
- break;
- case 2:
- // remind them later
- break;
- default:
- break;
- }
-
- [userDefaults synchronize];
-
- [self release];
-}
-
-@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/ar.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "إذا كنت تستمع باستخدام %@، فهل تمانع بأن تأخذ دقيقة من وقتك لتقيمه؟ لن يستغرق الأمر أكثر من دقيقة. شكرا لدعمك!";
+"Rate %@" = "قيم %@";
+"No, Thanks" = "لا شكرا";
+"Remind me later" = "ذكرني لاحقا";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/ca.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Si li agrada utilitzar %@, li importaria prendre’s un moment per a valorar-lo? No trigarà més d’un minut. Gràcies por la seva col·laboració!";
+"Rate %@" = "Valorar %@";
+"No, Thanks" = "No, gràcies";
+"Remind me later" = "Recordar-m’ho més tard";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/cs.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Pokud se Vám aplikace %@ líbí, mohli byste ji prosím ohodnotit v App Store? Zabere to jen chvilku. Díky za Vaši podporu!";
+"Rate %@" = "Ohodnotit %@";
+"No, Thanks" = "Ne, díky";
+"Remind me later" = "Možná později";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/da.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Hvis du synes om at bruge %@, vil du have noget imod at bruge et kort øjeblik på at bedømme det? Det tager kun et minut. Tak for din støtte!";
+"Rate %@" = "Bedøm %@";
+"No, Thanks" = "Nej tak";
+"Remind me later" = "Påmind mig senere";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/de.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Sie nutzen %@ gerne? Dann nehmen Sie sich bitte für eine Bewertung einen Moment Zeit! Es dauert nicht länger als eine Minute. Vielen Dank!";
+"Rate %@" = "Bewerte %@";
+"No, Thanks" = "Nein, danke";
+"Remind me later" = "Später erinnern";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/el.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Αν σου αρέσει το %@, θα μπορούσες να αφιερώσεις μια στιγμή για να το βαθμολογήσεις; Η διαδικασία είναι πολύ σύντομη. Ευχαριστούμε για τη στήριξη!";
+"Rate %@" = "Βαθμολόγηση του %@";
+"No, Thanks" = "Όχι, ευχαριστώ";
+"Remind me later" = "Υπενθύμιση αργότερα";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/en.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!";
+"Rate %@" = "Rate %@";
+"No, Thanks" = "No, thanks";
+"Remind me later" = "Remind me later";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/es.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Si te ha gustado %@, ¿te gustaría calificarnos? No te tomará más de un minuto. ¡Gracias por tu colaboración!";
+"Rate %@" = "Calificar %@";
+"No, Thanks" = "No, gracias";
+"Remind me later" = "Recuérdame más tarde";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/fi.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Jos käytät mielelläsi %@, voisitko käyttää hetken ja arvostella sen? Se ei kestä minuuttia kauempaa. Kiitos tuestasi!";
+"Rate %@" = "Arvioi %@";
+"No, Thanks" = "Ei kiitos";
+"Remind me later" = "Muistuta minua myöhemmin";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/fr.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Si vous aimez %@, voulez-vous prendre un moment pour l'évaluer ? Cela ne vous prendra pas plus d'une minute. Merci de votre soutien !";
+"Rate %@" = "Évaluer %@";
+"No, Thanks" = "Non, merci";
+"Remind me later" = "Me rappeler plus tard";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/he.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "אם נהנת להשתמש ב %@, האם תסכים לדרג אותה? זה לא יקח יותר מדקה. תודה על התמיכה!";
+"Rate %@" = "דרג את %@";
+"No, Thanks" = "לא תודה";
+"Remind me later" = "מאוחר יותר";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/hu.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Ha tetszik a %@, ne felejtsd el értékelni az App Store-ban! Csak egy perc az egész. Köszönet a támogatásért!";
+"Rate %@" = "%@ értékelése";
+"No, Thanks" = "Most inkább nem";
+"Remind me later" = "Emlékeztess később";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/id.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Jika anda menyukai %@, maukah anda memberikan rating kepada aplikasi ini? Rating hanya memakan waktu kurang dari 1 menit. Terimakasih untuk dukungan anda!";
+"Rate %@" = "Rating %@";
+"No, Thanks" = "Tidak, terimakasih";
+"Remind me later" = "Silakan ingatkan saya lagi";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/it.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Se ti piace %@, perché non dedichi qualche istante a darne una valutazione sull'App Store? Non richiederà più di un minuto. Grazie per il supporto!";
+"Rate %@" = "Valuta %@";
+"No, Thanks" = "No, grazie";
+"Remind me later" = "Ricordamelo più tardi";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/ja.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "%@をお使いいただきありがとうございます。もしよろしければ、ほんの少しだけお時間をいただき評価をお願いできませんか?ご協力感謝いたします!";
+"Rate %@" = "%@を評価する";
+"No, Thanks" ="結構です";
+"Remind me later" = "あとで";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/ko.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "%@ 사용이 맘에 드셨나요? 잠시만 시간을 내서 평가를 부탁드리겠습니다. 감사합니다!";
+"Rate %@" = "%@ 평가하기";
+"No, Thanks" = "평가하지 않겠습니다";
+"Remind me later" = "다음에 평가하겠습니다";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/ms.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Jika anda suka %@, bolehkah luangkan sedikit masa untuk beri penarafan? Tak sampai seminit pun. Terima kasih atas sokongan anda!";
+"Rate %@" = "Tarafkan %@";
+"No, Thanks" = "Terima kasih saja";
+"Remind me later" = "Ingatkan saya lain kali";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/nb.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Hvis du liker å bruke %@, kan du ta deg et øyeblikk for å vurdere den? Det vil ikke ta mer enn ett minutt. Takk for din støtte!";
+"Rate %@" = "Vurder %@";
+"No, Thanks" = "Nei, takk";
+"Remind me later" = "Påminn meg senere";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/nl.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Als het gebruik van %@ je bevalt, zou je dan een momentje de tijd willen nemen om het te beoordelen? Het duurt nog geen minuut. Bedankt voor je steun!";
+"Rate %@" = "%@ beoordelen";
+"No, Thanks" = "Nee, bedankt";
+"Remind me later" = "Herinner me er later aan";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/pl.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Jeżeli podoba Ci się korzystanie z %@, może zechciałbyś poświęcić chwilę czasu, aby ocenić aplikację? Nie zajmie Ci to więcej niż minutę. Dziękujemy za pomoc!";
+"Rate %@" = "Oceń %@";
+"No, Thanks" = "Nie, dziękuję";
+"Remind me later" = "Przypomnij później";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/pt-BR.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Se você gosta de usar o %@, que tal avaliá-lo? Não levará mais de um minuto. Agradecemos o seu apoio!";
+"Rate %@" = "Avaliar o %@";
+"No, Thanks" = "Não, obrigado";
+"Remind me later" = "Mais tarde";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/pt.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Se você gosta de usar o %@, que tal avaliá-lo? Não levará mais de um minuto. Agradecemos o seu apoio!";
+"Rate %@" = "Avaliar o %@";
+"No, Thanks" = "Não, obrigado";
+"Remind me later" = "Mais tarde";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/ro.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Dacă îți place %@, acordă-i o notă te rog, nu durează mult. Mulțumim pentru susținere!";
+"Rate %@" = "Acordă notă pentru %@";
+"No, Thanks" = "Nu, mulțumesc";
+"Remind me later" = "Adu-mi aminte mai târziu";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/ru.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Если Вам нравится %@, пожалуйста, поставьте свою оценку. Это займет у Вас не больше одной минуты.\n Спасибо за поддержку!";
+"Rate %@" = "Оценить %@";
+"No, Thanks" = "Нет, спасибо";
+"Remind me later" = "Напомнить позже";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/sk.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Pokiaľ sa Vám páči aplikácia %@, mohli by ste ju prosím ohodnotiť v App Store? Zaberie to len chvíľu. Vďaka za Vašu podporu!";
+"Rate %@" = "Ohodnotiť %@";
+"No, Thanks" = "Nie, ďakujem";
+"Remind me later" = "Pripomenúť neskôr";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/sv.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Om du gillar att använda %@, kan du tänka dig att betygsätta det åt oss? Det tar bara en minut. Tack för hjälpen!";
+"Rate %@" = "Betygsätt %@";
+"No, Thanks" = "Nej tack";
+"Remind me later" = "Påminn mig senare";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/th.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "ถ้าคุณกำลังใช้ %@ โปรดสละเวลาสักครู่ในการให้อันดับแก่เรา คุณจะเสียเวลาไม่เกินหนึ่งนาที ขอบคุณสำหรับการสนับสนุน!";
+"Rate %@" = "ให้อันดับ %@";
+"No, Thanks" = "ไม่ ขอบคุณ";
+"Remind me later" = "เตือนฉันภายหลัง";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/tr.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Eğer %@ uygulamasını kullanmaktan keyif alıyorsanız, onu değerlendirmek için zaman ayırabilir misiniz? Desteğiniz için teşekkür ederiz!";
+"Rate %@" = "%@ uygulamasını değerlendir";
+"No, Thanks" = "Hayır, teşekkürler";
+"Remind me later" = "Daha sonra hatırlat";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/uk.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Якщо вам сподобалося %@, будь ласка, поставте свою оцінку. Це займає не більше однієї хвилини.\n Дякуємо за підтримку!";
+"Rate %@" = "Оцінити %@";
+"No, Thanks" = "Ні, дякую";
+"Remind me later" = "Нагадати пізніше";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/vi.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "Cảm ơn bạn đã sử dụng ứng dụng %@ trong thời gian qua, bạn có thể dành chút thời gian để đánh giá ứng dụng trong AppStore không?";
+"Rate %@" = "Đánh giá %@";
+"No, Thanks" = "Không, xin cảm ơn";
+"Remind me later" = "Hãy nhắc nhở tôi sau";
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/zh-Hans.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "如果你喜欢使用%@,你介意花一点时间给它评分吗?不会超过一分钟。感谢您的支持!";
+"Rate %@" = "给%@评分";
+"No, Thanks" = "不,谢谢";
+"Remind me later" = "稍后提醒我";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.bundle/zh-Hant.lproj/AppiraterLocalizable.strings Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,4 @@
+"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!" = "如果你喜歡使用%@,你介意花一點時間給它評分嗎?不會超過一分鐘。感謝您的支持!";
+"Rate %@" = "給%@評分";
+"No, Thanks" = "不,謝謝";
+"Remind me later" = "稍後提醒我";
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.h Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,331 @@
+/*
+ This file is part of Appirater.
+
+ Copyright (c) 2012, Arash Payan
+ All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ */
+/*
+ * Appirater.h
+ * appirater
+ *
+ * Created by Arash Payan on 9/5/09.
+ * http://arashpayan.com
+ * Copyright 2012 Arash Payan. All rights reserved.
+ */
+
+#import <Foundation/Foundation.h>
+#import "AppiraterDelegate.h"
+#import <StoreKit/StoreKit.h>
+
+extern NSString *const kAppiraterFirstUseDate;
+extern NSString *const kAppiraterUseCount;
+extern NSString *const kAppiraterSignificantEventCount;
+extern NSString *const kAppiraterCurrentVersion;
+extern NSString *const kAppiraterRatedCurrentVersion;
+extern NSString *const kAppiraterDeclinedToRate;
+extern NSString *const kAppiraterReminderRequestDate;
+
+/*!
+ Your localized app's name.
+ */
+#define APPIRATER_LOCALIZED_APP_NAME [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleDisplayName"]
+
+/*!
+ Your app's name.
+ */
+#define APPIRATER_APP_NAME APPIRATER_LOCALIZED_APP_NAME ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]
+
+/*!
+ This is the message your users will see once they've passed the day+launches
+ threshold.
+ */
+#define APPIRATER_LOCALIZED_MESSAGE NSLocalizedStringFromTableInBundle(@"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!", @"AppiraterLocalizable", [Appirater bundle], nil)
+#define APPIRATER_MESSAGE [NSString stringWithFormat:APPIRATER_LOCALIZED_MESSAGE, APPIRATER_APP_NAME]
+
+/*!
+ This is the title of the message alert that users will see.
+ */
+#define APPIRATER_LOCALIZED_MESSAGE_TITLE NSLocalizedStringFromTableInBundle(@"Rate %@", @"AppiraterLocalizable", [Appirater bundle], nil)
+#define APPIRATER_MESSAGE_TITLE [NSString stringWithFormat:APPIRATER_LOCALIZED_MESSAGE_TITLE, APPIRATER_APP_NAME]
+
+/*!
+ The text of the button that rejects reviewing the app.
+ */
+#define APPIRATER_CANCEL_BUTTON NSLocalizedStringFromTableInBundle(@"No, Thanks", @"AppiraterLocalizable", [Appirater bundle], nil)
+
+/*!
+ Text of button that will send user to app review page.
+ */
+#define APPIRATER_LOCALIZED_RATE_BUTTON NSLocalizedStringFromTableInBundle(@"Rate %@", @"AppiraterLocalizable", [Appirater bundle], nil)
+#define APPIRATER_RATE_BUTTON [NSString stringWithFormat:APPIRATER_LOCALIZED_RATE_BUTTON, APPIRATER_APP_NAME]
+
+/*!
+ Text for button to remind the user to review later.
+ */
+#define APPIRATER_RATE_LATER NSLocalizedStringFromTableInBundle(@"Remind me later", @"AppiraterLocalizable", [Appirater bundle], nil)
+
+@interface Appirater : NSObject <UIAlertViewDelegate, SKStoreProductViewControllerDelegate> {
+
+ UIAlertView *ratingAlert;
+}
+
+@property(nonatomic, strong) UIAlertView *ratingAlert;
+@property(nonatomic) BOOL openInAppStore;
+#if __has_feature(objc_arc_weak)
+@property(nonatomic, weak) NSObject <AppiraterDelegate> *delegate;
+#else
+@property(nonatomic, unsafe_unretained) NSObject <AppiraterDelegate> *delegate;
+#endif
+
+/*!
+ Tells Appirater that the app has launched, and on devices that do NOT
+ support multitasking, the 'uses' count will be incremented. You should
+ call this method at the end of your application delegate's
+ application:didFinishLaunchingWithOptions: method.
+
+ If the app has been used enough to be rated (and enough significant events),
+ you can suppress the rating alert
+ by passing NO for canPromptForRating. The rating alert will simply be postponed
+ until it is called again with YES for canPromptForRating. The rating alert
+ can also be triggered by appEnteredForeground: and userDidSignificantEvent:
+ (as long as you pass YES for canPromptForRating in those methods).
+ */
++ (void)appLaunched:(BOOL)canPromptForRating;
+
+/*!
+ Tells Appirater that the app was brought to the foreground on multitasking
+ devices. You should call this method from the application delegate's
+ applicationWillEnterForeground: method.
+
+ If the app has been used enough to be rated (and enough significant events),
+ you can suppress the rating alert
+ by passing NO for canPromptForRating. The rating alert will simply be postponed
+ until it is called again with YES for canPromptForRating. The rating alert
+ can also be triggered by appLaunched: and userDidSignificantEvent:
+ (as long as you pass YES for canPromptForRating in those methods).
+ */
++ (void)appEnteredForeground:(BOOL)canPromptForRating;
+
+/*!
+ Tells Appirater that the user performed a significant event. A significant
+ event is whatever you want it to be. If you're app is used to make VoIP
+ calls, then you might want to call this method whenever the user places
+ a call. If it's a game, you might want to call this whenever the user
+ beats a level boss.
+
+ If the user has performed enough significant events and used the app enough,
+ you can suppress the rating alert by passing NO for canPromptForRating. The
+ rating alert will simply be postponed until it is called again with YES for
+ canPromptForRating. The rating alert can also be triggered by appLaunched:
+ and appEnteredForeground: (as long as you pass YES for canPromptForRating
+ in those methods).
+ */
++ (void)userDidSignificantEvent:(BOOL)canPromptForRating;
+
+/*!
+ Tells Appirater to try and show the prompt (a rating alert). The prompt will be showed
+ if there is connection available, the user hasn't declined to rate
+ or hasn't rated current version.
+
+ You could call to show the prompt regardless Appirater settings,
+ e.g., in case of some special event in your app.
+ */
++ (void)tryToShowPrompt;
+
+/*!
+ Tells Appirater to show the prompt (a rating alert).
+ Similar to tryToShowPrompt, but without checks (the prompt is always displayed).
+ Passing false will hide the rate later button on the prompt.
+
+ The only case where you should call this is if your app has an
+ explicit "Rate this app" command somewhere. This is similar to rateApp,
+ but instead of jumping to the review directly, an intermediary prompt is displayed.
+ */
++ (void)forceShowPrompt:(BOOL)displayRateLaterButton;
+
+/*!
+ Tells Appirater to open the App Store page where the user can specify a
+ rating for the app. Also records the fact that this has happened, so the
+ user won't be prompted again to rate the app.
+
+ The only case where you should call this directly is if your app has an
+ explicit "Rate this app" command somewhere. In all other cases, don't worry
+ about calling this -- instead, just call the other functions listed above,
+ and let Appirater handle the bookkeeping of deciding when to ask the user
+ whether to rate the app.
+ */
++ (void)rateApp;
+
+/*!
+ Tells Appirater to immediately close any open rating modals (e.g. StoreKit rating VCs).
+*/
++ (void)closeModal;
+
+/*!
+ Asks Appirater if the user has declined to rate;
+*/
+- (BOOL)userHasDeclinedToRate;
+
+/*!
+ Asks Appirater if the user has rated the current version.
+ Note that this is not a guarantee that the user has actually rated the app in the
+ app store, but they've just clicked the rate button on the Appirater dialog.
+*/
+- (BOOL)userHasRatedCurrentVersion;
+
+@end
+
+@interface Appirater(Configuration)
+
+/*!
+ Set your Apple generated software id here.
+ */
++ (void) setAppId:(NSString*)appId;
+
+/*!
+ Users will need to have the same version of your app installed for this many
+ days before they will be prompted to rate it.
+ */
++ (void) setDaysUntilPrompt:(double)value;
+
+/*!
+ An example of a 'use' would be if the user launched the app. Bringing the app
+ into the foreground (on devices that support it) would also be considered
+ a 'use'. You tell Appirater about these events using the two methods:
+ [Appirater appLaunched:]
+ [Appirater appEnteredForeground:]
+
+ Users need to 'use' the same version of the app this many times before
+ before they will be prompted to rate it.
+ */
++ (void) setUsesUntilPrompt:(NSInteger)value;
+
+/*!
+ A significant event can be anything you want to be in your app. In a
+ telephone app, a significant event might be placing or receiving a call.
+ In a game, it might be beating a level or a boss. This is just another
+ layer of filtering that can be used to make sure that only the most
+ loyal of your users are being prompted to rate you on the app store.
+ If you leave this at a value of -1, then this won't be a criterion
+ used for rating. To tell Appirater that the user has performed
+ a significant event, call the method:
+ [Appirater userDidSignificantEvent:];
+ */
++ (void) setSignificantEventsUntilPrompt:(NSInteger)value;
+
+
+/*!
+ Once the rating alert is presented to the user, they might select
+ 'Remind me later'. This value specifies how long (in days) Appirater
+ will wait before reminding them.
+ */
++ (void) setTimeBeforeReminding:(double)value;
+
+/*!
+ Set customized title for alert view.
+ */
++ (void) setCustomAlertTitle:(NSString *)title;
+
+/*!
+ Set customized message for alert view.
+ */
++ (void) setCustomAlertMessage:(NSString *)message;
+
+/*!
+ Set customized cancel button title for alert view.
+ */
++ (void) setCustomAlertCancelButtonTitle:(NSString *)cancelTitle;
+
+/*!
+ Set customized rate button title for alert view.
+ */
++ (void) setCustomAlertRateButtonTitle:(NSString *)rateTitle;
+
+/*!
+ Set customized rate later button title for alert view.
+ */
++ (void) setCustomAlertRateLaterButtonTitle:(NSString *)rateLaterTitle;
+
+/*!
+ 'YES' will show the Appirater alert everytime. Useful for testing how your message
+ looks and making sure the link to your app's review page works.
+ */
++ (void) setDebug:(BOOL)debug;
+
+/*!
+ Set the delegate if you want to know when Appirater does something
+ */
++ (void)setDelegate:(id<AppiraterDelegate>)delegate;
+
+/*!
+ Set whether or not Appirater uses animation (currently respected when pushing modal StoreKit rating VCs).
+ */
++ (void)setUsesAnimation:(BOOL)animation;
+
+/*!
+ If set to YES, Appirater will open App Store link (instead of SKStoreProductViewController on iOS 6). Default YES.
+ */
++ (void)setOpenInAppStore:(BOOL)openInAppStore;
+
+/*!
+ If set to YES, the main bundle will always be used to load localized strings.
+ Set this to YES if you have provided your own custom localizations in AppiraterLocalizable.strings
+ in your main bundle. Default is NO.
+ */
++ (void)setAlwaysUseMainBundle:(BOOL)useMainBundle;
+
+@end
+
+
+/*!
+ Methods in this interface are public out of necessity, but may change without notice
+ */
+@interface Appirater(Unsafe)
+
+/*!
+ The bundle localized strings will be loaded from.
+*/
++(NSBundle *)bundle;
+
+@end
+
+@interface Appirater(Deprecated)
+
+/*!
+ DEPRECATED: While still functional, it's better to use
+ appLaunched:(BOOL)canPromptForRating instead.
+
+ Calls [Appirater appLaunched:YES]. See appLaunched: for details of functionality.
+ */
++ (void)appLaunched __attribute__((deprecated));
+
+/*!
+ DEPRECATED: While still functional, it's better to use
+ tryToShowPrompt instead.
+
+ Calls [Appirater tryToShowPrompt]. See tryToShowPrompt for details of functionality.
+ */
++ (void)showPrompt __attribute__((deprecated));
+
+@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/Appirater.m Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,732 @@
+/*
+ This file is part of Appirater.
+
+ Copyright (c) 2012, Arash Payan
+ All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ */
+/*
+ * Appirater.m
+ * appirater
+ *
+ * Created by Arash Payan on 9/5/09.
+ * http://arashpayan.com
+ * Copyright 2012 Arash Payan. All rights reserved.
+ */
+
+#import "Appirater.h"
+#import <SystemConfiguration/SCNetworkReachability.h>
+#include <netinet/in.h>
+
+#if ! __has_feature(objc_arc)
+#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
+#endif
+
+NSString *const kAppiraterFirstUseDate = @"kAppiraterFirstUseDate";
+NSString *const kAppiraterUseCount = @"kAppiraterUseCount";
+NSString *const kAppiraterSignificantEventCount = @"kAppiraterSignificantEventCount";
+NSString *const kAppiraterCurrentVersion = @"kAppiraterCurrentVersion";
+NSString *const kAppiraterRatedCurrentVersion = @"kAppiraterRatedCurrentVersion";
+NSString *const kAppiraterDeclinedToRate = @"kAppiraterDeclinedToRate";
+NSString *const kAppiraterReminderRequestDate = @"kAppiraterReminderRequestDate";
+
+NSString *templateReviewURL = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APP_ID";
+NSString *templateReviewURLiOS7 = @"itms-apps://itunes.apple.com/app/idAPP_ID";
+NSString *templateReviewURLiOS8 = @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software";
+
+static NSString *_appId;
+static double _daysUntilPrompt = 30;
+static NSInteger _usesUntilPrompt = 20;
+static NSInteger _significantEventsUntilPrompt = -1;
+static double _timeBeforeReminding = 1;
+static BOOL _debug = NO;
+#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
+ static id<AppiraterDelegate> _delegate;
+#else
+ __weak static id<AppiraterDelegate> _delegate;
+#endif
+static BOOL _usesAnimation = TRUE;
+static UIStatusBarStyle _statusBarStyle;
+static BOOL _modalOpen = false;
+static BOOL _alwaysUseMainBundle = NO;
+
+@interface Appirater ()
+@property (nonatomic, copy) NSString *alertTitle;
+@property (nonatomic, copy) NSString *alertMessage;
+@property (nonatomic, copy) NSString *alertCancelTitle;
+@property (nonatomic, copy) NSString *alertRateTitle;
+@property (nonatomic, copy) NSString *alertRateLaterTitle;
+- (BOOL)connectedToNetwork;
++ (Appirater*)sharedInstance;
+- (void)showPromptWithChecks:(BOOL)withChecks
+ displayRateLaterButton:(BOOL)displayRateLaterButton;
+- (void)showRatingAlert:(BOOL)displayRateLaterButton;
+- (void)showRatingAlert;
+- (BOOL)ratingAlertIsAppropriate;
+- (BOOL)ratingConditionsHaveBeenMet;
+- (void)incrementUseCount;
+- (void)hideRatingAlert;
+@end
+
+@implementation Appirater
+
+@synthesize ratingAlert;
+
++ (void) setAppId:(NSString *)appId {
+ _appId = appId;
+}
+
++ (void) setDaysUntilPrompt:(double)value {
+ _daysUntilPrompt = value;
+}
+
++ (void) setUsesUntilPrompt:(NSInteger)value {
+ _usesUntilPrompt = value;
+}
+
++ (void) setSignificantEventsUntilPrompt:(NSInteger)value {
+ _significantEventsUntilPrompt = value;
+}
+
++ (void) setTimeBeforeReminding:(double)value {
+ _timeBeforeReminding = value;
+}
+
++ (void) setCustomAlertTitle:(NSString *)title
+{
+ [self sharedInstance].alertTitle = title;
+}
+
++ (void) setCustomAlertMessage:(NSString *)message
+{
+ [self sharedInstance].alertMessage = message;
+}
+
++ (void) setCustomAlertCancelButtonTitle:(NSString *)cancelTitle
+{
+ [self sharedInstance].alertCancelTitle = cancelTitle;
+}
+
++ (void) setCustomAlertRateButtonTitle:(NSString *)rateTitle
+{
+ [self sharedInstance].alertRateTitle = rateTitle;
+}
+
++ (void) setCustomAlertRateLaterButtonTitle:(NSString *)rateLaterTitle
+{
+ [self sharedInstance].alertRateLaterTitle = rateLaterTitle;
+}
+
++ (void) setDebug:(BOOL)debug {
+ _debug = debug;
+}
++ (void)setDelegate:(id<AppiraterDelegate>)delegate{
+ _delegate = delegate;
+}
++ (void)setUsesAnimation:(BOOL)animation {
+ _usesAnimation = animation;
+}
++ (void)setOpenInAppStore:(BOOL)openInAppStore {
+ [Appirater sharedInstance].openInAppStore = openInAppStore;
+}
++ (void)setStatusBarStyle:(UIStatusBarStyle)style {
+ _statusBarStyle = style;
+}
++ (void)setModalOpen:(BOOL)open {
+ _modalOpen = open;
+}
++ (void)setAlwaysUseMainBundle:(BOOL)alwaysUseMainBundle {
+ _alwaysUseMainBundle = alwaysUseMainBundle;
+}
+
++ (NSBundle *)bundle
+{
+ NSBundle *bundle;
+
+ if (_alwaysUseMainBundle) {
+ bundle = [NSBundle mainBundle];
+ } else {
+ NSURL *appiraterBundleURL = [[NSBundle mainBundle] URLForResource:@"Appirater" withExtension:@"bundle"];
+
+ if (appiraterBundleURL) {
+ // Appirater.bundle will likely only exist when used via CocoaPods
+ bundle = [NSBundle bundleWithURL:appiraterBundleURL];
+ } else {
+ bundle = [NSBundle mainBundle];
+ }
+ }
+
+ return bundle;
+}
+
+- (NSString *)alertTitle
+{
+ return _alertTitle ? _alertTitle : APPIRATER_MESSAGE_TITLE;
+}
+
+- (NSString *)alertMessage
+{
+ return _alertMessage ? _alertMessage : APPIRATER_MESSAGE;
+}
+
+- (NSString *)alertCancelTitle
+{
+ return _alertCancelTitle ? _alertCancelTitle : APPIRATER_CANCEL_BUTTON;
+}
+
+- (NSString *)alertRateTitle
+{
+ return _alertRateTitle ? _alertRateTitle : APPIRATER_RATE_BUTTON;
+}
+
+- (NSString *)alertRateLaterTitle
+{
+ return _alertRateLaterTitle ? _alertRateLaterTitle : APPIRATER_RATE_LATER;
+}
+
+- (void)dealloc {
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+}
+
+- (id)init {
+ self = [super init];
+ if (self) {
+ if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {
+ self.openInAppStore = YES;
+ } else {
+ self.openInAppStore = NO;
+ }
+ }
+
+ return self;
+}
+
+- (BOOL)connectedToNetwork {
+ // Create zero addy
+ struct sockaddr_in zeroAddress;
+ bzero(&zeroAddress, sizeof(zeroAddress));
+ zeroAddress.sin_len = sizeof(zeroAddress);
+ zeroAddress.sin_family = AF_INET;
+
+ // Recover reachability flags
+ SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
+ SCNetworkReachabilityFlags flags;
+
+ Boolean didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
+ CFRelease(defaultRouteReachability);
+
+ if (!didRetrieveFlags)
+ {
+ NSLog(@"Error. Could not recover network reachability flags");
+ return NO;
+ }
+
+ BOOL isReachable = flags & kSCNetworkFlagsReachable;
+ BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
+ BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;
+
+ NSURL *testURL = [NSURL URLWithString:@"http://www.apple.com/"];
+ NSURLRequest *testRequest = [NSURLRequest requestWithURL:testURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0];
+ NSURLConnection *testConnection = [[NSURLConnection alloc] initWithRequest:testRequest delegate:self];
+
+ return ((isReachable && !needsConnection) || nonWiFi) ? (testConnection ? YES : NO) : NO;
+}
+
++ (Appirater*)sharedInstance {
+ static Appirater *appirater = nil;
+ if (appirater == nil)
+ {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ appirater = [[Appirater alloc] init];
+ appirater.delegate = _delegate;
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActive) name:
+ UIApplicationWillResignActiveNotification object:nil];
+ });
+ }
+
+ return appirater;
+}
+
+- (void)showRatingAlert:(BOOL)displayRateLaterButton {
+ UIAlertView *alertView = nil;
+ id <AppiraterDelegate> delegate = _delegate;
+
+ if(delegate && [delegate respondsToSelector:@selector(appiraterShouldDisplayAlert:)] && ![delegate appiraterShouldDisplayAlert:self]) {
+ return;
+ }
+
+ if (displayRateLaterButton) {
+ alertView = [[UIAlertView alloc] initWithTitle:self.alertTitle
+ message:self.alertMessage
+ delegate:self
+ cancelButtonTitle:self.alertCancelTitle
+ otherButtonTitles:self.alertRateTitle, self.alertRateLaterTitle, nil];
+ } else {
+ alertView = [[UIAlertView alloc] initWithTitle:self.alertTitle
+ message:self.alertMessage
+ delegate:self
+ cancelButtonTitle:self.alertCancelTitle
+ otherButtonTitles:self.alertRateTitle, nil];
+ }
+
+ self.ratingAlert = alertView;
+ [alertView show];
+
+ if (delegate && [delegate respondsToSelector:@selector(appiraterDidDisplayAlert:)]) {
+ [delegate appiraterDidDisplayAlert:self];
+ }
+}
+
+- (void)showRatingAlert
+{
+ [self showRatingAlert:true];
+}
+
+// is this an ok time to show the alert? (regardless of whether the rating conditions have been met)
+//
+// things checked here:
+// * connectivity with network
+// * whether user has rated before
+// * whether user has declined to rate
+// * whether rating alert is currently showing visibly
+// things NOT checked here:
+// * time since first launch
+// * number of uses of app
+// * number of significant events
+// * time since last reminder
+- (BOOL)ratingAlertIsAppropriate {
+ return ([self connectedToNetwork]
+ && ![self userHasDeclinedToRate]
+ && !self.ratingAlert.visible
+ && ![self userHasRatedCurrentVersion]);
+}
+
+// have the rating conditions been met/earned? (regardless of whether this would be a moment when it's appropriate to show a new rating alert)
+//
+// things checked here:
+// * time since first launch
+// * number of uses of app
+// * number of significant events
+// * time since last reminder
+// things NOT checked here:
+// * connectivity with network
+// * whether user has rated before
+// * whether user has declined to rate
+// * whether rating alert is currently showing visibly
+- (BOOL)ratingConditionsHaveBeenMet {
+ if (_debug)
+ return YES;
+
+ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+
+ NSDate *dateOfFirstLaunch = [NSDate dateWithTimeIntervalSince1970:[userDefaults doubleForKey:kAppiraterFirstUseDate]];
+ NSTimeInterval timeSinceFirstLaunch = [[NSDate date] timeIntervalSinceDate:dateOfFirstLaunch];
+ NSTimeInterval timeUntilRate = 60 * 60 * 24 * _daysUntilPrompt;
+ if (timeSinceFirstLaunch < timeUntilRate)
+ return NO;
+
+ // check if the app has been used enough
+ NSInteger useCount = [userDefaults integerForKey:kAppiraterUseCount];
+ if (useCount < _usesUntilPrompt)
+ return NO;
+
+ // check if the user has done enough significant events
+ NSInteger sigEventCount = [userDefaults integerForKey:kAppiraterSignificantEventCount];
+ if (sigEventCount < _significantEventsUntilPrompt)
+ return NO;
+
+ // if the user wanted to be reminded later, has enough time passed?
+ NSDate *reminderRequestDate = [NSDate dateWithTimeIntervalSince1970:[userDefaults doubleForKey:kAppiraterReminderRequestDate]];
+ NSTimeInterval timeSinceReminderRequest = [[NSDate date] timeIntervalSinceDate:reminderRequestDate];
+ NSTimeInterval timeUntilReminder = 60 * 60 * 24 * _timeBeforeReminding;
+ if (timeSinceReminderRequest < timeUntilReminder)
+ return NO;
+
+ return YES;
+}
+
+- (void)incrementUseCount {
+ // get the app's version
+ NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey];
+
+ // get the version number that we've been tracking
+ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+ NSString *trackingVersion = [userDefaults stringForKey:kAppiraterCurrentVersion];
+ if (trackingVersion == nil)
+ {
+ trackingVersion = version;
+ [userDefaults setObject:version forKey:kAppiraterCurrentVersion];
+ }
+
+ if (_debug)
+ NSLog(@"APPIRATER Tracking version: %@", trackingVersion);
+
+ if ([trackingVersion isEqualToString:version])
+ {
+ // check if the first use date has been set. if not, set it.
+ NSTimeInterval timeInterval = [userDefaults doubleForKey:kAppiraterFirstUseDate];
+ if (timeInterval == 0)
+ {
+ timeInterval = [[NSDate date] timeIntervalSince1970];
+ [userDefaults setDouble:timeInterval forKey:kAppiraterFirstUseDate];
+ }
+
+ // increment the use count
+ NSInteger useCount = [userDefaults integerForKey:kAppiraterUseCount];
+ useCount++;
+ [userDefaults setInteger:useCount forKey:kAppiraterUseCount];
+ if (_debug)
+ NSLog(@"APPIRATER Use count: %@", @(useCount));
+ }
+ else
+ {
+ // it's a new version of the app, so restart tracking
+ [userDefaults setObject:version forKey:kAppiraterCurrentVersion];
+ [userDefaults setDouble:[[NSDate date] timeIntervalSince1970] forKey:kAppiraterFirstUseDate];
+ [userDefaults setInteger:1 forKey:kAppiraterUseCount];
+ [userDefaults setInteger:0 forKey:kAppiraterSignificantEventCount];
+ [userDefaults setBool:NO forKey:kAppiraterRatedCurrentVersion];
+ [userDefaults setBool:NO forKey:kAppiraterDeclinedToRate];
+ [userDefaults setDouble:0 forKey:kAppiraterReminderRequestDate];
+ }
+
+ [userDefaults synchronize];
+}
+
+- (void)incrementSignificantEventCount {
+ // get the app's version
+ NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey];
+
+ // get the version number that we've been tracking
+ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+ NSString *trackingVersion = [userDefaults stringForKey:kAppiraterCurrentVersion];
+ if (trackingVersion == nil)
+ {
+ trackingVersion = version;
+ [userDefaults setObject:version forKey:kAppiraterCurrentVersion];
+ }
+
+ if (_debug)
+ NSLog(@"APPIRATER Tracking version: %@", trackingVersion);
+
+ if ([trackingVersion isEqualToString:version])
+ {
+ // check if the first use date has been set. if not, set it.
+ NSTimeInterval timeInterval = [userDefaults doubleForKey:kAppiraterFirstUseDate];
+ if (timeInterval == 0)
+ {
+ timeInterval = [[NSDate date] timeIntervalSince1970];
+ [userDefaults setDouble:timeInterval forKey:kAppiraterFirstUseDate];
+ }
+
+ // increment the significant event count
+ NSInteger sigEventCount = [userDefaults integerForKey:kAppiraterSignificantEventCount];
+ sigEventCount++;
+ [userDefaults setInteger:sigEventCount forKey:kAppiraterSignificantEventCount];
+ if (_debug)
+ NSLog(@"APPIRATER Significant event count: %@", @(sigEventCount));
+ }
+ else
+ {
+ // it's a new version of the app, so restart tracking
+ [userDefaults setObject:version forKey:kAppiraterCurrentVersion];
+ [userDefaults setDouble:0 forKey:kAppiraterFirstUseDate];
+ [userDefaults setInteger:0 forKey:kAppiraterUseCount];
+ [userDefaults setInteger:1 forKey:kAppiraterSignificantEventCount];
+ [userDefaults setBool:NO forKey:kAppiraterRatedCurrentVersion];
+ [userDefaults setBool:NO forKey:kAppiraterDeclinedToRate];
+ [userDefaults setDouble:0 forKey:kAppiraterReminderRequestDate];
+ }
+
+ [userDefaults synchronize];
+}
+
+- (void)incrementAndRate:(BOOL)canPromptForRating {
+ [self incrementUseCount];
+
+ if (canPromptForRating &&
+ [self ratingConditionsHaveBeenMet] &&
+ [self ratingAlertIsAppropriate])
+ {
+ dispatch_async(dispatch_get_main_queue(),
+ ^{
+ [self showRatingAlert];
+ });
+ }
+}
+
+- (void)incrementSignificantEventAndRate:(BOOL)canPromptForRating {
+ [self incrementSignificantEventCount];
+
+ if (canPromptForRating &&
+ [self ratingConditionsHaveBeenMet] &&
+ [self ratingAlertIsAppropriate])
+ {
+ dispatch_async(dispatch_get_main_queue(),
+ ^{
+ [self showRatingAlert];
+ });
+ }
+}
+
+- (BOOL)userHasDeclinedToRate {
+ return [[NSUserDefaults standardUserDefaults] boolForKey:kAppiraterDeclinedToRate];
+}
+
+- (BOOL)userHasRatedCurrentVersion {
+ return [[NSUserDefaults standardUserDefaults] boolForKey:kAppiraterRatedCurrentVersion];
+}
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-implementations"
++ (void)appLaunched {
+ [Appirater appLaunched:YES];
+}
+#pragma GCC diagnostic pop
+
++ (void)appLaunched:(BOOL)canPromptForRating {
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0),
+ ^{
+ Appirater *a = [Appirater sharedInstance];
+ if (_debug) {
+ dispatch_async(dispatch_get_main_queue(),
+ ^{
+ [a showRatingAlert];
+ });
+ } else {
+ [a incrementAndRate:canPromptForRating];
+ }
+ });
+}
+
+- (void)hideRatingAlert {
+ if (self.ratingAlert.visible) {
+ if (_debug)
+ NSLog(@"APPIRATER Hiding Alert");
+ [self.ratingAlert dismissWithClickedButtonIndex:-1 animated:NO];
+ }
+}
+
++ (void)appWillResignActive {
+ if (_debug)
+ NSLog(@"APPIRATER appWillResignActive");
+ [[Appirater sharedInstance] hideRatingAlert];
+}
+
++ (void)appEnteredForeground:(BOOL)canPromptForRating {
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0),
+ ^{
+ [[Appirater sharedInstance] incrementAndRate:canPromptForRating];
+ });
+}
+
++ (void)userDidSignificantEvent:(BOOL)canPromptForRating {
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0),
+ ^{
+ [[Appirater sharedInstance] incrementSignificantEventAndRate:canPromptForRating];
+ });
+}
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-implementations"
++ (void)showPrompt {
+ [Appirater tryToShowPrompt];
+}
+#pragma GCC diagnostic pop
+
++ (void)tryToShowPrompt {
+ [[Appirater sharedInstance] showPromptWithChecks:true
+ displayRateLaterButton:true];
+}
+
++ (void)forceShowPrompt:(BOOL)displayRateLaterButton {
+ [[Appirater sharedInstance] showPromptWithChecks:false
+ displayRateLaterButton:displayRateLaterButton];
+}
+
+- (void)showPromptWithChecks:(BOOL)withChecks
+ displayRateLaterButton:(BOOL)displayRateLaterButton {
+ if (withChecks == NO || [self ratingAlertIsAppropriate]) {
+ [self showRatingAlert:displayRateLaterButton];
+ }
+}
+
++ (id)getRootViewController {
+ UIWindow *window = [[UIApplication sharedApplication] keyWindow];
+ if (window.windowLevel != UIWindowLevelNormal) {
+ NSArray *windows = [[UIApplication sharedApplication] windows];
+ for(window in windows) {
+ if (window.windowLevel == UIWindowLevelNormal) {
+ break;
+ }
+ }
+ }
+
+ return [Appirater iterateSubViewsForViewController:window]; // iOS 8+ deep traverse
+}
+
++ (id)iterateSubViewsForViewController:(UIView *) parentView {
+ for (UIView *subView in [parentView subviews]) {
+ UIResponder *responder = [subView nextResponder];
+ if([responder isKindOfClass:[UIViewController class]]) {
+ return [self topMostViewController: (UIViewController *) responder];
+ }
+ id found = [Appirater iterateSubViewsForViewController:subView];
+ if( nil != found) {
+ return found;
+ }
+ }
+ return nil;
+}
+
++ (UIViewController *) topMostViewController: (UIViewController *) controller {
+ BOOL isPresenting = NO;
+ do {
+ // this path is called only on iOS 6+, so -presentedViewController is fine here.
+ UIViewController *presented = [controller presentedViewController];
+ isPresenting = presented != nil;
+ if(presented != nil) {
+ controller = presented;
+ }
+
+ } while (isPresenting);
+
+ return controller;
+}
+
++ (void)rateApp {
+
+ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+ [userDefaults setBool:YES forKey:kAppiraterRatedCurrentVersion];
+ [userDefaults synchronize];
+
+ //Use the in-app StoreKit view if available (iOS 6) and imported. This works in the simulator.
+ if (![Appirater sharedInstance].openInAppStore && NSStringFromClass([SKStoreProductViewController class]) != nil) {
+
+ SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];
+ NSNumber *appId = [NSNumber numberWithInteger:_appId.integerValue];
+ [storeViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier:appId} completionBlock:nil];
+ storeViewController.delegate = self.sharedInstance;
+
+ id <AppiraterDelegate> delegate = self.sharedInstance.delegate;
+ if ([delegate respondsToSelector:@selector(appiraterWillPresentModalView:animated:)]) {
+ [delegate appiraterWillPresentModalView:self.sharedInstance animated:_usesAnimation];
+ }
+ [[self getRootViewController] presentViewController:storeViewController animated:_usesAnimation completion:^{
+ [self setModalOpen:YES];
+ //Temporarily use a black status bar to match the StoreKit view.
+ [self setStatusBarStyle:[UIApplication sharedApplication].statusBarStyle];
+#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
+ [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent animated:_usesAnimation];
+#endif
+ }];
+
+ //Use the standard openUrl method if StoreKit is unavailable.
+ } else {
+
+ #if TARGET_IPHONE_SIMULATOR
+ NSLog(@"APPIRATER NOTE: iTunes App Store is not supported on the iOS simulator. Unable to open App Store page.");
+ #else
+ NSString *reviewURL = [templateReviewURL stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%@", _appId]];
+
+ // iOS 7 needs a different templateReviewURL @see https://github.com/arashpayan/appirater/issues/131
+ // Fixes condition @see https://github.com/arashpayan/appirater/issues/205
+ if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 8.0) {
+ reviewURL = [templateReviewURLiOS7 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%@", _appId]];
+ }
+ // iOS 8 needs a different templateReviewURL also @see https://github.com/arashpayan/appirater/issues/182
+ else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
+ {
+ reviewURL = [templateReviewURLiOS8 stringByReplacingOccurrencesOfString:@"APP_ID" withString:[NSString stringWithFormat:@"%@", _appId]];
+ }
+
+ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:reviewURL]];
+ #endif
+ }
+}
+
+- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
+ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+
+ id <AppiraterDelegate> delegate = _delegate;
+
+ switch (buttonIndex) {
+ case 0:
+ {
+ // they don't want to rate it
+ [userDefaults setBool:YES forKey:kAppiraterDeclinedToRate];
+ [userDefaults synchronize];
+ if(delegate && [delegate respondsToSelector:@selector(appiraterDidDeclineToRate:)]){
+ [delegate appiraterDidDeclineToRate:self];
+ }
+ break;
+ }
+ case 1:
+ {
+ // they want to rate it
+ [Appirater rateApp];
+ if(delegate&& [delegate respondsToSelector:@selector(appiraterDidOptToRate:)]){
+ [delegate appiraterDidOptToRate:self];
+ }
+ break;
+ }
+ case 2:
+ // remind them later
+ [userDefaults setDouble:[[NSDate date] timeIntervalSince1970] forKey:kAppiraterReminderRequestDate];
+ [userDefaults synchronize];
+ if(delegate && [delegate respondsToSelector:@selector(appiraterDidOptToRemindLater:)]){
+ [delegate appiraterDidOptToRemindLater:self];
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+//Delegate call from the StoreKit view.
+- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
+ [Appirater closeModal];
+}
+
+//Close the in-app rating (StoreKit) view and restore the previous status bar style.
++ (void)closeModal {
+ if (_modalOpen) {
+ [[UIApplication sharedApplication]setStatusBarStyle:_statusBarStyle animated:_usesAnimation];
+ BOOL usedAnimation = _usesAnimation;
+ [self setModalOpen:NO];
+
+ // get the top most controller (= the StoreKit Controller) and dismiss it
+ UIViewController *presentingController = [UIApplication sharedApplication].keyWindow.rootViewController;
+ presentingController = [self topMostViewController: presentingController];
+ [presentingController dismissViewControllerAnimated:_usesAnimation completion:^{
+ id <AppiraterDelegate> delegate = self.sharedInstance.delegate;
+ if ([delegate respondsToSelector:@selector(appiraterDidDismissModalView:animated:)]) {
+ [delegate appiraterDidDismissModalView:(Appirater *)self animated:usedAnimation];
+ }
+ }];
+ [self.class setStatusBarStyle:(UIStatusBarStyle)nil];
+ }
+}
+
+@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/Appirater/AppiraterDelegate.h Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,23 @@
+//
+// AppiraterDelegate.h
+// Banana Stand
+//
+// Created by Robert Haining on 9/25/12.
+// Copyright (c) 2012 News.me. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class Appirater;
+
+@protocol AppiraterDelegate <NSObject>
+
+@optional
+-(BOOL)appiraterShouldDisplayAlert:(Appirater *)appirater;
+-(void)appiraterDidDisplayAlert:(Appirater *)appirater;
+-(void)appiraterDidDeclineToRate:(Appirater *)appirater;
+-(void)appiraterDidOptToRate:(Appirater *)appirater;
+-(void)appiraterDidOptToRemindLater:(Appirater *)appirater;
+-(void)appiraterWillPresentModalView:(Appirater *)appirater animated:(BOOL)animated;
+-(void)appiraterDidDismissModalView:(Appirater *)appirater animated:(BOOL)animated;
+@end
--- a/project_files/HedgewarsMobile/Classes/CreationChamber.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/CreationChamber.m Mon Nov 09 16:34:03 2015 +0000
@@ -57,7 +57,7 @@
[[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL];
NSArray *schemeNames = [[NSArray alloc] initWithObjects:@"Default",@"Pro Mode",@"Shoppa",@"Clean Slate",
@"Minefield",@"Barrel Mayhem",@"Tunnel Hogs",@"Fort Mode",@"Timeless",
- @"Thinking with Portals",@"King Mode",nil];
+ @"Thinking with Portals",@"King Mode",@"Construction Mode",nil];
index = 0;
for (NSString *name in schemeNames)
[self createSchemeNamed:name ofType:index++];
@@ -65,7 +65,7 @@
// WEAPONS - always overwrite as merge is not needed (missing weaps are 0ed automatically)
NSArray *weaponNames = [[NSArray alloc] initWithObjects:@"Default",@"Crazy",@"Pro Mode",@"Shoppa",@"Clean Slate",
- @"Minefield",@"Thinking with Portals",nil];
+ @"Minefield",@"Thinking with Portals",@"One of Everything",@"Highlander",@"Construction Mode",@"Shoppa Pro",nil];
index = 0;
for (NSString *name in weaponNames)
[self createWeaponNamed:name ofType:index++];
@@ -241,6 +241,30 @@
delay = [[NSString alloc] initWithBytes:AMMOLINE_PORTALS_DELAY length:ammolineSize encoding:NSUTF8StringEncoding];
crate = [[NSString alloc] initWithBytes:AMMOLINE_PORTALS_CRATE length:ammolineSize encoding:NSUTF8StringEncoding];
break;
+ case 7: //one of everything
+ qt = [[NSString alloc] initWithBytes:AMMOLINE_ONEEVERY_QT length:ammolineSize encoding:NSUTF8StringEncoding];
+ prob = [[NSString alloc] initWithBytes:AMMOLINE_ONEEVERY_PROB length:ammolineSize encoding:NSUTF8StringEncoding];
+ delay = [[NSString alloc] initWithBytes:AMMOLINE_ONEEVERY_DELAY length:ammolineSize encoding:NSUTF8StringEncoding];
+ crate = [[NSString alloc] initWithBytes:AMMOLINE_ONEEVERY_CRATE length:ammolineSize encoding:NSUTF8StringEncoding];
+ break;
+ case 8: //highlander
+ qt = [[NSString alloc] initWithBytes:AMMOLINE_HIGHLANDER_QT length:ammolineSize encoding:NSUTF8StringEncoding];
+ prob = [[NSString alloc] initWithBytes:AMMOLINE_HIGHLANDER_PROB length:ammolineSize encoding:NSUTF8StringEncoding];
+ delay = [[NSString alloc] initWithBytes:AMMOLINE_HIGHLANDER_DELAY length:ammolineSize encoding:NSUTF8StringEncoding];
+ crate = [[NSString alloc] initWithBytes:AMMOLINE_HIGHLANDER_CRATE length:ammolineSize encoding:NSUTF8StringEncoding];
+ break;
+ case 9: //construction mode
+ qt = [[NSString alloc] initWithBytes:AMMOLINE_CONSTRUCTION_QT length:ammolineSize encoding:NSUTF8StringEncoding];
+ prob = [[NSString alloc] initWithBytes:AMMOLINE_CONSTRUCTION_PROB length:ammolineSize encoding:NSUTF8StringEncoding];
+ delay = [[NSString alloc] initWithBytes:AMMOLINE_CONSTRUCTION_DELAY length:ammolineSize encoding:NSUTF8StringEncoding];
+ crate = [[NSString alloc] initWithBytes:AMMOLINE_CONSTRUCTION_CRATE length:ammolineSize encoding:NSUTF8StringEncoding];
+ break;
+ case 10: //shoppa pro
+ qt = [[NSString alloc] initWithBytes:AMMOLINE_SHOPPAPRO_QT length:ammolineSize encoding:NSUTF8StringEncoding];
+ prob = [[NSString alloc] initWithBytes:AMMOLINE_SHOPPAPRO_PROB length:ammolineSize encoding:NSUTF8StringEncoding];
+ delay = [[NSString alloc] initWithBytes:AMMOLINE_SHOPPAPRO_DELAY length:ammolineSize encoding:NSUTF8StringEncoding];
+ crate = [[NSString alloc] initWithBytes:AMMOLINE_SHOPPAPRO_CRATE length:ammolineSize encoding:NSUTF8StringEncoding];
+ break;
}
NSDictionary *theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: qt,@"ammostore_initialqt",
@@ -303,6 +327,7 @@
[basicArray replaceObjectAtIndex:9 withObject:[NSNumber numberWithInt:25]];
[basicArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithInt:0]];
[basicArray replaceObjectAtIndex:13 withObject:[NSNumber numberWithInt:0]];
+ [basicArray replaceObjectAtIndex:15 withObject:[NSNumber numberWithInt:8]];
[gamemodArray replaceObjectAtIndex:1 withObject:[NSNumber numberWithBool:YES]];
[gamemodArray replaceObjectAtIndex:2 withObject:[NSNumber numberWithBool:YES]];
[gamemodArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithBool:YES]];
@@ -342,6 +367,7 @@
[basicArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithInt:10]];
[basicArray replaceObjectAtIndex:12 withObject:[NSNumber numberWithInt:10]];
[basicArray replaceObjectAtIndex:13 withObject:[NSNumber numberWithInt:10]];
+ [basicArray replaceObjectAtIndex:15 withObject:[NSNumber numberWithInt:4]];
[gamemodArray replaceObjectAtIndex:2 withObject:[NSNumber numberWithBool:YES]];
[gamemodArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithBool:YES]];
[gamemodArray replaceObjectAtIndex:14 withObject:[NSNumber numberWithBool:YES]];
@@ -373,6 +399,7 @@
[basicArray replaceObjectAtIndex:10 withObject:[NSNumber numberWithInt:4]];
[basicArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithInt:5]];
[basicArray replaceObjectAtIndex:13 withObject:[NSNumber numberWithInt:5]];
+ [basicArray replaceObjectAtIndex:15 withObject:[NSNumber numberWithInt:4]];
[gamemodArray replaceObjectAtIndex:9 withObject:[NSNumber numberWithBool:YES]];
[gamemodArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithBool:YES]];
break;
@@ -380,6 +407,15 @@
[gamemodArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithBool:YES]];
[gamemodArray replaceObjectAtIndex:12 withObject:[NSNumber numberWithBool:YES]];
break;
+ case 11: // construction mode
+ [basicArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithInt:0]];
+ [basicArray replaceObjectAtIndex:13 withObject:[NSNumber numberWithInt:0]];
+ [gamemodArray replaceObjectAtIndex:11 withObject:[NSNumber numberWithBool:YES]];
+ [gamemodArray replaceObjectAtIndex:15 withObject:[NSNumber numberWithBool:YES]];
+ [gamemodArray replaceObjectAtIndex:16 withObject:[NSNumber numberWithBool:YES]];
+ [gamemodArray replaceObjectAtIndex:18 withObject:[NSNumber numberWithBool:YES]];
+ [gamemodArray replaceObjectAtIndex:20 withObject:[NSNumber numberWithBool:YES]];
+ break;
}
NSMutableDictionary *theScheme = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
--- a/project_files/HedgewarsMobile/Classes/EditableCellView.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/EditableCellView.m Mon Nov 09 16:34:03 2015 +0000
@@ -18,7 +18,7 @@
#import "EditableCellView.h"
-
+#import "UITableViewCell+FindTable.h"
@implementation EditableCellView
@synthesize delegate, textField, titleLabel, minimumCharacters, maximumCharacters, respectEditing, oldValue;
@@ -103,13 +103,13 @@
-(BOOL) textFieldShouldBeginEditing:(UITextField *)aTextField {
return (delegate != nil) &&
[delegate respondsToSelector:@selector(saveTextFieldValue:withTag:)] &&
- (respectEditing) ? ((UITableView*)[self superview]).editing : YES;
+ (respectEditing) ? [self findTable].editing : YES;
}
// the textfield is being modified, update the navigation controller
-(void) textFieldDidBeginEditing:(UITextField *)aTextField{
// don't interact with table below
- ((UITableView*)[self superview]).scrollEnabled = NO;
+ [self findTable].scrollEnabled = NO;
self.oldValue = self.textField.text;
@@ -147,9 +147,9 @@
[self save:aTextField];
// restores default behaviour on caller
- ((UITableView*)[self superview]).scrollEnabled = YES;
- [(UITableViewController *)delegate navigationItem].rightBarButtonItem = [(UITableViewController *)delegate navigationItem].backBarButtonItem;
- [(UITableViewController *)delegate navigationItem].leftBarButtonItem = nil;
+ [self findTable].scrollEnabled = YES;
+ [(UITableViewController *)delegate navigationItem].leftBarButtonItem = [(UITableViewController *)delegate navigationItem].backBarButtonItem;
+ [(UITableViewController *)delegate navigationItem].rightBarButtonItem = nil;
}
#pragma mark -
--- a/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/EngineProtocolNetwork.m Mon Nov 09 16:34:03 2015 +0000
@@ -197,7 +197,7 @@
// wrapper that computes the length of the message and then sends the command string, saving the command on a file
-(int) sendToEngine:(NSString *)string {
- uint8_t length = [string length];
+ uint8_t length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
[self dumpRawData:[string UTF8String] ofSize:length];
SDLNet_TCP_Send(csd, &length, 1);
@@ -206,7 +206,7 @@
// wrapper that computes the length of the message and then sends the command string, skipping file writing
-(int) sendToEngineNoSave:(NSString *)string {
- uint8_t length = [string length];
+ uint8_t length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
SDLNet_TCP_Send(csd, &length, 1);
return SDLNet_TCP_Send(csd, [string UTF8String], length);
@@ -341,19 +341,25 @@
NSString *tempStr = [NSString stringWithUTF8String:&buffer[2]];
NSArray *info = [tempStr componentsSeparatedByString:@" "];
NSString *arg = [info objectAtIndex:0];
- int index = [arg length] + 3;
+ int index = [arg lengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 3;
switch (buffer[1]) {
case 'r': // winning team
[statsArray insertObject:[NSString stringWithUTF8String:&buffer[2]] atIndex:1];
break;
case 'D': // best shot
- [statsArray addObject:[NSString stringWithFormat:@"The best shot award won by %s (with %@ points)", &buffer[index], arg]];
+ {
+ NSString *hogName = [NSString stringWithUTF8String:&buffer[index]];
+ [statsArray addObject:[NSString stringWithFormat:NSLocalizedString(@"The best shot award won by %@ (with %@ points)", nil), hogName, arg]];
break;
+ }
case 'k': // best hedgehog
- [statsArray addObject:[NSString stringWithFormat:@"The best killer is %s with %@ kill(s) in a turn", &buffer[index], arg]];
+ {
+ NSString *hogName = [NSString stringWithUTF8String:&buffer[index]];
+ [statsArray addObject:[NSString stringWithFormat:NSLocalizedString(@"The best killer is %@ with %@ kill(s) in a turn", nil), hogName, arg]];
break;
+ }
case 'K': // number of hogs killed
- [statsArray addObject:[NSString stringWithFormat:@"%@ hedgehog(s) were killed during this round", arg]];
+ [statsArray addObject:[NSString stringWithFormat:NSLocalizedString(@"%@ hedgehog(s) were killed during this round", nil), arg]];
break;
case 'H': // team health/graph
break;
@@ -364,14 +370,23 @@
[[statsArray objectAtIndex:0] addObject:tempStr];
break;
case 's': // self damage
- [statsArray addObject:[NSString stringWithFormat:@"%s thought it's good to shoot his own hedgehogs with %@ points", &buffer[index], arg]];
+ {
+ NSString *hogName = [NSString stringWithUTF8String:&buffer[index]];
+ [statsArray addObject:[NSString stringWithFormat:NSLocalizedString(@"%@ thought it's good to shoot his own hedgehogs with %@ points", nil), hogName, arg]];
break;
+ }
case 'S': // friendly fire
- [statsArray addObject:[NSString stringWithFormat:@"%s killed %@ of his own hedgehogs", &buffer[index], arg]];
+ {
+ NSString *hogName = [NSString stringWithUTF8String:&buffer[index]];
+ [statsArray addObject:[NSString stringWithFormat:NSLocalizedString(@"%@ killed %@ of his own hedgehogs", nil), hogName, arg]];
break;
+ }
case 'B': // turn skipped
- [statsArray addObject:[NSString stringWithFormat:@"%s was scared and skipped turn %@ times", &buffer[index], arg]];
+ {
+ NSString *hogName = [NSString stringWithUTF8String:&buffer[index]];
+ [statsArray addObject:[NSString stringWithFormat:NSLocalizedString(@"%@ was scared and skipped turn %@ times", nil), hogName, arg]];
break;
+ }
default:
DLog(@"Unhandled stat message, see statsPage.cpp");
break;
--- a/project_files/HedgewarsMobile/Classes/FortsViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/FortsViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -38,11 +38,13 @@
NSArray *directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:FORTS_DIRECTORY() error:NULL];
NSMutableArray *filteredContents = [[NSMutableArray alloc] initWithCapacity:([directoryContents count] / IMGNUM_PER_FORT)];
- // we need to remove the double entries and the L.png suffix
- for (NSUInteger i = 0; i < [directoryContents count]; i++) {
- if (i % IMGNUM_PER_FORT == IMGNUM_PER_FORT-1) {
- NSString *currentName = [directoryContents objectAtIndex:i];
- NSString *correctName = [currentName substringToIndex:([currentName length] - 5)];
+ // we assume here that fort's images has one image with the 'L.png' suffix and we remove this suffix to get the correct name
+ for (NSUInteger i = 0; i < [directoryContents count]; i++)
+ {
+ NSString *currentName = [directoryContents objectAtIndex:i];
+ if ([currentName rangeOfString:@"L.png"].location != NSNotFound)
+ {
+ NSString *correctName = [currentName stringByReplacingOccurrencesOfString:@"L.png" withString:@""];
[filteredContents addObject:correctName];
}
}
--- a/project_files/HedgewarsMobile/Classes/GameConfigViewController-iPhone.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController-iPhone.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,438 +1,105 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
- <data>
- <int key="IBDocument.SystemTarget">1792</int>
- <string key="IBDocument.SystemVersion">14E46</string>
- <string key="IBDocument.InterfaceBuilderVersion">7706</string>
- <string key="IBDocument.AppKitVersion">1348.17</string>
- <string key="IBDocument.HIToolboxVersion">758.70</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">7703</string>
- </object>
- <array key="IBDocument.IntegratedClassDependencies">
- <string>IBProxyObject</string>
- <string>IBUIBarButtonItem</string>
- <string>IBUISegmentedControl</string>
- <string>IBUIToolbar</string>
- <string>IBUIView</string>
- <string>IBUIViewController</string>
- </array>
- <array key="IBDocument.PluginDependencies">
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </array>
- <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
- <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <object class="IBProxyObject" id="841351856">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBProxyObject" id="606714003">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIView" id="766721923">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIToolbar" id="836721772">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">266</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUISegmentedControl" id="563596142">
- <reference key="NSNextResponder" ref="836721772"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{105, 8}, {270, 30}}</string>
- <reference key="NSSuperview" ref="836721772"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">12345</int>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBSegmentControlStyle">2</int>
- <int key="IBNumberOfSegments">4</int>
- <int key="IBSelectedSegmentIndex">0</int>
- <array key="IBSegmentTitles">
- <string>Map</string>
- <string>Teams</string>
- <string>Details</string>
- <string>Help</string>
- </array>
- <array class="NSMutableArray" key="IBSegmentWidths">
- <real value="0.0"/>
- <real value="0.0"/>
- <real value="0.0"/>
- <real value="0.0"/>
- </array>
- <array class="NSMutableArray" key="IBSegmentEnabledStates">
- <boolean value="YES"/>
- <boolean value="YES"/>
- <boolean value="YES"/>
- <boolean value="YES"/>
- </array>
- <array class="NSMutableArray" key="IBSegmentContentOffsets">
- <string>{0, 0}</string>
- <string>{0, 0}</string>
- <string>{0, 0}</string>
- <string>{0, 0}</string>
- </array>
- <array class="NSMutableArray" key="IBSegmentImages">
- <object class="NSNull" id="4"/>
- <reference ref="4"/>
- <reference ref="4"/>
- <reference ref="4"/>
- </array>
- <object class="NSColor" key="IBTintColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC42IDAuNiAwLjYAA</bytes>
- </object>
- </object>
- </array>
- <string key="NSFrame">{{0, 276}, {480, 44}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="563596142"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIBarStyle">1</int>
- <array class="NSMutableArray" key="IBUIItems">
- <object class="IBUIBarButtonItem" id="80281356">
- <string key="IBUITitle">Back</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIStyle">1</int>
- <reference key="IBUIToolbar" ref="836721772"/>
- </object>
- <object class="IBUIBarButtonItem" id="716161941">
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <reference key="IBUIToolbar" ref="836721772"/>
- <int key="IBUISystemItemIdentifier">5</int>
- </object>
- <object class="IBUIBarButtonItem" id="530186890">
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <reference key="IBUICustomView" ref="563596142"/>
- <reference key="IBUIToolbar" ref="836721772"/>
- </object>
- <object class="IBUIBarButtonItem" id="188600069">
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <reference key="IBUIToolbar" ref="836721772"/>
- <int key="IBUISystemItemIdentifier">5</int>
- </object>
- <object class="IBUIBarButtonItem" id="919181414">
- <int key="IBUITag">1</int>
- <string key="IBUITitle">Start</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <float key="IBUIWidth">68</float>
- <int key="IBUIStyle">2</int>
- <reference key="IBUIToolbar" ref="836721772"/>
- </object>
- </array>
- </object>
- <object class="IBUIView" id="914954699">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{480, 276}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="848489667"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- <object class="NSColorSpace" key="NSCustomColorSpace" id="9020506">
- <int key="NSID">2</int>
- </object>
- </object>
- <bool key="IBUIClipsSubviews">YES</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIView" id="848489667">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{480, 276}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="836721772"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- <reference key="NSCustomColorSpace" ref="9020506"/>
- </object>
- <bool key="IBUIClipsSubviews">YES</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- </array>
- <string key="NSFrameSize">{480, 320}</string>
- <reference key="NSNextKeyView" ref="914954699"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="IBUIInterfaceOrientation">3</int>
- <int key="interfaceOrientation">3</int>
- </object>
- <object class="IBUISimulatedSizeMetrics" key="IBUISimulatedDestinationMetrics">
- <string key="IBUISimulatedSizeMetricsClass">IBUISimulatedFreeformSizeMetricsSentinel</string>
- <string key="IBUIDisplayName">Freeform</string>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIViewController" id="682131721">
- <string key="IBUINibName">MapConfigViewController-iPhone</string>
- <object class="IBUISimulatedToolbarMetrics" key="IBUISimulatedBottomBarMetrics"/>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics" id="789431191">
- <int key="IBUIInterfaceOrientation">3</int>
- <int key="interfaceOrientation">3</int>
- </object>
- <object class="IBUIScreenMetrics" key="IBUISimulatedDestinationMetrics" id="387354061">
- <string key="IBUISimulatedSizeMetricsClass">IBUIScreenMetrics</string>
- <string key="IBUITargetRuntime">IBCocoaTouchFramework</string>
- <string key="IBUIDisplayName">iPhone 4-inch</string>
- <object class="NSMutableDictionary" key="IBUINormalizedOrientationToSizeMap">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <array key="dict.sortedKeys">
- <integer value="1"/>
- <integer value="3"/>
- </array>
- <array key="dict.values">
- <string>{320, 568}</string>
- <string>{568, 320}</string>
- </array>
- </object>
- <int key="IBUIType">2</int>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIHorizontal">YES</bool>
- </object>
- <object class="IBUIViewController" id="508843780">
- <object class="IBUISimulatedToolbarMetrics" key="IBUISimulatedBottomBarMetrics" id="129104688">
- <int key="IBUIBarStyle">1</int>
- </object>
- <reference key="IBUISimulatedOrientationMetrics" ref="789431191"/>
- <reference key="IBUISimulatedDestinationMetrics" ref="387354061"/>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIHorizontal">YES</bool>
- </object>
- <object class="IBUIViewController" id="290947091">
- <reference key="IBUISimulatedBottomBarMetrics" ref="129104688"/>
- <reference key="IBUISimulatedOrientationMetrics" ref="789431191"/>
- <reference key="IBUISimulatedDestinationMetrics" ref="387354061"/>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIHorizontal">YES</bool>
- </object>
- </array>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <array key="connectionRecords">
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="766721923"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">mapConfigViewController</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="682131721"/>
- </object>
- <int key="connectionID">33</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">teamConfigViewController</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="508843780"/>
- </object>
- <int key="connectionID">34</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">schemeWeaponConfigViewController</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="290947091"/>
- </object>
- <int key="connectionID">35</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonPressed:</string>
- <reference key="source" ref="80281356"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">17</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonPressed:</string>
- <reference key="source" ref="919181414"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">23</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">segmentPressed:</string>
- <reference key="source" ref="563596142"/>
- <reference key="destination" ref="841351856"/>
- <int key="IBEventType">13</int>
- </object>
- <int key="connectionID">29</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="508843780"/>
- <reference key="destination" ref="914954699"/>
- </object>
- <int key="connectionID">42</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="290947091"/>
- <reference key="destination" ref="848489667"/>
- </object>
- <int key="connectionID">43</int>
- </object>
- </array>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <array key="orderedObjects">
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <array key="object" id="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="841351856"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="606714003"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="766721923"/>
- <array class="NSMutableArray" key="children">
- <reference ref="836721772"/>
- <reference ref="914954699"/>
- <reference ref="848489667"/>
- </array>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="836721772"/>
- <array class="NSMutableArray" key="children">
- <reference ref="80281356"/>
- <reference ref="919181414"/>
- <reference ref="188600069"/>
- <reference ref="530186890"/>
- <reference ref="716161941"/>
- </array>
- <reference key="parent" ref="766721923"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="80281356"/>
- <reference key="parent" ref="836721772"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">18</int>
- <reference key="object" ref="919181414"/>
- <reference key="parent" ref="836721772"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">19</int>
- <reference key="object" ref="188600069"/>
- <reference key="parent" ref="836721772"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">21</int>
- <reference key="object" ref="530186890"/>
- <array class="NSMutableArray" key="children">
- <reference ref="563596142"/>
- </array>
- <reference key="parent" ref="836721772"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">20</int>
- <reference key="object" ref="563596142"/>
- <reference key="parent" ref="530186890"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">22</int>
- <reference key="object" ref="716161941"/>
- <reference key="parent" ref="836721772"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">30</int>
- <reference key="object" ref="682131721"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">31</int>
- <reference key="object" ref="508843780"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">32</int>
- <reference key="object" ref="290947091"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">40</int>
- <reference key="object" ref="914954699"/>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">TeamConfigViewController View</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="848489667"/>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">SchemeWeaponConfigViewController View</string>
- </object>
- </array>
- </object>
- <dictionary class="NSMutableDictionary" key="flattenedProperties">
- <string key="-1.CustomClassName">GameConfigViewController</string>
- <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="-2.CustomClassName">UIResponder</string>
- <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="15.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="18.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="20.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="21.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="30.CustomClassName">MapConfigViewController</string>
- <string key="30.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="31.CustomClassName">TeamConfigViewController</string>
- <string key="31.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="32.CustomClassName">SchemeWeaponConfigViewController</string>
- <string key="32.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="40.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="41.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
- <nil key="activeLocalization"/>
- <dictionary class="NSMutableDictionary" key="localizations"/>
- <nil key="sourceID"/>
- <int key="maxID">45</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="4600" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="GameConfigViewController">
+ <connections>
+ <outlet property="backButton" destination="16" id="JdX-PP-V4d"/>
+ <outlet property="mapConfigViewController" destination="30" id="33"/>
+ <outlet property="schemeWeaponConfigViewController" destination="32" id="35"/>
+ <outlet property="startButton" destination="18" id="0Gc-dB-ioC"/>
+ <outlet property="tabsSegmentedControl" destination="20" id="PVz-zB-sKx"/>
+ <outlet property="teamConfigViewController" destination="31" id="34"/>
+ <outlet property="view" destination="2" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" barStyle="black" id="15">
+ <rect key="frame" x="0.0" y="276" width="480" height="44"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <animations/>
+ <items>
+ <barButtonItem title="Back" id="16">
+ <connections>
+ <action selector="buttonPressed:" destination="-1" id="17"/>
+ </connections>
+ </barButtonItem>
+ <barButtonItem style="plain" systemItem="flexibleSpace" id="22"/>
+ <barButtonItem style="plain" id="21">
+ <segmentedControl key="customView" opaque="NO" tag="12345" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="20">
+ <rect key="frame" x="105" y="7" width="270" height="30"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <segments>
+ <segment title="Map"/>
+ <segment title="Teams"/>
+ <segment title="Details"/>
+ <segment title="Help"/>
+ </segments>
+ <color key="tintColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+ <connections>
+ <action selector="segmentPressed:" destination="-1" eventType="valueChanged" id="29"/>
+ </connections>
+ </segmentedControl>
+ </barButtonItem>
+ <barButtonItem style="plain" systemItem="flexibleSpace" id="19"/>
+ <barButtonItem tag="1" title="Start" width="68" style="done" id="18">
+ <connections>
+ <action selector="buttonPressed:" destination="-1" id="23"/>
+ </connections>
+ </barButtonItem>
+ </items>
+ </toolbar>
+ <view clipsSubviews="YES" contentMode="scaleToFill" id="40" userLabel="TeamConfigViewController View">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="276"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ <view clipsSubviews="YES" contentMode="scaleToFill" id="41" userLabel="SchemeWeaponConfigViewController View">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="276"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ <point key="canvasLocation" x="944" y="504"/>
+ </view>
+ <viewController nibName="MapConfigViewController-iPhone" id="30" customClass="MapConfigViewController">
+ <extendedEdge key="edgesForExtendedLayout"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ </viewController>
+ <viewController id="31" customClass="TeamConfigViewController">
+ <extendedEdge key="edgesForExtendedLayout"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedToolbarMetrics key="simulatedBottomBarMetrics" barStyle="black"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <connections>
+ <outlet property="view" destination="40" id="42"/>
+ </connections>
+ </viewController>
+ <viewController id="32" customClass="SchemeWeaponConfigViewController">
+ <extendedEdge key="edgesForExtendedLayout"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedToolbarMetrics key="simulatedBottomBarMetrics" barStyle="black"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <connections>
+ <outlet property="view" destination="41" id="43"/>
+ </connections>
+ </viewController>
+ </objects>
+</document>
--- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -36,7 +36,8 @@
HelpPageLobbyViewController *helpPage;
}
-@property (retain) UIView *imgContainer;
+@property (atomic) BOOL isDrawingNiceHogs;
+@property (nonatomic,retain) UIView *imgContainer;
@property (nonatomic,retain) UILabel * sliderBackground;
@property (nonatomic,retain) IBOutlet UIImageView *titleImage;
@property (nonatomic,retain) IBOutlet SchemeWeaponConfigViewController *schemeWeaponConfigViewController;
--- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -24,6 +24,13 @@
#import "GameInterfaceBridge.h"
#import "HelpPageLobbyViewController.h"
+@interface GameConfigViewController ()
+@property (nonatomic, retain) IBOutlet UISegmentedControl *tabsSegmentedControl; //iPhone only
+
+@property (nonatomic, retain) IBOutlet UIBarButtonItem *backButton; //iPhone only
+@property (nonatomic, retain) IBOutlet UIBarButtonItem *startButton; //iPhone only
+@end
+
@implementation GameConfigViewController
@synthesize imgContainer, titleImage, sliderBackground, helpPage,
mapConfigViewController, teamConfigViewController, schemeWeaponConfigViewController;
@@ -32,6 +39,8 @@
return rotationManager(interfaceOrientation);
}
+#pragma mark - Buttons
+
-(IBAction) buttonPressed:(id) sender {
UIButton *theButton = (UIButton *)sender;
@@ -55,12 +64,7 @@
if ([self isEverythingSet] == NO)
return;
theButton.enabled = NO;
- for (UIView *oneView in self.imgContainer.subviews) {
- if ([oneView isMemberOfClass:[UIImageView class]]) {
- UIImageView *anImageView = (UIImageView *)oneView;
- [anImageView removeFromSuperview];
- }
- }
+ [self clearImgContainer];
[self startGame:theButton];
break;
@@ -81,6 +85,17 @@
}
}
+#pragma mark - Tabs Segmented Control
+
+- (void)localizeTabsSegmentedControl
+{
+ for (NSUInteger i = 0; i < self.tabsSegmentedControl.numberOfSegments; i++)
+ {
+ NSString *oldTitle = [self.tabsSegmentedControl titleForSegmentAtIndex:i];
+ [self.tabsSegmentedControl setTitle:NSLocalizedString(oldTitle, nil) forSegmentAtIndex:i];
+ }
+}
+
-(IBAction) segmentPressed:(id) sender {
UISegmentedControl *theSegment = (UISegmentedControl *)sender;
@@ -121,6 +136,8 @@
}
+#pragma mark -
+
-(BOOL) isEverythingSet {
// don't start playing if the preview is in progress
if ([self.mapConfigViewController busy]) {
@@ -229,73 +246,95 @@
[gameDictionary release];
}
--(void) loadNiceHogs {
- @autoreleasepool {
+-(void) loadNiceHogs
+{
+ @autoreleasepool
+ {
- srand(time(NULL));
- NSString *filePath = [[NSString alloc] initWithFormat:@"%@/Hedgehog/Idle.png",GRAPHICS_DIRECTORY()];
- UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:filePath];
- [filePath release];
+ NSString *filePath = [[NSString alloc] initWithFormat:@"%@/Hedgehog/Idle.png",GRAPHICS_DIRECTORY()];
+ UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:filePath];
+ [filePath release];
- NSArray *hatArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:HATS_DIRECTORY() error:NULL];
- NSUInteger numberOfHats = [hatArray count];
- int animationFrames = IS_VERY_POWERFUL([HWUtils modelType]) ? 18 : 1;
-
- if (self.imgContainer != nil)
- [self.imgContainer removeFromSuperview];
-
- self.imgContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 40)];
- NSInteger numberOfHogs = 1 + random() % 20;
- DLog(@"Drawing %ld nice hedgehogs", (long)numberOfHogs);
- for (int i = 0; i < numberOfHogs; i++) {
- NSString *hat = [hatArray objectAtIndex:random()%numberOfHats];
+ NSArray *hatArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:HATS_DIRECTORY() error:NULL];
+ NSUInteger numberOfHats = [hatArray count];
+ int animationFrames = IS_VERY_POWERFUL([HWUtils modelType]) ? 16 : 1;
+
+ self.imgContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 40)];
+ NSInteger numberOfHogs = 1 + arc4random_uniform(15);
+ DLog(@"Drawing %ld nice hedgehogs", (long)numberOfHogs);
+ for (int i = 0; i < numberOfHogs; i++) {
+ NSString *hat = [hatArray objectAtIndex:arc4random_uniform((int)numberOfHats)];
- NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", HATS_DIRECTORY(), hat];
- UIImage *hatSprite = [[UIImage alloc] initWithContentsOfFile:hatFile];
- NSMutableArray *animation = [[NSMutableArray alloc] initWithCapacity:animationFrames];
- for (int j = 0; j < animationFrames; j++) {
- int x = ((j*32)/(int)hatSprite.size.height)*32;
- int y = (j*32)%(int)hatSprite.size.height;
- UIImage *hatSpriteFrame = [hatSprite cutAt:CGRectMake(x, y, 32, 32)];
- UIImage *hogSpriteFrame = [hogSprite cutAt:CGRectMake(x, y, 32, 32)];
- UIImage *hogWithHat = [hogSpriteFrame mergeWith:hatSpriteFrame atPoint:CGPointMake(0, 5)];
- [animation addObject:hogWithHat];
- }
- [hatSprite release];
- [hatFile release];
+ NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", HATS_DIRECTORY(), hat];
+ UIImage *hatSprite = [[UIImage alloc] initWithContentsOfFile:hatFile];
+ NSMutableArray *animation = [[NSMutableArray alloc] initWithCapacity:animationFrames];
+ for (int j = 0; j < animationFrames; j++) {
+ int x = ((j*32)/(int)hatSprite.size.height)*32;
+ int y = (j*32)%(int)hatSprite.size.height;
+ UIImage *hatSpriteFrame = [hatSprite cutAt:CGRectMake(x, y, 32, 32)];
+ UIImage *hogSpriteFrame = [hogSprite cutAt:CGRectMake(x, y, 32, 32)];
+ UIImage *hogWithHat = [hogSpriteFrame mergeWith:hatSpriteFrame atPoint:CGPointMake(0, 5)];
+ [animation addObject:hogWithHat];
+ }
+ [hatSprite release];
+ [hatFile release];
+
+ UIImageView *hog = [[UIImageView alloc] initWithImage:[animation objectAtIndex:0]];
+ hog.animationImages = animation;
+ hog.animationDuration = 3;
+ [animation release];
- UIImageView *hog = [[UIImageView alloc] initWithImage:[animation objectAtIndex:0]];
- hog.animationImages = animation;
- hog.animationDuration = 3;
- [animation release];
-
- int x = 20*i+random()%128;
- if (x > 320 - 32)
- x = i*random()%32;
- hog.frame = CGRectMake(x, 25, hog.frame.size.width, hog.frame.size.height);
- [self.imgContainer addSubview:hog];
- [hog startAnimating];
- [hog release];
- }
-
- // don't place the nice hogs if there is no space for them
- if ((self.interfaceOrientation == UIInterfaceOrientationPortrait ||
- self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))
- self.imgContainer.alpha = 0;
-
- [self.view addSubview:self.imgContainer];
- [hogSprite release];
+ int x = 20*i+arc4random_uniform(128);
+ while (x > 320 - 32)
+ x = i*arc4random_uniform(32);
+
+ hog.frame = CGRectMake(x, 25, hog.frame.size.width, hog.frame.size.height);
+ [self.imgContainer addSubview:hog];
+ [hog startAnimating];
+ [hog release];
+ }
+ [hogSprite release];
+ dispatch_async(dispatch_get_main_queue(), ^{
+
+ [self.view addSubview:self.imgContainer];
+
+ // don't place the nice hogs if there is no space for them
+ if ((self.interfaceOrientation == UIInterfaceOrientationPortrait ||
+ self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))
+ self.imgContainer.alpha = 0;
+
+ self.isDrawingNiceHogs = NO;
+ });
}
}
--(void) viewDidLoad {
+- (void)clearImgContainer
+{
+ for (UIView *oneView in [self.imgContainer subviews])
+ {
+ if ([oneView isMemberOfClass:[UIImageView class]])
+ {
+ UIImageView *anImageView = (UIImageView *)oneView;
+ [anImageView removeFromSuperview];
+ }
+ }
+
+ [self.imgContainer removeFromSuperview];
+ self.imgContainer = nil;
+}
+
+-(void) viewDidLoad
+{
+ [super viewDidLoad];
+
self.view.backgroundColor = [UIColor blackColor];
CGRect screenRect = [[UIScreen mainScreen] safeBounds];
self.view.frame = screenRect;
- if (IS_IPAD()) {
+ if (IS_IPAD())
+ {
// the label for the filter slider
UILabel *backLabel = [[UILabel alloc] initWithFrame:CGRectMake(116, 714, 310, 40)
andTitle:nil
@@ -314,13 +353,19 @@
[self.view addSubview:maxLabel];
self.mapConfigViewController.maxLabel = maxLabel;
[maxLabel release];
- } else {
+ }
+ else
+ {
+ [self localizeTabsSegmentedControl];
+
+ [self.backButton setTitle:NSLocalizedString(@"Back", nil)];
+ [self.startButton setTitle:NSLocalizedString(@"Start", nil)];
+
self.mapConfigViewController.view.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height-44);
}
+
[self.view addSubview:self.mapConfigViewController.view];
[self.view bringSubviewToFront:self.mapConfigViewController.slider];
-
- [super viewDidLoad];
}
-(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval) duration {
@@ -329,8 +374,6 @@
[self updateiPadUIForInterfaceOrientation:toInterfaceOrientation];
- [self.schemeWeaponConfigViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation
- duration:duration];
if (self.helpPage)
{
self.helpPage.view.frame = self.view.frame;
@@ -361,9 +404,15 @@
}
}
--(void) viewWillAppear:(BOOL)animated {
-// if (IS_IPAD())
-// [NSThread detachNewThreadSelector:@selector(loadNiceHogs) toTarget:self withObject:nil];
+-(void) viewWillAppear:(BOOL)animated
+{
+ [super viewWillAppear:animated];
+
+ if (IS_IPAD() && !self.imgContainer && !self.isDrawingNiceHogs)
+ {
+ self.isDrawingNiceHogs = YES;
+ [NSThread detachNewThreadSelector:@selector(loadNiceHogs) toTarget:self withObject:nil];
+ }
if (IS_IPAD())
{
@@ -371,38 +420,23 @@
UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
[self updateiPadUIForInterfaceOrientation:currentOrientation];
}
-
- [self.mapConfigViewController viewWillAppear:animated];
- [self.teamConfigViewController viewWillAppear:animated];
- [self.schemeWeaponConfigViewController viewWillAppear:animated];
- // add other controllers here and below
-
- [super viewWillAppear:animated];
-}
-
--(void) viewDidAppear:(BOOL)animated {
- [self.mapConfigViewController viewDidAppear:animated];
- [self.teamConfigViewController viewDidAppear:animated];
- [self.schemeWeaponConfigViewController viewDidAppear:animated];
- [super viewDidAppear:animated];
}
--(void) viewWillDisappear:(BOOL)animated {
- [self.mapConfigViewController viewWillDisappear:animated];
- [self.teamConfigViewController viewWillDisappear:animated];
- [self.schemeWeaponConfigViewController viewWillDisappear:animated];
- [super viewWillDisappear:animated];
+- (void)viewDidAppear:(BOOL)animated
+{
+ [super viewDidAppear:animated];
+
+ if (IS_IPAD())
+ {
+ // need to call this again in order to fix layout on iOS 9 when going back from rotated stats page
+ UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
+ [self updateiPadUIForInterfaceOrientation:currentOrientation];
+ }
}
--(void) viewDidDisappear:(BOOL)animated {
- [self.mapConfigViewController viewDidDisappear:animated];
- [self.teamConfigViewController viewDidDisappear:animated];
- [self.schemeWeaponConfigViewController viewDidDisappear:animated];
- [super viewDidDisappear:animated];
-}
-
--(void) didReceiveMemoryWarning {
- self.imgContainer = nil;
+-(void) didReceiveMemoryWarning
+{
+ [self clearImgContainer];
if (self.titleImage.superview == nil)
self.titleImage = nil;
@@ -434,6 +468,9 @@
}
-(void) dealloc {
+ releaseAndNil(_tabsSegmentedControl);
+ releaseAndNil(_backButton);
+ releaseAndNil(_startButton);
releaseAndNil(imgContainer);
releaseAndNil(titleImage);
releaseAndNil(sliderBackground);
--- a/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/GameInterfaceBridge.m Mon Nov 09 16:34:03 2015 +0000
@@ -99,7 +99,9 @@
CGFloat width, height;
CGFloat screenScale = [[UIScreen mainScreen] safeScale];
NSString *ipcString = [[NSString alloc] initWithFormat:@"%d",self.port];
- NSString *localeString = [[NSString alloc] initWithFormat:@"%@.txt",[[NSLocale preferredLanguages] objectAtIndex:0]];
+
+ NSString *localeString = [[NSString alloc] initWithFormat:@"%@.txt", [HWUtils languageID]];
+
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
CGRect screenBounds = [[UIScreen mainScreen] safeBounds];
@@ -248,8 +250,6 @@
}
+(void) startSimpleGame {
- srand(time(0));
-
// generate a seed
CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
NSString *seed = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
@@ -259,7 +259,7 @@
// pick a random static map
NSArray *listOfMaps = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:MAPS_DIRECTORY() error:NULL];
- NSString *mapName = [listOfMaps objectAtIndex:random()%[listOfMaps count]];
+ NSString *mapName = [listOfMaps objectAtIndex:arc4random_uniform((int)[listOfMaps count])];
NSString *fileCfg = [[NSString alloc] initWithFormat:@"%@/%@/map.cfg",MAPS_DIRECTORY(),mapName];
NSString *contents = [[NSString alloc] initWithContentsOfFile:fileCfg encoding:NSUTF8StringEncoding error:NULL];
[fileCfg release];
@@ -272,8 +272,8 @@
NSArray *colorArray = [HWUtils teamColors];
NSInteger firstColorIndex, secondColorIndex;
do {
- firstColorIndex = random()%[colorArray count];
- secondColorIndex = random()%[colorArray count];
+ firstColorIndex = arc4random_uniform((int)[colorArray count]);
+ secondColorIndex = arc4random_uniform((int)[colorArray count]);
} while (firstColorIndex == secondColorIndex);
unsigned int firstColor = [[colorArray objectAtIndex:firstColorIndex] intValue];
unsigned int secondColor = [[colorArray objectAtIndex:secondColorIndex] intValue];
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/GameLogViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,23 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface GameLogViewController : UIViewController
+
+@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/GameLogViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,144 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#import "GameLogViewController.h"
+
+#ifdef DEBUG
+#import <MessageUI/MFMailComposeViewController.h>
+#endif
+
+@interface GameLogViewController ()
+#ifdef DEBUG
+<MFMailComposeViewControllerDelegate>
+#endif
+
+@end
+
+@implementation GameLogViewController
+
+#pragma mark - View life cycle
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ self.title = @"Last game log";
+
+ UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStylePlain target:self action:@selector(dismissAction)];
+ self.navigationItem.rightBarButtonItem = closeButton;
+ [closeButton release];
+
+#ifdef DEBUG
+ if ([self allowSendLogByEmail])
+ {
+ UIBarButtonItem *sendButton = [[UIBarButtonItem alloc] initWithTitle:@"Send" style:UIBarButtonItemStylePlain target:self action:@selector(sendLogByEmailAction)];
+ self.navigationItem.leftBarButtonItem = sendButton;
+ [sendButton release];
+ }
+#endif
+
+ NSString *debugStr = nil;
+ if ([[NSFileManager defaultManager] fileExistsAtPath:DEBUG_FILE()])
+ debugStr = [[NSString alloc] initWithContentsOfFile:DEBUG_FILE() encoding:NSUTF8StringEncoding error:nil];
+ else
+ debugStr = [[NSString alloc] initWithString:@"Here be log"];
+
+ UITextView *logView = [[UITextView alloc] initWithFrame:self.view.frame];
+ [logView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];
+ logView.text = debugStr;
+ [debugStr release];
+ logView.editable = NO;
+
+ [self.view addSubview:logView];
+ [logView release];
+}
+
+#pragma mark - Parameters
+
+#ifdef DEBUG
+- (BOOL)allowSendLogByEmail
+{
+ return ([MFMailComposeViewController canSendMail] && [[NSFileManager defaultManager] fileExistsAtPath:DEBUG_FILE()]);
+}
+#endif
+
+#pragma mark - Actions
+
+#ifdef DEBUG
+- (void)sendLogByEmailAction
+{
+ MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
+ picker.mailComposeDelegate = self;
+ [picker setSubject:@"Log file of iHedgewars game"];
+
+ // Attach a log file to the email
+ NSData *logData = [NSData dataWithContentsOfFile:DEBUG_FILE()];
+ [picker addAttachmentData:logData mimeType:@"text/plain" fileName:@"game0.log"];
+
+ // Fill out the email body text
+ NSString *emailBody = @"Add here description of a problem/log";
+ [picker setMessageBody:emailBody isHTML:NO];
+
+ [self presentViewController:picker animated:YES completion:nil];
+ [picker release];
+}
+#endif
+
+- (void)dismissAction
+{
+ [self dismissViewControllerAnimated:YES completion:nil];
+}
+
+#pragma mark - MailCompose delegate
+
+#ifdef DEBUG
+- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
+{
+ // Notifies users about errors associated with the interface
+ switch (result)
+ {
+ case MFMailComposeResultCancelled:
+ NSLog(@"MailComposeResult: canceled");
+ break;
+ case MFMailComposeResultSaved:
+ NSLog(@"MailComposeResult: saved");
+ break;
+ case MFMailComposeResultSent:
+ NSLog(@"MailComposeResult: sent");
+ break;
+ case MFMailComposeResultFailed:
+ NSLog(@"MailComposeResult: failed");
+ break;
+ default:
+ NSLog(@"MailComposeResult: not sent");
+ break;
+ }
+
+ [self dismissViewControllerAnimated:YES completion:nil];
+}
+#endif
+
+#pragma mark - Memory warning
+
+- (void)didReceiveMemoryWarning
+{
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+}
+
+@end
--- a/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -18,9 +18,9 @@
#import <UIKit/UIKit.h>
-
+#import "TableViewControllerWithDoneButton.h"
-@interface GeneralSettingsViewController : UITableViewController <EditableCellViewDelegate> {
+@interface GeneralSettingsViewController : TableViewControllerWithDoneButton <EditableCellViewDelegate> {
}
--- a/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -30,7 +30,7 @@
#pragma mark -
#pragma mark View Lifecycle
-(void) viewDidLoad {
- self.navigationItem.title = @"Edit game options";
+ self.navigationItem.title = NSLocalizedString(@"Edit game options", nil);
[super viewDidLoad];
}
@@ -179,7 +179,7 @@
switchContent = (UISwitch *)cell.accessoryView;
if (row == 0) {
- cell.textLabel.text = NSLocalizedString(@"Sound Effects", @"from the settings table");
+ cell.textLabel.text = NSLocalizedString(@"Sound", @"from the settings table");
switchContent.on = [[settings objectForKey:@"sound"] boolValue];
switchContent.tag = 10;
} else {
--- a/project_files/HedgewarsMobile/Classes/HWUtils.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HWUtils.h Mon Nov 09 16:34:03 2015 +0000
@@ -41,6 +41,7 @@
+(NSInteger) randomPort;
+(void) freePort:(NSInteger) port;
+(BOOL) isNetworkReachable;
++(NSString *) languageID;
//+(UIView *)mainSDLViewInstance;
@end
--- a/project_files/HedgewarsMobile/Classes/HWUtils.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HWUtils.m Mon Nov 09 16:34:03 2015 +0000
@@ -103,14 +103,13 @@
+(NSInteger) randomPort {
// set a new feed only at initialization time and forbid connecting to the server port
if (activePorts == nil) {
- srandom(time(NULL));
activePorts = [[NSMutableArray arrayWithObject:[NSNumber numberWithInt:NETGAME_DEFAULT_PORT]] retain];
}
// pick a random number from the free ports list
NSInteger res = 0;
do {
- res = (random() % 64511) + 1024;
+ res = (arc4random_uniform(64511)) + 1024;
} while ([activePorts containsObject:[NSNumber numberWithInteger:res]]);
// add this number to the forbdding list
@@ -156,6 +155,12 @@
return ((isReachable && !needsConnection) || nonWiFi) ? testResult : NO;
}
++ (NSString *)languageID
+{
+ NSString *language = [[NSLocale preferredLanguages] firstObject];
+ return [[language componentsSeparatedByString:@"-"] firstObject];
+}
+
/*
+(UIView *)mainSDLViewInstance {
SDL_Window *window = HW_getSDLWindow();
--- a/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m Mon Nov 09 16:34:03 2015 +0000
@@ -19,7 +19,7 @@
#import "HedgewarsAppDelegate.h"
#import "MainMenuViewController.h"
-
+#import "Appirater.h"
@implementation SDLUIKitDelegate (customDelegate)
@@ -50,7 +50,16 @@
}
// override the direct execution of SDL_main to allow us to implement our own frontend
--(void) postFinishLaunch {
+-(void) postFinishLaunch
+{
+ // Setup Appirater
+ [Appirater setAppId:@"391234866"];
+ [Appirater setDaysUntilPrompt:3];
+ [Appirater setUsesUntilPrompt:5];
+ [Appirater setSignificantEventsUntilPrompt:-1];
+ [Appirater setTimeBeforeReminding:1];
+ //[Appirater setDebug:YES];
+
[self performSelector:@selector(hideLaunchScreen) withObject:nil afterDelay:0.0];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
--- a/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController-iPad.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController-iPad.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,1126 +1,320 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="8.00">
- <data>
- <int key="IBDocument.SystemTarget">1792</int>
- <string key="IBDocument.SystemVersion">14E46</string>
- <string key="IBDocument.InterfaceBuilderVersion">7706</string>
- <string key="IBDocument.AppKitVersion">1348.17</string>
- <string key="IBDocument.HIToolboxVersion">758.70</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">7703</string>
- </object>
- <array key="IBDocument.IntegratedClassDependencies">
- <string>IBProxyObject</string>
- <string>IBUIImageView</string>
- <string>IBUILabel</string>
- <string>IBUIView</string>
- </array>
- <array key="IBDocument.PluginDependencies">
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </array>
- <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
- <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <object class="IBProxyObject" id="841351856">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBProxyObject" id="606714003">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="766721923">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIView" id="632193951">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">292</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="845663511">
- <reference key="NSNextResponder" ref="632193951"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{0, 1}, {278, 50}}</string>
- <reference key="NSSuperview" ref="632193951"/>
- <reference key="NSNextKeyView" ref="823916653"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage" id="158398638">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">helpleft.png</string>
- </object>
- </object>
- <object class="IBUILabel" id="823916653">
- <reference key="NSNextResponder" ref="632193951"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{22, -2}, {248, 54}}</string>
- <reference key="NSSuperview" ref="632193951"/>
- <reference key="NSNextKeyView" ref="885820836"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Did you know you can customize almost everything in the settings page?</string>
- <object class="NSColor" key="IBUITextColor" id="283637272">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAAA</bytes>
- <string key="IBUIColorCocoaTouchKeyPath">darkTextColor</string>
- </object>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <object class="IBUIFontDescription" key="IBUIFontDescription">
- <string key="name">Helvetica-Oblique</string>
- <string key="family">Helvetica</string>
- <int key="traits">1</int>
- <double key="pointSize">14</double>
- </object>
- <object class="NSFont" key="IBUIFont">
- <string key="NSName">Helvetica-Oblique</string>
- <double key="NSSize">14</double>
- <int key="NSfFlags">16</int>
- </object>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">248</double>
- </object>
- </array>
- <string key="NSFrame">{{10, 8}, {278, 52}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="845663511"/>
- <object class="NSColor" key="IBUIBackgroundColor" id="469062490">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwAA</bytes>
- </object>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="649057968">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">297</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="1011244481">
- <reference key="NSNextResponder" ref="649057968"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 102}</string>
- <reference key="NSSuperview" ref="649057968"/>
- <reference key="NSNextKeyView" ref="552788325"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage" id="468391955">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">helpabove.png</string>
- </object>
- </object>
- <object class="IBUILabel" id="636170775">
- <reference key="NSNextResponder" ref="649057968"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{12, 19}, {109, 22}}</string>
- <reference key="NSSuperview" ref="649057968"/>
- <reference key="NSNextKeyView" ref="572108157"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Map theme</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <object class="IBUIFontDescription" key="IBUIFontDescription" id="1061259526">
- <string key="name">Helvetica-Bold</string>
- <string key="family">Helvetica</string>
- <int key="traits">2</int>
- <double key="pointSize">18</double>
- </object>
- <object class="NSFont" key="IBUIFont" id="583365693">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">18</double>
- <int key="NSfFlags">16</int>
- </object>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="552788325">
- <reference key="NSNextResponder" ref="649057968"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{11, 36}, {218, 66}}</string>
- <reference key="NSSuperview" ref="649057968"/>
- <reference key="NSNextKeyView" ref="636170775"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Here you can choose how your map will appear in game.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <object class="IBUIFontDescription" key="IBUIFontDescription" id="506240258">
- <string key="name">Helvetica</string>
- <string key="family">Helvetica</string>
- <int key="traits">0</int>
- <double key="pointSize">16</double>
- </object>
- <object class="NSFont" key="IBUIFont" id="818038162">
- <string key="NSName">Helvetica</string>
- <double key="NSSize">16</double>
- <int key="NSfFlags">16</int>
- </object>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">218</double>
- </object>
- </array>
- <string key="NSFrame">{{742, 360}, {240, 102}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="1011244481"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="506833582">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">289</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="379980516">
- <reference key="NSNextResponder" ref="506833582"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 146}</string>
- <reference key="NSSuperview" ref="506833582"/>
- <reference key="NSNextKeyView" ref="901581152"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <reference key="IBUIImage" ref="468391955"/>
- </object>
- <object class="IBUILabel" id="901581152">
- <reference key="NSNextResponder" ref="506833582"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{11, 22}, {109, 22}}</string>
- <reference key="NSSuperview" ref="506833582"/>
- <reference key="NSNextKeyView" ref="595424508"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Map type</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="595424508">
- <reference key="NSNextResponder" ref="506833582"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{11, 41}, {218, 99}}</string>
- <reference key="NSSuperview" ref="506833582"/>
- <reference key="NSNextKeyView" ref="1061986830"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Choose between a static map or a randomly generated one (might require more time). In a mission you need to perfom some action to win.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">218</double>
- </object>
- </array>
- <string key="NSFrame">{{653, 202}, {240, 146}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="379980516"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="885820836">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">289</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="162303877">
- <reference key="NSNextResponder" ref="885820836"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 101}</string>
- <reference key="NSSuperview" ref="885820836"/>
- <reference key="NSNextKeyView" ref="687330896"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">helpright.png</string>
- </object>
- </object>
- <object class="IBUILabel" id="323588470">
- <reference key="NSNextResponder" ref="885820836"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{9, 7}, {109, 22}}</string>
- <reference key="NSSuperview" ref="885820836"/>
- <reference key="NSNextKeyView" ref="182206756"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Map preview</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="687330896">
- <reference key="NSNextResponder" ref="885820836"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{8, 25}, {218, 65}}</string>
- <reference key="NSSuperview" ref="885820836"/>
- <reference key="NSNextKeyView" ref="323588470"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">This is a small preview of your next map. Tap to select / generate a new map.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">218</double>
- </object>
- </array>
- <string key="NSFrame">{{494, 20}, {240, 101}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="162303877"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="977068896">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">269</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="713859408">
- <reference key="NSNextResponder" ref="977068896"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{242, 171}</string>
- <reference key="NSSuperview" ref="977068896"/>
- <reference key="NSNextKeyView" ref="896727228"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <reference key="IBUIImage" ref="468391955"/>
- </object>
- <object class="IBUILabel" id="896727228">
- <reference key="NSNextResponder" ref="977068896"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{8, 25}, {109, 22}}</string>
- <reference key="NSSuperview" ref="977068896"/>
- <reference key="NSNextKeyView" ref="704238452"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Teams</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="704238452">
- <reference key="NSNextResponder" ref="977068896"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{10, 45}, {232, 120}}</string>
- <reference key="NSSuperview" ref="977068896"/>
- <reference key="NSNextKeyView" ref="649057968"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Select which teams are playing! Add hogs by tapping on them and set their color to figure friend and foe teams out. AI teams will appear with a small robot badge next their name.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">232</double>
- </object>
- </array>
- <string key="NSFrame">{{358, 389}, {242, 171}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="713859408"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="182206756">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">292</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="993770514">
- <reference key="NSNextResponder" ref="182206756"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 104}</string>
- <reference key="NSSuperview" ref="182206756"/>
- <reference key="NSNextKeyView" ref="488737408"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <reference key="IBUIImage" ref="158398638"/>
- </object>
- <object class="IBUILabel" id="488737408">
- <reference key="NSNextResponder" ref="182206756"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{23, 8}, {204, 22}}</string>
- <reference key="NSSuperview" ref="182206756"/>
- <reference key="NSNextKeyView" ref="463058693"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Schemes and Weapons</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="463058693">
- <reference key="NSNextResponder" ref="182206756"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{23, 27}, {210, 71}}</string>
- <reference key="NSSuperview" ref="182206756"/>
- <reference key="NSNextKeyView" ref="506833582"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Here you can choose which rules and which weapon set will be applied in game.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">210</double>
- </object>
- </array>
- <string key="NSFrame">{{142, 160}, {240, 104}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="993770514"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="572108157">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">268</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="678356402">
- <reference key="NSNextResponder" ref="572108157"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 117}</string>
- <reference key="NSSuperview" ref="572108157"/>
- <reference key="NSNextKeyView" ref="1068254353"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage" id="835742298">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">helpbottom.png</string>
- </object>
- </object>
- <object class="IBUILabel" id="1068254353">
- <reference key="NSNextResponder" ref="572108157"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{10, 8}, {138, 22}}</string>
- <reference key="NSSuperview" ref="572108157"/>
- <reference key="NSNextKeyView" ref="1023832701"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Max hedgehogs</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="1023832701">
- <reference key="NSNextResponder" ref="572108157"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{11, 26}, {218, 73}}</string>
- <reference key="NSSuperview" ref="572108157"/>
- <reference key="NSNextKeyView" ref="90778258"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">This number is the maximum size for all the hogs playing (in every team).</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">218</double>
- </object>
- </array>
- <string key="NSFrame">{{35, 590}, {240, 117}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="678356402"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="189120545">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">265</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="261734864">
- <reference key="NSNextResponder" ref="189120545"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 109}</string>
- <reference key="NSSuperview" ref="189120545"/>
- <reference key="NSNextKeyView" ref="578857422"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <reference key="IBUIImage" ref="835742298"/>
- </object>
- <object class="IBUILabel" id="578857422">
- <reference key="NSNextResponder" ref="189120545"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{8, 6}, {138, 22}}</string>
- <reference key="NSSuperview" ref="189120545"/>
- <reference key="NSNextKeyView" ref="972150858"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Size slider</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="972150858">
- <reference key="NSNextResponder" ref="189120545"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{11, 22}, {218, 73}}</string>
- <reference key="NSSuperview" ref="189120545"/>
- <reference key="NSNextKeyView"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">For Random and Maze maps you can decide to generate only maps of a certain size.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">218</double>
- </object>
- </array>
- <string key="NSFrame">{{695, 598}, {240, 109}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="261734864"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="1061986830">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">292</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="533288614">
- <reference key="NSNextResponder" ref="1061986830"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 128}</string>
- <reference key="NSSuperview" ref="1061986830"/>
- <reference key="NSNextKeyView" ref="203633929"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">helpplain.png</string>
- </object>
- </object>
- <object class="IBUILabel" id="203633929">
- <reference key="NSNextResponder" ref="1061986830"/>
- <int key="NSvFlags">288</int>
- <string key="NSFrame">{{6, 8}, {229, 22}}</string>
- <reference key="NSSuperview" ref="1061986830"/>
- <reference key="NSNextKeyView" ref="345016434"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Tap anywhere to dismiss</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUITextAlignment">1</int>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="345016434">
- <reference key="NSNextResponder" ref="1061986830"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{8, 32}, {224, 87}}</string>
- <reference key="NSSuperview" ref="1061986830"/>
- <reference key="NSNextKeyView" ref="977068896"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Still confused? Don't worry, it's really simple! Try a couple of games and everything will become clear to you.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">224</double>
- </object>
- </array>
- <string key="NSFrame">{{45, 360}, {240, 128}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="533288614"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="90778258">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">269</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="109182727">
- <reference key="NSNextResponder" ref="90778258"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{240, 61}</string>
- <reference key="NSSuperview" ref="90778258"/>
- <reference key="NSNextKeyView" ref="815146899"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <reference key="IBUIImage" ref="835742298"/>
- </object>
- <object class="IBUILabel" id="815146899">
- <reference key="NSNextResponder" ref="90778258"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{8, 3}, {138, 22}}</string>
- <reference key="NSSuperview" ref="90778258"/>
- <reference key="NSNextKeyView" ref="379008984"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Start button</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="1061259526"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="379008984">
- <reference key="NSNextResponder" ref="90778258"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{11, 14}, {218, 46}}</string>
- <reference key="NSSuperview" ref="90778258"/>
- <reference key="NSNextKeyView" ref="189120545"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">This button starts the game.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="506240258"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">218</double>
- </object>
- </array>
- <string key="NSFrame">{{344, 646}, {240, 61}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <reference key="NSNextKeyView" ref="109182727"/>
- <reference key="IBUIBackgroundColor" ref="469062490"/>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- </array>
- <string key="NSFrameSize">{1024, 768}</string>
- <reference key="NSNextKeyView" ref="632193951"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjQAA</bytes>
- </object>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="IBUIInterfaceOrientation">3</int>
- <int key="interfaceOrientation">3</int>
- </object>
- <object class="IBUIScreenMetrics" key="IBUISimulatedDestinationMetrics">
- <string key="IBUISimulatedSizeMetricsClass">IBUIScreenMetrics</string>
- <string key="IBUITargetRuntime">IBIPadFramework</string>
- <string key="IBUIDisplayName">iPad Full Screen</string>
- <object class="NSMutableDictionary" key="IBUINormalizedOrientationToSizeMap">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <array key="dict.sortedKeys">
- <integer value="1"/>
- <integer value="3"/>
- </array>
- <array key="dict.values">
- <string>{768, 1024}</string>
- <string>{1024, 768}</string>
- </array>
- </object>
- <int key="IBUIType">1</int>
- </object>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- </array>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <array key="connectionRecords">
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="766721923"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">dismiss</string>
- <reference key="source" ref="766721923"/>
- <reference key="destination" ref="841351856"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">16</int>
- </object>
- </array>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <array key="orderedObjects">
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <array key="object" id="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="841351856"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="606714003"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="766721923"/>
- <array class="NSMutableArray" key="children">
- <reference ref="977068896"/>
- <reference ref="1061986830"/>
- <reference ref="90778258"/>
- <reference ref="649057968"/>
- <reference ref="506833582"/>
- <reference ref="885820836"/>
- <reference ref="182206756"/>
- <reference ref="632193951"/>
- <reference ref="572108157"/>
- <reference ref="189120545"/>
- </array>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">60</int>
- <reference key="object" ref="977068896"/>
- <array class="NSMutableArray" key="children">
- <reference ref="713859408"/>
- <reference ref="896727228"/>
- <reference ref="704238452"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Teams Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">43</int>
- <reference key="object" ref="713859408"/>
- <reference key="parent" ref="977068896"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">44</int>
- <reference key="object" ref="896727228"/>
- <reference key="parent" ref="977068896"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">45</int>
- <reference key="object" ref="704238452"/>
- <reference key="parent" ref="977068896"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">61</int>
- <reference key="object" ref="1061986830"/>
- <array class="NSMutableArray" key="children">
- <reference ref="533288614"/>
- <reference ref="203633929"/>
- <reference ref="345016434"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Tap anywere Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">25</int>
- <reference key="object" ref="533288614"/>
- <reference key="parent" ref="1061986830"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">26</int>
- <reference key="object" ref="203633929"/>
- <reference key="parent" ref="1061986830"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">27</int>
- <reference key="object" ref="345016434"/>
- <reference key="parent" ref="1061986830"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">62</int>
- <reference key="object" ref="90778258"/>
- <array class="NSMutableArray" key="children">
- <reference ref="109182727"/>
- <reference ref="815146899"/>
- <reference ref="379008984"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Start button Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">49</int>
- <reference key="object" ref="109182727"/>
- <reference key="parent" ref="90778258"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">50</int>
- <reference key="object" ref="815146899"/>
- <reference key="parent" ref="90778258"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">51</int>
- <reference key="object" ref="379008984"/>
- <reference key="parent" ref="90778258"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">63</int>
- <reference key="object" ref="189120545"/>
- <array class="NSMutableArray" key="children">
- <reference ref="261734864"/>
- <reference ref="578857422"/>
- <reference ref="972150858"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Size slider Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">37</int>
- <reference key="object" ref="261734864"/>
- <reference key="parent" ref="189120545"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">38</int>
- <reference key="object" ref="578857422"/>
- <reference key="parent" ref="189120545"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">39</int>
- <reference key="object" ref="972150858"/>
- <reference key="parent" ref="189120545"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">64</int>
- <reference key="object" ref="572108157"/>
- <array class="NSMutableArray" key="children">
- <reference ref="678356402"/>
- <reference ref="1068254353"/>
- <reference ref="1023832701"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Max hogs Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">34</int>
- <reference key="object" ref="678356402"/>
- <reference key="parent" ref="572108157"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">35</int>
- <reference key="object" ref="1068254353"/>
- <reference key="parent" ref="572108157"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">36</int>
- <reference key="object" ref="1023832701"/>
- <reference key="parent" ref="572108157"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">65</int>
- <reference key="object" ref="649057968"/>
- <array class="NSMutableArray" key="children">
- <reference ref="1011244481"/>
- <reference ref="636170775"/>
- <reference ref="552788325"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Map theme Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">28</int>
- <reference key="object" ref="1011244481"/>
- <reference key="parent" ref="649057968"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">29</int>
- <reference key="object" ref="636170775"/>
- <reference key="parent" ref="649057968"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">30</int>
- <reference key="object" ref="552788325"/>
- <reference key="parent" ref="649057968"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">66</int>
- <reference key="object" ref="506833582"/>
- <array class="NSMutableArray" key="children">
- <reference ref="379980516"/>
- <reference ref="901581152"/>
- <reference ref="595424508"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Map type Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">52</int>
- <reference key="object" ref="379980516"/>
- <reference key="parent" ref="506833582"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">53</int>
- <reference key="object" ref="901581152"/>
- <reference key="parent" ref="506833582"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">54</int>
- <reference key="object" ref="595424508"/>
- <reference key="parent" ref="506833582"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">67</int>
- <reference key="object" ref="885820836"/>
- <array class="NSMutableArray" key="children">
- <reference ref="162303877"/>
- <reference ref="323588470"/>
- <reference ref="687330896"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Map preview Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="162303877"/>
- <reference key="parent" ref="885820836"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="323588470"/>
- <reference key="parent" ref="885820836"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="687330896"/>
- <reference key="parent" ref="885820836"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">68</int>
- <reference key="object" ref="182206756"/>
- <array class="NSMutableArray" key="children">
- <reference ref="993770514"/>
- <reference ref="488737408"/>
- <reference ref="463058693"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Schemes & Weapons Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">40</int>
- <reference key="object" ref="993770514"/>
- <reference key="parent" ref="182206756"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="488737408"/>
- <reference key="parent" ref="182206756"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">42</int>
- <reference key="object" ref="463058693"/>
- <reference key="parent" ref="182206756"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">69</int>
- <reference key="object" ref="632193951"/>
- <array class="NSMutableArray" key="children">
- <reference ref="845663511"/>
- <reference ref="823916653"/>
- </array>
- <reference key="parent" ref="766721923"/>
- <string key="objectName">Customize Bubble</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="845663511"/>
- <reference key="parent" ref="632193951"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">59</int>
- <reference key="object" ref="823916653"/>
- <reference key="parent" ref="632193951"/>
- </object>
- </array>
- </object>
- <dictionary class="NSMutableDictionary" key="flattenedProperties">
- <string key="-1.CustomClassName">HelpPageLobbyViewController</string>
- <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="-2.CustomClassName">UIResponder</string>
- <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="2.CustomClassName">UIControl</string>
- <reference key="2.IBNSViewMetadataGestureRecognizers" ref="0"/>
- <string key="2.IBPersistedLastKnownCanvasPosition">{581, 369}</string>
- <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="25.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="26.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="27.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="28.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="30.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="34.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="35.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="36.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="37.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="38.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="39.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="40.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="41.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="42.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="43.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="44.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="45.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="49.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="50.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="51.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="52.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="53.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="54.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="59.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <reference key="60.IBNSViewMetadataGestureRecognizers" ref="0"/>
- <string key="60.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="61.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="62.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="63.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="64.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <reference key="65.IBNSViewMetadataGestureRecognizers" ref="0"/>
- <string key="65.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="66.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="67.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="68.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="69.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
- <nil key="activeLocalization"/>
- <dictionary class="NSMutableDictionary" key="localizations"/>
- <nil key="sourceID"/>
- <int key="maxID">70</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
- <bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="4600" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <string key="helpabove.png">{295, 156}</string>
- <string key="helpbottom.png">{295, 156}</string>
- <string key="helpleft.png">{308, 144}</string>
- <string key="helpplain.png">{296, 138}</string>
- <string key="helpright.png">{308, 144}</string>
- </dictionary>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="8191" systemVersion="15B42" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="HelpPageLobbyViewController">
+ <connections>
+ <outlet property="view" destination="2" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="2" customClass="UIControl">
+ <rect key="frame" x="0.0" y="0.0" width="1024" height="768"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <view contentMode="scaleToFill" id="69" userLabel="Customize Bubble">
+ <rect key="frame" x="10" y="8" width="278" height="52"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpleft.png" id="58">
+ <rect key="frame" x="0.0" y="1" width="278" height="50"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Did you know you can customize almost everything in the settings page?" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="59" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="22" y="8" width="248" height="36"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Oblique" family="Helvetica" pointSize="14"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="65" userLabel="Map theme Bubble">
+ <rect key="frame" x="742" y="360" width="240" height="102"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpabove.png" id="28">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="102"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Map theme" lineBreakMode="tailTruncation" minimumFontSize="10" id="29" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="11" y="19" width="218" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Here you can choose how your map will appear in game." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="30" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="11" y="43" width="218" height="51"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="66" userLabel="Map type Bubble">
+ <rect key="frame" x="653" y="202" width="240" height="146"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpabove.png" id="52">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="146"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Map type" lineBreakMode="tailTruncation" minimumFontSize="10" id="53" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="11" y="22" width="221" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="54" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="11" y="46" width="218" height="94"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <string key="text">Choose between a static map or a randomly generated one (might require more time). In a mission you need to perfom some action to win.</string>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="67" userLabel="Map preview Bubble">
+ <rect key="frame" x="494" y="20" width="240" height="101"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpright.png" id="6">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="101"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Map preview" lineBreakMode="tailTruncation" minimumFontSize="10" id="7" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="7" width="218" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This is a small preview of your next map. Tap to select / generate a new map." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="8" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="25" width="218" height="65"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="60" userLabel="Teams Bubble">
+ <rect key="frame" x="358" y="389" width="242" height="171"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpabove.png" id="43">
+ <rect key="frame" x="0.0" y="0.0" width="242" height="171"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Teams" lineBreakMode="tailTruncation" minimumFontSize="10" id="44" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="25" width="226" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="45" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="48" width="226" height="115"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <string key="text">Select which teams are playing! Add hogs by tapping on them and set their color to figure friend and foe teams out. AI teams will appear with a small robot badge next their name.</string>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="68" userLabel="Schemes & Weapons Bubble">
+ <rect key="frame" x="142" y="160" width="240" height="104"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpleft.png" id="40">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="104"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Schemes and Weapons" lineBreakMode="tailTruncation" minimumFontSize="10" id="41" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="23" y="8" width="204" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Here you can choose which rules and which weapon set will be applied in game." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="42" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="23" y="27" width="210" height="71"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="64" userLabel="Max hogs Bubble">
+ <rect key="frame" x="35" y="590" width="240" height="117"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpbottom.png" id="34">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="117"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Max hedgehogs" lineBreakMode="tailTruncation" minimumFontSize="10" id="35" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="10" y="8" width="219" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This number is the maximum size for all the hogs playing (in every team)." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="36" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="11" y="32" width="218" height="62"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="63" userLabel="Size slider Bubble">
+ <rect key="frame" x="695" y="598" width="240" height="109"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpbottom.png" id="37">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="109"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Size slider" lineBreakMode="tailTruncation" minimumFontSize="10" id="38" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="6" width="224" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="For Random and Maze maps you can decide to generate only maps of a certain size." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="39" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="29" width="224" height="59"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="61" userLabel="Tap anywere Bubble">
+ <rect key="frame" x="45" y="360" width="240" height="128"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpplain.png" id="25">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="128"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap anywhere to dismiss" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="26" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="6" y="7" width="229" height="34"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Still confused? Don't worry, it's really simple! Try a couple of games and everything will become clear to you." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="27" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="38" width="224" height="81"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ <view contentMode="scaleToFill" id="62" userLabel="Start button Bubble">
+ <rect key="frame" x="344" y="646" width="240" height="61"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <subviews>
+ <imageView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" image="helpbottom.png" id="49">
+ <rect key="frame" x="0.0" y="0.0" width="240" height="61"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Start button" lineBreakMode="tailTruncation" minimumFontSize="10" id="50" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="3" width="224" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This button starts the game." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="51" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="8" y="25" width="224" height="28"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </view>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.40000000000000002" colorSpace="calibratedWhite"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <connections>
+ <action selector="dismiss" destination="-1" eventType="touchUpInside" id="16"/>
+ </connections>
+ <point key="canvasLocation" x="581" y="369"/>
+ </view>
+ </objects>
+ <resources>
+ <image name="helpabove.png" width="295" height="156"/>
+ <image name="helpbottom.png" width="295" height="156"/>
+ <image name="helpleft.png" width="308" height="144"/>
+ <image name="helpplain.png" width="296" height="138"/>
+ <image name="helpright.png" width="308" height="144"/>
+ </resources>
+</document>
--- a/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController-iPhone.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HelpPageLobbyViewController-iPhone.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,614 +1,166 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
- <data>
- <int key="IBDocument.SystemTarget">1792</int>
- <string key="IBDocument.SystemVersion">14E46</string>
- <string key="IBDocument.InterfaceBuilderVersion">7706</string>
- <string key="IBDocument.AppKitVersion">1348.17</string>
- <string key="IBDocument.HIToolboxVersion">758.70</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">7703</string>
- </object>
- <array key="IBDocument.IntegratedClassDependencies">
- <string>IBProxyObject</string>
- <string>IBUILabel</string>
- <string>IBUIScrollView</string>
- <string>IBUIView</string>
- </array>
- <array key="IBDocument.PluginDependencies">
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </array>
- <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
- <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <object class="IBProxyObject" id="841351856">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBProxyObject" id="606714003">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIView" id="766721923">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIScrollView" id="451725730">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">274</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUILabel" id="381271451">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 587}, {440, 52}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Still confused? Don't worry, it's really simple! Try a couple of games and everything will become clear to you.</string>
- <object class="NSColor" key="IBUITextColor" id="283637272">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAAA</bytes>
- </object>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <int key="IBUITextAlignment">1</int>
- <object class="IBUIFontDescription" key="IBUIFontDescription" id="82958746">
- <string key="name">Helvetica</string>
- <string key="family">Helvetica</string>
- <int key="traits">0</int>
- <double key="pointSize">16</double>
- </object>
- <object class="NSFont" key="IBUIFont" id="818038162">
- <string key="NSName">Helvetica</string>
- <double key="NSSize">16</double>
- <int key="NSfFlags">16</int>
- </object>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">440</double>
- </object>
- <object class="IBUILabel" id="160273292">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 279}, {138, 22}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Size slider</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <object class="IBUIFontDescription" key="IBUIFontDescription" id="460648940">
- <string key="name">Helvetica-Bold</string>
- <string key="family">Helvetica</string>
- <int key="traits">2</int>
- <double key="pointSize">18</double>
- </object>
- <object class="NSFont" key="IBUIFont" id="583365693">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">18</double>
- <int key="NSfFlags">16</int>
- </object>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="399703336">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 298}, {440, 44}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">For Random and Maze maps you can decide to generate only maps of a certain size.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="82958746"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">440</double>
- </object>
- <object class="IBUILabel" id="780482878">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 511}, {204, 22}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Schemes and Weapons</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="460648940"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="715276626">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 530}, {433, 45}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Here you can choose which rules and which weapon set will be applied in game.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="82958746"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">433</double>
- </object>
- <object class="IBUILabel" id="81383071">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 68}, {109, 22}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Map preview</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="460648940"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="518187701">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 88}, {440, 44}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">This is a small preview of your next map. Tap to select / generate a new map.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="82958746"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">440</double>
- </object>
- <object class="IBUILabel" id="601567061">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 140}, {109, 22}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Map type</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="460648940"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="514192288">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 164}, {440, 58}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Choose between a static map or a randomly generated one (might require more time). In a mission you need to perfom some action to win.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="82958746"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">440</double>
- </object>
- <object class="IBUILabel" id="136109594">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 229}, {109, 22}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Map theme</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="460648940"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="345586237">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 244}, {440, 33}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Here you can choose how your map will appear in game.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="82958746"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">440</double>
- </object>
- <object class="IBUILabel" id="686505362">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 347}, {138, 22}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Max hedgehogs</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="460648940"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="629677748">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 367}, {440, 41}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">This number is the maximum size for all the hogs playing (in every team).</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="82958746"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">440</double>
- </object>
- <object class="IBUILabel" id="79643170">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 418}, {109, 22}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Teams</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <reference key="IBUIFontDescription" ref="460648940"/>
- <reference key="IBUIFont" ref="583365693"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- </object>
- <object class="IBUILabel" id="676482380">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 436}, {433, 66}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Select which teams are playing! Add hogs by tapping on them and set their color to figure friend and foe teams out. AI teams will appear with a small robot badge next their name.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <reference key="IBUIFontDescription" ref="82958746"/>
- <reference key="IBUIFont" ref="818038162"/>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">433</double>
- </object>
- <object class="IBUILabel" id="66496634">
- <reference key="NSNextResponder" ref="451725730"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrame">{{20, 3}, {440, 60}}</string>
- <reference key="NSSuperview" ref="451725730"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Here you can find help for the game configuration options. You can customize almost everything in the settings page.</string>
- <reference key="IBUITextColor" ref="283637272"/>
- <nil key="IBUIHighlightedColor"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">0</int>
- <int key="IBUITextAlignment">1</int>
- <object class="IBUIFontDescription" key="IBUIFontDescription">
- <string key="name">Helvetica-Oblique</string>
- <string key="family">Helvetica</string>
- <int key="traits">1</int>
- <double key="pointSize">16</double>
- </object>
- <object class="NSFont" key="IBUIFont">
- <string key="NSName">Helvetica-Oblique</string>
- <double key="NSSize">16</double>
- <int key="NSfFlags">16</int>
- </object>
- <bool key="useAutomaticPreferredMaxLayoutWidth">YES</bool>
- <double key="preferredMaxLayoutWidth">440</double>
- </object>
- </array>
- <string key="NSFrameSize">{480, 276}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <bool key="IBUIClipsSubviews">YES</bool>
- <bool key="IBUIMultipleTouchEnabled">YES</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- </array>
- <string key="NSFrameSize">{480, 276}</string>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">2</int>
- <bytes key="NSRGB">MC45OTYwNzg0OTEyIDAuOTg4MjM1MzU0NCAxAA</bytes>
- </object>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <object class="IBUISimulatedToolbarMetrics" key="IBUISimulatedBottomBarMetrics"/>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="IBUIInterfaceOrientation">3</int>
- <int key="interfaceOrientation">3</int>
- </object>
- <object class="IBUISimulatedSizeMetrics" key="IBUISimulatedDestinationMetrics">
- <string key="IBUISimulatedSizeMetricsClass">IBUISimulatedFreeformSizeMetricsSentinel</string>
- <string key="IBUIDisplayName">Freeform</string>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- </array>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <array key="connectionRecords">
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="766721923"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">scrollView</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="451725730"/>
- </object>
- <int key="connectionID">95</int>
- </object>
- </array>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <array key="orderedObjects">
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <array key="object" id="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="841351856"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="606714003"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="766721923"/>
- <array class="NSMutableArray" key="children">
- <reference ref="451725730"/>
- </array>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">60</int>
- <reference key="object" ref="451725730"/>
- <array class="NSMutableArray" key="children">
- <reference ref="381271451"/>
- <reference ref="160273292"/>
- <reference ref="399703336"/>
- <reference ref="81383071"/>
- <reference ref="518187701"/>
- <reference ref="601567061"/>
- <reference ref="514192288"/>
- <reference ref="136109594"/>
- <reference ref="345586237"/>
- <reference ref="686505362"/>
- <reference ref="629677748"/>
- <reference ref="780482878"/>
- <reference ref="715276626"/>
- <reference ref="79643170"/>
- <reference ref="676482380"/>
- <reference ref="66496634"/>
- </array>
- <reference key="parent" ref="766721923"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">61</int>
- <reference key="object" ref="381271451"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">62</int>
- <reference key="object" ref="160273292"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">63</int>
- <reference key="object" ref="399703336"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">64</int>
- <reference key="object" ref="780482878"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">65</int>
- <reference key="object" ref="715276626"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">66</int>
- <reference key="object" ref="81383071"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">67</int>
- <reference key="object" ref="518187701"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">68</int>
- <reference key="object" ref="601567061"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">69</int>
- <reference key="object" ref="514192288"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">70</int>
- <reference key="object" ref="136109594"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">71</int>
- <reference key="object" ref="345586237"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="686505362"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="629677748"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="79643170"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="676482380"/>
- <reference key="parent" ref="451725730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">76</int>
- <reference key="object" ref="66496634"/>
- <reference key="parent" ref="451725730"/>
- </object>
- </array>
- </object>
- <dictionary class="NSMutableDictionary" key="flattenedProperties">
- <string key="-1.CustomClassName">HelpPageLobbyViewController</string>
- <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="-2.CustomClassName">UIResponder</string>
- <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="2.IBPersistedLastKnownCanvasPosition">{505, 338}</string>
- <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="60.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="61.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="62.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="63.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="64.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="65.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="66.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="67.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="68.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="69.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="70.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="71.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="72.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="73.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="74.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="75.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="76.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
- <nil key="activeLocalization"/>
- <dictionary class="NSMutableDictionary" key="localizations"/>
- <nil key="sourceID"/>
- <int key="maxID">95</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="4600" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="HelpPageLobbyViewController">
+ <connections>
+ <outlet property="scrollView" destination="60" id="95"/>
+ <outlet property="view" destination="2" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="276"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="60">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="276"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Still confused? Don't worry, it's really simple! Try a couple of games and everything will become clear to you." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="61" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="587" width="440" height="52"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Size slider" lineBreakMode="tailTruncation" minimumFontSize="10" id="62" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="279" width="138" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="For Random and Maze maps you can decide to generate only maps of a certain size." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="63" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="298" width="440" height="44"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Schemes and Weapons" lineBreakMode="tailTruncation" minimumFontSize="10" id="64" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="511" width="204" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Here you can choose which rules and which weapon set will be applied in game." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="65" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="530" width="433" height="45"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Map preview" lineBreakMode="tailTruncation" minimumFontSize="10" id="66" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="68" width="109" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This is a small preview of your next map. Tap to select / generate a new map." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="67" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="88" width="440" height="44"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Map type" lineBreakMode="tailTruncation" minimumFontSize="10" id="68" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="140" width="109" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="69" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="164" width="440" height="58"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <string key="text">Choose between a static map or a randomly generated one (might require more time). In a mission you need to perfom some action to win.</string>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Map theme" lineBreakMode="tailTruncation" minimumFontSize="10" id="70" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="229" width="109" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Here you can choose how your map will appear in game." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="71" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="244" width="440" height="33"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Max hedgehogs" lineBreakMode="tailTruncation" minimumFontSize="10" id="72" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="347" width="138" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This number is the maximum size for all the hogs playing (in every team)." lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="73" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="367" width="440" height="41"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Teams" lineBreakMode="tailTruncation" minimumFontSize="10" id="74" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="418" width="109" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="75" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="436" width="433" height="66"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <string key="text">Select which teams are playing! Add hogs by tapping on them and set their color to figure friend and foe teams out. AI teams will appear with a small robot badge next their name.</string>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Here you can find help for the game configuration options. You can customize almost everything in the settings page." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="76" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="20" y="3" width="440" height="60"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Oblique" family="Helvetica" pointSize="16"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ </subviews>
+ <animations/>
+ </scrollView>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" red="0.99607849120000003" green="0.98823535439999999" blue="1" alpha="1" colorSpace="deviceRGB"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ <point key="canvasLocation" x="505" y="338"/>
+ </view>
+ </objects>
+</document>
--- a/project_files/HedgewarsMobile/Classes/HogHatViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HogHatViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -26,13 +26,11 @@
NSArray *hatArray;
UIImage *normalHogSprite;
- NSIndexPath *lastIndexPath;
}
@property (nonatomic,retain) NSDictionary *teamDictionary;
@property (nonatomic) NSInteger selectedHog;
@property (nonatomic,retain) NSArray *hatArray;
@property (nonatomic,retain) UIImage *normalHogSprite;
-@property (nonatomic,retain) NSIndexPath *lastIndexPath;
@end
--- a/project_files/HedgewarsMobile/Classes/HogHatViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HogHatViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -21,7 +21,7 @@
@implementation HogHatViewController
-@synthesize teamDictionary, hatArray, normalHogSprite, lastIndexPath, selectedHog;
+@synthesize teamDictionary, hatArray, normalHogSprite, selectedHog;
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
@@ -77,8 +77,7 @@
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
- NSDictionary *hog = [[self.teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:selectedHog];
- NSString *hat = [hatArray objectAtIndex:[indexPath row]];
+ NSString *hat = [self.hatArray objectAtIndex:[indexPath row]];
cell.textLabel.text = [hat stringByDeletingPathExtension];
NSString *hatFile = [[NSString alloc] initWithFormat:@"%@/%@", HATS_DIRECTORY(), hat];
@@ -87,9 +86,9 @@
cell.imageView.image = [self.normalHogSprite mergeWith:hatSprite atPoint:CGPointMake(0, 5)];
[hatSprite release];
- if ([hat isEqualToString:[hog objectForKey:@"hat"]]) {
+ NSDictionary *hog = (self.selectedHog != -1) ? [[self.teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:self.selectedHog] : nil;
+ if ([[hat stringByDeletingPathExtension] isEqualToString:[hog objectForKey:@"hat"]]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
- self.lastIndexPath = indexPath;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
@@ -100,45 +99,53 @@
#pragma mark -
#pragma mark Table view delegate
--(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- NSInteger newRow = [indexPath row];
- NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;
-
- if (newRow != oldRow) {
- // if the two selected rows differ update data on the hog dictionary and reload table content
- // TODO: maybe this section could be cleaned up
- NSDictionary *oldHog = [[teamDictionary objectForKey:@"hedgehogs"] objectAtIndex:selectedHog];
+-(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ NSInteger selectedRow = [indexPath row];
+ NSString *newHat = [[self.hatArray objectAtIndex:selectedRow] stringByDeletingPathExtension];
+
+ // update data on the hogs dictionary
+ if (self.selectedHog != -1)
+ {
+ // update only selected hog with new hat
+ [self updateTeamDictionaryWithNewHat:newHat forStartHogIndex:self.selectedHog toEndHogIndex:self.selectedHog];
+ }
+ else
+ {
+ // update all hogs with new hat
+ NSInteger startIndex = 0;
+ NSInteger endIndex = [[self.teamDictionary objectForKey:@"hedgehogs"] count] - 1;
+ [self updateTeamDictionaryWithNewHat:newHat forStartHogIndex:startIndex toEndHogIndex:endIndex];
+ }
- NSMutableDictionary *newHog = [[NSMutableDictionary alloc] initWithDictionary: oldHog];
- [newHog setObject:[[hatArray objectAtIndex:newRow] stringByDeletingPathExtension] forKey:@"hat"];
- [[teamDictionary objectForKey:@"hedgehogs"] replaceObjectAtIndex:selectedHog withObject:newHog];
- [newHog release];
-
- // tell our boss to write this new stuff on disk
- [[NSNotificationCenter defaultCenter] postNotificationName:@"setWriteNeedTeams" object:nil];
-
- UITableViewCell *newCell = [aTableView cellForRowAtIndexPath:indexPath];
- newCell.accessoryType = UITableViewCellAccessoryCheckmark;
- UITableViewCell *oldCell = [aTableView cellForRowAtIndexPath:lastIndexPath];
- oldCell.accessoryType = UITableViewCellAccessoryNone;
- self.lastIndexPath = indexPath;
- [aTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
- }
- [aTableView deselectRowAtIndexPath:indexPath animated:YES];
+ // tell our boss to write this new stuff on disk
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"setWriteNeedTeams" object:nil];
+
[self.navigationController popViewControllerAnimated:YES];
}
+- (void)updateTeamDictionaryWithNewHat:(NSString *)newHat forStartHogIndex:(NSInteger)startIndex toEndHogIndex:(NSInteger)endIndex
+{
+ NSMutableArray *hogsArray = [self.teamDictionary objectForKey:@"hedgehogs"];
+
+ for (NSInteger i=startIndex; i <= endIndex; i++)
+ {
+ NSDictionary *oldHog = [hogsArray objectAtIndex:i];
+ NSMutableDictionary *newHog = [[NSMutableDictionary alloc] initWithDictionary:oldHog];
+ [newHog setObject:newHat forKey:@"hat"];
+ [hogsArray replaceObjectAtIndex:i withObject:newHog];
+ [newHog release];
+ }
+}
#pragma mark -
#pragma mark Memory management
-(void) didReceiveMemoryWarning {
- self.lastIndexPath = nil;
MSG_MEMCLEAN();
[super didReceiveMemoryWarning];
}
-(void) viewDidUnload {
- self.lastIndexPath = nil;
self.normalHogSprite = nil;
self.teamDictionary = nil;
self.hatArray = nil;
@@ -150,7 +157,6 @@
releaseAndNil(hatArray);
releaseAndNil(teamDictionary);
releaseAndNil(normalHogSprite);
- releaseAndNil(lastIndexPath);
[super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/HoldTableViewCell.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/HoldTableViewCell.m Mon Nov 09 16:34:03 2015 +0000
@@ -18,7 +18,7 @@
#import "HoldTableViewCell.h"
-
+#import "UITableViewCell+FindTable.h"
@implementation HoldTableViewCell
@synthesize delegate;
@@ -66,22 +66,6 @@
}
}
-- (UITableView *)findTable
-{
- UIView *tableView = self.superview;
- while (![tableView isKindOfClass:[UITableView class]] || (tableView == nil))
- {
- tableView = tableView.superview;
-
- if ([tableView isEqual:self.window])
- {
- tableView = nil;
- }
- }
-
- return (UITableView *)tableView;
-}
-
-(void) dealloc {
self.delegate = nil;
[super dealloc];
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/LabelWithIBLocalization.h Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,23 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface LabelWithIBLocalization : UILabel
+
+@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/LabelWithIBLocalization.m Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,41 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#import "LabelWithIBLocalization.h"
+
+@interface LabelWithIBLocalization ()
+@property (nonatomic) BOOL isAlreadyLocalized;
+@end
+
+@implementation LabelWithIBLocalization
+
+- (void)layoutSubviews
+{
+ [super layoutSubviews];
+
+ if (!self.isAlreadyLocalized)
+ {
+ // Text which set in Interface Builder used here as a key for localization
+ self.text = NSLocalizedString(self.text, nil);
+
+ [self setNeedsLayout];
+ self.isAlreadyLocalized = YES;
+ }
+}
+
+@end
--- a/project_files/HedgewarsMobile/Classes/LevelViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/LevelViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -31,7 +31,6 @@
#pragma mark View lifecycle
-(void) viewDidLoad {
[super viewDidLoad];
- srandom(time(NULL));
NSArray *array = [[NSArray alloc] initWithObjects:
NSLocalizedString(@"Brutal",@""),
@@ -59,10 +58,6 @@
[self.tableView setContentOffset:CGPointMake(0,0) animated:NO];
}
--(void) viewWillDisappear:(BOOL)animated {
- // stuff like checking that at least 1 field was selected
-}
-
#pragma mark -
#pragma mark Table view data source
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
@@ -133,7 +128,7 @@
if (theSwitch.on) {
numberOfSections = 2;
[self.tableView insertSections:sections withRowAnimation:UITableViewRowAnimationFade];
- level = 1 + (random() % ([levelArray count] - 1));
+ level = 1 + arc4random_uniform((int)[levelArray count] - 1);
} else {
numberOfSections = 1;
[self.tableView deleteSections:sections withRowAnimation:UITableViewRowAnimationFade];
--- a/project_files/HedgewarsMobile/Classes/MGSplitViewController/MGSplitCornersView.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MGSplitViewController/MGSplitCornersView.m Mon Nov 09 16:34:03 2015 +0000
@@ -34,8 +34,6 @@
- (void)dealloc
{
self.cornerBackgroundColor = nil;
-
- [super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/MGSplitViewController/MGSplitDividerView.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MGSplitViewController/MGSplitDividerView.m Mon Nov 09 16:34:03 2015 +0000
@@ -31,8 +31,6 @@
- (void)dealloc
{
self.splitViewController = nil;
-
- [super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/MGSplitViewController/MGSplitViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MGSplitViewController/MGSplitViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -152,8 +152,6 @@
_delegate = nil;
_viewControllers = nil;
[self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
-
- [super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/MainMenuViewController-iPad.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController-iPad.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,446 +1,135 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="8.00">
- <data>
- <int key="IBDocument.SystemTarget">1792</int>
- <string key="IBDocument.SystemVersion">14E46</string>
- <string key="IBDocument.InterfaceBuilderVersion">7706</string>
- <string key="IBDocument.AppKitVersion">1348.17</string>
- <string key="IBDocument.HIToolboxVersion">758.70</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">7703</string>
- </object>
- <array key="IBDocument.IntegratedClassDependencies">
- <string>IBProxyObject</string>
- <string>IBUIButton</string>
- <string>IBUIImageView</string>
- <string>IBUIView</string>
- </array>
- <array key="IBDocument.PluginDependencies">
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </array>
- <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
- <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <object class="IBProxyObject" id="372490531">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBProxyObject" id="975951072">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="191373211">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">294</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="976741091">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{1024, 768}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSNextKeyView" ref="95106947"/>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">background.png</string>
- </object>
- </object>
- <object class="IBUIButton" id="867308721">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">301</int>
- <string key="NSFrame">{{383, 389}, {271, 244}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSNextKeyView" ref="894101036"/>
- <bool key="IBUIOpaque">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <double key="IBUITitleEdgeInsets.top">215</double>
- <double key="IBUITitleEdgeInsets.bottom">0.0</double>
- <double key="IBUITitleEdgeInsets.left">0.0</double>
- <double key="IBUITitleEdgeInsets.right">0.0</double>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">2</int>
- <bytes key="NSRGB">MC45OTYwNzg0OTEyIDAuODAwMDAwMDcxNSAwLjAzOTIxNTY4NzY2AA</bytes>
- </object>
- <object class="NSColor" key="IBUIHighlightedTitleColor" id="918890028">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <object class="NSColor" key="IBUINormalTitleShadowColor" id="112471976">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- <object class="NSCustomResource" key="IBUINormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">localplayButton.png</string>
- </object>
- <object class="IBUIFontDescription" key="IBUIFontDescription" id="355429190">
- <string key="name">Helvetica-Bold</string>
- <string key="family">Helvetica</string>
- <int key="traits">2</int>
- <double key="pointSize">15</double>
- </object>
- <object class="NSFont" key="IBUIFont" id="917635782">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">15</double>
- <int key="NSfFlags">16</int>
- </object>
- </object>
- <object class="IBUIButton" id="95106947">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{986, 19}, {18, 19}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSNextKeyView" ref="1019880682"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <float key="IBUIAlpha">0.31690141558647156</float>
- <int key="IBUITag">3</int>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <int key="IBUIButtonType">3</int>
- <bool key="IBUIShowsTouchWhenHighlighted">YES</bool>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <reference key="IBUIFontDescription" ref="355429190"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIButton" id="898948205">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{940, 686}, {64, 64}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">2</int>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <object class="NSCustomResource" key="IBUINormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">settingsButton.png</string>
- </object>
- <reference key="IBUIFontDescription" ref="355429190"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIButton" id="894101036">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 686}, {64, 64}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSNextKeyView" ref="719094980"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">4</int>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <object class="NSCustomResource" key="IBUINormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">savesButton.png</string>
- </object>
- <reference key="IBUIFontDescription" ref="355429190"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIImageView" id="1019880682">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">301</int>
- <string key="NSFrame">{{242, 43}, {540, 300}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSNextKeyView" ref="867308721"/>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">title.png</string>
- </object>
- </object>
- <object class="IBUIButton" id="357438048">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">269</int>
- <string key="NSFrame">{{565, 686}, {89, 37}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSNextKeyView" ref="898948205"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">5</int>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <int key="IBUIButtonType">1</int>
- <object class="NSColor" key="IBUINormalTitleColor" id="194673352">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <string key="IBUINormalTitle">Missions</string>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <reference key="IBUIFontDescription" ref="355429190"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIButton" id="719094980">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">269</int>
- <string key="NSFrame">{{383, 686}, {89, 37}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSNextKeyView" ref="357438048"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">6</int>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <int key="IBUIButtonType">1</int>
- <reference key="IBUINormalTitleColor" ref="194673352"/>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <string key="IBUINormalTitle">Simple</string>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <reference key="IBUIFontDescription" ref="355429190"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- </array>
- <string key="NSFrameSize">{1024, 768}</string>
- <reference key="NSNextKeyView" ref="976741091"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAAA</bytes>
- <string key="IBUIColorCocoaTouchKeyPath">darkTextColor</string>
- </object>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="IBUIInterfaceOrientation">3</int>
- <int key="interfaceOrientation">3</int>
- </object>
- <object class="IBUIScreenMetrics" key="IBUISimulatedDestinationMetrics">
- <string key="IBUISimulatedSizeMetricsClass">IBUIScreenMetrics</string>
- <string key="IBUITargetRuntime">IBIPadFramework</string>
- <string key="IBUIDisplayName">iPad Full Screen</string>
- <object class="NSMutableDictionary" key="IBUINormalizedOrientationToSizeMap">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <array key="dict.sortedKeys">
- <integer value="1"/>
- <integer value="3"/>
- </array>
- <array key="dict.values">
- <string>{768, 1024}</string>
- <string>{1024, 768}</string>
- </array>
- </object>
- <int key="IBUIType">1</int>
- </object>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- </array>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <array key="connectionRecords">
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="191373211"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">simpleGameButton</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="719094980"/>
- </object>
- <int key="connectionID">95</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">missionsButton</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="357438048"/>
- </object>
- <int key="connectionID">96</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="867308721"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">48</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="95106947"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">47</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="898948205"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">54</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="894101036"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">89</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="357438048"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">92</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="719094980"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">94</int>
- </object>
- </array>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <array key="orderedObjects">
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <array key="object" id="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="191373211"/>
- <array class="NSMutableArray" key="children">
- <reference ref="976741091"/>
- <reference ref="867308721"/>
- <reference ref="898948205"/>
- <reference ref="894101036"/>
- <reference ref="1019880682"/>
- <reference ref="95106947"/>
- <reference ref="357438048"/>
- <reference ref="719094980"/>
- </array>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="372490531"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="975951072"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">39</int>
- <reference key="object" ref="867308721"/>
- <reference key="parent" ref="191373211"/>
- <string key="objectName">local</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">45</int>
- <reference key="object" ref="95106947"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">52</int>
- <reference key="object" ref="898948205"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">37</int>
- <reference key="object" ref="976741091"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">88</int>
- <reference key="object" ref="894101036"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">90</int>
- <reference key="object" ref="1019880682"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">91</int>
- <reference key="object" ref="357438048"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">93</int>
- <reference key="object" ref="719094980"/>
- <reference key="parent" ref="191373211"/>
- </object>
- </array>
- </object>
- <dictionary class="NSMutableDictionary" key="flattenedProperties">
- <string key="-1.CustomClassName">MainMenuViewController</string>
- <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="-2.CustomClassName">UIResponder</string>
- <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <reference key="1.IBNSViewMetadataGestureRecognizers" ref="0"/>
- <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="37.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="39.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="45.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="52.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="88.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="90.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="91.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="93.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
- <nil key="activeLocalization"/>
- <dictionary class="NSMutableDictionary" key="localizations"/>
- <nil key="sourceID"/>
- <int key="maxID">96</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
- <bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="4600" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <string key="background.png">{1024, 768}</string>
- <string key="localplayButton.png">{263, 244}</string>
- <string key="savesButton.png">{64, 64}</string>
- <string key="settingsButton.png">{64, 64}</string>
- <string key="title.png">{540, 300}</string>
- </dictionary>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MainMenuViewController">
+ <connections>
+ <outlet property="missionsButton" destination="91" id="96"/>
+ <outlet property="simpleGameButton" destination="93" id="95"/>
+ <outlet property="view" destination="1" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view contentMode="scaleToFill" id="1">
+ <rect key="frame" x="0.0" y="0.0" width="1024" height="768"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="background.png" id="37">
+ <rect key="frame" x="0.0" y="0.0" width="1024" height="768"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ </imageView>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="39" userLabel="local">
+ <rect key="frame" x="383" y="389" width="271" height="244"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <inset key="titleEdgeInsets" minX="0.0" minY="215" maxX="0.0" maxY="0.0"/>
+ <state key="normal" image="localplayButton.png">
+ <color key="titleColor" red="0.99607849120000003" green="0.80000007149999997" blue="0.039215687659999998" alpha="1" colorSpace="deviceRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="48"/>
+ </connections>
+ </button>
+ <button opaque="NO" clipsSubviews="YES" alpha="0.69999999999999996" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="infoLight" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" id="45">
+ <rect key="frame" x="984" y="20" width="22" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <color key="tintColor" red="0.99607843137254903" green="0.85098039215686272" blue="0.039215686274509803" alpha="1" colorSpace="calibratedRGB"/>
+ <state key="normal">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="47"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="52">
+ <rect key="frame" x="940" y="686" width="64" height="64"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" image="settingsButton.png">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="54"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="88">
+ <rect key="frame" x="20" y="686" width="64" height="64"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" image="savesButton.png">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="89"/>
+ </connections>
+ </button>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="title.png" id="90">
+ <rect key="frame" x="242" y="43" width="540" height="300"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ </imageView>
+ <button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="91">
+ <rect key="frame" x="565" y="686" width="89" height="37"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Missions">
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="92"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="93">
+ <rect key="frame" x="383" y="686" width="89" height="37"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Simple">
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="94"/>
+ </connections>
+ </button>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <point key="canvasLocation" x="644" y="499"/>
+ </view>
+ </objects>
+ <resources>
+ <image name="background.png" width="1024" height="768"/>
+ <image name="localplayButton.png" width="263" height="244"/>
+ <image name="savesButton.png" width="64" height="64"/>
+ <image name="settingsButton.png" width="64" height="64"/>
+ <image name="title.png" width="540" height="300"/>
+ </resources>
+</document>
--- a/project_files/HedgewarsMobile/Classes/MainMenuViewController-iPhone.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController-iPhone.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,581 +1,137 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
- <data>
- <int key="IBDocument.SystemTarget">1792</int>
- <string key="IBDocument.SystemVersion">14E46</string>
- <string key="IBDocument.InterfaceBuilderVersion">7706</string>
- <string key="IBDocument.AppKitVersion">1348.17</string>
- <string key="IBDocument.HIToolboxVersion">758.70</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">7703</string>
- </object>
- <array key="IBDocument.IntegratedClassDependencies">
- <string>IBProxyObject</string>
- <string>IBUIButton</string>
- <string>IBUIImageView</string>
- <string>IBUIView</string>
- </array>
- <array key="IBDocument.PluginDependencies">
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </array>
- <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
- <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <object class="IBProxyObject" id="372490531">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBProxyObject" id="975951072">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIView" id="191373211">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">293</int>
- <array class="NSMutableArray" key="NSSubviews">
- <object class="IBUIImageView" id="249993817">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{480, 320}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="818907840"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwAA</bytes>
- </object>
- <int key="IBUIContentMode">2</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">background.png</string>
- </object>
- </object>
- <object class="IBUIImageView" id="171108356">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">293</int>
- <string key="NSFrame">{{105, 20}, {270, 150}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="670499101"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <int key="IBUIContentMode">4</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">title.png</string>
- </object>
- </object>
- <object class="IBUIButton" id="670499101">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{376, 14}, {89, 31}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="1052303532"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">5</int>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <int key="IBUIButtonType">1</int>
- <object class="NSColor" key="IBUINormalTitleColor" id="989198518">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA</bytes>
- </object>
- <object class="NSColor" key="IBUIHighlightedTitleColor" id="918890028">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <string key="IBUINormalTitle">Missions</string>
- <object class="NSColor" key="IBUINormalTitleShadowColor" id="112471976">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- <object class="IBUIFontDescription" key="IBUIFontDescription" id="748254727">
- <string key="name">Helvetica-Bold</string>
- <string key="family">Helvetica</string>
- <int key="traits">2</int>
- <double key="pointSize">15</double>
- </object>
- <object class="NSFont" key="IBUIFont" id="917635782">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">15</double>
- <int key="NSfFlags">16</int>
- </object>
- </object>
- <object class="IBUIButton" id="124270424">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">269</int>
- <string key="NSFrame">{{190, 200}, {100, 100}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="753723574"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAgMAA</bytes>
- </object>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <object class="NSCustomResource" key="IBUINormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">localplayButton.png</string>
- </object>
- <reference key="IBUIFontDescription" ref="748254727"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIButton" id="753723574">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{396, 236}, {64, 64}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <int key="IBUITag">2</int>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <object class="NSCustomResource" key="IBUINormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">settingsButton.png</string>
- </object>
- <reference key="IBUIFontDescription" ref="748254727"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIButton" id="705508539">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 236}, {64, 64}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="124270424"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <int key="IBUITag">4</int>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <object class="NSCustomResource" key="IBUINormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">savesButton.png</string>
- </object>
- <reference key="IBUIFontDescription" ref="748254727"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIButton" id="818907840">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 19}, {18, 19}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="171108356"/>
- <bool key="IBUIOpaque">NO</bool>
- <float key="IBUIAlpha">0.5</float>
- <int key="IBUITag">3</int>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <int key="IBUIButtonType">3</int>
- <bool key="IBUIShowsTouchWhenHighlighted">YES</bool>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
- </object>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <reference key="IBUIFontDescription" ref="748254727"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- <object class="IBUIButton" id="1052303532">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">289</int>
- <string key="NSFrame">{{376, 57}, {89, 31}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="705508539"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">6</int>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <int key="IBUIButtonType">1</int>
- <reference key="IBUINormalTitleColor" ref="989198518"/>
- <reference key="IBUIHighlightedTitleColor" ref="918890028"/>
- <string key="IBUINormalTitle">Simple</string>
- <reference key="IBUINormalTitleShadowColor" ref="112471976"/>
- <reference key="IBUIFontDescription" ref="748254727"/>
- <reference key="IBUIFont" ref="917635782"/>
- </object>
- </array>
- <string key="NSFrameSize">{480, 320}</string>
- <reference key="NSSuperview"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView" ref="249993817"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAAA</bytes>
- <string key="IBUIColorCocoaTouchKeyPath">darkTextColor</string>
- </object>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="IBUIInterfaceOrientation">3</int>
- <int key="interfaceOrientation">3</int>
- </object>
- <object class="IBUISimulatedSizeMetrics" key="IBUISimulatedDestinationMetrics">
- <string key="IBUISimulatedSizeMetricsClass">IBUISimulatedFreeformSizeMetricsSentinel</string>
- <string key="IBUIDisplayName">Freeform</string>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- </array>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <array key="connectionRecords">
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="191373211"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">missionsButton</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="670499101"/>
- </object>
- <int key="connectionID">54</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">simpleGameButton</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="1052303532"/>
- </object>
- <int key="connectionID">56</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="124270424"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">40</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="753723574"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">30</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="818907840"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">42</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="705508539"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">44</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="1052303532"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">55</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">switchViews:</string>
- <reference key="source" ref="670499101"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">53</int>
- </object>
- </array>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <array key="orderedObjects">
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <array key="object" id="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="191373211"/>
- <array class="NSMutableArray" key="children">
- <reference ref="249993817"/>
- <reference ref="818907840"/>
- <reference ref="171108356"/>
- <reference ref="705508539"/>
- <reference ref="753723574"/>
- <reference ref="124270424"/>
- <reference ref="670499101"/>
- <reference ref="1052303532"/>
- </array>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="372490531"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="975951072"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="171108356"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">22</int>
- <reference key="object" ref="249993817"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="818907840"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">43</int>
- <reference key="object" ref="705508539"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="124270424"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">28</int>
- <reference key="object" ref="753723574"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">51</int>
- <reference key="object" ref="1052303532"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">52</int>
- <reference key="object" ref="670499101"/>
- <reference key="parent" ref="191373211"/>
- </object>
- </array>
- </object>
- <dictionary class="NSMutableDictionary" key="flattenedProperties">
- <string key="-1.CustomClassName">MainMenuViewController</string>
- <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="-2.CustomClassName">UIResponder</string>
- <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <reference key="1.IBNSViewMetadataGestureRecognizers" ref="0"/>
- <string key="1.IBPersistedLastKnownCanvasPosition">{567, 470}</string>
- <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="28.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="41.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="43.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="51.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="52.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
- <nil key="activeLocalization"/>
- <dictionary class="NSMutableDictionary" key="localizations"/>
- <nil key="sourceID"/>
- <int key="maxID">56</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <array class="NSMutableArray" key="referencedPartialClassDescriptions">
- <object class="IBPartialClassDescription">
- <string key="className">MainMenuViewController</string>
- <string key="superclassName">UIViewController</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">switchViews:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">switchViews:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">switchViews:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">../Classes/MainMenuViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">MainMenuViewController</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">switchViews:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">switchViews:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">switchViews:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <dictionary class="NSMutableDictionary" key="outlets">
- <string key="missionsButton">UIButton</string>
- <string key="simpleGameButton">UIButton</string>
- </dictionary>
- <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
- <object class="IBToOneOutletInfo" key="missionsButton">
- <string key="name">missionsButton</string>
- <string key="candidateClassName">UIButton</string>
- </object>
- <object class="IBToOneOutletInfo" key="simpleGameButton">
- <string key="name">simpleGameButton</string>
- <string key="candidateClassName">UIButton</string>
- </object>
- </dictionary>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">../Classes/MainMenuViewController.m</string>
- </object>
- </object>
- </array>
- <array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <object class="IBPartialClassDescription">
- <string key="className">UIButton</string>
- <string key="superclassName">UIControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIControl</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIGestureRecognizer</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIGestureRecognizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIImageView</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchDisplayController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
- </object>
- </object>
- </array>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="4600" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <string key="background.png">{480, 320}</string>
- <string key="localplayButton.png">{100, 100}</string>
- <string key="savesButton.png">{64, 64}</string>
- <string key="settingsButton.png">{64, 64}</string>
- <string key="title.png">{270, 150}</string>
- </dictionary>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MainMenuViewController">
+ <connections>
+ <outlet property="missionsButton" destination="52" id="54"/>
+ <outlet property="simpleGameButton" destination="51" id="56"/>
+ <outlet property="view" destination="1" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view contentMode="scaleToFill" id="1">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" image="background.png" id="22">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </imageView>
+ <imageView opaque="NO" clearsContextBeforeDrawing="NO" userInteractionEnabled="NO" contentMode="center" image="title.png" id="23">
+ <rect key="frame" x="105" y="20" width="270" height="150"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ </imageView>
+ <button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="52">
+ <rect key="frame" x="376" y="14" width="89" height="31"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Missions">
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="53"/>
+ </connections>
+ </button>
+ <button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="24">
+ <rect key="frame" x="190" y="200" width="100" height="100"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" image="localplayButton.png">
+ <color key="titleColor" red="0.19607843" green="0.30980393000000001" blue="0.52156866000000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="40"/>
+ </connections>
+ </button>
+ <button opaque="NO" clearsContextBeforeDrawing="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="28">
+ <rect key="frame" x="396" y="236" width="64" height="64"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" image="settingsButton.png">
+ <color key="titleColor" red="0.19607843" green="0.30980393000000001" blue="0.52156866000000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="30"/>
+ </connections>
+ </button>
+ <button opaque="NO" clearsContextBeforeDrawing="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="43">
+ <rect key="frame" x="20" y="236" width="64" height="64"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" image="savesButton.png">
+ <color key="titleColor" red="0.19607843" green="0.30980393000000001" blue="0.52156866000000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="44"/>
+ </connections>
+ </button>
+ <button opaque="NO" alpha="0.69999999999999996" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="infoLight" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" id="41">
+ <rect key="frame" x="20" y="20" width="22" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <color key="tintColor" red="0.99607843137254903" green="0.85098039215686272" blue="0.039215686274509803" alpha="1" colorSpace="calibratedRGB"/>
+ <state key="normal">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="42"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="51">
+ <rect key="frame" x="376" y="57" width="89" height="31"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Simple">
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="switchViews:" destination="-1" eventType="touchUpInside" id="55"/>
+ </connections>
+ </button>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ <point key="canvasLocation" x="567" y="470"/>
+ </view>
+ </objects>
+ <resources>
+ <image name="background.png" width="480" height="320"/>
+ <image name="localplayButton.png" width="100" height="100"/>
+ <image name="savesButton.png" width="64" height="64"/>
+ <image name="settingsButton.png" width="64" height="64"/>
+ <image name="title.png" width="270" height="150"/>
+ </resources>
+</document>
--- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -19,29 +19,7 @@
#import <UIKit/UIKit.h>
-
-@class GameConfigViewController;
-@class SettingsContainerViewController;
-@class AboutViewController;
-@class SavedGamesViewController;
-@class RestoreViewController;
-@class MissionTrainingViewController;
-
-@interface MainMenuViewController : UIViewController <UIAlertViewDelegate> {
- GameConfigViewController *gameConfigViewController;
- SettingsContainerViewController *settingsViewController;
- AboutViewController *aboutViewController;
- SavedGamesViewController *savedGamesViewController;
- RestoreViewController *restoreViewController;
- MissionTrainingViewController *missionsViewController;
-}
-
-@property (nonatomic,retain) GameConfigViewController *gameConfigViewController;
-@property (nonatomic,retain) SettingsContainerViewController *settingsViewController;
-@property (nonatomic,retain) AboutViewController *aboutViewController;
-@property (nonatomic,retain) SavedGamesViewController *savedGamesViewController;
-@property (nonatomic,retain) RestoreViewController *restoreViewController;
-@property (nonatomic,retain) MissionTrainingViewController *missionsViewController;
+@interface MainMenuViewController : UIViewController <UIAlertViewDelegate>
-(IBAction) switchViews:(id)sender;
--- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -20,7 +20,8 @@
#import "MainMenuViewController.h"
#import <QuartzCore/QuartzCore.h>
#import "GameConfigViewController.h"
-#import "SettingsContainerViewController.h"
+#import "MGSplitViewController.h"
+#import "SettingsBaseViewController.h"
#import "AboutViewController.h"
#import "SavedGamesViewController.h"
#import "RestoreViewController.h"
@@ -29,14 +30,23 @@
#import "ServerProtocolNetwork.h"
#import "GameInterfaceBridge.h"
+#import "SettingsBaseViewController.h"
+#import "GeneralSettingsViewController.h"
+#import "TeamSettingsViewController.h"
+#import "WeaponSettingsViewController.h"
+#import "SchemeSettingsViewController.h"
+#import "SupportViewController.h"
+
+#ifdef DEBUG
+#import "GameLogViewController.h"
+#endif
+
@interface MainMenuViewController ()
@property (retain, nonatomic) IBOutlet UIButton *simpleGameButton;
@property (retain, nonatomic) IBOutlet UIButton *missionsButton;
@end
@implementation MainMenuViewController
-@synthesize gameConfigViewController, settingsViewController, aboutViewController, savedGamesViewController,
- restoreViewController, missionsViewController;
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return rotationManager(interfaceOrientation);
@@ -47,6 +57,9 @@
self.view.frame = [[UIScreen mainScreen] safeBounds];
[super viewDidLoad];
+ [self.simpleGameButton setTitle:NSLocalizedString(@"Simple", nil) forState:UIControlStateNormal];
+ [self.missionsButton setTitle:NSLocalizedString(@"Missions", nil) forState:UIControlStateNormal];
+
[self.simpleGameButton applyDarkBlueQuickStyle];
[self.missionsButton applyDarkBlueQuickStyle];
@@ -69,19 +82,19 @@
// prompt for restoring any previous game
NSString *saveString = [userDefaults objectForKey:@"savedGamePath"];
- if (saveString != nil && [saveString isEqualToString:@""] == NO && [[userDefaults objectForKey:@"saveIsValid"] boolValue]) {
- if (self.restoreViewController == nil) {
- NSString *xibName = [@"RestoreViewController-" stringByAppendingString:(IS_IPAD() ? @"iPad" : @"iPhone")];
- RestoreViewController *restored = [[RestoreViewController alloc] initWithNibName:xibName bundle:nil];
- if ([restored respondsToSelector:@selector(setModalPresentationStyle:)])
- restored.modalPresentationStyle = UIModalPresentationFormSheet;
- self.restoreViewController = restored;
- [restored release];
- }
- [self performSelector:@selector(presentViewController:) withObject:self.restoreViewController afterDelay:0.25];
- } else {
+ if (saveString != nil && [saveString isEqualToString:@""] == NO && [[userDefaults objectForKey:@"saveIsValid"] boolValue])
+ {
+ NSString *xibName = [@"RestoreViewController-" stringByAppendingString:(IS_IPAD() ? @"iPad" : @"iPhone")];
+ RestoreViewController *restored = [[RestoreViewController alloc] initWithNibName:xibName bundle:nil];
+ if ([restored respondsToSelector:@selector(setModalPresentationStyle:)])
+ restored.modalPresentationStyle = UIModalPresentationFormSheet;
+
+ [self performSelector:@selector(presentViewController:) withObject:restored afterDelay:0.25];
+ }
+ else
+ {
// let's not prompt for rating when app crashed >_>
- [Appirater appLaunched];
+ [Appirater appLaunched:YES];
}
/*
@@ -92,6 +105,7 @@
- (void) presentViewController:(UIViewController *)vc
{
[self presentViewController:vc animated:NO completion:nil];
+ [vc release];
}
-(void) viewWillAppear:(BOOL)animated {
@@ -104,99 +118,134 @@
UIButton *button = (UIButton *)sender;
UIAlertView *alert;
NSString *xib = nil;
- NSString *debugStr = nil;
[[AudioManagerController mainManager] playClickSound];
switch (button.tag) {
case 0:
- if (nil == self.gameConfigViewController) {
- xib = IS_IPAD() ? @"GameConfigViewController-iPad" : @"GameConfigViewController-iPhone";
+ xib = IS_IPAD() ? @"GameConfigViewController-iPad" : @"GameConfigViewController-iPhone";
- GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil];
- gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
- self.gameConfigViewController = gcvc;
- [gcvc release];
- }
- [self presentViewController:self.gameConfigViewController animated:YES completion:nil];
+ GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil];
+ gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
+
+ [self presentViewController:gcvc animated:YES completion:nil];
+ [gcvc release];
break;
case 2:
- if (nil == self.settingsViewController) {
- SettingsContainerViewController *svrc = [[SettingsContainerViewController alloc] initWithNibName:nil bundle:nil];
- svrc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
- self.settingsViewController = svrc;
- [svrc release];
+ if (IS_IPAD())
+ {
+ // the contents on the right of the splitview, setting targetController to nil to avoid creating the table
+ SettingsBaseViewController *rightController = [[SettingsBaseViewController alloc] init];
+ rightController.targetController = nil;
+ UINavigationController *rightNavController = [[UINavigationController alloc] initWithRootViewController:rightController];
+ [rightController release];
+
+ // the contens on the left of the splitview, setting targetController that will receive push/pop actions
+ SettingsBaseViewController *leftController = [[SettingsBaseViewController alloc] init];
+ leftController.targetController = rightNavController.topViewController;
+ UINavigationController *leftNavController = [[UINavigationController alloc] initWithRootViewController:leftController];
+ [leftController release];
+
+ MGSplitViewController *splitViewRootController = [[MGSplitViewController alloc] init];
+ splitViewRootController.delegate = nil;
+ splitViewRootController.showsMasterInPortrait = YES;
+ splitViewRootController.viewControllers = [NSArray arrayWithObjects:leftNavController, rightNavController, nil];
+ [leftNavController release];
+ [rightNavController release];
+
+ [self presentViewController:splitViewRootController animated:YES completion:nil];
+ [splitViewRootController release];
}
- [self presentViewController:self.settingsViewController animated:YES completion:nil];
+ else
+ {
+ NSMutableArray *tabBarNavigationControllers = [[NSMutableArray alloc] initWithCapacity:5];
+
+ UIViewController *generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ generalSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"General",@"") imageName:@"flower" selectedImageName:@"flower_filled"];
+ UINavigationController *generalNavController = [[UINavigationController alloc] initWithRootViewController:generalSettingsViewController];
+ [generalSettingsViewController release];
+ [tabBarNavigationControllers addObject:generalNavController];
+ [generalNavController release];
+
+ UIViewController *teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ teamSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Teams",@"") imageName:@"teams" selectedImageName:@"teams_filled"];
+ UINavigationController *teamNavController = [[UINavigationController alloc] initWithRootViewController:teamSettingsViewController];
+ [teamSettingsViewController release];
+ [tabBarNavigationControllers addObject:teamNavController];
+ [teamNavController release];
+
+ UIViewController *weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ weaponSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Weapons",@"") imageName:@"bullet" selectedImageName:@"bullet_filled"];
+ UINavigationController *weaponNavController = [[UINavigationController alloc] initWithRootViewController:weaponSettingsViewController];
+ [weaponSettingsViewController release];
+ [tabBarNavigationControllers addObject:weaponNavController];
+ [weaponNavController release];
+
+ UIViewController *schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ schemeSettingsViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Schemes",@"") imageName:@"target" selectedImageName:@"target_filled"];
+ UINavigationController *schemeNavController = [[UINavigationController alloc] initWithRootViewController:schemeSettingsViewController];
+ [schemeSettingsViewController release];
+ [tabBarNavigationControllers addObject:schemeNavController];
+ [schemeNavController release];
+
+ UIViewController *supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ supportViewController.tabBarItem = [self tabBarItemWithTitle:NSLocalizedString(@"Support",@"") imageName:@"heart" selectedImageName:@"heart_filled"];
+ UINavigationController *supportNavController = [[UINavigationController alloc] initWithRootViewController:supportViewController];
+ [supportViewController release];
+ [tabBarNavigationControllers addObject:supportNavController];
+ [supportNavController release];
+
+ UITabBarController *settingsTabController = [[UITabBarController alloc] init];
+ settingsTabController.viewControllers = tabBarNavigationControllers;
+ [tabBarNavigationControllers release];
+
+ [self presentViewController:settingsTabController animated:YES completion:nil];
+ [settingsTabController release];
+ }
break;
case 3:
#ifdef DEBUG
- if ([[NSFileManager defaultManager] fileExistsAtPath:DEBUG_FILE()])
- debugStr = [[NSString alloc] initWithContentsOfFile:DEBUG_FILE()];
- else
- debugStr = [[NSString alloc] initWithString:@"Here be log"];
- UITextView *scroll = [[UITextView alloc] initWithFrame:self.view.frame];
- scroll.text = debugStr;
- [debugStr release];
- scroll.editable = NO;
- scroll.alpha = 0;
-
- UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
- [btn addTarget:scroll action:@selector(removeFromSuperview) forControlEvents:UIControlEventTouchUpInside];
- [btn addTarget:btn action:@selector(removeFromSuperview) forControlEvents:UIControlEventTouchUpInside];
- btn.frame = CGRectMake(self.view.frame.size.width-58, -6, 64, 64);
- btn.backgroundColor = [UIColor blackColor];
- btn.titleLabel.textColor = [UIColor whiteColor];
- btn.titleLabel.textAlignment = UITextAlignmentCenter;
- btn.titleLabel.font = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
- [btn setTitle:@"Close" forState:UIControlStateNormal];
- btn.alpha = 0;
- [btn.layer setCornerRadius:10.0f];
- [btn.layer setMasksToBounds:YES];
-
- [self.view addSubview:scroll];
- [self.view addSubview:btn];
-
- [UIView beginAnimations:@"fadein" context:NULL];
- [UIView setAnimationDuration:0.25f];
- btn.alpha = 1;
- scroll.alpha = 1;
- [UIView commitAnimations];
- [scroll release];
+ {
+ GameLogViewController *gameLogVC = [[GameLogViewController alloc] init];
+ UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:gameLogVC];
+ [gameLogVC release];
+
+ [self presentViewController:navController animated:YES completion:nil];
+ [navController release];
+ }
#else
- debugStr = debugStr; // prevent compiler warning
- if (nil == self.aboutViewController) {
+ {
AboutViewController *about = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil];
about.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
if ([about respondsToSelector:@selector(setModalPresentationStyle:)])
about.modalPresentationStyle = UIModalPresentationFormSheet;
- self.aboutViewController = about;
+
+ [self presentViewController:about animated:YES completion:nil];
[about release];
}
- [self presentViewController:self.aboutViewController animated:YES completion:nil];
#endif
break;
case 4:
- if (nil == self.savedGamesViewController) {
+ {
SavedGamesViewController *savedgames = [[SavedGamesViewController alloc] initWithNibName:@"SavedGamesViewController" bundle:nil];
savedgames.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
if ([savedgames respondsToSelector:@selector(setModalPresentationStyle:)])
savedgames.modalPresentationStyle = UIModalPresentationPageSheet;
- self.savedGamesViewController = savedgames;
+
+ [self presentViewController:savedgames animated:YES completion:nil];
[savedgames release];
}
- [self presentViewController:self.savedGamesViewController animated:YES completion:nil];
break;
case 5:
- if (nil == self.missionsViewController) {
+ {
xib = IS_IPAD() ? @"MissionTrainingViewController-iPad" : @"MissionTrainingViewController-iPhone";
MissionTrainingViewController *missions = [[MissionTrainingViewController alloc] initWithNibName:xib bundle:nil];
missions.modalTransitionStyle = IS_IPAD() ? UIModalTransitionStyleCoverVertical : UIModalTransitionStyleCrossDissolve;
if ([missions respondsToSelector:@selector(setModalPresentationStyle:)])
missions.modalPresentationStyle = UIModalPresentationPageSheet;
- self.missionsViewController = missions;
+
+ [self presentViewController:missions animated:YES completion:nil];
[missions release];
}
- [self presentViewController:self.missionsViewController animated:YES completion:nil];
break;
case 6:
[GameInterfaceBridge registerCallingController:self];
@@ -214,42 +263,27 @@
}
}
+- (UITabBarItem *)tabBarItemWithTitle: (NSString *)title
+ imageName: (NSString *)imageName
+ selectedImageName: (NSString *)selectedImageName
+{
+ return [[[UITabBarItem alloc] initWithTitle:title
+ image:[UIImage imageNamed:imageName]
+ selectedImage:[UIImage imageNamed:selectedImageName]] autorelease];
+}
+
#pragma mark -
-(void) viewDidUnload {
- self.gameConfigViewController = nil;
- self.settingsViewController = nil;
- self.aboutViewController = nil;
- self.savedGamesViewController = nil;
- self.restoreViewController = nil;
- self.missionsViewController = nil;
MSG_DIDUNLOAD();
[super viewDidUnload];
}
-(void) didReceiveMemoryWarning {
- if (self.settingsViewController.view.superview == nil)
- self.settingsViewController = nil;
- if (self.gameConfigViewController.view.superview == nil)
- self.gameConfigViewController = nil;
- if (self.aboutViewController.view.superview == nil)
- self.aboutViewController = nil;
- if (self.savedGamesViewController.view.superview == nil)
- self.savedGamesViewController = nil;
- if (self.restoreViewController.view.superview == nil)
- self.restoreViewController = nil;
- if (self.missionsViewController.view.superview == nil)
- self.missionsViewController = nil;
MSG_MEMCLEAN();
[super didReceiveMemoryWarning];
}
-(void) dealloc {
- releaseAndNil(settingsViewController);
- releaseAndNil(gameConfigViewController);
- releaseAndNil(aboutViewController);
- releaseAndNil(savedGamesViewController);
- releaseAndNil(restoreViewController);
- releaseAndNil(missionsViewController);
[_simpleGameButton release];
[_missionsButton release];
[super dealloc];
--- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -62,7 +62,7 @@
[seed release];
// perform as if user clicked on an entry
- NSIndexPath *theIndex = [NSIndexPath indexPathForRow:(random()%[source count]) inSection:0];
+ NSIndexPath *theIndex = [NSIndexPath indexPathForRow:arc4random_uniform((int)[source count]) inSection:0];
[self tableView:self.tableView didSelectRowAtIndexPath:theIndex];
if (IS_NOT_POWERFUL([HWUtils modelType]) == NO)
[self.tableView scrollToRowAtIndexPath:theIndex atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
@@ -352,6 +352,15 @@
oldPage = newPage;
}
+- (void)localizeSegmentedControl
+{
+ for (NSUInteger i = 0; i < self.segmentedControl.numberOfSegments; i++)
+ {
+ NSString *oldTitle = [self.segmentedControl titleForSegmentAtIndex:i];
+ [self.segmentedControl setTitle:NSLocalizedString(oldTitle, nil) forSegmentAtIndex:i];
+ }
+}
+
#pragma mark -
#pragma mark view management
-(NSArray *) dataSourceArray {
@@ -403,8 +412,9 @@
-(void) viewDidLoad {
[super viewDidLoad];
- srandom(time(NULL));
-
+
+ [self localizeSegmentedControl];
+
// initialize some "default" values
self.slider.value = 0.05f;
self.slider.enabled = NO;
--- a/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.m Mon Nov 09 16:34:03 2015 +0000
@@ -58,7 +58,7 @@
#pragma mark -
#pragma mark preview
-(int) sendToEngine:(NSString *)string {
- unsigned char length = [string length];
+ unsigned char length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
SDLNet_TCP_Send(csd, &length, 1);
return SDLNet_TCP_Send(csd, [string UTF8String], length);
--- a/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -20,18 +20,12 @@
#import <UIKit/UIKit.h>
-@interface MissionTrainingViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
- NSArray *listOfMissions;
- NSArray *listOfDescriptions;
- NSString *missionName;
- UIImageView *previewImage;
- UITableView *tableView;
- UILabel *descriptionLabel;
-}
+@interface MissionTrainingViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
-@property (nonatomic, retain) NSArray *listOfMissions;
-@property (nonatomic, retain) NSArray *listOfDescriptions;
+@property (nonatomic, retain) NSArray *listOfMissionIDs;
+@property (nonatomic, retain) NSDictionary *dictOfMissions;
@property (nonatomic, retain) NSString *missionName;
+
@property (nonatomic, retain) IBOutlet UIImageView *previewImage;
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) IBOutlet UILabel *descriptionLabel;
--- a/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -23,7 +23,6 @@
@implementation MissionTrainingViewController
-@synthesize listOfMissions, listOfDescriptions, previewImage, tableView, descriptionLabel, missionName;
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return rotationManager(interfaceOrientation);
@@ -31,7 +30,10 @@
#pragma mark -
#pragma mark View management
--(void) viewDidLoad {
+-(void) viewDidLoad
+{
+ [super viewDidLoad];
+
self.previewImage.layer.borderColor = [[UIColor darkYellowColor] CGColor];
self.previewImage.layer.borderWidth = 3.8f;
self.previewImage.layer.cornerRadius = 14;
@@ -50,12 +52,11 @@
self.tableView.separatorColor = [UIColor whiteColor];
self.descriptionLabel.textColor = [UIColor lightYellowColor];
- [super viewDidLoad];
}
-(void) viewWillAppear:(BOOL)animated {
- NSIndexPath *indexPath = [NSIndexPath indexPathForRow:random()%[self.listOfMissions count] inSection:0];
- [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
+ NSIndexPath *indexPath = [NSIndexPath indexPathForRow:arc4random_uniform((int)[self.listOfMissionIDs count]) inSection:0];
+ [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];
[self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
[super viewWillAppear:animated];
}
@@ -72,43 +73,129 @@
}
}
-#pragma mark -
-#pragma mark override setters/getters for better memory handling
--(NSArray *)listOfMissions {
- if (listOfMissions == nil)
- self.listOfMissions = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:TRAININGS_DIRECTORY() error:NULL];
- return listOfMissions;
+#pragma mark - Missions dictionaries methods
+
+- (NSDictionary *)newLocalizedMissionsDictionary
+{
+ NSString *languageID = [HWUtils languageID];
+
+ NSString *missionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_en.txt",LOCALE_DIRECTORY()];
+ NSString *localizedMissionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_%@.txt", LOCALE_DIRECTORY(), languageID];
+
+ if (![languageID isEqualToString:@"en"] && [[NSFileManager defaultManager] fileExistsAtPath:localizedMissionsDescLocation])
+ {
+ NSDictionary *missionsDict = [self newMissionsDictionaryFromMissionsFile:missionsDescLocation];
+ NSDictionary *localizedMissionsDict = [self newMissionsDictionaryFromMissionsFile:localizedMissionsDescLocation];
+
+ [missionsDescLocation release];
+ [localizedMissionsDescLocation release];
+
+ NSMutableDictionary *tempMissionsDict = [[NSMutableDictionary alloc] init];
+
+ for (NSString *key in [missionsDict allKeys])
+ {
+ if ([localizedMissionsDict objectForKey:key])
+ {
+ [tempMissionsDict setObject:[localizedMissionsDict objectForKey:key] forKey:key];
+ }
+ else
+ {
+ [tempMissionsDict setObject:[missionsDict objectForKey:key] forKey:key];
+ }
+ }
+
+ [missionsDict release];
+ [localizedMissionsDict release];
+
+ return tempMissionsDict;
+ }
+ else
+ {
+ NSDictionary *missionsDict = [self newMissionsDictionaryFromMissionsFile:missionsDescLocation];
+
+ [missionsDescLocation release];
+ [localizedMissionsDescLocation release];
+
+ return missionsDict;
+ }
}
--(NSArray *)listOfDescriptions {
- if (listOfDescriptions == nil) {
- NSString *descLocation = [[NSString alloc] initWithFormat:@"%@/missions_en.txt",LOCALE_DIRECTORY()];
- NSString *descComplete = [[NSString alloc] initWithContentsOfFile:descLocation encoding:NSUTF8StringEncoding error:NULL];
- [descLocation release];
- NSArray *descArray = [descComplete componentsSeparatedByString:@"\n"];
- NSMutableArray *filteredArray = [[NSMutableArray alloc] initWithCapacity:[descArray count]/3];
- [descComplete release];
- // sanity check to avoid having missions and descriptions conflicts
- for (NSUInteger i = 0; i < [self.listOfMissions count]; i++) {
- NSString *desc = [[self.listOfMissions objectAtIndex:i] stringByDeletingPathExtension];
- for (NSString *str in descArray)
+- (NSDictionary *)newMissionsDictionaryFromMissionsFile:(NSString *)filePath
+{
+ NSMutableDictionary *missionsDict = [[NSMutableDictionary alloc] init];
+
+ NSString *missionsFileContents = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
+ NSArray *missionsLines = [missionsFileContents componentsSeparatedByString:@"\n"];
+ [missionsFileContents release];
+
+ for (NSString *line in missionsLines)
+ {
+ if ([line length] > 0)
+ {
+ NSUInteger firstDotLocation = [line rangeOfString:@"."].location;
+
+ NSString *missionID = [line substringToIndex:firstDotLocation];
+
+ NSString *missionFullPath = [NSString stringWithFormat:@"%@%@.lua", TRAININGS_DIRECTORY(), missionID];
+ if (![[NSFileManager defaultManager] fileExistsAtPath:missionFullPath])
{
- if ([str hasPrefix:desc] && [str hasSuffix:@"\""]) {
- NSArray *descriptionText = [str componentsSeparatedByString:@"\""];
- [filteredArray addObject:[descriptionText objectAtIndex:1]];
- break;
- }
+ continue;
+ }
+
+ NSString *nameOrDesc = [line substringFromIndex:firstDotLocation+1];
+
+ NSString *missionParsedName = ([nameOrDesc hasPrefix:@"name="]) ? [nameOrDesc stringByReplacingOccurrencesOfString:@"name=" withString:@""] : nil;
+ NSString *missionParsedDesc = ([nameOrDesc hasPrefix:@"desc="]) ? [nameOrDesc stringByReplacingOccurrencesOfString:@"desc=" withString:@""] : nil;
+
+ if (![missionsDict objectForKey:missionID])
+ {
+ NSMutableDictionary *missionDict = [[NSMutableDictionary alloc] init];
+ [missionsDict setObject:missionDict forKey:missionID];
+ [missionDict release];
}
- if ([filteredArray count] == i)
+ NSMutableDictionary *missionDict = [missionsDict objectForKey:missionID];
+
+ if (missionParsedName)
{
- [filteredArray addObject:@""];
+ [missionDict setObject:missionParsedName forKey:@"name"];
}
+
+ if (missionParsedDesc)
+ {
+ missionParsedDesc = [missionParsedDesc stringByReplacingOccurrencesOfString:@"\"" withString:@""];
+ [missionDict setObject:missionParsedDesc forKey:@"desc"];
+ }
+
+ [missionsDict setObject:missionDict forKey:missionID];
}
- self.listOfDescriptions = filteredArray;
- [filteredArray release];
}
- return listOfDescriptions;
+
+ return missionsDict;
+}
+
+#pragma mark -
+#pragma mark override setters/getters for better memory handling
+
+-(NSArray *)listOfMissionIDs
+{
+ if (!_listOfMissionIDs)
+ {
+ NSArray *sortedKeys = [[self.dictOfMissions allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
+ _listOfMissionIDs = [[NSArray alloc] initWithArray:sortedKeys];
+ }
+
+ return _listOfMissionIDs;
+}
+
+- (NSDictionary *)dictOfMissions
+{
+ if (!_dictOfMissions)
+ {
+ _dictOfMissions = [self newLocalizedMissionsDictionary];
+ }
+
+ return _dictOfMissions;
}
#pragma mark -
@@ -118,7 +205,7 @@
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- return [self.listOfMissions count];
+ return [self.listOfMissionIDs count];
}
-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
@@ -133,21 +220,28 @@
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:(IS_IPAD()) ? UITableViewCellStyleDefault : UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] autorelease];
-
- cell.textLabel.text = [[[self.listOfMissions objectAtIndex:row] stringByDeletingPathExtension]
- stringByReplacingOccurrencesOfString:@"_" withString:@" "];
+
+ NSString *missionID = [self.listOfMissionIDs objectAtIndex:row];
+ cell.textLabel.text = self.dictOfMissions[missionID][@"name"];
+
cell.textLabel.textColor = [UIColor lightYellowColor];
//cell.textLabel.font = [UIFont fontWithName:@"Bradley Hand Bold" size:[UIFont labelFontSize]];
cell.textLabel.textAlignment = (IS_IPAD()) ? UITextAlignmentCenter : UITextAlignmentLeft;
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
- cell.detailTextLabel.text = (IS_IPAD()) ? nil : [self.listOfDescriptions objectAtIndex:row];
+ cell.detailTextLabel.text = (IS_IPAD()) ? nil : self.dictOfMissions[missionID][@"desc"];
cell.detailTextLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.adjustsFontSizeToFitWidth = YES;
cell.detailTextLabel.numberOfLines = ([cell.detailTextLabel.text length] % 40);
cell.detailTextLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
+ UIView *bgColorView = [[UIView alloc] init];
+ bgColorView.backgroundColor = [UIColor colorWithRed:(85.0/255.0) green:(15.0/255.0) blue:(106.0/255.0) alpha:1.0];
+ bgColorView.layer.masksToBounds = YES;
+ cell.selectedBackgroundView = bgColorView;
+ [bgColorView release];
+
cell.backgroundColor = [UIColor blackColorTransparent];
return cell;
}
@@ -157,7 +251,7 @@
-(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
- self.missionName = [[self.listOfMissions objectAtIndex:row] stringByDeletingPathExtension];
+ self.missionName = [self.listOfMissionIDs objectAtIndex:row];
NSString *size = IS_IPAD() ? @"@2x" : @"";
NSString *filePath = [[NSString alloc] initWithFormat:@"%@/Missions/Training/%@%@.png",GRAPHICS_DIRECTORY(),self.missionName,size];
UIImage *img = [[UIImage alloc] initWithContentsOfFile:filePath];
@@ -165,24 +259,27 @@
[self.previewImage setImage:img];
[img release];
- self.descriptionLabel.text = [self.listOfDescriptions objectAtIndex:row];
+ self.descriptionLabel.text = self.dictOfMissions[self.missionName][@"desc"];
}
#pragma mark -
#pragma mark Memory management
--(void) didReceiveMemoryWarning {
+
+-(void) didReceiveMemoryWarning
+{
self.previewImage = nil;
self.missionName = nil;
- self.listOfMissions = nil;
- self.listOfDescriptions = nil;
+ self.listOfMissionIDs = nil;
+ self.dictOfMissions = nil;
// if you nil this one it won't get updated anymore
//self.previewImage = nil;
[super didReceiveMemoryWarning];
}
--(void) viewDidUnload {
- self.listOfMissions = nil;
- self.listOfDescriptions = nil;
+-(void) viewDidUnload
+{
+ self.listOfMissionIDs = nil;
+ self.dictOfMissions = nil;
self.previewImage = nil;
self.tableView = nil;
self.descriptionLabel = nil;
@@ -192,13 +289,14 @@
}
--(void) dealloc {
- releaseAndNil(listOfMissions);
- releaseAndNil(listOfDescriptions);
- releaseAndNil(previewImage);
- releaseAndNil(tableView);
- releaseAndNil(descriptionLabel);
- releaseAndNil(missionName);
+-(void) dealloc
+{
+ releaseAndNil(_listOfMissionIDs);
+ releaseAndNil(_dictOfMissions);
+ releaseAndNil(_previewImage);
+ releaseAndNil(_tableView);
+ releaseAndNil(_descriptionLabel);
+ releaseAndNil(_missionName);
[super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/RestoreViewController-iPad.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/RestoreViewController-iPad.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,654 +1,92 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1056</int>
- <string key="IBDocument.SystemVersion">10K549</string>
- <string key="IBDocument.InterfaceBuilderVersion">823</string>
- <string key="IBDocument.AppKitVersion">1038.36</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">132</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBProxyObject" id="372490531">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBProxyObject" id="975951072">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="191373211">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBUIImageView" id="138553579">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">319</int>
- <string key="NSFrameSize">{540, 640}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">smallerBackground~ipad.png</string>
- </object>
- </object>
- <object class="IBUIButton" id="155385540">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">302</int>
- <string key="NSFrame">{{84, 517}, {151, 37}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSFont" key="IBUIFont" id="204967016">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">15</double>
- <int key="NSfFlags">16</int>
- </object>
- <int key="IBUIButtonType">1</int>
- <string key="IBUINormalTitle">Dismiss</string>
- <object class="NSColor" key="IBUIHighlightedTitleColor" id="790402446">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <object class="NSColor" key="IBUINormalTitleColor" id="829178890">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAuNTAxOTYwODE0AA</bytes>
- </object>
- <object class="NSColor" key="IBUINormalTitleShadowColor" id="644451038">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
- <object class="IBUIButton" id="202794507">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">299</int>
- <string key="NSFrame">{{308, 517}, {151, 37}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">1</int>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <reference key="IBUIFont" ref="204967016"/>
- <int key="IBUIButtonType">1</int>
- <string key="IBUINormalTitle">Restore</string>
- <reference key="IBUIHighlightedTitleColor" ref="790402446"/>
- <reference key="IBUINormalTitleColor" ref="829178890"/>
- <reference key="IBUINormalTitleShadowColor" ref="644451038"/>
- </object>
- <object class="IBUILabel" id="655269955">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">295</int>
- <string key="NSFrame">{{216, 35}, {108, 29}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Hmm...</string>
- <object class="NSFont" key="IBUIFont">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">24</double>
- <int key="NSfFlags">16</int>
- </object>
- <object class="NSColor" key="IBUITextColor">
- <int key="NSColorSpace">2</int>
- <bytes key="NSRGB">MSAwLjc4MDM5MjIyOTYgMAA</bytes>
- </object>
- <reference key="IBUIHighlightedColor" ref="790402446"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUITextAlignment">1</int>
- </object>
- <object class="IBUILabel" id="19933541">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">282</int>
- <string key="NSFrame">{{80, 375}, {380, 96}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">Would you like to restore it?</string>
- <object class="NSFont" key="IBUIFont" id="276115526">
- <string key="NSName">Helvetica</string>
- <double key="NSSize">18</double>
- <int key="NSfFlags">16</int>
- </object>
- <object class="NSColor" key="IBUITextColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA</bytes>
- </object>
- <reference key="IBUIHighlightedColor" ref="790402446"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">4</int>
- <int key="IBUITextAlignment">1</int>
- </object>
- <object class="IBUILabel" id="151967545">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">306</int>
- <string key="NSFrame">{{80, 87}, {380, 96}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <string key="IBUIText">It appears you didn't complete your last game!</string>
- <reference key="IBUIFont" ref="276115526"/>
- <object class="NSColor" key="IBUITextColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA</bytes>
- </object>
- <reference key="IBUIHighlightedColor" ref="790402446"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">4</int>
- <int key="IBUITextAlignment">1</int>
- </object>
- <object class="IBUIImageView" id="129485928">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">301</int>
- <string key="NSFrame">{{150, 191}, {240, 160}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">denied.png</string>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{540, 640}</string>
- <reference key="NSSuperview"/>
- <reference key="IBUIBackgroundColor" ref="790402446"/>
- <int key="IBUIContentMode">4</int>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="interfaceOrientation">3</int>
- </object>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="191373211"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonReleased:</string>
- <reference key="source" ref="155385540"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">21</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonReleased:</string>
- <reference key="source" ref="202794507"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">22</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="191373211"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="155385540"/>
- <reference ref="202794507"/>
- <reference ref="655269955"/>
- <reference ref="19933541"/>
- <reference ref="151967545"/>
- <reference ref="129485928"/>
- <reference ref="138553579"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="372490531"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="975951072"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="155385540"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">16</int>
- <reference key="object" ref="202794507"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">18</int>
- <reference key="object" ref="655269955"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">19</int>
- <reference key="object" ref="19933541"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">20</int>
- <reference key="object" ref="129485928"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="151967545"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="138553579"/>
- <reference key="parent" ref="191373211"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.CustomClassName</string>
- <string>-2.CustomClassName</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>15.IBViewBoundsToFrameTransform</string>
- <string>16.IBPluginDependency</string>
- <string>16.IBViewBoundsToFrameTransform</string>
- <string>18.IBPluginDependency</string>
- <string>18.IBViewBoundsToFrameTransform</string>
- <string>19.IBPluginDependency</string>
- <string>19.IBViewBoundsToFrameTransform</string>
- <string>20.IBPluginDependency</string>
- <string>20.IBViewBoundsToFrameTransform</string>
- <string>23.IBPluginDependency</string>
- <string>23.IBViewBoundsToFrameTransform</string>
- <string>24.IBPluginDependency</string>
- <string>24.IBViewBoundsToFrameTransform</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>RestoreViewController</string>
- <string>UIResponder</string>
- <string>{{650, 289}, {540, 640}}</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABDlIAAw2gAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABEAkAAw2gAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABDXAAAw3UAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">AUKgAABDmYAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABDFgAAw8cAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABCoAAAw9uAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform"/>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">24</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">RestoreViewController</string>
- <string key="superclassName">UIViewController</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">buttonReleased:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">buttonReleased:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">buttonReleased:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/RestoreViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UILabel</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/ExtraCategories.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="749404015">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIButton</string>
- <string key="superclassName">UIControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIControl</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIImageView</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UILabel</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIResponder</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="749404015"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchDisplayController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
- <integer value="1056" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../Hedgewars.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>denied.png</string>
- <string>smallerBackground~ipad.png</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{240, 160}</string>
- <string>{540, 640}</string>
- </object>
- </object>
- <string key="IBCocoaTouchPluginVersion">132</string>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="8191" systemVersion="15B42" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RestoreViewController">
+ <connections>
+ <outlet property="dismissButton" destination="15" id="kms-tp-evE"/>
+ <outlet property="restoreButton" destination="16" id="iH9-dH-DWf"/>
+ <outlet property="view" destination="1" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view contentMode="center" id="1">
+ <rect key="frame" x="0.0" y="0.0" width="540" height="640"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="smallerBackground.png" id="24">
+ <rect key="frame" x="0.0" y="0.0" width="540" height="640"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ </imageView>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="15">
+ <rect key="frame" x="84" y="517" width="151" height="37"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Dismiss">
+ <color key="titleColor" red="0.0" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="buttonReleased:" destination="-1" eventType="touchUpInside" id="21"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="16">
+ <rect key="frame" x="308" y="517" width="151" height="37"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Restore">
+ <color key="titleColor" red="0.0" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="buttonReleased:" destination="-1" eventType="touchUpInside" id="22"/>
+ </connections>
+ </button>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Would you like to restore it?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="4" minimumFontSize="10" id="19" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="80" y="375" width="380" height="96"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.90196079019999997" green="0.90196079019999997" blue="0.90196079019999997" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="It appears you didn't complete your last game!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="4" minimumFontSize="10" id="23" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="80" y="87" width="380" height="96"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.90196079019999997" green="0.90196079019999997" blue="0.90196079019999997" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="denied.png" id="20">
+ <rect key="frame" x="150" y="191" width="240" height="160"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Hmm..." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="18" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="80" y="35" width="380" height="29"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="24"/>
+ <color key="textColor" red="1" green="0.78039222959999999" blue="0.0" alpha="1" colorSpace="deviceRGB"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ </view>
+ </objects>
+ <resources>
+ <image name="denied.png" width="240" height="160"/>
+ <image name="smallerBackground.png" width="540" height="640"/>
+ </resources>
+</document>
--- a/project_files/HedgewarsMobile/Classes/RestoreViewController-iPhone.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/RestoreViewController-iPhone.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,620 +1,93 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1056</int>
- <string key="IBDocument.SystemVersion">10K549</string>
- <string key="IBDocument.InterfaceBuilderVersion">823</string>
- <string key="IBDocument.AppKitVersion">1038.36</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">132</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBProxyObject" id="372490531">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBProxyObject" id="975951072">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIView" id="191373211">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBUIImageView" id="396922791">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">319</int>
- <string key="NSFrameSize">{480, 320}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">smallerBackground~iphone.png</string>
- </object>
- </object>
- <object class="IBUIImageView" id="508553704">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">300</int>
- <string key="NSFrame">{{20, 20}, {240, 160}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSCustomResource" key="IBUIImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">denied.png</string>
- </object>
- </object>
- <object class="IBUILabel" id="531154203">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">315</int>
- <string key="NSFrame">{{310, 32}, {108, 29}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">Hmm...</string>
- <object class="NSFont" key="IBUIFont">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">24</double>
- <int key="NSfFlags">16</int>
- </object>
- <object class="NSColor" key="IBUITextColor">
- <int key="NSColorSpace">2</int>
- <bytes key="NSRGB">MSAwLjgyNzQ1MTA1MDMgMAA</bytes>
- </object>
- <object class="NSColor" key="IBUIHighlightedColor" id="790402446">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUITextAlignment">1</int>
- </object>
- <object class="IBUILabel" id="785455561">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">307</int>
- <string key="NSFrame">{{268, 74}, {192, 96}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <int key="IBUIContentMode">7</int>
- <bool key="IBUIUserInteractionEnabled">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <string key="IBUIText">It appears you didn't complete your last game! Would you like to restore it?</string>
- <object class="NSFont" key="IBUIFont">
- <string key="NSName">Helvetica</string>
- <double key="NSSize">18</double>
- <int key="NSfFlags">16</int>
- </object>
- <object class="NSColor" key="IBUITextColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA</bytes>
- </object>
- <reference key="IBUIHighlightedColor" ref="790402446"/>
- <int key="IBUIBaselineAdjustment">1</int>
- <float key="IBUIMinimumFontSize">10</float>
- <int key="IBUINumberOfLines">4</int>
- <int key="IBUITextAlignment">1</int>
- </object>
- <object class="IBUIButton" id="472385208">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">302</int>
- <string key="NSFrame">{{53, 229}, {151, 37}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSFont" key="IBUIFont" id="204967016">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">15</double>
- <int key="NSfFlags">16</int>
- </object>
- <int key="IBUIButtonType">1</int>
- <string key="IBUINormalTitle">Dismiss</string>
- <reference key="IBUIHighlightedTitleColor" ref="790402446"/>
- <object class="NSColor" key="IBUINormalTitleColor" id="734262812">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MCAwIDAuNTAxOTYwODE0AA</bytes>
- </object>
- <object class="NSColor" key="IBUINormalTitleShadowColor" id="644451038">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
- <object class="IBUIButton" id="923913762">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">299</int>
- <string key="NSFrame">{{277, 229}, {151, 37}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <int key="IBUITag">1</int>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <reference key="IBUIFont" ref="204967016"/>
- <int key="IBUIButtonType">1</int>
- <string key="IBUINormalTitle">Restore</string>
- <reference key="IBUIHighlightedTitleColor" ref="790402446"/>
- <reference key="IBUINormalTitleColor" ref="734262812"/>
- <reference key="IBUINormalTitleShadowColor" ref="644451038"/>
- </object>
- </object>
- <string key="NSFrameSize">{480, 320}</string>
- <reference key="NSSuperview"/>
- <reference key="IBUIBackgroundColor" ref="790402446"/>
- <int key="IBUIContentMode">4</int>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="interfaceOrientation">3</int>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="191373211"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonReleased:</string>
- <reference key="source" ref="923913762"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">11</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonReleased:</string>
- <reference key="source" ref="472385208"/>
- <reference key="destination" ref="372490531"/>
- <int key="IBEventType">7</int>
- </object>
- <int key="connectionID">12</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="191373211"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="508553704"/>
- <reference ref="923913762"/>
- <reference ref="785455561"/>
- <reference ref="531154203"/>
- <reference ref="472385208"/>
- <reference ref="396922791"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="372490531"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="975951072"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="508553704"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">6</int>
- <reference key="object" ref="531154203"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="785455561"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">8</int>
- <reference key="object" ref="472385208"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="923913762"/>
- <reference key="parent" ref="191373211"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="396922791"/>
- <reference key="parent" ref="191373211"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.CustomClassName</string>
- <string>-2.CustomClassName</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>10.IBPluginDependency</string>
- <string>10.IBViewBoundsToFrameTransform</string>
- <string>15.IBPluginDependency</string>
- <string>15.IBViewBoundsToFrameTransform</string>
- <string>5.IBPluginDependency</string>
- <string>5.IBViewBoundsToFrameTransform</string>
- <string>6.IBPluginDependency</string>
- <string>6.IBViewBoundsToFrameTransform</string>
- <string>7.IBPluginDependency</string>
- <string>7.IBViewBoundsToFrameTransform</string>
- <string>8.IBPluginDependency</string>
- <string>8.IBViewBoundsToFrameTransform</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>RestoreViewController</string>
- <string>UIResponder</string>
- <string>{{206, 423}, {480, 320}}</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">AUOKgABDZQAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform"/>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">AUGgAABBoAAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">AUObAABCAAAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">AUOGAABClAAAA</bytes>
- </object>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">AUJUAABDZQAAA</bytes>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">15</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">RestoreViewController</string>
- <string key="superclassName">UIViewController</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">buttonReleased:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">buttonReleased:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">buttonReleased:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/RestoreViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UILabel</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/ExtraCategories.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="749404015">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIButton</string>
- <string key="superclassName">UIControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIControl</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIImageView</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UILabel</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIResponder</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="749404015"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchDisplayController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
- <integer value="1056" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../Hedgewars.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>denied.png</string>
- <string>smallerBackground~iphone.png</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{240, 160}</string>
- <string>{480, 320}</string>
- </object>
- </object>
- <string key="IBCocoaTouchPluginVersion">132</string>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RestoreViewController">
+ <connections>
+ <outlet property="dismissButton" destination="8" id="0AU-TL-3aN"/>
+ <outlet property="restoreButton" destination="10" id="V8J-Ke-DQd"/>
+ <outlet property="view" destination="1" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view contentMode="center" id="1">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="smallerBackground.png" id="15">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ </imageView>
+ <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="denied.png" id="5">
+ <rect key="frame" x="20" y="20" width="240" height="160"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ </imageView>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Hmm..." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="6" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="268" y="32" width="192" height="29"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="24"/>
+ <color key="textColor" red="1" green="0.82745105029999999" blue="0.0" alpha="1" colorSpace="deviceRGB"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="It appears you didn't complete your last game!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="4" minimumFontSize="10" id="7" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="268" y="74" width="192" height="70"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.90196079019999997" green="0.90196079019999997" blue="0.90196079019999997" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="8">
+ <rect key="frame" x="53" y="229" width="151" height="37"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Dismiss">
+ <color key="titleColor" red="0.0" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="buttonReleased:" destination="-1" eventType="touchUpInside" id="12"/>
+ </connections>
+ </button>
+ <button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="10">
+ <rect key="frame" x="277" y="229" width="151" height="37"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="15"/>
+ <state key="normal" title="Restore">
+ <color key="titleColor" red="0.0" green="0.0" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="buttonReleased:" destination="-1" eventType="touchUpInside" id="11"/>
+ </connections>
+ </button>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Would you like to restore it?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="4" minimumFontSize="10" id="GnJ-yZ-dpc" customClass="LabelWithIBLocalization">
+ <rect key="frame" x="268" y="152" width="192" height="59"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <fontDescription key="fontDescription" name="Helvetica" family="Helvetica" pointSize="18"/>
+ <color key="textColor" red="0.90196079019999997" green="0.90196079019999997" blue="0.90196079019999997" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ <point key="canvasLocation" x="870" y="246"/>
+ </view>
+ </objects>
+ <resources>
+ <image name="denied.png" width="240" height="160"/>
+ <image name="smallerBackground.png" width="480" height="320"/>
+ </resources>
+</document>
--- a/project_files/HedgewarsMobile/Classes/RestoreViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/RestoreViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -20,6 +20,11 @@
#import "RestoreViewController.h"
#import "GameInterfaceBridge.h"
+@interface RestoreViewController ()
+@property (retain, nonatomic) IBOutlet UIButton *restoreButton;
+@property (retain, nonatomic) IBOutlet UIButton *dismissButton;
+@end
+
@implementation RestoreViewController
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
@@ -33,7 +38,14 @@
if (theButton.tag != 0) {
[[AudioManagerController mainManager] playClickSound];
[GameInterfaceBridge registerCallingController:self.presentingViewController];
- [GameInterfaceBridge startSaveGame:[[NSUserDefaults standardUserDefaults] objectForKey:@"savedGamePath"]];
+
+ // Since iOS 8, the file system layout of app containers has changed.
+ // So, we must rely now on saved game filename, not full path.
+ NSString *oldSavedGamePath = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedGamePath"];
+ NSString *savedGameFile = [oldSavedGamePath lastPathComponent];
+ NSString *newSavedGamePath = [NSString stringWithFormat:@"%@%@", SAVES_DIRECTORY(), savedGameFile];
+
+ [GameInterfaceBridge startSaveGame:newSavedGamePath];
} else {
[[AudioManagerController mainManager] playBackSound];
[defaults setObject:@"" forKey:@"savedGamePath"];
@@ -44,6 +56,12 @@
-(void) viewDidLoad {
[super viewDidLoad];
+
+ [self.restoreButton setTitle:NSLocalizedString(@"Restore", nil) forState:UIControlStateNormal];
+ [self.dismissButton setTitle:NSLocalizedString(@"Dismiss", nil) forState:UIControlStateNormal];
+
+ [self.restoreButton applyDarkBlueQuickStyle];
+ [self.dismissButton applyDarkBlueQuickStyle];
}
-(void) didReceiveMemoryWarning {
@@ -55,6 +73,8 @@
}
-(void) dealloc {
+ [_restoreButton release];
+ [_dismissButton release];
[super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -24,12 +24,10 @@
EditableCellViewDelegate, UIActionSheetDelegate> {
UITableView *tableView;
NSMutableArray *listOfSavegames;
- NSInteger numberOfItems;
}
@property (nonatomic,retain) IBOutlet UITableView *tableView;
@property (nonatomic,retain) NSMutableArray *listOfSavegames;
-@property (assign) NSInteger numberOfItems;
-(IBAction) buttonPressed:(id) sender;
--- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -20,9 +20,12 @@
#import "SavedGamesViewController.h"
#import "GameInterfaceBridge.h"
+@interface SavedGamesViewController ()
+@property (retain, nonatomic) IBOutlet UIBarButtonItem *clearAllButton;
+@end
@implementation SavedGamesViewController
-@synthesize tableView, listOfSavegames, numberOfItems;
+@synthesize tableView, listOfSavegames;
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return rotationManager(interfaceOrientation);
@@ -33,12 +36,14 @@
NSMutableArray *array = [[NSMutableArray alloc] initWithArray:contentsOfDir copyItems:YES];
self.listOfSavegames = array;
[array release];
- self.numberOfItems = [self.listOfSavegames count];
[self.tableView reloadData];
}
--(void) viewDidLoad {
+-(void) viewDidLoad
+{
+ [super viewDidLoad];
+
[self.tableView setBackgroundColorForAnyTable:[UIColor clearColor]];
NSString *imgName = (IS_IPAD()) ? @"mediumBackground~ipad.png" : @"smallerBackground~iphone.png";
@@ -49,10 +54,11 @@
background.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view insertSubview:background atIndex:0];
[background release];
-
+
+ [self.clearAllButton setTitle:NSLocalizedString(@"Clear All", nil)];
+
if (self.listOfSavegames == nil)
[self updateTable];
- [super viewDidLoad];
}
-(void) viewWillAppear:(BOOL)animated {
@@ -96,13 +102,12 @@
[[NSFileManager defaultManager] createDirectoryAtPath:SAVES_DIRECTORY() withIntermediateDirectories:NO attributes:nil error:NULL];
// update the table and the cached list
- NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:self.numberOfItems];
- for (int i = 0; i < self.numberOfItems; i++)
+ NSMutableArray *array = [[NSMutableArray alloc] init];
+ for (int i = 0; i < [self.listOfSavegames count]; i++)
[array addObject:[NSIndexPath indexPathForRow:i inSection:0]];
- self.numberOfItems = 0;
+ [self.listOfSavegames removeAllObjects];
+
[self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationTop];
- [self.listOfSavegames removeAllObjects];
-
[array release];
}
}
@@ -114,20 +119,19 @@
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- return self.numberOfItems;
+ return [self.listOfSavegames count];
}
-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
- if (self.listOfSavegames == nil)
- [self updateTable];
EditableCellView *editableCell = (EditableCellView *)[aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (editableCell == nil) {
editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
- editableCell.delegate = self;
+ editableCell.delegate = nil;
+ editableCell.textField.userInteractionEnabled = NO;
}
- editableCell.respectEditing = YES;
+ editableCell.tag = [indexPath row];
editableCell.textField.text = [[self.listOfSavegames objectAtIndex:[indexPath row]] stringByDeletingPathExtension];
editableCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
@@ -158,13 +162,29 @@
-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
[(EditableCellView *)[self.tableView cellForRowAtIndexPath:indexPath] save:nil];
- self.numberOfItems--;
- [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+ [self fixTagsForStartTag:[indexPath row]];
NSString *saveName = [self.listOfSavegames objectAtIndex:[indexPath row]];
NSString *filePath = [NSString stringWithFormat:@"%@/%@",SAVES_DIRECTORY(),saveName];
[[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
[self.listOfSavegames removeObject:saveName];
+
+ [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+}
+
+#pragma mark - Fix cells' tags
+
+- (void)fixTagsForStartTag:(NSInteger)tag
+{
+ for (UITableViewCell *cell in self.tableView.visibleCells)
+ {
+ NSInteger oldTag = cell.tag;
+
+ if (oldTag > tag)
+ {
+ cell.tag--;
+ }
+ }
}
#pragma mark -
@@ -187,7 +207,6 @@
[[NSFileManager defaultManager] copyItemAtPath:currentFilePath toPath:newFilePath error:nil];
[newFilePath release];
- self.numberOfItems++;
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[GameInterfaceBridge registerCallingController:self];
@@ -229,6 +248,7 @@
-(void) dealloc {
releaseAndNil(tableView);
releaseAndNil(listOfSavegames);
+ releaseAndNil(_clearAllButton);
[super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.xib Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.xib Mon Nov 09 16:34:03 2015 +0000
@@ -1,553 +1,56 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1056</int>
- <string key="IBDocument.SystemVersion">10K549</string>
- <string key="IBDocument.InterfaceBuilderVersion">823</string>
- <string key="IBDocument.AppKitVersion">1038.36</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">132</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="7"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBProxyObject" id="841351856">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBProxyObject" id="606714003">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- <object class="IBUIView" id="766721923">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">292</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBUIToolbar" id="832454237">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">290</int>
- <string key="NSFrameSize">{768, 44}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <int key="IBUITag">458912</int>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSMutableArray" key="IBUIItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBUIBarButtonItem" id="422926197">
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIStyle">1</int>
- <reference key="IBUIToolbar" ref="832454237"/>
- <int key="IBUISystemItemIdentifier">0</int>
- </object>
- <object class="IBUIBarButtonItem" id="881124109">
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <reference key="IBUIToolbar" ref="832454237"/>
- <int key="IBUISystemItemIdentifier">5</int>
- </object>
- <object class="IBUIBarButtonItem" id="882246004">
- <int key="IBUITag">1</int>
- <string key="IBUITitle">Clear All</string>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <int key="IBUIStyle">1</int>
- <reference key="IBUIToolbar" ref="832454237"/>
- </object>
- </object>
- </object>
- <object class="IBUITableView" id="399289716">
- <reference key="NSNextResponder" ref="766721923"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{0, 44}, {768, 724}}</string>
- <reference key="NSSuperview" ref="766721923"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwAA</bytes>
- </object>
- <bool key="IBUIClipsSubviews">YES</bool>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- <bool key="IBUIAlwaysBounceVertical">YES</bool>
- <int key="IBUIStyle">1</int>
- <int key="IBUISeparatorStyle">2</int>
- <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
- <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
- <float key="IBUIRowHeight">44</float>
- <float key="IBUISectionHeaderHeight">10</float>
- <float key="IBUISectionFooterHeight">10</float>
- </object>
- </object>
- <string key="NSFrameSize">{768, 768}</string>
- <reference key="NSSuperview"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="interfaceOrientation">3</int>
- </object>
- <string key="targetRuntimeIdentifier">IBIPadFramework</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="766721923"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonPressed:</string>
- <reference key="source" ref="422926197"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">6</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">dataSource</string>
- <reference key="source" ref="399289716"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">8</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="399289716"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">9</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">tableView</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="399289716"/>
- </object>
- <int key="connectionID">10</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchEventConnection" key="connection">
- <string key="label">buttonPressed:</string>
- <reference key="source" ref="882246004"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">17</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="841351856"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="606714003"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="766721923"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="832454237"/>
- <reference ref="399289716"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">4</int>
- <reference key="object" ref="832454237"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="422926197"/>
- <reference ref="881124109"/>
- <reference ref="882246004"/>
- </object>
- <reference key="parent" ref="766721923"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="422926197"/>
- <reference key="parent" ref="832454237"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="399289716"/>
- <reference key="parent" ref="766721923"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="881124109"/>
- <reference key="parent" ref="832454237"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">15</int>
- <reference key="object" ref="882246004"/>
- <reference key="parent" ref="832454237"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.CustomClassName</string>
- <string>-2.CustomClassName</string>
- <string>13.IBPluginDependency</string>
- <string>15.IBPluginDependency</string>
- <string>2.IBEditorWindowLastContentRect</string>
- <string>2.IBPluginDependency</string>
- <string>4.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>SavedGamesViewController</string>
- <string>UIResponder</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>{{467, 276}, {768, 768}}</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">17</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">SavedGamesViewController</string>
- <string key="superclassName">UIViewController</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">buttonPressed:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">buttonPressed:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">buttonPressed:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">tableView</string>
- <string key="NS.object.0">UITableView</string>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <string key="NS.key.0">tableView</string>
- <object class="IBToOneOutletInfo" key="NS.object.0">
- <string key="name">tableView</string>
- <string key="candidateClassName">UITableView</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/SavedGamesViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UITableView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/ExtraCategories.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="786211723">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIBarButtonItem</string>
- <string key="superclassName">UIBarItem</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIBarItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIResponder</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="786211723"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIScrollView</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchDisplayController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UITableView</string>
- <string key="superclassName">UIScrollView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIToolbar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIToolbar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
- <integer value="1056" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="3100" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../Hedgewars.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <string key="IBCocoaTouchPluginVersion">132</string>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SavedGamesViewController">
+ <connections>
+ <outlet property="clearAllButton" destination="15" id="txV-uc-ITF"/>
+ <outlet property="tableView" destination="7" id="10"/>
+ <outlet property="view" destination="2" id="3"/>
+ </connections>
+ </placeholder>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="2">
+ <rect key="frame" x="0.0" y="0.0" width="768" height="768"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <toolbar clearsContextBeforeDrawing="NO" tag="458912" contentMode="scaleToFill" id="4">
+ <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ <animations/>
+ <items>
+ <barButtonItem systemItem="done" id="5">
+ <connections>
+ <action selector="buttonPressed:" destination="-1" id="6"/>
+ </connections>
+ </barButtonItem>
+ <barButtonItem style="plain" systemItem="flexibleSpace" id="13"/>
+ <barButtonItem tag="1" title="Clear All" id="15">
+ <connections>
+ <action selector="buttonPressed:" destination="-1" id="17"/>
+ </connections>
+ </barButtonItem>
+ </items>
+ </toolbar>
+ <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="7">
+ <rect key="frame" x="0.0" y="44" width="768" height="724"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <animations/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ <connections>
+ <outlet property="dataSource" destination="-1" id="8"/>
+ <outlet property="delegate" destination="-1" id="9"/>
+ </connections>
+ </tableView>
+ </subviews>
+ <animations/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <nil key="simulatedStatusBarMetrics"/>
+ <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ </view>
+ </objects>
+</document>
--- a/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -18,13 +18,10 @@
#import <UIKit/UIKit.h>
-
-
-@class SingleSchemeViewController;
+#import "TableViewControllerWithDoneButton.h"
-@interface SchemeSettingsViewController : UITableViewController {
+@interface SchemeSettingsViewController : TableViewControllerWithDoneButton {
NSMutableArray *listOfSchemes;
- SingleSchemeViewController *childController;
}
@property (nonatomic, retain) NSMutableArray *listOfSchemes;
--- a/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SchemeSettingsViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -40,7 +40,7 @@
self.navigationItem.rightBarButtonItem = editButton;
[editButton release];
- self.navigationItem.title = @"List of schemes";
+ self.navigationItem.title = NSLocalizedString(@"List of schemes", nil);
}
-(void) viewWillAppear:(BOOL) animated {
@@ -131,43 +131,43 @@
#pragma mark -
#pragma mark Table view delegate
--(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- if (childController == nil) {
- childController = [[SingleSchemeViewController alloc] initWithStyle:UITableViewStyleGrouped];
- }
-
+-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ SingleSchemeViewController *singleSchemeViewController = [[SingleSchemeViewController alloc] initWithStyle:UITableViewStyleGrouped];
+
NSInteger row = [indexPath row];
NSString *selectedSchemeFile = [self.listOfSchemes objectAtIndex:row];
// this must be set so childController can load the correct plist
- childController.schemeName = [selectedSchemeFile stringByDeletingPathExtension];
- [childController.tableView setContentOffset:CGPointMake(0,0) animated:NO];
+ singleSchemeViewController.schemeName = [selectedSchemeFile stringByDeletingPathExtension];
+ [singleSchemeViewController.tableView setContentOffset:CGPointMake(0,0) animated:NO];
- [self.navigationController pushViewController:childController animated:YES];
+ [self.navigationController pushViewController:singleSchemeViewController animated:YES];
+ [singleSchemeViewController release];
+
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
#pragma mark -
#pragma mark Memory management
--(void)didReceiveMemoryWarning {
+-(void)didReceiveMemoryWarning
+{
[super didReceiveMemoryWarning];
- if (childController.view.superview == nil )
- childController = nil;
MSG_MEMCLEAN();
}
--(void) viewDidUnload {
+-(void) viewDidUnload
+{
self.listOfSchemes = nil;
- childController = nil;
MSG_DIDUNLOAD();
[super viewDidUnload];
}
--(void) dealloc {
+-(void) dealloc
+{
releaseAndNil(listOfSchemes);
- releaseAndNil(childController);
[super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -20,6 +20,7 @@
#import "SchemeWeaponConfigViewController.h"
#import <QuartzCore/QuartzCore.h>
+#define DISABLED_GAME_STYLES @[@"Frenzy.lua", @"Gravity.lua", @"HedgeEditor.lua", @"Continental_supplies.lua", @"Space_Invasion.lua", @"Tumbler.lua"]
#define LABEL_TAG 57423
#define TABLE_TAG 45657
@@ -48,7 +49,7 @@
-(NSString *)selectedScript {
if (selectedScript == nil)
- self.selectedScript = @"Normal.plist";
+ self.selectedScript = @"";
return selectedScript;
}
@@ -73,7 +74,7 @@
-(NSArray *)listOfScripts {
if (listOfScripts == nil)
self.listOfScripts = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:SCRIPTS_DIRECTORY() error:NULL]
- filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF ENDSWITH '.lua'"]];
+ filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF ENDSWITH '.lua' AND NOT (SELF IN %@)", DISABLED_GAME_STYLES]];
return listOfScripts;
}
@@ -166,7 +167,7 @@
else if (self.topControl.selectedSegmentIndex == 1)
return [self.listOfWeapons count];
else
- return [self.listOfScripts count];
+ return [self.listOfScripts count] + 1; // +1 for fake 'Normal'
}
// Customize the appearance of table view cells.
@@ -205,14 +206,31 @@
self.lastIndexPath_we = indexPath;
}
} else {
- cell.textLabel.text = [[[self.listOfScripts objectAtIndex:row] stringByDeletingPathExtension]
- stringByReplacingOccurrencesOfString:@"_" withString:@" "];
- //cell.detailTextLabel.text = ;
- if ([[self.listOfScripts objectAtIndex:row] isEqualToString:self.selectedScript]) {
- UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]];
- cell.accessoryView = checkbox;
- [checkbox release];
- self.lastIndexPath_lu = indexPath;
+ if (row == 0)
+ {
+ cell.textLabel.text = @"Normal";
+
+ if ([self.selectedScript isEqualToString:@""])
+ {
+ UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]];
+ cell.accessoryView = checkbox;
+ [checkbox release];
+ self.lastIndexPath_lu = indexPath;
+ }
+ }
+ else
+ {
+ row--;
+
+ cell.textLabel.text = [[[self.listOfScripts objectAtIndex:row] stringByDeletingPathExtension]
+ stringByReplacingOccurrencesOfString:@"_" withString:@" "];
+ //cell.detailTextLabel.text = ;
+ if ([[self.listOfScripts objectAtIndex:row] isEqualToString:self.selectedScript]) {
+ UIImageView *checkbox = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkbox.png"]];
+ cell.accessoryView = checkbox;
+ [checkbox release];
+ self.lastIndexPath_lu = indexPath;
+ }
}
}
@@ -311,44 +329,63 @@
self.selectedWeapon = [self.listOfWeapons objectAtIndex:newRow];
} else {
self.lastIndexPath_lu = indexPath;
- self.selectedScript = [self.listOfScripts objectAtIndex:newRow];
-
- // some styles disable or force the choice of a particular scheme/weaponset
- NSString *path = [[NSString alloc] initWithFormat:@"%@/%@.cfg",SCRIPTS_DIRECTORY(),[self.selectedScript stringByDeletingPathExtension]];
- NSString *configFile = [[NSString alloc] initWithContentsOfFile:path];
- [path release];
- NSArray *scriptOptions = [configFile componentsSeparatedByString:@"\n"];
- [configFile release];
-
- self.scriptCommand = [NSString stringWithFormat:@"escript Scripts/Multiplayer/%@",self.selectedScript];
- NSString *scheme = [scriptOptions objectAtIndex:0];
- if ([scheme isEqualToString:@"locked"])
+
+ if (newRow == 0)
{
+ self.selectedScript = nil;
+ self.scriptCommand = nil;
+
self.selectedScheme = @"Default.plist";
- [self.topControl setEnabled:NO forSegmentAtIndex:0];
+ [self.topControl setEnabled:YES forSegmentAtIndex:0];
+
+ self.selectedWeapon = @"Default.plist";
+ [self.topControl setEnabled:YES forSegmentAtIndex:1];
}
else
{
- if (![scheme isEqualToString:@"*"])
+ newRow--;
+
+ self.selectedScript = [self.listOfScripts objectAtIndex:newRow];
+
+ // some styles disable or force the choice of a particular scheme/weaponset
+ NSString *path = [[NSString alloc] initWithFormat:@"%@/%@.cfg",SCRIPTS_DIRECTORY(),[self.selectedScript stringByDeletingPathExtension]];
+ NSString *configFile = [[NSString alloc] initWithContentsOfFile:path];
+ [path release];
+ NSArray *scriptOptions = [configFile componentsSeparatedByString:@"\n"];
+ [configFile release];
+
+ self.scriptCommand = [NSString stringWithFormat:@"escript Scripts/Multiplayer/%@",self.selectedScript];
+ NSString *scheme = [scriptOptions objectAtIndex:0];
+ if ([scheme isEqualToString:@"locked"])
{
- self.selectedScheme = [NSString stringWithFormat:@"%@.plist",scheme];
+ self.selectedScheme = @"Default.plist";
+ [self.topControl setEnabled:NO forSegmentAtIndex:0];
}
- [self.topControl setEnabled:YES forSegmentAtIndex:0];
- }
-
- NSString *weapon = [scriptOptions objectAtIndex:1];
- if ([weapon isEqualToString:@"locked"])
- {
- self.selectedWeapon = @"Default.plist";
- [self.topControl setEnabled:NO forSegmentAtIndex:1];
- }
- else
- {
- if (![weapon isEqualToString:@"*"])
+ else
+ {
+ if (scheme && ![scheme isEqualToString:@"*"])
+ {
+ NSString *correctScheme = [scheme stringByReplacingOccurrencesOfString:@"_" withString:@" "];
+ self.selectedScheme = [NSString stringWithFormat:@"%@.plist", correctScheme];
+ }
+ [self.topControl setEnabled:YES forSegmentAtIndex:0];
+ }
+
+ NSString *weapon = [scriptOptions objectAtIndex:1];
+ if ([weapon isEqualToString:@"locked"])
{
- self.selectedWeapon = [NSString stringWithFormat:@"%@.plist",weapon];
+ self.selectedWeapon = @"Default.plist";
+ [self.topControl setEnabled:NO forSegmentAtIndex:1];
}
- [self.topControl setEnabled:YES forSegmentAtIndex:1];
+ else
+ {
+ if (weapon && ![weapon isEqualToString:@"*"])
+ {
+ NSString *correctWeapon = [weapon stringByReplacingOccurrencesOfString:@"_" withString:@" "];
+ self.selectedWeapon = [NSString stringWithFormat:@"%@.plist", correctWeapon];
+ }
+ [self.topControl setEnabled:YES forSegmentAtIndex:1];
+ }
}
}
@@ -396,16 +433,6 @@
#pragma mark -
#pragma mark Memory management
-(void) didReceiveMemoryWarning {
- if ([HWUtils isGameLaunched]) {
- self.lastIndexPath_sc = nil;
- self.lastIndexPath_we = nil;
- self.lastIndexPath_lu = nil;
- self.selectedScheme = nil;
- self.selectedWeapon = nil;
- self.selectedScript = nil;
- self.scriptCommand = nil;
- self.topControl = nil;
- }
self.listOfSchemes = nil;
self.listOfWeapons = nil;
self.listOfScripts = nil;
@@ -414,7 +441,6 @@
}
-(void) viewDidUnload {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
self.listOfSchemes = nil;
self.listOfWeapons = nil;
self.listOfScripts = nil;
@@ -430,7 +456,9 @@
[super viewDidUnload];
}
--(void) dealloc {
+-(void) dealloc
+{
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
releaseAndNil(listOfSchemes);
releaseAndNil(listOfWeapons);
releaseAndNil(listOfScripts);
--- a/project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/ServerProtocolNetwork.m Mon Nov 09 16:34:03 2015 +0000
@@ -69,14 +69,14 @@
#pragma mark Communication layer
-(int) sendToServer:(NSString *)command {
NSString *message = [[NSString alloc] initWithFormat:@"%@\n\n",command];
- int result = SDLNet_TCP_Send(self.ssd, [message UTF8String], [message length]);
+ int result = SDLNet_TCP_Send(self.ssd, [message UTF8String], [message lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
[message release];
return result;
}
-(int) sendToServer:(NSString *)command withArgument:(NSString *)argument {
NSString *message = [[NSString alloc] initWithFormat:@"%@\n%@\n\n",command,argument];
- int result = SDLNet_TCP_Send(self.ssd, [message UTF8String], [message length]);
+ int result = SDLNet_TCP_Send(self.ssd, [message UTF8String], [message lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
[message release];
return result;
}
--- a/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -19,29 +19,16 @@
#import <UIKit/UIKit.h>
-
-@class GeneralSettingsViewController;
-@class TeamSettingsViewController;
-@class WeaponSettingsViewController;
-@class SchemeSettingsViewController;
-@class SupportViewController;
-
@interface SettingsBaseViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UITabBarControllerDelegate> {
UIViewController *targetController;
NSArray *controllerNames;
NSIndexPath *lastIndexPath;
UITabBarController *tabController;
- GeneralSettingsViewController *generalSettingsViewController;
- TeamSettingsViewController *teamSettingsViewController;
- WeaponSettingsViewController *weaponSettingsViewController;
- SchemeSettingsViewController *schemeSettingsViewController;
- SupportViewController *supportViewController;
}
@property (nonatomic, retain) UIViewController *targetController;
@property (nonatomic, retain) NSArray *controllerNames;
@property (nonatomic, retain) NSIndexPath *lastIndexPath;
-@property (nonatomic, retain) UITabBarController *tabController;
-(void) dismissSplitView;
--- a/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -26,7 +26,7 @@
@implementation SettingsBaseViewController
-@synthesize tabController, targetController, controllerNames, lastIndexPath;
+@synthesize targetController, controllerNames, lastIndexPath;
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return rotationManager(interfaceOrientation);
@@ -45,90 +45,35 @@
self.controllerNames = array;
[array release];
- UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
- target:self
- action:@selector(dismissSplitView)];
- if (IS_IPAD()) {
+ if (IS_IPAD())
+ {
// this class gets loaded twice, we tell the difference by looking at targetController
- if (self.targetController != nil) {
+ if (self.targetController != nil)
+ {
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
+ tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
tableView.delegate = self;
tableView.dataSource = self;
[tableView reloadData];
[self.view addSubview:tableView];
[self tableView:tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
[tableView release];
- self.navigationItem.leftBarButtonItem = doneButton;
- }
- } else {
- // this class just loads all controllers and set up tabbar and navigation controllers
- NSMutableArray *tabBarNavigationControllers = [[NSMutableArray alloc] initWithCapacity:5];
- UINavigationController *navController = nil;
-
- if (nil == generalSettingsViewController) {
- generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- generalSettingsViewController.tabBarItem.title = [self.controllerNames objectAtIndex:0];
- generalSettingsViewController.tabBarItem.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/TargetBee.png",GRAPHICS_DIRECTORY()]];
- navController = [[UINavigationController alloc] initWithRootViewController:generalSettingsViewController];
- generalSettingsViewController.navigationItem.backBarButtonItem = doneButton;
- generalSettingsViewController.navigationItem.leftBarButtonItem = doneButton;
- [generalSettingsViewController release];
- [tabBarNavigationControllers addObject:navController];
- releaseAndNil(navController);
- }
- if (nil == teamSettingsViewController) {
- teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- teamSettingsViewController.tabBarItem.title = [self.controllerNames objectAtIndex:1];
- teamSettingsViewController.tabBarItem.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/Egg.png",GRAPHICS_DIRECTORY()]];
- navController = [[UINavigationController alloc] initWithRootViewController:teamSettingsViewController];
- teamSettingsViewController.navigationItem.backBarButtonItem = doneButton;
- teamSettingsViewController.navigationItem.leftBarButtonItem = doneButton;
- [tabBarNavigationControllers addObject:navController];
- releaseAndNil(navController);
+ self.navigationItem.leftBarButtonItem = [self doneButton];
}
- if (nil == weaponSettingsViewController) {
- weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- weaponSettingsViewController.tabBarItem.title = [self.controllerNames objectAtIndex:2];
- weaponSettingsViewController.tabBarItem.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/cheese.png",GRAPHICS_DIRECTORY()]];
- navController = [[UINavigationController alloc] initWithRootViewController:weaponSettingsViewController];
- weaponSettingsViewController.navigationItem.backBarButtonItem = doneButton;
- weaponSettingsViewController.navigationItem.leftBarButtonItem = doneButton;
- [tabBarNavigationControllers addObject:navController];
- releaseAndNil(navController);
- }
- if (nil == schemeSettingsViewController) {
- schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- schemeSettingsViewController.tabBarItem.title = [self.controllerNames objectAtIndex:3];
- schemeSettingsViewController.tabBarItem.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/Targetp.png",GRAPHICS_DIRECTORY()]];
- navController = [[UINavigationController alloc] initWithRootViewController:schemeSettingsViewController];
- schemeSettingsViewController.navigationItem.backBarButtonItem = doneButton;
- schemeSettingsViewController.navigationItem.leftBarButtonItem = doneButton;
- [tabBarNavigationControllers addObject:navController];
- releaseAndNil(navController);
- }
- if (nil == supportViewController) {
- supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped];
- supportViewController.tabBarItem.title = [self.controllerNames objectAtIndex:4];
- supportViewController.tabBarItem.image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/Seduction.png",GRAPHICS_DIRECTORY()]];
- navController = [[UINavigationController alloc] initWithRootViewController:supportViewController];
- supportViewController.navigationItem.backBarButtonItem = doneButton;
- supportViewController.navigationItem.leftBarButtonItem = doneButton;
- [tabBarNavigationControllers addObject:navController];
- releaseAndNil(navController);
- }
+ }
+ else
+ {
+ //iPhone part moved to MainMenuViewController
+ }
- self.tabController = [[UITabBarController alloc] init];
- self.tabController.viewControllers = tabBarNavigationControllers;
- self.tabController.delegate = self;
-
- [self.view addSubview:self.tabController.view];
- }
- [doneButton release];
[super viewDidLoad];
}
--(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
- [viewController viewWillAppear:NO];
+- (UIBarButtonItem *)doneButton
+{
+ return [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
+ target:self
+ action:@selector(dismissSplitView)] autorelease];
}
-(void) dismissSplitView {
@@ -136,16 +81,6 @@
[[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissViewControllerAnimated:YES completion:nil];
}
--(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
- if (IS_IPAD() == NO)
- return;
-
- if (self.targetController != nil) {
- CGRect screenRect = [[UIScreen mainScreen] safeBounds];
- self.view.frame = CGRectMake(0, 0, 320, screenRect.size.height);
- }
-}
-
#pragma mark -
#pragma mark Table view data source
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
@@ -197,40 +132,33 @@
#pragma mark -
#pragma mark Table view delegate
--(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
NSInteger newRow = [indexPath row];
NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;
UIViewController *nextController = nil;
- if (newRow != oldRow) {
+ if (newRow != oldRow)
+ {
[tableView deselectRowAtIndexPath:lastIndexPath animated:YES];
[targetController.navigationController popToRootViewControllerAnimated:NO];
- switch (newRow) {
+ switch (newRow)
+ {
case 0:
- if (nil == generalSettingsViewController)
- generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- nextController = generalSettingsViewController;
+ nextController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];;
break;
case 1:
- if (nil == teamSettingsViewController)
- teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- nextController = teamSettingsViewController;
+ nextController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
break;
case 2:
- if (nil == weaponSettingsViewController)
- weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- nextController = weaponSettingsViewController;
+ nextController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
break;
case 3:
- if (nil == schemeSettingsViewController)
- schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
- nextController = schemeSettingsViewController;
+ nextController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
break;
case 4:
- if (nil == supportViewController)
- supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped];
- nextController = supportViewController;
+ nextController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped];
break;
}
@@ -240,6 +168,8 @@
nextController.navigationItem.hidesBackButton = YES;
[nextController viewWillAppear:NO];
[targetController.navigationController pushViewController:nextController animated:NO];
+ [nextController release];
+
[[AudioManagerController mainManager] playClickSound];
}
}
@@ -247,62 +177,28 @@
#pragma mark -
#pragma mark Memory management
--(void) didReceiveMemoryWarning {
- if (generalSettingsViewController.view.superview == nil)
- generalSettingsViewController = nil;
- if (teamSettingsViewController.view.superview == nil)
- teamSettingsViewController = nil;
- if (weaponSettingsViewController.view.superview == nil)
- weaponSettingsViewController = nil;
- if (schemeSettingsViewController.view.superview == nil)
- schemeSettingsViewController = nil;
- if (supportViewController.view.superview == nil)
- supportViewController = nil;
- if (tabController.view.superview == nil)
- tabController = nil;
+-(void) didReceiveMemoryWarning
+{
MSG_MEMCLEAN();
[super didReceiveMemoryWarning];
}
--(void) viewDidUnload {
+-(void) viewDidUnload
+{
self.controllerNames = nil;
self.lastIndexPath = nil;
self.targetController = nil;
- self.tabController = nil;
- generalSettingsViewController = nil;
- teamSettingsViewController = nil;
- weaponSettingsViewController = nil;
- schemeSettingsViewController = nil;
- supportViewController = nil;
MSG_DIDUNLOAD();
[super viewDidUnload];
}
--(void) dealloc {
+-(void) dealloc
+{
releaseAndNil(targetController);
releaseAndNil(controllerNames);
releaseAndNil(lastIndexPath);
- releaseAndNil(tabController);
- releaseAndNil(generalSettingsViewController);
- releaseAndNil(teamSettingsViewController);
- releaseAndNil(weaponSettingsViewController);
- releaseAndNil(schemeSettingsViewController);
- releaseAndNil(supportViewController);
[super dealloc];
}
-
--(void) viewWillDisappear:(BOOL)animated {
- // this will send -viewWillDisappear: only the active view
- [self.tabController viewWillDisappear:animated];
- // let's send that to every page, even though only GeneralSettingsViewController needs it
- [generalSettingsViewController viewWillDisappear:animated];
- [teamSettingsViewController viewWillDisappear:animated];
- [weaponSettingsViewController viewWillDisappear:animated];
- [schemeSettingsViewController viewWillDisappear:animated];
- [supportViewController viewWillDisappear:animated];
- [super viewWillDisappear:animated];
-}
-
@end
--- a/project_files/HedgewarsMobile/Classes/SettingsContainerViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Hedgewars-iOS, a Hedgewars port for iOS devices
- * Copyright (c) 2009-2012 Vittorio Giovara <vittorio.giovara@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-
-#import <UIKit/UIKit.h>
-
-
-@class SettingsBaseViewController;
-@class MGSplitViewController;
-
-@interface SettingsContainerViewController : UIViewController {
- SettingsBaseViewController *baseController;
- MGSplitViewController *splitViewRootController;
-}
-
-@property (nonatomic,retain) SettingsBaseViewController *baseController;
-@property (nonatomic,retain) MGSplitViewController *splitViewRootController;
-
-@end
--- a/project_files/HedgewarsMobile/Classes/SettingsContainerViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
- * Hedgewars-iOS, a Hedgewars port for iOS devices
- * Copyright (c) 2009-2012 Vittorio Giovara <vittorio.giovara@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-
-#import "SettingsContainerViewController.h"
-#import "SettingsBaseViewController.h"
-#import "MGSplitViewController.h"
-
-
-@implementation SettingsContainerViewController
-@synthesize baseController, splitViewRootController;
-
--(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- return rotationManager(interfaceOrientation);
-}
-
--(void) viewDidLoad {
- CGRect screenRect = [[UIScreen mainScreen] safeBounds];
- self.view.frame = screenRect;
-
- if (IS_IPAD()) {
- // the contents on the right of the splitview, setting targetController to nil to avoid creating the table
- SettingsBaseViewController *rightController = [[SettingsBaseViewController alloc] init];
- rightController.targetController = nil;
- UINavigationController *rightNavController = [[UINavigationController alloc] initWithRootViewController:rightController];
- [rightController release];
-
- // the contens on the left of the splitview, setting targetController that will receive push/pop actions
- SettingsBaseViewController *leftController = [[SettingsBaseViewController alloc] init];
- leftController.targetController = rightNavController.topViewController;
- UINavigationController *leftNavController = [[UINavigationController alloc] initWithRootViewController:leftController];
- [leftController release];
-
- self.splitViewRootController = [[MGSplitViewController alloc] init];
- self.splitViewRootController.delegate = nil;
- self.splitViewRootController.view.frame = screenRect;
- self.splitViewRootController.viewControllers = [NSArray arrayWithObjects: leftNavController, rightNavController, nil];
- self.splitViewRootController.showsMasterInPortrait = YES;
- [leftNavController release];
- [rightNavController release];
-
- // add view to main controller
- [self.view addSubview:self.splitViewRootController.view];
- } else {
- if (nil == self.baseController) {
- SettingsBaseViewController *sbvc = [[SettingsBaseViewController alloc] init];
- self.baseController = sbvc;
- [sbvc release];
- }
- self.baseController.targetController = nil;
- self.baseController.view.frame = screenRect;
-
- [self.view addSubview:self.baseController.view];
- }
-
- [super viewDidLoad];
-}
-
-#pragma mark -
-#pragma mark Memory management
--(void) didReceiveMemoryWarning {
- if (self.baseController.view.superview == nil)
- self.baseController = nil;
- if (self.splitViewRootController.view.superview == nil)
- self.splitViewRootController = nil;
- MSG_MEMCLEAN();
- [super didReceiveMemoryWarning];
-}
-
--(void) viewDidUnload {
- self.baseController = nil;
- self.splitViewRootController = nil;
- MSG_DIDUNLOAD();
- [super viewDidUnload];
-}
-
--(void) dealloc {
- releaseAndNil(baseController);
- releaseAndNil(splitViewRootController);
- [super dealloc];
-}
-
-
-#pragma mark -
-#pragma mark view event management propagation
-// every time we add a uiviewcontroller programmatically we need to take care of propgating such messages
-// see http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/
--(void) viewWillAppear:(BOOL)animated {
- [self.splitViewRootController.detailViewController viewWillAppear:animated];
- [self.baseController viewWillAppear:animated];
- [super viewWillAppear:animated];
-}
-
--(void) viewWillDisappear:(BOOL)animated {
- [self.splitViewRootController.detailViewController viewWillDisappear:animated];
- [self.baseController viewWillDisappear:animated];
- [super viewWillDisappear:animated];
-}
-
--(void) viewDidAppear:(BOOL)animated {
- [self.splitViewRootController.detailViewController viewDidAppear:animated];
- [self.baseController viewDidAppear:animated];
- [super viewDidAppear:animated];
-}
-
--(void) viewDidDisappear:(BOOL)animated {
- [self.splitViewRootController.detailViewController viewDidDisappear:animated];
- [self.baseController viewDidDisappear:animated];
- [super viewDidDisappear:animated];
-}
-
--(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
- [self.splitViewRootController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
- [self.baseController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
-}
-
--(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
- [self.splitViewRootController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
- [self.baseController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
-}
-
--(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
- [self.splitViewRootController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
- [self.baseController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
-}
-
-@end
--- a/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -25,18 +25,6 @@
#define SLIDER_TAG 54321
#define SWITCH_TAG 67890
-#define checkValueString(detailString,labelSting,sliderRef); \
- if ([labelSting isEqualToString:@"Turn Time"] && (NSInteger) sliderRef.value == 100) \
- detailString = @"∞"; \
- else if ([labelSting isEqualToString:@"Water Rise Amount"] && (NSInteger) sliderRef.value == 100) \
- detailString = NSLocalizedString(@"Nvr",@"Short for 'Never'"); \
- else if ([labelSting isEqualToString:@"Crate Drop Turns"] && (NSInteger) sliderRef.value == 0) \
- detailString = NSLocalizedString(@"Nvr",@"Short for 'Never'"); \
- else if ([labelSting isEqualToString:@"Mines Time"] && (NSInteger) sliderRef.value == -1) \
- detailString = NSLocalizedString(@"Rnd",@"Short for 'Random'"); \
- else \
- detailString = [NSString stringWithFormat:@"%d",(NSInteger) sliderRef.value];
-
@implementation SingleSchemeViewController
@synthesize schemeName, schemeDictionary, basicSettingList, gameModifierArray;
@@ -221,8 +209,7 @@
}
cellSlider.frame = CGRectMake(hOffset, vOffset, sliderLength, 23);
- NSString *prestring = nil;
- checkValueString(prestring,basicSettingTitleKey,cellSlider);
+ NSString *prestring = [self localizedValueStringForKey:basicSettingTitleKey andSlider:cellSlider];
// forced to use this weird format otherwise the label disappears when size of the text is bigger than the original
while ([prestring length] <= 4)
@@ -280,10 +267,10 @@
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
// grab the associated labels
UILabel *detailLabel = (UILabel *)cell.detailTextLabel;
- UILabel *cellLabel = (UILabel *)[cell.contentView viewWithTag:LABEL_TAG];
// modify it
- checkValueString(detailLabel.text,cellLabel.text,theSlider);
+ NSString *basicSettingTitleKey = [[self.basicSettingList objectAtIndex:[indexPath row]] objectForKey:@"title"];
+ detailLabel.text = [self localizedValueStringForKey:basicSettingTitleKey andSlider:theSlider];
// save changes in the main array
NSMutableArray *array = [self.schemeDictionary objectForKey:@"basic"];
@@ -348,6 +335,42 @@
return 56;
}
+#pragma mark - Helper methods
+
+- (NSString *)localizedValueStringForKey:(NSString *)keyString andSlider:(UISlider *)slider
+{
+ NSInteger sliderValue = (NSInteger)slider.value;
+
+ if ([keyString isEqualToString:@"Turn Time"] && sliderValue == 100)
+ return @"∞";
+ else if ([keyString isEqualToString:@"Water Rise Amount"] && sliderValue == 100)
+ return NSLocalizedString(@"Nvr", @"Short for 'Never'");
+ else if ([keyString isEqualToString:@"Crate Drop Turns"] && sliderValue == 0)
+ return NSLocalizedString(@"Nvr", @"Short for 'Never'");
+ else if ([keyString isEqualToString:@"Mines Time"] && sliderValue == -1)
+ return NSLocalizedString(@"Rnd", @"Short for 'Random'");
+ else if ([keyString isEqualToString:@"World Edge"])
+ switch (sliderValue)
+ {
+ case 0:
+ return NSLocalizedString(@"None", nil);
+
+ case 1:
+ return NSLocalizedString(@"Wrap", nil);
+
+ case 2:
+ return NSLocalizedString(@"Bounce", nil);
+
+ case 3:
+ return NSLocalizedString(@"Sea", nil);
+
+ default:
+ return @"";
+ }
+ else
+ return [NSString stringWithFormat:@"%ld", (long)sliderValue];
+}
+
#pragma mark -
#pragma mark Memory management
-(void) didReceiveMemoryWarning {
--- a/project_files/HedgewarsMobile/Classes/SingleTeamViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SingleTeamViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -19,14 +19,6 @@
#import <UIKit/UIKit.h>
-
-@class HogHatViewController;
-@class GravesViewController;
-@class VoicesViewController;
-@class FortsViewController;
-@class FlagsViewController;
-@class LevelViewController;
-
@interface SingleTeamViewController : UITableViewController <EditableCellViewDelegate> {
NSMutableDictionary *teamDictionary;
@@ -36,13 +28,6 @@
NSArray *secondaryItems;
NSArray *moreSecondaryItems;
BOOL isWriteNeeded;
-
- HogHatViewController *hogHatViewController;
- GravesViewController *gravesViewController;
- VoicesViewController *voicesViewController;
- FortsViewController *fortsViewController;
- FlagsViewController *flagsViewController;
- LevelViewController *levelViewController;
}
@property (nonatomic,retain) NSMutableDictionary *teamDictionary;
--- a/project_files/HedgewarsMobile/Classes/SingleTeamViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SingleTeamViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -146,7 +146,7 @@
rows = 1;
break;
case 1: // team members
- rows = HW_getMaxNumberOfHogs();
+ rows = HW_getMaxNumberOfHogs() + 1; // one for 'Select one hat for all hogs' cell
break;
case 2: // team details
rows = [self.secondaryItems count];
@@ -180,6 +180,7 @@
static NSString *CellIdentifier0 = @"Cell0";
static NSString *CellIdentifier1 = @"Cell1";
static NSString *CellIdentifier2 = @"Cell2";
+ static NSString *CellIdentifierDefault = @"CellDefault";
NSArray *hogArray;
UITableViewCell *cell = nil;
@@ -204,13 +205,28 @@
cell = editableCell;
break;
case 1:
+ if ([indexPath row] == HW_getMaxNumberOfHogs())
+ {
+ cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierDefault];
+ if (cell == nil)
+ {
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
+ reuseIdentifier:CellIdentifierDefault] autorelease];
+ cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+ }
+
+ cell.textLabel.text = NSLocalizedString(@"Select one hat for all hogs", nil);
+
+ break;
+ }
+
editableCell = (EditableCellView *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
if (editableCell == nil) {
editableCell = [[[EditableCellView alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier1] autorelease];
editableCell.delegate = self;
- editableCell.tag = [indexPath row];
}
+ editableCell.tag = [indexPath row];
hogArray = [self.teamDictionary objectForKey:@"hedgehogs"];
@@ -290,120 +306,118 @@
NSInteger row = [indexPath row];
NSInteger section = [indexPath section];
- if (2 == section) {
- switch (row) {
+ if (2 == section)
+ {
+ switch (row)
+ {
case 0: // grave
- if (nil == gravesViewController)
- gravesViewController = [[GravesViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ {
+ GravesViewController *gravesViewController = [[GravesViewController alloc] initWithStyle:UITableViewStyleGrouped];
[gravesViewController setTeamDictionary:teamDictionary];
[self.navigationController pushViewController:gravesViewController animated:YES];
+ [gravesViewController release];
break;
+ }
case 1: // voice
- if (nil == voicesViewController)
- voicesViewController = [[VoicesViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ {
+ VoicesViewController *voicesViewController = [[VoicesViewController alloc] initWithStyle:UITableViewStyleGrouped];
[voicesViewController setTeamDictionary:teamDictionary];
[self.navigationController pushViewController:voicesViewController animated:YES];
+ [voicesViewController release];
break;
+ }
case 2: // fort
- if (nil == fortsViewController)
- fortsViewController = [[FortsViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ {
+ FortsViewController *fortsViewController = [[FortsViewController alloc] initWithStyle:UITableViewStyleGrouped];
[fortsViewController setTeamDictionary:teamDictionary];
[self.navigationController pushViewController:fortsViewController animated:YES];
+ [fortsViewController release];
break;
+ }
case 3: // flag
- if (nil == flagsViewController)
- flagsViewController = [[FlagsViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ {
+ FlagsViewController *flagsViewController = [[FlagsViewController alloc] initWithStyle:UITableViewStyleGrouped];
[flagsViewController setTeamDictionary:teamDictionary];
[self.navigationController pushViewController:flagsViewController animated:YES];
+ [flagsViewController release];
break;
+ }
case 4: // level
- if (nil == levelViewController)
- levelViewController = [[LevelViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ {
+ LevelViewController *levelViewController = [[LevelViewController alloc] initWithStyle:UITableViewStyleGrouped];
[levelViewController setTeamDictionary:teamDictionary];
[self.navigationController pushViewController:levelViewController animated:YES];
+ [levelViewController release];
break;
+ }
default:
DLog(@"Nope");
break;
}
} else {
- EditableCellView *cell = (EditableCellView *)[aTableView cellForRowAtIndexPath:indexPath];
- [cell replyKeyboard];
- [aTableView deselectRowAtIndexPath:indexPath animated:NO];
+ if (section == 1 && row == HW_getMaxNumberOfHogs()) {
+ // 'Select one hat for all hogs' selected
+ [self showHogHatViewControllerForHogIndex:-1];
+ } else {
+ EditableCellView *cell = (EditableCellView *)[aTableView cellForRowAtIndexPath:indexPath];
+ [cell replyKeyboard];
+ [aTableView deselectRowAtIndexPath:indexPath animated:NO];
+ }
}
}
// action to perform when you want to change a hog hat
-(void) tableView:(UITableView *)aTableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
- if (nil == hogHatViewController)
- hogHatViewController = [[HogHatViewController alloc] initWithStyle:UITableViewStyleGrouped];
-
- // cache the dictionary file of the team, so that other controllers can modify it
- hogHatViewController.teamDictionary = self.teamDictionary;
- hogHatViewController.selectedHog = [indexPath row];
-
// if we are editing the field undo any change before proceeding
EditableCellView *cell = (EditableCellView *)[aTableView cellForRowAtIndexPath:indexPath];
[cell cancel:nil];
-
- [self.navigationController pushViewController:hogHatViewController animated:YES];
+
+ [self showHogHatViewControllerForHogIndex:[indexPath row]];
}
+- (void)showHogHatViewControllerForHogIndex:(NSInteger)hogIndex
+{
+ HogHatViewController *hogHatViewController = [[HogHatViewController alloc] initWithStyle:UITableViewStyleGrouped];
+
+ // cache the dictionary file of the team, so that other controllers can modify it
+ hogHatViewController.teamDictionary = self.teamDictionary;
+ hogHatViewController.selectedHog = hogIndex;
+
+ [self.navigationController pushViewController:hogHatViewController animated:YES];
+ [hogHatViewController release];
+}
#pragma mark -
#pragma mark Memory management
-(void) didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
- if (hogHatViewController.view.superview == nil)
- hogHatViewController = nil;
- if (gravesViewController.view.superview == nil)
- gravesViewController = nil;
- if (voicesViewController.view.superview == nil)
- voicesViewController = nil;
- if (fortsViewController.view.superview == nil)
- fortsViewController = nil;
- if (flagsViewController.view.superview == nil)
- flagsViewController = nil;
- if (levelViewController.view.superview == nil)
- levelViewController = nil;
MSG_MEMCLEAN();
}
-(void) viewDidUnload {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
self.teamDictionary = nil;
self.teamName = nil;
self.normalHogSprite = nil;
self.secondaryItems = nil;
self.moreSecondaryItems = nil;
- hogHatViewController = nil;
- gravesViewController = nil;
- voicesViewController = nil;
- flagsViewController = nil;
- fortsViewController = nil;
- levelViewController = nil;
MSG_DIDUNLOAD();
[super viewDidUnload];
}
--(void) dealloc {
+-(void) dealloc
+{
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
releaseAndNil(teamDictionary);
releaseAndNil(teamName);
releaseAndNil(normalHogSprite);
releaseAndNil(secondaryItems);
releaseAndNil(moreSecondaryItems);
- releaseAndNil(hogHatViewController);
- releaseAndNil(gravesViewController);
- releaseAndNil(fortsViewController);
- releaseAndNil(voicesViewController);
- releaseAndNil(flagsViewController);
- releaseAndNil(levelViewController);
[super dealloc];
}
--- a/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SingleWeaponViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -37,7 +37,7 @@
[super viewDidLoad];
self.trPath = [NSString stringWithFormat:@"%@", LOCALE_DIRECTORY()];
- self.trFileName = [NSString stringWithFormat:@"%@.txt", [[NSLocale preferredLanguages] firstObject]];
+ self.trFileName = [NSString stringWithFormat:@"%@.txt", [HWUtils languageID]];
// fill the data structure that we are going to read
LoadLocaleWrapper([self.trPath UTF8String], [self.trFileName UTF8String]);
--- a/project_files/HedgewarsMobile/Classes/StatsPageViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -29,6 +29,7 @@
-(void) viewDidLoad {
UITableView *aTableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];
+ aTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[aTableView setBackgroundColorForAnyTable:[UIColor clearColor]];
NSString *imgName = (IS_IPAD()) ? @"mediumBackground~ipad.png" : @"smallerBackground~iphone.png";
@@ -53,6 +54,20 @@
[super viewDidLoad];
}
+#pragma mark - Helpers
+
+- (NSString *)teamNameFromInfo: (NSArray *)info
+{
+ NSString *teamName = [NSString stringWithString:[info objectAtIndex:2]];
+
+ for (int i=3; i < [info count]; i++)
+ {
+ teamName = [teamName stringByAppendingFormat:@" %@", [info objectAtIndex:i]];
+ }
+
+ return teamName;
+}
+
#pragma mark -
#pragma mark Table view data source
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
@@ -92,7 +107,7 @@
green:((color >> 8) & 0xFF)/255.0f
blue:(color & 0xFF)/255.0f
alpha:1.0f];
- cell.textLabel.text = [NSString stringWithFormat:@"%d. %@ (%@ kills)", row+1, [info objectAtIndex:2], [info objectAtIndex:1]];
+ cell.textLabel.text = [NSString stringWithFormat:@"%d. %@ (%@ %@)", row+1, [self teamNameFromInfo:info], [info objectAtIndex:1], NSLocalizedString(@"kills", nil)];
imgName = [NSString stringWithFormat:@"StatsMedal%d",row+1];
} else if (section == 2) { // general info
imgName = @"iconDamage";
@@ -118,7 +133,7 @@
}
-(CGFloat) tableView:(UITableView *)aTableView heightForHeaderInSection:(NSInteger)section {
- return 160;
+ return (section == 0) ? 160 : 40;
}
-(UIView *)tableView:(UITableView *)aTableView viewForHeaderInSection:(NSInteger)section {
--- a/project_files/HedgewarsMobile/Classes/SupportViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SupportViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -18,9 +18,9 @@
#import <UIKit/UIKit.h>
-
+#import "TableViewControllerWithDoneButton.h"
-@interface SupportViewController : UITableViewController {
+@interface SupportViewController : TableViewControllerWithDoneButton {
NSArray *waysToSupport;
}
--- a/project_files/HedgewarsMobile/Classes/SupportViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/SupportViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -18,7 +18,7 @@
#import "SupportViewController.h"
-
+#import "Appirater.h"
@implementation SupportViewController
@synthesize waysToSupport;
@@ -95,6 +95,7 @@
DLog(@"No way");
break;
}
+ cell.accessoryView = nil;
}
NSString *imgString = [[NSString alloc] initWithFormat:@"%@/%@.png",[[NSBundle mainBundle] resourcePath],imgName];
@@ -113,12 +114,17 @@
#pragma mark -
#pragma mark Table view delegate
--(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- NSString *urlString = nil;
+-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
if ([indexPath section] == 0)
- urlString = @"http://itunes.apple.com/us/app/hedgewars/id391234866?affC=QQABAAAAHgAFasEiWjVwUGZOc3k1VGctQkRJazlacXhUclpBTVpiU2xteVdfUQ%3D%3D#&mt=8";
+ {
+ [Appirater rateApp];
+ }
else
- switch ([indexPath row]) {
+ {
+ NSString *urlString = nil;
+ switch ([indexPath row])
+ {
case 0:
urlString = @"http://www.facebook.com/Hedgewars";
break;
@@ -135,7 +141,8 @@
DLog(@"No way");
break;
}
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
+ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
+ }
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section {
@@ -154,7 +161,7 @@
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 20)];
label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
label.textAlignment = UITextAlignmentCenter;
- label.text = @" ♥ THANK YOU ♥ ";
+ label.text = NSLocalizedString(@" ♥ THANK YOU ♥ ", nil);
label.backgroundColor = [UIColor clearColor];
label.center = CGPointMake(self.tableView.frame.size.width/2, 250);
[footer addSubview:label];
@@ -167,7 +174,7 @@
-(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// image height + label height
- return 265;
+ return (section == 1) ? 265 : 20;
}
#pragma mark -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/TableViewControllerWithDoneButton.h Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,23 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface TableViewControllerWithDoneButton : UITableViewController
+
+@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/TableViewControllerWithDoneButton.m Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,52 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#import "TableViewControllerWithDoneButton.h"
+
+@interface TableViewControllerWithDoneButton ()
+
+@end
+
+@implementation TableViewControllerWithDoneButton
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ if (!IS_IPAD())
+ {
+ UIBarButtonItem *doneButton = [self doneButton];
+ self.navigationItem.backBarButtonItem = doneButton;
+ self.navigationItem.leftBarButtonItem = doneButton;
+ }
+}
+
+- (UIBarButtonItem *)doneButton
+{
+ return [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
+ target:self
+ action:@selector(dismissView)] autorelease];
+}
+
+- (void)dismissView
+{
+ [[AudioManagerController mainManager] playBackSound];
+ [[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissViewControllerAnimated:YES completion:nil];
+}
+
+@end
--- a/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -18,13 +18,10 @@
#import <UIKit/UIKit.h>
-
-
-@class SingleTeamViewController;
+#import "TableViewControllerWithDoneButton.h"
-@interface TeamSettingsViewController : UITableViewController {
+@interface TeamSettingsViewController : TableViewControllerWithDoneButton {
NSMutableArray *listOfTeams;
- SingleTeamViewController *childController;
}
@property (nonatomic, retain) NSMutableArray *listOfTeams;
--- a/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/TeamSettingsViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -41,7 +41,7 @@
self.navigationItem.rightBarButtonItem = editButton;
[editButton release];
- self.navigationItem.title = @"List of teams";
+ self.navigationItem.title = NSLocalizedString(@"List of teams", nil);
}
// load the list of teams in the teams directory
@@ -136,43 +136,43 @@
#pragma mark -
#pragma mark Table view delegate
--(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- if (childController == nil) {
- childController = [[SingleTeamViewController alloc] initWithStyle:UITableViewStyleGrouped];
- }
-
+-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ SingleTeamViewController *singleTeamViewController = [[SingleTeamViewController alloc] initWithStyle:UITableViewStyleGrouped];
+
NSInteger row = [indexPath row];
NSString *selectedTeamFile = [listOfTeams objectAtIndex:row];
// this must be set so childController can load the correct plist
- childController.teamName = [selectedTeamFile stringByDeletingPathExtension];
- [childController.tableView setContentOffset:CGPointMake(0,0) animated:NO];
+ singleTeamViewController.teamName = [selectedTeamFile stringByDeletingPathExtension];
+ [singleTeamViewController.tableView setContentOffset:CGPointMake(0,0) animated:NO];
- [self.navigationController pushViewController:childController animated:YES];
+ [self.navigationController pushViewController:singleTeamViewController animated:YES];
+ [singleTeamViewController release];
+
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
#pragma mark -
#pragma mark Memory management
--(void) didReceiveMemoryWarning {
+-(void) didReceiveMemoryWarning
+{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Relinquish ownership any cached data, images, etc that aren't in use.
- if (childController.view.superview == nil )
- childController = nil;
}
--(void) viewDidUnload {
+-(void) viewDidUnload
+{
self.listOfTeams = nil;
- childController = nil;
MSG_DIDUNLOAD();
[super viewDidUnload];
}
--(void) dealloc {
+-(void) dealloc
+{
releaseAndNil(listOfTeams);
- releaseAndNil(childController);
[super dealloc];
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/UITableViewCell+FindTable.h Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,25 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface UITableViewCell (FindTable)
+
+- (UITableView *)findTable;
+
+@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/UITableViewCell+FindTable.m Mon Nov 09 16:34:03 2015 +0000
@@ -0,0 +1,39 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2015 Anton Malmygin <antonc27@mail.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#import "UITableViewCell+FindTable.h"
+
+@implementation UITableViewCell (FindTable)
+
+- (UITableView *)findTable
+{
+ UIView *tableView = self.superview;
+ while (![tableView isKindOfClass:[UITableView class]] || (tableView == nil))
+ {
+ tableView = tableView.superview;
+
+ if ([tableView isEqual:self.window])
+ {
+ tableView = nil;
+ }
+ }
+
+ return (UITableView *)tableView;
+}
+
+@end
--- a/project_files/HedgewarsMobile/Classes/VoicesViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/VoicesViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -32,7 +32,6 @@
#pragma mark View lifecycle
-(void) viewDidLoad {
[super viewDidLoad];
- srandom(time(NULL));
voiceBeingPlayed = NULL;
@@ -129,7 +128,7 @@
NSString *voiceDir = [[NSString alloc] initWithFormat:@"%@/%@/",VOICES_DIRECTORY(),[voiceArray objectAtIndex:newRow]];
NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:voiceDir error:NULL];
- int index = random() % [array count];
+ int index = arc4random_uniform((int)[array count]);
voiceBeingPlayed = Mix_LoadWAV([[voiceDir stringByAppendingString:[array objectAtIndex:index]] UTF8String]);
[voiceDir release];
--- a/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.h Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.h Mon Nov 09 16:34:03 2015 +0000
@@ -18,13 +18,10 @@
#import <UIKit/UIKit.h>
-
-
-@class SingleWeaponViewController;
+#import "TableViewControllerWithDoneButton.h"
-@interface WeaponSettingsViewController : UITableViewController {
+@interface WeaponSettingsViewController : TableViewControllerWithDoneButton {
NSMutableArray *listOfWeapons;
- SingleWeaponViewController *childController;
}
@property (nonatomic, retain) NSMutableArray *listOfWeapons;
--- a/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.m Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Classes/WeaponSettingsViewController.m Mon Nov 09 16:34:03 2015 +0000
@@ -40,7 +40,7 @@
self.navigationItem.rightBarButtonItem = editButton;
[editButton release];
- self.navigationItem.title = @"List of weapons";
+ self.navigationItem.title = NSLocalizedString(@"List of weapons", nil);
}
-(void) viewWillAppear:(BOOL) animated {
@@ -131,42 +131,42 @@
#pragma mark -
#pragma mark Table view delegate
--(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- if (childController == nil) {
- childController = [[SingleWeaponViewController alloc] initWithStyle:UITableViewStyleGrouped];
- }
+-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ SingleWeaponViewController *singleWeaponViewController = [[SingleWeaponViewController alloc] initWithStyle:UITableViewStyleGrouped];
NSInteger row = [indexPath row];
NSString *selectedWeaponFile = [self.listOfWeapons objectAtIndex:row];
// this must be set so childController can load the correct plist
- childController.weaponName = [selectedWeaponFile stringByDeletingPathExtension];
- [childController.tableView setContentOffset:CGPointMake(0,0) animated:NO];
+ singleWeaponViewController.weaponName = [selectedWeaponFile stringByDeletingPathExtension];
+ [singleWeaponViewController.tableView setContentOffset:CGPointMake(0,0) animated:NO];
- [self.navigationController pushViewController:childController animated:YES];
+ [self.navigationController pushViewController:singleWeaponViewController animated:YES];
+ [singleWeaponViewController release];
+
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
#pragma mark -
#pragma mark Memory management
--(void)didReceiveMemoryWarning {
+-(void)didReceiveMemoryWarning
+{
[super didReceiveMemoryWarning];
- if (childController.view.superview == nil )
- childController = nil;
}
--(void) viewDidUnload {
+-(void) viewDidUnload
+{
self.listOfWeapons = nil;
- childController = nil;
MSG_DIDUNLOAD();
[super viewDidUnload];
}
--(void) dealloc {
+-(void) dealloc
+{
releaseAndNil(listOfWeapons);
- releaseAndNil(childController);
[super dealloc];
}
--- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Mon Nov 09 16:34:03 2015 +0000
@@ -74,9 +74,9 @@
615AD9EB1207654E00F2FF04 /* helpButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 615AD9EA1207654E00F2FF04 /* helpButton.png */; };
615BE3D4155C5DDF003CA34D /* uInputHandler.pas in Sources */ = {isa = PBXBuildFile; fileRef = 615BE3D3155C5DDF003CA34D /* uInputHandler.pas */; };
615E755A14E41E8C00FBA131 /* MXAudioPlayerFadeOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E755914E41E8C00FBA131 /* MXAudioPlayerFadeOperation.m */; };
- 615E76BC14E4421200FBA131 /* MGSplitCornersView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B714E4421200FBA131 /* MGSplitCornersView.m */; };
- 615E76BD14E4421200FBA131 /* MGSplitDividerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B914E4421200FBA131 /* MGSplitDividerView.m */; };
- 615E76BE14E4421200FBA131 /* MGSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76BB14E4421200FBA131 /* MGSplitViewController.m */; };
+ 615E76BC14E4421200FBA131 /* MGSplitCornersView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B714E4421200FBA131 /* MGSplitCornersView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 615E76BD14E4421200FBA131 /* MGSplitDividerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76B914E4421200FBA131 /* MGSplitDividerView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ 615E76BE14E4421200FBA131 /* MGSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 615E76BB14E4421200FBA131 /* MGSplitViewController.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
615FEAE212A2A6640098EE92 /* localplayButton~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 615FEADF12A2A6640098EE92 /* localplayButton~ipad.png */; };
615FEAE312A2A6640098EE92 /* localplayButton~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 615FEAE012A2A6640098EE92 /* localplayButton~iphone.png */; };
616065A8159A71FD00CFAEF4 /* hwclassic.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 616065A7159A71FD00CFAEF4 /* hwclassic.mp3 */; };
@@ -96,7 +96,6 @@
6165921B11CA9BA200D6E256 /* SchemeWeaponConfigViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 616591FD11CA9BA200D6E256 /* SchemeWeaponConfigViewController.m */; };
6165921C11CA9BA200D6E256 /* SingleSchemeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 616591FF11CA9BA200D6E256 /* SingleSchemeViewController.m */; };
6165921D11CA9BA200D6E256 /* SingleTeamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165920111CA9BA200D6E256 /* SingleTeamViewController.m */; };
- 6165921E11CA9BA200D6E256 /* SettingsContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165920311CA9BA200D6E256 /* SettingsContainerViewController.m */; };
6165921F11CA9BA200D6E256 /* TeamConfigViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165920511CA9BA200D6E256 /* TeamConfigViewController.m */; };
6165922011CA9BA200D6E256 /* TeamSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165920711CA9BA200D6E256 /* TeamSettingsViewController.m */; };
6165922111CA9BA200D6E256 /* VoicesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165920911CA9BA200D6E256 /* VoicesViewController.m */; };
@@ -208,7 +207,6 @@
61A670C112747DB900B06CE7 /* MainMenuViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165924C11CA9CB400D6E256 /* MainMenuViewController-iPhone.xib */; };
61A670C212747DBD00B06CE7 /* MapConfigViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165924E11CA9CB400D6E256 /* MapConfigViewController-iPhone.xib */; };
61A976B3136F668500DD9878 /* uCursor.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A976B2136F668500DD9878 /* uCursor.pas */; };
- 61AC067412B2E32D000B52A2 /* Appirater.m in Sources */ = {isa = PBXBuildFile; fileRef = 61AC067312B2E32D000B52A2 /* Appirater.m */; };
61B37A1F17837C78009F283D /* ArgParsers.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61B37A1D17837C78009F283D /* ArgParsers.pas */; };
61B37A2017837C78009F283D /* uVisualGearsList.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61B37A1E17837C78009F283D /* uVisualGearsList.pas */; };
61B37A80178381DB009F283D /* uGearsHandlersMess.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61B37A7F178381DB009F283D /* uGearsHandlersMess.pas */; };
@@ -244,6 +242,27 @@
61F9040B11DF59370068B24D /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040A11DF59370068B24D /* background.png */; };
61F904D711DF7DA30068B24D /* WeaponCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F904D611DF7DA30068B24D /* WeaponCellView.m */; };
922F64900F10F53100DC6EC0 /* libfpc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 928301170F10CAFC00CC5A3C /* libfpc.a */; };
+ F60D04771BD137B5003ACB00 /* bullet_filled.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04631BD137B5003ACB00 /* bullet_filled.png */; };
+ F60D04781BD137B5003ACB00 /* bullet_filled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04641BD137B5003ACB00 /* bullet_filled@2x.png */; };
+ F60D04791BD137B5003ACB00 /* bullet.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04651BD137B5003ACB00 /* bullet.png */; };
+ F60D047A1BD137B5003ACB00 /* bullet@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04661BD137B5003ACB00 /* bullet@2x.png */; };
+ F60D047B1BD137B5003ACB00 /* flower_filled.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04671BD137B5003ACB00 /* flower_filled.png */; };
+ F60D047C1BD137B5003ACB00 /* flower_filled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04681BD137B5003ACB00 /* flower_filled@2x.png */; };
+ F60D047D1BD137B5003ACB00 /* flower.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04691BD137B5003ACB00 /* flower.png */; };
+ F60D047E1BD137B5003ACB00 /* flower@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D046A1BD137B5003ACB00 /* flower@2x.png */; };
+ F60D047F1BD137B5003ACB00 /* heart_filled.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D046B1BD137B5003ACB00 /* heart_filled.png */; };
+ F60D04801BD137B5003ACB00 /* heart_filled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D046C1BD137B5003ACB00 /* heart_filled@2x.png */; };
+ F60D04811BD137B5003ACB00 /* heart.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D046D1BD137B5003ACB00 /* heart.png */; };
+ F60D04821BD137B5003ACB00 /* heart@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D046E1BD137B5003ACB00 /* heart@2x.png */; };
+ F60D04831BD137B5003ACB00 /* target_filled.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D046F1BD137B5003ACB00 /* target_filled.png */; };
+ F60D04841BD137B5003ACB00 /* target_filled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04701BD137B5003ACB00 /* target_filled@2x.png */; };
+ F60D04851BD137B5003ACB00 /* target.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04711BD137B5003ACB00 /* target.png */; };
+ F60D04861BD137B5003ACB00 /* target@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04721BD137B5003ACB00 /* target@2x.png */; };
+ F60D04871BD137B5003ACB00 /* teams_filled.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04731BD137B5003ACB00 /* teams_filled.png */; };
+ F60D04881BD137B5003ACB00 /* teams_filled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04741BD137B5003ACB00 /* teams_filled@2x.png */; };
+ F60D04891BD137B5003ACB00 /* teams.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04751BD137B5003ACB00 /* teams.png */; };
+ F60D048A1BD137B5003ACB00 /* teams@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F60D04761BD137B5003ACB00 /* teams@2x.png */; };
+ F6448CE31BD2E00500C31C8C /* TableViewControllerWithDoneButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F6448CE21BD2E00500C31C8C /* TableViewControllerWithDoneButton.m */; };
F65724FD1B7E784700A86262 /* helpabove.png in Resources */ = {isa = PBXBuildFile; fileRef = F65724F81B7E784700A86262 /* helpabove.png */; };
F65724FE1B7E784700A86262 /* helpbottom.png in Resources */ = {isa = PBXBuildFile; fileRef = F65724F91B7E784700A86262 /* helpbottom.png */; };
F65724FF1B7E784700A86262 /* helpleft.png in Resources */ = {isa = PBXBuildFile; fileRef = F65724FA1B7E784700A86262 /* helpleft.png */; };
@@ -252,6 +271,11 @@
F65E1DBF1B9B95A400A78ADF /* Icon-60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F65E1DBC1B9B95A400A78ADF /* Icon-60@2x.png */; };
F65E1DC01B9B95A400A78ADF /* Icon-76.png in Resources */ = {isa = PBXBuildFile; fileRef = F65E1DBD1B9B95A400A78ADF /* Icon-76.png */; };
F65E1DC11B9B95A400A78ADF /* Icon-76@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F65E1DBE1B9B95A400A78ADF /* Icon-76@2x.png */; };
+ F6756D801BD8550500B6AB6B /* LabelWithIBLocalization.m in Sources */ = {isa = PBXBuildFile; fileRef = F6756D7F1BD8550500B6AB6B /* LabelWithIBLocalization.m */; };
+ F67FC8121BEC06E700A9DC75 /* Appirater.m in Sources */ = {isa = PBXBuildFile; fileRef = F67FC8101BEC06E700A9DC75 /* Appirater.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+ F67FC8141BEC072B00A9DC75 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F67FC8131BEC072B00A9DC75 /* StoreKit.framework */; };
+ F67FC8161BEC17AC00A9DC75 /* Appirater.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F67FC8151BEC17AC00A9DC75 /* Appirater.bundle */; };
+ F6BA38461BA7A834005D16EA /* GameLogViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BA38451BA7A834005D16EA /* GameLogViewController.m */; };
F6D7E09F1B76884E004F3BCF /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F6D7E09E1B76884E004F3BCF /* Default-568h@2x.png */; };
F6D7E0C21B768F19004F3BCF /* uLandGenPerlin.pas in Sources */ = {isa = PBXBuildFile; fileRef = F6D7E0BF1B768F19004F3BCF /* uLandGenPerlin.pas */; };
F6D7E0C31B768F19004F3BCF /* uLandGenTemplateBased.pas in Sources */ = {isa = PBXBuildFile; fileRef = F6D7E0C01B768F19004F3BCF /* uLandGenTemplateBased.pas */; };
@@ -261,6 +285,8 @@
F6F07BDE1B7E72D40010E48F /* HelpPageLobbyViewController-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6F07BDA1B7E72D40010E48F /* HelpPageLobbyViewController-iPad.xib */; };
F6F07BDF1B7E72D40010E48F /* HelpPageLobbyViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6F07BDB1B7E72D40010E48F /* HelpPageLobbyViewController-iPhone.xib */; };
F6F07BE01B7E72D40010E48F /* HelpPageLobbyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6F07BDD1B7E72D40010E48F /* HelpPageLobbyViewController.m */; };
+ F6F7DA8F1BE18F5700432EA7 /* UITableViewCell+FindTable.m in Sources */ = {isa = PBXBuildFile; fileRef = F6F7DA8E1BE18F5700432EA7 /* UITableViewCell+FindTable.m */; };
+ F6FF25A21BB8AEE300124053 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6FF25A11BB8AEE300124053 /* GameController.framework */; };
/* End PBXBuildFile section */
/* Begin PBXBuildRule section */
@@ -507,8 +533,6 @@
616591FF11CA9BA200D6E256 /* SingleSchemeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleSchemeViewController.m; sourceTree = "<group>"; };
6165920011CA9BA200D6E256 /* SingleTeamViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleTeamViewController.h; sourceTree = "<group>"; };
6165920111CA9BA200D6E256 /* SingleTeamViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleTeamViewController.m; sourceTree = "<group>"; };
- 6165920211CA9BA200D6E256 /* SettingsContainerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsContainerViewController.h; sourceTree = "<group>"; };
- 6165920311CA9BA200D6E256 /* SettingsContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsContainerViewController.m; sourceTree = "<group>"; };
6165920411CA9BA200D6E256 /* TeamConfigViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TeamConfigViewController.h; sourceTree = "<group>"; };
6165920511CA9BA200D6E256 /* TeamConfigViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TeamConfigViewController.m; sourceTree = "<group>"; };
6165920611CA9BA200D6E256 /* TeamSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TeamSettingsViewController.h; sourceTree = "<group>"; };
@@ -652,8 +676,6 @@
61A4A39312A5CCC2004D81E6 /* uVariables.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uVariables.pas; path = ../../hedgewars/uVariables.pas; sourceTree = SOURCE_ROOT; };
61A4A3A112A5CD56004D81E6 /* uCaptions.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uCaptions.pas; path = ../../hedgewars/uCaptions.pas; sourceTree = SOURCE_ROOT; };
61A976B2136F668500DD9878 /* uCursor.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uCursor.pas; path = ../../hedgewars/uCursor.pas; sourceTree = SOURCE_ROOT; };
- 61AC067212B2E32D000B52A2 /* Appirater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Appirater.h; path = Classes/Appirater.h; sourceTree = "<group>"; };
- 61AC067312B2E32D000B52A2 /* Appirater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Appirater.m; path = Classes/Appirater.m; sourceTree = "<group>"; };
61B37A1D17837C78009F283D /* ArgParsers.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = ArgParsers.pas; path = ../../hedgewars/ArgParsers.pas; sourceTree = SOURCE_ROOT; };
61B37A1E17837C78009F283D /* uVisualGearsList.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uVisualGearsList.pas; path = ../../hedgewars/uVisualGearsList.pas; sourceTree = SOURCE_ROOT; };
61B37A7F178381DB009F283D /* uGearsHandlersMess.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uGearsHandlersMess.pas; path = ../../hedgewars/uGearsHandlersMess.pas; sourceTree = SOURCE_ROOT; };
@@ -709,6 +731,28 @@
61F904D611DF7DA30068B24D /* WeaponCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WeaponCellView.m; path = Classes/WeaponCellView.m; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
928301170F10CAFC00CC5A3C /* libfpc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libfpc.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ F60D04631BD137B5003ACB00 /* bullet_filled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bullet_filled.png; path = Resources/Icons/bullet_filled.png; sourceTree = "<group>"; };
+ F60D04641BD137B5003ACB00 /* bullet_filled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bullet_filled@2x.png"; path = "Resources/Icons/bullet_filled@2x.png"; sourceTree = "<group>"; };
+ F60D04651BD137B5003ACB00 /* bullet.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bullet.png; path = Resources/Icons/bullet.png; sourceTree = "<group>"; };
+ F60D04661BD137B5003ACB00 /* bullet@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bullet@2x.png"; path = "Resources/Icons/bullet@2x.png"; sourceTree = "<group>"; };
+ F60D04671BD137B5003ACB00 /* flower_filled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flower_filled.png; path = Resources/Icons/flower_filled.png; sourceTree = "<group>"; };
+ F60D04681BD137B5003ACB00 /* flower_filled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "flower_filled@2x.png"; path = "Resources/Icons/flower_filled@2x.png"; sourceTree = "<group>"; };
+ F60D04691BD137B5003ACB00 /* flower.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flower.png; path = Resources/Icons/flower.png; sourceTree = "<group>"; };
+ F60D046A1BD137B5003ACB00 /* flower@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "flower@2x.png"; path = "Resources/Icons/flower@2x.png"; sourceTree = "<group>"; };
+ F60D046B1BD137B5003ACB00 /* heart_filled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = heart_filled.png; path = Resources/Icons/heart_filled.png; sourceTree = "<group>"; };
+ F60D046C1BD137B5003ACB00 /* heart_filled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "heart_filled@2x.png"; path = "Resources/Icons/heart_filled@2x.png"; sourceTree = "<group>"; };
+ F60D046D1BD137B5003ACB00 /* heart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = heart.png; path = Resources/Icons/heart.png; sourceTree = "<group>"; };
+ F60D046E1BD137B5003ACB00 /* heart@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "heart@2x.png"; path = "Resources/Icons/heart@2x.png"; sourceTree = "<group>"; };
+ F60D046F1BD137B5003ACB00 /* target_filled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = target_filled.png; path = Resources/Icons/target_filled.png; sourceTree = "<group>"; };
+ F60D04701BD137B5003ACB00 /* target_filled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "target_filled@2x.png"; path = "Resources/Icons/target_filled@2x.png"; sourceTree = "<group>"; };
+ F60D04711BD137B5003ACB00 /* target.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = target.png; path = Resources/Icons/target.png; sourceTree = "<group>"; };
+ F60D04721BD137B5003ACB00 /* target@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "target@2x.png"; path = "Resources/Icons/target@2x.png"; sourceTree = "<group>"; };
+ F60D04731BD137B5003ACB00 /* teams_filled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = teams_filled.png; path = Resources/Icons/teams_filled.png; sourceTree = "<group>"; };
+ F60D04741BD137B5003ACB00 /* teams_filled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "teams_filled@2x.png"; path = "Resources/Icons/teams_filled@2x.png"; sourceTree = "<group>"; };
+ F60D04751BD137B5003ACB00 /* teams.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = teams.png; path = Resources/Icons/teams.png; sourceTree = "<group>"; };
+ F60D04761BD137B5003ACB00 /* teams@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "teams@2x.png"; path = "Resources/Icons/teams@2x.png"; sourceTree = "<group>"; };
+ F6448CE11BD2E00500C31C8C /* TableViewControllerWithDoneButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewControllerWithDoneButton.h; sourceTree = "<group>"; };
+ F6448CE21BD2E00500C31C8C /* TableViewControllerWithDoneButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewControllerWithDoneButton.m; sourceTree = "<group>"; };
F65724F81B7E784700A86262 /* helpabove.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = helpabove.png; sourceTree = "<group>"; };
F65724F91B7E784700A86262 /* helpbottom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = helpbottom.png; sourceTree = "<group>"; };
F65724FA1B7E784700A86262 /* helpleft.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = helpleft.png; sourceTree = "<group>"; };
@@ -720,6 +764,18 @@
F65E1DBC1B9B95A400A78ADF /* Icon-60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-60@2x.png"; path = "Resources/Icons/Icon-60@2x.png"; sourceTree = "<group>"; };
F65E1DBD1B9B95A400A78ADF /* Icon-76.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-76.png"; path = "Resources/Icons/Icon-76.png"; sourceTree = "<group>"; };
F65E1DBE1B9B95A400A78ADF /* Icon-76@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-76@2x.png"; path = "Resources/Icons/Icon-76@2x.png"; sourceTree = "<group>"; };
+ F6756D7E1BD8550500B6AB6B /* LabelWithIBLocalization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelWithIBLocalization.h; sourceTree = "<group>"; };
+ F6756D7F1BD8550500B6AB6B /* LabelWithIBLocalization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelWithIBLocalization.m; sourceTree = "<group>"; };
+ F67FC80F1BEC06E700A9DC75 /* Appirater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Appirater.h; sourceTree = "<group>"; };
+ F67FC8101BEC06E700A9DC75 /* Appirater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Appirater.m; sourceTree = "<group>"; };
+ F67FC8111BEC06E700A9DC75 /* AppiraterDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppiraterDelegate.h; sourceTree = "<group>"; };
+ F67FC8131BEC072B00A9DC75 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
+ F67FC8151BEC17AC00A9DC75 /* Appirater.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Appirater.bundle; sourceTree = "<group>"; };
+ F67FC81F1BEC280D00A9DC75 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Locale/tr.lproj/About.strings; sourceTree = "<group>"; };
+ F67FC8201BEC280D00A9DC75 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Locale/tr.lproj/Localizable.strings; sourceTree = "<group>"; };
+ F67FC8211BEC280D00A9DC75 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Locale/tr.lproj/Scheme.strings; sourceTree = "<group>"; };
+ F6BA38441BA7A834005D16EA /* GameLogViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameLogViewController.h; sourceTree = "<group>"; };
+ F6BA38451BA7A834005D16EA /* GameLogViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameLogViewController.m; sourceTree = "<group>"; };
F6D7E09E1B76884E004F3BCF /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
F6D7E0BF1B768F19004F3BCF /* uLandGenPerlin.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uLandGenPerlin.pas; path = ../../hedgewars/uLandGenPerlin.pas; sourceTree = "<group>"; };
F6D7E0C01B768F19004F3BCF /* uLandGenTemplateBased.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uLandGenTemplateBased.pas; path = ../../hedgewars/uLandGenTemplateBased.pas; sourceTree = "<group>"; };
@@ -730,6 +786,9 @@
F6F07BDB1B7E72D40010E48F /* HelpPageLobbyViewController-iPhone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "HelpPageLobbyViewController-iPhone.xib"; sourceTree = "<group>"; };
F6F07BDC1B7E72D40010E48F /* HelpPageLobbyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HelpPageLobbyViewController.h; sourceTree = "<group>"; };
F6F07BDD1B7E72D40010E48F /* HelpPageLobbyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HelpPageLobbyViewController.m; sourceTree = "<group>"; };
+ F6F7DA8D1BE18F5700432EA7 /* UITableViewCell+FindTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+FindTable.h"; path = "Classes/UITableViewCell+FindTable.h"; sourceTree = "<group>"; };
+ F6F7DA8E1BE18F5700432EA7 /* UITableViewCell+FindTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+FindTable.m"; path = "Classes/UITableViewCell+FindTable.m"; sourceTree = "<group>"; };
+ F6FF25A11BB8AEE300124053 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -737,6 +796,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ F67FC8141BEC072B00A9DC75 /* StoreKit.framework in Frameworks */,
+ F6FF25A21BB8AEE300124053 /* GameController.framework in Frameworks */,
F6D7E0C81B7698BF004F3BCF /* libstdc++.dylib in Frameworks */,
F6D7E0C61B769819004F3BCF /* CoreMotion.framework in Frameworks */,
617D791E16D933060091D4D6 /* libPhysfs.a in Frameworks */,
@@ -816,8 +877,7 @@
61F8535314578999002CA294 /* Helpers */,
61641FE21437CD8F006E049C /* Headers */,
61DE91561258B76800B80214 /* Custom UIs */,
- 61AC067212B2E32D000B52A2 /* Appirater.h */,
- 61AC067312B2E32D000B52A2 /* Appirater.m */,
+ F67FC80E1BEC06E700A9DC75 /* Appirater */,
61006F93128DE31F00EBA7F7 /* CreationChamber.h */,
61006F94128DE31F00EBA7F7 /* CreationChamber.m */,
6165929C11CA9E2F00D6E256 /* HedgewarsAppDelegate.h */,
@@ -852,6 +912,8 @@
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
+ F67FC8131BEC072B00A9DC75 /* StoreKit.framework */,
+ F6FF25A11BB8AEE300124053 /* GameController.framework */,
617D78D816D932310091D4D6 /* Physfs.xcodeproj */,
617D794316D933B00091D4D6 /* Physlayer.xcodeproj */,
6195993F1364C82B00B429B6 /* Lua.xcodeproj */,
@@ -893,6 +955,8 @@
61F2E7CB1205EDE0005734F7 /* AboutViewController.h */,
61F2E7CC1205EDE0005734F7 /* AboutViewController.m */,
61F2E7CD1205EDE0005734F7 /* AboutViewController.xib */,
+ F6BA38441BA7A834005D16EA /* GameLogViewController.h */,
+ F6BA38451BA7A834005D16EA /* GameLogViewController.m */,
6167A6731391514600AA6D07 /* RestoreViewController.h */,
6167A6741391514600AA6D07 /* RestoreViewController.m */,
6167A6751391514600AA6D07 /* RestoreViewController-iPhone.xib */,
@@ -938,8 +1002,6 @@
6163EE4C11CC2478001C0453 /* Settings Page */ = {
isa = PBXGroup;
children = (
- 6165920211CA9BA200D6E256 /* SettingsContainerViewController.h */,
- 6165920311CA9BA200D6E256 /* SettingsContainerViewController.m */,
616591F411CA9BA200D6E256 /* SettingsBaseViewController.h */,
616591F511CA9BA200D6E256 /* SettingsBaseViewController.m */,
6163EE4E11CC248D001C0453 /* First Level */,
@@ -968,6 +1030,8 @@
F6F07BDD1B7E72D40010E48F /* HelpPageLobbyViewController.m */,
F6F07BDA1B7E72D40010E48F /* HelpPageLobbyViewController-iPad.xib */,
F6F07BDB1B7E72D40010E48F /* HelpPageLobbyViewController-iPhone.xib */,
+ F6756D7E1BD8550500B6AB6B /* LabelWithIBLocalization.h */,
+ F6756D7F1BD8550500B6AB6B /* LabelWithIBLocalization.m */,
);
name = "Game Configuration";
sourceTree = "<group>";
@@ -975,6 +1039,8 @@
6163EE4E11CC248D001C0453 /* First Level */ = {
isa = PBXGroup;
children = (
+ F6448CE11BD2E00500C31C8C /* TableViewControllerWithDoneButton.h */,
+ F6448CE21BD2E00500C31C8C /* TableViewControllerWithDoneButton.m */,
616591E811CA9BA200D6E256 /* GeneralSettingsViewController.h */,
616591E911CA9BA200D6E256 /* GeneralSettingsViewController.m */,
6165920611CA9BA200D6E256 /* TeamSettingsViewController.h */,
@@ -1113,6 +1179,8 @@
619C5BA0124FA59000D041AE /* MapPreviewButtonView.h */,
619C5BA1124FA59000D041AE /* MapPreviewButtonView.m */,
61F544C512AF1748007FD913 /* HoldTableViewCell.h */,
+ F6F7DA8D1BE18F5700432EA7 /* UITableViewCell+FindTable.h */,
+ F6F7DA8E1BE18F5700432EA7 /* UITableViewCell+FindTable.m */,
61F544C612AF1748007FD913 /* HoldTableViewCell.m */,
6165922A11CA9BD500D6E256 /* SquareButtonView.h */,
6165922B11CA9BD500D6E256 /* SquareButtonView.m */,
@@ -1127,6 +1195,7 @@
61F7A42811E2905C0040BA66 /* Icons */ = {
isa = PBXGroup;
children = (
+ F60D04611BD1378F003ACB00 /* Tabbar */,
61F2E7EB12060E31005734F7 /* checkbox.png */,
615FEAD912A2A4C10098EE92 /* checkbox@2x.png */,
61D3D2A41290E03A003CE7C3 /* irc.png */,
@@ -1298,6 +1367,33 @@
name = "Pascal Sources";
sourceTree = "<group>";
};
+ F60D04611BD1378F003ACB00 /* Tabbar */ = {
+ isa = PBXGroup;
+ children = (
+ F60D04631BD137B5003ACB00 /* bullet_filled.png */,
+ F60D04641BD137B5003ACB00 /* bullet_filled@2x.png */,
+ F60D04651BD137B5003ACB00 /* bullet.png */,
+ F60D04661BD137B5003ACB00 /* bullet@2x.png */,
+ F60D04671BD137B5003ACB00 /* flower_filled.png */,
+ F60D04681BD137B5003ACB00 /* flower_filled@2x.png */,
+ F60D04691BD137B5003ACB00 /* flower.png */,
+ F60D046A1BD137B5003ACB00 /* flower@2x.png */,
+ F60D046B1BD137B5003ACB00 /* heart_filled.png */,
+ F60D046C1BD137B5003ACB00 /* heart_filled@2x.png */,
+ F60D046D1BD137B5003ACB00 /* heart.png */,
+ F60D046E1BD137B5003ACB00 /* heart@2x.png */,
+ F60D046F1BD137B5003ACB00 /* target_filled.png */,
+ F60D04701BD137B5003ACB00 /* target_filled@2x.png */,
+ F60D04711BD137B5003ACB00 /* target.png */,
+ F60D04721BD137B5003ACB00 /* target@2x.png */,
+ F60D04731BD137B5003ACB00 /* teams_filled.png */,
+ F60D04741BD137B5003ACB00 /* teams_filled@2x.png */,
+ F60D04751BD137B5003ACB00 /* teams.png */,
+ F60D04761BD137B5003ACB00 /* teams@2x.png */,
+ );
+ name = Tabbar;
+ sourceTree = "<group>";
+ };
F65724F71B7E784700A86262 /* Help Bubbles */ = {
isa = PBXGroup;
children = (
@@ -1311,6 +1407,18 @@
path = "Resources/Frontend/Help Bubbles";
sourceTree = "<group>";
};
+ F67FC80E1BEC06E700A9DC75 /* Appirater */ = {
+ isa = PBXGroup;
+ children = (
+ F67FC80F1BEC06E700A9DC75 /* Appirater.h */,
+ F67FC8101BEC06E700A9DC75 /* Appirater.m */,
+ F67FC8111BEC06E700A9DC75 /* AppiraterDelegate.h */,
+ F67FC8151BEC17AC00A9DC75 /* Appirater.bundle */,
+ );
+ name = Appirater;
+ path = Classes/Appirater;
+ sourceTree = "<group>";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -1365,7 +1473,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
- LastUpgradeCheck = 0640;
+ LastUpgradeCheck = 0710;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Hedgewars" */;
compatibilityVersion = "Xcode 3.2";
@@ -1385,6 +1493,7 @@
Portuguese,
Romanian,
ru,
+ tr,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
projectDirPath = "";
@@ -1500,23 +1609,33 @@
611E12FF117BBBDA0044B62F /* Entitlements-Development.plist in Resources */,
6165925311CA9CB400D6E256 /* MainMenuViewController-iPad.xib in Resources */,
6165925511CA9CB400D6E256 /* MapConfigViewController-iPad.xib in Resources */,
+ F60D04791BD137B5003ACB00 /* bullet.png in Resources */,
61F9040911DF58B00068B24D /* settingsButton.png in Resources */,
61F9040B11DF59370068B24D /* background.png in Resources */,
61EBA62A11DFF2BC0048B68A /* title~iphone.png in Resources */,
61F7A43811E290650040BA66 /* Icon-72.png in Resources */,
+ F60D04781BD137B5003ACB00 /* bullet_filled@2x.png in Resources */,
61F7A43911E290650040BA66 /* Icon-Small-50.png in Resources */,
+ F60D04871BD137B5003ACB00 /* teams_filled.png in Resources */,
61F7A43A11E290650040BA66 /* Icon-Small.png in Resources */,
61F7A43C11E290650040BA66 /* Icon.png in Resources */,
F65724FE1B7E784700A86262 /* helpbottom.png in Resources */,
61F7A43E11E290650040BA66 /* iTunesArtwork.png in Resources */,
+ F60D04811BD137B5003ACB00 /* heart.png in Resources */,
F65E1DC11B9B95A400A78ADF /* Icon-76@2x.png in Resources */,
6129B9F711EFB04D0017E305 /* denied.png in Resources */,
61F2E7CF1205EDE0005734F7 /* AboutViewController.xib in Resources */,
+ F60D047C1BD137B5003ACB00 /* flower_filled@2x.png in Resources */,
61F2E7EC12060E31005734F7 /* checkbox.png in Resources */,
+ F60D04821BD137B5003ACB00 /* heart@2x.png in Resources */,
615AD96212073B4D00F2FF04 /* startGameButton.png in Resources */,
+ F60D048A1BD137B5003ACB00 /* teams@2x.png in Resources */,
F6D7E09F1B76884E004F3BCF /* Default-568h@2x.png in Resources */,
+ F60D047E1BD137B5003ACB00 /* flower@2x.png in Resources */,
+ F60D04841BD137B5003ACB00 /* target_filled@2x.png in Resources */,
615AD9E9120764CA00F2FF04 /* backButton.png in Resources */,
615AD9EB1207654E00F2FF04 /* helpButton.png in Resources */,
+ F60D04891BD137B5003ACB00 /* teams.png in Resources */,
611EE974122A9C4100DF6938 /* clickSound.caf in Resources */,
611EE9DA122AA10A00DF6938 /* selSound.caf in Resources */,
6199E86D12464A8E00DADF8C /* surprise.png in Resources */,
@@ -1537,8 +1656,12 @@
6172FEEF1298D25D00D73365 /* mediumBackground~ipad.png in Resources */,
F65E1DBF1B9B95A400A78ADF /* Icon-60@2x.png in Resources */,
6172FEF11298D25D00D73365 /* smallerBackground~ipad.png in Resources */,
+ F60D047A1BD137B5003ACB00 /* bullet@2x.png in Resources */,
+ F60D04861BD137B5003ACB00 /* target@2x.png in Resources */,
6172FEF21298D25D00D73365 /* smallerBackground~iphone.png in Resources */,
61889985129995B500D55FD6 /* title~ipad.png in Resources */,
+ F60D047D1BD137B5003ACB00 /* flower.png in Resources */,
+ F60D04801BD137B5003ACB00 /* heart_filled@2x.png in Resources */,
615FEAE212A2A6640098EE92 /* localplayButton~ipad.png in Resources */,
615FEAE312A2A6640098EE92 /* localplayButton~iphone.png in Resources */,
F65725001B7E784700A86262 /* helpplain.png in Resources */,
@@ -1546,6 +1669,9 @@
61188BF812A6FE5C0026C5DA /* background@2x~iphone.png in Resources */,
61188BF912A6FE5D0026C5DA /* checkbox@2x.png in Resources */,
61188BFB12A6FE610026C5DA /* Default-ipad-Landscape.png in Resources */,
+ F60D047B1BD137B5003ACB00 /* flower_filled.png in Resources */,
+ F60D04771BD137B5003ACB00 /* bullet_filled.png in Resources */,
+ F60D04881BD137B5003ACB00 /* teams_filled@2x.png in Resources */,
61188BFC12A6FE630026C5DA /* Default@2x.png in Resources */,
61188BFD12A6FE730026C5DA /* fb@2x.png in Resources */,
61188BFE12A6FE7C0026C5DA /* irc@2x.png in Resources */,
@@ -1554,6 +1680,7 @@
61188C0412A6FE880026C5DA /* savesButton@2x.png in Resources */,
61188C0512A6FE8F0026C5DA /* Data in Resources */,
61188C0612A6FE950026C5DA /* smallerBackground@2x~iphone.png in Resources */,
+ F67FC8161BEC17AC00A9DC75 /* Appirater.bundle in Resources */,
F65724FD1B7E784700A86262 /* helpabove.png in Resources */,
F6F07BDE1B7E72D40010E48F /* HelpPageLobbyViewController-iPad.xib in Resources */,
61188C0712A6FE960026C5DA /* settingsButton@2x.png in Resources */,
@@ -1573,12 +1700,15 @@
6167C8F81429502C003DD50F /* robotBadge@2x.png in Resources */,
6167C8F91429502C003DD50F /* star.png in Resources */,
6167C8FA1429502C003DD50F /* star@2x.png in Resources */,
+ F60D047F1BD137B5003ACB00 /* heart_filled.png in Resources */,
+ F60D04831BD137B5003ACB00 /* target_filled.png in Resources */,
6167CA37142A6ED7003DD50F /* bot0.png in Resources */,
6167CA38142A6ED7003DD50F /* bot0@2x.png in Resources */,
6167CA39142A6ED7003DD50F /* bot1.png in Resources */,
6167CA3A142A6ED7003DD50F /* bot1@2x.png in Resources */,
6167CA3B142A6ED7003DD50F /* bot2.png in Resources */,
6167CA3C142A6ED7003DD50F /* bot2@2x.png in Resources */,
+ F60D04851BD137B5003ACB00 /* target.png in Resources */,
6167CA3D142A6ED7003DD50F /* bot3.png in Resources */,
6167CA3E142A6ED7003DD50F /* bot3@2x.png in Resources */,
6167CA3F142A6ED7003DD50F /* bot4.png in Resources */,
@@ -1630,7 +1760,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "SOURCE_DIR=${PROJECT_DIR}/../../\n\n#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\n\necho \"Copying Data...\"\ncp -R ${SOURCE_DIR}/share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some other files\necho \"Fetching additional graphics...\"\nmkdir -p ${PROJECT_DIR}/Data/Graphics/Icons\ncp ${SOURCE_DIR}/QTfrontend/res/{btn*,icon*,StatsMedal*,ammopic*}.png ${PROJECT_DIR}/Data/Graphics/Icons/\ncp -R ${SOURCE_DIR}/project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons ${PROJECT_DIR}/Data/Graphics/\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg* -delete\nfind ${PROJECT_DIR}/Data -name *.psd -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\nfind ${PROJECT_DIR}/Data -name *.ts -delete\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/test*\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps and WIP themes (remember to check that no Map uses them)\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\nrm -rf ${PROJECT_DIR}/Data/Themes/{Beach,Digital}\n\n#delete all names, reserved hats and unused fonts\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\necho \"Handling audio files...\"\n#copy mono audio\ncp -R ${SOURCE_DIR}/project_files/AudioMono/* ${PROJECT_DIR}/Data/\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n#delete the main theme file\nrm -rf ${PROJECT_DIR}/Data/Music/main_theme.ogg\n\n#remove unused voices\nfor i in {Amazing,Brilliant,Bugger,Bungee,Cutitout,Drat,Excellent,Fire,FlawlessPossibility,Gonnagetyou,Grenade,Hmm,Justyouwait,Leavemealone,Ohdear,Ouch,Perfect,Revenge,Runaway,Solong,Thisoneismine,VictoryPossibility,Watchthis,Whatthe,Whoopsee}; do find Data/Sounds/voices/ -name $i.ogg -delete; done\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nfor i in `ls ${PROJECT_DIR}/Data/Maps/`;\ndo \n if [[ `ls -f ${PROJECT_DIR}/Data/Maps/$i/map.lua 2> /dev/null` != '' ]];\n then\n mv ${PROJECT_DIR}/Data/Maps/$i ${PROJECT_DIR}/Data/Missions/Maps/;\n fi;\ndone;\n\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n\n#reduce the number of flakes for City\nsed -i -e 's/1500/50/' ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\necho \"Done\"";
+ shellScript = "SOURCE_DIR=${PROJECT_DIR}/../../\n\n#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\n\necho \"Copying Data...\"\ncp -R ${SOURCE_DIR}/share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some other files\necho \"Fetching additional graphics...\"\nmkdir -p ${PROJECT_DIR}/Data/Graphics/Icons\ncp ${SOURCE_DIR}/QTfrontend/res/{btn*,icon*,StatsMedal*,ammopic*}.png ${PROJECT_DIR}/Data/Graphics/Icons/\ncp -R ${SOURCE_DIR}/project_files/Android-build/SDL-android-project/assets/Data/Graphics/Buttons ${PROJECT_DIR}/Data/Graphics/\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg* -delete\nfind ${PROJECT_DIR}/Data -name *.psd -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\nfind ${PROJECT_DIR}/Data -name *.ts -delete\n\n#delete all CMake generated files\nfind ${PROJECT_DIR}/Data -name CMakeFiles -type d -exec rm -r {} +\nfind ${PROJECT_DIR}/Data -name Makefile -delete\nfind ${PROJECT_DIR}/Data -name *.cmake -delete\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/test*\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps and WIP themes (remember to check that no Map uses them)\nrm -rf ${PROJECT_DIR}/Data/Maps/{FlightJoust,ClimbHome}\nrm -rf ${PROJECT_DIR}/Data/Themes/{Beach,Digital}\n\n#delete all names, reserved hats and unused fonts\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\necho \"Handling audio files...\"\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n#delete the main theme file\nrm -rf ${PROJECT_DIR}/Data/Music/main_theme.ogg\n\n#remove unused voices\nfor i in {Amazing,Brilliant,Bugger,Bungee,Cutitout,Drat,Excellent,Fire,FlawlessPossibility,Gonnagetyou,Grenade,Hmm,Leavemealone,Ohdear,Ouch,Perfect,Revenge,Runaway,Solong,Thisoneismine,VictoryPossibility,Watchthis,Whatthe,Whoopsee}; do find Data/Sounds/voices/ -name $i.ogg -delete; done\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nfor i in `ls ${PROJECT_DIR}/Data/Maps/`;\ndo \n if [[ `ls -f ${PROJECT_DIR}/Data/Maps/$i/map.lua 2> /dev/null` != '' ]];\n then\n mv ${PROJECT_DIR}/Data/Maps/$i ${PROJECT_DIR}/Data/Missions/Maps/;\n fi;\ndone;\n\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n\n#reduce the number of flakes for City\nsed -i -e 's/1500/50/' ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\necho \"Done\"";
};
61806B78170B83EA00C601BC /* config.inc */ = {
isa = PBXShellScriptBuildPhase;
@@ -1676,7 +1806,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "# Compile Pascal Sources\n# 15sep06,ejo written.\n# 26 April 2007 - Jonas Maebe\n# * support for ppc64 and x86_64\n# * don't run when cleaning (in case running scripts when cleaning is ever fixed by Apple)\n# * split the options in FPC_COMMON_FLAGS (common to all configurations) and FPC_CFG_SPECIFIC_FLAGS (per configuration)\n# 4 January 2009 - Jonas Maebe\n# * support for ARM\n# 24 October 2009 - Jonas Maebe\n# * don't hardcode 2.3.1 in some cases anymore\n# 13 December 2009 (Jonas Maebe)\n# * use new FPC_COMPILER_BINARY_DIR setting to make it easier to change the used FPC version\n\nif [ x\"$ACTION\" != \"xbuild\" ]; then\n # in case running scripts during cleaning gets fixed\n exit 0\nfi\n\nif test ! -e \"$FPC_MAIN_FILE\"\nthen\n\techo error: FPC_MAIN_FILE not found \\($FPC_MAIN_FILE\\)\n\texit 2\nfi\n\nfor variant in $BUILD_VARIANTS\ndo\n\tfor arch in $ARCHS\n\tdo\n\t\ttargetos=darwin;\n\t\tcase $arch in\n arm64) fpc_arch=rossa64; fpc_rtl=aarch64 ;;\n armv7) fpc_arch=rossarm; fpc_rtl=arm ;;\n x86_64) fpc_arch=x64; fpc_rtl=x86_64; targetos=iphonesim ;;\n#\t\t\tppc) fpc_arch=ppc; fpc_rtl=powerpc ;;\n#\t\t\ti386) fpc_arch=386; fpc_rtl=i386; targetos=iphonesim ;;\n#\t\t\tppc64) fpc_arch=ppc64; fpc_rtl=powerpc64 ;;\n#\t\t\tx86_64) fpc_arch=x64; fpc_rtl=x86_64 ;;\n#\t\t\tarm*) fpc_arch=arm; fpc_rtl=arm ;;\n\t\t\t*) continue\n\t\tesac\n\n\t\tapp_target_temp_dir=$CONFIGURATION_TEMP_DIR/`basename \"$PROJECT_TEMP_DIR\"`\n\t\tout_dir=$app_target_temp_dir/`basename \"$DERIVED_SOURCES_DIR\"`-$variant/$arch\n\t\tfpccompiler=\"${FPC_COMPILER_BINARY_DIR}/ppc${fpc_arch}\"\n\t\tif test -e \"$fpccompiler\"\n\t\tthen\n\t\t\tfpcversion=`\"$fpccompiler\" -iV`\n\t\t\tmainunitdir=\"$FPC_RTL_UNITS_BASE/$fpcversion/units/${fpc_rtl}-${targetos}/\"\n\t\t\tmkdir -p \"$out_dir\"\n\t\t\tcd \"$out_dir\"\n\t\t\techo \"Compiling to $out_dir\"\n\t\t\trm -f compilefailed\n\t\n\t\t\t# delete any ppu files for which the \".s\" file was somehow deleted (Xcode does that sometimes in case of errors),\n\t\t\t# so that FPC will recompile the unit\n\t\t\tfor file in *.ppu\n\t\t\tdo\n\t\t\t\tasmname=`basename \"$file\" ppu`s\n\t\t\t\tif [ ! -f \"$asmname\" ]; then\n\t\t\t\t\t# can fail in case there are no .ppu files, since then it will try to erase the file with name '*.ppu'\n\t\t\t\t\t# -> use -f so it won't give an error message\n\t\t\t\t\trm -f \"$file\"\n\t\t\t\tfi\n\t\t\tdone\n\n\t\t\techo $fpccompiler -n -l -viwn -a -s -vbr -FE. $FPC_COMMON_OPTIONS $FPC_SPECIFIC_OPTIONS '\\' >ppccmd.sh\n\t\t\techo -Fi\\\"`dirname \"$FPC_MAIN_FILE\"`\\\" '\\' >>ppccmd.sh\n\t\t\techo -Fu\"$mainunitdir/*\" -Fu\"$mainunitdir/rtl\" '\\' >>ppccmd.sh\n\t\t\t# allow FPC_UNIT_PATHS to override default search directory\n\t\t\techo $FPC_UNIT_PATHS '\\' >>ppccmd.sh\n\t\t\techo \\\"$FPC_MAIN_FILE\\\" >>ppccmd.sh\n\t\t\t# cat ppccmd.sh\n\n\t\t\t/bin/sh ppccmd.sh\n\t\t\tif [ $? != 0 ]; then\n\t\t\t\ttouch \"$out_dir\"/compilefailed\n\t\t\t\texit 1\n\t\t\tfi\n\t\telse\n\t\t\ttouch \"$out_dir\"/compilefailed\n\t\t\techo $FPC_MAIN_FILE:1: error: 1: can\\'t compile for $arch \\(ppc${fpc_arch} not found\\)\n\t\t\texit 2\n\t\tfi\n\tdone\ndone\n";
+ shellScript = "# Compile Pascal Sources\n# 15sep06,ejo written.\n# 26 April 2007 - Jonas Maebe\n# * support for ppc64 and x86_64\n# * don't run when cleaning (in case running scripts when cleaning is ever fixed by Apple) (removed)\n# * split the options in FPC_COMMON_FLAGS (common to all configurations) and FPC_CFG_SPECIFIC_FLAGS (per configuration)\n# 4 January 2009 - Jonas Maebe\n# * support for ARM\n# 24 October 2009 - Jonas Maebe\n# * don't hardcode 2.3.1 in some cases anymore\n# 13 December 2009 (Jonas Maebe)\n# * use new FPC_COMPILER_BINARY_DIR setting to make it easier to change the used FPC version\n\nif test ! -e \"$FPC_MAIN_FILE\"\nthen\n\techo error: FPC_MAIN_FILE not found \\($FPC_MAIN_FILE\\)\n\texit 2\nfi\n\nfor variant in $BUILD_VARIANTS\ndo\n\tfor arch in $ARCHS\n\tdo\n\t\ttargetos=darwin;\n\t\tcase $arch in\n arm64) fpc_arch=rossa64; fpc_rtl=aarch64 ;;\n armv7) fpc_arch=rossarm; fpc_rtl=arm ;;\n x86_64) fpc_arch=x64; fpc_rtl=x86_64; targetos=iphonesim ;;\n#\t\t\tppc) fpc_arch=ppc; fpc_rtl=powerpc ;;\n#\t\t\ti386) fpc_arch=386; fpc_rtl=i386; targetos=iphonesim ;;\n#\t\t\tppc64) fpc_arch=ppc64; fpc_rtl=powerpc64 ;;\n#\t\t\tx86_64) fpc_arch=x64; fpc_rtl=x86_64 ;;\n#\t\t\tarm*) fpc_arch=arm; fpc_rtl=arm ;;\n\t\t\t*) continue\n\t\tesac\n\n\t\tapp_target_temp_dir=$CONFIGURATION_TEMP_DIR/`basename \"$PROJECT_TEMP_DIR\"`\n\t\tout_dir=$app_target_temp_dir/`basename \"$DERIVED_SOURCES_DIR\"`-$variant/$arch\n\t\tfpccompiler=\"${FPC_COMPILER_BINARY_DIR}/ppc${fpc_arch}\"\n\t\tif test -e \"$fpccompiler\"\n\t\tthen\n\t\t\tfpcversion=`\"$fpccompiler\" -iV`\n\t\t\tmainunitdir=\"$FPC_RTL_UNITS_BASE/$fpcversion/units/${fpc_rtl}-${targetos}/\"\n\t\t\tmkdir -p \"$out_dir\"\n\t\t\tcd \"$out_dir\"\n\t\t\techo \"Compiling to $out_dir\"\n\t\t\trm -f compilefailed\n\t\n\t\t\t# delete any ppu files for which the \".s\" file was somehow deleted (Xcode does that sometimes in case of errors),\n\t\t\t# so that FPC will recompile the unit\n\t\t\tfor file in *.ppu\n\t\t\tdo\n\t\t\t\tasmname=`basename \"$file\" ppu`s\n\t\t\t\tif [ ! -f \"$asmname\" ]; then\n\t\t\t\t\t# can fail in case there are no .ppu files, since then it will try to erase the file with name '*.ppu'\n\t\t\t\t\t# -> use -f so it won't give an error message\n\t\t\t\t\trm -f \"$file\"\n\t\t\t\tfi\n\t\t\tdone\n\n\t\t\techo $fpccompiler -n -l -viwn -a -s -vbr -FE. $FPC_COMMON_OPTIONS $FPC_SPECIFIC_OPTIONS '\\' >ppccmd.sh\n\t\t\techo -Fi\\\"`dirname \"$FPC_MAIN_FILE\"`\\\" '\\' >>ppccmd.sh\n\t\t\techo -Fu\"$mainunitdir/*\" -Fu\"$mainunitdir/rtl\" '\\' >>ppccmd.sh\n\t\t\t# allow FPC_UNIT_PATHS to override default search directory\n\t\t\techo $FPC_UNIT_PATHS '\\' >>ppccmd.sh\n\t\t\techo \\\"$FPC_MAIN_FILE\\\" >>ppccmd.sh\n\t\t\t# cat ppccmd.sh\n\n\t\t\t/bin/sh ppccmd.sh\n\t\t\tif [ $? != 0 ]; then\n\t\t\t\ttouch \"$out_dir\"/compilefailed\n\t\t\t\texit 1\n\t\t\tfi\n\t\telse\n\t\t\ttouch \"$out_dir\"/compilefailed\n\t\t\techo $FPC_MAIN_FILE:1: error: 1: can\\'t compile for $arch \\(ppc${fpc_arch} not found\\)\n\t\t\texit 2\n\t\tfi\n\tdone\ndone\n";
};
/* End PBXShellScriptBuildPhase section */
@@ -1692,6 +1822,7 @@
61798820114AA34C00BA94A9 /* uAIActions.pas in Sources */,
61798821114AA34C00BA94A9 /* uAIAmmoTests.pas in Sources */,
61798822114AA34C00BA94A9 /* uAIMisc.pas in Sources */,
+ F6BA38461BA7A834005D16EA /* GameLogViewController.m in Sources */,
61798823114AA34C00BA94A9 /* uAmmos.pas in Sources */,
61798824114AA34C00BA94A9 /* uChat.pas in Sources */,
61798825114AA34C00BA94A9 /* uCollisions.pas in Sources */,
@@ -1704,6 +1835,7 @@
6179882D114AA34C00BA94A9 /* uLand.pas in Sources */,
6179882E114AA34C00BA94A9 /* uLandGraphics.pas in Sources */,
6179882F114AA34C00BA94A9 /* uLandObjects.pas in Sources */,
+ F6756D801BD8550500B6AB6B /* LabelWithIBLocalization.m in Sources */,
61798830114AA34C00BA94A9 /* uLandTemplates.pas in Sources */,
F6D7E0C31B768F19004F3BCF /* uLandGenTemplateBased.pas in Sources */,
61798831114AA34C00BA94A9 /* uLandTexture.pas in Sources */,
@@ -1732,7 +1864,6 @@
6165921B11CA9BA200D6E256 /* SchemeWeaponConfigViewController.m in Sources */,
6165921C11CA9BA200D6E256 /* SingleSchemeViewController.m in Sources */,
6165921D11CA9BA200D6E256 /* SingleTeamViewController.m in Sources */,
- 6165921E11CA9BA200D6E256 /* SettingsContainerViewController.m in Sources */,
6165921F11CA9BA200D6E256 /* TeamConfigViewController.m in Sources */,
6165922011CA9BA200D6E256 /* TeamSettingsViewController.m in Sources */,
6165922111CA9BA200D6E256 /* VoicesViewController.m in Sources */,
@@ -1755,10 +1886,12 @@
61006F95128DE31F00EBA7F7 /* CreationChamber.m in Sources */,
61A4A39412A5CCC2004D81E6 /* uCommandHandlers.pas in Sources */,
61A4A39512A5CCC2004D81E6 /* uCommands.pas in Sources */,
+ F6448CE31BD2E00500C31C8C /* TableViewControllerWithDoneButton.m in Sources */,
61A4A39612A5CCC2004D81E6 /* uDebug.pas in Sources */,
61A4A39712A5CCC2004D81E6 /* uGearsRender.pas in Sources */,
61A4A39812A5CCC2004D81E6 /* uRender.pas in Sources */,
61A4A39912A5CCC2004D81E6 /* uRenderUtils.pas in Sources */,
+ F6F7DA8F1BE18F5700432EA7 /* UITableViewCell+FindTable.m in Sources */,
61A4A39A12A5CCC2004D81E6 /* uSinTable.pas in Sources */,
61A4A39B12A5CCC2004D81E6 /* uTextures.pas in Sources */,
61A4A39C12A5CCC2004D81E6 /* uTypes.pas in Sources */,
@@ -1767,12 +1900,12 @@
61A4A3A212A5CD56004D81E6 /* uCaptions.pas in Sources */,
61E5D68D12AB006F00566F29 /* uLandPainted.pas in Sources */,
61F544C712AF1748007FD913 /* HoldTableViewCell.m in Sources */,
- 61AC067412B2E32D000B52A2 /* Appirater.m in Sources */,
61E2E12E12BAAEE30051B659 /* ServerProtocolNetwork.m in Sources */,
61B7A33812CC21080086B604 /* StatsPageViewController.m in Sources */,
F6D7E0C41B768F19004F3BCF /* uLandUtils.pas in Sources */,
61EDB5B0135B3F97009B29A6 /* GameInterfaceBridge.m in Sources */,
61A976B3136F668500DD9878 /* uCursor.pas in Sources */,
+ F67FC8121BEC06E700A9DC75 /* Appirater.m in Sources */,
6167A6761391514600AA6D07 /* RestoreViewController.m in Sources */,
61C28D3F142D380400DA16C2 /* AudioManagerController.m in Sources */,
611D7A50142FDCD3006E0798 /* uTouch.pas in Sources */,
@@ -1868,6 +2001,7 @@
61C6783F14B3DD020087425A /* Portuguese */,
6154A53114C37E4A00F6EEF6 /* Romanian */,
F65725291B7EB9CC00A86262 /* ru */,
+ F67FC81F1BEC280D00A9DC75 /* tr */,
);
name = About.strings;
sourceTree = "<group>";
@@ -1887,6 +2021,7 @@
61C6784B14B3DD0B0087425A /* Portuguese */,
6154A53E14C37E5400F6EEF6 /* Romanian */,
F657252A1B7EB9CC00A86262 /* ru */,
+ F67FC8201BEC280D00A9DC75 /* tr */,
);
name = Localizable.strings;
sourceTree = "<group>";
@@ -1906,6 +2041,7 @@
61C6784C14B3DD140087425A /* Portuguese */,
6154A54014C37EB100F6EEF6 /* Romanian */,
F657252B1B7EB9CC00A86262 /* ru */,
+ F67FC8211BEC280D00A9DC75 /* tr */,
);
name = Scheme.strings;
sourceTree = "<group>";
@@ -1916,24 +2052,32 @@
1D6058940D05DD3E006BFB54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_DYNAMIC_NO_PIC = NO;
GCC_GENERATE_TEST_COVERAGE_FILES = YES;
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Hedgewars_Prefix.pch;
INFOPLIST_FILE = Info.plist;
+ PRODUCT_BUNDLE_IDENTIFIER = org.hedgewars.mobile;
PRODUCT_NAME = Hedgewars;
+ PROVISIONING_PROFILE = "";
};
name = Debug;
};
1D6058950D05DD3E006BFB54 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Hedgewars_Prefix.pch;
INFOPLIST_FILE = Info.plist;
+ PRODUCT_BUNDLE_IDENTIFIER = org.hedgewars.mobile;
PRODUCT_NAME = Hedgewars;
+ PROVISIONING_PROFILE = "";
};
name = Release;
};
@@ -1952,12 +2096,13 @@
CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FPC_COMMON_OPTIONS = "-l- -dIPHONEOS -Cs2000000 -B -vwi -Sgix -Fi${PROJECT_DIR}";
FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/3.1.1;
FPC_MAIN_FILE = "$(PROJECT_DIR)/../../hedgewars/hwLibrary.pas";
FPC_RTL_UNITS_BASE = /usr/local/lib/fpc;
- FPC_SPECIFIC_OPTIONS = "-Ci- -Cr- -Co- -Os -Xs -dNOCONSOLE";
+ FPC_SPECIFIC_OPTIONS = "-Ci- -Cr- -Co- -O2 -Xs -dNOCONSOLE";
FPC_UNITS_PATH = "-Fu\"$(PROJECT_DIR)\"";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_DEBUGGING_SYMBOLS = default;
@@ -1967,7 +2112,6 @@
GCC_OPTIMIZATION_LEVEL = s;
GCC_PREPROCESSOR_DEFINITIONS = "";
GCC_STRICT_ALIASING = YES;
- GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -1993,14 +2137,11 @@
"\"$(SRCROOT)/../../../Library/SDL_net/\"",
"\"$(SRCROOT)/../../../Library/SDL_mixer/\"",
);
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LLVM_LTO = NO;
ONLY_ACTIVE_ARCH = NO;
OTHER_CODE_SIGN_FLAGS = "";
- OTHER_LDFLAGS = (
- "-lz",
- "-Wl,-no_order_inits",
- );
+ OTHER_LDFLAGS = "-lz";
PREBINDING = NO;
PROVISIONING_PROFILE = "";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
@@ -2020,11 +2161,15 @@
61022D7D12305A2800B08935 /* Distro AppStore */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Hedgewars_Prefix.pch;
INFOPLIST_FILE = Info.plist;
+ PRODUCT_BUNDLE_IDENTIFIER = org.hedgewars.mobile;
PRODUCT_NAME = Hedgewars;
+ PROVISIONING_PROFILE = "";
};
name = "Distro AppStore";
};
@@ -2068,6 +2213,7 @@
CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FPC_COMMON_OPTIONS = "-l- -dIPHONEOS -Cs2000000 -B -vwi -Sgix -Fi${PROJECT_DIR}";
FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/3.1.1;
@@ -2077,13 +2223,12 @@
FPC_UNITS_PATH = "-Fu\"$(PROJECT_DIR)\"";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_DEBUGGING_SYMBOLS = full;
- GCC_DYNAMIC_NO_PIC = YES;
+ GCC_DYNAMIC_NO_PIC = NO;
GCC_FAST_MATH = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
GCC_STRICT_ALIASING = YES;
- GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -2109,11 +2254,12 @@
"\"$(SRCROOT)/../../../Library/SDL_net/\"",
"\"$(SRCROOT)/../../../Library/SDL_mixer/\"",
);
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = (
"-lz",
- "-Wl,-no_order_inits",
+ "-framework",
+ MessageUI,
);
PREBINDING = NO;
PROVISIONING_PROFILE = "";
@@ -2134,11 +2280,15 @@
6137064C117B1CB3004EE44A /* Distro Adhoc */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Hedgewars_Prefix.pch;
INFOPLIST_FILE = Info.plist;
+ PRODUCT_BUNDLE_IDENTIFIER = org.hedgewars.mobile;
PRODUCT_NAME = Hedgewars;
+ PROVISIONING_PROFILE = "";
};
name = "Distro Adhoc";
};
@@ -2227,7 +2377,9 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
FPC_COMMON_OPTIONS = "-l- -dIPHONEOS -Cs2000000 -B -vwi -Sgix -Fi${PROJECT_DIR}";
FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/3.1.1;
FPC_MAIN_FILE = "$(PROJECT_DIR)/../../hedgewars/hwLibrary.pas";
@@ -2242,7 +2394,6 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
GCC_STRICT_ALIASING = YES;
- GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -2268,11 +2419,12 @@
"\"$(SRCROOT)/../../../Library/SDL_net/\"",
"\"$(SRCROOT)/../../../Library/SDL_mixer/\"",
);
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
"-lz",
- "-Wl,-no_order_inits",
+ "-framework",
+ MessageUI,
);
PREBINDING = NO;
PROVISIONING_PROFILE = "";
@@ -2306,12 +2458,13 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FPC_COMMON_OPTIONS = "-l- -dIPHONEOS -Cs2000000 -B -vwi -Sgix -Fi${PROJECT_DIR}";
FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/3.1.1;
FPC_MAIN_FILE = "$(PROJECT_DIR)/../../hedgewars/hwLibrary.pas";
FPC_RTL_UNITS_BASE = /usr/local/lib/fpc;
- FPC_SPECIFIC_OPTIONS = "-Ci- -Cr- -Co- -Os -Xs -dDEBUGFILE";
+ FPC_SPECIFIC_OPTIONS = "-Ci- -Cr- -Co- -O2 -Xs -dDEBUGFILE";
FPC_UNITS_PATH = "-Fu\"$(PROJECT_DIR)\"";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_DEBUGGING_SYMBOLS = default;
@@ -2321,7 +2474,6 @@
GCC_OPTIMIZATION_LEVEL = s;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
GCC_STRICT_ALIASING = YES;
- GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
@@ -2347,12 +2499,13 @@
"\"$(SRCROOT)/../../../Library/SDL_net/\"",
"\"$(SRCROOT)/../../../Library/SDL_mixer/\"",
);
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LLVM_LTO = NO;
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = (
"-lz",
- "-Wl,-no_order_inits",
+ "-framework",
+ MessageUI,
);
PREBINDING = NO;
PROVISIONING_PROFILE = "";
--- a/project_files/HedgewarsMobile/Info.plist Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Info.plist Mon Nov 09 16:34:03 2015 +0000
@@ -21,7 +21,7 @@
<string>Icon-76@2x.png</string>
</array>
<key>CFBundleIdentifier</key>
- <string>com.AC27.Hedgewars</string>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
@@ -40,6 +40,8 @@
<string>Default-ipad</string>
<key>UIPrerenderedIcon</key>
<true/>
+ <key>UIRequiresFullScreen</key>
+ <true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations~ipad</key>
Binary file project_files/HedgewarsMobile/Locale/English.lproj/About.strings has changed
Binary file project_files/HedgewarsMobile/Locale/English.lproj/Localizable.strings has changed
Binary file project_files/HedgewarsMobile/Locale/English.lproj/Scheme.strings has changed
Binary file project_files/HedgewarsMobile/Locale/ru.lproj/About.strings has changed
Binary file project_files/HedgewarsMobile/Locale/ru.lproj/Localizable.strings has changed
Binary file project_files/HedgewarsMobile/Locale/ru.lproj/Scheme.strings has changed
Binary file project_files/HedgewarsMobile/Locale/tr.lproj/About.strings has changed
Binary file project_files/HedgewarsMobile/Locale/tr.lproj/Localizable.strings has changed
Binary file project_files/HedgewarsMobile/Locale/tr.lproj/Scheme.strings has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/bullet.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/bullet@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/bullet_filled.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/bullet_filled@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/flower.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/flower@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/flower_filled.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/flower_filled@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/heart.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/heart@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/heart_filled.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/heart_filled@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/target.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/target@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/target_filled.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/target_filled@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/teams.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/teams@2x.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/teams_filled.png has changed
Binary file project_files/HedgewarsMobile/Resources/Icons/teams_filled@2x.png has changed
--- a/project_files/HedgewarsMobile/Resources/basicFlags.plist Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Resources/basicFlags.plist Mon Nov 09 16:34:03 2015 +0000
@@ -266,5 +266,41 @@
<key>title</key>
<string>Get Away Time (%)</string>
</dict>
+ <dict>
+ <key>checkOverMax</key>
+ <false/>
+ <key>times1000</key>
+ <false/>
+ <key>command</key>
+ <string>e$airmines</string>
+ <key>default</key>
+ <integer>0</integer>
+ <key>image</key>
+ <string>Mine</string>
+ <key>max</key>
+ <integer>80</integer>
+ <key>min</key>
+ <integer>0</integer>
+ <key>title</key>
+ <string>Air Mines</string>
+ </dict>
+ <dict>
+ <key>checkOverMax</key>
+ <false/>
+ <key>times1000</key>
+ <false/>
+ <key>command</key>
+ <string>e$worldedge</string>
+ <key>default</key>
+ <integer>0</integer>
+ <key>image</key>
+ <string>Earth</string>
+ <key>max</key>
+ <integer>3</integer>
+ <key>min</key>
+ <integer>0</integer>
+ <key>title</key>
+ <string>World Edge</string>
+ </dict>
</array>
</plist>
--- a/project_files/HedgewarsMobile/Resources/credits.plist Tue Oct 06 13:28:11 2015 +0200
+++ b/project_files/HedgewarsMobile/Resources/credits.plist Mon Nov 09 16:34:03 2015 +0000
@@ -3,9 +3,9 @@
<plist version="1.0">
<array>
<array>
- <string>Andrey "UnC0Rr" Korotaev</string>
+ <string>Andrey "unC0Rr" Korotaev</string>
<string>Igor "Displacer" Ulyanov</string>
- <string>Derek "Nemo" Pomery</string>
+ <string>Derek "nemo" Pomery</string>
<string>Martin "Affect" Boze</string>
<string>David "Krawek" Cuadrado</string>
<string>Martin "Ttsmj" Minarik</string>
@@ -13,12 +13,20 @@
<string>Vittorio "Koda" Giovara</string>
<string>Mario "Smaxx" Liebisch</string>
<string>Carlos "Palewolf" Vives</string>
- <string>Richard "Sheepluva" Korlyi</string>
+ <string>Richard "sheepluva" Karolyi</string>
<string>Henning "Prg" Kühn</string>
<string>Henrik "Henek" Rostedt</string>
- <string>John "Mikade" Lambert</string>
+ <string>John "mikade" Lambert</string>
<string>Mayur "Zorg" Pawashe</string>
<string>Richard "Xeli" Deurwaarder</string>
+ <string>Simeon Maxein</string>
+ <string>Meng Xiangyun</string>
+ <string>Stepan Podoskin</string>
+ <string>Szabolcs Orbàn</string>
+ <string>Drew Gottlieb</string>
+ <string>Ondrej Skopek</string>
+ <string>Julia Struchenko</string>
+ <string>Anton "antonc27" Malmygin</string>
</array>
<array>
<string>John "Fizzy" Dum</string>
@@ -26,7 +34,8 @@
<string>Stanko Tadić</string>
<string>Julien Koesten</string>
<string>Joshua O'Sullivan</string>
- <string>Nils Luck</string>
+ <string>Nils Lück</string>
+ <string>Guillaume Englert</string>
<string>Trey Perry</string>
</array>
<array>
@@ -42,16 +51,16 @@
<string>Jie Luo</string>
<string>Andrey Korotaev</string>
<string>Nina Kuisma</string>
- <string>Antoine Turmel</string>
- <string>Peter Hüwe, Mario Liebisch, Richard Karolyi</string>
+ <string>Antoine Turmel, Clement Woitrain, Matisumi</string>
+ <string>Peter Hüwe, Mario Liebisch, Richard Karolyi, Wuzzy</string>
<string>Talos Kriti</string>
- <string>Luca Bonora, Marco Bresciani</string>
- <string>Adam Etienne</string>
+ <string>Luca Bonora, Marco Bresciani, Gianfranco Costamagna</string>
+ <string>Adam Etienne, Marco Bresciani</string>
<string>Anthony Bellew</string>
<string>Lukas Urbonas</string>
<string>Maciej Mroziński, Wojciech Latkowski, Piotr Mitana, Maciej Górny</string>
<string>Fábio Canário</string>
- <string>Andrey Korotaev</string>
+ <string>Andrey Korotaev, Vitaly Novichkov, Anton Malmygin</string>
<string>Jose Riha</string>
<string>Carlos Vives</string>
<string>Niklas Grahn, Henrik Rostedt</string>
@@ -80,6 +89,14 @@
<string>Lua game modes and missions</string>
<string>Desktop frontend improvements</string>
<string>Android port</string>
+ <string>Android netplay, portability abstraction</string>
+ <string>WebGL port, some pas2c and GLES2 work</string>
+ <string>Video recording</string>
+ <string>Campaign support, first campaign</string>
+ <string>Keybinds, feedback, maps and hats interfaces</string>
+ <string>Login dialogs, frontend improvements</string>
+ <string>Icegun weapon</string>
+ <string>Current developer of iPhone/iPad versions</string>
</array>
<array>
<string>Main graphics</string>
@@ -88,6 +105,7 @@
<string></string>
<string></string>
<string></string>
+ <string></string>
<string>Some hats</string>
</array>
<array>
--- a/share/hedgewars/Data/Locale/en.txt Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Locale/en.txt Mon Nov 09 16:34:03 2015 +0000
@@ -86,6 +86,7 @@
01:22=AFK mode
01:23=Auto Camera Off
01:24=Auto Camera On
+01:25=Press the target button to mark the target
; Event messages
; Hog (%1) died
--- a/share/hedgewars/Data/Locale/missions_ru.txt Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Locale/missions_ru.txt Mon Nov 09 16:34:03 2015 +0000
@@ -4,17 +4,23 @@
Basic_Training_-_Grenade.name=Базовое упражнение с гранатой
Basic_Training_-_Grenade.desc="Запомни: выдерни чеку и бросай!"
+Basic_Training_-_Cluster_Bomb.name=Базовое упражнение с касcетной бомбой
+Basic_Training_-_Cluster_Bomb.desc="Кому-то нужен горячий душ!"
+
Basic_Training_-_Shotgun.name=Базовое упражнение с ружьём
Basic_Training_-_Shotgun.desc="Стреляй, все вопросы потом!"
Basic_Training_-_Sniper_Rifle.name=Базовое упражнение со снайперской винтовкой
Basic_Training_-_Sniper_Rifle.desc="БАХ, в яблочко!"
-User_Mission_-_Dangerous_Ducklings.name=Миссия: Dangerous Ducklings
+Basic_Training_-_Rope.name=Базовое упражнение с верёвкой
+Basic_Training_-_Rope.desc="Раскачивайся и цепляйся!"
+
+User_Mission_-_Dangerous_Ducklings.name=Миссия: Опасные Утята
User_Mission_-_Dangerous_Ducklings.desc="Ну что, новобранцы! Пора на практике проверить, чему вы научились на базовых упражнениях!"
User_Mission_-_Diver.name=Миссия: Ныряльщик
-User_Mission_-_Diver.desc="This 'amphibious assault' thing is harder than it looks..."
+User_Mission_-_Diver.desc="'Морской десант' это сложнее, чем кажется..."
User_Mission_-_Teamwork.name=Миссия: Командная работа
User_Mission_-_Teamwork.desc="Иногда любовь ранит."
@@ -22,11 +28,56 @@
User_Mission_-_Spooky_Tree.name=Миссия: Зловещее дерево
User_Mission_-_Spooky_Tree.desc="Здесь много ящиков. Конечно, я уверен, что эта птица не голодна."
-User_Mission_-_Bamboo_Thicket.name=Миссия: Bamboo Thicket
+User_Mission_-_Bamboo_Thicket.name=Миссия: Заросли Бамбука
User_Mission_-_Bamboo_Thicket.desc="Смерть приходит сверху."
-User_Mission_-_That_Sinking_Feeling.name=Миссия: That Sinking Feeling
+User_Mission_-_That_Sinking_Feeling.name=Миссия: Дед Мазай и Ёжики
User_Mission_-_That_Sinking_Feeling.desc="Вода быстро поднимается, а время ограничено. Многие пытались без успеха. Сможешь ли ты спасти всех?"
User_Mission_-_Newton_and_the_Hammock.name=Миссия: Ньютон и гамак
User_Mission_-_Newton_and_the_Hammock.desc="Ежата, запомните: Скорость тела остаётся постоянной, пока к нему не применяется внешняя сила!"
+
+User_Mission_-_The_Great_Escape.name=Миссия: Великий Побег
+User_Mission_-_The_Great_Escape.desc="Вы думаете, клетка меня остановит!?"
+
+User_Mission_-_Rope_Knock_Challenge.name=Испытание: Толчок Верёвкой
+User_Mission_-_Rope_Knock_Challenge.desc="Оглянись!"
+
+User_Mission_-_Nobody_Laugh.name=Миссия: Никто не смеётся
+User_Mission_-_Nobody_Laugh.desc="Это не шутка ли."
+
+User_Mission_-_RCPlane_Challenge.name=Испытание: Радиоуправляемый самолёт
+User_Mission_-_RCPlane_Challenge.desc="Чувствешь себя довольно уверенно, а, пилотишко?"
+
+portal.name=Миссия: Портальная головоломка
+portal.desc="Используй портал для перемещения, используй его для убийства, используй его с осторожностью!"
+
+Target_Practice_-_Bazooka_easy.name=Учебная Стрельба: Базука (легко)
+Target_Practice_-_Bazooka_easy.desc="Хорошо, солдат, взорви эти цели так быстро, как сможешь!"
+
+Target_Practice_-_Bazooka_hard.name=Учебная Стрельба: Базука (сложно)
+Target_Practice_-_Bazooka_hard.desc="Сможешь ли ты попасть в цели даже если они далеко?"
+
+Target_Practice_-_Cluster_Bomb.name=Учебная Стрельба: Касcетная бомба
+Target_Practice_-_Cluster_Bomb.desc="Кому-то нужен горячий душ!"
+
+Target_Practice_-_Shotgun.name=Учебная Стрельба: Дробовик
+Target_Practice_-_Shotgun.desc="Сначала стреляй, потом спрашивай!"
+
+Target_Practice_-_Homing_Bee.name=Учебная Стрельба: Пчёлка
+Target_Practice_-_Homing_Bee.desc="Использование пчёлки сложнее, чем может показаться на первый взгляд."
+
+Target_Practice_-_Grenade_easy.name=Учебная Стрельба: Граната (легко)
+Target_Practice_-_Grenade_easy.desc="Разминочная тренировка для чистолюбивого гренадера."
+
+Target_Practice_-_Grenade_hard.name=Учебная Стрельба: Граната (сложно)
+Target_Practice_-_Grenade_hard.desc="Это точно не для молокососов! Мы поместили цели в действительно труднодоступные места."
+
+Challenge_-_Speed_Shoppa_-_Hedgelove.name=Испытание: Shoppa Love
+Challenge_-_Speed_Shoppa_-_Hedgelove.desc="Покажите вашу любовь к верёвке и соберите несколько ящиков на маленькой карте."
+
+Challenge_-_Speed_Shoppa_-_Ropes.name=Испытание: Верёвки и Ящики
+Challenge_-_Speed_Shoppa_-_Ropes.desc="Возьмите вашу верёвку и соберите все ящики на этой средних размеров карте."
+
+Challenge_-_Speed_Shoppa_-_ShoppaKing.name=Испытание: Покупатель это Король
+Challenge_-_Speed_Shoppa_-_ShoppaKing.desc="Докажите, что вы настоящий король и соберите все ящики на этой огромной карте так быстро, как сможете."
\ No newline at end of file
--- a/share/hedgewars/Data/Locale/ru.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Locale/ru.lua Mon Nov 09 16:34:03 2015 +0000
@@ -4,15 +4,18 @@
-- ["..."] = "",
-- ["011101000"] = "", -- A_Classic_Fairytale:dragon
-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united
--- ["+1 to a Bottom Feeder for killing anyone"] = "", -- Mutant
--- ["+1 to a Mutant for killing anyone"] = "", -- Mutant
--- ["-1 to anyone for a suicide"] = "", -- Mutant
--- ["+2 for becoming a Mutant"] = "", -- Mutant
+ ["+1 to a Bottom Feeder for killing anyone"] = "+1 Аутсайдеру за убийство", -- Mutant
+ ["+1 to a Mutant for killing anyone"] = "+1 Мутанту за убийство", -- Mutant
+ ["-1 to anyone for a suicide"] = "-1 за самоубийство", -- Mutant
+ ["+2 for becoming a Mutant"] = "+2 за то, что стал Мутантом", -- Mutant
-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow
-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy
- ["Accuracy Bonus!"] = "Бонус за аккуратность!",
--- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge
--- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler
+ ["Above-average pilot"] = "Пилот выше среднего", -- User_Mission_-_RCPlane_Challenge
+ ["Accuracy Bonus!"] = "Бонус за точность!",
+ ["Accuracy bonus: +%d points"] = "Бонус за точность: +%d очков", -- Basic_Training_-_Sniper_Rifle
+ ["Ace"] = "Ас", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge
+ ["Achievement obtained: Lively Lifeguard"] = "Достижение получено: Живучий Спасатель", -- User_Mission_-_That_Sinking_Feeling
+ ["Achievement Unlocked"] = "Достижение Разблокировано", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler
-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood
-- ["???"] = "", -- A_Classic_Fairytale:backstab
-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow
@@ -24,22 +27,23 @@
-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood
-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow
-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy
--- ["Aggressively removes enemy hedgehogs."] = "", -- Construction_Mode
--- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge
+ ["Aggressively removes enemy hedgehogs."] = "Агрессивно уничтожает вражеских ежей.", -- Construction_Mode
+ ["a Hedgewars challenge"] = "Hedgewars испытание", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge
["a Hedgewars mini-game"] = "Мини-игра в Hedgewars", -- Space_Invasion, The_Specialists
--- ["a Hedgewars tag game"] = "", -- Mutant
+ ["a Hedgewars tag game"] = "Ролевая игра в Hedgewars", -- Mutant
-- ["AHHh, home sweet home. Made it in %d seconds."] = "", -- ClimbHome
["Aiming Practice"] = "Упражнение на точность", --Bazooka, Shotgun, SniperRifle
--- ["Air Attack"] = "", -- Construction_Mode
+ ["Aiming practice"] = "Упражнение на точность", -- TargetPractice
+ ["Air Attack"] = "Воздушная атака", -- Construction_Mode
-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood
-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow
-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy
--- ["Allows free teleportation between other nodes."] = "", -- Construction_Mode
--- ["Allows placement of girders, rubber-bands, mines, sticky mines and barrels."] = "", -- Construction_Mode
+ ["Allows free teleportation between other nodes."] = "Позволяет телепортироваться между другими узлами.", -- Construction_Mode
+ ["Allows placement of girders, rubber-bands, mines, sticky mines and barrels."] = "Позволяет размещать балки, батуты, мины, мины-липучки и бочки.", -- Construction_Mode
-- ["Allows placement of structures."] = "", -- Construction_Mode
--- ["Allows the placement of weapons, utiliites, and health crates."] = "", -- Construction_Mode
+ ["Allows the placement of weapons, utiliites, and health crates."] = "Позволяет размещать ящики с оружием, утилитами и аптечки.", -- Construction_Mode
-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey
--- ["All walls touched!"] = "", -- WxW
+ ["All walls touched!"] = "Все стены тронуты!", -- WxW
-- ["Ammo"] = "",
-- ["Ammo Depleted!"] = "",
-- ["ammo extended!"] = "",
@@ -62,51 +66,58 @@
-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy
-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen
-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon
--- ["a shoppa minigame"] = "", -- WxW
+ ["a shoppa minigame"] = "shoppa мини-игра", -- WxW
-- ["Asia"] = "", -- Continental_supplies
-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab
-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon
-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood
-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon
--- ["Attack From Rope"] = "", -- WxW
+ ["Attack From Rope"] = "Атака с верёвки", -- WxW
-- ["Australia"] = "", -- Continental_supplies
--- ["Available points remaining: "] = "",
+ ["Available points remaining: "] = "Осталось точек для размещения: ",
+ ["Average pilot"] = "Средний Пилот", -- User_Mission_-_RCPlane_Challenge
-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab
-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united
-- ["[Backspace]"] = "",
-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab
--- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape
--- ["Ballgun"] = "", -- Construction_Mode
--- ["Bamboo Thicket"] = "",
+ ["Bad Guy"] = "Плохой", -- User_Mission_-_The_Great_Escape
+ ["badmad"] = "Злодеи", -- portal
+ ["Bad Team"] = "Злодеи", -- User_Mission_-_The_Great_Escape
+ ["Ballgun"] = "Шаромёт", -- Construction_Mode
+ ["Bamboo Thicket"] = "Заросли Бамбука", -- User_Mission_-_Bamboo_Thicket
-- ["Barrel Eater!"] = "",
-- ["Barrel Launcher"] = "",
--- ["Barrel Placement Mode"] = "", -- Construction_Mode
--- ["Baseball Bat"] = "", -- Construction_Mode
+ ["Barrel Placement Mode"] = "Режим Размещения Бочек", -- Construction_Mode
+ ["Baseball Bat"] = "Бейсбольная бита", -- Construction_Mode
-- ["Baseballbat"] = "", -- Continental_supplies
--- ["Bat balls at your enemies and|push them into the sea!"] = "",
--- ["Bat your opponents through the|baskets and out of the map!"] = "",
--- ["Bazooka"] = "", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
- ["Bazooka Training"] = "Упражнение с базукой",
+ ["Bat balls at your enemies and|push them into the sea!"] = "Сбей своих соберников|бейсбольными мячами в воду!",
+ ["Bat your opponents through the|baskets and out of the map!"] = "Выбей своих соберников через корзину в воду!",
+ ["Bazooka"] = "Базука", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
+ ["Bazooka Training"] = "Тренировка с базукой",
-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen
+ ["Beginner"] = "Новичок", -- User_Mission_-_RCPlane_Challenge
+ ["Below-average pilot"] = "Пилот ниже среднего", -- User_Mission_-_RCPlane_Challenge
-- ["Best laps per team: "] = "",
--- ["Best Team Times: "] = "",
+ ["Best Team Times: "] = "ЛУЧШЕЕ ВРЕМЯ КОМАНДЫ: ",
-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon
--- ["Bio-Filter"] = "", -- Construction_Mode
+ ["Bio-Filter"] = "Био-Фильтр", -- Construction_Mode
-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family
--- ["Birdy"] = "", -- Construction_Mode
+ ["Birdy"] = "Птичка", -- Construction_Mode
-- ["Blender"] = "", -- A_Classic_Fairytale:family
-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab
-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow
-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow
--- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
--- ["Blowtorch"] = "", -- Construction_Mode, Frenzy
--- ["Blue Team"] = "", -- User_Mission_-_Dangerous_Ducklings
+ ["Bloody Rookies"] = "Новобранцы", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+ ["Blowtorch"] = "Бур", -- Construction_Mode, Frenzy
+ ["Blue Team"] = "Синяя Команда", -- User_Mission_-_Dangerous_Ducklings
+ ["Bobo"] = "Бобо", -- User_Mission_-_Nobody_Laugh
-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab
-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow
["BOOM!"] = "БАБАХ!",
["Boom!"] = "Бум!",
-- ["Boss defeated!"] = "",
-- ["Boss Slayer!"] = "",
+ ["BOTTOM FEEDER"] = "АУТСАЙДЕР", -- Mutant
-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey
-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow
-- ["Brainila"] = "", -- A_Classic_Fairytale:united
@@ -114,8 +125,8 @@
-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab
-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil
-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab
--- ["Build a fortress and destroy your enemy."] = "", -- Construction_Mode
--- ["Build a track and race."] = "",
+ ["Build a fortress and destroy your enemy."] = "Постройте крепость и уничтожьте своего врага.", -- Construction_Mode
+ ["Build a track and race."] = "Постройте трек и гоняйте!",
-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon
-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon
-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab
@@ -125,64 +136,78 @@
-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab
-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy
-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey
--- ["Cake"] = "", -- Construction_Mode
+-- ["C-1"] = "", -- portal
+-- ["C-2"] = "", -- portal
+ ["Cake"] = "Торт", -- Construction_Mode
-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family
-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood
-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey
-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy
["CAPTURE THE FLAG"] = "ЗАХВАТ ФЛАГА",
--- ["Careless"] = "",
+ ["Careless"] = "Беспечный",
-- ["Carol"] = "", -- A_Classic_Fairytale:family
--- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge
+ ["Challenge"] = "Испытание", -- SpeedShoppa
+ ["CHALLENGE COMPLETE"] = "МИССИЯ ПРОЙДЕНА", -- User_Mission_-_RCPlane_Challenge
+ ["Challenge completed!"] = "Испытание пройдено!", -- SpeedShoppa
+ ["Challenge failed!"] = "Испытание провалено!", -- SpeedShoppa
["Change Weapon"] = "Сменить оружие",
-- ["changing range from %i%% to %i%% with period of %i msec"] = "", -- Gravity
+ ["Cheater"] = "Читер", -- User_Mission_-_RCPlane_Challenge
-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow
--- ["Cleaver"] = "", -- Construction_Mode
+ ["Cleaver"] = "Секач", -- Construction_Mode
-- ["Cleaver Placement Mode"] = "", -- Construction_Mode
-- ["Climber"] = "", -- ClimbHome
-- ["Climb Home"] = "", -- ClimbHome
--- ["Clowns"] = "", -- User_Mission_-_Nobody_Laugh
--- ["Clumsy"] = "",
--- ["Cluster Bomb"] = "", -- Construction_Mode
--- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb
--- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb
--- ["Codename: Teamwork"] = "",
+ ["Clowns"] = "Клоуны", -- User_Mission_-_Nobody_Laugh
+ ["Clumsy"] = "Неуклюжий",
+ ["Cluster Bomb"] = "Касcетная бомба", -- Construction_Mode
+ ["Cluster Bomb MASTER!"] = "МАСТЕР Касcетной бомбы", -- Basic_Training_-_Cluster_Bomb
+ ["Cluster Bomb Training"] = "Тренировка с Касcетной бомбой", -- Basic_Training_-_Cluster_Bomb
+ ["Codename: Teamwork"] = "Кодовое имя: 'Командная работа'",
-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey
-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey
-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge
+ ["Collect or destroy all the health crates."] = "Собери или уничтожь все аптечки.", -- User_Mission_-_RCPlane_Challenge
-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood
-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge
--- ["Complete the track as fast as you can!"] = "",
--- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge
--- ["Configuration accepted."] = "", -- WxW
--- ["Congratulations"] = "", -- Basic_Training_-_Rope
--- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb
--- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope
--- ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "", --Bazooka, Shotgun, SniperRifle
+ ["Compete to use as few planes as possible!"] = "Постарайся использовать как можно меньше самолетов!", -- User_Mission_-_RCPlane_Challenge
+ ["Complete the track as fast as you can!"] = "Закончите трек так быстро, как сможете!",
+ ["COMPLETION TIME"] = "ВРЕМЯ ЗАВЕРШЕНИЯ", -- User_Mission_-_Rope_Knock_Challenge
+ ["Configuration accepted."] = "Конфигурация принята.", -- WxW
+ ["Congratulations!"] = "Поздравляем!",
+ ["Congratulations"] = "Поздравляем", -- Basic_Training_-_Rope
+ ["Congratulations! You have destroyed all targets within the time."] = "Поздравляем! Вы уничтожили все цели во время.", -- TargetPractice
+ ["Congratulations! You have truly mastered this challenge! Don't forget to save the demo."] = "Поздравляем! Вы действительно освоили это испытание!", -- User_Mission_-_RCPlane_Challenge
+ ["Congratulations! You needed only half of time|to eliminate all targets."] = "Поздравляем! Тебе понадобилась только половина|времени, чтобы уничтожить все цели.", -- Basic_Training_-_Cluster_Bomb
+ ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "Поздравляем! Ты закончил упражнение с Верёвкой! |- Упражнение завершится через 10 секунд!", -- Basic_Training_-_Rope
+ ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Поздравляем! Ты уничтожил все цели во время.", --Bazooka, Shotgun, SniperRifle
["Congratulations!"] = "Поздравления!",
--- ["CONSTRUCTION MODE"] = "", -- Construction_Mode
--- ["Construction Station"] = "", -- Construction_Mode
+ ["CONSTRUCTION MODE"] = "РЕЖИМ СТРОИТЕЛЬСТВА", -- Construction_Mode
+ ["Construction Station"] = "Станция Утилит", -- Construction_Mode
-- ["Continental supplies"] = "", -- Continental_supplies
--- ["Control pillars to score points."] = "",
--- ["Core"] = "", -- Construction_Mode
+ ["Copper"] = "Медный", -- User_Mission_-_Nobody_Laugh
+ ["CONTROL"] = "КОНТРОЛЬ", -- Control
+ ["Control pillars to score points."] = "Контролируй колонны, чтобы заработать очки.", -- Control
+ ["Core"] = "Ядро", -- Construction_Mode
-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen
-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow
-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil
--- ["Cost"] = "", -- Construction_Mode
--- ["Crate Placement Tool"] = "", -- Construction_Mode
- ["Crates Left:"] = "Осталось ящиков:", -- User_Mission_-_RCPlane_Challenge
+ ["Cost"] = "Стоимость", -- Construction_Mode
+ ["Crate Placement Tool"] = "Инструмент Размещения Ящиков", -- Construction_Mode
+ ["Crates left: %d"] = "Осталось ящиков: %d", -- User_Mission_-_RCPlane_Challenge
+ ["crate(s)"] = "ящиков", -- SpeedShoppa
+ ["%d crate(s) remaining"] = "%d ящиков осталось", -- SpeedShoppa
-- ["Cricket time: [Drop a fireable mine! ~ Will work if fired close to your hog & far away from enemy ~ 1 sec]"] = "", -- Continental_supplies
-- ["Current setting is "] = "", -- Gravity
--- ["Cybernetic Empire"] = "",
+ ["Cybernetic Empire"] = "Кибер Империя", -- User_Mission_-_Bamboo_Thicket
-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy
-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab
--- ["DAMMIT, ROOKIE!"] = "",
--- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "",
--- ["Dangerous Ducklings"] = "",
--- ["Deadweight"] = "",
+ ["DAMMIT, ROOKIE!"] = "ЧЁРТ ПОБЕРИ, САЛАГА!",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "ЧЁРТ ПОБЕРИ! СЛЕЗЬ С МОЕЙ ГОЛОВЫ!",
+ ["Dangerous Ducklings"] = "Опасные Утята", -- User_Mission_-_Dangerous_Ducklings
+ ["Deadweight"] = "Балласт",
+ ["deaths"] = "смертей", -- Mutant
-- ["Decrease"] = "", -- Continental_supplies
-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab
-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united
@@ -190,37 +215,43 @@
-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy
-- ["Defend your core from the enemy."] = "", -- Construction_Mode
-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow
--- ["Dematerializes weapons and equipment carried by enemy hedgehogs."] = "", -- Construction_Mode
--- ["Demolition is fun!"] = "",
+ ["Dematerializes weapons and equipment carried by enemy hedgehogs."] = "Аннигилирует вражеское оружие и оборудование.", -- Construction_Mode
+ ["Demo"] = "Демон", -- The_Specialists
+ ["Demolition is fun!"] = "Разрушать весело!",
-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united
-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow
-- ["Depleted Kamikaze!"] = "",
--- ["Desert Eagle"] = "", -- Construction_Mode, A_Space_Adventure:death02
+ ["Derp"] = "Глупый", -- User_Mission_-_Nobody_Laugh
+ ["Desert Eagle"] = "Пистолет Desert Eagle", -- Construction_Mode, A_Space_Adventure:death02
-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Destroy invaders to score points."] = "",
-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood
-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood
+ ["Destroyer of planes"] = "Уничтожитель самолётов", -- User_Mission_-_RCPlane_Challenge
-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united
-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow
-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow
-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon
+ ["Disabled"] = "Отключено", -- WxW
-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies
+ ["Disqualified!"] = "Дисквалификация!", -- User_Mission_-_That_Sinking_Feeling
-- ["Dist: "] = "", -- Space_Invasion
-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab
-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood
--- ["DOUBLE KILL"] = "", -- Mutant
+ ["DOUBLE KILL"] = "ДВОЙНОЕ УБИЙСТВО", -- Mutant
["Double Kill!"] = "Двойное убийство!",
-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy
-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy
-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon
--- ["Drill Rocket"] = "", -- Construction_Mode
+ ["Drill Rocket"] = "Сверлящая ракета", -- Construction_Mode
-- ["Drills"] = "", -- A_Classic_Fairytale:backstab
-- ["Drill Strike"] = "", -- Construction_Mode
-- ["Drone Hunter!"] = "",
-- ["Drop a bomb: [Drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies
--- ["Drowner"] = "",
+ ["Drowner"] = "Утопающий", -- User_Mission_-_Nobody_Laugh
+ ["Drunk greenhorn"] = "Пьяный молокосос", -- User_Mission_-_RCPlane_Challenge
-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family
-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey
-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab
@@ -231,27 +262,31 @@
-- ["Duration"] = "", -- Continental_supplies
-- ["Dust storm: [Deals 15 damage to all enemies in the circle]"] = "", -- Continental_supplies
--- ["Dynamite"] = "", -- Construction_Mode
+ ["Dynamite"] = "Динамит", -- Construction_Mode
-- ["Each turn is only ONE SECOND!"] = "", -- Frenzy
--- ["Each turn you get 1-3 random weapons"] = "",
--- ["Each turn you get one random weapon"] = "",
+ ["Each turn you get 1-3 random weapons"] = "Каждый ход вы получаете 1-3 случайных оружия",
+ ["Each turn you get one random weapon"] = "Каждый ход вы получаете одно случайное оружие",
-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab
-- ["Eagle Eye: [Blink to the impact ~ One shot]"] = "", -- Continental_supplies
-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil
+ ["Eckles"] = "Заика", -- User_Mission_-_Nobody_Laugh
-- ["Elderbot"] = "", -- A_Classic_Fairytale:family
--- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape
--- ["Eliminate all enemies"] = "",
--- ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "", --Bazooka, Shotgun, SniperRifle
--- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander
--- ["Eliminate Poison before the time runs out"] = "",
--- ["Eliminate the Blue Team"] = "",
--- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock
+ ["Elimate your captor."] = "Уничтожь твоего похитителя.", -- User_Mission_-_The_Great_Escape
+ ["Eliminate all enemies"] = "Уничтожьте всех врагов",
+ ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Уничтожь все цели, пока время не вышло.|Для этой миссии доступен неограниченный боезапас.", --Bazooka, Shotgun, SniperRifle
+ ["Eliminate enemy hogs and take their weapons."] = "Уничтожьте вражеских ежей и получите их оружие.", -- Highlander
+ ["Eliminate Poison before the time runs out"] = "Уничтожь Яд пока время не вышло",
+ ["Eliminate the Blue Team"] = "Уничтожь Синюю Команду",
+ ["Eliminate the enemy before the time runs out"] = "Уничтожь врага пока время не вышло", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock
-- ["Eliminate the enemy hogs to win."] = "",
--- ["Eliminate the enemy specialists."] = "",
--- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
+ ["Eliminate the enemy specialists."] = "Уничтожьте вражеских специалистов.",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Уничтожьте Юнит 3378 |- Слабое Сопротивление должно выжить",
+ ["Elite pilot"] = "Элитный пилот", -- User_Mission_-_RCPlane_Challenge
-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
--- ["Energetic Engineer"] = "",
+ ["Enabled"] = "Включено", -- WxW
+ ["Energetic Engineer"] = "Энергичный Инженер", -- User_Mission_-_Bamboo_Thicket
+ ["Engineer"] = "Инженер", -- The_Specialists
["Enjoy the swim..."] = "Приятного плавания...",
-- ["[Enter]"] = "",
-- ["Europe"] = "", -- Continental_supplies
@@ -260,119 +295,129 @@
-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon
-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy
-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab
--- ["Extra Damage"] = "", -- Construction_Mode
--- ["Extra Time"] = "", -- Construction_Mode
+ ["Experienced beginner"] = "Продвинутый новичок", -- User_Mission_-_RCPlane_Challenge
+ ["Extra Damage"] = "Дополнительный урон", -- Construction_Mode
+ ["Extra Time"] = "Дополнительное время", -- Construction_Mode
-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey
-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family
--- ["Fastest lap: "] = "",
--- ["Feeble Resistance"] = "",
+ ["Fastest lap: "] = "Лучший круг: ",
+ ["Feeble Resistance"] = "Слабое Сопротивление",
-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen
-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family
-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow
-- ["Fierce Competition!"] = "", -- Space_Invasion
-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united
--- ["Filthy Blue"] = "", -- User_Mission_-_Dangerous_Ducklings
+ ["Filthy Blue"] = "Грязный Синяк", -- User_Mission_-_Dangerous_Ducklings
-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon
-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood
-- ["Fire"] = "",
-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united
-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood
--- ["FIRST BLOOD MUTATES"] = "", -- Mutant
+ ["FIRST BLOOD MUTATES"] = "ПЕРВАЯ КРОВЬ МУТИРУЕТ", -- Mutant
-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood
--- ["Flag captured!"] = "",
--- ["Flag respawned!"] = "",
--- ["Flag returned!"] = "",
--- ["Flags, and their home base will be placed where each team ends their first turn."] = "",
+ ["Flag captured!"] = "Флаг захвачен!",
+ ["Flag respawned!"] = "Респаун флага!",
+ ["Flag returned!"] = "Флаг возвращен!",
+ ["Flags, and their home base will be placed where each team ends their first turn."] = "Флаги и базы будут помещены там, где каждая команда закончила свои первый ход.",
-- ["Flamer"] = "",
--- ["Flamethrower"] = "", -- Construction_Mode
+ ["Flamethrower"] = "Огнемет", -- Construction_Mode
-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab
+ ["Flawless victory!"] = "Безупречная победа!", -- User_Mission_-_RCPlane_Challenge
-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey
--- ["Flying Saucer"] = "", -- Construction_Mode, Frenzy
+ ["Flying Saucer"] = "Летающая тарелка", -- Construction_Mode, Frenzy
-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW
+ ["Frank"] = "Фрэнк", -- User_Mission_-_Nobody_Laugh
-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey
--- ["Freezer"] = "", -- Construction_Mode
+ ["Freezer"] = "Замораживатель", -- Construction_Mode
-- ["FRENZY"] = "", -- Frenzy
-- ["Friendly Fire!"] = "",
-- ["fuel extended!"] = "",
--- ["GAME BEGUN!!!"] = "",
--- ["Game Modifiers: "] = "",
+ ["GAME BEGUN!!!"] = "ПОЕХАЛИ!!!",
+ ["Game Modifiers: "] = "Игровые Модификаторы: ",
["GAME OVER!"] = "ИГРА ОКОНЧЕНА!",
--- ["Game Started!"] = "",
+ ["Game Started!"] = "Игра Началась!",
-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy
-- ["GasBomb"] = "", -- Continental_supplies
-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen
-- ["General information"] = "", -- Continental_supplies
--- ["Generates power."] = "", -- Construction_Mode
--- ["Generator"] = "", -- Construction_Mode
+ ["Generates power."] = "Генерирует энергию, необходимую для постройки сооружений.", -- Construction_Mode
+ ["Generator"] = "Генератор", -- Construction_Mode
-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey
--- ["Get on over there and take him out!"] = "",
+ ["Get on over there and take him out!"] = "Доберись туда и уничтожь его!",
-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood
--- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape
+ ["Get out of there!"] = "Выберись отсюда!", -- User_Mission_-_The_Great_Escape
-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey
--- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope
+ ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "Доберись до цели, используя верёвку! |Упрвление: Влево и Вправо для раскачивания - Вверх и Вниз для укорочения и удлинения!", -- Basic_Training_-_Rope
-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family
--- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge
+ ["GG!"] = "GG!", -- User_Mission_-_Rope_Knock_Challenge
-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab
-- ["Girder"] = "", -- Construction_Mode
--- ["Girder Placement Mode"] = "", -- Construction_Mode
+ ["Girder Placement Mode"] = "Режим Размещения Балок", -- Construction_Mode
-- ["Glark"] = "", -- A_Classic_Fairytale:shadow
["Goal"] = "Цель",
--- ["GO! GO! GO!"] = "",
--- ["Good birdy......"] = "",
--- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape
+ ["GO! GO! GO!"] = "ВПЕРЁД! ВПЕРЁД! ВПЕРЁД!",
+ ["Good birdy......"] = "Хорошая птичка...",
+ ["Good Dude"] = "Хороший", -- User_Mission_-_The_Great_Escape
-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united
-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey
--- ["Good luck out there!"] = "",
--- ["Good so far!"] = "",
--- ["Good to go!"] = "",
+ ["Good luck out there!"] = "Удачи там!",
+ ["Good so far!"] = "Пока хорошо!",
+ ["Good to go!"] = "Пошёл!",
-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood
-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab
-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey
--- ["Go surf!"] = "", -- WxW
+ ["Go surf!"] = "Теперь сёрфить!", -- WxW
["GOTCHA!"] = "ПОПАЛСЯ!",
-- ["Grab Mines/Explosives"] = "",
--- ["Grants nearby hogs life-regeneration."] = "", -- Construction_Mode
+ ["Grants nearby hogs life-regeneration."] = "Восстанавливает здоровье соседних ежей.", -- Construction_Mode
-- ["Gravity"] = "", -- Gravity
-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow
--- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope
+ ["GREAT ! Let's kill all this enemies, using portals"] = "ПРЕКРАСНО ! Теперь можно убить всех с помощью порталов", -- portal
+ ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "Хорошая работа! А теперь ударь его Бейсбольной Битой! |Подсказка: Оружие можно сменить 'Правым кликом'!", -- Basic_Training_-_Rope
-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow
+ ["Greenhorn"] = "Молокосос", -- User_Mission_-_RCPlane_Challenge
-- ["Green lipstick bullet: [Poisonous, deals no damage]"] = "", -- Continental_supplies
-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon
-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow
--- ["Grenade"] = "", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
--- ["Grenade Training"] = "", -- Basic_Training_-_Grenade
--- ["Grenadiers"] = "", -- Basic_Training_-_Grenade
+ ["Grenade"] = "Граната", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
+ ["Grenade Group"] = "Группа Гренадеров", -- Target_Practice_-_Grenade_easy, Target_Practice_-_Grenade_hard
+ ["Grenade Training"] = "Тренировка с Гранатой", -- Basic_Training_-_Grenade
+ ["Grenadier"] = "Гренадер", -- Target_Practice_-_Grenade_easy, Target_Practice_-_Grenade_hard
+ ["Grenadiers"] = "Гренадеры", -- Basic_Training_-_Grenade
-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab
-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy
-- ["Haha!"] = "", -- A_Classic_Fairytale:united
--- ["Hahahaha!"] = "",
--- ["Haha, now THAT would be something!"] = "",
--- ["Hammer"] = "", -- Construction_Mode, Continental_supplies
+ ["Hahahaha!"] = "Хахахаха!",
+ ["Haha, now THAT would be something!"] = "Хаха, да не гони, ЭТО уже слишком!",
+ ["Hammer"] = "Молот", -- Construction_Mode, Continental_supplies
-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil
--- ["Hapless Hogs"] = "",
--- [" Hapless Hogs left!"] = "",
--- [" HAS MUTATED"] = "", -- Mutant
+ ["Hapless Hogs"] = "Несчастные Ежи",
+ ["%d Hapless Hogs left"] = "%d Несчастных Ёжиков осталось",
+ ["Harry"] = "Гарри", -- User_Mission_-_Nobody_Laugh
+ [" HAS MUTATED"] = " МУТИРОВАЛ", -- Mutant
-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen
-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow
-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy
--- ["Healing Station"] = "", -- Construction_Mode
--- ["Health Crate Placement Mode"] = "", -- Construction_Mode
+ ["Healing Station"] = "Лечебная Станция", -- Construction_Mode
+ ["Health Crate Placement Mode"] = "Режим Размещения Аптечек", -- Construction_Mode
-- ["Health crates extend your time."] = "",
--- ["Heavy"] = "",
+ ["Heartful"] = "Сердечный", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+ ["Heavy"] = "Тяжёлый",
-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united
-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy
-- ["Hedgehog projectile: [Fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies
--- ["Hedgewars-Basketball"] = "",
--- ["Hedgewars-Knockball"] = "",
+ ["Hedgewars-Basketball"] = "Hedgewars Баскетбол",
+ ["Hedgewars-Knockball"] = "Hedgewars Вышибалы",
-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab
--- ["Heh, it's not that bad."] = "",
--- ["Hellish Handgrenade"] = "", -- Construction_Mode
+ ["Heh, it's not that bad."] = "Хех, не так уж всё и плохо.",
+ ["Hell Army"] = "Армия Ада", -- portal
+ ["Hellish Handgrenade"] = "Адская граната", -- Construction_Mode
-- ["Hello again, "] = "", -- A_Classic_Fairytale:family
-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey
-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey
@@ -382,13 +427,14 @@
-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab
-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family
-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape
+ ["Hero Team"] = "Герои", -- User_Mission_-_The_Great_Escape
-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood
-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab
-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab
-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united
-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey
- ["HIGHLANDER"] = "Царь горы", -- Highlander
+ ["HIGHLANDER"] = "ЦАРЬ ГОРЫ", -- Highlander
+ ["hiden"] = "Скрытный", -- portal
-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood
-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood
-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey
@@ -396,17 +442,20 @@
-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey
-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Hit Combo!"] = "",
+ ["hits"] = "попаданий", -- Basic_Training_-_Bazooka
-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy
--- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal
+ ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "Хмм, надо придумать как скинуть его с анти-портальной поверхности...", -- portal
-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy
-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood
["Hmmm..."] = "Хммм...",
-- ["Hogminator"] = "", -- A_Classic_Fairytale:family
-- ["Hogs in sight!"] = "", -- Continental_supplies
--- ["HOLY SHYTE!"] = "", -- Mutant
--- ["Homing Bee"] = "", -- Construction_Mode
+ ["HOLY SHYTE!"] = "ВОТ ЧЕРТ!", -- Mutant
+ ["Homing Bee"] = "Пчёлка", -- Construction_Mode
-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy
+ ["Hook"] = "Крюк", -- Challenge_-_Speed_Shoppa_-_Ropes
["Hooray!"] = "Ура!",
+ ["Hopeless case"] = "Безнадежный случай", -- User_Mission_-_RCPlane_Challenge
-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family
-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey
-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon
@@ -415,7 +464,7 @@
-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey
-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey
-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon
--- [" HP"] = "", -- Mutant
+ [" HP"] = " HP", -- Mutant
["Hunter"] = "Охотник", --Bazooka, Shotgun, SniperRifle
-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab
-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood
@@ -426,7 +475,7 @@
-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family
-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey
-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy
--- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope
+ ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "Я не знаю, как ты это сделал... Но ты молодец! |Следующая цель вообще не составит тебе труда!", -- Basic_Training_-_Rope
-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab
-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab
-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood
@@ -438,6 +487,7 @@
-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow
-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow
+ ["Igmund"] = "Джокер", -- User_Mission_-_Nobody_Laugh
-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon
-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow
-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow
@@ -447,6 +497,7 @@
-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab
-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family
-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey
+ ["Ikeda"] = "Икэда", -- User_Mission_-_Bamboo_Thicket
-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow
-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood
-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab
@@ -469,20 +520,25 @@
-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab
-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab
-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon
--- ["INSANITY"] = "", -- Mutant
+ ["INSANITY"] = "БЕЗУМИЕ", -- Mutant
["Instructor"] = "Инструктор", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["Insufficient Power"] = "Недостаточно Энергии", -- Construction_Mode
-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy
-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab
-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow
-- ["invaders destroyed"] = "",
+ ["Invalid Placement"] = "Неверное Размещение", -- Construction_Mode
-- ["Invasion"] = "", -- A_Classic_Fairytale:united
--- ["Invulnerable"] = "", -- Construction_Mode
+ ["Invulnerable"] = "Неуязвимость", -- Construction_Mode
+ ["In your best (and only) flight you took out %d crates with one RC plane!"] = "В вашем лучшем (и единственном) полёте вы достали %d ящиков с одним самолётом.", -- User_Mission_-_RCPlane_Challenge
+ ["In your best flight you took out %d crates with one RC plane."] = "В вашем лучшем полёте вы достали %d ящиков с одним самолётом.", -- User_Mission_-_RCPlane_Challenge
-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow
-- ["I see..."] = "", -- A_Classic_Fairytale:shadow
-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood
-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood
-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab
-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab
+ ["I should get myself a portal gun, maybe this crate has one"] = "Надо достать портальную пушку, может в этом ящике?", -- portal
-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon
-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon
-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon
@@ -495,7 +551,7 @@
-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab
-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy
-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab
--- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "",
+ ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Хорошо, что ВНЕЗАПНАЯ СМЕРТЬ аж через 99 ходов...",
-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon
-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family
-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow
@@ -521,7 +577,7 @@
-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family
-- ["Kamikaze"] = "", -- Construction_Mode
-- ["Kamikaze Expert!"] = "",
--- ["Keep it up!"] = "",
+ ["Keep it up!"] = "Так держать!",
-- ["Kerguelen"] = "", -- Continental_supplies
-- ["Killing spree!"] = "",
-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood
@@ -529,8 +585,9 @@
-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon
-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab
--- ["Land Sprayer"] = "", -- Construction_Mode
--- ["Laser Sight"] = "", -- Construction_Mode
+ ["King Customer"] = "Король Покупатель", -- Challenge_-_Speed_Shoppa_-_ShoppaKing
+ ["Land Sprayer"] = "Распылитель земли", -- Construction_Mode
+ ["Laser Sight"] = "Лазерный прицел", -- Construction_Mode
["Last Target!"] = "Последняя цель!",
-- ["Leader"] = "", -- A_Classic_Fairytale:enemy
-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen
@@ -542,6 +599,7 @@
-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["[Left Shift]"] = "",
-- ["left shift"] = "", -- Continental_supplies
+ ["Lestat"] = "Лестат", -- portal
-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies
-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey
-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey
@@ -551,8 +609,8 @@
-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab
-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab
-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united
--- ["Limburger"] = "", -- Construction_Mode
--- ["Listen up, maggot!!"] = "",
+ ["Limburger"] = "Старый Лимбургер", -- Construction_Mode
+ ["Listen up, maggot!!"] = "Слушай сюда, щегол!!",
-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow
-- ["Lively Lifeguard"] = "",
@@ -562,56 +620,63 @@
-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab
-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy
-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy
--- ["Low Gravity"] = "", -- Construction_Mode, Frenzy
+ ["Loon"] = "Псих", -- The_Specialists
+ ["Low Gravity"] = "Слабая гравитация", -- Construction_Mode, Frenzy
+ ["Lucifer"] = "Люцифер", -- portal
-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united
--- ["LUDICROUS KILL"] = "", -- Mutant
+ ["LUDICROUS KILL"] = "НЕЛЕПОЕ УБИЙСТВО", -- Mutant
-- ["Made it!"] = "", -- ClimbHome
-- ["- Massive weapon bonus on first turn"] = "", -- Continental_supplies
-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab
-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies
--- ["MEGA KILL"] = "", -- Mutant
+ ["MEGA KILL"] = "МЕГА УБИЙСТВО", -- Mutant
-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab
+ ["milliseconds"] = "миллисекунд", -- SpeedShoppa
-- ["Mindy"] = "", -- A_Classic_Fairytale:united
--- ["Mine"] = "", -- Construction_Mode, Frenzy
+ ["Mine"] = "Мина", -- Construction_Mode, Frenzy
-- ["Mine Deployer"] = "",
-- ["Mine Eater!"] = "",
--- ["Mine Placement Mode"] = "", -- Construction_Mode
--- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Mine Placement Mode"] = "Режим Размещения Мин", -- Construction_Mode
+ ["|- Mines Time:"] = "|- Задержка Мин:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["Mine Strike"] = "", -- Construction_Mode
["MISSION FAILED"] = "МИССИЯ ПРОВАЛЕНА", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Mission lost!"] = "Миссия провалена!", -- Basic_Training_-_Grenade
-- ["MISSION SUCCESS"] = "",
["MISSION SUCCESSFUL"] = "МИССИЯ УСПЕШНА", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["Molotov Cocktail"] = "", -- Construction_Mode
+ ["Mission won!"] = "Миссия успешна!", -- Basic_Training_-_Grenade
+ ["Molotov Cocktail"] = "Коктейль Молотова", -- Construction_Mode
-- ["Molotov"] = "", -- Continental_supplies
--- ["MONSTER KILL"] = "", -- Mutant
+ ["MONSTER KILL"] = "УБИЙСТВО МОНСТРА", -- Mutant
-- ["More Natives"] = "", -- A_Classic_Fairytale:epil
--- ["Mortar"] = "", -- Construction_Mode, A_Space_Adventure:death02
+ ["Mortar"] = "Миномёт", -- Construction_Mode, A_Space_Adventure:death02
-- ["Movement: [Up], [Down], [Left], [Right]"] = "",
--- ["Mudball"] = "", -- Construction_Mode
+ ["Mudball"] = "Комок грязи", -- Construction_Mode
-- ["Multi-shot!"] = "",
-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow
--- ["-------"] = "", -- Mutant
--- ["Mutant"] = "", -- Mutant
--- ["Nade Boy"] = "", -- Basic_Training_-_Grenade
+ ["-------"] = "-------", -- Mutant
+ ["MUTANT"] = "МУТАНТ", -- Mutant
+ ["Mutant"] = "Мутант", -- Mutant
+ ["Nade Boy"] = "Снайперок", -- Basic_Training_-_Grenade
-- ["Name"] = "", -- A_Classic_Fairytale:queen
- ["Nameless Heroes"] = "Безымянные герои",
+ ["Nameless Heroes"] = "Герои Без Имен",
-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen
-- ["Napalm"] = "", -- Construction_Mode
-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies
-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united
--- ["Naughty Ninja"] = "", -- User_Mission_-_Dangerous_Ducklings
+ ["Naughty Ninja"] = "Озорной ниндзя", -- User_Mission_-_Dangerous_Ducklings
-- ["New Barrels Per Turn"] = "",
["NEW CLAN RECORD: "] = "НОВЫЙ РЕКОРД КЛАНА: ",
--- ["NEW fastest lap: "] = "",
+ ["NEW fastest lap: "] = "НОВЫЙ лучший круг: ",
-- ["New Mines Per Turn"] = "",
--- ["NEW RACE RECORD: "] = "",
+ ["NEW RACE RECORD: "] = "НОВЫЙ РЕКОРД ГОНКИ: ",
["Newton's Hammock"] = "Гамак Ньютона",
-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy
-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon
-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy
-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen
--- ["Nobody Laugh"] = "", -- User_Mission_-_Nobody_Laugh
+ ["Ninja"] = "Ниндзя", -- The_Specialists
+ ["Nobody Laugh"] = "Никто не смеётся", -- User_Mission_-_Nobody_Laugh
-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow
-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey
-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey
@@ -619,137 +684,155 @@
-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow
-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey
-- ["NORMAL"] = "", -- Continental_supplies
--- ["Normal players can only score points by killing the mutant."] = "", -- Mutant
+ ["Normal players can only score points by killing the mutant."] = "Обычные игроки могут получить очки только убив Мутанта.", -- Mutant
-- ["North America"] = "", -- Continental_supplies
--- ["Not all hogs are born equal."] = "", -- Highlander
--- ["NOT ENOUGH WAYPOINTS"] = "",
+ ["Not all hogs are born equal."] = "Не все ежи рождаются равными.", -- Highlander
+ ["NOT ENOUGH WAYPOINTS"] = "НЕДОСТАТОЧНО КОНТРОЛЬНЫХ ТОЧЕК",
-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab
--- ["Not So Friendly Match"] = "", -- Basketball, Knockball
+ ["Not So Friendly Match"] = "Совсем Не Товарищеский Матч", -- Basketball, Knockball
-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow
-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united
--- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope
+ ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "Теперь найди следующую цель!|Подсказка: Ты потеряешь здоровье, если упадешь, будь осторожен!", -- Basic_Training_-_Rope
-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey
-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow
-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon
-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab
--- ["Object Placement Tool"] = "", -- Construction_Mode
+ ["Object Placement Tool"] = "Инструмент Размещения Объектов", -- Construction_Mode
-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow
-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon
-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family
-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey
-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab
--- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Just try again!"] = "О, нет! Попробуй еще раз!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united
--- ["Oh no! Time's up! Just try again."] = "", --Bazooka, Shotgun, SniperRifle
--- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb
+ ["Oh no! Time's up! Just try again."] = "О, нет! Время вышло! Попробуй еще раз.", --Bazooka, Shotgun, SniperRifle
+ ["Oh no! You failed! Just try again."] = "О, нет! Ты проиграл! Попробуй еще раз.", -- Basic_Training_-_Cluster_Bomb
-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab
-- ["Olive"] = "", -- A_Classic_Fairytale:united
-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood
-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood
--- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant
+ ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "ТОЛЬКО ОДИН ЁЖ НА КОМАНДУ! ИЗБЫТОК ЕЖЕЙ БУДЕТ УДАЛЕН", -- Mutant
-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
+ ["oneye"] = "Циклоп", -- portal
-- ["on Skip"] = "", -- Continental_supplies
-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united
-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Operation Diver"] = "",
--- ["Opposing Team: "] = "",
+ ["Operation Diver"] = "Операция 'Ныряльщик'",
+ ["Opposing Team: "] = "Команда Соперника: ",
-- ["or 'g=50, g2=150, period=4000' for gravity changing|from 50 to 150 and back with period of 4000 msec"] = "", -- Gravity
-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen
--- ["Other kills don't give you points."] = "", -- Mutant
--- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge
+ ["Other kills don't give you points."] = "Другие убийства не дадут вам очков.", -- Mutant
+ ["Ouch!"] = "Ох!", -- User_Mission_-_Rope_Knock_Challenge
-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy
--- ["Parachute"] = "", -- Continental_supplies
--- ["Pathetic Hog #%d"] = "",
--- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock
+ ["Parachute"] = "Парашют", -- Continental_supplies
+ ["Pathetic Hog #%d"] = "Жалкий Ёж #%d",
+ ["Pathetic Resistance"] = "Жалкое Сопротивление", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock
-- ["Penguin roar: [Deal 15 damage + 15% of your hogs health to all hogs around you and get 2/3 back]"] = "", -- Continental_supplies
-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Per-Hog Ammo"] = "",
--- ["Personal Portal Device"] = "", -- Construction_Mode
+ ["Per-Hog Ammo"] = "У каждого ежа свое оружие",
+ ["Personal Portal Device"] = "Портальная Пушка", -- Construction_Mode
-- ["Per team weapons"] = "", -- Continental_supplies
-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow
--- ["Piano Strike"] = "", -- Construction_Mode
--- ["Pickhammer"] = "", -- Construction_Mode
+ ["phosphatoglucidique"] = "Углеводофосфатный", -- portal
+ ["Piano Strike"] = "Фортепьяновый удар", -- Construction_Mode
+ ["Pickhammer"] = "Отбойный молоток", -- Construction_Mode
-- ["Pings left:"] = "", -- Space_Invasion
--- ["Place more waypoints using the 'Air Attack' weapon."] = "",
--- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
--- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
+ ["Place more waypoints using the 'Air Attack' weapon."] = "Расположите больше контрольных точек, используя 'Воздушную атаку'",
+ ["Planes used: %d"] = "Использовано самолётов: %d", -- User_Mission_-_RCPlane_Challenge
-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
--- ["Please place the way-point further from the waterline."] = "", -- Racer
--- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer
+ ["player"] = "игрок", -- portal
+ ["Please place the way-point further from the waterline."] = "Поместите контрольную точку подальше от воды.", -- Racer
+ ["Please place the way-point in the open, within the map boundaries."] = "Поместите контрольную точку в открытом месте внутри границ карты.", -- Racer
-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow
-- ["Point Blank Combo!"] = "", -- Space_Invasion
--- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
--- ["POINTS"] = "", -- Mutant
+ ["points"] = "очки", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
+ ["POINTS"] = "ОЧКИ", -- Mutant
["Poison"] = "Яд",
-- ["Population"] = "", -- Continental_supplies
-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon
--- ["Portal mission"] = "", -- portal
+ ["Portal mission"] = "Портальная миссия", -- portal
-- ["Power Remaining"] = "",
--- ["Prepare yourself"] = "",
+ ["Predator"] = "Хищник", -- portal
+ ["Prepare yourself"] = "Готовься",
-- ["presice"] = "", -- Continental_supplies
--- ["Press [Enter] to accept this configuration."] = "", -- WxW
+ ["Press [Enter] to accept this configuration."] = "Нажмите [Enter] для принятия конфигурации.", -- WxW
-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood
-- ["Press [Precise] to skip intro"] = "",
--- ["Prestigious Pilot"] = "", -- User_Mission_-_RCPlane_Challenge
--- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb
+ ["Prestigious Pilot"] = "Престижный Пилот", -- User_Mission_-_RCPlane_Challenge
+ ["Private Nolak"] = "Рядовой Нолак", -- Target_Practice_-_Cluster_Bomb
+ ["Private Novak"] = "Рядовой Новак", -- Basic_Training_-_Cluster_Bomb
+ ["Professional pilot"] = "Профессиональный пилот", -- User_Mission_-_RCPlane_Challenge
+ ["Professional stunt pilot"] = "Профессиональный пилот-трюкач", -- User_Mission_-_RCPlane_Challenge
-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow
--- ["Race complexity limit reached."] = "",
--- ["RACER"] = "",
+ ["Pyro"] = "Пироман", -- The_Specialists
+ ["Race complexity limit reached."] = "Лимит сложности гонки достигнут.",
+ ["RACER"] = "ГОНЩИК",
-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["Radar Ping"] = "", -- Space_Invasion
-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united
-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow
+ ["Rank: %s"] = "Ранк: %s", -- User_Mission_-_RCPlane_Challenge
-- ["random in range from %i%% to %i%% with period of %i msec"] = "", -- Gravity
+ ["razac"] = "Чумной", -- portal
-- ["RC Plane"] = "", -- Construction_Mode
--- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge
+ ["RC PLANE TRAINING"] = "ТРЕНИРОВКА С РАДИОУПРАВЛЯЕМЫМ САМОЛЕТОМ", -- User_Mission_-_RCPlane_Challenge
-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow
--- ["Reflector Shield"] = "", -- Construction_Mode
--- ["Reflects enemy projectiles."] = "", -- Construction_Mode
+ ["Reflector Shield"] = "Щит-Отражатель", -- Construction_Mode
+ ["Reflects enemy projectiles."] = "Отражает снаряды врагов.", -- Construction_Mode
-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab
-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab
--- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope
+ ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "Помни: Верёвка изгибается только вокруг объекты, |если же она ничего не касается, то всегда остается прямой!", -- Basic_Training_-_Rope
-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow
-- ["REMOVED"] = "", -- Continental_supplies
--- ["Respawner"] = "", -- Construction_Mode
+ ["rescues"] = "спасено", -- User_Mission_-_That_Sinking_Feeling
+ ["Respawner"] = "Воскреситель", -- Construction_Mode
-- ["Resurrector"] = "", -- Construction_Mode
--- ["Resurrects dead hedgehogs."] = "", -- Construction_Mode
--- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
+ ["Resurrects dead hedgehogs."] = "Возвращает к жизни мертвых ежей.", -- Construction_Mode
+ [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Доставьте вражеский флаг на вашу базу для получения очков | - Выигрывает команда с 3мя захватами флага | - Вы получаете очки только когда ваш флаг находится на базе | - Убитые/Утонувшие ежи теряют флаг | - Брошенные флаги могут быть возвращены или захвачены повторно | - Убитые ежи воскресают",
-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow
+ ["Rider"] = "Адский Всадник", -- portal
-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united
--- ["Rope"] = "", -- Construction_Mode
--- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge
+ ["ronald"] = "Рональд", -- portal
+ ["Rope"] = "Верёвка", -- Construction_Mode
+ ["ROPE-KNOCKING"] = "ВЫШИБАНИЕ-ВЕРЁВКОЙ", -- User_Mission_-_Rope_Knock_Challenge
+ ["Rope Master!"] = "Мастер Верёвки!", -- Basic_Training_-_Rope
+ ["Roper"] = "Верёвочник", -- SpeedShoppa
+ ["Ropes and Crates"] = "Верёвки и Ящики", -- Challenge_-_Speed_Shoppa_-_Ropes
+ ["Rope Team"] = "Верёвочники", -- Basic_Training_-_Rope
-- ["Rope to safety"] = "", -- ClimbHome
--- ["Rope Training"] = "", -- Basic_Training_-_Rope
+ ["Rope Training"] = "Тренировка с Верёвкой", -- Basic_Training_-_Rope
-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow
--- ["Round Limit:"] = "",
+ ["Round Limit:"] = "Лимит Раундов:",
-- ["Round Limit"] = "",
--- ["Rounds Complete: "] = "",
+ ["Rounds Complete: "] = "Раундов Завершено: ",
-- ["Rounds Complete"] = "",
-- ["Rubber Band"] = "", -- Construction_Mode
--- ["Rubber Placement Mode"] = "", -- Construction_Mode
--- ["RULES"] = "", -- Frenzy, Mutant
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
+ ["Rubber Placement Mode"] = "Режим Размещения Батутов", -- Construction_Mode
+ ["RULES"] = "ПРАВИЛА", -- Frenzy, Mutant
+ ["RULES OF THE GAME [Press ESC to view]"] = "ПРАВИЛА ИГРЫ",
-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen
-- ["s|"] = "",
-- ["Sabotage/Flare: [Sabotage all hogs in the circle and deal ~1 dmg OR Fire a cluster up into the air]"] = "", -- Continental_supplies
+ ["Saint"] = "Святой", -- The_Specialists
-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united
-- ["Salvation"] = "", -- A_Classic_Fairytale:family
-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon
--- ["Save as many hapless hogs as possible!"] = "",
+ ["Save as many hapless hogs as possible!"] = "Спасите как можно больше несчастных ежей!",
-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey
-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow
-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family
-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey
-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab
-- ["SCORE"] = "",
--- ["Score"] = "", -- Mutant
+ ["Score"] = "Счет", -- Mutant
["sec"] = "сек", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
--- ["Seduction"] = "", -- Continental_supplies
+ ["%.1f seconds were remaining."] = "%.1f секунд еще оставалось.", -- Basic_Training_-_Bazooka
+ ["Seduction"] = "Соблазнение", -- Continental_supplies
-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab
-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood
["See ya!"] = "Увидимся!",
@@ -771,17 +854,19 @@
-- ["Shield OFF:"] = "",
-- ["Shield ON:"] = "",
-- ["Shield Seeker!"] = "",
--- ["Shoryuken"] = "", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
--- ["Shotgun"] = "", -- Continental_supplies
+ ["Shoppa Union"] = "Союз Шоппы", -- Challenge_-_Speed_Shoppa_-_Ropes, Challenge_-_Speed_Shoppa_-_ShoppaKing
+ ["Shoppers"] = "Шопперы", -- SpeedShoppa
+ ["Shoryuken"] = "Восходящий удар Дракона", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
+ ["Shotgun"] = "Дробовик", -- Continental_supplies
-- ["Shotgun Team"] = "",
-- ["Shotgun Training"] = "",
-- ["shots remaining."] = "",
--- ["Silly"] = "",
--- ["SineGun"] = "", -- Construction_Mode
--- ["Sinky"] = "",
+ ["Silly"] = "Глупый",
+ ["SineGun"] = "Синус-пушка (бета)", -- Construction_Mode
+ ["Sinky"] = "Утопленник",
-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy
--- ["%s is out and Team %d|scored a penalty!| |Score:"] = "", -- Basketball, Knockball
--- ["%s is out and Team %d|scored a point!| |Score:"] = "", -- Basketball, Knockball
+ ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s выбит и Команда %d|оштрафована!| |Счет:", -- Basketball, Knockball
+ ["%s is out and Team %d|scored a point!| |Score:"] = "%s выбит и Команда %d|получает очко!| |Счет:", -- Basketball, Knockball
-- ["Slippery"] = "", -- A_Classic_Fairytale:journey
-- ["Slot"] = "", -- Frenzy
-- ["Slot keys save time! (F1-F10 by default)"] = "", -- Frenzy
@@ -792,42 +877,46 @@
-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy
-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy
-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy
--- ["Sniper Rifle"] = "", -- Continental_supplies
+ ["Sniper"] = "Снайпер", -- The_Specialists
+ ["Sniper Rifle"] = "Снайперская винтовка", -- Continental_supplies
-- ["Sniper!"] = "", -- Space_Invasion
["Sniper Training"] = "Тренировка снайпера",
--- ["Sniperz"] = "",
+ ["Sniperz"] = "Снайперы",
-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood
+ ["Soldier"] = "Солдат", -- The_Specialists
-- ["Some weapons have a second option. Find them with"] = "", -- Continental_supplies
-- ["South America"] = "", -- Continental_supplies
-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow
--- ["Spawn the crate, and attack!"] = "", -- WxW
+ ["Spawn the crate, and attack!"] = "Подбери ящик и атакуй!", -- WxW
-- ["Special Weapons:"] = "", -- Continental_supplies
+-- ["Speed Shoppa"] = "", -- SpeedShoppa
-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow
-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united
--- ["Sponge"] = "",
--- ["Spooky Tree"] = "",
+ ["Sponge"] = "Губка",
+ ["Spooky Tree"] = "Зловещее дерево",
-- ["Sprite Placement Mode"] = "", -- Construction_Mode
-- ["Sprite Testing Mode"] = "", -- Construction_Mode
--- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion
+ ["STATUS UPDATE"] = "ОБНОВЛЕНИЕ СТАТУСА", -- GaudyRacer, Space_Invasion
-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen
-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood
-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
--- ["Sticky Mine"] = "", -- Continental_supplies
--- ["Sticky Mine Placement Mode"] = "", -- Construction_Mode
+ ["Sticky Mine"] = "Мина-Липучка", -- Continental_supplies
+ ["Sticky Mine Placement Mode"] = "Режим Размещения Мин-Липучек", -- Construction_Mode
-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow
--- ["Structure Placement Mode"] = "", -- Construction_Mode
--- ["Structure Placement Tool"] = "", -- Construction_Mode
+ ["Structure Placement Mode"] = "Режим Размещения Сооружений", -- Construction_Mode
+ ["Structure Placement Tool"] = "Инструмент Размещения Сооружений", -- Construction_Mode
+ ["Subject"] = "Испытуемый", -- portal
-- ["Sundaland"] = "", -- Continental_supplies
--- ["Super Weapons"] = "", -- WxW
--- ["Support Station"] = "", -- Construction_Mode
--- ["Surf Before Crate"] = "", -- WxW
+ ["Super Weapons"] = "Супер Оружие", -- WxW
+ ["Support Station"] = "Станция Поддержки", -- Construction_Mode
+ ["Surf Before Crate"] = "Сёрфинг Перед Ящиком", -- WxW
-- ["Surfer! +15 points!"] = "", -- Space_Invasion
-- ["Surfer!"] = "", -- WxW
-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow
-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood
-- ["switch"] = "", -- Continental_supplies
--- ["Switched to "] = "",
+ ["Switched to "] = "Выбран ",
-- ["Switch Hog"] = "", -- Construction_Mode
-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon
-- ["tab"] = "", -- Continental_supplies
@@ -835,14 +924,22 @@
-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon
-- ["Tardis"] = "", -- Construction_Mode
-- ["Target Placement Mode"] = "", -- Construction_Mode
+ ["Targets left: %d"] = "Осталось целей: %d", -- TargetPractice
+ ["Target Practice: Bazooka (easy)"] = "Учебная Стрельба: Базука (легко)", -- Target_Practice_-_Bazooka_easy
+ ["Target Practice: Bazooka (hard)"] = "Учебная Стрельба: Базука (сложно)", -- Target_Practice_-_Bazooka_hard
+ ["Target Practice: Grenade (easy)"] = "Учебная Стрельба: Граната (легко)", -- Target_Practice_-_Grenade_easy
+ ["Target Practice: Grenade (hard)"] = "Учебная Стрельба: Граната (сложно)", -- Target_Practice_-_Grenade_hard
+ ["Target Practice: Homing Bee"] = "Учебная Стрельба: Пчёлка", -- Target_Practice_-_Homing_Bee
+ ["Target Practice: Shotgun"] = "Учебная Стрельба: Дробовик", -- Target_Practice_-_Shotgun
["Team %d: "] = "Команда %d: ",
- ["Team Scores"] = "Очки команды", -- Control, Space_Invasion
--- ["Teleporation Node"] = "", -- Construction_Mode
--- ["Teleportation Mode"] = "", -- Construction_Mode
--- ["Teleportation Node"] = "", -- Construction_Mode
+ ["Team of Hearts"] = "Команда сердец", -- Challenge_-_Speed_Shoppa_-_Hedgelove
+ ["Team Scores"] = "Очки команд", -- Control, Space_Invasion
+ ["Team Zook"] = "Команда Зуки", -- Target_Practice_-_Bazooka_easy, Target_Practice_-_Bazooka_hard
+ ["Teleportation Mode"] = "Режим Телепортации", -- Construction_Mode
+ ["Teleportation Node"] = "Узел Телепортации", -- Construction_Mode
-- ["Teleport"] = "", -- Construction_Mode, Frenzy
-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon
--- ["Teleport Unsuccessful. Please teleport within a clan teleporter's sphere of influence."] = "", -- Construction_Mode
+ ["Teleport Unsuccessful. Please teleport within a clan teleporter's sphere of influence."] = "Неудачная Телепортация. Вы можете телепортироваться только в области влияния ваших телепортов.", -- Construction_Mode
-- ["Thanks!"] = "", -- A_Classic_Fairytale:family
-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family
-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey
@@ -852,43 +949,46 @@
-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab
-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab
-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow
--- ["That Sinking Feeling"] = "",
+ ["That Sinking Feeling"] = "Дед Мазай и Ёжики",
-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy
-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family
-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united
-- ["That was pointless."] = "",
-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab
--- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal
--- ["The Bottom Feeder can score points by killing anyone."] = "", -- Mutant
+ ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "Весь пол покрыт анти-портальной краской и мне нечем его убить... Может сбросить на него что-то?..", -- portal
+ ["The Bottom Feeder can score points by killing anyone."] = "Аутсайдер может заработать очки убив любого.", -- Mutant
-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood
-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united
-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood
+ ["The Customer is King"] = "Покупатель это Король", -- Challenge_-_Speed_Shoppa_-_ShoppaKing
-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow
-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon
--- ["The enemy is hiding out on yonder ducky!"] = "",
+ ["The enemy is hiding out on yonder ducky!"] = "Враг прячется на соседней утке!",
-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy
-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood
-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow
--- ["The first player to kill someone becomes the Mutant."] = "", -- Mutant
--- ["The flag will respawn next round."] = "",
+ ["The first player to kill someone becomes the Mutant."] = "Первый игрок, убивший кого-либо, становится Мутантом.", -- Mutant
+ ["The flag will respawn next round."] = "Флаг опять появится в следующем раунде.",
+ ["The flood has stopped! Challenge over."] = "Наводнение остановилось! Испытание закончено.", -- User_Mission_-_That_Sinking_Feeling
-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab
-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood
--- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape
--- ["The Great Hog in the sky sees your sadness and grants you a boon."] = "", -- Construction_Mode
+ ["The Great Escape"] = "Великий Побег", -- User_Mission_-_The_Great_Escape
+ ["The Great Hog in the sky sees your sadness and grants you a boon."] = "Великий Ёж на небесах видит вашу печаль и благословляет вас даром.", -- Construction_Mode
-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow
+ ["The Hogies"] = "Боевые Ежи", -- Target_Practice_-_Cluster_Bomb
-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow
-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united
-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey
-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood
-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey
--- ["The Mutant has super-weapons and a lot of health."] = "", -- Mutant
--- ["The Mutant loses health quickly if he doesn't keep scoring kills."] = "", -- Mutant
--- ["The Nameless One"] = "",
--- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope
+ ["The Mutant has super-weapons and a lot of health."] = "У Мутанта есть супер-оружие и много здоровья.", -- Mutant
+ ["The Mutant loses health quickly if he doesn't keep scoring kills."] = "Мутант быстро теряет здоровье, если не зарабатывает очки за убийства.", -- Mutant
+ ["The Nameless One"] = "Дед Мазай",
+ ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "Следующая цель довольно сложна! |Подсказка: Нужно сделать несколько раскачиваний!", -- Basic_Training_-_Rope
-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow
-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood
--- ["The player with least points (or most deaths) becomes the Bottom Feeder."] = "", -- Mutant
--- ["There are a variety of structures available to aid you."] = "", -- Construction_Mode
+ ["The player with least points (or most deaths) becomes the Bottom Feeder."] = "Игрок с наименьшим количеством очков становится Аутсайдером.", -- Mutant
+ ["There are a variety of structures available to aid you."] = "Множество сооружений доступны вам в помощь.", -- Construction_Mode
-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab
-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united
-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey
@@ -900,7 +1000,7 @@
-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow
-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow
-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood
--- ["THE SPECIALISTS"] = "",
+ ["THE SPECIALISTS"] = "СПЕЦИАЛИСТЫ",
-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood
-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood
-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey
@@ -927,28 +1027,33 @@
-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon
-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow
-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab
--- ["This one's tricky."] = "",
--- ["This rain is really something..."] = "",
+ ["This one's tricky."] = "Это непростая цель.",
+ ["This rain is really something..."] = "Этот дождь нескончаем...",
+ ["This was an awesome performance! But this challenge can be finished with even just one RC plane. Can you figure out how?"] = "Потрясающее исполнение! Но это испытание можно пройти всего с одним самолётом. Знаете как?", -- User_Mission_-_RCPlane_Challenge
-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy
-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family
-- ["Timed Kamikaze!"] = "",
-- ["Time Extended!"] = "",
-- ["Time Extension"] = "",
["TIME: "] = "ВРЕМЯ: ",
--- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope
+ ["Time's up!"] = "Время вышло!", -- Basic_Training_-_Sniper_Rifle
+ ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "Подсказка: Поведение верёвки отличается от того, что в реальном мире, |используй это как преимущество!", -- Basic_Training_-_Rope
-- ["Toggle Shield"] = "",
-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey
+ ["Top-class elite pilot"] = "Элитный пилот топ класса", -- User_Mission_-_RCPlane_Challenge
-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow
-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey
-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon
-- ["To the caves..."] = "", -- A_Classic_Fairytale:united
--- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["TRACK COMPLETED"] = "",
+ ["Toxic Team"] = "Токсичные", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["TRACK COMPLETED"] = "ТРЕК ЗАВЕРШЕН",
--- ["training"] = "", -- portal
+ ["Trainee"] = "Ученик", -- TargetPractice
+ ["training"] = "Тренировка", -- portal
+ ["Training Team"] = "Обучающиеся", -- TargetPractice
-- ["Traitors"] = "", -- A_Classic_Fairytale:epil
-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab
--- ["TrophyRace"] = "",
+ ["TrophyRace"] = "Трофейная Гонка",
-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united
-- ["T_T"] = "",
-- ["Tumbling Time Extended!"] = "",
@@ -958,53 +1063,57 @@
-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey
-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow
-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy
--- ["ULTRA KILL"] = "", -- Mutant
+ ["ULTRA KILL"] = "УЛЬТРА УБИЙСТВО", -- Mutant
-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow
-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon
-- ["Unique new weapons"] = "", -- Continental_supplies
--- ["Unit"] = "",
+ ["Unit"] = "Юнит", -- User_Mission_-_Newton_and_the_Hammock
-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family
-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united
--- ["Unit 3378"] = "",
--- ["Unit 835"] = "",
+ ["Unit 3378"] = "Юнит 3378",
+ ["Unit 835"] = "Юнит 835", -- User_Mission_-_Bamboo_Thicket
-- ["United We Stand"] = "", -- A_Classic_Fairytale:united
--- ["Unlimited Attacks"] = "",
--- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge
+ ["Unlimited Attacks"] = "Бесконечные атаки",
+ ["Unlucky Sods"] = "Неудачники", -- User_Mission_-_Rope_Knock_Challenge
-- ["Unstoppable!"] = "",
--- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge
+ ["Unsuspecting Louts"] = "Доверчивые хамы", -- User_Mission_-_Rope_Knock_Challenge
-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood
+ ["Upper-class elite pilot"] = "Элитный пилот высшего класса", -- User_Mission_-_RCPlane_Challenge
-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon
-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood
--- ["User Challenge"] = "",
--- ["Use the air-attack weapons and the arrow keys to select structures."] = "", -- Construction_Mode
+ ["User Challenge"] = "Одиночная Миссия",
+ ["Use the air-attack weapons and the arrow keys to select structures."] = "Используйте 'Воздушную атаку' и стрелки, чтобы выбрать сооружение.", -- Construction_Mode
-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon
-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge
+ ["Use the portal to move fast and far, use it to kill, use it with caution!"] = "Используй портал для перемещения, используй его для убийства, используй его с осторожностью!", -- portal
+ ["Use the rope to knock your enemies to their doom."] = "Используйте веревку, чтобы сбить врагов к их гибели.", -- User_Mission_-_Rope_Knock_Challenge
-- ["Use your ready time to think."] = "", -- Frenzy
--- ["Use your rope to get from start to finish as fast as you can!"] = "",
--- ["Utility Crate Placement Mode"] = "", -- Construction_Mode
--- ["Vampirism"] = "", -- Construction_Mode
+ ["Use your rope to collect all crates as fast as possible."] = "Используйте веревку, чтобы собрать все ящики как можно быстрее.", -- SpeedShoppa
+ ["Use your rope to get from start to finish as fast as you can!"] = "Используй веревку, чтобы добраться от старта до финиша как можно быстрее!",
+ ["Utility Crate Placement Mode"] = "Режим Размещения Ящиков с Утилитами", -- Construction_Mode
+ ["Vampirism"] = "Вампиризм", -- Construction_Mode
-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey
-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy
--- ["Victory!"] = "", -- Basic_Training_-_Rope
--- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
+ ["Victory!"] = "Победа!", -- Basic_Training_-_Rope
+ ["Victory for the "] = "Победа за ", -- CTF_Blizzard, Capture_the_Flag
+ ["voldemort"] = "Волан-де-Морт", -- portal
-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Walls Left"] = "", -- WxW
--- ["Walls Required"] = "", -- WxW
--- ["WALL TO WALL"] = "", -- WxW
--- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge
--- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge
+ ["Walls Left"] = "Стен осталось", -- WxW
+ ["Walls Required"] = "Стен Необходимо", -- WxW
+-- ["WALL TO WALL"] = "ОТ СТЕНЫ К СТЕНЕ", -- WxW
+ ["Wannabe Flyboys"] = "Хочу быть Пилотом", -- User_Mission_-_RCPlane_Challenge
+ ["Wannabe Shoppsta"] = "Хочу быть Шоппером", -- User_Mission_-_Rope_Knock_Challenge
-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood
--- ["Watermelon Bomb"] = "", -- Construction_Mode
--- ["Waypoint placed."] = "",
--- ["Way-Points Remaining"] = "",
+ ["Watermelon Bomb"] = "Арбузная бомба", -- Construction_Mode
+ ["Waypoint placed."] = "Контрольная Точка добавлена.",
+ ["Way-Points Remaining"] = "Контрольных Точек осталось",
-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow
-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood
--- ["Weapon Crate Placement Mode"] = "", -- Construction_Mode
--- ["Weapon Filter"] = "", -- Construction_Mode
+ ["Weapon Crate Placement Mode"] = "Режим Размещения Ящиков с Оружием", -- Construction_Mode
+ ["Weapon Filter"] = "Фильтр Оружия", -- Construction_Mode
-- ["weaponschemes"] = "", -- Continental_supplies
--- ["Weapons Reset"] = "",
--- ["Weapons reset."] = "", -- Highlander
+ ["Weapons Reset"] = "Сброс оружия",
+ ["Weapons reset."] = "Сброс оружия.", -- Highlander
-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab
-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow
-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united
@@ -1014,7 +1123,7 @@
-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united
-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy
-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey
--- ["Well done."] = "",
+ ["Well done."] = "Отлично.",
-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy
-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab
-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon
@@ -1037,7 +1146,7 @@
-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab
-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow
--- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal
+ [" What !! For all of this struggle i just win some ... TIME o0"] = " ЧТО ?! За все эти страдания я выиграл только немного ... ВРЕМЕНИ o0", -- portal
-- ["What has "] = "", -- A_Classic_Fairytale:backstab
-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab
-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy
@@ -1055,7 +1164,7 @@
-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy
-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab
-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united
--- ["Whip"] = "", -- Construction_Mode
+ ["Whip"] = "Кнут", -- Construction_Mode
-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab
-- ["Why "] = "", -- A_Classic_Fairytale:backstab
-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united
@@ -1067,14 +1176,15 @@
-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy
-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab
-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab
+ ["Will be useful if I need a new plateform or if I want to rise...."] = "Это пригодится, чтобы подняться выше...", -- portal
-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies
-- ["- Will give you an airstrike every fifth turn."] = "", -- Continental_supplies
-- ["- Will give you a parachute every second turn."] = "", -- Continental_supplies
--- ["Will this ever end?"] = "",
--- ["WINNER IS "] = "", -- Mutant
--- ["WINNING TIME: "] = "",
+ ["Will this ever end?"] = "Когда уже конец?",
+ ["WINNER IS "] = "ПОБЕДИЛ ", -- Mutant
+ ["WINNING TIME: "] = "ПОБЕДНОЕ ВРЕМЯ: ",
-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey
-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon
@@ -1095,26 +1205,48 @@
-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy
-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united
-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon
--- ["You can't fire a portal on the blue surface"] = "", -- portal
+ ["You can't fire a portal on the blue surface"] = "Нельзя ставить порталы на синюю поверхность", -- portal
-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey
--- ["You'd almost swear the water was rising!"] = "",
+ ["You'd almost swear the water was rising!"] = "Могу поклясться, что вода прибывает!",
-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey
--- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope
+ ["You did not make it in time, try again!"] = "Время вышло, попробуй еще раз!", -- Basic_Training_-_Rope
+ ["You had %.2fs remaining on the clock (+%d points)."] = "У вас оставалось %.2f секунд на таймере (+%d очков).", -- Basic_Training_-_Sniper_Rifle
+ ["You had %.1fs remaining on the clock (+%d points)."] = "У вас оставалось %.1f секунд на таймере (+%d очков).", -- TargetPractice
-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab
-- ["You have "] = "", -- A_Classic_Fairytale:dragon
-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab
--- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope
--- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope
+ ["You have been respawned, at your last checkpoint!"] = "Ты возродился на последней контрольной точке!", -- Basic_Training_-_Rope
+ ["You have been respawned, be more carefull next time!"] = "Ты возродился, будь осторожней в следующий раз!", -- Basic_Training_-_Rope
-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united
+ ["You have collected %d out of %d crate(s)."] = "Вы собрали %d из %d ящиков.", -- SpeedShoppa
+ ["You have destroyed %d of %d targets."] = "Вы уничтожили %d из %d целей.", -- Basic_Training_-_Bazooka
+ ["You have destroyed %d of %d targets (+%d points)."] = "Вы уничтожили %d из %d целей (+%d очков).", -- Basic_Training_-_Sniper_Rifle
+ ["You have dropped %d missiles."] = "Вы запустили %d ракет.", -- User_Mission_-_RCPlane_Challenge
-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey
-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab
-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy
+ ["You have finished the bazooka training!"] = "Вы прошли тренировку с базукой!", -- Basic_Training_-_Bazooka
+ ["You have finished the challenge!"] = "Вы прошли испытание!", -- User_Mission_-_RCPlane_Challenge
+ ["You have finished the challenge in %.3f s."] = "Вы прошли испытание за %.3f сек.", -- SpeedShoppa
+ ["You have finished the target practice!"] = "Вы завершили учебную стрельбу!", -- TargetPractice
+ ["You have gained an achievement: %s"] = "Вы получили достижение: %s", -- User_Mission_-_RCPlane_Challenge
-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy
-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab
+ ["You have launched %d bazookas."] = "Вы запустили %d базук.", -- Basic_Training_-_Bazooka
+ ["You have launched %d homing bees."] = "Вы запустили %d пчёлок.", -- Target_Practice_-_Homing_Bee
+ ["You have made %d shots."] = "Вы сделали %d выстрелов.", -- Basic_Training_-_Sniper_Rifle
+ ["You haven't rescued anyone."] = "Вы никого не спасли.", -- User_Mission_-_That_Sinking_Feeling
+ ["You have obtained an achievement: Lively Lifeguard"] = "Вы получили достижение: Живучий Спасатель", -- User_Mission_-_That_Sinking_Feeling
+ ["You have perfectly beaten the challenge!"] = "Вы прекрасно прошли испытание!", -- User_Mission_-_RCPlane_Challenge
-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood
-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy
--- ["You have SCORED!!"] = "",
--- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb
+ ["You have SCORED!!"] = "Вы доставили флаг!!",
+ ["You have shot %d times."] = "Вы выстрелили %d раз.", -- TargetPractice
+ ["You have thrown %d grenades."] = "Вы бросили %d гранат.", -- Target_Practice_-_Grenade_easy, Target_Practice_-_Grenade_hard
+ ["You have to destroy 12 targets in 180 seconds"] = "Тебе надо уничтожить 12 целей за 180 секунд", -- Basic_Training_-_Cluster_Bomb
+ ["You have used only 1 RC plane. Outstanding!"] = "Вы использовали всего 1 самолёт. Выдающееся достижение!", -- User_Mission_-_RCPlane_Challenge
+ ["You have used %d RC planes."] = "Вы использовали %d самолётов.", -- User_Mission_-_RCPlane_Challenge
+ ["You have successfully finished the sniper rifle training!"] = "Вы успешно завершили тренировку со снайперской винтовкой!", -- Basic_Training_-_Sniper_Rifle
-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy
-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab
-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow
@@ -1122,33 +1254,42 @@
-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab
-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab
-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy
--- ["You may only attack from a rope!"] = "", -- WxW
--- ["You may only spawn 5 crates per turn."] = "", -- Construction_Mode
--- ["You may only use 1 Extra Time per turn."] = "", -- Construction_Mode
+ ["You lose!"] = "Вы проиграли!", -- Basic_Training_-_Bazooka
+ ["You may only attack from a rope!"] = "Вы можете атаковать только с верёвки!", -- WxW
+ ["You may only spawn 5 crates per turn."] = "Вы можете создавать только 5 ящиков за ход.", -- Construction_Mode
+ ["You may only use 1 Extra Time per turn."] = "Вы можете использовать Дополнительное Время только один раз за ход.", -- Construction_Mode
-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy
-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab
+ ["You must survive the flood in order to score."] = "Вы должны пережить наводнение, чтобы заработать очки.", -- User_Mission_-_That_Sinking_Feeling
-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united
-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood
+ ["Your accuracy was %.1f%%."] = "Ваша точность составила %.1f%%.", -- Basic_Training_-_Bazooka
+ ["Your accuracy was %.1f%% (+%d points)."] = "Ваша точность составила %.1f%% (+%d очков).", -- TargetPractice
-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy
-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow
-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab
-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab
-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey
--- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope
+ ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "У тебя хорошо получается! |Подсказка: Когда веревка укорачивается, ты двигаешься быстрее! |А когда удлиняется - медленнее!", -- Basic_Training_-_Rope
-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow
-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab
-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow
+ ["Your hedgehog died!"] = "Ваш ёж умер!", -- User_Mission_-_That_Sinking_Feeling
-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey
-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood
+ ["Your rank: %s"] = "Ваш ранк: %s", -- User_Mission_-_RCPlane_Challenge
-- ["You saved"] = "",
+ ["You saved %d of 8 Hapless Hogs."] = "Вы спасли %d из 8 Несчастных Ёжиков", -- User_Mission_-_That_Sinking_Feeling
-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy
--- ["You've failed. Try again."] = "",
--- ["You've reached the goal!| |Time: "] = "",
+ ["You've failed. Try again."] = "Ты проиграл. Попробуй еще раз.",
+ ["You've reached the goal!| |Time: "] = "Вы достигли цели!| |Время: ",
-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow
-- ["- You will recieve 2-4 weapons on each kill! (Even on own hogs)"] = "", -- Continental_supplies
-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab
-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family
-- ["Zealandia"] = "", -- Continental_supplies
--- ["'Zooka Team"] = "",
+ ["zombi"] = "Зомби", -- portal
+ ["Zook"] = "Зук", -- Target_Practice_-_Bazooka_easy, Target_Practice_-_Bazooka_hard
+ ["'Zooka Team"] = "Команда Зука",
-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
}
--- a/share/hedgewars/Data/Locale/ru.txt Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Locale/ru.txt Mon Nov 09 16:34:03 2015 +0000
@@ -42,7 +42,7 @@
00:39=Летающая тарелка
00:40=Коктейль Молотова
00:41=Птичка
-00:42=Портативный телепорт
+00:42=Портальная Пушка
00:43=Фортепьяновый удар
00:44=Старый Лимбургер
00:45=Синус-пушка (бета)
@@ -59,6 +59,7 @@
00:55=Замораживатель
00:56=Секач
00:57=Батут
+00:58=Воздушная мина
01:00=Вперёд к победе!
01:01=Ничья
@@ -83,6 +84,9 @@
01:20=%1 отскок
01:21=Звук отключен
01:22=Режим отсутствия
+01:23=Авто Камера Выкл.
+01:24=Авто Камера Вкл.
+01:25=Нажмите кнопку мишени для указания цели
; Event messages
; Hog (%1) died
@@ -454,6 +458,10 @@
03:53=Модель 40
;03:54=Построй что нибудь
03:54=Полезная вещь
+03:55=Холоднее уже не будет!
+03:56=Употребляй или злоупотребляй
+03:57=Полезная вещь
+03:58=Летающая неконтактная бомба
; Weapon Descriptions (use | as line breaks)
04:00=Атакуй своих врагов обычной гранатой.|Она взорвется сразу, как только таймер|достигнет нуля.|1-5: Установить таймер гранаты|Атака: Удерживай для более дальнего броска
@@ -506,6 +514,15 @@
04:47=Удвой веселье с двумя шипованными, коварными,|липучими минами. Устрой цепную реакцию или|защити себя (или то и другое!)|Атака: Удерживай для более дальнего броска|(дважды)
04:48=Почему кротам достаются все оскорбления?|Вакингующий ёж может быть столь забавным!|Хороший удар этого молота сбреет треть|здоровья ежа и погрузит его в землю.|Атака: Ударить молотом
04:49=Воскреси своих друзей!|Но будь осторожен, т.к. оно также воскресит|твоих врагов.|Атака: Удерживай атаку нажатой для медленного|воскрешения|Вверх: Ускорить воскрешение
+04:50=Кто-то скрывается под землёй?|Достань их сверлящим ударом!|Таймер контролирует глубину бурения.|Влево/Вправо: Определить направление атаки|1-5: Установить таймер|Курсор: Выбрать бомбардируемую область
+04:51=Швырни в противника комок грязи задаром!|Не наносит урона, но сталкивает|ежей и другие объекты назад.|Атака: Удерживай для более дальнего броска
+04:52=Не используется
+04:53=Проделайте путь сквозь время и пространство,|пока ваши соратники борятся в одиночестве.|Будьте готовы вернуться в любое время,|при Внезапной Смерти или когда все союзники повержены.|Предупреждение. Не работает во время Внезапной Смерти,|если вы один или если вы Король.|Атака: Активировать
+04:54=Распыляет поток липких хлопьеы.|Строит мосты, хоронит врагов, перекрывает туннели.|Будьте осторожны - эти хлопья не прилипают к вам!|Атака: Активировать|Вверх/Вниз: Продолжать прицельную стрельбу|Влево/Вправо: Изменить силу (дальность) распыления
+04:55=Bерните ледниковый период!|Замораживает ежей, делает пол скользким или|спасает вас от утопления, замораживая воду.|Атака: Включить/Выключить замораживатель|Вверх/Вниз: Продолжать прицельную стрельбу
+04:56=Вы можете бросить два секача во врага,|заблокировать проходы и туннели|и даже использовать их для восхождения!|Bострожно! Игры с ножами опасны.|Атака: Удерживай для выстрела с большей силой (дважды)
+04:57=Строит ОЧЕНЬ эластичный батут, от которого|ежи и другие объекты будут отскакивать|без получения урона.|Влево/Вправо: Изменить положение батута|Курсор: Разместить батут в нужной позиции
+04:58=Эта неконтактная бомба будет свободно летать в воздухе|и следовать за неосторожными ежами,|подходящими к ней слишком близко.|Однако, урон от взрыва слабее урона от обычной мины.|Атака: Удерживай для выстрела с большей силой
; Game goal strings
05:00=Режимы игры
--- a/share/hedgewars/Data/Locale/stub.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Locale/stub.lua Mon Nov 09 16:34:03 2015 +0000
@@ -10,8 +10,11 @@
-- ["+2 for becoming a Mutant"] = "", -- Mutant
-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow
-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy
+-- ["Above-average pilot"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Accuracy Bonus!"] = "",
+-- ["Accuracy bonus: +%d points"] = "", -- Basic_Training_-_Sniper_Rifle
-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge
+-- ["Achievement obtained: Lively Lifeguard"] = "", -- User_Mission_-_That_Sinking_Feeling
-- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler
-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood
-- ["???"] = "", -- A_Classic_Fairytale:backstab
@@ -30,6 +33,7 @@
-- ["a Hedgewars tag game"] = "", -- Mutant
-- ["AHHh, home sweet home. Made it in %d seconds."] = "", -- ClimbHome
-- ["Aiming Practice"] = "", --Bazooka, Shotgun, SniperRifle
+-- ["Aiming practice"] = "", -- TargetPractice
-- ["Air Attack"] = "", -- Construction_Mode
-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood
-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow
@@ -71,13 +75,16 @@
-- ["Attack From Rope"] = "", -- WxW
-- ["Australia"] = "", -- Continental_supplies
-- ["Available points remaining: "] = "",
+-- ["Average pilot"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab
-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united
-- ["[Backspace]"] = "",
-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab
+-- ["Bad Guy"] = "", -- User_Mission_-_The_Great_Escape
+-- ["badmad"] = "", -- portal
-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape
-- ["Ballgun"] = "", -- Construction_Mode
--- ["Bamboo Thicket"] = "",
+-- ["Bamboo Thicket"] = "", -- User_Mission_-_Bamboo_Thicket
-- ["Barrel Eater!"] = "",
-- ["Barrel Launcher"] = "",
-- ["Barrel Placement Mode"] = "", -- Construction_Mode
@@ -88,6 +95,8 @@
-- ["Bazooka"] = "", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
-- ["Bazooka Training"] = "",
-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen
+-- ["Beginner"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["Below-average pilot"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Best laps per team: "] = "",
-- ["Best Team Times: "] = "",
-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon
@@ -101,12 +110,14 @@
-- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
-- ["Blowtorch"] = "", -- Construction_Mode, Frenzy
-- ["Blue Team"] = "", -- User_Mission_-_Dangerous_Ducklings
+-- ["Bobo"] = "", -- User_Mission_-_Nobody_Laugh
-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab
-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow
-- ["BOOM!"] = "",
-- ["Boom!"] = "",
-- ["Boss defeated!"] = "",
-- ["Boss Slayer!"] = "",
+-- ["BOTTOM FEEDER"] = "", -- Mutant
-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey
-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow
-- ["Brainila"] = "", -- A_Classic_Fairytale:united
@@ -125,6 +136,8 @@
-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab
-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy
-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey
+-- ["C-1"] = "", -- portal
+-- ["C-2"] = "", -- portal
-- ["Cake"] = "", -- Construction_Mode
-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family
-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood
@@ -133,9 +146,13 @@
-- ["CAPTURE THE FLAG"] = "",
-- ["Careless"] = "",
-- ["Carol"] = "", -- A_Classic_Fairytale:family
+-- ["Challenge"] = "", -- SpeedShoppa
-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["Challenge completed!"] = "", -- SpeedShoppa
+-- ["Challenge failed!"] = "", -- SpeedShoppa
-- ["Change Weapon"] = "",
-- ["changing range from %i%% to %i%% with period of %i msec"] = "", -- Gravity
+-- ["Cheater"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow
-- ["Cleaver"] = "", -- Construction_Mode
-- ["Cleaver Placement Mode"] = "", -- Construction_Mode
@@ -160,29 +177,36 @@
-- ["Configuration accepted."] = "", -- WxW
-- ["Congratulations!"] = "",
-- ["Congratulations"] = "", -- Basic_Training_-_Rope
+-- ["Congratulations! You have destroyed all targets within the time."] = "", -- TargetPractice
+-- ["Congratulations! You have truly mastered this challenge! Don't forget to save the demo."] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb
-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope
-- ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "", --Bazooka, Shotgun, SniperRifle
-- ["CONSTRUCTION MODE"] = "", -- Construction_Mode
-- ["Construction Station"] = "", -- Construction_Mode
-- ["Continental supplies"] = "", -- Continental_supplies
--- ["Control pillars to score points."] = "",
+-- ["CONTROL"] = "", -- Control
+-- ["Control pillars to score points."] = "", -- Control
+-- ["Copper"] = "", -- User_Mission_-_Nobody_Laugh
-- ["Core"] = "", -- Construction_Mode
-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen
-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow
-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil
-- ["Cost"] = "", -- Construction_Mode
-- ["Crate Placement Tool"] = "", -- Construction_Mode
--- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["Crates left: %d"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["crate(s)"] = "", -- SpeedShoppa
+-- ["%d crate(s) remaining"] = "", -- SpeedShoppa
-- ["Cricket time: [Drop a fireable mine! ~ Will work if fired close to your hog & far away from enemy ~ 1 sec]"] = "", -- Continental_supplies
-- ["Current setting is "] = "", -- Gravity
--- ["Cybernetic Empire"] = "",
+-- ["Cybernetic Empire"] = "", -- User_Mission_-_Bamboo_Thicket
-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy
-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab
-- ["DAMMIT, ROOKIE!"] = "",
-- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "",
--- ["Dangerous Ducklings"] = "",
+-- ["Dangerous Ducklings"] = "", -- User_Mission_-_Dangerous_Ducklings
-- ["Deadweight"] = "",
+-- ["deaths"] = "", -- Mutant
-- ["Decrease"] = "", -- Continental_supplies
-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab
-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united
@@ -191,20 +215,25 @@
-- ["Defend your core from the enemy."] = "", -- Construction_Mode
-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow
-- ["Dematerializes weapons and equipment carried by enemy hedgehogs."] = "", -- Construction_Mode
+-- ["Demo"] = "", -- The_Specialists
-- ["Demolition is fun!"] = "",
-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united
-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow
-- ["Depleted Kamikaze!"] = "",
+-- ["Derp"] = "", -- User_Mission_-_Nobody_Laugh
-- ["Desert Eagle"] = "", -- Construction_Mode, A_Space_Adventure:death02
-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Destroy invaders to score points."] = "",
-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood
-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood
+-- ["Destroyer of planes"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united
-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow
-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow
-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon
+-- ["Disabled"] = "", -- WxW
-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies
+-- ["Disqualified!"] = "", -- User_Mission_-_That_Sinking_Feeling
-- ["Dist: "] = "", -- Space_Invasion
-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab
-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood
@@ -220,7 +249,8 @@
-- ["Drone Hunter!"] = "",
-- ["Drop a bomb: [Drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies
--- ["Drowner"] = "",
+-- ["Drowner"] = "", -- User_Mission_-_Nobody_Laugh
+-- ["Drunk greenhorn"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family
-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey
-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab
@@ -239,6 +269,7 @@
-- ["Eagle Eye: [Blink to the impact ~ One shot]"] = "", -- Continental_supplies
-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil
+-- ["Eckles"] = "", -- User_Mission_-_Nobody_Laugh
-- ["Elderbot"] = "", -- A_Classic_Fairytale:family
-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape
-- ["Eliminate all enemies"] = "",
@@ -250,8 +281,11 @@
-- ["Eliminate the enemy hogs to win."] = "",
-- ["Eliminate the enemy specialists."] = "",
-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
+-- ["Elite pilot"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
--- ["Energetic Engineer"] = "",
+-- ["Enabled"] = "", -- WxW
+-- ["Energetic Engineer"] = "", -- User_Mission_-_Bamboo_Thicket
+-- ["Engineer"] = "", -- The_Specialists
-- ["Enjoy the swim..."] = "",
-- ["[Enter]"] = "",
-- ["Europe"] = "", -- Continental_supplies
@@ -260,6 +294,7 @@
-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon
-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy
-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab
+-- ["Experienced beginner"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Extra Damage"] = "", -- Construction_Mode
-- ["Extra Time"] = "", -- Construction_Mode
-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey
@@ -288,10 +323,12 @@
-- ["Flamer"] = "",
-- ["Flamethrower"] = "", -- Construction_Mode
-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab
+-- ["Flawless victory!"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey
-- ["Flying Saucer"] = "", -- Construction_Mode, Frenzy
-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW
+-- ["Frank"] = "", -- User_Mission_-_Nobody_Laugh
-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey
-- ["Freezer"] = "", -- Construction_Mode
-- ["FRENZY"] = "", -- Frenzy
@@ -338,14 +375,18 @@
-- ["Grants nearby hogs life-regeneration."] = "", -- Construction_Mode
-- ["Gravity"] = "", -- Gravity
-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow
+-- ["GREAT ! Let's kill all this enemies, using portals"] = "", -- portal
-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope
-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow
+-- ["Greenhorn"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Green lipstick bullet: [Poisonous, deals no damage]"] = "", -- Continental_supplies
-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon
-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow
-- ["Grenade"] = "", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
+-- ["Grenade Group"] = "", -- Target_Practice_-_Grenade_easy, Target_Practice_-_Grenade_hard
-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade
+-- ["Grenadier"] = "", -- Target_Practice_-_Grenade_easy, Target_Practice_-_Grenade_hard
-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade
-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab
-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy
@@ -355,7 +396,8 @@
-- ["Hammer"] = "", -- Construction_Mode, Continental_supplies
-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil
-- ["Hapless Hogs"] = "",
--- [" Hapless Hogs left!"] = "",
+-- ["%d Hapless Hogs left"] = "",
+-- ["Harry"] = "", -- User_Mission_-_Nobody_Laugh
-- [" HAS MUTATED"] = "", -- Mutant
-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen
-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow
@@ -363,6 +405,7 @@
-- ["Healing Station"] = "", -- Construction_Mode
-- ["Health Crate Placement Mode"] = "", -- Construction_Mode
-- ["Health crates extend your time."] = "",
+-- ["Heartful"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
-- ["Heavy"] = "",
-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united
-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy
@@ -372,6 +415,7 @@
-- ["Hedgewars-Knockball"] = "",
-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab
-- ["Heh, it's not that bad."] = "",
+-- ["Hell Army"] = "", -- portal
-- ["Hellish Handgrenade"] = "", -- Construction_Mode
-- ["Hello again, "] = "", -- A_Classic_Fairytale:family
-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey
@@ -389,6 +433,7 @@
-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united
-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey
-- ["HIGHLANDER"] = "", -- Highlander
+-- ["hiden"] = "", -- portal
-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood
-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood
-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey
@@ -396,6 +441,7 @@
-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey
-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Hit Combo!"] = "",
+-- ["hits"] = "", -- Basic_Training_-_Bazooka
-- ["Hmmm..."] = "",
-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy
-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal
@@ -406,7 +452,9 @@
-- ["HOLY SHYTE!"] = "", -- Mutant
-- ["Homing Bee"] = "", -- Construction_Mode
-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy
+-- ["Hook"] = "", -- Challenge_-_Speed_Shoppa_-_Ropes
-- ["Hooray!"] = "",
+-- ["Hopeless case"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family
-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey
-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon
@@ -438,6 +486,7 @@
-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey
-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow
-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow
+-- ["Igmund"] = "", -- User_Mission_-_Nobody_Laugh
-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon
-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow
-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow
@@ -447,6 +496,7 @@
-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab
-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family
-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey
+-- ["Ikeda"] = "", -- User_Mission_-_Bamboo_Thicket
-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow
-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood
-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab
@@ -471,18 +521,23 @@
-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon
-- ["INSANITY"] = "", -- Mutant
-- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+-- ["Insufficient Power"] = "", -- Construction_Mode
-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy
-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab
-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow
-- ["invaders destroyed"] = "",
+-- ["Invalid Placement"] = "", -- Construction_Mode
-- ["Invasion"] = "", -- A_Classic_Fairytale:united
-- ["Invulnerable"] = "", -- Construction_Mode
+-- ["In your best (and only) flight you took out %d crates with one RC plane!"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["In your best flight you took out %d crates with one RC plane."] = "", -- User_Mission_-_RCPlane_Challenge
-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow
-- ["I see..."] = "", -- A_Classic_Fairytale:shadow
-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood
-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood
-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab
-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab
+-- ["I should get myself a portal gun, maybe this crate has one"] = "", -- portal
-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon
-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon
-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon
@@ -529,6 +584,7 @@
-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon
-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab
+-- ["King Customer"] = "", -- Challenge_-_Speed_Shoppa_-_ShoppaKing
-- ["Land Sprayer"] = "", -- Construction_Mode
-- ["Laser Sight"] = "", -- Construction_Mode
-- ["Last Target!"] = "",
@@ -542,6 +598,7 @@
-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["[Left Shift]"] = "",
-- ["left shift"] = "", -- Continental_supplies
+-- ["Lestat"] = "", -- portal
-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies
-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey
-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey
@@ -562,7 +619,9 @@
-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab
-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy
-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy
+-- ["Loon"] = "", -- The_Specialists
-- ["Low Gravity"] = "", -- Construction_Mode, Frenzy
+-- ["Lucifer"] = "", -- portal
-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united
-- ["LUDICROUS KILL"] = "", -- Mutant
-- ["Made it!"] = "", -- ClimbHome
@@ -571,6 +630,7 @@
-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies
-- ["MEGA KILL"] = "", -- Mutant
-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab
+-- ["milliseconds"] = "", -- SpeedShoppa
-- ["Mindy"] = "", -- A_Classic_Fairytale:united
-- ["Mine"] = "", -- Construction_Mode, Frenzy
-- ["Mine Deployer"] = "",
@@ -579,8 +639,10 @@
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["Mine Strike"] = "", -- Construction_Mode
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["Mission lost!"] = "", -- Basic_Training_-_Grenade
-- ["MISSION SUCCESS"] = "",
-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["Mission won!"] = "", -- Basic_Training_-_Grenade
-- ["Molotov Cocktail"] = "", -- Construction_Mode
-- ["Molotov"] = "", -- Continental_supplies
-- ["MONSTER KILL"] = "", -- Mutant
@@ -592,6 +654,7 @@
-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow
-- ["-------"] = "", -- Mutant
+-- ["MUTANT"] = "", -- Mutant
-- ["Mutant"] = "", -- Mutant
-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade
-- ["Name"] = "", -- A_Classic_Fairytale:queen
@@ -611,6 +674,7 @@
-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon
-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy
-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen
+-- ["Ninja"] = "", -- The_Specialists
-- ["Nobody Laugh"] = "", -- User_Mission_-_Nobody_Laugh
-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow
-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey
@@ -649,6 +713,7 @@
-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood
-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant
-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood
+-- ["oneye"] = "", -- portal
-- ["on Skip"] = "", -- Continental_supplies
-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united
-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood
@@ -669,14 +734,15 @@
-- ["Per team weapons"] = "", -- Continental_supplies
-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow
+-- ["phosphatoglucidique"] = "", -- portal
-- ["Piano Strike"] = "", -- Construction_Mode
-- ["Pickhammer"] = "", -- Construction_Mode
-- ["Pings left:"] = "", -- Space_Invasion
-- ["Place more waypoints using the 'Air Attack' weapon."] = "",
--- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge
--- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["Planes used: %d"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow
+-- ["player"] = "", -- portal
-- ["Please place the way-point further from the waterline."] = "", -- Racer
-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer
-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow
@@ -688,21 +754,28 @@
-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon
-- ["Portal mission"] = "", -- portal
-- ["Power Remaining"] = "",
+-- ["Predator"] = "", -- portal
-- ["Prepare yourself"] = "",
-- ["presice"] = "", -- Continental_supplies
-- ["Press [Enter] to accept this configuration."] = "", -- WxW
-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood
-- ["Press [Precise] to skip intro"] = "",
-- ["Prestigious Pilot"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["Private Nolak"] = "", -- Target_Practice_-_Cluster_Bomb
-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb
+-- ["Professional pilot"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["Professional stunt pilot"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow
+-- ["Pyro"] = "", -- The_Specialists
-- ["Race complexity limit reached."] = "",
-- ["RACER"] = "",
-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
-- ["Radar Ping"] = "", -- Space_Invasion
-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united
-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow
+-- ["Rank: %s"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["random in range from %i%% to %i%% with period of %i msec"] = "", -- Gravity
+-- ["razac"] = "", -- portal
-- ["RC Plane"] = "", -- Construction_Mode
-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow
@@ -713,14 +786,21 @@
-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope
-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow
-- ["REMOVED"] = "", -- Continental_supplies
+-- ["rescues"] = "", -- User_Mission_-_That_Sinking_Feeling
-- ["Respawner"] = "", -- Construction_Mode
-- ["Resurrector"] = "", -- Construction_Mode
-- ["Resurrects dead hedgehogs."] = "", -- Construction_Mode
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow
+-- ["Rider"] = "", -- portal
-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united
+-- ["ronald"] = "", -- portal
-- ["Rope"] = "", -- Construction_Mode
-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge
+-- ["Rope Master!"] = "", -- Basic_Training_-_Rope
+-- ["Roper"] = "", -- SpeedShoppa
+-- ["Ropes and Crates"] = "", -- Challenge_-_Speed_Shoppa_-_Ropes
+-- ["Rope Team"] = "", -- Basic_Training_-_Rope
-- ["Rope to safety"] = "", -- ClimbHome
-- ["Rope Training"] = "", -- Basic_Training_-_Rope
-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow
@@ -736,6 +816,7 @@
-- ["s|"] = "",
-- ["Sabotage/Flare: [Sabotage all hogs in the circle and deal ~1 dmg OR Fire a cluster up into the air]"] = "", -- Continental_supplies
+-- ["Saint"] = "", -- The_Specialists
-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united
-- ["Salvation"] = "", -- A_Classic_Fairytale:family
-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon
@@ -749,6 +830,7 @@
-- ["Score"] = "", -- Mutant
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+-- ["%.1f seconds were remaining."] = "", -- Basic_Training_-_Bazooka
-- ["Seduction"] = "", -- Continental_supplies
-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab
-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood
@@ -771,6 +853,8 @@
-- ["Shield OFF:"] = "",
-- ["Shield ON:"] = "",
-- ["Shield Seeker!"] = "",
+-- ["Shoppa Union"] = "", -- Challenge_-_Speed_Shoppa_-_Ropes, Challenge_-_Speed_Shoppa_-_ShoppaKing
+-- ["Shoppers"] = "", -- SpeedShoppa
-- ["Shoryuken"] = "", -- Construction_Mode, Frenzy, A_Space_Adventure:death02
-- ["Shotgun"] = "", -- Continental_supplies
-- ["Shotgun Team"] = "",
@@ -792,16 +876,19 @@
-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy
-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy
-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy
+-- ["Sniper"] = "", -- The_Specialists
-- ["Sniper Rifle"] = "", -- Continental_supplies
-- ["Sniper!"] = "", -- Space_Invasion
-- ["Sniper Training"] = "",
-- ["Sniperz"] = "",
-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood
+-- ["Soldier"] = "", -- The_Specialists
-- ["Some weapons have a second option. Find them with"] = "", -- Continental_supplies
-- ["South America"] = "", -- Continental_supplies
-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow
-- ["Spawn the crate, and attack!"] = "", -- WxW
-- ["Special Weapons:"] = "", -- Continental_supplies
+-- ["Speed Shoppa"] = "", -- SpeedShoppa
-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow
-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united
-- ["Sponge"] = "",
@@ -818,6 +905,7 @@
-- ["Structure Placement Mode"] = "", -- Construction_Mode
-- ["Structure Placement Tool"] = "", -- Construction_Mode
+-- ["Subject"] = "", -- portal
-- ["Sundaland"] = "", -- Continental_supplies
-- ["Super Weapons"] = "", -- WxW
-- ["Support Station"] = "", -- Construction_Mode
@@ -835,9 +923,17 @@
-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon
-- ["Tardis"] = "", -- Construction_Mode
-- ["Target Placement Mode"] = "", -- Construction_Mode
+-- ["Target Practice: Bazooka (easy)"] = "", -- Target_Practice_-_Bazooka_easy
+-- ["Target Practice: Bazooka (hard)"] = "", -- Target_Practice_-_Bazooka_hard
+-- ["Target Practice: Grenade (easy)"] = "", -- Target_Practice_-_Grenade_easy
+-- ["Target Practice: Grenade (hard)"] = "", -- Target_Practice_-_Grenade_hard
+-- ["Target Practice: Homing Bee"] = "", -- Target_Practice_-_Homing_Bee
+-- ["Target Practice: Shotgun"] = "", -- Target_Practice_-_Shotgun
+-- ["Targets left: %d"] = "", -- TargetPractice
-- ["Team %d: "] = "",
+-- ["Team of Hearts"] = "", -- Challenge_-_Speed_Shoppa_-_Hedgelove
-- ["Team Scores"] = "", -- Control, Space_Invasion
--- ["Teleporation Node"] = "", -- Construction_Mode
+-- ["Team Zook"] = "", -- Target_Practice_-_Bazooka_easy, Target_Practice_-_Bazooka_hard
-- ["Teleportation Mode"] = "", -- Construction_Mode
-- ["Teleportation Node"] = "", -- Construction_Mode
-- ["Teleport"] = "", -- Construction_Mode, Frenzy
@@ -863,6 +959,7 @@
-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood
-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united
-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood
+-- ["The Customer is King"] = "", -- Challenge_-_Speed_Shoppa_-_ShoppaKing
-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow
-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon
-- ["The enemy is hiding out on yonder ducky!"] = "",
@@ -871,11 +968,13 @@
-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow
-- ["The first player to kill someone becomes the Mutant."] = "", -- Mutant
-- ["The flag will respawn next round."] = "",
+-- ["The flood has stopped! Challenge over."] = "", -- User_Mission_-_That_Sinking_Feeling
-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab
-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood
-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape
-- ["The Great Hog in the sky sees your sadness and grants you a boon."] = "", -- Construction_Mode
-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow
+-- ["The Hogies"] = "", -- Target_Practice_-_Cluster_Bomb
-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow
-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united
-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey
@@ -929,15 +1028,18 @@
-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab
-- ["This one's tricky."] = "",
-- ["This rain is really something..."] = "",
+-- ["This was an awesome performance! But this challenge can be finished with even just one RC plane. Can you figure out how?"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy
-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family
-- ["TIME: "] = "",
-- ["Timed Kamikaze!"] = "",
-- ["Time Extended!"] = "",
-- ["Time Extension"] = "",
+-- ["Time's up!"] = "", -- Basic_Training_-_Sniper_Rifle
-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope
-- ["Toggle Shield"] = "",
-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey
+-- ["Top-class elite pilot"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow
-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey
-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon
@@ -945,7 +1047,9 @@
-- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["TRACK COMPLETED"] = "",
+-- ["Trainee"] = "", -- TargetPractice
-- ["training"] = "", -- portal
+-- ["Training Team"] = "", -- TargetPractice
-- ["Traitors"] = "", -- A_Classic_Fairytale:epil
-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab
-- ["TrophyRace"] = "",
@@ -962,25 +1066,28 @@
-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow
-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon
-- ["Unique new weapons"] = "", -- Continental_supplies
--- ["Unit"] = "",
+-- ["Unit"] = "", -- User_Mission_-_Newton_and_the_Hammock
-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family
-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united
-- ["Unit 3378"] = "",
--- ["Unit 835"] = "",
+-- ["Unit 835"] = "", -- User_Mission_-_Bamboo_Thicket
-- ["United We Stand"] = "", -- A_Classic_Fairytale:united
-- ["Unlimited Attacks"] = "",
-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge
-- ["Unstoppable!"] = "",
-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge
-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood
+-- ["Upper-class elite pilot"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon
-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood
-- ["User Challenge"] = "",
-- ["Use the air-attack weapons and the arrow keys to select structures."] = "", -- Construction_Mode
-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon
+-- ["Use the portal to move fast and far, use it to kill, use it with caution!"] = "", -- portal
-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge
-- ["Use your ready time to think."] = "", -- Frenzy
+-- ["Use your rope to collect all crates as fast as possible."] = "", -- SpeedShoppa
-- ["Use your rope to get from start to finish as fast as you can!"] = "",
-- ["Utility Crate Placement Mode"] = "", -- Construction_Mode
-- ["Vampirism"] = "", -- Construction_Mode
@@ -988,6 +1095,7 @@
-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy
-- ["Victory!"] = "", -- Basic_Training_-_Rope
-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
+-- ["voldemort"] = "", -- portal
-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood
-- ["Walls Left"] = "", -- WxW
-- ["Walls Required"] = "", -- WxW
@@ -1067,6 +1175,7 @@
-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy
-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab
-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab
+-- ["Will be useful if I need a new plateform or if I want to rise...."] = "", -- portal
-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies
-- ["- Will give you an airstrike every fifth turn."] = "", -- Continental_supplies
-- ["- Will give you a parachute every second turn."] = "", -- Continental_supplies
@@ -1100,21 +1209,43 @@
-- ["You'd almost swear the water was rising!"] = "",
-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey
-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope
+-- ["You had %.2fs remaining on the clock (+%d points)."] = "", -- Basic_Training_-_Sniper_Rifle
+-- ["You had %.1fs remaining on the clock (+%d points)."] = "", -- TargetPractice
-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab
-- ["You have "] = "", -- A_Classic_Fairytale:dragon
-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab
-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope
-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope
-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united
+-- ["You have collected %d out of %d crate(s)."] = "", -- SpeedShoppa
+-- ["You have destroyed %d of %d targets."] = "", -- Basic_Training_-_Bazooka
+-- ["You have destroyed %d of %d targets (+%d points)."] = "", -- Basic_Training_-_Sniper_Rifle
+-- ["You have dropped %d missiles."] = "", -- User_Mission_-_RCPlane_Challenge
-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey
-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab
-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy
+-- ["You have finished the bazooka training!"] = "", -- Basic_Training_-_Bazooka
+-- ["You have finished the challenge!"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["You have finished the challenge in %.3f s."] = "", -- SpeedShoppa
+-- ["You have finished the target practice!"] = "", -- TargetPractice
+-- ["You have gained an achievement: %s"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy
-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab
+-- ["You have launched %d bazookas."] = "", -- Basic_Training_-_Bazooka
+-- ["You have launched %d homing bees."] = "", -- Target_Practice_-_Homing_Bee
+-- ["You have made %d shots."] = "", -- Basic_Training_-_Sniper_Rifle
+-- ["You haven't rescued anyone."] = "", -- User_Mission_-_That_Sinking_Feeling
+-- ["You have obtained an achievement: Lively Lifeguard"] = "", -- User_Mission_-_That_Sinking_Feeling
+-- ["You have perfectly beaten the challenge!"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood
-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy
-- ["You have SCORED!!"] = "",
+-- ["You have shot %d times."] = "", -- TargetPractice
+-- ["You have successfully finished the sniper rifle training!"] = "", -- Basic_Training_-_Sniper_Rifle
+-- ["You have thrown %d grenades."] = "", -- Target_Practice_-_Grenade_easy, Target_Practice_-_Grenade_hard
-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb
+-- ["You have used only 1 RC plane. Outstanding!"] = "", -- User_Mission_-_RCPlane_Challenge
+-- ["You have used %d RC planes."] = "", -- User_Mission_-_RCPlane_Challenge
-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy
-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab
-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow
@@ -1122,13 +1253,17 @@
-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab
-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab
-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy
+-- ["You lose!] = "", -- Basic_Training_-_Bazooka
-- ["You may only attack from a rope!"] = "", -- WxW
-- ["You may only spawn 5 crates per turn."] = "", -- Construction_Mode
-- ["You may only use 1 Extra Time per turn."] = "", -- Construction_Mode
-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy
-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab
+-- ["You must survive the flood in order to score."] = "", -- User_Mission_-_That_Sinking_Feeling
-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united
-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood
+-- ["Your accuracy was %.1f%%."] = "", -- Basic_Training_-_Bazooka
+-- ["Your accuracy was %.1f%% (+%d points)."] = "", -- TargetPractice
-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy
-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow
-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab
@@ -1138,9 +1273,12 @@
-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow
-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab
-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow
+-- ["Your hedgehog died!"] = "", -- User_Mission_-_That_Sinking_Feeling
-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey
-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood
+-- ["Your rank: %s"] = "", -- User_Mission_-_RCPlane_Challenge
-- ["You saved"] = "",
+-- ["You saved %d of 8 Hapless Hogs."] = "", -- User_Mission_-_That_Sinking_Feeling
-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time: "] = "",
@@ -1149,6 +1287,8 @@
-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab
-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family
-- ["Zealandia"] = "", -- Continental_supplies
+-- ["zombi"] = "", -- portal
+-- ["Zook"] = "", -- Target_Practice_-_Bazooka_easy, Target_Practice_-_Bazooka_hard
-- ["'Zooka Team"] = "",
-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen
}
--- a/share/hedgewars/Data/Maps/Control/map.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Maps/Control/map.lua Mon Nov 09 16:34:03 2015 +0000
@@ -369,7 +369,7 @@
--AddCaption(zz) -- number of times it took to work
end
- ShowMission("CONTROL",
+ ShowMission(loc("CONTROL"),
"",
loc("Control pillars to score points.") .. "|" ..
loc("Goal") .. ": " .. pointLimit .. " " .. loc("points"), 0, 0)
@@ -418,7 +418,7 @@
end
end
- ShowMission("CONTROL",
+ ShowMission(loc("CONTROL"),
loc("Team Scores") .. ":",
totalComment, 0, 1600)
--- a/share/hedgewars/Data/Maps/TrophyRace/map.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Maps/TrophyRace/map.lua Mon Nov 09 16:34:03 2015 +0000
@@ -33,6 +33,7 @@
local worsthog = nil
local besthog = nil
+local besthogname = ''
-- best time
local besttime = maxtime + 1
@@ -142,6 +143,7 @@
if ttime < besttime then
besttime = ttime
besthog = CurrentHedgehog
+ besthogname = GetHogName(besthog)
hscore = hscore .. loc("NEW fastest lap: ")
else
hscore = hscore .. loc("Fastest lap: ")
@@ -150,7 +152,7 @@
worsttime = ttime
worsthog = CurrentHedgehog
end
- hscore = hscore .. GetHogName(besthog) .. " - " .. (besttime / 1000) .. " s | |" .. loc("Best laps per team: ")
+ hscore = hscore .. besthogname .. " - " .. (besttime / 1000) .. " s | |" .. loc("Best laps per team: ")
if clan == ClansCount -1 then
-- Time for elimination - worst hog is out and the worst hog vars are reset.
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua Mon Nov 09 16:34:03 2015 +0000
@@ -141,7 +141,7 @@
game_lost = true
time_goal = 1
AddCaption(loc("You lose!"), 0xFFFFFFFF, capgrpGameState)
- ShowMission(loc("Bazooka Training"), loc("Aiming practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0)
+ ShowMission(loc("Bazooka Training"), loc("Aiming Practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0)
end
-- If the goal is reached or we've lost ...
@@ -162,11 +162,11 @@
SendStat(siCustomAchievement, string.format(loc("Your accuracy was %.1f%%."), (score/shots)*100))
end
if score == score_goal then
- SendStat(siGameResult, "You have finished the bazooka training!")
+ SendStat(siGameResult, loc("You have finished the bazooka training!"))
SendStat(siCustomAchievement, string.format(loc("%.1f seconds were remaining."), (time_goal/1000), math.ceil(time_goal/12)))
end
if game_lost then
- SendStat(siGameResult, "You lose!")
+ SendStat(siGameResult, loc("You lose!"))
end
-- Finally we end the game ...
@@ -224,7 +224,7 @@
if not game_lost then
game_lost = true
AddCaption(loc("You lose!", 0xFFFFFFFF, capgrpGameState))
- ShowMission(loc("Bazooka Training") , loc("Aiming practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0)
+ ShowMission(loc("Bazooka Training") , loc("Aiming Practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0)
time_goal = 1
end
--- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua Mon Nov 09 16:34:03 2015 +0000
@@ -134,9 +134,9 @@
if end_timer == 0 then
-- Override the 'Draw' message with the appropriate message.
if game_lost then
- AddCaption("Mission lost!", 0xffba00ff,capgrpGameState)
+ AddCaption(loc("Mission lost!"), 0xffba00ff,capgrpGameState)
else
- AddCaption("Mission won!", 0xffba00ff,capgrpGameState)
+ AddCaption(loc("Mission won!"), 0xffba00ff,capgrpGameState)
end
-- Remove the team to end the game. Only do this once.
if team_death == false then
--- a/share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_ShoppaKing.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Challenge_-_Speed_Shoppa_-_ShoppaKing.lua Mon Nov 09 16:34:03 2015 +0000
@@ -1,7 +1,7 @@
HedgewarsScriptLoad("/Scripts/SpeedShoppa.lua")
local params = {}
-params.missionTitle = loc("The Customor is King")
+params.missionTitle = loc("The Customer is King")
params.teamName = loc("Shoppa Union")
params.hogName = loc("King Customer")
params.teamFlag = "cm_shoppa"
--- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_easy.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_easy.lua Mon Nov 09 16:34:03 2015 +0000
@@ -3,7 +3,7 @@
local params = {
ammoType = amBazooka,
gearType = gtShell,
- missionTitle = "Target Practice: Bazooka (easy)",
+ missionTitle = loc("Target Practice: Bazooka (easy)"),
wind = 50,
solidLand = true,
map = "Lonely_Island",
--- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_hard.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Target_Practice_-_Bazooka_hard.lua Mon Nov 09 16:34:03 2015 +0000
@@ -3,7 +3,7 @@
local params = {
ammoType = amBazooka,
gearType = gtShell,
- missionTitle = "Target Practice: Bazooka (hard)",
+ missionTitle = loc("Target Practice: Bazooka (hard)"),
wind = 20,
solidLand = true,
artillery = true,
--- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Cluster_Bomb.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Target_Practice_-_Cluster_Bomb.lua Mon Nov 09 16:34:03 2015 +0000
@@ -3,7 +3,7 @@
local params = {
ammoType = amClusterBomb,
gearType = gtClusterBomb,
- missionTitle = "Cluster Bomb Training",
+ missionTitle = loc("Cluster Bomb Training"),
solidLand = false,
map = "Trash",
theme = "Golf",
--- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_easy.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_easy.lua Mon Nov 09 16:34:03 2015 +0000
@@ -3,7 +3,7 @@
local params = {
ammoType = amGrenade,
gearType = gtGrenade,
- missionTitle = "Target Practice: Grenade (easy)",
+ missionTitle = loc("Target Practice: Grenade (easy)"),
solidLand = true,
artillery = true,
map = "SB_Crystal",
--- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_hard.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Target_Practice_-_Grenade_hard.lua Mon Nov 09 16:34:03 2015 +0000
@@ -3,7 +3,7 @@
local params = {
ammoType = amGrenade,
gearType = gtGrenade,
- missionTitle = "Target Practice: Grenade (hard)",
+ missionTitle = loc("Target Practice: Grenade (hard)"),
solidLand = true,
artillery = true,
map = "SB_Crystal",
--- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Homing_Bee.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Target_Practice_-_Homing_Bee.lua Mon Nov 09 16:34:03 2015 +0000
@@ -3,7 +3,7 @@
local params = {
ammoType = amBee,
gearType = gtBee,
- missionTitle = "Target Practice: Homing Bee",
+ missionTitle = loc("Target Practice: Homing Bee"),
solidLand = true,
map = "Hedgewars",
theme = "Nature",
--- a/share/hedgewars/Data/Missions/Training/Target_Practice_-_Shotgun.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/Target_Practice_-_Shotgun.lua Mon Nov 09 16:34:03 2015 +0000
@@ -3,7 +3,7 @@
local params = {
ammoType = amShotgun,
gearType = gtShotgunShot,
- missionTitle = "Target Practice: Shotgun",
+ missionTitle = loc("Target Practice: Shotgun"),
solidLand = false,
map = "SB_Haunty",
theme = "Halloween",
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua Mon Nov 09 16:34:03 2015 +0000
@@ -21,7 +21,7 @@
SuddenDeathTurns = 99999
AddTeam(loc("Pathetic Resistance"), 14483456, "Simple", "Island", "Default")
- player = AddHog("Ikeda", 0, 10, "StrawHat")
+ player = AddHog(loc("Ikeda"), 0, 10, "StrawHat")
AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default")
enemy = AddHog(loc("Unit 835"), 1, 10, "cyborg1")
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua Mon Nov 09 16:34:03 2015 +0000
@@ -22,7 +22,7 @@
Theme = "Nature"
AddTeam(loc("Pathetic Resistance"), 14483456, "Simple", "Island", "Default")
- player = AddHog("Ikeda", 0, 48, "StrawHat")
+ player = AddHog(loc("Ikeda"), 0, 48, "StrawHat")
AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default")
enemy = AddHog(loc("Unit") .. " 811", 1, 100, "cyborg1")
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Nobody_Laugh.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Nobody_Laugh.lua Mon Nov 09 16:34:03 2015 +0000
@@ -27,21 +27,21 @@
SetGearPosition(hhs[2], 1332, 451)
AddTeam(loc("Clowns"), 1175851, "Duck2", "Tank", "Mobster", "cm_spider")
- hhs[3] = AddHog("Poison", 5, 100, "WhySoSerious")
+ hhs[3] = AddHog(loc("Poison"), 5, 100, "WhySoSerious")
SetGearPosition(hhs[3], 1133, 446)
- hhs[4] = AddHog("Bobo", 5, 100, "clown")
+ hhs[4] = AddHog(loc("Bobo"), 5, 100, "clown")
SetGearPosition(hhs[4], 1215, 553)
- hhs[5] = AddHog("Copper", 5, 10, "clown-copper")
+ hhs[5] = AddHog(loc("Copper"), 5, 10, "clown-copper")
SetGearPosition(hhs[5], 414, 376)
- hhs[6] = AddHog("Derp", 5, 100, "clown-crossed")
+ hhs[6] = AddHog(loc("Derp"), 5, 100, "clown-crossed")
SetGearPosition(hhs[6], 1590, 886)
- hhs[7] = AddHog("Eckles", 5, 100, "clown-copper")
+ hhs[7] = AddHog(loc("Eckles"), 5, 100, "clown-copper")
SetGearPosition(hhs[7], 772, 754)
- hhs[8] = AddHog("Frank", 5, 50, "clown-copper")
+ hhs[8] = AddHog(loc("Frank"), 5, 50, "clown-copper")
SetGearPosition(hhs[8], 1688, 714)
- hhs[9] = AddHog("Harry", 5, 50, "clown-copper")
+ hhs[9] = AddHog(loc("Harry"), 5, 50, "clown-copper")
SetGearPosition(hhs[9], 1932, 837)
- hhs[10] = AddHog("Igmund", 5, 50, "WhySoSerious")
+ hhs[10] = AddHog(loc("Igmund"), 5, 50, "WhySoSerious")
SetGearPosition(hhs[10], 1601, 733)
end
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_That_Sinking_Feeling.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_That_Sinking_Feeling.lua Mon Nov 09 16:34:03 2015 +0000
@@ -216,10 +216,10 @@
if (waterPix >= 1615) and (GameOver == false) then
GameOver = true
- AddCaption("The flood has stopped! Challenge over.")
+ AddCaption(loc("The flood has stopped! Challenge over."))
SendStat(siGameResult, loc("Challenge completed!"))
SendStat(siPlayerKills, tostring(hhCount), loc("Nameless Heroes"))
- SendStat(siPointType, "rescues")
+ SendStat(siPointType, loc("rescues"))
-- Do not count drowning hedgehogs
local hhLeft = hhCount
@@ -283,7 +283,7 @@
SendStat(siCustomAchievement, loc("You haven't rescued anyone."))
end
SendStat(siPlayerKills, "0", loc("Nameless Heroes"))
- SendStat(siPointType, "points")
+ SendStat(siPointType, loc("points"))
SendStat(siGameResult, loc("Disqualified!"))
GameOver = true
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_The_Great_Escape.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_The_Great_Escape.lua Mon Nov 09 16:34:03 2015 +0000
@@ -20,7 +20,7 @@
player = AddHog(loc("Good Dude"), 0, 80, "NoHat") --NoHat
AddTeam(loc("Bad Team"), 1175851, "Simple", "Island", "Default", "Hedgewars")
- enemy = AddHog("Bad Guy", 1, 40, "NoHat")
+ enemy = AddHog(loc("Bad Guy"), 1, 40, "NoHat")
end
--- a/share/hedgewars/Data/Missions/Training/portal.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Missions/Training/portal.lua Mon Nov 09 16:34:03 2015 +0000
@@ -16,29 +16,29 @@
Delay = 10 -- The delay between each round
Map = "portal" -- The map to be played
Theme = "Hell" -- The theme to be used
- Goals = "use the portal to move fast and far, use it to kill, use it with caution !" --the goal ...
+ Goals = loc("Use the portal to move fast and far, use it to kill, use it with caution!") --the goal ...
----AddTeam(teamname, color, grave, fort, voicepack, flag)--
- AddTeam("Subject", 14483406, "Simple", "Island", "Default", "cm_star")
- player = AddHog("player", 0, 10, "Terminator_Glasses")
+ AddTeam(loc("Subject"), 14483406, "Simple", "Island", "Default", "cm_star")
+ player = AddHog(loc("player"), 0, 10, "Terminator_Glasses")
- AddTeam("Hell Army", 1170801, "Simple", "Island", "Default", "cm_galaxy")
- enemy1 = AddHog("Lucifer", 1, 200, "thinkingcap")
- enemy2 = AddHog("voldemort", 1, 150, "WizardHat")
- enemy3 = AddHog("zombi", 1, 100, "zombi")
- enemy4 = AddHog("Predator", 1, 14, "predator")
- enemy5 = AddHog("oneye", 1, 50, "cyclops")
- enemy6 = AddHog("razac", 1, 50, "plaguemask")
- enemy7 = AddHog("C-2", 1, 50, "cyborg1")
- enemy8 = AddHog("Rider", 1, 50, "scif_SparkssHelmet")
+ AddTeam(loc("Hell Army"), 1170801, "Simple", "Island", "Default", "cm_galaxy")
+ enemy1 = AddHog(loc("Lucifer"), 1, 200, "thinkingcap")
+ enemy2 = AddHog(loc("voldemort"), 1, 150, "WizardHat")
+ enemy3 = AddHog(loc("zombi"), 1, 100, "zombi")
+ enemy4 = AddHog(loc("Predator"), 1, 14, "predator")
+ enemy5 = AddHog(loc("oneye"), 1, 50, "cyclops")
+ enemy6 = AddHog(loc("razac"), 1, 50, "plaguemask")
+ enemy7 = AddHog(loc("C-2"), 1, 50, "cyborg1")
+ enemy8 = AddHog(loc("Rider"), 1, 50, "scif_SparkssHelmet")
- AddTeam("badmad", 1170801, "Simple", "Island", "Default", "cm_jupiter")
- enemy9 = AddHog("C-1", 1, 50, "cyborg2")
- enemy10 = AddHog("hiden", 1, 40, "daftpunkguymanuel")
- enemy11 = AddHog("ronald", 1, 70, "clown")
- enemy12 = AddHog("phosphatoglucidique", 1, 50, "chef")
- enemy13 = AddHog("Lestat", 1, 30, "draculakz")
+ AddTeam(loc("badmad"), 1170801, "Simple", "Island", "Default", "cm_jupiter")
+ enemy9 = AddHog(loc("C-1"), 1, 50, "cyborg2")
+ enemy10 = AddHog(loc("hiden"), 1, 40, "daftpunkguymanuel")
+ enemy11 = AddHog(loc("ronald"), 1, 70, "clown")
+ enemy12 = AddHog(loc("phosphatoglucidique"), 1, 50, "chef")
+ enemy13 = AddHog(loc("Lestat"), 1, 30, "draculakz")
SetGearPosition(player, 350, 1820)
SetGearPosition(enemy1, 2037, 1313)
@@ -168,7 +168,7 @@
ShowMission (loc("Portal mission"), loc("training"), "", -amPortalGun, 5000)
- HogSay(player, "I should get myself a portal gun, maybe this crate has one", SAY_THINK)
+ HogSay(player, loc("I should get myself a portal gun, maybe this crate has one"), SAY_THINK)
@@ -204,11 +204,11 @@
if gear == portalgun then
--AddAmmo(player, amPortalGun, 10000)
- HogSay(player, "GREAT ! Let's kill all this enemies, using portals", SAY_THINK)
+ HogSay(player, loc("GREAT ! Let's kill all this enemies, using portals"), SAY_THINK)
end
if gear == girder then
- HogSay(player, "Will be useful if I need a new plateform or if I want to rise....", SAY_THINK)
+ HogSay(player, loc("Will be useful if I need a new plateform or if I want to rise...."), SAY_THINK)
end
if gear == parachute then
--- a/share/hedgewars/Data/Scripts/Multiplayer/Construction_Mode.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Construction_Mode.lua Mon Nov 09 16:34:03 2015 +0000
@@ -1517,7 +1517,7 @@
end
- AddCaption(cat[cIndex],0xffba00ff,capgrpMessage)
+ AddCaption(loc(cat[cIndex]),0xffba00ff,capgrpMessage)
AddCaption(pMode[pIndex],0xffba00ff,capgrpMessage2)
wallsVisible = true
else
@@ -1791,7 +1791,7 @@
loc("Generator") .. ": " .. loc("Generates power.") .. "|" ..
loc("Respawner") .. ": " .. loc("Resurrects dead hedgehogs.") .. "|" ..
- loc("Teleporation Node") .. ": " .. loc("Allows free teleportation between other nodes.") .. "|" ..
+ loc("Teleportation Node") .. ": " .. loc("Allows free teleportation between other nodes.") .. "|" ..
loc("Construction Station") .. ": " .. loc("Allows placement of girders, rubber-bands, mines, sticky mines and barrels.") .. "|" ..
loc("Support Station") .. ": " .. loc("Allows the placement of weapons, utiliites, and health crates.") .. "|" ..
--- a/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua Mon Nov 09 16:34:03 2015 +0000
@@ -302,7 +302,7 @@
if teams[i]~= nil then
local curr_score = getTeamValue(teams[i], "Score")
- showScore = showScore .. teams[i] .. ": " .. curr_score .. " (deaths: " .. getTeamValue(teams[i], "DeadHogs") .. ") " .. "|"
+ showScore = showScore .. teams[i] .. ": " .. curr_score .. " (" .. loc("deaths") .. ": " .. getTeamValue(teams[i], "DeadHogs") .. ") " .. "|"
end
end
@@ -329,7 +329,7 @@
runOnHogsInTeam(removeFeeder, teams[i])
- showScore = showScore .. teams[i] ..": " .. curr_score .. " (deaths: " .. getTeamValue(teams[i], "DeadHogs") .. ") " .. "|"
+ showScore = showScore .. teams[i] ..": " .. curr_score .. " (" .. loc("deaths") .. ": " .. getTeamValue(teams[i], "DeadHogs") .. ") " .. "|"
if curr_score >= winScore then
gameOver = true
@@ -421,7 +421,7 @@
function setFeeder(gear)
if gear~= mutant and gear~= nil then
- SetHogName(gear,"BOTTOM FEEDER")
+ SetHogName(gear, loc("BOTTOM FEEDER"))
SetHogHat(gear, 'poke_slowpoke')
setGearValue(gear,"Feeder", true)
end
@@ -430,7 +430,7 @@
function setMutantStuff(gear)
mutant = gear
- SetHogName(gear,"MUTANT")
+ SetHogName(gear, loc("MUTANT"))
SetHogHat(gear,'WhySoSerious')
SetHealth(gear, ( mutant_base_health + numhhs*25) )
SetEffect(gear, hePoisoned, 1)
--- a/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Scripts/Multiplayer/The_Specialists.lua Mon Nov 09 16:34:03 2015 +0000
@@ -127,48 +127,48 @@
if z == 1 then
- SetHogName(hhs[i],"Soldier")
+ SetHogName(hhs[i],loc("Soldier"))
SetHogHat(hhs[i], "sf_vega")
SetHealth(hhs[i],200)
elseif z == 2 then
SetHogHat(hhs[i], "Glasses")
- SetHogName(hhs[i],"Engineer")
+ SetHogName(hhs[i],loc("Engineer"))
elseif z == 3 then
- SetHogName(hhs[i],"Ninja")
+ SetHogName(hhs[i],loc("Ninja"))
SetHogHat(hhs[i], "NinjaFull")
SetHealth(hhs[i],80)
elseif z == 4 then
- SetHogName(hhs[i],"Demo")
+ SetHogName(hhs[i],loc("Demo"))
SetHogHat(hhs[i], "Skull")
SetHealth(hhs[i],200)
elseif z == 5 then
- SetHogName(hhs[i],"Sniper")
+ SetHogName(hhs[i],loc("Sniper"))
SetHogHat(hhs[i], "Sniper")
SetHealth(hhs[i],120)
elseif z == 6 then
- SetHogName(hhs[i],"Saint")
+ SetHogName(hhs[i],loc("Saint"))
SetHogHat(hhs[i], "angel")
SetHealth(hhs[i],300)
elseif z == 7 then
- SetHogName(hhs[i],"Pyro")
+ SetHogName(hhs[i],loc("Pyro"))
SetHogHat(hhs[i], "Gasmask")
SetHealth(hhs[i],150)
elseif z == 8 then
- SetHogName(hhs[i],"Loon")
+ SetHogName(hhs[i],loc("Loon"))
SetHogHat(hhs[i], "clown")
SetHealth(hhs[i],100)
--- a/share/hedgewars/Data/Scripts/Multiplayer/WxW.lua Tue Oct 06 13:28:11 2015 +0200
+++ b/share/hedgewars/Data/Scripts/Multiplayer/WxW.lua Mon Nov 09 16:34:03 2015 +0000
@@ -158,9 +158,9 @@
function BoolToCfgTxt(p)
if p == false then
- return("Disabled")
+ return loc("Disabled")
else
- return("Enabled")
+ return loc("Enabled")
end
end
--- a/tools/CMakeLists.txt Tue Oct 06 13:28:11 2015 +0200
+++ b/tools/CMakeLists.txt Mon Nov 09 16:34:03 2015 +0000
@@ -58,7 +58,7 @@
#create the .dmg for deployment
#first make sure .app exists, then remove any old .dmg with same name, finally run the script
- add_custom_target(dmg COMMAND "if [ ! -a Hedgewars.app ]; then make install\; fi;"
+ add_custom_target(dmg COMMAND make install
COMMAND rm -f ${CMAKE_BINARY_DIR}/Hedgewars-${HEDGEWARS_VERSION}.dmg
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/create-dmg.sh
--volname "Hedgewars ${HEDGEWARS_VERSION}"