author | koda |
Tue, 04 Jan 2011 12:53:46 +0100 | |
branch | experimental3D |
changeset 4812 | f924be23ffb4 |
parent 4347 | 0ddb100fea61 (current diff) |
parent 4811 | 3edc0cdcfe03 (diff) |
child 4814 | e19791f08443 |
--- a/.hgtags Mon Dec 27 23:57:44 2010 +0100 +++ b/.hgtags Tue Jan 04 12:53:46 2011 +0100 @@ -22,3 +22,6 @@ 0000000000000000000000000000000000000000 Hedgewars-iOS-1.0.1 3620607258cdc1213dce20cb6ad7872f6b8085e0 Hedgewars-iOS-1.0.1 adffb668f06e265b45d1e4aedc283e6f4e5ba7e8 Hedgewars-iOS-1.1 +ede569bb76f389bd5dfbb7ebf68af3087e3e881c Hedgewars-iOS-1.2 +a5735e877aae61cd705265e2f8c0c7ad08d45f0e Hedgewars-iOS-1.2.1 +5ea3d182415e4327e7584b1aa68197931d232ac3 Hedgewars-iOS-1.2.2
--- a/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -18,13 +18,9 @@ ARGS identify -in ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE version_suffix ) - STRING(REGEX REPLACE "(.*) +(.*)" "\\2:\\1" version_suffix ${version_suffix}) + STRING(REGEX REPLACE "([0-9a-zA-Z]+)(.*) ([0-9]+)(.*)" "\\3:\\1" version_suffix ${version_suffix}) MESSAGE(STATUS "Building revision ${version_suffix}") - set(version_suffix ".${version_suffix}") -# #truncate to numbers only - trying to fix a problem described in http://www.hedgewars.org/node/2019 -# STRING(REGEX REPLACE "^\\.(\\d+)" ".\\1" version_suffix ${version_suffix}) -# # screw whole suffix if there's no number -# STRING(REGEX REPLACE "^\\.([a-z]+.*)" "-dev" version_suffix ${version_suffix}) + set(version_suffix "-${version_suffix}") ENDIF() ENDIF() ELSE() @@ -243,13 +239,14 @@ "release$" "Debug$" "Release$" - "proto.inc$" - "hwconsts.cpp$" - "playlist.inc$" + "proto\\\\.inc$" + "hwconsts\\\\.cpp$" + "playlist\\\\.inc$" "CPack" - "cmake_install.cmake$" - "config.inc$" - "hwengine.desktop$" + "cmake_install\\\\.cmake$" + "config\\\\.inc$" + "hwengine\\\\.desktop$" + "CMakeCache\\\\.txt$" # "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libopenalbridge" "^${CMAKE_CURRENT_SOURCE_DIR}/project_files/HedgewarsMobile/" "^${CMAKE_CURRENT_SOURCE_DIR}/bin/[a-z]"
--- a/ChangeLog.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/ChangeLog.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,6 +1,33 @@ + features * bugfixes +0.9.14 -> 0.9.15: + + Ability to create, save and load hand drawn maps + + New maps: Capture the Flag (Blizzard) Map + + New themes: Christmas + + Snowflakes on Christmas/Snow themes accumulates on the ground + + New game modifiers: No wind, More wind + + New missions: Dangerous ducklings, Diver, Spooky tree, Teamwork + + New weapons: Mudball, Drill strike + + Many more Lua hooks + + Readytimer + + Ability to edit seed + + Ability to select gameplay scripts + + New gameplay scripts: Capture the Flag, No jumping, Random weapon + + New Lua unified translation framework + + Code refactoring + + Max teams upped to 8 + + Cosmetic enhancements to Napalm strike + + Selecting a game scheme selects the corresponding weapon set + + Dust when drills dig + + New hats: beaver, porkey, sheep + + Add density property to Gears + + Reworked management of schemes and weapon sets + + Will ask before deleting teams, schemes and weapon sets + + Explosions detach rope from land + + Variable rope length in scheme + + Allow hog speech when not your turn + 0.9.13 -> 0.9.14: + New audio tracks + New forts: EvilChicken, Tank
--- a/QTfrontend/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -23,137 +23,142 @@ include_directories(${SDL_INCLUDE_DIR}) include_directories(${SDLMIXER_INCLUDE_DIR}) if(UNIX) - # HACK: in freebsd cannot find iconv.h included via SDL.h - include_directories("/usr/local/include") + # HACK: in freebsd cannot find iconv.h included via SDL.h + include_directories("/usr/local/include") endif(UNIX) if(WIN32 AND NOT UNIX) - set(HEDGEWARS_BINDIR ".") - set(HEDGEWARS_DATADIR "../share/") + set(HEDGEWARS_BINDIR ".") + set(HEDGEWARS_DATADIR "../share/") add_definitions(-DUSE_XFIRE) else() - set(HEDGEWARS_BINDIR ${CMAKE_INSTALL_PREFIX}) - if(DEFINED DATA_INSTALL_DIR) - set(HEDGEWARS_DATADIR ${DATA_INSTALL_DIR}) - else() - set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/share/) - endif() + set(HEDGEWARS_BINDIR ${CMAKE_INSTALL_PREFIX}) + if(DEFINED DATA_INSTALL_DIR) + set(HEDGEWARS_DATADIR ${DATA_INSTALL_DIR}) + else() + set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/share/) + endif() endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/hwconsts.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp) -set( hwfr_src - game.cpp - main.cpp - hwform.cpp - team.cpp - namegen.cpp - teamselect.cpp - teamselhelper.cpp - frameTeam.cpp - vertScrollArea.cpp - gameuiconfig.cpp - ui_hwform.cpp - gamecfgwidget.cpp - pages.cpp - SquareLabel.cpp - hats.cpp - hedgehogerWidget.cpp - hwmap.cpp - mapContainer.cpp - tcpBase.cpp - about.cpp - proto.cpp - fpsedit.cpp - netserver.cpp - newnetclient.cpp - netudpserver.cpp - netudpwidget.cpp - netregister.cpp - netserverslist.cpp - chatwidget.cpp - binds.cpp - SDLs.cpp - playrecordpage.cpp - ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp - selectWeapon.cpp - itemNum.cpp - input_ip.cpp - igbox.cpp - weaponItem.cpp - statsPage.cpp - misc.cpp - ammoSchemeModel.cpp - togglebutton.cpp - bgwidget.cpp - achievements.cpp - ) +set(hwfr_src + game.cpp + main.cpp + hwform.cpp + team.cpp + namegen.cpp + teamselect.cpp + teamselhelper.cpp + frameTeam.cpp + vertScrollArea.cpp + gameuiconfig.cpp + ui_hwform.cpp + gamecfgwidget.cpp + pages.cpp + SquareLabel.cpp + hats.cpp + hedgehogerWidget.cpp + hwmap.cpp + mapContainer.cpp + tcpBase.cpp + about.cpp + proto.cpp + fpsedit.cpp + netserver.cpp + newnetclient.cpp + netudpserver.cpp + netudpwidget.cpp + netregister.cpp + netserverslist.cpp + chatwidget.cpp + binds.cpp + SDLs.cpp + playrecordpage.cpp + ${CMAKE_CURRENT_BINARY_DIR}/hwconsts.cpp + selectWeapon.cpp + itemNum.cpp + input_ip.cpp + igbox.cpp + weaponItem.cpp + statsPage.cpp + misc.cpp + ammoSchemeModel.cpp + togglebutton.cpp + bgwidget.cpp + achievements.cpp + qaspectratiolayout.cpp + drawmapwidget.cpp + drawmapscene.cpp + ) #xfire integration if(WIN32) - set(hwfr_src ${hwfr_src} xfire.cpp ../misc/xfire/xfiregameclient.cpp) + set(hwfr_src ${hwfr_src} xfire.cpp ../misc/xfire/xfiregameclient.cpp) endif(WIN32) if(MINGW) - # resource compilation for mingw - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o - COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR} - -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc - -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) - set(hwfr_src ${hwfr_src} ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) + # resource compilation for mingw + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o + COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR} + -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc + -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) + set(hwfr_src ${hwfr_src} ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) else(MINGW) - set(hwfr_src ${hwfr_src} hedgewars.rc) + set(hwfr_src ${hwfr_src} hedgewars.rc) endif(MINGW) -set( hwfr_moc_hdrs - game.h - hats.h - hwform.h - teamselect.h - teamselhelper.h - frameTeam.h - vertScrollArea.h - gameuiconfig.h - gamecfgwidget.h - pages.h - SquareLabel.h - hedgehogerWidget.h - hwmap.h - mapContainer.h - tcpBase.h - about.h - proto.h - fpsedit.h - netserver.h - newnetclient.h - netudpserver.h - netudpwidget.h - netregister.h - netserverslist.h - chatwidget.h - SDLs.h - playrecordpage.h - selectWeapon.h - itemNum.h - input_ip.h - igbox.h - weaponItem.h - statsPage.h - misc.h - ammoSchemeModel.h - togglebutton.h - bgwidget.h - ) +set(hwfr_moc_hdrs + game.h + hats.h + hwform.h + teamselect.h + teamselhelper.h + frameTeam.h + vertScrollArea.h + gameuiconfig.h + gamecfgwidget.h + pages.h + SquareLabel.h + hedgehogerWidget.h + hwmap.h + mapContainer.h + tcpBase.h + about.h + proto.h + fpsedit.h + netserver.h + newnetclient.h + netudpserver.h + netudpwidget.h + netregister.h + netserverslist.h + chatwidget.h + SDLs.h + playrecordpage.h + selectWeapon.h + itemNum.h + input_ip.h + igbox.h + weaponItem.h + statsPage.h + misc.h + ammoSchemeModel.h + togglebutton.h + bgwidget.h + qaspectratiolayout.h + drawmapwidget.h + drawmapscene.h + ) -set( hwfr_hdrs - binds.h - ui_hwform.h - predefteams.h - KB.h - hwconsts.h - ) +set(hwfr_hdrs + binds.h + ui_hwform.h + KB.h + hwconsts.h + ) set(hwfr_rez hedgewars.qrc) @@ -163,45 +168,45 @@ if(APPLE) - set(hwfr_src ${hwfr_src} InstallController.cpp CocoaInitializer.mm M3Panel.mm M3InstallController.m NSWorkspace_RBAdditions.m) - set(HW_LINK_LIBS IOKit) + set(hwfr_src ${hwfr_src} InstallController.cpp CocoaInitializer.mm M3Panel.mm M3InstallController.m NSWorkspace_RBAdditions.m) + set(HW_LINK_LIBS IOKit) - find_package(Sparkle) - if(SPARKLE_FOUND) + find_package(Sparkle) + if(SPARKLE_FOUND) add_definitions(-DSPARKLE_ENABLED) - set(hwfr_src ${hwfr_src} AutoUpdater.cpp SparkleAutoUpdater.mm) + set(hwfr_src ${hwfr_src} AutoUpdater.cpp SparkleAutoUpdater.mm) set(HW_LINK_LIBS ${SPARKLE_LIBRARY} ${HW_LINK_LIBS}) - endif() + endif() endif() add_executable(hedgewars WIN32 - ${hwfr_src} - ${hwfr_moc_srcs} - ${hwfr_hdrs} - ${hwfr_rez_src} - ) + ${hwfr_src} + ${hwfr_moc_srcs} + ${hwfr_hdrs} + ${hwfr_rez_src} + ) -set( HW_LINK_LIBS - ${QT_LIBRARIES} - ${SDL_LIBRARY} - ${SDLMIXER_LIBRARY} - ${HW_LINK_LIBS} - ) +set(HW_LINK_LIBS + ${QT_LIBRARIES} + ${SDL_LIBRARY} + ${SDLMIXER_LIBRARY} + ${HW_LINK_LIBS} + ) if(WIN32 AND NOT UNIX) - if(NOT SDL_LIBRARY) - set(HW_LINK_LIBS ${HW_LINK_LIBS} SDL) - endif() + if(NOT SDL_LIBRARY) + set(HW_LINK_LIBS ${HW_LINK_LIBS} SDL) + endif() - set( HW_LINK_LIBS - ${HW_LINK_LIBS} - ole32 - oleaut32 - winspool - uuid - ) + set( HW_LINK_LIBS + ${HW_LINK_LIBS} + ole32 + oleaut32 + winspool + uuid + ) endif()
--- a/QTfrontend/SDLs.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/SDLs.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -166,7 +166,7 @@ SDLMusicInit(); if (music == NULL) { - music = Mix_LoadMUS((datadir->absolutePath() + "/Music/main theme.ogg").toLocal8Bit().constData()); + music = Mix_LoadMUS((datadir->absolutePath() + "/Music/main_theme.ogg").toLocal8Bit().constData()); } Mix_VolumeMusic(MIX_MAX_VOLUME - 28);
--- a/QTfrontend/SquareLabel.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/SquareLabel.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -29,6 +29,8 @@ void SquareLabel::paintEvent(QPaintEvent * event) { + Q_UNUSED(event); + QPainter painter(this); int pixsize; if (width() > height()) {
--- a/QTfrontend/about.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/about.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -119,13 +119,14 @@ "German: Peter Hüwe <<a href=\"mailto:PeterHuewe@gmx.de\">PeterHuewe@gmx.de</a>>, Mario Liebisch <<a href=\"mailto:mario.liebisch@gmail.com\">mario.liebisch@gmail.com</a>><br>" "Italian: Luca Bonora <<a href=\"mailto:bonora.luca@gmail.com\">bonora.luca@gmail.com</a>><br>" "Japanese: ADAM Etienne <<a href=\"mailto:etienne.adam@gmail.com\">etienne.adam@gmail.com</a>><br>" + "Korean: Anthony Bellew <<a href=\"mailto:webmaster@anthonybellew.com\">webmaster@anthonybellew.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>><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>" - "Ukrainian: Eugene V. Lyubimkin <<a href=\"mailto:jackyf.devel@gmail.com\">jackyf.devel@gmail.com</a>>" + "Ukrainian: Eugene V. Lyubimkin <<a href=\"mailto:jackyf.devel@gmail.com\">jackyf.devel@gmail.com</a>>, Igor Paliychuk <<a href=\"mailto:igor-hkr@mail.ru\">igor-hkr@mail.ru</a>>, Yevhen Sakara <<a href=\"mailto:eresid@gmail.com\">eresid@gmail.com</a>>" "</p><h2>") + QLabel::tr("Special thanks:") + "</h2><p>"
--- a/QTfrontend/ammoSchemeModel.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/ammoSchemeModel.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -60,6 +60,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; AmmoSchemeModel::AmmoSchemeModel(QObject* parent, const QString & fileName) : @@ -120,6 +121,7 @@ << "healthcaseamount" // 34 << "waterrise" // 35 << "healthdecrease" // 36 + << "ropepct" // 37 ; QList<QVariant> proMode; @@ -161,6 +163,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> shoppa; @@ -202,6 +205,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> cleanslate; @@ -243,6 +247,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> minefield; @@ -284,6 +289,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> barrelmayhem; @@ -325,6 +331,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> tunnelhogs; @@ -366,6 +373,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> forts; @@ -407,6 +415,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> timeless; @@ -448,6 +457,7 @@ << QVariant(30) // health case amt 34 << QVariant(0) // water rise amt 35 << QVariant(0) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> thinkingportals; @@ -489,6 +499,7 @@ << QVariant(25) // health case amt 34 << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; QList<QVariant> kingmode; @@ -507,8 +518,8 @@ << QVariant(false) // artillery 11 << QVariant(true) // random order 12 << QVariant(true) // king 13 - << QVariant(true) // place hog 14 - << QVariant(true) // shared ammo 15 + << QVariant(false) // place hog 14 + << QVariant(false) // shared ammo 15 << QVariant(false) // disable girders 16 << QVariant(false) // disable land objects 17 << QVariant(false) // AI survival 18 @@ -523,13 +534,14 @@ << QVariant(15) // sudden death 27 << QVariant(5) // case prob 28 << QVariant(3) // mines time 29 - << QVariant(3) // mines number 30 - << QVariant(20) // mine dud pct 31 - << QVariant(3) // explosives 32 + << QVariant(4) // mines number 30 + << QVariant(0) // mine dud pct 31 + << QVariant(2) // explosives 32 << QVariant(35) // health case pct 33 - << QVariant(30) // health case amt 34 - << QVariant(30) // water rise amt 35 + << QVariant(25) // health case amt 34 + << QVariant(47) // water rise amt 35 << QVariant(5) // health dec amt 36 + << QVariant(100) // rope modfier 37 ; @@ -565,6 +577,10 @@ QVariant AmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const { + Q_UNUSED(section); + Q_UNUSED(orientation); + Q_UNUSED(role); + return QVariant(); } @@ -586,6 +602,8 @@ Qt::ItemFlags AmmoSchemeModel::flags(const QModelIndex & index) const { + Q_UNUSED(index); + return Qt::ItemIsEnabled | Qt::ItemIsSelectable @@ -608,12 +626,22 @@ bool AmmoSchemeModel::insertRows(int row, int count, const QModelIndex & parent) { - beginInsertRows(parent, row, row); + Q_UNUSED(count); + + beginInsertRows(parent, schemes.size(), schemes.size()); - QList<QVariant> newScheme = defaultScheme; - newScheme[0] = QVariant(tr("new")); - - schemes.insert(row, newScheme); + if (row == -1) + { + QList<QVariant> newScheme = defaultScheme; + newScheme[0] = QVariant(tr("new")); + schemes.insert(schemes.size(), newScheme); + } + else + { + QList<QVariant> newScheme = schemes[row]; + newScheme[0] = QVariant(tr("copy of") + " " + newScheme[0].toString()); + schemes.insert(schemes.size(), newScheme); + } endInsertRows(); @@ -672,6 +700,10 @@ QVariant NetAmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const { + Q_UNUSED(section); + Q_UNUSED(orientation); + Q_UNUSED(role); + return QVariant(); }
--- a/QTfrontend/ammoSchemeModel.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/ammoSchemeModel.h Tue Jan 04 12:53:46 2011 +0100 @@ -42,6 +42,7 @@ int numberOfDefaultSchemes; QStringList predefSchemesNames; + QStringList spNames; public slots: void Save(); @@ -54,8 +55,6 @@ private: QSettings fileConfig; - - QStringList spNames; }; class NetAmmoSchemeModel : public QAbstractTableModel
--- a/QTfrontend/bgwidget.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/bgwidget.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -103,6 +103,8 @@ void BGWidget::paintEvent(QPaintEvent *event) { + Q_UNUSED(event); + QPainter p; p.begin(this); //p.setRenderHint(QPainter::Antialiasing);
--- a/QTfrontend/chatwidget.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/chatwidget.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -341,6 +341,8 @@ void HWChatWidget::chatNickSelected(int index) { + Q_UNUSED(index); + QListWidgetItem* item = chatNicks->currentItem(); if (!item) return;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/drawmapscene.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,195 @@ +#include <QGraphicsSceneMouseEvent> +#include <QGraphicsPathItem> +#include <QtEndian> + +#include "drawmapscene.h" + +template <class T> T sqr(const T & x) +{ + return x*x; +} + +DrawMapScene::DrawMapScene(QObject *parent) : + QGraphicsScene(parent), + m_pen(Qt::yellow), + m_brush(Qt::yellow) +{ + setSceneRect(0, 0, 4096, 2048); + + QLinearGradient gradient(0, 0, 0, 2048); + gradient.setColorAt(0, QColor(60, 60, 155)); + gradient.setColorAt(1, QColor(155, 155, 60)); + setBackgroundBrush(QBrush(gradient)); + + m_pen.setWidth(67); + m_pen.setJoinStyle(Qt::RoundJoin); + m_pen.setCapStyle(Qt::RoundCap); + m_currPath = 0; +} + +void DrawMapScene::mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent) +{ + if(m_currPath && (mouseEvent->buttons() & Qt::LeftButton)) + { + QPainterPath path = m_currPath->path(); + path.lineTo(mouseEvent->scenePos()); + paths.first().append(mouseEvent->scenePos().toPoint()); + m_currPath->setPath(path); + + emit pathChanged(); + } +} + +void DrawMapScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent) +{ + m_currPath = addPath(QPainterPath(), m_pen); + + QPainterPath path = m_currPath->path(); + QPointF p = mouseEvent->scenePos(); + p += QPointF(0.01, 0.01); + path.moveTo(p); + path.lineTo(mouseEvent->scenePos()); + paths.prepend(QList<QPoint>() << mouseEvent->scenePos().toPoint()); + m_currPath->setPath(path); + + emit pathChanged(); +} + +void DrawMapScene::mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent) +{ + Q_UNUSED(mouseEvent); + + simplifyLast(); + + m_currPath = 0; +} + +void DrawMapScene::undo() +{ + if(items().size()) + { + removeItem(items().first()); + paths.removeFirst(); + + emit pathChanged(); + } +} + +void DrawMapScene::clearMap() +{ + clear(); + paths.clear(); + + emit pathChanged(); +} + +QByteArray DrawMapScene::encode() +{ + QByteArray b; + + for(int i = paths.size() - 1; i >= 0; --i) + { + int cnt = 0; + QList<QPoint> points = paths.at(i); + foreach(QPoint point, points) + { + qint16 px = qToBigEndian((qint16)point.x()); + qint16 py = qToBigEndian((qint16)point.y()); + quint8 flags = 2; + if(!cnt) flags |= 0x80; + b.append((const char *)&px, 2); + b.append((const char *)&py, 2); + b.append((const char *)&flags, 1); + + ++cnt; + } + + } + + return b; +} + +void DrawMapScene::decode(QByteArray data) +{ + clear(); + paths.clear(); + + QList<QPoint> points; + + while(data.size() >= 5) + { + qint16 px = qFromBigEndian(*(qint16 *)data.data()); + data.remove(0, 2); + qint16 py = qFromBigEndian(*(qint16 *)data.data()); + data.remove(0, 2); + quint8 flags = *(quint8 *)data.data(); + data.remove(0, 1); + + if((flags & 0x80) && points.size()) + { + addPath(pointsToPath(points), m_pen); + paths.prepend(points); + + points.clear(); + } + + points.append(QPoint(px, py)); + } + + if(points.size()) + { + addPath(pointsToPath(points), m_pen); + paths.prepend(points); + } + + emit pathChanged(); +} + +void DrawMapScene::simplifyLast() +{ + if(!paths.size()) return; + + QList<QPoint> points = paths.at(0); + + QPoint prevPoint = points.first(); + int i = 1; + while(i < points.size()) + { + if( (i != points.size() - 1) + && (sqr(prevPoint.x() - points[i].x()) + sqr(prevPoint.y() - points[i].y()) < 1000) + ) + points.removeAt(i); + else + { + prevPoint = points[i]; + ++i; + } + } + + paths[0] = points; + + + // redraw path + { + QGraphicsPathItem * pathItem = static_cast<QGraphicsPathItem *>(items()[0]); + pathItem->setPath(pointsToPath(paths[0])); + } + + emit pathChanged(); +} + +QPainterPath DrawMapScene::pointsToPath(const QList<QPoint> points) +{ + QPainterPath path; + + if(points.size()) + { + QPointF p = points[0] + QPointF(0.01, 0.01); + path.moveTo(p); + + foreach(QPoint p, points) + path.lineTo(p); + } + + return path; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/drawmapscene.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,41 @@ +#ifndef DRAWMAPSCENE_H +#define DRAWMAPSCENE_H + +#include <QGraphicsScene> +#include <QPainterPath> + +class QGraphicsPathItem; + +typedef QList<QList<QPoint> > Paths; + +class DrawMapScene : public QGraphicsScene +{ +Q_OBJECT +public: + explicit DrawMapScene(QObject *parent = 0); + + QByteArray encode(); + void decode(QByteArray data); + +signals: + void pathChanged(); + +public slots: + void undo(); + void clearMap(); + void simplifyLast(); + +private: + QPen m_pen; + QBrush m_brush; + QGraphicsPathItem * m_currPath; + Paths paths; + + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent); + virtual void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent); + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent); + + QPainterPath pointsToPath(const QList<QPoint> points); +}; + +#endif // DRAWMAPSCENE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/drawmapwidget.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,87 @@ +#include <QFile> +#include <QMessageBox> + +#include "drawmapwidget.h" + +DrawMapWidget::DrawMapWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::DrawMapWidget) +{ + ui->setupUi(this); + + m_scene = 0; +} + +DrawMapWidget::~DrawMapWidget() +{ + delete ui; +} + +void DrawMapWidget::changeEvent(QEvent *e) +{ + QWidget::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + +void DrawMapWidget::setScene(DrawMapScene * scene) +{ + ui->graphicsView->setScene(scene); + m_scene = scene; +} + +void DrawMapWidget::resizeEvent(QResizeEvent * event) +{ + Q_UNUSED(event); + + if(ui->graphicsView && ui->graphicsView->scene()) + ui->graphicsView->fitInView(ui->graphicsView->scene()->sceneRect(), Qt::KeepAspectRatio); +} + +void DrawMapWidget::showEvent(QShowEvent * event) +{ + Q_UNUSED(event); + + resizeEvent(0); +} + +void DrawMapWidget::undo() +{ + if(m_scene) m_scene->undo(); +} + +void DrawMapWidget::clear() +{ + if(m_scene) m_scene->clearMap(); +} + +void DrawMapWidget::save(const QString & fileName) +{ + if(m_scene) + { + QFile file(fileName); + + if(!file.open(QIODevice::WriteOnly)) + QMessageBox::warning(this, tr("File error"), tr("Cannot open file '%1' for writing").arg(fileName)); + else + file.write(qCompress(m_scene->encode()).toBase64()); + } +} + +void DrawMapWidget::load(const QString & fileName) +{ + if(m_scene) + { + QFile f(fileName); + + if(!f.open(QIODevice::ReadOnly)) + QMessageBox::warning(this, tr("File error"), tr("Cannot read file '%1'").arg(fileName)); + else + m_scene->decode(qUncompress(QByteArray::fromBase64(f.readAll()))); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/drawmapwidget.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,69 @@ +#ifndef DRAWMAPWIDGET_H +#define DRAWMAPWIDGET_H + +#include <QWidget> +#include <QHBoxLayout> +#include <QPushButton> +#include <QGraphicsView> +#include <QApplication> + +#include "qaspectratiolayout.h" +#include "drawmapscene.h" + +namespace Ui { + class Ui_DrawMapWidget + { + public: + QGraphicsView *graphicsView; + + void setupUi(QWidget *drawMapWidget) + { + QAspectRatioLayout * arLayout = new QAspectRatioLayout(drawMapWidget); + arLayout->setMargin(0); + + graphicsView = new QGraphicsView(drawMapWidget); + arLayout->addWidget(graphicsView); + + retranslateUi(drawMapWidget); + + QMetaObject::connectSlotsByName(drawMapWidget); + } // setupUi + + void retranslateUi(QWidget *drawMapWidget) + { + Q_UNUSED(drawMapWidget); + } // retranslateUi + + }; + + class DrawMapWidget: public Ui_DrawMapWidget {}; +} + +class DrawMapWidget : public QWidget +{ + Q_OBJECT + +public: + explicit DrawMapWidget(QWidget *parent = 0); + ~DrawMapWidget(); + + void setScene(DrawMapScene * scene); + +public slots: + void undo(); + void clear(); + void save(const QString & fileName); + void load(const QString & fileName); + +protected: + void changeEvent(QEvent *e); + virtual void resizeEvent(QResizeEvent * event); + virtual void showEvent(QShowEvent * event); + +private: + Ui::DrawMapWidget *ui; + + DrawMapScene * m_scene; +}; + +#endif // DRAWMAPWIDGET_H
--- a/QTfrontend/game.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/game.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -40,6 +40,7 @@ this->config = config; this->gamecfg = gamecfg; TeamCount = 0; + netSuspend = false; } HWGame::~HWGame() @@ -77,7 +78,7 @@ } HWProto::addStringToBuffer(buf, gt); - HWProto::addStringListToBuffer(buf, gamecfg->getFullConfig()); + buf += gamecfg->getFullConfig(); if (m_pTeamSelWidget) { @@ -88,7 +89,7 @@ HWProto::addStringToBuffer(buf, QString("eammprob %1").arg(ammostr.mid(cAmmoNumber, cAmmoNumber))); HWProto::addStringToBuffer(buf, QString("eammdelay %1").arg(ammostr.mid(2 * cAmmoNumber, cAmmoNumber))); HWProto::addStringToBuffer(buf, QString("eammreinf %1").arg(ammostr.mid(3 * cAmmoNumber, cAmmoNumber))); - HWProto::addStringToBuffer(buf, QString("eammstore")); + if(!gamecfg->schemeData(21).toBool()) HWProto::addStringToBuffer(buf, QString("eammstore")); HWProto::addStringListToBuffer(buf, (*it).TeamGameConfig(gamecfg->getInitHealth())); } @@ -245,7 +246,7 @@ break; } default: { - if (gameType == gtNet) + if (gameType == gtNet && !netSuspend) { emit SendNet(msg); } @@ -378,3 +379,15 @@ gameState = state; emit GameStateChanged(state); } + +void HWGame::KillAllTeams() +{ + if (m_pTeamSelWidget) + { + QByteArray buf; + QList<HWTeam> teams = m_pTeamSelWidget->getPlayingTeams(); + for(QList<HWTeam>::iterator it = teams.begin(); it != teams.end(); ++it) + HWProto::addStringToBuffer(buf, QString("eteamgone %1").arg((*it).TeamName)); + RawSendIPC(buf); + } +}
--- a/QTfrontend/game.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/game.h Tue Jan 04 12:53:46 2011 +0100 @@ -53,6 +53,9 @@ void StartNet(); void StartTraining(const QString & file); void StartCampaign(const QString & file); + void KillAllTeams(); + GameState gameState; + bool netSuspend; protected: virtual QStringList setArguments(); @@ -89,7 +92,6 @@ GameCFGWidget * gamecfg; TeamSelWidget* m_pTeamSelWidget; GameType gameType; - GameState gameState; void commonConfig(); void SendConfig();
--- a/QTfrontend/gamecfgwidget.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/gamecfgwidget.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -30,8 +30,9 @@ #include "igbox.h" #include "hwconsts.h" #include "ammoSchemeModel.h" +#include "proto.h" -GameCFGWidget::GameCFGWidget(QWidget* parent, bool externalControl) : +GameCFGWidget::GameCFGWidget(QWidget* parent) : QGroupBox(parent), mainLayout(this) { mainLayout.setMargin(0); @@ -42,48 +43,96 @@ IconedGroupBox *GBoxOptions = new IconedGroupBox(this); GBoxOptions->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); - mainLayout.addWidget(GBoxOptions); + mainLayout.addWidget(GBoxOptions, 1, 0); QGridLayout *GBoxOptionsLayout = new QGridLayout(GBoxOptions); - GameSchemes = new QComboBox(GBoxOptions); - GBoxOptionsLayout->addWidget(GameSchemes, 0, 1); + GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Gameplay"), GBoxOptions), 0, 0); + + Scripts = new QComboBox(GBoxOptions); + GBoxOptionsLayout->addWidget(Scripts, 0, 1); + + Scripts->addItem("Normal"); + Scripts->insertSeparator(1); + + for (int i = 0; i < scriptList->size(); ++i) { + QString script = (*scriptList)[i].remove(".lua", Qt::CaseInsensitive); + QList<QVariant> scriptInfo; + scriptInfo.push_back(script); + QFile scriptCfgFile(QString("%1/Scripts/Multiplayer/%2.cfg").arg(datadir->absolutePath()).arg(script)); + if (scriptCfgFile.exists() && scriptCfgFile.open(QFile::ReadOnly)) { + QString scheme; + QString weapons; + QTextStream input(&scriptCfgFile); + input >> scheme; + input >> weapons; + if (scheme.isEmpty()) + scheme = "locked"; + scheme.replace("_", " "); + if (weapons.isEmpty()) + weapons = "locked"; + weapons.replace("_", " "); + scriptInfo.push_back(scheme); + scriptInfo.push_back(weapons); + scriptCfgFile.close(); + } + else + { + scriptInfo.push_back("locked"); + scriptInfo.push_back("locked"); + } + Scripts->addItem(script.replace("_", " "), scriptInfo); + } + + connect(Scripts, SIGNAL(currentIndexChanged(int)), this, SLOT(scriptChanged(int))); + + QWidget *SchemeWidget = new QWidget(GBoxOptions); + GBoxOptionsLayout->addWidget(SchemeWidget, 1, 0, 1, 2); + + QGridLayout *SchemeWidgetLayout = new QGridLayout(SchemeWidget); + SchemeWidgetLayout->setMargin(0); + + GameSchemes = new QComboBox(SchemeWidget); + SchemeWidgetLayout->addWidget(GameSchemes, 0, 2); connect(GameSchemes, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeChanged(int))); - GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Game scheme"), GBoxOptions), 0, 0); + SchemeWidgetLayout->addWidget(new QLabel(QLabel::tr("Game scheme"), SchemeWidget), 0, 0); QPixmap pmEdit(":/res/edit.png"); - QPushButton * goToSchemePage = new QPushButton(GBoxOptions); + QPushButton * goToSchemePage = new QPushButton(SchemeWidget); goToSchemePage->setToolTip(tr("Edit schemes")); goToSchemePage->setIconSize(pmEdit.size()); goToSchemePage->setIcon(pmEdit); goToSchemePage->setMaximumWidth(pmEdit.width() + 6); - GBoxOptionsLayout->addWidget(goToSchemePage, 0, 2); - connect(goToSchemePage, SIGNAL(clicked()), this, SIGNAL(goToSchemes())); + SchemeWidgetLayout->addWidget(goToSchemePage, 0, 3); + connect(goToSchemePage, SIGNAL(clicked()), this, SLOT(jumpToSchemes())); - GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Weapons"), GBoxOptions), 1, 0); + SchemeWidgetLayout->addWidget(new QLabel(QLabel::tr("Weapons"), SchemeWidget), 1, 0); - WeaponsName = new QComboBox(GBoxOptions); - GBoxOptionsLayout->addWidget(WeaponsName, 1, 1); + WeaponsName = new QComboBox(SchemeWidget); + SchemeWidgetLayout->addWidget(WeaponsName, 1, 2); connect(WeaponsName, SIGNAL(currentIndexChanged(int)), this, SLOT(ammoChanged(int))); - QPushButton * goToWeaponPage = new QPushButton(GBoxOptions); + QPushButton * goToWeaponPage = new QPushButton(SchemeWidget); goToWeaponPage->setToolTip(tr("Edit weapons")); goToWeaponPage->setIconSize(pmEdit.size()); goToWeaponPage->setIcon(pmEdit); goToWeaponPage->setMaximumWidth(pmEdit.width() + 6); - GBoxOptionsLayout->addWidget(goToWeaponPage, 1, 2); - + SchemeWidgetLayout->addWidget(goToWeaponPage, 1, 3); connect(goToWeaponPage, SIGNAL(clicked()), this, SLOT(jumpToWeapons())); - GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Bind schemes and weapons"), GBoxOptions), 2, 0); + //GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Bind schemes with weapons"), GBoxOptions), 2, 0); - bindEntries = new QCheckBox(GBoxOptions); - bindEntries->setToolTip(tr("When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)")); + bindEntries = new QCheckBox(SchemeWidget); + bindEntries->setToolTip(tr("When this option is enabled selecting a game scheme will auto-select a weapon")); bindEntries->setChecked(true); - GBoxOptionsLayout->addWidget(bindEntries, 2, 2); + bindEntries->setMaximumWidth(42); + bindEntries->setStyleSheet( "QCheckBox::indicator:checked { image: url(\":/res/lock.png\"); }" + "QCheckBox::indicator:unchecked { image: url(\":/res/unlock.png\"); }" ); + SchemeWidgetLayout->addWidget(bindEntries, 0, 1, 0, 1, Qt::AlignVCenter); + //GBoxOptionsLayout->addWidget(bindEntries, 2, 2); connect(pMapContainer, SIGNAL(seedChanged(const QString &)), this, SLOT(seedChanged(const QString &))); connect(pMapContainer, SIGNAL(mapChanged(const QString &)), this, SLOT(mapChanged(const QString &))); @@ -91,11 +140,18 @@ connect(pMapContainer, SIGNAL(maze_sizeChanged(int)), this, SLOT(maze_sizeChanged(int))); connect(pMapContainer, SIGNAL(themeChanged(const QString &)), this, SLOT(themeChanged(const QString &))); connect(pMapContainer, SIGNAL(newTemplateFilter(int)), this, SLOT(templateFilterChanged(int))); + connect(pMapContainer, SIGNAL(drawMapRequested()), this, SIGNAL(goToDrawMap())); + connect(pMapContainer, SIGNAL(drawnMapChanged(const QByteArray &)), this, SLOT(onDrawnMapChanged(const QByteArray &))); +} + +void GameCFGWidget::jumpToSchemes() +{ + emit goToSchemes(GameSchemes->currentIndex()); } void GameCFGWidget::jumpToWeapons() { - emit goToWeapons(WeaponsName->currentText()); + emit goToWeapons(WeaponsName->currentIndex()); } QVariant GameCFGWidget::schemeData(int column) const @@ -162,37 +218,71 @@ return schemeData(26).toInt(); } -QStringList GameCFGWidget::getFullConfig() const +QByteArray GameCFGWidget::getFullConfig() const { - QStringList sl; - sl.append("eseed " + pMapContainer->getCurrentSeed()); - sl.append(QString("e$gmflags %1").arg(getGameFlags())); - sl.append(QString("e$damagepct %1").arg(schemeData(24).toInt())); - sl.append(QString("e$turntime %1").arg(schemeData(25).toInt() * 1000)); - sl.append(QString("e$sd_turns %1").arg(schemeData(27).toInt())); - sl.append(QString("e$casefreq %1").arg(schemeData(28).toInt())); - sl.append(QString("e$minestime %1").arg(schemeData(29).toInt())); - sl.append(QString("e$minesnum %1").arg(schemeData(30).toInt())); - sl.append(QString("e$minedudpct %1").arg(schemeData(31).toInt())); - sl.append(QString("e$explosives %1").arg(schemeData(32).toInt())); - sl.append(QString("e$healthprob %1").arg(schemeData(33).toInt())); - sl.append(QString("e$hcaseamount %1").arg(schemeData(34).toInt())); - sl.append(QString("e$waterrise %1").arg(schemeData(35).toInt())); - sl.append(QString("e$healthdec %1").arg(schemeData(36).toInt())); - sl.append(QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter())); - sl.append(QString("e$mapgen %1").arg(pMapContainer->get_mapgen())); - sl.append(QString("e$maze_size %1").arg(pMapContainer->get_maze_size())); + QList<QByteArray> bcfg; + int mapgen = pMapContainer->get_mapgen(); + + bcfg << QString("eseed " + pMapContainer->getCurrentSeed()).toUtf8(); + bcfg << QString("e$gmflags %1").arg(getGameFlags()).toUtf8(); + bcfg << QString("e$damagepct %1").arg(schemeData(24).toInt()).toUtf8(); + bcfg << QString("e$turntime %1").arg(schemeData(25).toInt() * 1000).toUtf8(); + bcfg << QString("e$sd_turns %1").arg(schemeData(27).toInt()).toUtf8(); + bcfg << QString("e$casefreq %1").arg(schemeData(28).toInt()).toUtf8(); + bcfg << QString("e$minestime %1").arg(schemeData(29).toInt() * 1000).toUtf8(); + bcfg << QString("e$minesnum %1").arg(schemeData(30).toInt()).toUtf8(); + bcfg << QString("e$minedudpct %1").arg(schemeData(31).toInt()).toUtf8(); + bcfg << QString("e$explosives %1").arg(schemeData(32).toInt()).toUtf8(); + bcfg << QString("e$healthprob %1").arg(schemeData(33).toInt()).toUtf8(); + bcfg << QString("e$hcaseamount %1").arg(schemeData(34).toInt()).toUtf8(); + bcfg << QString("e$waterrise %1").arg(schemeData(35).toInt()).toUtf8(); + bcfg << QString("e$healthdec %1").arg(schemeData(36).toInt()).toUtf8(); + bcfg << QString("e$ropepct %1").arg(schemeData(37).toInt()).toUtf8(); + bcfg << QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter()).toUtf8(); + bcfg << QString("e$mapgen %1").arg(mapgen).toUtf8(); + + switch (mapgen) + { + case MAPGEN_MAZE: + bcfg << QString("e$maze_size %1").arg(pMapContainer->get_maze_size()).toUtf8(); + break; + + case MAPGEN_DRAWN: + { + QByteArray data = pMapContainer->getDrawnMapData(); + while(data.size() > 0) + { + QByteArray tmp = data; + tmp.truncate(200); + tmp.prepend("edraw "); + bcfg << tmp; + data.remove(0, 200); + } + break; + } + default: ; + } QString currentMap = pMapContainer->getCurrentMap(); if (currentMap.size() > 0) { - sl.append("emap " + currentMap); + bcfg << QString("emap " + currentMap).toUtf8(); if(pMapContainer->getCurrentIsMission()) - sl.append(QString("escript Maps/%1/map.lua") - .arg(currentMap)); + bcfg << QString("escript Maps/%1/map.lua").arg(currentMap).toUtf8(); + } + bcfg << QString("etheme " + pMapContainer->getCurrentTheme()).toUtf8(); + + if (Scripts->currentIndex() > 0) + { + bcfg << QString("escript Scripts/Multiplayer/%1.lua").arg(Scripts->itemData(Scripts->currentIndex()).toList()[0].toString()).toUtf8(); } - sl.append("etheme " + pMapContainer->getCurrentTheme()); - return sl; + + QByteArray result; + + foreach(QByteArray ba, bcfg) + HWProto::addByteArrayToBuffer(result, ba); + + return result; } void GameCFGWidget::setNetAmmo(const QString& name, const QString& ammo) @@ -220,6 +310,7 @@ themeChanged(pMapContainer->getCurrentTheme()); schemeChanged(GameSchemes->currentIndex()); + scriptChanged(Scripts->currentIndex()); mapgenChanged(pMapContainer->get_mapgen()); maze_sizeChanged(pMapContainer->get_maze_size()); @@ -241,6 +332,9 @@ } if (param == "SEED") { pMapContainer->setSeed(value); + if (!QRegExp("\\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\}").exactMatch(value)) { + pMapContainer->seedEdit->setVisible(true); + } return; } if (param == "THEME") { @@ -259,6 +353,14 @@ pMapContainer->setMaze_size(value.toUInt()); return; } + if (param == "SCRIPT") { + Scripts->setCurrentIndex(Scripts->findText(value)); + return; + } + if (param == "DRAWNMAP") { + pMapContainer->setDrawnMapData(qUncompress(QByteArray::fromBase64(slValue[0].toLatin1()))); + return; + } } if (slValue.size() == 2) @@ -279,32 +381,54 @@ "AMMO", QStringList() << WeaponsName->itemText(index) << WeaponsName->itemData(index).toString() ); - if (bindEntries->isChecked() == true) { - QString weapName = WeaponsName->itemText(index); - for (int i = 0; i < GameSchemes->count(); i++) { - QString schemeName = GameSchemes->itemText(i); - int res = QString::compare(weapName, schemeName, Qt::CaseSensitive); - if (0 == res) { - GameSchemes->setCurrentIndex(i); - break; - } - } - } } } void GameCFGWidget::mapChanged(const QString & value) { - if(pMapContainer->getCurrentIsMission()) + if(isEnabled() && pMapContainer->getCurrentIsMission()) { - GameSchemes->setEnabled(false); - WeaponsName->setEnabled(false); - bindEntries->setEnabled(false); - GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); - WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); + Scripts->setEnabled(false); + Scripts->setCurrentIndex(0); + + if (pMapContainer->getCurrentScheme() == "locked") + { + GameSchemes->setEnabled(false); + GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); + } + else + { + GameSchemes->setEnabled(true); + int num = GameSchemes->findText(pMapContainer->getCurrentScheme()); + if (num != -1) + GameSchemes->setCurrentIndex(num); + else + GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); + } + + if (pMapContainer->getCurrentWeapons() == "locked") + { + WeaponsName->setEnabled(false); + WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); + } + else + { + WeaponsName->setEnabled(true); + int num = WeaponsName->findText(pMapContainer->getCurrentWeapons()); + if (num != -1) + WeaponsName->setCurrentIndex(num); + else + WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); + } + + if (pMapContainer->getCurrentScheme() != "locked" && pMapContainer->getCurrentWeapons() != "locked") + bindEntries->setEnabled(true); + else + bindEntries->setEnabled(false); } else { + Scripts->setEnabled(true); GameSchemes->setEnabled(true); WeaponsName->setEnabled(true); bindEntries->setEnabled(true); @@ -337,19 +461,71 @@ emit paramChanged("SCHEME", sl); - if (bindEntries->isChecked() == true) { + if (isEnabled() && bindEntries->isEnabled() && bindEntries->isChecked()) { QString schemeName = GameSchemes->itemText(index); for (int i = 0; i < WeaponsName->count(); i++) { QString weapName = WeaponsName->itemText(i); int res = QString::compare(weapName, schemeName, Qt::CaseSensitive); if (0 == res) { WeaponsName->setCurrentIndex(i); + emit ammoChanged(i); break; } } } } +void GameCFGWidget::scriptChanged(int index) +{ + if(isEnabled() && index > 0) + { + QString scheme = Scripts->itemData(Scripts->currentIndex()).toList()[1].toString(); + QString weapons = Scripts->itemData(Scripts->currentIndex()).toList()[2].toString(); + + if (scheme == "locked") + { + GameSchemes->setEnabled(false); + GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); + } + else + { + GameSchemes->setEnabled(true); + int num = GameSchemes->findText(scheme); + if (num != -1) + GameSchemes->setCurrentIndex(num); + else + GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); + } + + if (weapons == "locked") + { + WeaponsName->setEnabled(false); + WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); + } + else + { + WeaponsName->setEnabled(true); + int num = WeaponsName->findText(weapons); + if (num != -1) + WeaponsName->setCurrentIndex(num); + else + WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); + } + + if (scheme != "locked" && weapons != "locked") + bindEntries->setEnabled(true); + else + bindEntries->setEnabled(false); + } + else + { + GameSchemes->setEnabled(true); + WeaponsName->setEnabled(true); + bindEntries->setEnabled(true); + } + emit paramChanged("SCRIPT", QStringList(Scripts->itemText(index))); +} + void GameCFGWidget::mapgenChanged(MapGenerator m) { emit paramChanged("MAPGEN", QStringList(QString::number(m))); @@ -364,3 +540,8 @@ { schemeChanged(GameSchemes->currentIndex()); } + +void GameCFGWidget::onDrawnMapChanged(const QByteArray & data) +{ + emit paramChanged("DRAWNMAP", QStringList(qCompress(data, 9).toBase64())); +}
--- a/QTfrontend/gamecfgwidget.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/gamecfgwidget.h Tue Jan 04 12:53:46 2011 +0100 @@ -36,14 +36,16 @@ Q_OBJECT public: - GameCFGWidget(QWidget* parent, bool externalControl=false); + GameCFGWidget(QWidget* parent); quint32 getGameFlags() const; quint32 getInitHealth() const; - QStringList getFullConfig() const; + QByteArray getFullConfig() const; + QComboBox * Scripts; QComboBox * GameSchemes; QComboBox * WeaponsName; HWMapContainer* pMapContainer; QTableView * tv; + QVariant schemeData(int column) const; public slots: void setParam(const QString & param, const QStringList & value); @@ -52,8 +54,9 @@ signals: void paramChanged(const QString & param, const QStringList & value); - void goToSchemes(); - void goToWeapons(const QString & name); + void goToSchemes(int); + void goToWeapons(int); + void goToDrawMap(); private slots: void ammoChanged(int index); @@ -62,9 +65,12 @@ void seedChanged(const QString &); void themeChanged(const QString &); void schemeChanged(int); + void scriptChanged(int); + void jumpToSchemes(); void jumpToWeapons(); void mapgenChanged(MapGenerator m); void maze_sizeChanged(int s); + void onDrawnMapChanged(const QByteArray & data); private: QGridLayout mainLayout; @@ -74,7 +80,6 @@ void setNetAmmo(const QString& name, const QString& ammo); - QVariant schemeData(int column) const; }; #endif // GAMECONFIGWIDGET_H
--- a/QTfrontend/gameuiconfig.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/gameuiconfig.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -185,7 +185,7 @@ quint32 rqNoBackground = 0x00000004; // don't draw background quint32 rqSimpleRope = 0x00000008; // avoid drawing rope quint32 rq2DWater = 0x00000010; // disabe 3D water effect - quint32 rqFancyBoom = 0x00000020; // no fancy explosion effects + quint32 rqAntiBoom = 0x00000020; // no fancy explosion effects quint32 rqKillFlakes = 0x00000040; // no flakes quint32 rqSlowMenu = 0x00000080; // ammomenu appears with no animation quint32 rqPlainSplash = 0x00000100; // no droplets @@ -206,15 +206,15 @@ break; case 2: result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | - rqFancyBoom | rqSlowMenu; + rqAntiBoom | rqSlowMenu; break; case 1: result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | - rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank; + rqAntiBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank; break; case 0: result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater | - rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank | + rqAntiBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank | rqNoBackground | rqClampLess; break; default:
--- a/QTfrontend/hats.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hats.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -77,6 +77,10 @@ QVariant HatsModel::headerData(int section, Qt::Orientation orientation, int role) const { + Q_UNUSED(section); + Q_UNUSED(orientation); + Q_UNUSED(role); + return QVariant(); }
--- a/QTfrontend/hedgehogerWidget.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hedgehogerWidget.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -20,8 +20,8 @@ #include "frameTeam.h" -CHedgehogerWidget::CHedgehogerWidget(const QImage& im, QWidget * parent) : - ItemNum(im, parent, 1) +CHedgehogerWidget::CHedgehogerWidget(const QImage& im, const QImage& img, QWidget * parent) : + ItemNum(im, img, parent, 1) { // TODO: maxHedgehogsPerGame doesn't reset properly and won't match map limits for now /*if(parent) {
--- a/QTfrontend/hedgehogerWidget.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hedgehogerWidget.h Tue Jan 04 12:53:46 2011 +0100 @@ -28,7 +28,7 @@ Q_OBJECT public: - CHedgehogerWidget(const QImage& im, QWidget * parent); + CHedgehogerWidget(const QImage& im, const QImage& img, QWidget * parent); virtual ~CHedgehogerWidget(); unsigned char getHedgehogsNum() const; void setHHNum (unsigned int num);
--- a/QTfrontend/hedgewars.qrc Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hedgewars.qrc Tue Jan 04 12:53:46 2011 +0100 @@ -2,8 +2,15 @@ <qresource> <file alias="Ammos.png">../share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png</file> <file>res/hh25x25.png</file> + <file>res/hh25x25grey.png</file> <file>res/ammopic.png</file> + <file>res/ammopicgrey.png</file> + <file>res/ammopicbox.png</file> + <file>res/ammopicboxgrey.png</file> + <file>res/ammopicdelay.png</file> + <file>res/ammopicdelaygrey.png</file> <file>res/infinity.png</file> + <file>res/infinitygrey.png</file> <file>res/botlevels/0.png</file> <file>res/botlevels/1.png</file> <file>res/botlevels/2.png</file> @@ -80,6 +87,7 @@ <file>res/iconTime.png</file> <file>res/iconMine.png</file> <file>res/iconDud.png</file> + <file>res/iconRope.png</file> <file>res/dice.png</file> <file>res/Star.png</file> <file>res/file_save.png</file> @@ -93,8 +101,6 @@ <file>res/chat_default_off.png</file> <file>res/chat_ignore_off.png</file> <file>res/chat_friend_off.png</file> - <file>res/ammopicbox.png</file> - <file>res/ammopicdelay.png</file> <file>res/addfriend.png</file> <file>res/remfriend.png</file> <file>res/ignore.png</file> @@ -102,6 +108,8 @@ <file>res/follow.png</file> <file>res/info.png</file> <file>res/kick.png</file> + <file>res/lock.png</file> + <file>res/unlock.png</file> <file>res/StatsMedal1.png</file> <file>res/StatsMedal2.png</file> <file>res/StatsMedal3.png</file>
--- a/QTfrontend/hwconsts.cpp.in Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hwconsts.cpp.in Tue Jan 04 12:53:46 2011 +0100 @@ -29,6 +29,7 @@ QStringList * Themes; QStringList * mapList; +QStringList * scriptList; bool custom_config = false; bool custom_data = false; @@ -36,10 +37,10 @@ int cMaxTeams = 6; QString * cDefaultAmmoStore = new QString( - "93919294221991210322351110012010000002111101010111" - "04050405416006555465544647765766666661555101011154" - "00000000000002055000000400070040000000002000000006" - "13111103121111111231141111111111111112111111011111" + "939192942219912103223511100120100000021111010101112" + "040504054160065554655446477657666666615551010111541" + "000000000000020550000004000700400000000020000000060" + "131111031211111112311411111111111111121111110111112" ); int cAmmoNumber = cDefaultAmmoStore->size() / 4; @@ -48,40 +49,40 @@ << qMakePair(QString("Default"), *cDefaultAmmoStore) << qMakePair(QString("Crazy"), QString( // TODO: Remove Piano's unlimited uses! - "99999999999999999929999999999999992999999999099999" - "11111101111111111111111111111111111111111111011111" - "00000000000000000000000000000000000000000000000000" - "13111103121111111231141111111111111112111101011111" + "999999999999999999299999999999999929999999990999999" + "111111011111111111111111111111111111111111110111111" + "000000000000000000000000000000000000000000000000000" + "131111031211111112311411111111111111121111010111111" )) << qMakePair(QString("Pro Mode"), QString( - "90900090000000000000090000000000000000000000000000" - "00000000000000000000000000000000000000000000000000" - "00000000000002055000000400070040000000002000000000" - "11111111111111111111111111111111111111111001011111" + "909000900000000000000900000000000000000000000000000" + "000000000000000000000000000000000000000000000000000" + "000000000000020550000004000700400000000020000000000" + "111111111111111111111111111111111111111110010111111" )) << qMakePair(QString("Shoppa"), QString( - "00000099000000000000000000000000000000000000000000" - "44444100442444022101121212224220000000020004000100" - "00000000000000000000000000000000000000000000000000" - "11111111111111111111111111111111111111111011011111" + "000000990000000000000000000000000000000000000000000" + "444441004424440221011212122242200000000200040001001" + "000000000000000000000000000000000000000000000000000" + "111111111111111111111111111111111111111110110111111" )) << qMakePair(QString("Clean Slate"),QString( - "10100090000100000110000000000000000000000000000010" - "04050405416006555465544647765766666661555101011154" - "00000000000000000000000000000000000000000000000000" - "13111103121111111231141111111111111112111111011111" + "101000900001000001100000000000000000000000000000100" + "040504054160065554655446477657666666615551010111541" + "000000000000000000000000000000000000000000000000000" + "131111031211111112311411111111111111121111110111111" )) << qMakePair(QString("Minefield"), QString( - "00000099000900000003000000000000000000000000000000" - "00000000000000000000000000000000000000000000000000" - "00000000000002055000000400070040000000002000000006" - "11111111111111111111111111111111111111111111011111" + "000000990009000000030000000000000000000000000000000" + "000000000000000000000000000000000000000000000000000" + "000000000000020550000004000700400000000020000000060" + "111111111111111111111111111111111111111111110111111" )) << qMakePair(QString("Thinking with Portals"), QString( - "90000090020000000021000000000000001100000900000000" - "04050405416006555465544647765766666661555101011154" - "00000000000002055000000400070040000000002000000006" - "13111103121111111231141111111111111112111111011111" + "900000900200000000210000000000000011000009000000000" + "040504054160065554655446477657666666615551010111541" + "000000000000020550000004000700400000000020000000060" + "131111031211111112311411111111111111121111110111111" )); QColor *colors[] = {
--- a/QTfrontend/hwconsts.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hwconsts.h Tue Jan 04 12:53:46 2011 +0100 @@ -38,6 +38,7 @@ extern QStringList * Themes; extern QStringList * mapList; +extern QStringList * scriptList; extern QString * cDefaultAmmoStore; extern int cAmmoNumber;
--- a/QTfrontend/hwform.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hwform.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -35,6 +35,7 @@ #include <QDataWidgetMapper> #include <QTableView> #include <QCryptographicHash> +#include <QSignalMapper> #include "hwform.h" #include "game.h" @@ -56,6 +57,7 @@ #include "ammoSchemeModel.h" #include "bgwidget.h" #include "xfire.h" +#include "drawmapwidget.h" #ifdef __APPLE__ #include "CocoaInitializer.h" @@ -77,13 +79,14 @@ #ifdef USE_XFIRE xfire_init(); #endif + game = NULL; gameSettings = new QSettings(cfgdir->absolutePath() + "/hedgewars.ini", QSettings::IniFormat); frontendEffects = gameSettings->value("frontend/effects", true).toBool(); playerHash = QString(QCryptographicHash::hash(gameSettings->value("net/nick","").toString().toLatin1(), QCryptographicHash::Md5).toHex()); ui.setupUi(this); setMinimumSize(760, 580); - setFocusPolicy(Qt::StrongFocus); + //setFocusPolicy(Qt::StrongFocus); CustomizePalettes(); ui.pageOptions->CBResolution->addItems(sdli.getResolutions()); @@ -107,13 +110,23 @@ UpdateCampaignPage(0); UpdateWeapons(); + pageSwitchMapper = new QSignalMapper(this); + connect(pageSwitchMapper, SIGNAL(mapped(int)), this, SLOT(GoToPage(int))); + connect(config, SIGNAL(frontendFullscreen(bool)), this, SLOT(onFrontendFullscreen(bool))); onFrontendFullscreen(config->isFrontendFullscreen()); - connect(ui.pageMain->BtnSinglePlayer, SIGNAL(clicked()), this, SLOT(GoToSinglePlayer())); - connect(ui.pageMain->BtnSetup, SIGNAL(clicked()), this, SLOT(GoToSetup())); - connect(ui.pageMain->BtnNet, SIGNAL(clicked()), this, SLOT(GoToNetType())); - connect(ui.pageMain->BtnInfo, SIGNAL(clicked()), this, SLOT(GoToInfo())); + connect(ui.pageMain->BtnSinglePlayer, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageMain->BtnSinglePlayer, ID_PAGE_SINGLEPLAYER); + + connect(ui.pageMain->BtnSetup, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageMain->BtnSetup, ID_PAGE_SETUP); + + connect(ui.pageMain->BtnNet, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageMain->BtnNet, ID_PAGE_NETTYPE); + connect(ui.pageMain->BtnInfo, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageMain->BtnInfo, ID_PAGE_INFO); + connect(ui.pageMain->BtnExit, SIGNAL(pressed()), this, SLOT(btnExitPressed())); connect(ui.pageMain->BtnExit, SIGNAL(clicked()), this, SLOT(btnExitClicked())); @@ -127,9 +140,12 @@ connect(ui.pageMultiplayer->BtnStartMPGame, SIGNAL(clicked()), this, SLOT(StartMPGame())); connect(ui.pageMultiplayer->teamsSelect, SIGNAL(setEnabledGameStart(bool)), ui.pageMultiplayer->BtnStartMPGame, SLOT(setEnabled(bool))); - connect(ui.pageMultiplayer->teamsSelect, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup())); - connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToSchemes()), this, SLOT(GoToSchemes())); - connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToWeapons(const QString &)), this, SLOT(GoToSelectWeaponSet(const QString &))); + connect(ui.pageMultiplayer, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup())); + connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToSchemes(int)), this, SLOT(GoToScheme(int))); + connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToWeapons(int)), this, SLOT(GoToSelectWeaponSet(int))); + connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToDrawMap()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageMultiplayer->gameCFG, ID_PAGE_DRAWMAP); + connect(ui.pagePlayDemo->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pagePlayDemo->BtnPlayDemo, SIGNAL(clicked()), this, SLOT(PlayDemo())); @@ -146,12 +162,18 @@ #endif connect(ui.pageOptions->WeaponEdit, SIGNAL(clicked()), this, SLOT(GoToSelectWeapon())); - connect(ui.pageOptions->WeaponsButt, SIGNAL(clicked()), this, SLOT(GoToSelectNewWeapon())); + connect(ui.pageOptions->WeaponNew, SIGNAL(clicked()), this, SLOT(GoToSelectNewWeapon())); + connect(ui.pageOptions->WeaponDelete, SIGNAL(clicked()), this, SLOT(DeleteWeaponSet())); + connect(ui.pageOptions->SchemeEdit, SIGNAL(clicked()), this, SLOT(GoToEditScheme())); + connect(ui.pageOptions->SchemeNew, SIGNAL(clicked()), this, SLOT(GoToNewScheme())); + connect(ui.pageOptions->SchemeDelete, SIGNAL(clicked()), this, SLOT(DeleteScheme())); connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsChanged()), this, SLOT(UpdateWeapons())); connect(ui.pageNet->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pageNet->BtnSpecifyServer, SIGNAL(clicked()), this, SLOT(NetConnect())); - connect(ui.pageNet->BtnNetSvrStart, SIGNAL(clicked()), this, SLOT(GoToNetServer())); + connect(ui.pageNet->BtnNetSvrStart, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageNet->BtnNetSvrStart, ID_PAGE_NETSERVER); + connect(ui.pageNet, SIGNAL(connectClicked(const QString &, quint16)), this, SLOT(NetConnectServer(const QString &, quint16))); connect(ui.pageNetServer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); @@ -162,21 +184,30 @@ ui.pageNetGame->BtnGo, SLOT(setEnabled(bool))); connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(setEnabledGameStart(bool)), ui.pageNetGame->BtnStart, SLOT(setEnabled(bool))); - connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup())); - connect(ui.pageNetGame->pGameCFG, SIGNAL(goToSchemes()), this, SLOT(GoToSchemes())); - connect(ui.pageNetGame->pGameCFG, SIGNAL(goToWeapons(const QString &)), this, SLOT(GoToSelectWeaponSet(const QString &))); + connect(ui.pageNetGame, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup())); + connect(ui.pageNetGame->pGameCFG, SIGNAL(goToSchemes(int)), this, SLOT(GoToScheme(int))); + connect(ui.pageNetGame->pGameCFG, SIGNAL(goToWeapons(int)), this, SLOT(GoToSelectWeaponSet(int))); + connect(ui.pageNetGame->pGameCFG, SIGNAL(goToDrawMap()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageNetGame->pGameCFG, ID_PAGE_DRAWMAP); connect(ui.pageRoomsList->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); - connect(ui.pageRoomsList->BtnAdmin, SIGNAL(clicked()), this, SLOT(GoToAdmin())); + connect(ui.pageRoomsList->BtnAdmin, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageRoomsList->BtnAdmin, ID_PAGE_ADMIN); connect(ui.pageInfo->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pageGameStats->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); connect(ui.pageSinglePlayer->BtnSimpleGamePage, SIGNAL(clicked()), this, SLOT(SimpleGame())); - connect(ui.pageSinglePlayer->BtnTrainPage, SIGNAL(clicked()), this, SLOT(GoToTraining())); - connect(ui.pageSinglePlayer->BtnCampaignPage, SIGNAL(clicked()), this, SLOT(GoToCampaign())); - connect(ui.pageSinglePlayer->BtnMultiplayer, SIGNAL(clicked()), this, SLOT(GoToMultiplayer())); + connect(ui.pageSinglePlayer->BtnTrainPage, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageSinglePlayer->BtnTrainPage, ID_PAGE_TRAINING); + + connect(ui.pageSinglePlayer->BtnCampaignPage, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageSinglePlayer->BtnCampaignPage, ID_PAGE_CAMPAIGN); + + connect(ui.pageSinglePlayer->BtnMultiplayer, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); + pageSwitchMapper->setMapping(ui.pageSinglePlayer->BtnMultiplayer, ID_PAGE_MULTIPLAYER); + connect(ui.pageSinglePlayer->BtnLoad, SIGNAL(clicked()), this, SLOT(GoToSaves())); connect(ui.pageSinglePlayer->BtnDemos, SIGNAL(clicked()), this, SLOT(GoToDemos())); connect(ui.pageSinglePlayer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); @@ -194,8 +225,8 @@ ui.pageSelectWeapon->pWeapons, SLOT(deleteWeaponsName())); // executed first connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsDeleted()), this, SLOT(UpdateWeapons())); // executed second - connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsDeleted()), - this, SLOT(GoBack())); // executed third + //connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsDeleted()), + // this, SLOT(GoBack())); // executed third connect(ui.pageScheme->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); @@ -205,10 +236,13 @@ connect(ui.pageNetType->BtnLAN, SIGNAL(clicked()), this, SLOT(GoToNet())); connect(ui.pageNetType->BtnOfficialServer, SIGNAL(clicked()), this, SLOT(NetConnectOfficialServer())); + connect(ui.pageDrawMap->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack())); + ammoSchemeModel = new AmmoSchemeModel(this, cfgdir->absolutePath() + "/schemes.ini"); ui.pageScheme->setModel(ammoSchemeModel); ui.pageMultiplayer->gameCFG->GameSchemes->setModel(ammoSchemeModel); + ui.pageOptions->SchemesName->setModel(ammoSchemeModel); wBackground = NULL; if (config->isFrontendEffects()) { @@ -274,11 +308,13 @@ } } +/* void HWForm::keyReleaseEvent(QKeyEvent *event) { - if (event->key() == Qt::Key_Escape /*|| event->key() == Qt::Key_Backspace*/ ) + if (event->key() == Qt::Key_Escape) this->GoBack(); } +*/ void HWForm::CustomizePalettes() { @@ -299,6 +335,7 @@ combos.push_back(ui.pageOptions->WeaponsName); combos.push_back(ui.pageMultiplayer->gameCFG->WeaponsName); combos.push_back(ui.pageNetGame->pGameCFG->WeaponsName); + combos.push_back(ui.pageSelectWeapon->selectWeaponSet); QStringList names = ui.pageSelectWeapon->pWeapons->getWeaponNames(); @@ -336,59 +373,24 @@ ui.pageCampaign->CBTeam->addItems(teamslist); } -void HWForm::GoToMain() -{ - GoToPage(ID_PAGE_MAIN); -} - -void HWForm::GoToSinglePlayer() -{ - GoToPage(ID_PAGE_SINGLEPLAYER); -} - -void HWForm::GoToTraining() -{ - GoToPage(ID_PAGE_TRAINING); -} - -void HWForm::GoToCampaign() -{ - GoToPage(ID_PAGE_CAMPAIGN); -} - -void HWForm::GoToSetup() -{ - GoToPage(ID_PAGE_SETUP); -} - void HWForm::GoToSelectNewWeapon() { - ui.pageSelectWeapon->pWeapons->setWeaponsName(tr("new")); + ui.pageSelectWeapon->pWeapons->newWeaponsName(); GoToPage(ID_PAGE_SELECTWEAPON); } void HWForm::GoToSelectWeapon() { - ui.pageSelectWeapon->pWeapons->setWeaponsName(ui.pageOptions->WeaponsName->currentText()); + ui.pageSelectWeapon->selectWeaponSet->setCurrentIndex(ui.pageOptions->WeaponsName->currentIndex()); GoToPage(ID_PAGE_SELECTWEAPON); } -void HWForm::GoToSelectWeaponSet(const QString & name) +void HWForm::GoToSelectWeaponSet(int index) { - ui.pageSelectWeapon->pWeapons->setWeaponsName(name); + ui.pageSelectWeapon->selectWeaponSet->setCurrentIndex(index); GoToPage(ID_PAGE_SELECTWEAPON); } -void HWForm::GoToInfo() -{ - GoToPage(ID_PAGE_INFO); -} - -void HWForm::GoToMultiplayer() -{ - GoToPage(ID_PAGE_MULTIPLAYER); -} - void HWForm::GoToSaves() { ui.pagePlayDemo->FillFromDir(PagePlayDemo::RT_Save); @@ -410,24 +412,22 @@ GoToPage(ID_PAGE_NET); } -void HWForm::GoToNetType() +void HWForm::GoToScheme(int index) { - GoToPage(ID_PAGE_NETTYPE); -} - -void HWForm::GoToNetServer() -{ - GoToPage(ID_PAGE_NETSERVER); -} - -void HWForm::GoToSchemes() -{ + ui.pageScheme->selectScheme->setCurrentIndex(index); GoToPage(ID_PAGE_SCHEME); } -void HWForm::GoToAdmin() +void HWForm::GoToNewScheme() { - GoToPage(ID_PAGE_ADMIN); + ui.pageScheme->newRow(); + GoToPage(ID_PAGE_SCHEME); +} + +void HWForm::GoToEditScheme() +{ + ui.pageScheme->selectScheme->setCurrentIndex(ui.pageOptions->SchemesName->currentIndex()); + GoToPage(ID_PAGE_SCHEME); } void HWForm::OnPageShown(quint8 id, quint8 lastid) @@ -435,6 +435,24 @@ #ifdef USE_XFIRE updateXfire(); #endif + if(id == ID_PAGE_DRAWMAP) + { + DrawMapScene * scene; + if(lastid == ID_PAGE_MULTIPLAYER) + scene = ui.pageMultiplayer->gameCFG->pMapContainer->getDrawMapScene(); + else + scene = ui.pageNetGame->pGameCFG->pMapContainer->getDrawMapScene(); + + ui.pageDrawMap->drawMapWidget->setScene(scene); + } + if(lastid == ID_PAGE_DRAWMAP) + { + if(id == ID_PAGE_MULTIPLAYER) + ui.pageMultiplayer->gameCFG->pMapContainer->mapDrawingFinished(); + else + ui.pageNetGame->pGameCFG->pMapContainer->mapDrawingFinished(); + } + if (id == ID_PAGE_MULTIPLAYER || id == ID_PAGE_NETGAME) { QStringList tmNames = config->GetTeamsList(); TeamSelWidget* curTeamSelWidget; @@ -457,7 +475,7 @@ teamsList.push_back(team); } - if(lastid == ID_PAGE_SETUP) { // _TEAM + if(lastid == ID_PAGE_SETUP || lastid == ID_PAGE_DRAWMAP) { // _TEAM if (editedTeam) { curTeamSelWidget->addTeam(*editedTeam); } @@ -490,13 +508,19 @@ if(id == ID_PAGE_NETGAME) // joining a room ui.pageNetGame->pChatWidget->loadLists(ui.pageOptions->editNetNick->text()); - else if(id == ID_PAGE_ROOMSLIST) // joining the lobby +// joining the lobby + else if(id == ID_PAGE_ROOMSLIST) { + if ( hwnet && game && game->gameState == gsStarted) { // abnormal exit - kick or room destruction - send kills. + game->netSuspend = true; + game->KillAllTeams(); + } ui.pageRoomsList->chatWidget->loadLists(ui.pageOptions->editNetNick->text()); + } } -void HWForm::GoToPage(quint8 id) +void HWForm::GoToPage(int id) { - quint8 lastid = ui.Pages->currentIndex(); + int lastid = ui.Pages->currentIndex(); PagesStack.push(ui.Pages->currentIndex()); OnPageShown(id, lastid); ui.Pages->setCurrentIndex(id); @@ -504,8 +528,8 @@ void HWForm::GoBack() { - quint8 id = PagesStack.isEmpty() ? ID_PAGE_MAIN : PagesStack.pop(); - quint8 curid = ui.Pages->currentIndex(); + int id = PagesStack.isEmpty() ? ID_PAGE_MAIN : PagesStack.pop(); + int curid = ui.Pages->currentIndex(); ui.Pages->setCurrentIndex(id); OnPageShown(id, curid); @@ -521,6 +545,9 @@ GoBack(); if (curid == ID_PAGE_ROOMSLIST) NetDisconnect(); + if (curid == ID_PAGE_NETGAME) hwnet->partRoom(); + // need to work on this, can cause invalid state for admin quit trying to prevent bad state message on kick + //if (curid == ID_PAGE_NETGAME && (!game || game->gameState != gsStarted)) hwnet->partRoom(); if (curid == ID_PAGE_SCHEME) ammoSchemeModel->Save(); @@ -588,11 +615,15 @@ void HWForm::DeleteTeam() { - editedTeam = new HWTeam(ui.pageOptions->CBTeamName->currentText()); - editedTeam->DeleteFile(); + QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Teams"), QMessageBox::tr("Really delete this team?"), QMessageBox::Ok | QMessageBox::Cancel); - // Remove from lists - ui.pageOptions->CBTeamName->removeItem(ui.pageOptions->CBTeamName->currentIndex()); + if (reallyDelete.exec() == QMessageBox::Ok) { + editedTeam = new HWTeam(ui.pageOptions->CBTeamName->currentText()); + editedTeam->DeleteFile(); + + // Remove from lists + ui.pageOptions->CBTeamName->removeItem(ui.pageOptions->CBTeamName->currentIndex()); + } } void HWForm::RandomNames() @@ -626,6 +657,23 @@ GoBack(); } +void HWForm::DeleteScheme() +{ + ui.pageScheme->selectScheme->setCurrentIndex(ui.pageOptions->SchemesName->currentIndex()); + if (ui.pageOptions->SchemesName->currentIndex() < ammoSchemeModel->numberOfDefaultSchemes) { + QMessageBox::warning(0, QMessageBox::tr("Schemes"), QMessageBox::tr("Can not delete default scheme '%1'!").arg(ui.pageOptions->SchemesName->currentText())); + } else { + ui.pageScheme->deleteRow(); + ammoSchemeModel->Save(); + } +} + +void HWForm::DeleteWeaponSet() +{ + ui.pageSelectWeapon->selectWeaponSet->setCurrentIndex(ui.pageOptions->WeaponsName->currentIndex()); + ui.pageSelectWeapon->pWeapons->deleteWeaponsName(); +} + void HWForm::SimpleGame() { CreateGame(0, 0, *cDefaultAmmoStore); @@ -678,7 +726,7 @@ connect(hwnet, SIGNAL(EnteredGame()), this, SLOT(NetGameEnter())); connect(hwnet, SIGNAL(LeftRoom()), this, SLOT(NetLeftRoom())); connect(hwnet, SIGNAL(AddNetTeam(const HWTeam&)), this, SLOT(AddNetTeam(const HWTeam&))); - connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), hwnet, SLOT(partRoom())); + //connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), hwnet, SLOT(partRoom())); // rooms list page stuff connect(hwnet, SIGNAL(roomsList(const QStringList&)), @@ -830,7 +878,6 @@ void HWForm::NetDisconnect() { - //qDebug("NetDisconnect"); if(hwnet) { hwnet->Disconnect(); delete hwnet; @@ -853,8 +900,9 @@ { if(pnetserver) return; // we have server - let it care of all things if (hwnet) { - hwnet->deleteLater(); + HWNewNet * tmp = hwnet; hwnet = 0; + tmp->deleteLater(); QMessageBox::warning(this, QMessageBox::tr("Network"), QMessageBox::tr("Connection to server is lost")); @@ -892,11 +940,12 @@ void HWForm::GameStateChanged(GameState gameState) { + quint8 id = ui.Pages->currentIndex(); switch(gameState) { case gsStarted: { Music(false); if (wBackground) wBackground->stopAnimation(); - GoToPage(ID_PAGE_INGAME); + if (!hwnet || (!hwnet->isRoomChief() || !hwnet->isInRoom())) GoToPage(ID_PAGE_INGAME); ui.pageGameStats->clear(); if (pRegisterServer) { @@ -910,19 +959,23 @@ case gsFinished: { //setVisible(true); setFocusPolicy(Qt::StrongFocus); - GoBack(); + if (id == ID_PAGE_INGAME) GoBack(); Music(ui.pageOptions->CBEnableFrontendMusic->isChecked()); if (wBackground) wBackground->startAnimation(); GoToPage(ID_PAGE_GAMESTATS); - if (hwnet) hwnet->gameFinished(); + if (hwnet && (!game || !game->netSuspend)) hwnet->gameFinished(); + if (game) game->netSuspend = false; break; } default: { //setVisible(true); setFocusPolicy(Qt::StrongFocus); quint8 id = ui.Pages->currentIndex(); - if (id == ID_PAGE_INGAME) { - GoBack(); + if (id == ID_PAGE_INGAME || +// was room chief and the game was aborted + (hwnet && hwnet->isRoomChief() && hwnet->isInRoom() && + (gameState == gsInterrupted || gameState == gsStopped || gameState == gsDestroyed))) { + if (id == ID_PAGE_INGAME) GoBack(); Music(ui.pageOptions->CBEnableFrontendMusic->isChecked()); if (wBackground) wBackground->startAnimation(); if (hwnet) hwnet->gameFinished(); @@ -1089,7 +1142,7 @@ void HWForm::NetLeftRoom() { - if (ui.Pages->currentIndex() == ID_PAGE_NETGAME) + if (ui.Pages->currentIndex() == ID_PAGE_NETGAME || ui.Pages->currentIndex() == ID_PAGE_INGAME) GoBack(); else qWarning("Left room while not in room"); @@ -1107,6 +1160,8 @@ void HWForm::UpdateCampaignPage(int index) { + Q_UNUSED(index); + HWTeam team(ui.pageCampaign->CBTeam->currentText()); ui.pageCampaign->CBSelect->clear(); @@ -1117,7 +1172,7 @@ QStringList entries = tmpdir.entryList(QStringList("*#*.lua")); //entries.sort(); for(int i = 0; (i < entries.count()) && (i <= team.CampaignProgress); i++) - ui.pageCampaign->CBSelect->addItem(QString(entries[i]).replace(QRegExp("^(\\d+)#(.+)\\.lua"), QComboBox::tr("Mission") + " \\1: \\2"), QString(entries[i]).replace(QRegExp("^(.*)\\.lua"), "\\1")); + ui.pageCampaign->CBSelect->addItem(QString(entries[i]).replace(QRegExp("^(\\d+)#(.+)\\.lua"), QComboBox::tr("Mission") + " \\1: \\2").replace("_", " "), QString(entries[i]).replace(QRegExp("^(.*)\\.lua"), "\\1")); } void HWForm::AssociateFiles()
--- a/QTfrontend/hwform.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hwform.h Tue Jan 04 12:53:46 2011 +0100 @@ -42,6 +42,7 @@ class QCloseEvent; class AmmoSchemeModel; class QSettings; +class QSignalMapper; extern bool frontendEffects; extern QString playerHash; @@ -59,24 +60,16 @@ void updateXfire(); private slots: - void GoToMain(); - void GoToSinglePlayer(); - void GoToSetup(); - void GoToMultiplayer(); void GoToSaves(); void GoToDemos(); void GoToNet(); - void GoToNetType(); - void GoToInfo(); - void GoToTraining(); - void GoToCampaign(); void GoToSelectWeapon(); - void GoToSelectWeaponSet(const QString & name); + void GoToSelectWeaponSet(int index); void GoToSelectNewWeapon(); - void GoToNetServer(); - void GoToSchemes(); - void GoToAdmin(); - void GoToPage(quint8 id); + void GoToScheme(int index); + void GoToEditScheme(); + void GoToNewScheme(); + void GoToPage(int id); void GoBack(); void AssociateFiles(); void btnExitPressed(); @@ -89,6 +82,8 @@ void RandomName(const int &i); void TeamSave(); void TeamDiscard(); + void DeleteScheme(); + void DeleteWeaponSet(); void SimpleGame(); void PlayDemo(); void StartTraining(); @@ -127,7 +122,7 @@ void closeEvent(QCloseEvent *event); void CustomizePalettes(); void resizeEvent(QResizeEvent * event); - void keyReleaseEvent(QKeyEvent *event); + //void keyReleaseEvent(QKeyEvent *event); enum PageIDs { ID_PAGE_SETUP_TEAM = 0, @@ -149,7 +144,8 @@ ID_PAGE_SCHEME = 16, ID_PAGE_ADMIN = 17, ID_PAGE_NETTYPE = 18, - ID_PAGE_CAMPAIGN = 19 + ID_PAGE_CAMPAIGN = 19, + ID_PAGE_DRAWMAP = 20 }; HWGame * game; HWNetServer* pnetserver; @@ -158,9 +154,10 @@ HWNewNet * hwnet; HWNamegen * namegen; AmmoSchemeModel * ammoSchemeModel; - QStack<quint8> PagesStack; + QStack<int> PagesStack; QTime eggTimer; BGWidget * wBackground; + QSignalMapper * pageSwitchMapper; #ifdef __APPLE__ InstallController * panel;
--- a/QTfrontend/hwmap.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hwmap.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -27,12 +27,13 @@ { } -void HWMap::getImage(std::string seed, int filter, MapGenerator mapgen, int maze_size) +void HWMap::getImage(const QString & seed, int filter, MapGenerator mapgen, int maze_size, const QByteArray & drawMapData) { m_seed = seed; templateFilter = filter; m_mapgen = mapgen; m_maze_size = maze_size; + if(mapgen == MAPGEN_DRAWN) m_drawMapData = drawMapData; Start(); } @@ -59,9 +60,30 @@ void HWMap::SendToClientFirst() { - SendIPC(QString("eseed %1").arg(m_seed.c_str()).toLatin1()); - SendIPC(QString("e$template_filter %1").arg(templateFilter).toLatin1()); - SendIPC(QString("e$mapgen %1").arg(m_mapgen).toLatin1()); - SendIPC(QString("e$maze_size %1").arg(m_maze_size).toLatin1()); + SendIPC(QString("eseed %1").arg(m_seed).toUtf8()); + SendIPC(QString("e$template_filter %1").arg(templateFilter).toUtf8()); + SendIPC(QString("e$mapgen %1").arg(m_mapgen).toUtf8()); + + switch (m_mapgen) + { + case MAPGEN_MAZE: + SendIPC(QString("e$maze_size %1").arg(m_maze_size).toUtf8()); + break; + + case MAPGEN_DRAWN: + { + QByteArray data = m_drawMapData; + while(data.size() > 0) + { + QByteArray tmp = data; + tmp.truncate(200); + SendIPC("edraw " + tmp); + data.remove(0, 200); + } + break; + } + default: ; + } + SendIPC("!"); }
--- a/QTfrontend/hwmap.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/hwmap.h Tue Jan 04 12:53:46 2011 +0100 @@ -25,12 +25,12 @@ #include "tcpBase.h" -#include <string> - enum MapGenerator { MAPGEN_REGULAR, MAPGEN_MAZE, + MAPGEN_DRAWN, + MAPGEN_MAP }; class HWMap : public TCPBase @@ -40,7 +40,7 @@ public: HWMap(); virtual ~HWMap(); - void getImage(std::string seed, int templateFilter, MapGenerator mapgen, int maze_size); + void getImage(const QString & seed, int templateFilter, MapGenerator mapgen, int maze_size, const QByteArray & drawMapData); protected: virtual QStringList setArguments(); @@ -52,10 +52,11 @@ void HHLimitReceived(int hhLimit); private: - std::string m_seed; + QString m_seed; int templateFilter; MapGenerator m_mapgen; int m_maze_size; + QByteArray m_drawMapData; private slots: };
--- a/QTfrontend/igbox.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/igbox.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -24,6 +24,7 @@ #include "igbox.h" IconedGroupBox::IconedGroupBox(QWidget * parent) + : QGroupBox(parent) { // Has issues with border-radius on children // setAttribute(Qt::WA_PaintOnScreen, true); @@ -56,6 +57,8 @@ void IconedGroupBox::paintEvent(QPaintEvent * event) { + Q_UNUSED(event); + QStylePainter painter(this); QStyleOptionGroupBox option;
--- a/QTfrontend/itemNum.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/itemNum.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -22,10 +22,11 @@ #include <QMouseEvent> #include <QPainter> -ItemNum::ItemNum(const QImage& im, QWidget * parent, unsigned char min, unsigned char max) : - QFrame(parent), m_im(im), infinityState(false), nonInteractive(false), minItems(min), maxItems(max), +ItemNum::ItemNum(const QImage& im, const QImage& img, QWidget * parent, unsigned char min, unsigned char max) : + QFrame(parent), m_im(im), m_img(img), infinityState(false), nonInteractive(false), minItems(min), maxItems(max), numItems(min+2 >= max ? min : min+2) { + enabled = true; if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true); } @@ -36,7 +37,7 @@ void ItemNum::mousePressEvent ( QMouseEvent * event ) { if(nonInteractive) return; - if(event->button()==Qt::LeftButton) { + if(event->button()==Qt::LeftButton && enabled) { event->accept(); if((infinityState && numItems <= maxItems) || (!infinityState && numItems < maxItems)) { incItems(); @@ -45,7 +46,7 @@ // appears there's an emit in there decItems(); } - } else if (event->button()==Qt::RightButton) { + } else if (event->button()==Qt::RightButton && enabled) { event->accept(); if(numItems > minItems) { decItems(); @@ -67,15 +68,25 @@ void ItemNum::paintEvent(QPaintEvent* event) { + Q_UNUSED(event); + QPainter painter(this); if (numItems==maxItems+1) { QRect target(0, 0, 100, 32); - painter.drawImage(target, QImage(":/res/infinity.png")); + if (enabled) { + painter.drawImage(target, QImage(":/res/infinity.png")); + } else { + painter.drawImage(target, QImage(":/res/infinitygrey.png")); + } } else { for(int i=0; i<numItems; i++) { QRect target(11 * i, i % 2, 25, 35); - painter.drawImage(target, m_im); + if (enabled) { + painter.drawImage(target, m_im); + } else { + painter.drawImage(target, m_img); + } } } } @@ -88,9 +99,16 @@ void ItemNum::setItemsNum(const unsigned char num) { numItems=num; + repaint(); } void ItemNum::setInfinityState(bool value) { infinityState=value; } + +void ItemNum::setEnabled(bool value) +{ + enabled=value; + repaint(); +}
--- a/QTfrontend/itemNum.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/itemNum.h Tue Jan 04 12:53:46 2011 +0100 @@ -28,15 +28,18 @@ public: void setInfinityState(bool value); + void setEnabled(bool value); unsigned char getItemsNum() const; void setItemsNum(const unsigned char num); private: QImage m_im; + QImage m_img; bool infinityState; + bool enabled; protected: - ItemNum(const QImage& im, QWidget * parent, unsigned char min=2, unsigned char max=8); + ItemNum(const QImage& im, const QImage& img, QWidget * parent, unsigned char min=2, unsigned char max=8); virtual QSize sizeHint () const; virtual ~ItemNum()=0;
--- a/QTfrontend/main.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/main.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -399,6 +399,11 @@ tmpdir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); mapList = new QStringList(tmpdir.entryList(QStringList("*"))); + tmpdir.cd(datadir->absolutePath()); + tmpdir.cd("Scripts/Multiplayer"); + tmpdir.setFilter(QDir::Files | QDir::NoDotAndDotDot); + scriptList = new QStringList(tmpdir.entryList(QStringList("*.lua"))); + QTranslator Translator; {
--- a/QTfrontend/mapContainer.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/mapContainer.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -29,6 +29,8 @@ #include <QListWidget> #include <QVBoxLayout> #include <QIcon> +#include <QLineEdit> +#include <QMessageBox> #include "hwconsts.h" #include "mapContainer.h" @@ -38,8 +40,7 @@ QWidget(parent), mainLayout(this), pMap(0), - mapgen(MAPGEN_REGULAR), - maze_size(0) + mapgen(MAPGEN_REGULAR) { hhSmall.load(":/res/hh_small.png"); hhLimit = 18; @@ -50,17 +51,23 @@ QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin), QApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin)); - imageButt = new QPushButton(this); + QWidget* mapWidget = new QWidget(this); + mainLayout.addWidget(mapWidget, 0, 0, Qt::AlignHCenter); + + QGridLayout* mapLayout = new QGridLayout(mapWidget); + mapLayout->setMargin(0); + + imageButt = new QPushButton(mapWidget); imageButt->setObjectName("imageButt"); imageButt->setFixedSize(256 + 6, 128 + 6); imageButt->setFlat(true); imageButt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);//QSizePolicy::Minimum, QSizePolicy::Minimum); - mainLayout.addWidget(imageButt, 0, 0, 1, 2); + mapLayout->addWidget(imageButt, 0, 0, 1, 2); //connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomSeed())); //connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomTheme())); connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomMap())); - chooseMap = new QComboBox(this); + chooseMap = new QComboBox(mapWidget); chooseMap->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); chooseMap->addItem( // FIXME - need real icons. Disabling until then @@ -70,6 +77,10 @@ // FIXME - need real icons. Disabling until then //QIcon(":/res/mapMaze.png"), QComboBox::tr("generated maze...")); + + chooseMap->addItem(QComboBox::tr("hand drawn map...")); + chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions + chooseMap->insertSeparator(chooseMap->count()); // separator between generators and missions int missionindex = chooseMap->count(); @@ -88,10 +99,14 @@ if (mapCfgFile.open(QFile::ReadOnly)) { QString theme; quint32 limit = 0; + QString scheme; + QString weapons; QList<QVariant> mapInfo; QTextStream input(&mapCfgFile); input >> theme; input >> limit; + input >> scheme; + input >> weapons; mapInfo.push_back(map); mapInfo.push_back(theme); if (limit) @@ -99,6 +114,14 @@ else mapInfo.push_back(18); mapInfo.push_back(mapLuaFile.exists()); + if (scheme.isEmpty()) + scheme = "locked"; + scheme.replace("_", " "); + if (weapons.isEmpty()) + weapons = "locked"; + weapons.replace("_", " "); + mapInfo.push_back(scheme); + mapInfo.push_back(weapons); if(mapLuaFile.exists()) { chooseMap->insertItem(missionindex++, @@ -118,29 +141,29 @@ chooseMap->insertSeparator(missionindex); // separator between missions and maps connect(chooseMap, SIGNAL(currentIndexChanged(int)), this, SLOT(mapChanged(int))); - mainLayout.addWidget(chooseMap, 1, 1); + mapLayout->addWidget(chooseMap, 1, 1); - QLabel * lblMap = new QLabel(tr("Map"), this); - mainLayout.addWidget(lblMap, 1, 0); + QLabel * lblMap = new QLabel(tr("Map"), mapWidget); + mapLayout->addWidget(lblMap, 1, 0); - lblFilter = new QLabel(tr("Filter"), this); - mainLayout.addWidget(lblFilter, 2, 0); + lblFilter = new QLabel(tr("Filter"), mapWidget); + mapLayout->addWidget(lblFilter, 2, 0); - CB_TemplateFilter = new QComboBox(this); + CB_TemplateFilter = new QComboBox(mapWidget); CB_TemplateFilter->addItem(tr("All"), 0); CB_TemplateFilter->addItem(tr("Small"), 1); CB_TemplateFilter->addItem(tr("Medium"), 2); CB_TemplateFilter->addItem(tr("Large"), 3); CB_TemplateFilter->addItem(tr("Cavern"), 4); CB_TemplateFilter->addItem(tr("Wacky"), 5); - mainLayout.addWidget(CB_TemplateFilter, 2, 1); + mapLayout->addWidget(CB_TemplateFilter, 2, 1); connect(CB_TemplateFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(templateFilterChanged(int))); - maze_size_label = new QLabel(tr("Type"), this); + maze_size_label = new QLabel(tr("Type"), mapWidget); mainLayout.addWidget(maze_size_label, 2, 0); maze_size_label->hide(); - maze_size_selection = new QComboBox(this); + maze_size_selection = new QComboBox(mapWidget); maze_size_selection->addItem(tr("Small tunnels"), 0); maze_size_selection->addItem(tr("Medium tunnels"), 1); maze_size_selection->addItem(tr("Large tunnels"), 2); @@ -148,23 +171,23 @@ maze_size_selection->addItem(tr("Medium floating islands"), 4); maze_size_selection->addItem(tr("Large floating islands"), 5); maze_size_selection->setCurrentIndex(1); - maze_size = 1; - mainLayout.addWidget(maze_size_selection, 2, 1); + + mapLayout->addWidget(maze_size_selection, 2, 1); maze_size_selection->hide(); connect(maze_size_selection, SIGNAL(currentIndexChanged(int)), this, SLOT(setMaze_size(int))); - gbThemes = new IconedGroupBox(this); - gbThemes->setTitleTextPadding(60); - gbThemes->setContentTopPadding(6); + gbThemes = new IconedGroupBox(mapWidget); + gbThemes->setTitleTextPadding(80); + gbThemes->setContentTopPadding(15); gbThemes->setTitle(tr("Themes")); //gbThemes->setStyleSheet("padding: 0px"); // doesn't work - stylesheet is set with icon - mainLayout.addWidget(gbThemes, 0, 2, 3, 1); + mapLayout->addWidget(gbThemes, 0, 2, 3, 1); QVBoxLayout * gbTLayout = new QVBoxLayout(gbThemes); gbTLayout->setContentsMargins(0, 0, 0 ,0); gbTLayout->setSpacing(0); - lwThemes = new QListWidget(this); + lwThemes = new QListWidget(mapWidget); lwThemes->setMinimumHeight(30); lwThemes->setFixedWidth(140); for (int i = 0; i < Themes->size(); ++i) { @@ -193,7 +216,29 @@ gbTLayout->addWidget(lwThemes); lwThemes->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum); - mainLayout.setSizeConstraint(QLayout::SetFixedSize);//SetMinimumSize + mapLayout->setSizeConstraint(QLayout::SetFixedSize); + + QWidget* seedWidget = new QWidget(this); + mainLayout.addWidget(seedWidget, 1, 0); + + QGridLayout* seedLayout = new QGridLayout(seedWidget); + seedLayout->setMargin(0); + + seedLabel = new QLabel(tr("Seed"), seedWidget); + seedLayout->addWidget(seedLabel, 3, 0); + seedEdit = new QLineEdit(seedWidget); + seedEdit->setMaxLength(54); + connect(seedEdit, SIGNAL(returnPressed()), this, SLOT(seedEdited())); + seedLayout->addWidget(seedEdit, 3, 1); + seedLayout->setColumnStretch(1, 5); + seedSet = new QPushButton(seedWidget); + seedSet->setText(QPushButton::tr("more")); + connect(seedSet, SIGNAL(clicked()), this, SLOT(seedEdited())); + seedLayout->setColumnStretch(2, 1); + seedLayout->addWidget(seedSet, 3, 2); + + seedLabel->setVisible(false); + seedEdit->setVisible(false); setRandomSeed(); setRandomTheme(); @@ -216,7 +261,7 @@ p.drawPixmap(QPoint(0, 0), px); addInfoToPreview(pxres); - chooseMap->setCurrentIndex(mapgen); + //chooseMap->setCurrentIndex(mapgen); pMap = 0; } @@ -230,7 +275,7 @@ switch(index) { case MAPGEN_REGULAR: mapgen = MAPGEN_REGULAR; - changeImage(); + updatePreview(); gbThemes->show(); lblFilter->show(); CB_TemplateFilter->show(); @@ -242,7 +287,7 @@ break; case MAPGEN_MAZE: mapgen = MAPGEN_MAZE; - changeImage(); + updatePreview(); gbThemes->show(); lblFilter->hide(); CB_TemplateFilter->hide(); @@ -252,8 +297,20 @@ emit mapgenChanged(mapgen); emit themeChanged(chooseMap->itemData(index).toList()[1].toString()); break; + case MAPGEN_DRAWN: + mapgen = MAPGEN_DRAWN; + updatePreview(); + gbThemes->show(); + lblFilter->hide(); + CB_TemplateFilter->hide(); + maze_size_label->hide(); + maze_size_selection->hide(); + emit mapChanged("+drawn+"); + emit mapgenChanged(mapgen); + emit themeChanged(chooseMap->itemData(index).toList()[1].toString()); + break; default: - loadMap(index); + updatePreview(); gbThemes->hide(); lblFilter->hide(); CB_TemplateFilter->hide(); @@ -263,19 +320,6 @@ } } -void HWMapContainer::loadMap(int index) -{ - QPixmap mapImage; - if(!mapImage.load(datadir->absolutePath() + "/Maps/" + chooseMap->itemData(index).toList()[0].toString() + "/preview.png")) { - changeImage(); - chooseMap->setCurrentIndex(0); - return; - } - - hhLimit = chooseMap->itemData(index).toList()[2].toInt(); - addInfoToPreview(mapImage); -} - // Should this add text to identify map size? void HWMapContainer::addInfoToPreview(QPixmap image) { @@ -296,7 +340,7 @@ imageButt->setIconSize(image.size()); } -void HWMapContainer::changeImage() +void HWMapContainer::askForGeneratedPreview() { if (pMap) { @@ -308,25 +352,28 @@ pMap = new HWMap(); connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage))); connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int))); - pMap->getImage(m_seed.toStdString(), getTemplateFilter(), mapgen, maze_size); + pMap->getImage(m_seed, + getTemplateFilter(), + get_mapgen(), + get_maze_size(), + getDrawnMapData() + ); } void HWMapContainer::themeSelected(int currentRow) { QString theme = Themes->at(currentRow); - QList<QVariant> mapInfoRegular; - mapInfoRegular.push_back(QString("+rnd+")); - mapInfoRegular.push_back(theme); - mapInfoRegular.push_back(18); - mapInfoRegular.push_back(false); - chooseMap->setItemData(0, mapInfoRegular); - QList<QVariant> mapInfoMaze; - mapInfoMaze.push_back(QString("+maze+")); - mapInfoMaze.push_back(theme); - mapInfoMaze.push_back(18); - mapInfoMaze.push_back(false); - chooseMap->setItemData(1, mapInfoMaze); - gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme))); + QList<QVariant> mapInfo; + mapInfo.push_back(QString("+rnd+")); + mapInfo.push_back(theme); + mapInfo.push_back(18); + mapInfo.push_back(false); + chooseMap->setItemData(0, mapInfo); + mapInfo[0] = QString("+maze+"); + chooseMap->setItemData(1, mapInfo); + mapInfo[0] = QString("+drawn+"); + chooseMap->setItemData(2, mapInfo); + gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon@2x.png").arg(datadir->absolutePath()).arg(theme))); emit themeChanged(theme); } @@ -337,7 +384,7 @@ QString HWMapContainer::getCurrentMap() const { - if(chooseMap->currentIndex() <= 1) return QString(); + if(chooseMap->currentIndex() < MAPGEN_MAP) return QString(); return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString(); } @@ -357,6 +404,16 @@ return hhLimit; } +QString HWMapContainer::getCurrentScheme() const +{ + return chooseMap->itemData(chooseMap->currentIndex()).toList()[4].toString(); +} + +QString HWMapContainer::getCurrentWeapons() const +{ + return chooseMap->itemData(chooseMap->currentIndex()).toList()[5].toString(); +} + quint32 HWMapContainer::getTemplateFilter() const { return CB_TemplateFilter->itemData(CB_TemplateFilter->currentIndex()).toInt(); @@ -364,23 +421,21 @@ void HWMapContainer::resizeEvent ( QResizeEvent * event ) { + Q_UNUSED(event); //imageButt->setIconSize(imageButt->size()); } void HWMapContainer::setSeed(const QString & seed) { m_seed = seed; - changeImage(); + if (seed != seedEdit->text()) + seedEdit->setText(seed); + if (chooseMap->currentIndex() < MAPGEN_MAP) + updatePreview(); } void HWMapContainer::setMap(const QString & map) { - if(map == "+rnd+" || map == "+maze+") - { - changeImage(); - return; - } - int id = 0; for(int i = 0; i < chooseMap->count(); i++) if(!chooseMap->itemData(i).isNull() && chooseMap->itemData(i).toList()[0].toString() == map) @@ -397,7 +452,7 @@ pMap = 0; } chooseMap->setCurrentIndex(id); - loadMap(id); + updatePreview(); } } @@ -407,18 +462,21 @@ if(items.size()) lwThemes->setCurrentItem(items.at(0)); } -#include <QMessageBox> + void HWMapContainer::setRandomMap() { + setRandomSeed(); switch(chooseMap->currentIndex()) { case MAPGEN_REGULAR: case MAPGEN_MAZE: - setRandomSeed(); setRandomTheme(); break; + case MAPGEN_DRAWN: + emit drawMapRequested(); + break; default: - if(chooseMap->currentIndex() < numMissions + 3) + if(chooseMap->currentIndex() <= numMissions + MAPGEN_MAP + 1) setRandomMission(); else setRandomStatic(); @@ -428,21 +486,26 @@ void HWMapContainer::setRandomStatic() { - chooseMap->setCurrentIndex(4 + numMissions + rand() % (chooseMap->count() - 4 - numMissions)); - m_seed = QUuid::createUuid().toString(); + int i = MAPGEN_MAP + 3 + numMissions + rand() % (chooseMap->count() - MAPGEN_MAP - 3 - numMissions); + chooseMap->setCurrentIndex(i); + setRandomSeed(); } void HWMapContainer::setRandomMission() { - chooseMap->setCurrentIndex(3 + rand() % numMissions); - m_seed = QUuid::createUuid().toString(); + int i = MAPGEN_MAP + 2 + rand() % numMissions; + qDebug() << i << MAPGEN_MAP << numMissions; + chooseMap->setCurrentIndex(i); + setRandomSeed(); } void HWMapContainer::setRandomSeed() { m_seed = QUuid::createUuid().toString(); + seedEdit->setText(m_seed); emit seedChanged(m_seed); - changeImage(); + if (chooseMap->currentIndex() < MAPGEN_MAP) + updatePreview(); } void HWMapContainer::setRandomTheme() @@ -460,7 +523,7 @@ void HWMapContainer::templateFilterChanged(int filter) { emit newTemplateFilter(filter); - changeImage(); + updatePreview(); } MapGenerator HWMapContainer::get_mapgen(void) const @@ -470,20 +533,90 @@ int HWMapContainer::get_maze_size(void) const { - return maze_size; + return maze_size_selection->currentIndex(); } void HWMapContainer::setMaze_size(int size) { - maze_size = size; maze_size_selection->setCurrentIndex(size); emit maze_sizeChanged(size); - changeImage(); + updatePreview(); } void HWMapContainer::setMapgen(MapGenerator m) { mapgen = m; + chooseMap->setCurrentIndex(m); emit mapgenChanged(m); - changeImage(); + updatePreview(); +} + +void HWMapContainer::setDrawnMapData(const QByteArray & ar) +{ + drawMapScene.decode(ar); + updatePreview(); +} + +QByteArray HWMapContainer::getDrawnMapData() +{ + return drawMapScene.encode(); +} + +void HWMapContainer::seedEdited() +{ + if (seedLabel->isVisible() == false ) + { + seedLabel->setVisible(true); + seedEdit->setVisible(true); + seedSet->setText(tr("Set")); + return; + } + + if (seedEdit->text().isEmpty()) + seedEdit->setText(m_seed); + else + { + setSeed(seedEdit->text()); + emit seedChanged(seedEdit->text()); + } } + +DrawMapScene * HWMapContainer::getDrawMapScene() +{ + return &drawMapScene; +} + +void HWMapContainer::mapDrawingFinished() +{ + emit drawnMapChanged(getDrawnMapData()); + + updatePreview(); +} + +void HWMapContainer::updatePreview() +{ + int curIndex = chooseMap->currentIndex(); + + switch(curIndex) + { + case MAPGEN_REGULAR: + askForGeneratedPreview(); + break; + case MAPGEN_MAZE: + askForGeneratedPreview(); + break; + case MAPGEN_DRAWN: + askForGeneratedPreview(); + break; + default: + QPixmap mapImage; + qDebug() << "Map data" << curIndex << chooseMap->currentText() << chooseMap->itemData(curIndex); + if(!mapImage.load(datadir->absolutePath() + "/Maps/" + chooseMap->itemData(curIndex).toList()[0].toString() + "/preview.png")) { + imageButt->setIcon(QIcon()); + return; + } + + hhLimit = chooseMap->itemData(curIndex).toList()[2].toInt(); + addInfoToPreview(mapImage); + } +}
--- a/QTfrontend/mapContainer.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/mapContainer.h Tue Jan 04 12:53:46 2011 +0100 @@ -23,8 +23,11 @@ #include <QGridLayout> #include <QComboBox> #include <QLabel> +#include <QByteArray> +#include <QLineEdit> #include "hwmap.h" +#include "drawmapscene.h" class QPushButton; class IconedGroupBox; @@ -44,19 +47,26 @@ QString getCurrentMap() const; QString getCurrentTheme() const; int getCurrentHHLimit() const; + QString getCurrentScheme() const; + QString getCurrentWeapons() const; quint32 getTemplateFilter() const; MapGenerator get_mapgen(void) const; int get_maze_size(void) const; bool getCurrentIsMission() const; + QByteArray getDrawnMapData(); + DrawMapScene * getDrawMapScene(); + void mapDrawingFinished(); + QLineEdit* seedEdit; public slots: - void changeImage(); + void askForGeneratedPreview(); void setSeed(const QString & seed); void setMap(const QString & map); void setTheme(const QString & theme); void setTemplateFilter(int); void setMapgen(MapGenerator m); void setMaze_size(int size); + void setDrawnMapData(const QByteArray & ar); signals: void seedChanged(const QString & seed); @@ -65,6 +75,8 @@ void newTemplateFilter(int filter); void mapgenChanged(MapGenerator m); void maze_sizeChanged(int s); + void drawMapRequested(); + void drawnMapChanged(const QByteArray & data); private slots: void setImage(const QImage newImage); @@ -78,6 +90,7 @@ void themeSelected(int currentRow); void addInfoToPreview(QPixmap image); void templateFilterChanged(int filter); + void seedEdited(); protected: virtual void resizeEvent ( QResizeEvent * event ); @@ -90,6 +103,8 @@ QListWidget* lwThemes; HWMap* pMap; QString m_seed; + QPushButton* seedSet; + QLabel* seedLabel; int hhLimit; int templateFilter; QPixmap hhSmall; @@ -99,9 +114,9 @@ QComboBox *maze_size_selection; MapGenerator mapgen; int numMissions; - int maze_size; + DrawMapScene drawMapScene; - void loadMap(int index); + void updatePreview(); }; #endif // _HWMAP_CONTAINER_INCLUDED
--- a/QTfrontend/netregister.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/netregister.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -21,7 +21,8 @@ HWNetRegisterServer::HWNetRegisterServer(QObject *parent, const QString & descr, quint16 port) : QObject(parent) { - + Q_UNUSED(descr); + Q_UNUSED(port); } void HWNetRegisterServer::unregister()
--- a/QTfrontend/pages.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/pages.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -40,6 +40,7 @@ #include <QDataWidgetMapper> #include <QTime> #include <QSlider> +#include <QFileDialog> #include "ammoSchemeModel.h" #include "pages.h" @@ -63,6 +64,7 @@ #include "togglebutton.h" #include "hwform.h" #include "SDLs.h" +#include "drawmapwidget.h" PageMain::PageMain(QWidget* parent) : AbstractPage(parent) @@ -440,17 +442,22 @@ { QGridLayout * pageLayout = new QGridLayout(this); - BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true); + BtnBack = addButton(":/res/Exit.png", pageLayout, 3, 0, true); gameCFG = new GameCFGWidget(this); pageLayout->addWidget(gameCFG, 0, 0, 1, 2); - pageLayout->setRowStretch(1, 1); + QPushButton * btnSetup = new QPushButton(this); + btnSetup->setText(QPushButton::tr("Setup")); + connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); + pageLayout->addWidget(btnSetup, 1, 0, 1, 2); + + pageLayout->setRowStretch(2, 1); teamsSelect = new TeamSelWidget(this); - pageLayout->addWidget(teamsSelect, 0, 2, 2, 2); + pageLayout->addWidget(teamsSelect, 0, 2, 3, 2); - BtnStartMPGame = addButton(tr("Start"), pageLayout, 2, 3); + BtnStartMPGame = addButton(tr("Start"), pageLayout, 3, 3); } PageOptions::PageOptions(QWidget* parent) : @@ -522,45 +529,74 @@ } { - // TODO: This box should contain controls for all schemes: game modes and weapons - IconedGroupBox* groupWeapons = new IconedGroupBox(this); + //groupWeapons->setContentTopPadding(0); //groupWeapons->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); groupWeapons->setIcon(QIcon(":/res/weaponsicon.png")); groupWeapons->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - groupWeapons->setTitle(QGroupBox::tr("Weapons")); + groupWeapons->setTitle(QGroupBox::tr("Schemes and Weapons")); QGridLayout * WeaponsLayout = new QGridLayout(groupWeapons); + QLabel* SchemeLabel = new QLabel(groupWeapons); + SchemeLabel->setText(QLabel::tr("Game scheme")); + WeaponsLayout->addWidget(SchemeLabel, 1, 0); + + SchemesName = new QComboBox(groupWeapons); + WeaponsLayout->addWidget(SchemesName, 1, 1); + + SchemeNew = new QPushButton(groupWeapons); + SchemeNew->setToolTip(tr("New scheme")); + SchemeNew->setIconSize(pmNew.size()); + SchemeNew->setIcon(pmNew); + SchemeNew->setMaximumWidth(pmNew.width() + 6); + WeaponsLayout->addWidget(SchemeNew, 1, 2); + + SchemeEdit = new QPushButton(groupWeapons); + SchemeEdit->setToolTip(tr("Edit scheme")); + SchemeEdit->setIconSize(pmEdit.size()); + SchemeEdit->setIcon(pmEdit); + SchemeEdit->setMaximumWidth(pmEdit.width() + 6); + WeaponsLayout->addWidget(SchemeEdit, 1, 3); + + SchemeDelete = new QPushButton(groupWeapons); + SchemeDelete->setToolTip(tr("Delete scheme")); + SchemeDelete->setIconSize(pmDelete.size()); + SchemeDelete->setIcon(pmDelete); + SchemeDelete->setMaximumWidth(pmDelete.width() + 6); + WeaponsLayout->addWidget(SchemeDelete, 1, 4); + + QLabel* WeaponLabel = new QLabel(groupWeapons); + WeaponLabel->setText(QLabel::tr("Weapons")); + WeaponsLayout->addWidget(WeaponLabel, 2, 0); + WeaponsName = new QComboBox(groupWeapons); - WeaponsLayout->addWidget(WeaponsName, 0, 0); + WeaponsLayout->addWidget(WeaponsName, 2, 1); - WeaponsButt = new QPushButton(groupWeapons); - WeaponsButt->setToolTip(tr("New weapon scheme")); - WeaponsButt->setIconSize(pmNew.size()); - WeaponsButt->setIcon(pmNew); - WeaponsButt->setMaximumWidth(pmNew.width() + 6); - WeaponsLayout->addWidget(WeaponsButt, 0, 1); + WeaponNew = new QPushButton(groupWeapons); + WeaponNew->setToolTip(tr("New weapon set")); + WeaponNew->setIconSize(pmNew.size()); + WeaponNew->setIcon(pmNew); + WeaponNew->setMaximumWidth(pmNew.width() + 6); + WeaponsLayout->addWidget(WeaponNew, 2, 2); WeaponEdit = new QPushButton(groupWeapons); - WeaponEdit->setToolTip(tr("Edit weapon scheme")); + WeaponEdit->setToolTip(tr("Edit weapon set")); WeaponEdit->setIconSize(pmEdit.size()); WeaponEdit->setIcon(pmEdit); WeaponEdit->setMaximumWidth(pmEdit.width() + 6); - WeaponsLayout->addWidget(WeaponEdit, 0, 2); + WeaponsLayout->addWidget(WeaponEdit, 2, 3); WeaponDelete = new QPushButton(groupWeapons); - WeaponDelete->setToolTip(tr("Delete weapon scheme")); + WeaponDelete->setToolTip(tr("Delete weapon set")); WeaponDelete->setIconSize(pmDelete.size()); WeaponDelete->setIcon(pmDelete); WeaponDelete->setMaximumWidth(pmDelete.width() + 6); - WeaponDelete->setEnabled(false); - WeaponDelete->setVisible(false); // hide for now - WeaponsLayout->addWidget(WeaponDelete, 0, 3); + WeaponsLayout->addWidget(WeaponDelete, 2, 4); WeaponTooltip = new QCheckBox(this); WeaponTooltip->setText(QCheckBox::tr("Show ammo menu tooltips")); - WeaponsLayout->addWidget(WeaponTooltip, 1, 0, 1, 3); + WeaponsLayout->addWidget(WeaponTooltip, 3, 0, 1, 4); gbTBLayout->addWidget(groupWeapons, 1, 0); } @@ -942,19 +978,24 @@ // chatwidget pChatWidget = new HWChatWidget(this, gameSettings, sdli, true); pChatWidget->setShowReady(true); // show status bulbs by default - pageLayout->addWidget(pChatWidget, 1, 0, 1, 2); + pageLayout->addWidget(pChatWidget, 2, 0, 1, 2); pageLayout->setRowStretch(1, 100); pGameCFG = new GameCFGWidget(this); pageLayout->addWidget(pGameCFG, 0, 0); + QPushButton * btnSetup = new QPushButton(this); + btnSetup->setText(QPushButton::tr("Setup")); + connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); + pageLayout->addWidget(btnSetup, 1, 0); + pNetTeamsWidget = new TeamSelWidget(this); pNetTeamsWidget->setAcceptOuter(true); - pageLayout->addWidget(pNetTeamsWidget, 0, 1); + pageLayout->addWidget(pNetTeamsWidget, 0, 1, 2, 1); QHBoxLayout * bottomLayout = new QHBoxLayout; - pageLayout->addLayout(bottomLayout, 3, 0, 1, 2); + pageLayout->addLayout(bottomLayout, 4, 0, 1, 2); BtnBack = addButton(":/res/Exit.png", bottomLayout, 0, true); @@ -1035,7 +1076,7 @@ BtnCampaignPage = addButton(":/res/Campaign.png", middleLine, 0, true); BtnCampaignPage->setToolTip(tr("Campaign Mode (...). IN DEVELOPMENT")); - BtnCampaignPage->setVisible(false); + //BtnCampaignPage->setVisible(false); BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 1, true); BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT")); @@ -1069,7 +1110,10 @@ tmpdir.setFilter(QDir::Files); CBSelect->addItems(tmpdir.entryList(QStringList("*.lua")).replaceInStrings(QRegExp("^(.*)\\.lua"), "\\1")); for(int i = 0; i < CBSelect->count(); i++) + { CBSelect->setItemData(i, CBSelect->itemText(i)); + CBSelect->setItemText(i, CBSelect->itemText(i).replace("_", " ")); + } pageLayout->addWidget(CBSelect, 1, 1); @@ -1110,18 +1154,26 @@ QGridLayout * pageLayout = new QGridLayout(this); pWeapons = new SelWeaponWidget(cAmmoNumber, this); - pageLayout->addWidget(pWeapons, 0, 0, 1, 4); + pageLayout->addWidget(pWeapons, 0, 0, 1, 5); - BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true); - BtnDefault = addButton(tr("Default"), pageLayout, 1, 1); - BtnDelete = addButton(tr("Delete"), pageLayout, 1, 2); - BtnSave = addButton(":/res/Save.png", pageLayout, 1, 3, true); + BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, 2, 1, true); + BtnDefault = addButton(tr("Default"), pageLayout, 1, 3); + BtnNew = addButton(tr("New"), pageLayout, 1, 2); + BtnCopy = addButton(tr("Copy"), pageLayout, 2, 2); + BtnDelete = addButton(tr("Delete"), pageLayout, 2, 3); + BtnSave = addButton(":/res/Save.png", pageLayout, 1, 4, 2, 1, true); BtnSave->setStyleSheet("QPushButton{margin: 24px 0px 0px 0px;}"); BtnBack->setFixedHeight(BtnSave->height()); BtnBack->setStyleSheet("QPushButton{margin-top: 31px;}"); + selectWeaponSet = new QComboBox(this); + pageLayout->addWidget(selectWeaponSet, 1, 1, 2, 1); + connect(BtnDefault, SIGNAL(clicked()), pWeapons, SLOT(setDefault())); connect(BtnSave, SIGNAL(clicked()), pWeapons, SLOT(save())); + connect(BtnNew, SIGNAL(clicked()), pWeapons, SLOT(newWeaponsName())); + connect(BtnCopy, SIGNAL(clicked()), pWeapons, SLOT(copy())); + connect(selectWeaponSet, SIGNAL(currentIndexChanged(const QString&)), pWeapons, SLOT(setWeaponsName(const QString&))); } PageInGame::PageInGame(QWidget* parent) : @@ -1502,7 +1554,7 @@ sp.setVerticalPolicy(QSizePolicy::MinimumExpanding); sp.setHorizontalPolicy(QSizePolicy::Expanding); - pageLayout->addWidget(gb, 1,0,13,4); + pageLayout->addWidget(gb, 1,0,13,5); gbGameModes = new QGroupBox(QGroupBox::tr("Game Modifiers"), gb); gbBasicSettings = new QGroupBox(QGroupBox::tr("Basic Settings"), gb); @@ -1705,105 +1757,118 @@ glBSLayout->addWidget(SB_HealthDecrease,5,2,1,1); l = new QLabel(gbBasicSettings); - l->setText(QLabel::tr("Crate Drops")); + l->setText(QLabel::tr("% Rope Length")); l->setWordWrap(true); glBSLayout->addWidget(l,6,0,1,1); l = new QLabel(gbBasicSettings); l->setFixedSize(32,32); - l->setPixmap(QPixmap(":/res/iconBox.png")); + l->setPixmap(QPixmap(":/res/iconRope.png")); glBSLayout->addWidget(l,6,1,1,1); - SB_CaseProb = new FreqSpinBox(gbBasicSettings); - SB_CaseProb->setRange(0, 9); - SB_CaseProb->setValue(5); - glBSLayout->addWidget(SB_CaseProb,6,2,1,1); + SB_RopeModifier = new QSpinBox(gbBasicSettings); + SB_RopeModifier->setRange(25, 999); + SB_RopeModifier->setValue(100); + SB_RopeModifier->setSingleStep(25); + glBSLayout->addWidget(SB_RopeModifier,6,2,1,1); l = new QLabel(gbBasicSettings); - l->setText(QLabel::tr("% Health Crates")); + l->setText(QLabel::tr("Crate Drops")); l->setWordWrap(true); glBSLayout->addWidget(l,7,0,1,1); l = new QLabel(gbBasicSettings); l->setFixedSize(32,32); - l->setPixmap(QPixmap(":/res/iconHealth.png")); // TODO: icon + l->setPixmap(QPixmap(":/res/iconBox.png")); glBSLayout->addWidget(l,7,1,1,1); - SB_HealthCrates = new QSpinBox(gbBasicSettings); - SB_HealthCrates->setRange(0, 100); - SB_HealthCrates->setValue(35); - SB_HealthCrates->setSingleStep(5); - glBSLayout->addWidget(SB_HealthCrates,7,2,1,1); + SB_CaseProb = new FreqSpinBox(gbBasicSettings); + SB_CaseProb->setRange(0, 9); + SB_CaseProb->setValue(5); + glBSLayout->addWidget(SB_CaseProb,7,2,1,1); l = new QLabel(gbBasicSettings); - l->setText(QLabel::tr("Health in Crates")); + l->setText(QLabel::tr("% Health Crates")); l->setWordWrap(true); glBSLayout->addWidget(l,8,0,1,1); l = new QLabel(gbBasicSettings); l->setFixedSize(32,32); l->setPixmap(QPixmap(":/res/iconHealth.png")); // TODO: icon glBSLayout->addWidget(l,8,1,1,1); + SB_HealthCrates = new QSpinBox(gbBasicSettings); + SB_HealthCrates->setRange(0, 100); + SB_HealthCrates->setValue(35); + SB_HealthCrates->setSingleStep(5); + glBSLayout->addWidget(SB_HealthCrates,8,2,1,1); + + l = new QLabel(gbBasicSettings); + l->setText(QLabel::tr("Health in Crates")); + l->setWordWrap(true); + glBSLayout->addWidget(l,9,0,1,1); + l = new QLabel(gbBasicSettings); + l->setFixedSize(32,32); + l->setPixmap(QPixmap(":/res/iconHealth.png")); // TODO: icon + glBSLayout->addWidget(l,9,1,1,1); SB_CrateHealth = new QSpinBox(gbBasicSettings); SB_CrateHealth->setRange(0, 200); SB_CrateHealth->setValue(25); SB_CrateHealth->setSingleStep(5); - glBSLayout->addWidget(SB_CrateHealth,8,2,1,1); + glBSLayout->addWidget(SB_CrateHealth,9,2,1,1); l = new QLabel(gbBasicSettings); l->setText(QLabel::tr("Mines Time")); l->setWordWrap(true); - glBSLayout->addWidget(l,9,0,1,1); + glBSLayout->addWidget(l,10,0,1,1); l = new QLabel(gbBasicSettings); l->setFixedSize(32,32); l->setPixmap(QPixmap(":/res/iconTime.png")); // TODO: icon - glBSLayout->addWidget(l,9,1,1,1); + glBSLayout->addWidget(l,10,1,1,1); SB_MinesTime = new QSpinBox(gbBasicSettings); SB_MinesTime->setRange(-1, 5); SB_MinesTime->setValue(3); SB_MinesTime->setSingleStep(1); SB_MinesTime->setSpecialValueText(tr("Random")); SB_MinesTime->setSuffix(" "+ tr("Seconds")); - glBSLayout->addWidget(SB_MinesTime,9,2,1,1); + glBSLayout->addWidget(SB_MinesTime,10,2,1,1); l = new QLabel(gbBasicSettings); l->setText(QLabel::tr("Mines")); l->setWordWrap(true); - glBSLayout->addWidget(l,10,0,1,1); + glBSLayout->addWidget(l,11,0,1,1); l = new QLabel(gbBasicSettings); l->setFixedSize(32,32); l->setPixmap(QPixmap(":/res/iconMine.png")); // TODO: icon - glBSLayout->addWidget(l,10,1,1,1); + glBSLayout->addWidget(l,11,1,1,1); SB_Mines = new QSpinBox(gbBasicSettings); SB_Mines->setRange(0, 80); SB_Mines->setValue(0); SB_Mines->setSingleStep(5); - glBSLayout->addWidget(SB_Mines,10,2,1,1); + glBSLayout->addWidget(SB_Mines,11,2,1,1); l = new QLabel(gbBasicSettings); l->setText(QLabel::tr("% Dud Mines")); l->setWordWrap(true); - glBSLayout->addWidget(l,11,0,1,1); + glBSLayout->addWidget(l,12,0,1,1); l = new QLabel(gbBasicSettings); l->setFixedSize(32,32); l->setPixmap(QPixmap(":/res/iconDud.png")); - glBSLayout->addWidget(l,11,1,1,1); + glBSLayout->addWidget(l,12,1,1,1); SB_MineDuds = new QSpinBox(gbBasicSettings); SB_MineDuds->setRange(0, 100); SB_MineDuds->setValue(0); SB_MineDuds->setSingleStep(5); - glBSLayout->addWidget(SB_MineDuds,11,2,1,1); + glBSLayout->addWidget(SB_MineDuds,12,2,1,1); l = new QLabel(gbBasicSettings); l->setText(QLabel::tr("Explosives")); l->setWordWrap(true); - glBSLayout->addWidget(l,12,0,1,1); + glBSLayout->addWidget(l,13,0,1,1); l = new QLabel(gbBasicSettings); l->setFixedSize(32,32); l->setPixmap(QPixmap(":/res/iconDamage.png")); - glBSLayout->addWidget(l,12,1,1,1); + glBSLayout->addWidget(l,13,1,1,1); SB_Explosives = new QSpinBox(gbBasicSettings); SB_Explosives->setRange(0, 40); SB_Explosives->setValue(0); SB_Explosives->setSingleStep(1); - glBSLayout->addWidget(SB_Explosives,12,2,1,1); - + glBSLayout->addWidget(SB_Explosives,13,2,1,1); l = new QLabel(gbBasicSettings); l->setText(QLabel::tr("Scheme Name:")); @@ -1816,12 +1881,14 @@ mapper = new QDataWidgetMapper(this); BtnBack = addButton(":/res/Exit.png", pageLayout, 15, 0, true); - BtnNew = addButton(tr("New"), pageLayout, 15, 2); - BtnDelete = addButton(tr("Delete"), pageLayout, 15, 3); + BtnCopy = addButton(tr("Copy"), pageLayout, 15, 2); + BtnNew = addButton(tr("New"), pageLayout, 15, 3); + BtnDelete = addButton(tr("Delete"), pageLayout, 15, 4); selectScheme = new QComboBox(this); pageLayout->addWidget(selectScheme, 15, 1); + connect(BtnCopy, SIGNAL(clicked()), this, SLOT(copyRow())); connect(BtnNew, SIGNAL(clicked()), this, SLOT(newRow())); connect(BtnDelete, SIGNAL(clicked()), this, SLOT(deleteRow())); connect(selectScheme, SIGNAL(currentIndexChanged(int)), mapper, SLOT(setCurrentIndex(int))); @@ -1870,6 +1937,7 @@ mapper->addMapping(SB_CrateHealth, 34); mapper->addMapping(SB_WaterRise, 35); mapper->addMapping(SB_HealthDecrease, 36); + mapper->addMapping(SB_RopeModifier, 37); mapper->toFirst(); } @@ -1877,14 +1945,25 @@ void PageScheme::newRow() { QAbstractItemModel * model = mapper->model(); - model->insertRow(model->rowCount()); + model->insertRow(-1); + selectScheme->setCurrentIndex(model->rowCount() - 1); +} + +void PageScheme::copyRow() +{ + QAbstractItemModel * model = mapper->model(); + model->insertRow(selectScheme->currentIndex()); selectScheme->setCurrentIndex(model->rowCount() - 1); } void PageScheme::deleteRow() { - QAbstractItemModel * model = mapper->model(); - model->removeRow(selectScheme->currentIndex()); + QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Schemes"), QMessageBox::tr("Really delete this game scheme?"), QMessageBox::Ok | QMessageBox::Cancel); + + if (reallyDelete.exec() == QMessageBox::Ok) { + QAbstractItemModel * model = mapper->model(); + model->removeRow(selectScheme->currentIndex()); + } } void PageScheme::schemeSelected(int n) @@ -1993,3 +2072,41 @@ BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true); } + +///////////////////////////////////////////////// + +PageDrawMap::PageDrawMap(QWidget* parent) : AbstractPage(parent) +{ + QGridLayout * pageLayout = new QGridLayout(this); + + QPushButton * pbUndo = addButton(tr("Undo"), pageLayout, 0, 0); + QPushButton * pbClear = addButton(tr("Clear"), pageLayout, 1, 0); + QPushButton * pbLoad = addButton(tr("Load"), pageLayout, 2, 0); + QPushButton * pbSave = addButton(tr("Save"), pageLayout, 3, 0); + + BtnBack = addButton(":/res/Exit.png", pageLayout, 5, 0, true); + + drawMapWidget = new DrawMapWidget(this); + pageLayout->addWidget(drawMapWidget, 0, 1, 5, 1); + + connect(pbUndo, SIGNAL(clicked()), drawMapWidget, SLOT(undo())); + connect(pbClear, SIGNAL(clicked()), drawMapWidget, SLOT(clear())); + connect(pbLoad, SIGNAL(clicked()), this, SLOT(load())); + connect(pbSave, SIGNAL(clicked()), this, SLOT(save())); +} + +void PageDrawMap::load() +{ + QString fileName = QFileDialog::getOpenFileName(this, tr("Load drawn map"), ".", tr("Drawn Maps (*.hwmap);;All files (*.*)")); + + if(!fileName.isEmpty()) + drawMapWidget->load(fileName); +} + +void PageDrawMap::save() +{ + QString fileName = QFileDialog::getSaveFileName(this, tr("Save drawn map"), ".", tr("Drawn Maps (*.hwmap);;All files (*.*)")); + + if(!fileName.isEmpty()) + drawMapWidget->save(fileName); +}
--- a/QTfrontend/pages.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/pages.h Tue Jan 04 12:53:46 2011 +0100 @@ -61,6 +61,8 @@ class IconedGroupBox; class FreqSpinBox; +class DrawMapWidget; + class AbstractPage : public QWidget { Q_OBJECT @@ -69,8 +71,10 @@ protected: AbstractPage(QWidget* parent = 0) { + Q_UNUSED(parent); + font14 = new QFont("MS Shell Dlg", 14); - setFocusPolicy(Qt::StrongFocus); + //setFocusPolicy(Qt::StrongFocus); } virtual ~AbstractPage() {}; @@ -196,6 +200,9 @@ GameCFGWidget *gameCFG; TeamSelWidget *teamsSelect; QPushButton *BtnStartMPGame; + +signals: + void SetupClicked(); }; class PageOptions : public AbstractPage @@ -205,11 +212,16 @@ public: PageOptions(QWidget* parent = 0); - QPushButton *WeaponsButt; + QCheckBox *WeaponTooltip; + QPushButton *WeaponNew; QPushButton *WeaponEdit; QPushButton *WeaponDelete; QComboBox *WeaponsName; - QCheckBox *WeaponTooltip; + QPushButton *SchemeNew; + QPushButton *SchemeEdit; + QPushButton *SchemeDelete; + QComboBox *SchemesName; + QComboBox *CBLanguage; QPushButton *BtnBack; @@ -324,6 +336,9 @@ public slots: void setReadyStatus(bool isReady); void setMasterMode(bool isMaster); + +signals: + void SetupClicked(); }; class PageInfo : public AbstractPage @@ -389,8 +404,11 @@ QPushButton *BtnSave; QPushButton *BtnDefault; QPushButton *BtnDelete; + QPushButton *BtnNew; + QPushButton *BtnCopy; QPushButton *BtnBack; SelWeaponWidget* pWeapons; + QComboBox* selectWeaponSet; }; class PageInGame : public AbstractPage @@ -462,12 +480,19 @@ PageScheme(QWidget* parent = 0); QPushButton * BtnBack; + QPushButton * BtnCopy; QPushButton * BtnNew; QPushButton * BtnDelete; QPushButton * BtnSave; + QComboBox * selectScheme; void setModel(QAbstractItemModel * model); +public slots: + void newRow(); + void copyRow(); + void deleteRow(); + private: QDataWidgetMapper * mapper; ToggleButtonWidget * TBW_mode_Forts; @@ -507,16 +532,15 @@ QSpinBox * SB_Mines; QSpinBox * SB_MineDuds; QSpinBox * SB_Explosives; + QSpinBox * SB_RopeModifier; QLineEdit * LE_name; - QComboBox * selectScheme; QGroupBox * gbGameModes; QGroupBox * gbBasicSettings; private slots: - void newRow(); - void deleteRow(); void schemeSelected(int); + }; class PageAdmin : public AbstractPage @@ -565,4 +589,21 @@ QPushButton * BtnOfficialServer; }; + +class PageDrawMap : public AbstractPage +{ + Q_OBJECT + +public: + PageDrawMap(QWidget* parent = 0); + + QPushButton * BtnBack; + + DrawMapWidget * drawMapWidget; + +private slots: + void load(); + void save(); +}; + #endif // PAGES_H
--- a/QTfrontend/predefteams.h Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -/* - * Hedgewars, a free turn based strategy game - * Copyright (c) 2006-2010 Andrey Korotaev <unC0Rr@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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#ifndef PREDEFTEAMS_H -#define PREDEFTEAMS_H - -#include <QtGlobal> - -#define PREDEFTEAMS_COUNT 3 -/* -struct PredefinedTeam -{ - const char * TeamName; - const char * hh0name; - const char * hh1name; - const char * hh2name; - const char * hh3name; - const char * hh4name; - const char * hh5name; - const char * hh6name; - const char * hh7name; - const char * hh0hat; - const char * hh1hat; - const char * hh2hat; - const char * hh3hat; - const char * hh4hat; - const char * hh5hat; - const char * hh6hat; - const char * hh7hat; - QString Grave; - QString Fort; -}; - - -const PredefinedTeam pteams[PREDEFTEAMS_COUNT] = -{ - { - QT_TRANSLATE_NOOP("teams", "Hedgehogs"), - QT_TRANSLATE_NOOP("teams", "hedgehog 1"), - QT_TRANSLATE_NOOP("teams", "hedgehog 2"), - QT_TRANSLATE_NOOP("teams", "hedgehog 3"), - QT_TRANSLATE_NOOP("teams", "hedgehog 4"), - QT_TRANSLATE_NOOP("teams", "hedgehog 5"), - QT_TRANSLATE_NOOP("teams", "hedgehog 6"), - QT_TRANSLATE_NOOP("teams", "hedgehog 7"), - QT_TRANSLATE_NOOP("teams", "hedgehog 8"), - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "Simple", "Island" - }, - { - QT_TRANSLATE_NOOP("teams", "Goddess"), - QT_TRANSLATE_NOOP("teams", "Isis"), - QT_TRANSLATE_NOOP("teams", "Astarte"), - QT_TRANSLATE_NOOP("teams", "Diana"), - QT_TRANSLATE_NOOP("teams", "Aphrodite"), - QT_TRANSLATE_NOOP("teams", "Hecate"), - QT_TRANSLATE_NOOP("teams", "Demeter"), - QT_TRANSLATE_NOOP("teams", "Kali"), - QT_TRANSLATE_NOOP("teams", "Inanna"), - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "Bone", "Island" - }, - { - QT_TRANSLATE_NOOP("teams", "Fruits"), - QT_TRANSLATE_NOOP("teams", "Banana"), - QT_TRANSLATE_NOOP("teams", "Apple"), - QT_TRANSLATE_NOOP("teams", "Orange"), - QT_TRANSLATE_NOOP("teams", "Lemon"), - QT_TRANSLATE_NOOP("teams", "Pineapple"), - QT_TRANSLATE_NOOP("teams", "Mango"), - QT_TRANSLATE_NOOP("teams", "Peach"), - QT_TRANSLATE_NOOP("teams", "Plum"), - "banana", - "apple", - "orange", - "lemon", - "NoHat", - "NoHat", - "NoHat", - "NoHat", - "coffin", "Barrelhouse" - } -}; -*/ -#endif // PREDEFTEAMS_H
--- a/QTfrontend/proto.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/proto.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -23,14 +23,19 @@ } +QByteArray & HWProto::addByteArrayToBuffer(QByteArray & buf, const QByteArray & msg) +{ + QByteArray bmsg = msg; + bmsg = bmsg.left(250); + quint8 sz = bmsg.size(); + buf.append(QByteArray((char *)&sz, 1)); + buf.append(bmsg); + return buf; +} + QByteArray & HWProto::addStringToBuffer(QByteArray & buf, const QString & string) { - QByteArray strmsg = string.toUtf8(); - strmsg = strmsg.left(250); - quint8 sz = strmsg.size(); - buf.append(QByteArray((char *)&sz, 1)); - buf.append(strmsg); - return buf; + return addByteArrayToBuffer(buf, string.toUtf8()); } QByteArray & HWProto::addStringListToBuffer(QByteArray & buf, const QStringList & strList)
--- a/QTfrontend/proto.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/proto.h Tue Jan 04 12:53:46 2011 +0100 @@ -31,6 +31,7 @@ public: HWProto(); static QByteArray & addStringToBuffer(QByteArray & buf, const QString & string); + static QByteArray & addByteArrayToBuffer(QByteArray & buf, const QByteArray & msg); static QByteArray & addStringListToBuffer(QByteArray & buf, const QStringList & strList); static QString formatChatMsg(const QString & nick, const QString & msg); };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/qaspectratiolayout.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,206 @@ +/* + * Copyright (c) 2009 Nokia Corporation. + */ + +#include "qaspectratiolayout.h" + +QAspectRatioLayout::QAspectRatioLayout(QWidget* parent, int spacing) : QLayout(parent) { + init(spacing); +} + +QAspectRatioLayout::QAspectRatioLayout(int spacing) { + init(spacing); +} + +QAspectRatioLayout::~QAspectRatioLayout() { + delete item; + delete lastReceivedRect; + delete _geometry; +} + +void QAspectRatioLayout::init(int spacing) { + item = 0; + lastReceivedRect = new QRect(0, 0, 0, 0); + _geometry = new QRect(0, 0, 0, 0); + setSpacing(spacing); +} + + +/* Adds item if place isn't already taken. */ +void QAspectRatioLayout::add(QLayoutItem* item) { + if(!hasItem()) { + replaceItem(item); + } +} + +/* Adds item if place isn't already taken. */ +void QAspectRatioLayout::addItem(QLayoutItem* item) { + if(!hasItem()) { + replaceItem(item); + } +} + +/* Adds widget if place isn't already taken. */ +void QAspectRatioLayout::addWidget(QWidget* widget) { + if(!hasItem()) { + replaceItem(new QWidgetItem(widget)); + } +} + +/* Returns the item pointer and dereferences it here. */ +QLayoutItem* QAspectRatioLayout::take() { + QLayoutItem* item = 0; + if(this->hasItem()) { + item = this->item; + this->item = 0; + } + return item; +} + +/* Returns the item pointer and dereferences it here. */ +QLayoutItem* QAspectRatioLayout::takeAt(int index) { + if(index != 0) { + return 0; + } + return this->take(); +} + +/* Returns the item pointer. */ +QLayoutItem* QAspectRatioLayout::itemAt(int index) const { + if(index != 0) { + return 0; + } + if(hasItem()) { + return this->item; + } + return 0; +} + +/* Checks if we have an item. */ +bool QAspectRatioLayout::hasItem() const { + return this->item != 0; +} + +/* Returns the count of items which can be either 0 or 1. */ +int QAspectRatioLayout::count() const { + int returnValue = 0; + if(hasItem()) { + returnValue = 1; + } + return returnValue; +} + +/* Replaces the item with the new and returns the old. */ +QLayoutItem* QAspectRatioLayout::replaceItem(QLayoutItem* item) { + QLayoutItem* old = 0; + if(this->hasItem()) { + old = this->item; + } + this->item = item; + setGeometry(*this->_geometry); + return old; +} + +/* Tells which way layout expands. */ +Qt::Orientations QAspectRatioLayout::expandingDirections() const { + return Qt::Horizontal | Qt::Vertical; +} + +/* Tells which size is preferred. */ +QSize QAspectRatioLayout::sizeHint() const { + return this->item->minimumSize(); +} + +/* Tells minimum size. */ +QSize QAspectRatioLayout::minimumSize() const { + return this->item->minimumSize(); +} + +/* + * Tells if heightForWidth calculations is handled. + * It isn't since width isn't enough to calculate + * proper size. + */ +bool QAspectRatioLayout::hasHeightForWidth() const { + return false; +} + +/* Replaces lastReceivedRect. */ +void QAspectRatioLayout::setLastReceivedRect(const QRect& rect) { + QRect* oldRect = this->lastReceivedRect; + this->lastReceivedRect = new QRect(rect.topLeft(), rect.size()); + delete oldRect; +} + +/* Returns geometry */ +QRect QAspectRatioLayout::geometry() { + return QRect(*this->_geometry); +} + +/* Sets geometry to given size. */ +void QAspectRatioLayout::setGeometry(const QRect& rect) { + /* + * We check if the item is set and + * if size is the same previously received. + * If either is false nothing is done. + */ + if(!this->hasItem() || + areRectsEqual(*this->lastReceivedRect, rect)) { + return; + } + /* Replace the last received rectangle. */ + setLastReceivedRect(rect); + /* Calculate proper size for the item relative to the received size. */ + QSize properSize = calculateProperSize(rect.size()); + /* Calculate center location in the rect and with item size. */ + QPoint properLocation = calculateCenterLocation(rect.size(), properSize); + /* Set items geometry */ + this->item->setGeometry(QRect(properLocation, properSize)); + QRect* oldRect = this->_geometry; + /* Cache the calculated geometry. */ + this->_geometry = new QRect(properLocation, properSize); + delete oldRect; + /* Super classes setGeometry */ + QLayout::setGeometry(*this->_geometry); +} + +/* Takes the shortest side and creates QSize + * with the shortest side as width and height. */ +QSize QAspectRatioLayout::calculateProperSize(QSize from) const { + QSize properSize; + if(from.height() * 2 < from.width()) { + properSize.setHeight(from.height() - this->margin()); + properSize.setWidth(from.height() * 2 - this->margin()); + } + else { + properSize.setWidth(from.width() - this->margin()); + properSize.setHeight(from.width() / 2 - this->margin()); + } + return properSize; +} + +/* Calculates center location from the given height and width for item size. */ +QPoint QAspectRatioLayout::calculateCenterLocation(QSize from, + QSize itemSize) const { + QPoint centerLocation; + if((from.width() - itemSize.width()) > 0) { + centerLocation.setX((from.width() - itemSize.width())/2); + } + if((from.height() - itemSize.height()) > 0) { + centerLocation.setY((from.height() - itemSize.height())/2); + } + return centerLocation; +} + +/* Compares if two QRects are equal. */ +bool QAspectRatioLayout::areRectsEqual(const QRect& a, + const QRect& b) const { + bool result = false; + if(a.x() == b.x() && + a.y() == b.y() && + a.height() == b.height() && + a.width() == b.width()) { + result = true; + } + return result; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/qaspectratiolayout.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2009 Nokia Corporation. + */ + +#ifndef QASPECTRATIOLAYOUT_H_ +#define QASPECTRATIOLAYOUT_H_ + +#include <QLayout> +#include <QPointer> +#include <QRect> +#include <QWidgetItem> +#include <QLayoutItem> + + +class QAspectRatioLayout : public QLayout +{ + Q_OBJECT + +public: + QAspectRatioLayout(QWidget* parent, int spacing =-1); + QAspectRatioLayout(int spacing = -1); + ~QAspectRatioLayout(); + + /* Convenience method */ + virtual void add(QLayoutItem* item); + +/* http://doc.trolltech.com/qlayout.html#addItem */ + virtual void addItem(QLayoutItem* item); + /* http://doc.trolltech.com/qlayout.html#addWidget */ + virtual void addWidget(QWidget* widget); + /* http://doc.trolltech.com/qlayout.html#takeAt */ + virtual QLayoutItem* takeAt(int index); + /* http://doc.trolltech.com/qlayout.html#itemAt */ + virtual QLayoutItem* itemAt(int index) const; + /* http://doc.trolltech.com/qlayout.html#count */ + virtual int count() const; + + /* + * These are ours since we do have only one item. + */ + virtual QLayoutItem* replaceItem(QLayoutItem* item); + virtual QLayoutItem* take(); + virtual bool hasItem() const; + +/* http://doc.trolltech.com/qlayout.html#expandingDirections */ + virtual Qt::Orientations expandingDirections() const; + + /* + * This method contains most of the juice of this article. + * http://doc.trolltech.com/qlayoutitem.html#setGeometry + */ + virtual void setGeometry(const QRect& rect); + /* http://doc.trolltech.com/qlayoutitem.html#geometry */ + virtual QRect geometry(); + + /* http://doc.trolltech.com/qlayoutitem.html#sizeHint */ + virtual QSize sizeHint() const; + /* http://doc.trolltech.com/qlayout.html#minimumSize */ + virtual QSize minimumSize() const; + /* http://doc.trolltech.com/qlayoutitem.html#hasHeightForWidth */ + virtual bool hasHeightForWidth() const; + +private: + /* Saves the last received rect. */ + void setLastReceivedRect(const QRect& rect); + /* Used to initialize the object. */ + void init(int spacing); + /* Calculates the maximum size for the item from the assigned size. */ + QSize calculateProperSize(QSize from) const; + /* Calculates the center location from the assigned size and + * the items size. */ + QPoint calculateCenterLocation(QSize from, QSize itemSize) const; + /* Check if two QRects are equal */ + bool areRectsEqual(const QRect& a, const QRect& b) const; + /* Contains item reference */ + QLayoutItem* item; + /* + * Used for caching so we won't do calculations every time + * setGeometry is called. + */ + QRect* lastReceivedRect; + /* Contains geometry */ + QRect* _geometry; + +}; + +#endif /* QASPECTRATIOLAYOUT_H_ */
--- a/QTfrontend/selectWeapon.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/selectWeapon.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -40,7 +40,7 @@ return ammo.copy(x, y, 32, 32); } -SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QWidget* parent) : +SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QImage imagegrey, QWidget* parent) : QWidget(parent) { QHBoxLayout* hbLayout = new QHBoxLayout(this); @@ -53,7 +53,7 @@ lbl->setGeometry(0, 0, 30, 30); hbLayout->addWidget(lbl); - item = new WeaponItem(image, this); + item = new WeaponItem(image, imagegrey, this); item->setItemsNum(wNum); item->setInfinityState(allowInfinite); hbLayout->addWidget(item); @@ -74,6 +74,11 @@ return item->getItemsNum(); } +void SelWeaponItem::setEnabled(bool value) +{ + item->setEnabled(value); +} + SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) : QFrame(parent), m_numItems(numItems) @@ -124,19 +129,19 @@ for(; i < m_numItems; ++i) { if (i == 6) continue; if (k % 4 == 0) ++j; - SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), this); + SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this); weaponItems[i].append(swi); p1Layout->addWidget(swi, j, k % 4); - SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), this); + SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), QImage(":/res/ammopicboxgrey.png"), this); weaponItems[i].append(pwi); p2Layout->addWidget(pwi, j, k % 4); - SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), this); + SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), QImage(":/res/ammopicdelaygrey.png"), this); weaponItems[i].append(dwi); p3Layout->addWidget(dwi, j, k % 4); - SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), this); + SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this); weaponItems[i].append(awi); p4Layout->addWidget(awi, j, k % 4); @@ -150,6 +155,11 @@ void SelWeaponWidget::setWeapons(const QString& ammo) { + bool enable = true; + for(int i = 0; i < cDefaultAmmos.size(); i++) + if (!cDefaultAmmos[i].first.compare(m_name->text())) { + enable = false; + } for(int i = 0; i < m_numItems; ++i) { twi::iterator it = weaponItems.find(i); if (it == weaponItems.end()) continue; @@ -157,12 +167,20 @@ it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue()); it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue()); it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue()); + it.value()[0]->setEnabled(enable); + it.value()[1]->setEnabled(enable); + it.value()[2]->setEnabled(enable); + it.value()[3]->setEnabled(enable); } - update(); + m_name->setEnabled(enable); } void SelWeaponWidget::setDefault() { + for(int i = 0; i < cDefaultAmmos.size(); i++) + if (!cDefaultAmmos[i].first.compare(m_name->text())) { + return; + } setWeapons(*cDefaultAmmoStore); } @@ -215,11 +233,11 @@ { if (curWeaponsName == "") return; - if (curWeaponsName == "Default") { - QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set")); - impossible.exec(); - return; - } + for(int i = 0; i < cDefaultAmmos.size(); i++) + if (!cDefaultAmmos[i].first.compare(m_name->text())) { + QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set '%1'!").arg(cDefaultAmmos[i].first)); + return; + } QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel); @@ -229,18 +247,32 @@ } } +void SelWeaponWidget::newWeaponsName() +{ + setWeaponsName(tr("new")); +} + void SelWeaponWidget::setWeaponsName(const QString& name) { - if(name != "" && wconf->contains(name)) { - setWeapons(wconf->value(name).toString()); - } + m_name->setText(name); curWeaponsName = name; - m_name->setText(name); + if(name != "" && wconf->contains(name)) { + setWeapons(wconf->value(name).toString()); + } else { + setWeapons(*cDefaultAmmoStore); + } } QStringList SelWeaponWidget::getWeaponNames() const { return wconf->allKeys(); } + +void SelWeaponWidget::copy() +{ + QString ammo = getWeaponsString(curWeaponsName); + setWeaponsName(tr("copy of") + " " + curWeaponsName); + setWeapons(ammo); +}
--- a/QTfrontend/selectWeapon.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/selectWeapon.h Tue Jan 04 12:53:46 2011 +0100 @@ -33,10 +33,11 @@ Q_OBJECT public: - SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QWidget* parent=0); + SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QImage imagegrey, QWidget* parent=0); unsigned char getItemsNum() const; void setItemsNum(const unsigned char num); + void setEnabled(bool value); private: WeaponItem* item; @@ -56,7 +57,9 @@ void setWeapons(const QString& ammo); void setWeaponsName(const QString& name); void deleteWeaponsName(); + void newWeaponsName(); void save(); + void copy(); signals: void weaponsChanged();
--- a/QTfrontend/statsPage.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/statsPage.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -31,6 +31,8 @@ void FitGraphicsView::resizeEvent(QResizeEvent * event) { + Q_UNUSED(event); + fitInView(sceneRect()); }
--- a/QTfrontend/teamselect.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/teamselect.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -233,10 +233,6 @@ p.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00)); addScrArea(framePlaying, p.color(QPalette::Window).light(105), 250); addScrArea(frameDontPlaying, p.color(QPalette::Window).dark(105), 0); - QPushButton * btnSetup = new QPushButton(this); - btnSetup->setText(QPushButton::tr("Setup")); - connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); - mainLayout.addWidget(btnSetup); } void TeamSelWidget::setAcceptOuter(bool acceptOuter)
--- a/QTfrontend/teamselect.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/teamselect.h Tue Jan 04 12:53:46 2011 +0100 @@ -56,7 +56,6 @@ signals: void setEnabledGameStart(bool); - void SetupClicked(); void teamWillPlay(HWTeam team); void teamNotPlaying(const HWTeam& team); void hhogsNumChanged(const HWTeam&);
--- a/QTfrontend/teamselhelper.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/teamselhelper.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -73,7 +73,7 @@ connect(colorButt, SIGNAL(clicked()), this, SLOT(changeTeamColor())); mainLayout.addWidget(colorButt); - phhoger = new CHedgehogerWidget(QImage(":/res/hh25x25.png"), this); + phhoger = new CHedgehogerWidget(QImage(":/res/hh25x25.png"), QImage(":/res/hh25x25grey.png"), this); connect(phhoger, SIGNAL(hedgehogsNumChanged()), this, SLOT(hhNumChanged())); phhoger->setHHNum(team.numHedgehogs); mainLayout.addWidget(phhoger);
--- a/QTfrontend/togglebutton.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/togglebutton.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -19,6 +19,7 @@ #include "togglebutton.h" ToggleButtonWidget::ToggleButtonWidget(QWidget * parent, QString img) + : QPushButton(parent) { setCheckable(true);
--- a/QTfrontend/ui_hwform.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/ui_hwform.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -116,4 +116,7 @@ pageCampaign = new PageCampaign(); Pages->addWidget(pageCampaign); + + pageDrawMap = new PageDrawMap(); + Pages->addWidget(pageDrawMap); }
--- a/QTfrontend/ui_hwform.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/ui_hwform.h Tue Jan 04 12:53:46 2011 +0100 @@ -40,6 +40,7 @@ class PageScheme; class PageAdmin; class PageNetType; +class PageDrawMap; class QStackedLayout; class QFont; class QWidget; @@ -72,6 +73,7 @@ PageAdmin *pageAdmin; PageNetType *pageNetType; PageCampaign *pageCampaign; + PageDrawMap *pageDrawMap; QStackedLayout *Pages; QFont *font14; @@ -79,8 +81,6 @@ void setupUi(HWForm *HWForm); void SetupFonts(); void SetupPages(QWidget *Parent, HWForm *HWForm); - void SetupPageNetChat(QWidget *Parent); - void SetupPageNetGame(QWidget *Parent); }; #endif // UI_HWFORM_H
--- a/QTfrontend/weaponItem.cpp Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/weaponItem.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -18,8 +18,8 @@ #include "weaponItem.h" -WeaponItem::WeaponItem(const QImage& im, QWidget * parent) : - ItemNum(im, parent, 0) +WeaponItem::WeaponItem(const QImage& im, const QImage& img, QWidget * parent) : + ItemNum(im, img, parent, 0) { }
--- a/QTfrontend/weaponItem.h Mon Dec 27 23:57:44 2010 +0100 +++ b/QTfrontend/weaponItem.h Tue Jan 04 12:53:46 2011 +0100 @@ -26,7 +26,7 @@ Q_OBJECT public: - WeaponItem(const QImage& im, QWidget * parent); + WeaponItem(const QImage& im, const QImage& img, QWidget * parent); virtual ~WeaponItem(); signals:
--- a/bin/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/bin/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,7 +1,9 @@ if(WIN32 AND NOT UNIX) file(GLOB DLLs *.dll) + file(GLOB ICOs *.ico) install(FILES ${DLLs} + ${ICOs} DESTINATION bin) endif(WIN32 AND NOT UNIX)
--- a/gameServer/Actions.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/Actions.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,134 +1,171 @@ -{-# LANGUAGE OverloadedStrings #-} module Actions where -import Control.Concurrent +import Control.Concurrent.STM import Control.Concurrent.Chan +import Data.IntMap import qualified Data.IntSet as IntSet -import qualified Data.Set as Set import qualified Data.Sequence as Seq import System.Log.Logger import Control.Monad import Data.Time import Data.Maybe -import Control.Monad.Reader -import Control.Monad.State.Strict -import qualified Data.ByteString.Char8 as B ----------------------------- import CoreTypes import Utils -import ClientIO -import ServerState data Action = - AnswerClients ![ClientChan] ![B.ByteString] + AnswerThisClient [String] + | AnswerAll [String] + | AnswerAllOthers [String] + | AnswerThisRoom [String] + | AnswerOthersInRoom [String] + | AnswerSameClan [String] + | AnswerLobby [String] | SendServerMessage | SendServerVars - | MoveToRoom RoomIndex - | MoveToLobby B.ByteString - | RemoveTeam B.ByteString + | RoomAddThisClient Int -- roomID + | RoomRemoveThisClient String + | RemoveTeam String | RemoveRoom | UnreadyRoomClients - | JoinLobby - | ProtocolError B.ByteString - | Warning B.ByteString - | ByeClient B.ByteString - | KickClient ClientIndex - | KickRoomClient ClientIndex - | BanClient B.ByteString -- nick - | RemoveClientTeams ClientIndex + | MoveToLobby + | ProtocolError String + | Warning String + | ByeClient String + | KickClient Int -- clID + | KickRoomClient Int -- clID + | BanClient String -- nick + | RemoveClientTeams Int -- clID | ModifyClient (ClientInfo -> ClientInfo) - | ModifyClient2 ClientIndex (ClientInfo -> ClientInfo) + | ModifyClient2 Int (ClientInfo -> ClientInfo) | ModifyRoom (RoomInfo -> RoomInfo) | ModifyServerInfo (ServerInfo -> ServerInfo) - | AddRoom B.ByteString B.ByteString + | AddRoom String String | CheckRegistered | ClearAccountsCache | ProcessAccountInfo AccountInfo | Dump | AddClient ClientInfo - | DeleteClient ClientIndex | PingAll | StatsAction -type CmdHandler = [B.ByteString] -> Reader (ClientIndex, IRnC) [Action] +type CmdHandler = Int -> Clients -> Rooms -> [String] -> [Action] + +replaceID a (b, c, d, e) = (a, c, d, e) + +processAction :: (Int, ServerInfo, Clients, Rooms) -> Action -> IO (Int, ServerInfo, Clients, Rooms) + + +processAction (clID, serverInfo, clients, rooms) (AnswerThisClient msg) = do + writeChan (sendChan $ clients ! clID) msg + return (clID, serverInfo, clients, rooms) -processAction :: Action -> StateT ServerState IO () +processAction (clID, serverInfo, clients, rooms) (AnswerAll msg) = do + mapM_ (\cl -> writeChan (sendChan cl) msg) (elems clients) + return (clID, serverInfo, clients, rooms) + + +processAction (clID, serverInfo, clients, rooms) (AnswerAllOthers msg) = do + mapM_ (\id' -> writeChan (sendChan $ clients ! id') msg) $ + Prelude.filter (\id' -> (id' /= clID) && logonPassed (clients ! id')) (keys clients) + return (clID, serverInfo, clients, rooms) + + +processAction (clID, serverInfo, clients, rooms) (AnswerThisRoom msg) = do + mapM_ (\id' -> writeChan (sendChan $ clients ! id') msg) roomClients + return (clID, serverInfo, clients, rooms) + where + roomClients = IntSet.elems $ playersIDs room + room = rooms ! rID + rID = roomID client + client = clients ! clID -processAction (AnswerClients chans msg) = do - liftIO $ map (flip seq ()) chans `seq` map (flip seq ()) msg `seq` mapM_ (flip writeChan msg) chans +processAction (clID, serverInfo, clients, rooms) (AnswerOthersInRoom msg) = do + mapM_ (\id' -> writeChan (sendChan $ clients ! id') msg) $ Prelude.filter (/= clID) roomClients + return (clID, serverInfo, clients, rooms) + where + roomClients = IntSet.elems $ playersIDs room + room = rooms ! rID + rID = roomID client + client = clients ! clID + + +processAction (clID, serverInfo, clients, rooms) (AnswerLobby msg) = do + mapM_ (\id' -> writeChan (sendChan $ clients ! id') msg) roomClients + return (clID, serverInfo, clients, rooms) + where + roomClients = IntSet.elems $ playersIDs room + room = rooms ! 0 -processAction SendServerMessage = do - chan <- client's sendChan - protonum <- client's clientProto - si <- liftM serverInfo get - let message = if protonum < latestReleaseVersion si then +processAction (clID, serverInfo, clients, rooms) (AnswerSameClan msg) = do + mapM_ (\cl -> writeChan (sendChan cl) msg) sameClanOrSpec + return (clID, serverInfo, clients, rooms) + where + otherRoomClients = Prelude.map ((!) clients) $ IntSet.elems $ clID `IntSet.delete` (playersIDs room) + sameClanOrSpec = if teamsInGame client > 0 then sameClanClients else spectators + spectators = Prelude.filter (\cl -> teamsInGame cl == 0) otherRoomClients + sameClanClients = Prelude.filter (\cl -> teamsInGame cl > 0 && clientClan cl == thisClan) otherRoomClients + thisClan = clientClan client + room = rooms ! rID + rID = roomID client + client = clients ! clID + + +processAction (clID, serverInfo, clients, rooms) SendServerMessage = do + writeChan (sendChan $ clients ! clID) ["SERVER_MESSAGE", message serverInfo] + return (clID, serverInfo, clients, rooms) + where + client = clients ! clID + message si = if clientProto client < latestReleaseVersion si then serverMessageForOldVersions si else serverMessage si - processAction $ AnswerClients [chan] ["SERVER_MESSAGE", message] -{- -processAction (clID, serverInfo, rnc) SendServerVars = do +processAction (clID, serverInfo, clients, rooms) SendServerVars = do writeChan (sendChan $ clients ! clID) ("SERVER_VARS" : vars) - return (clID, serverInfo, rnc) + return (clID, serverInfo, clients, rooms) where client = clients ! clID vars = [ - "MOTD_NEW", serverMessage serverInfo, - "MOTD_OLD", serverMessageForOldVersions serverInfo, + "MOTD_NEW", serverMessage serverInfo, + "MOTD_OLD", serverMessageForOldVersions serverInfo, "LATEST_PROTO", show $ latestReleaseVersion serverInfo ] --} +processAction (clID, serverInfo, clients, rooms) (ProtocolError msg) = do + writeChan (sendChan $ clients ! clID) ["ERROR", msg] + return (clID, serverInfo, clients, rooms) -processAction (ProtocolError msg) = do - chan <- client's sendChan - processAction $ AnswerClients [chan] ["ERROR", msg] + +processAction (clID, serverInfo, clients, rooms) (Warning msg) = do + writeChan (sendChan $ clients ! clID) ["WARNING", msg] + return (clID, serverInfo, clients, rooms) -processAction (Warning msg) = do - chan <- client's sendChan - processAction $ AnswerClients [chan] ["WARNING", msg] - -processAction (ByeClient msg) = do - (Just ci) <- gets clientIndex - rnc <- gets roomsClients - ri <- clientRoomA - - chan <- client's sendChan - ready <- client's isReady +processAction (clID, serverInfo, clients, rooms) (ByeClient msg) = do + infoM "Clients" (show (clientUID client) ++ " quits: " ++ msg) + (_, _, newClients, newRooms) <- + if roomID client /= 0 then + processAction (clID, serverInfo, clients, rooms) $ RoomRemoveThisClient "quit" + else + return (clID, serverInfo, clients, rooms) - when (ri /= lobbyId) $ do - processAction $ MoveToLobby ("quit: " `B.append` msg) - liftIO $ modifyRoom rnc (\r -> r{ - --playersIDs = IntSet.delete ci (playersIDs r) - playersIn = (playersIn r) - 1, - readyPlayers = if ready then readyPlayers r - 1 else readyPlayers r - }) ri - return () - - liftIO $ do - infoM "Clients" (show ci ++ " quits: " ++ (B.unpack msg)) - - --mapM_ (processAction (ci, serverInfo, rnc)) $ answerOthersQuit ++ answerInformRoom - - processAction $ AnswerClients [chan] ["BYE", msg] - - s <- get - put $! s{removedClients = ci `Set.insert` removedClients s} - -processAction (DeleteClient ci) = do - rnc <- gets roomsClients - liftIO $ removeClient rnc ci - - s <- get - put $! s{removedClients = ci `Set.delete` removedClients s} - -{- + mapM_ (processAction (clID, serverInfo, newClients, newRooms)) $ answerOthersQuit ++ answerInformRoom + writeChan (sendChan $ clients ! clID) ["BYE", msg] + return ( + 0, + serverInfo, + delete clID newClients, + adjust (\r -> r{ + playersIDs = IntSet.delete clID (playersIDs r), + playersIn = (playersIn r) - 1, + readyPlayers = if isReady client then readyPlayers r - 1 else readyPlayers r + }) (roomID $ newClients ! clID) newRooms + ) where client = clients ! clID clientNick = nick client @@ -147,57 +184,46 @@ else [AnswerAll ["LOBBY:LEFT", clientNick]] else - [] --} + [] + + +processAction (clID, serverInfo, clients, rooms) (ModifyClient func) = + return (clID, serverInfo, adjust func clID clients, rooms) + -processAction (ModifyClient f) = do - (Just ci) <- gets clientIndex - rnc <- gets roomsClients - liftIO $ modifyClient rnc f ci - return () +processAction (clID, serverInfo, clients, rooms) (ModifyClient2 cl2ID func) = + return (clID, serverInfo, adjust func cl2ID clients, rooms) + -processAction (ModifyClient2 ci f) = do - rnc <- gets roomsClients - liftIO $ modifyClient rnc f ci - return () +processAction (clID, serverInfo, clients, rooms) (ModifyRoom func) = + return (clID, serverInfo, clients, adjust func rID rooms) + where + rID = roomID $ clients ! clID -processAction (ModifyRoom f) = do - rnc <- gets roomsClients - ri <- clientRoomA - liftIO $ modifyRoom rnc f ri - return () +processAction (clID, serverInfo, clients, rooms) (ModifyServerInfo func) = + return (clID, func serverInfo, clients, rooms) -{- - -processAction (clID, serverInfo, rnc) (ModifyServerInfo func) = - return (clID, func serverInfo, rnc) - --} -processAction (MoveToRoom ri) = do - (Just ci) <- gets clientIndex - rnc <- gets roomsClients - liftIO $ do - modifyClient rnc (\cl -> cl{teamsInGame = 0}) ci - modifyRoom rnc (\r -> r{playersIn = (playersIn r) + 1}) ri - - liftIO $ moveClientToRoom rnc ri ci - - chans <- liftM (map sendChan) $ roomClientsS ri - clNick <- client's nick +processAction (clID, serverInfo, clients, rooms) (RoomAddThisClient rID) = + processAction ( + clID, + serverInfo, + adjust (\cl -> cl{roomID = rID, teamsInGame = if rID == 0 then teamsInGame cl else 0}) clID clients, + adjust (\r -> r{playersIDs = IntSet.insert clID (playersIDs r), playersIn = (playersIn r) + 1}) rID $ + adjust (\r -> r{playersIDs = IntSet.delete clID (playersIDs r)}) 0 rooms + ) joinMsg + where + client = clients ! clID + joinMsg = if rID == 0 then + AnswerAllOthers ["LOBBY:JOINED", nick client] + else + AnswerThisRoom ["JOINED", nick client] - processAction $ AnswerClients chans ["JOINED", clNick] -processAction (MoveToLobby msg) = do - (Just ci) <- gets clientIndex - --ri <- clientRoomA - rnc <- gets roomsClients - - liftIO $ moveClientToLobby rnc ci - -{- +processAction (clID, serverInfo, clients, rooms) (RoomRemoveThisClient msg) = do (_, _, newClients, newRooms) <- + if roomID client /= 0 then if isMaster client then if (gameinprogress room) && (playersIn room > 1) then (changeMaster >>= (\state -> foldM processAction state @@ -205,15 +231,16 @@ AnswerOthersInRoom ["WARNING", "Admin left the room"], RemoveClientTeams clID])) else -- not in game - processAction (clID, serverInfo, rnc) RemoveRoom + processAction (clID, serverInfo, clients, rooms) RemoveRoom else -- not master foldM processAction - (clID, serverInfo, rnc) + (clID, serverInfo, clients, rooms) [AnswerOthersInRoom ["LEFT", nick client, msg], RemoveClientTeams clID] - - + else -- in lobby + return (clID, serverInfo, clients, rooms) + return ( clID, serverInfo, @@ -232,7 +259,7 @@ } insertClientToRoom r = r{playersIDs = IntSet.insert clID (playersIDs r)} changeMaster = do - processAction (newMasterId, serverInfo, rnc) $ AnswerThisClient ["ROOM_CONTROL_ACCESS", "1"] + processAction (newMasterId, serverInfo, clients, rooms) $ AnswerThisClient ["ROOM_CONTROL_ACCESS", "1"] return ( clID, serverInfo, @@ -243,35 +270,34 @@ otherPlayersSet = IntSet.delete clID (playersIDs room) newMasterId = IntSet.findMin otherPlayersSet newMasterClient = clients ! newMasterId --} + -processAction (AddRoom roomName roomPassword) = do - Just clId <- gets clientIndex - rnc <- gets roomsClients - proto <- liftIO $ client'sM rnc clientProto clId - +processAction (clID, serverInfo, clients, rooms) (AddRoom roomName roomPassword) = do + let newServerInfo = serverInfo {nextRoomID = newID} let room = newRoom{ - masterID = clId, + roomUID = newID, + masterID = clID, name = roomName, password = roomPassword, - roomProto = proto + roomProto = (clientProto client) } - rId <- liftIO $ addRoom rnc room - - processAction $ MoveToRoom rId - - chans <- liftM (map sendChan) $! roomClientsS lobbyId + processAction (clID, serverInfo, clients, rooms) $ AnswerLobby ["ROOM", "ADD", roomName] - mapM_ processAction [ - AnswerClients chans ["ROOM", "ADD", roomName] - , ModifyClient (\cl -> cl{isMaster = True}) - ] + processAction ( + clID, + newServerInfo, + adjust (\cl -> cl{isMaster = True}) clID clients, + insert newID room rooms + ) $ RoomAddThisClient newID + where + newID = (nextRoomID serverInfo) - 1 + client = clients ! clID -{- -processAction (clID, serverInfo, rnc) (RemoveRoom) = do - processAction (clID, serverInfo, rnc) $ AnswerLobby ["ROOM", "DEL", name room] - processAction (clID, serverInfo, rnc) $ AnswerOthersInRoom ["ROOMABANDONED", name room] + +processAction (clID, serverInfo, clients, rooms) (RemoveRoom) = do + processAction (clID, serverInfo, clients, rooms) $ AnswerLobby ["ROOM", "DEL", name room] + processAction (clID, serverInfo, clients, rooms) $ AnswerOthersInRoom ["ROOMABANDONED", name room] return (clID, serverInfo, Data.IntMap.map (\cl -> if roomID cl == rID then cl{roomID = 0, isMaster = False, isReady = False, teamsInGame = undefined} else cl) clients, @@ -282,163 +308,139 @@ rID = roomID client client = clients ! clID --} -processAction (UnreadyRoomClients) = do - rnc <- gets roomsClients - ri <- clientRoomA - roomPlayers <- roomClientsS ri - roomClIDs <- liftIO $ roomClientsIndicesM rnc ri - processAction $ AnswerClients (map sendChan roomPlayers) ("NOT_READY" : map nick roomPlayers) - liftIO $ mapM_ (modifyClient rnc (\cl -> cl{isReady = False})) roomClIDs - processAction $ ModifyRoom (\r -> r{readyPlayers = 0}) + +processAction (clID, serverInfo, clients, rooms) (UnreadyRoomClients) = do + processAction (clID, serverInfo, clients, rooms) $ AnswerThisRoom ("NOT_READY" : roomPlayers) + return (clID, + serverInfo, + Data.IntMap.map (\cl -> if roomID cl == rID then cl{isReady = False} else cl) clients, + adjust (\r -> r{readyPlayers = 0}) rID rooms) + where + room = rooms ! rID + rID = roomID client + client = clients ! clID + roomPlayers = Prelude.map (nick . (clients !)) roomPlayersIDs + roomPlayersIDs = IntSet.elems $ playersIDs room -processAction (RemoveTeam teamName) = do - rnc <- gets roomsClients - cl <- client's id - ri <- clientRoomA - inGame <- liftIO $ room'sM rnc gameinprogress ri - chans <- liftM (map sendChan . filter (/= cl)) $ roomClientsS ri - if inGame then - mapM_ processAction [ - AnswerClients chans ["REMOVE_TEAM", teamName], - ModifyRoom (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r}) - ] +processAction (clID, serverInfo, clients, rooms) (RemoveTeam teamName) = do + newRooms <- if not $ gameinprogress room then + do + processAction (clID, serverInfo, clients, rooms) $ AnswerOthersInRoom ["REMOVE_TEAM", teamName] + return $ + adjust (\r -> r{teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r}) rID rooms else - mapM_ processAction [ - AnswerClients chans ["EM", rmTeamMsg], - ModifyRoom (\r -> r{ - teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r, - leftTeams = teamName : leftTeams r, - roundMsgs = roundMsgs r Seq.|> rmTeamMsg - }) - ] + do + processAction (clID, serverInfo, clients, rooms) $ AnswerOthersInRoom ["EM", rmTeamMsg] + return $ + adjust (\r -> r{ + teams = Prelude.filter (\t -> teamName /= teamname t) $ teams r, + leftTeams = teamName : leftTeams r, + roundMsgs = roundMsgs r Seq.|> rmTeamMsg + }) rID rooms + return (clID, serverInfo, clients, newRooms) where - rmTeamMsg = toEngineMsg $ (B.singleton 'F') `B.append` teamName + room = rooms ! rID + rID = roomID client + client = clients ! clID + rmTeamMsg = toEngineMsg $ 'F' : teamName -processAction CheckRegistered = do - (Just ci) <- gets clientIndex - n <- client's nick - h <- client's host - db <- gets (dbQueries . serverInfo) - liftIO $ writeChan db $ CheckAccount ci n h - return () -{- -processAction (clID, serverInfo, rnc) (ClearAccountsCache) = do - writeChan (dbQueries serverInfo) ClearCache - return (clID, serverInfo, rnc) +processAction (clID, serverInfo, clients, rooms) (CheckRegistered) = do + writeChan (dbQueries serverInfo) $ CheckAccount (clientUID client) (nick client) (host client) + return (clID, serverInfo, clients, rooms) where client = clients ! clID -processAction (clID, serverInfo, rnc) (Dump) = do +processAction (clID, serverInfo, clients, rooms) (ClearAccountsCache) = do + writeChan (dbQueries serverInfo) ClearCache + return (clID, serverInfo, clients, rooms) + where + client = clients ! clID + + +processAction (clID, serverInfo, clients, rooms) (Dump) = do writeChan (sendChan $ clients ! clID) ["DUMP", show serverInfo, showTree clients, showTree rooms] - return (clID, serverInfo, rnc) --} + return (clID, serverInfo, clients, rooms) -processAction (ProcessAccountInfo info) = + +processAction (clID, serverInfo, clients, rooms) (ProcessAccountInfo info) = case info of HasAccount passwd isAdmin -> do - chan <- client's sendChan - processAction $ AnswerClients [chan] ["ASKPASSWORD"] + infoM "Clients" $ show clID ++ " has account" + writeChan (sendChan $ clients ! clID) ["ASKPASSWORD"] + return (clID, serverInfo, adjust (\cl -> cl{webPassword = passwd, isAdministrator = isAdmin}) clID clients, rooms) Guest -> do - processAction JoinLobby + infoM "Clients" $ show clID ++ " is guest" + processAction (clID, serverInfo, adjust (\cl -> cl{logonPassed = True}) clID clients, rooms) MoveToLobby Admin -> do - mapM processAction [ModifyClient (\cl -> cl{isAdministrator = True}), JoinLobby] - chan <- client's sendChan - processAction $ AnswerClients [chan] ["ADMIN_ACCESS"] + infoM "Clients" $ show clID ++ " is admin" + foldM processAction (clID, serverInfo, adjust (\cl -> cl{logonPassed = True, isAdministrator = True}) clID clients, rooms) [MoveToLobby, AnswerThisClient ["ADMIN_ACCESS"]] -processAction JoinLobby = do - chan <- client's sendChan - clientNick <- client's nick - (lobbyNicks, clientsChans) <- liftM (unzip . Prelude.map (\c -> (nick c, sendChan c)) . Prelude.filter logonPassed) $! allClientsS - mapM_ processAction $ - (AnswerClients clientsChans ["LOBBY:JOINED", clientNick]) - : [AnswerClients [chan] ("LOBBY:JOINED" : clientNick : lobbyNicks)] - ++ [ModifyClient (\cl -> cl{logonPassed = True}), SendServerMessage] +processAction (clID, serverInfo, clients, rooms) (MoveToLobby) = + foldM processAction (clID, serverInfo, clients, rooms) $ + (RoomAddThisClient 0) + : answerLobbyNicks + ++ [SendServerMessage] -{- -processAction (clID, serverInfo, rnc) (RoomAddThisClient rID) = - processAction ( - clID, - serverInfo, - adjust (\cl -> cl{roomID = rID, teamsInGame = if rID == 0 then teamsInGame cl else 0}) clID clients, - adjust (\r -> r{playersIDs = IntSet.insert clID (playersIDs r), playersIn = (playersIn r) + 1}) rID $ - adjust (\r -> r{playersIDs = IntSet.delete clID (playersIDs r)}) 0 rooms - ) joinMsg + -- ++ (answerServerMessage client clients) where - client = clients ! clID - joinMsg = if rID == 0 then - AnswerAllOthers ["LOBBY:JOINED", nick client] - else - AnswerThisRoom ["JOINED", nick client] - -processAction (clID, serverInfo, rnc) (KickClient kickID) = - liftM2 replaceID (return clID) (processAction (kickID, serverInfo, rnc) $ ByeClient "Kicked") + lobbyNicks = Prelude.map nick $ Prelude.filter logonPassed $ elems clients + answerLobbyNicks = [AnswerThisClient ("LOBBY:JOINED": lobbyNicks) | not $ Prelude.null lobbyNicks] -processAction (clID, serverInfo, rnc) (BanClient banNick) = - return (clID, serverInfo, rnc) +processAction (clID, serverInfo, clients, rooms) (KickClient kickID) = + liftM2 replaceID (return clID) (processAction (kickID, serverInfo, clients, rooms) $ ByeClient "Kicked") + + +processAction (clID, serverInfo, clients, rooms) (BanClient banNick) = + return (clID, serverInfo, clients, rooms) -processAction (clID, serverInfo, rnc) (KickRoomClient kickID) = do +processAction (clID, serverInfo, clients, rooms) (KickRoomClient kickID) = do writeChan (sendChan $ clients ! kickID) ["KICKED"] - liftM2 replaceID (return clID) (processAction (kickID, serverInfo, rnc) $ RoomRemoveThisClient "kicked") + liftM2 replaceID (return clID) (processAction (kickID, serverInfo, clients, rooms) $ RoomRemoveThisClient "kicked") -processAction (clID, serverInfo, rnc) (RemoveClientTeams teamsClID) = +processAction (clID, serverInfo, clients, rooms) (RemoveClientTeams teamsClID) = liftM2 replaceID (return clID) $ - foldM processAction (teamsClID, serverInfo, rnc) removeTeamsActions + foldM processAction (teamsClID, serverInfo, clients, rooms) removeTeamsActions where client = clients ! teamsClID room = rooms ! (roomID client) teamsToRemove = Prelude.filter (\t -> teamowner t == nick client) $ teams room removeTeamsActions = Prelude.map (RemoveTeam . teamname) teamsToRemove --} + -processAction (AddClient client) = do - rnc <- gets roomsClients - si <- gets serverInfo - liftIO $ do - ci <- addClient rnc client - forkIO $ clientRecvLoop (clientSocket client) (coreChan si) ci - forkIO $ clientSendLoop (clientSocket client) (sendChan client) ci +processAction (clID, serverInfo, clients, rooms) (AddClient client) = do + let updatedClients = insert (clientUID client) client clients + infoM "Clients" (show (clientUID client) ++ ": New client. Time: " ++ show (connectTime client)) + writeChan (sendChan client) ["CONNECTED", "Hedgewars server http://www.hedgewars.org/"] - infoM "Clients" (show ci ++ ": New client. Time: " ++ show (connectTime client)) - - processAction $ AnswerClients [sendChan client] ["CONNECTED", "Hedgewars server http://www.hedgewars.org/"] -{- let newLogins = takeWhile (\(_ , time) -> (connectTime client) `diffUTCTime` time <= 11) $ lastLogins serverInfo + let newLogins = takeWhile (\(_ , time) -> (connectTime client) `diffUTCTime` time <= 11) $ lastLogins serverInfo - if False && (isJust $ host client `Prelude.lookup` newLogins) then - processAction (ci, serverInfo{lastLogins = newLogins}, rnc) $ ByeClient "Reconnected too fast" - else - return (ci, serverInfo) --} - + if isJust $ host client `Prelude.lookup` newLogins then + processAction (clID, serverInfo{lastLogins = newLogins}, updatedClients, rooms) $ ByeClient "Reconnected too fast" + else + return (clID, serverInfo{lastLogins = (host client, connectTime client) : newLogins}, updatedClients, rooms) -processAction PingAll = do - rnc <- gets roomsClients - liftIO (allClientsM rnc) >>= mapM_ (kickTimeouted rnc) - cis <- liftIO $ allClientsM rnc - chans <- liftIO $ mapM (client'sM rnc sendChan) cis - liftIO $ mapM_ (modifyClient rnc (\cl -> cl{pingsQueue = pingsQueue cl + 1})) cis - processAction $ AnswerClients chans ["PING"] +processAction (clID, serverInfo, clients, rooms) PingAll = do + (_, _, newClients, newRooms) <- foldM kickTimeouted (clID, serverInfo, clients, rooms) $ elems clients + processAction (clID, + serverInfo, + Data.IntMap.map (\cl -> cl{pingsQueue = pingsQueue cl + 1}) newClients, + newRooms) $ AnswerAll ["PING"] where - kickTimeouted rnc ci = do - pq <- liftIO $ client'sM rnc pingsQueue ci - when (pq > 0) $ - withStateT (\as -> as{clientIndex = Just ci}) $ - processAction (ByeClient "Ping timeout") + kickTimeouted (clID, serverInfo, clients, rooms) client = + if pingsQueue client > 0 then + processAction (clientUID client, serverInfo, clients, rooms) $ ByeClient "Ping timeout" + else + return (clID, serverInfo, clients, rooms) -processAction (StatsAction) = do - rnc <- gets roomsClients - si <- gets serverInfo - (roomsNum, clientsNum) <- liftIO $ withRoomsAndClients rnc stats - liftIO $ writeChan (dbQueries si) $ SendStats clientsNum (roomsNum - 1) - where - stats irnc = (length $ allRooms irnc, length $ allClients irnc) - +processAction (clID, serverInfo, clients, rooms) (StatsAction) = do + writeChan (dbQueries serverInfo) $ SendStats (size clients) (size rooms - 1) + return (clID, serverInfo, clients, rooms)
--- a/gameServer/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,48 +1,43 @@ find_program(ghc_executable ghc) if(NOT ghc_executable) - message(FATAL_ERROR "Cannot find GHC") + message(FATAL_ERROR "Cannot find GHC") endif(NOT ghc_executable) set(hwserver_sources - OfficialServer/DBInteraction.hs - Actions.hs - ClientIO.hs - CoreTypes.hs - HWProtoCore.hs - HWProtoInRoomState.hs - HWProtoLobbyState.hs - HWProtoNEState.hs - HandlerUtils.hs - NetRoutines.hs - Opts.hs - RoomsAndClients.hs - ServerCore.hs - ServerState.hs - Store.hs - Utils.hs - hedgewars-server.hs - ) + OfficialServer/DBInteraction.hs + Actions.hs + ClientIO.hs + CoreTypes.hs + HWProtoCore.hs + HWProtoInRoomState.hs + HWProtoLobbyState.hs + HWProtoNEState.hs + NetRoutines.hs + Opts.hs + ServerCore.hs + Utils.hs + hedgewars-server.hs + ) set(hwserv_main ${hedgewars_SOURCE_DIR}/gameServer/hedgewars-server.hs) set(ghc_flags - -Wall - --make ${hwserv_main} - -i${hedgewars_SOURCE_DIR}/gameServer - -o ${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX} - -odir ${CMAKE_CURRENT_BINARY_DIR} - -hidir ${CMAKE_CURRENT_BINARY_DIR}) + --make ${hwserv_main} + -i${hedgewars_SOURCE_DIR}/gameServer + -o ${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX} + -odir ${CMAKE_CURRENT_BINARY_DIR} + -hidir ${CMAKE_CURRENT_BINARY_DIR}) set(ghc_flags ${haskell_compiler_flags_cmn} ${ghc_flags}) add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX}" - COMMAND "${ghc_executable}" - ARGS ${ghc_flags} - MAIN_DEPENDENCY ${hwserv_main} - DEPENDS ${hwserver_sources} - ) + COMMAND "${ghc_executable}" + ARGS ${ghc_flags} + MAIN_DEPENDENCY ${hwserv_main} + DEPENDS ${hwserver_sources} + ) add_custom_target(hedgewars-server ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX}")
--- a/gameServer/ClientIO.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/ClientIO.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,4 +1,4 @@ -{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} module ClientIO where import qualified Control.Exception as Exception @@ -6,71 +6,45 @@ import Control.Concurrent import Control.Monad import System.IO -import Network -import Network.Socket.ByteString -import qualified Data.ByteString.Char8 as B +import qualified Data.ByteString.UTF8 as BUTF8 +import qualified Data.ByteString as B ---------------- import CoreTypes -import RoomsAndClients -import Utils - -pDelim :: B.ByteString -pDelim = B.pack "\n\n" - -bs2Packets :: B.ByteString -> ([[B.ByteString]], B.ByteString) -bs2Packets buf = unfoldrE extractPackets buf - where - extractPackets :: B.ByteString -> Either B.ByteString ([B.ByteString], B.ByteString) - extractPackets buf = - let buf' = until (not . B.isPrefixOf pDelim) (B.drop 2) buf in - let (bsPacket, bufTail) = B.breakSubstring pDelim buf' in - if B.null bufTail then - Left bsPacket - else - if B.null bsPacket then - Left bufTail - else - Right (B.splitWith (== '\n') bsPacket, bufTail) - +listenLoop :: Handle -> Int -> [String] -> Chan CoreMessage -> Int -> IO () +listenLoop handle linesNumber buf chan clientID = do + str <- liftM BUTF8.toString $ B.hGetLine handle + if (linesNumber > 50) || (length str > 20000) then + writeChan chan $ ClientMessage (clientID, ["QUIT", "Protocol violation"]) + else + if str == "" then do + writeChan chan $ ClientMessage (clientID, buf) + yield + listenLoop handle 0 [] chan clientID + else + listenLoop handle (linesNumber + 1) (buf ++ [str]) chan clientID -listenLoop :: Socket -> Chan CoreMessage -> ClientIndex -> IO () -listenLoop sock chan ci = recieveWithBufferLoop B.empty - where - recieveWithBufferLoop recvBuf = do - recvBS <- recv sock 4096 --- putStrLn $ show sock ++ " got smth: " ++ (show $ B.length recvBS) - unless (B.null recvBS) $ do - let (packets, newrecvBuf) = bs2Packets $ B.append recvBuf recvBS - forM_ packets sendPacket - recieveWithBufferLoop newrecvBuf - - sendPacket packet = writeChan chan $ ClientMessage (ci, packet) - +clientRecvLoop :: Handle -> Chan CoreMessage -> Int -> IO () +clientRecvLoop handle chan clientID = + listenLoop handle 0 [] chan clientID + `catch` (\e -> clientOff (show e) >> return ()) + where clientOff msg = writeChan chan $ ClientMessage (clientID, ["QUIT", msg]) -- if the client disconnects, we perform as if it sent QUIT message -clientRecvLoop :: Socket -> Chan CoreMessage -> ClientIndex -> IO () -clientRecvLoop s chan ci = do - msg <- (listenLoop s chan ci >> return "Connection closed") `catch` (return . B.pack . show) - clientOff msg - where - clientOff msg = mapM_ (writeChan chan) [ClientMessage (ci, ["QUIT", msg]), Remove ci] - - +clientSendLoop :: Handle -> Chan CoreMessage -> Chan [String] -> Int -> IO() +clientSendLoop handle coreChan chan clientID = do + answer <- readChan chan + doClose <- Exception.handle + (\(e :: Exception.IOException) -> if isQuit answer then return True else sendQuit e >> return False) $ do + B.hPutStrLn handle $ BUTF8.fromString $ unlines answer + hFlush handle + return $ isQuit answer -clientSendLoop :: Socket -> Chan [B.ByteString] -> ClientIndex -> IO () -clientSendLoop s chan ci = do - answer <- readChan chan - Exception.handle - (\(e :: Exception.IOException) -> when (not $ isQuit answer) $ sendQuit e) $ do - sendAll s $ (B.unlines answer) `B.append` (B.singleton '\n') - - if (isQuit answer) then - Exception.handle (\(_ :: Exception.IOException) -> putStrLn "error on sClose") $ sClose s + if doClose then + Exception.handle (\(_ :: Exception.IOException) -> putStrLn "error on hClose") $ hClose handle else - clientSendLoop s chan ci + clientSendLoop handle coreChan chan clientID where - --sendQuit e = writeChan coreChan $ ClientMessage (ci, ["QUIT", B.pack $ show e]) - sendQuit e = putStrLn $ show e + sendQuit e = writeChan coreChan $ ClientMessage (clientID, ["QUIT", show e]) isQuit ("BYE":xs) = True isQuit _ = False
--- a/gameServer/CoreTypes.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/CoreTypes.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,4 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} module CoreTypes where import System.IO @@ -6,95 +5,102 @@ import Control.Concurrent.STM import Data.Word import qualified Data.Map as Map +import qualified Data.IntMap as IntMap import qualified Data.IntSet as IntSet import Data.Sequence(Seq, empty) import Data.Time import Network import Data.Function -import Data.ByteString.Char8 as B -import RoomsAndClients - -type ClientChan = Chan [B.ByteString] data ClientInfo = ClientInfo { - sendChan :: ClientChan, - clientSocket :: Socket, - host :: B.ByteString, + clientUID :: !Int, + sendChan :: Chan [String], + clientHandle :: Handle, + host :: String, connectTime :: UTCTime, - nick :: B.ByteString, - webPassword :: B.ByteString, + nick :: String, + webPassword :: String, logonPassed :: Bool, clientProto :: !Word16, - roomID :: RoomIndex, + roomID :: !Int, pingsQueue :: !Word, isMaster :: Bool, - isReady :: !Bool, + isReady :: Bool, isAdministrator :: Bool, - clientClan :: B.ByteString, + clientClan :: String, teamsInGame :: Word } instance Show ClientInfo where - show ci = " nick: " ++ (unpack $ nick ci) ++ " host: " ++ (unpack $ host ci) + show ci = show (clientUID ci) + ++ " nick: " ++ (nick ci) + ++ " host: " ++ (host ci) instance Eq ClientInfo where - (==) = (==) `on` clientSocket + (==) = (==) `on` clientHandle data HedgehogInfo = - HedgehogInfo B.ByteString B.ByteString + HedgehogInfo String String data TeamInfo = TeamInfo { - teamownerId :: ClientIndex, - teamowner :: B.ByteString, - teamname :: B.ByteString, - teamcolor :: B.ByteString, - teamgrave :: B.ByteString, - teamfort :: B.ByteString, - teamvoicepack :: B.ByteString, - teamflag :: B.ByteString, + teamownerId :: !Int, + teamowner :: String, + teamname :: String, + teamcolor :: String, + teamgrave :: String, + teamfort :: String, + teamvoicepack :: String, + teamflag :: String, difficulty :: Int, hhnum :: Int, hedgehogs :: [HedgehogInfo] } instance Show TeamInfo where - show ti = "owner: " ++ (unpack $ teamowner ti) - ++ "name: " ++ (unpack $ teamname ti) - ++ "color: " ++ (unpack $ teamcolor ti) + show ti = "owner: " ++ (teamowner ti) + ++ "name: " ++ (teamname ti) + ++ "color: " ++ (teamcolor ti) data RoomInfo = RoomInfo { - masterID :: ClientIndex, - name :: B.ByteString, - password :: B.ByteString, + roomUID :: !Int, + masterID :: !Int, + name :: String, + password :: String, roomProto :: Word16, teams :: [TeamInfo], gameinprogress :: Bool, playersIn :: !Int, readyPlayers :: !Int, + playersIDs :: IntSet.IntSet, isRestrictedJoins :: Bool, isRestrictedTeams :: Bool, - roundMsgs :: Seq B.ByteString, - leftTeams :: [B.ByteString], + roundMsgs :: Seq String, + leftTeams :: [String], teamsAtStart :: [TeamInfo], - params :: Map.Map B.ByteString [B.ByteString] + params :: Map.Map String [String] } instance Show RoomInfo where - show ri = ", players: " ++ show (playersIn ri) + show ri = show (roomUID ri) + ++ ", players ids: " ++ show (IntSet.size $ playersIDs ri) + ++ ", players: " ++ show (playersIn ri) ++ ", ready: " ++ show (readyPlayers ri) ++ ", teams: " ++ show (teams ri) -newRoom :: RoomInfo +instance Eq RoomInfo where + (==) = (==) `on` roomUID + newRoom = ( RoomInfo - undefined + 0 + 0 "" "" 0 @@ -102,6 +108,7 @@ False 0 0 + IntSet.empty False False Data.Sequence.empty @@ -121,30 +128,29 @@ ServerInfo { isDedicated :: Bool, - serverMessage :: B.ByteString, - serverMessageForOldVersions :: B.ByteString, + serverMessage :: String, + serverMessageForOldVersions :: String, latestReleaseVersion :: Word16, listenPort :: PortNumber, nextRoomID :: Int, - dbHost :: B.ByteString, - dbLogin :: B.ByteString, - dbPassword :: B.ByteString, - lastLogins :: [(B.ByteString, UTCTime)], + dbHost :: String, + dbLogin :: String, + dbPassword :: String, + lastLogins :: [(String, UTCTime)], stats :: TMVar StatisticsInfo, coreChan :: Chan CoreMessage, dbQueries :: Chan DBQuery } instance Show ServerInfo where - show _ = "Server Info" + show si = "Server Info" -newServerInfo :: TMVar StatisticsInfo -> Chan CoreMessage -> Chan DBQuery -> ServerInfo newServerInfo = ( 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.14.1 is out! Please update.</h3><p align=center><a href=http://hedgewars.org/download.html>Download page here</a></font>" - 35 + "<font color=yellow><h3 align=center>Hedgewars 0.9.15 is out! Please update.</h3><p align=center><a href=http://hedgewars.org/download.html>Download page here</a></font>" + 37 46631 0 "" @@ -154,31 +160,29 @@ ) data AccountInfo = - HasAccount B.ByteString Bool + HasAccount String Bool | Guest | Admin deriving (Show, Read) data DBQuery = - CheckAccount ClientIndex B.ByteString B.ByteString + CheckAccount Int String String | ClearCache | SendStats Int Int deriving (Show, Read) data CoreMessage = Accept ClientInfo - | ClientMessage (ClientIndex, [B.ByteString]) - | ClientAccountInfo (ClientIndex, AccountInfo) + | ClientMessage (Int, [String]) + | ClientAccountInfo (Int, AccountInfo) | TimerAction Int - | Remove ClientIndex + +type Clients = IntMap.IntMap ClientInfo +type Rooms = IntMap.IntMap RoomInfo -instance Show CoreMessage where - show (Accept _) = "Accept" - show (ClientMessage _) = "ClientMessage" - show (ClientAccountInfo _) = "ClientAccountInfo" - show (TimerAction _) = "TimerAction" - show (Remove _) = "Remove" - -type MRnC = MRoomsAndClients RoomInfo ClientInfo -type IRnC = IRoomsAndClients RoomInfo ClientInfo +--type ClientsTransform = [ClientInfo] -> [ClientInfo] +--type RoomsTransform = [RoomInfo] -> [RoomInfo] +--type HandlesSelector = ClientInfo -> [ClientInfo] -> [RoomInfo] -> [ClientInfo] +--type Answer = ServerInfo -> (HandlesSelector, [String]) +type ClientsSelector = Clients -> Rooms -> [Int]
--- a/gameServer/HWProtoCore.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/HWProtoCore.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,10 +1,8 @@ -{-# LANGUAGE OverloadedStrings #-} module HWProtoCore where import qualified Data.IntMap as IntMap import Data.Foldable import Data.Maybe -import Control.Monad.Reader -------------------------------------- import CoreTypes import Actions @@ -12,37 +10,35 @@ import HWProtoNEState import HWProtoLobbyState import HWProtoInRoomState -import HandlerUtils -import RoomsAndClients handleCmd, handleCmd_loggedin :: CmdHandler - -handleCmd ["PING"] = answerClient ["PONG"] +handleCmd clID _ _ ["PING"] = [AnswerThisClient ["PONG"]] - -handleCmd ("QUIT" : xs) = return [ByeClient msg] +handleCmd clID clients rooms ("QUIT" : xs) = + [ByeClient msg] where msg = if not $ null xs then head xs else "" -{- -handleCmd ["PONG"] = + +handleCmd clID clients _ ["PONG"] = if pingsQueue client == 0 then [ProtocolError "Protocol violation"] else [ModifyClient (\cl -> cl{pingsQueue = pingsQueue cl - 1})] where client = clients IntMap.! clID --} + -handleCmd cmd = do - (ci, irnc) <- ask - if logonPassed (irnc `client` ci) then - handleCmd_loggedin cmd - else - handleCmd_NotEntered cmd +handleCmd clID clients rooms cmd = + if not $ logonPassed client then + handleCmd_NotEntered clID clients rooms cmd + else + handleCmd_loggedin clID clients rooms cmd + where + client = clients IntMap.! clID -{- + handleCmd_loggedin clID clients rooms ["INFO", asknick] = if noSuchClient then [] @@ -66,12 +62,11 @@ then if teamsInGame client > 0 then "(playing)" else "(spectating)" else "" --} - -handleCmd_loggedin cmd = do - (ci, rnc) <- ask - if clientRoom rnc ci == lobbyId then - handleCmd_lobby cmd - else - handleCmd_inRoom cmd +handleCmd_loggedin clID clients rooms cmd = + if roomID client == 0 then + handleCmd_lobby clID clients rooms cmd + else + handleCmd_inRoom clID clients rooms cmd + where + client = clients IntMap.! clID
--- a/gameServer/HWProtoInRoomState.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/HWProtoInRoomState.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,240 +1,182 @@ -{-# LANGUAGE OverloadedStrings #-} module HWProtoInRoomState where import qualified Data.Foldable as Foldable +import qualified Data.IntMap as IntMap import qualified Data.Map as Map import Data.Sequence(Seq, (|>), (><), fromList, empty) import Data.List import Data.Maybe -import qualified Data.ByteString.Char8 as B -import Control.Monad -import Control.Monad.Reader -------------------------------------- import CoreTypes import Actions import Utils -import HandlerUtils -import RoomsAndClients + handleCmd_inRoom :: CmdHandler -handleCmd_inRoom ["CHAT", msg] = do - n <- clientNick - s <- roomOthersChans - return [AnswerClients s ["CHAT", n, msg]] +handleCmd_inRoom clID clients _ ["CHAT", msg] = + [AnswerOthersInRoom ["CHAT", clientNick, msg]] + where + clientNick = nick $ clients IntMap.! clID -handleCmd_inRoom ["PART"] = return [MoveToLobby "part"] -handleCmd_inRoom ["PART", msg] = return [MoveToLobby $ "part: " `B.append` msg] +handleCmd_inRoom clID clients rooms ["PART"] = + [RoomRemoveThisClient "part"] + where + client = clients IntMap.! clID -handleCmd_inRoom ("CFG" : paramName : paramStrs) - | null paramStrs = return [ProtocolError "Empty config entry"] - | otherwise = do - chans <- roomOthersChans - cl <- thisClient - if isMaster cl then - return [ - ModifyRoom (\r -> r{params = Map.insert paramName paramStrs (params r)}), - AnswerClients chans ("CFG" : paramName : paramStrs)] - else - return [ProtocolError "Not room master"] +handleCmd_inRoom clID clients rooms ("CFG" : paramName : paramStrs) + | null paramStrs = [ProtocolError "Empty config entry"] + | isMaster client = + [ModifyRoom (\r -> r{params = Map.insert paramName paramStrs (params r)}), + AnswerOthersInRoom ("CFG" : paramName : paramStrs)] + | otherwise = [ProtocolError "Not room master"] + where + client = clients IntMap.! clID -handleCmd_inRoom ("ADD_TEAM" : name : color : grave : fort : voicepack : flag : difStr : hhsInfo) - | length hhsInfo /= 16 = return [ProtocolError "Corrupted hedgehogs info"] - | otherwise = do - (ci, rnc) <- ask - r <- thisRoom - clNick <- clientNick - clChan <- thisClientChans - othersChans <- roomOthersChans - return $ - if not . null . drop 5 $ teams r then - [Warning "too many teams"] - else if canAddNumber r <= 0 then - [Warning "too many hedgehogs"] - else if isJust $ findTeam r then - [Warning "There's already a team with same name in the list"] - else if gameinprogress r then - [Warning "round in progress"] - else if isRestrictedTeams r then - [Warning "restricted"] - else - [ModifyRoom (\r -> r{teams = teams r ++ [newTeam ci clNick r]}), - ModifyClient (\c -> c{teamsInGame = teamsInGame c + 1, clientClan = color}), - AnswerClients clChan ["TEAM_ACCEPTED", name], - AnswerClients othersChans $ teamToNet $ newTeam ci clNick r, - AnswerClients othersChans ["TEAM_COLOR", name, color] - ] - where - canAddNumber r = 48 - (sum . map hhnum $ teams r) - findTeam = find (\t -> name == teamname t) . teams - newTeam ci clNick r = (TeamInfo ci clNick name color grave fort voicepack flag difficulty (newTeamHHNum r) (hhsList hhsInfo)) - difficulty = case B.readInt difStr of - Just (i, t) | B.null t -> fromIntegral i - otherwise -> 0 +handleCmd_inRoom clID clients rooms ("ADD_TEAM" : name : color : grave : fort : voicepack : flag : difStr : hhsInfo) + | length hhsInfo == 15 && clientProto client < 30 = handleCmd_inRoom clID clients rooms ("ADD_TEAM" : name : color : grave : fort : voicepack : " " : flag : difStr : hhsInfo) + | length hhsInfo /= 16 = [ProtocolError "Corrupted hedgehogs info"] + | length (teams room) == 8 = [Warning "too many teams"] + | canAddNumber <= 0 = [Warning "too many hedgehogs"] + | isJust findTeam = [Warning "There's already a team with same name in the list"] + | gameinprogress room = [Warning "round in progress"] + | isRestrictedTeams room = [Warning "restricted"] + | otherwise = + [ModifyRoom (\r -> r{teams = teams r ++ [newTeam]}), + ModifyClient (\c -> c{teamsInGame = teamsInGame c + 1, clientClan = color}), + AnswerThisClient ["TEAM_ACCEPTED", name], + AnswerOthersInRoom $ teamToNet (clientProto client) newTeam, + AnswerOthersInRoom ["TEAM_COLOR", name, color] + ] + where + client = clients IntMap.! clID + room = rooms IntMap.! (roomID client) + canAddNumber = 48 - (sum . map hhnum $ teams room) + findTeam = find (\t -> name == teamname t) $ teams room + newTeam = (TeamInfo clID (nick client) name color grave fort voicepack flag difficulty newTeamHHNum (hhsList hhsInfo)) + difficulty = fromMaybe 0 (maybeRead difStr :: Maybe Int) hhsList [] = [] - hhsList [_] = error "Hedgehogs list with odd elements number" hhsList (n:h:hhs) = HedgehogInfo n h : hhsList hhs - newTeamHHNum r = min 4 (canAddNumber r) - -handleCmd_inRoom ["REMOVE_TEAM", name] = do - (ci, rnc) <- ask - r <- thisRoom - clNick <- clientNick - - let maybeTeam = findTeam r - let team = fromJust maybeTeam + newTeamHHNum = min 4 canAddNumber - return $ - if isNothing $ findTeam r then - [Warning "REMOVE_TEAM: no such team"] - else if clNick /= teamowner team then - [ProtocolError "Not team owner!"] - else - [RemoveTeam name, - ModifyClient - (\c -> c{ - teamsInGame = teamsInGame c - 1, - clientClan = if teamsInGame c == 1 then undefined else anotherTeamClan ci r - }) - ] +handleCmd_inRoom clID clients rooms ["REMOVE_TEAM", teamName] + | noSuchTeam = [Warning "REMOVE_TEAM: no such team"] + | nick client /= teamowner team = [ProtocolError "Not team owner!"] + | otherwise = + [RemoveTeam teamName, + ModifyClient (\c -> c{teamsInGame = teamsInGame c - 1, clientClan = if teamsInGame client == 1 then undefined else anotherTeamClan}) + ] where - anotherTeamClan ci = teamcolor . fromJust . find (\t -> teamownerId t == ci) . teams - findTeam = find (\t -> name == teamname t) . teams + client = clients IntMap.! clID + room = rooms IntMap.! (roomID client) + noSuchTeam = isNothing findTeam + team = fromJust findTeam + findTeam = find (\t -> teamName == teamname t) $ teams room + anotherTeamClan = teamcolor $ fromJust $ find (\t -> teamownerId t == clID) $ teams room -handleCmd_inRoom ["HH_NUM", teamName, numberStr] = do - cl <- thisClient - others <- roomOthersChans - r <- thisRoom - - let maybeTeam = findTeam r - let team = fromJust maybeTeam - - return $ - if not $ isMaster cl then - [ProtocolError "Not room master"] - else if hhNumber < 1 || hhNumber > 8 || isNothing maybeTeam || hhNumber > (canAddNumber r) + (hhnum team) then - [] - else - [ModifyRoom $ modifyTeam team{hhnum = hhNumber}, - AnswerClients others ["HH_NUM", teamName, B.pack $ show hhNumber]] +handleCmd_inRoom clID clients rooms ["HH_NUM", teamName, numberStr] + | not $ isMaster client = [ProtocolError "Not room master"] + | hhNumber < 1 || hhNumber > 8 || noSuchTeam || hhNumber > (canAddNumber + (hhnum team)) = [] + | otherwise = + [ModifyRoom $ modifyTeam team{hhnum = hhNumber}, + AnswerOthersInRoom ["HH_NUM", teamName, show hhNumber]] where - hhNumber = case B.readInt numberStr of - Just (i, t) | B.null t -> fromIntegral i - otherwise -> 0 - findTeam = find (\t -> teamName == teamname t) . teams - canAddNumber = (-) 48 . sum . map hhnum . teams - + client = clients IntMap.! clID + room = rooms IntMap.! (roomID client) + hhNumber = fromMaybe 0 (maybeRead numberStr :: Maybe Int) + noSuchTeam = isNothing findTeam + team = fromJust findTeam + findTeam = find (\t -> teamName == teamname t) $ teams room + canAddNumber = 48 - (sum . map hhnum $ teams room) -handleCmd_inRoom ["TEAM_COLOR", teamName, newColor] = do - cl <- thisClient - others <- roomOthersChans - r <- thisRoom - - let maybeTeam = findTeam r - let team = fromJust maybeTeam - - return $ - if not $ isMaster cl then - [ProtocolError "Not room master"] - else if isNothing maybeTeam then - [] - else - [ModifyRoom $ modifyTeam team{teamcolor = newColor}, - AnswerClients others ["TEAM_COLOR", teamName, newColor], +handleCmd_inRoom clID clients rooms ["TEAM_COLOR", teamName, newColor] + | not $ isMaster client = [ProtocolError "Not room master"] + | noSuchTeam = [] + | otherwise = [ModifyRoom $ modifyTeam team{teamcolor = newColor}, + AnswerOthersInRoom ["TEAM_COLOR", teamName, newColor], ModifyClient2 (teamownerId team) (\c -> c{clientClan = newColor})] where - findTeam = find (\t -> teamName == teamname t) . teams + noSuchTeam = isNothing findTeam + team = fromJust findTeam + findTeam = find (\t -> teamName == teamname t) $ teams room + client = clients IntMap.! clID + room = rooms IntMap.! (roomID client) -handleCmd_inRoom ["TOGGLE_READY"] = do - cl <- thisClient - chans <- roomClientsChans - return [ - ModifyClient (\c -> c{isReady = not $ isReady cl}), - ModifyRoom (\r -> r{readyPlayers = readyPlayers r + (if isReady cl then -1 else 1)}), - AnswerClients chans [if isReady cl then "NOT_READY" else "READY", nick cl] - ] +handleCmd_inRoom clID clients rooms ["TOGGLE_READY"] = + [ModifyClient (\c -> c{isReady = not $ isReady client}), + ModifyRoom (\r -> r{readyPlayers = readyPlayers r + (if isReady client then -1 else 1)}), + AnswerThisRoom [if isReady client then "NOT_READY" else "READY", nick client]] + where + client = clients IntMap.! clID -handleCmd_inRoom ["START_GAME"] = do - cl <- thisClient - r <- thisRoom - chans <- roomClientsChans - if isMaster cl && (playersIn r == readyPlayers r) && (not $ gameinprogress r) then - if enoughClans r then - return [ - ModifyRoom +handleCmd_inRoom clID clients rooms ["START_GAME"] = + if isMaster client && (playersIn room == readyPlayers room) && (not . gameinprogress) room then + if enoughClans then + [ModifyRoom (\r -> r{ gameinprogress = True, roundMsgs = empty, leftTeams = [], teamsAtStart = teams r} ), - AnswerClients chans ["RUN_GAME"] - ] - else - return [Warning "Less than two clans!"] + AnswerThisRoom ["RUN_GAME"]] else - return [] + [Warning "Less than two clans!"] + else + [] where - enoughClans = not . null . drop 1 . group . map teamcolor . teams + client = clients IntMap.! clID + room = rooms IntMap.! (roomID client) + enoughClans = not $ null $ drop 1 $ group $ map teamcolor $ teams room -handleCmd_inRoom ["EM", msg] = do - cl <- thisClient - r <- thisRoom - chans <- roomOthersChans - - if (teamsInGame cl > 0) && isLegal then - return $ (AnswerClients chans ["EM", msg]) : [ModifyRoom (\r -> r{roundMsgs = roundMsgs r |> msg}) | not isKeepAlive] - else - return [] +handleCmd_inRoom clID clients rooms ["EM", msg] = + if (teamsInGame client > 0) && isLegal then + (AnswerOthersInRoom ["EM", msg]) : [ModifyRoom (\r -> r{roundMsgs = roundMsgs r |> msg}) | not isKeepAlive] + else + [] where + client = clients IntMap.! clID (isLegal, isKeepAlive) = checkNetCmd msg - -handleCmd_inRoom ["ROUNDFINISHED"] = do - cl <- thisClient - r <- thisRoom - chans <- roomClientsChans - - if isMaster cl && (gameinprogress r) then - return $ (ModifyRoom +handleCmd_inRoom clID clients rooms ["ROUNDFINISHED"] = + if isMaster client then + [ModifyRoom (\r -> r{ gameinprogress = False, readyPlayers = 0, roundMsgs = empty, leftTeams = [], teamsAtStart = []} - )) - : UnreadyRoomClients - : answerRemovedTeams chans r - else - return [] + ), + UnreadyRoomClients + ] ++ answerRemovedTeams + else + [] where - answerRemovedTeams chans = map (\t -> AnswerClients chans ["REMOVE_TEAM", t]) . leftTeams - -handleCmd_inRoom ["TOGGLE_RESTRICT_JOINS"] = do - cl <- thisClient - return $ - if not $ isMaster cl then - [ProtocolError "Not room master"] - else - [ModifyRoom (\r -> r{isRestrictedJoins = not $ isRestrictedJoins r})] + client = clients IntMap.! clID + room = rooms IntMap.! (roomID client) + answerRemovedTeams = map (\t -> AnswerThisRoom ["REMOVE_TEAM", t]) $ leftTeams room -handleCmd_inRoom ["TOGGLE_RESTRICT_TEAMS"] = do - cl <- thisClient - return $ - if not $ isMaster cl then - [ProtocolError "Not room master"] - else - [ModifyRoom (\r -> r{isRestrictedTeams = not $ isRestrictedTeams r})] +handleCmd_inRoom clID clients _ ["TOGGLE_RESTRICT_JOINS"] + | isMaster client = [ModifyRoom (\r -> r{isRestrictedJoins = not $ isRestrictedJoins r})] + | otherwise = [ProtocolError "Not room master"] + where + client = clients IntMap.! clID + -{- +handleCmd_inRoom clID clients _ ["TOGGLE_RESTRICT_TEAMS"] + | isMaster client = [ModifyRoom (\r -> r{isRestrictedTeams = not $ isRestrictedTeams r})] + | otherwise = [ProtocolError "Not room master"] + where + client = clients IntMap.! clID + handleCmd_inRoom clID clients rooms ["KICK", kickNick] = [KickRoomClient kickID | isMaster client && not noSuchClient && (kickID /= clID) && (roomID client == roomID kickClient)] where @@ -250,5 +192,5 @@ where client = clients IntMap.! clID engineMsg = toEngineMsg $ 'b' : ((nick client) ++ "(team): " ++ msg ++ "\x20\x20") --} -handleCmd_inRoom _ = return [ProtocolError "Incorrect command (state: in room)"] + +handleCmd_inRoom clID _ _ _ = [ProtocolError "Incorrect command (state: in room)"]
--- a/gameServer/HWProtoLobbyState.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/HWProtoLobbyState.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,102 +1,73 @@ -{-# LANGUAGE OverloadedStrings #-} module HWProtoLobbyState where import qualified Data.Map as Map +import qualified Data.IntMap as IntMap import qualified Data.IntSet as IntSet import qualified Data.Foldable as Foldable import Data.Maybe import Data.List import Data.Word -import Control.Monad.Reader -import qualified Data.ByteString.Char8 as B -------------------------------------- import CoreTypes import Actions import Utils -import HandlerUtils -import RoomsAndClients -{-answerAllTeams protocol teams = concatMap toAnswer teams +answerAllTeams protocol teams = concatMap toAnswer teams where toAnswer team = [AnswerThisClient $ teamToNet protocol team, AnswerThisClient ["TEAM_COLOR", teamname team, teamcolor team], AnswerThisClient ["HH_NUM", teamname team, show $ hhnum team]] --} + handleCmd_lobby :: CmdHandler - -handleCmd_lobby ["LIST"] = do - (ci, irnc) <- ask - let cl = irnc `client` ci - rooms <- allRoomInfos - let roomsInfoList = concatMap (roomInfo irnc) . filter (\r -> (roomProto r == clientProto cl) && not (isRestrictedJoins r)) - return [AnswerClients [sendChan cl] ("ROOMS" : roomsInfoList rooms)] +handleCmd_lobby clID clients rooms ["LIST"] = + [AnswerThisClient ("ROOMS" : roomsInfoList)] where - roomInfo irnc room = [ - showB $ gameinprogress room, + roomsInfoList = concatMap roomInfo sameProtoRooms + sameProtoRooms = filter (\r -> (roomProto r == protocol) && not (isRestrictedJoins r)) roomsList + roomsList = IntMap.elems rooms + protocol = clientProto client + client = clients IntMap.! clID + roomInfo room + | clientProto client < 28 = [ name room, - showB $ playersIn room, - showB $ length $ teams room, - nick $ irnc `client` masterID room, + show (playersIn room) ++ "(" ++ show (length $ teams room) ++ ")", + show $ gameinprogress room + ] + | otherwise = [ + show $ gameinprogress room, + name room, + show $ playersIn room, + show $ length $ teams room, + nick $ clients IntMap.! (masterID room), head (Map.findWithDefault ["+gen+"] "MAP" (params room)), head (Map.findWithDefault ["Default"] "SCHEME" (params room)), head (Map.findWithDefault ["Default"] "AMMO" (params room)) ] - -handleCmd_lobby ["CHAT", msg] = do - n <- clientNick - s <- roomOthersChans - return [AnswerClients s ["CHAT", n, msg]] - -handleCmd_lobby ["CREATE_ROOM", newRoom, roomPassword] - | illegalName newRoom = return [Warning "Illegal room name"] - | otherwise = do - rs <- allRoomInfos - cl <- thisClient - return $ if isJust $ find (\room -> newRoom == name room) rs then - [Warning "Room exists"] - else - [ - AddRoom newRoom roomPassword, - AnswerClients [sendChan cl] ["NOT_READY", nick cl] - ] - - -handleCmd_lobby ["CREATE_ROOM", newRoom] = - handleCmd_lobby ["CREATE_ROOM", newRoom, ""] +handleCmd_lobby clID clients _ ["CHAT", msg] = + [AnswerOthersInRoom ["CHAT", clientNick, msg]] + where + clientNick = nick $ clients IntMap.! clID -handleCmd_lobby ["JOIN_ROOM", roomName, roomPassword] = do - (ci, irnc) <- ask - let ris = allRooms irnc - cl <- thisClient - let maybeRI = find (\ri -> roomName == name (irnc `room` ri)) ris - let jRI = fromJust maybeRI - let jRoom = irnc `room` jRI - let jRoomClients = map (client irnc) $! roomClients irnc jRI -- no lazyness here! - return $ - if isNothing maybeRI then - [Warning "No such rooms"] - else if isRestrictedJoins jRoom then - [Warning "Joining restricted"] - else if roomPassword /= password jRoom then - [Warning "Wrong password"] - else - [ - MoveToRoom jRI, - AnswerClients (map sendChan $ cl : jRoomClients) ["NOT_READY", nick cl] - ] - ++ [ AnswerClients [sendChan cl] $ "JOINED" : map nick jRoomClients | playersIn jRoom /= 0] - ++ (map (readynessMessage cl) jRoomClients) - +handleCmd_lobby clID clients rooms ["CREATE_ROOM", newRoom, roomPassword] + | haveSameRoom = [Warning "Room exists"] + | illegalName newRoom = [Warning "Illegal room name"] + | otherwise = + [RoomRemoveThisClient "", -- leave lobby + AddRoom newRoom roomPassword, + AnswerThisClient ["NOT_READY", clientNick] + ] where - readynessMessage cl c = AnswerClients [sendChan cl] [if isReady c then "READY" else "NOT_READY", nick c] + clientNick = nick $ clients IntMap.! clID + haveSameRoom = isJust $ find (\room -> newRoom == name room) $ IntMap.elems rooms +handleCmd_lobby clID clients rooms ["CREATE_ROOM", newRoom] = + handleCmd_lobby clID clients rooms ["CREATE_ROOM", newRoom, ""] -{- handleCmd_lobby clID clients rooms ["JOIN_ROOM", roomName, roomPassword] | noSuchRoom = [Warning "No such room"] @@ -112,6 +83,12 @@ ++ answerTeams ++ watchRound where + noSuchRoom = isNothing mbRoom + mbRoom = find (\r -> roomName == name r && roomProto r == clientProto client) $ IntMap.elems rooms + jRoom = fromJust mbRoom + rID = roomUID jRoom + client = clients IntMap.! clID + roomClientsIDs = IntSet.elems $ playersIDs jRoom answerNicks = [AnswerThisClient $ "JOINED" : map (\clID -> nick $ clients IntMap.! clID) roomClientsIDs | playersIn jRoom /= 0] @@ -123,9 +100,9 @@ roomClientsIDs toAnswer (paramName, paramStrs) = AnswerThisClient $ "CFG" : paramName : paramStrs - - answerFullConfig = map toAnswer (leftConfigPart ++ rightConfigPart) - (leftConfigPart, rightConfigPart) = partition (\(p, _) -> p /= "MAP") (Map.toList $ params jRoom) + + answerFullConfig = map toAnswer ((Data.List.reverse . Data.List.sort $ leftConfigPart) ++ rightConfigPart) + (leftConfigPart, rightConfigPart) = partition (\(p, _) -> p == "MAP" || p == "MAPGEN" || p == "SCHEME") (Map.toList $ params jRoom) watchRound = if not $ gameinprogress jRoom then [] @@ -137,12 +114,12 @@ answerAllTeams (clientProto client) (teamsAtStart jRoom) else answerAllTeams (clientProto client) (teams jRoom) --} + -handleCmd_lobby ["JOIN_ROOM", roomName] = - handleCmd_lobby ["JOIN_ROOM", roomName, ""] +handleCmd_lobby clID clients rooms ["JOIN_ROOM", roomName] = + handleCmd_lobby clID clients rooms ["JOIN_ROOM", roomName, ""] + -{- handleCmd_lobby clID clients rooms ["FOLLOW", asknick] = if noSuchClient || roomID followClient == 0 then [] @@ -203,7 +180,6 @@ [ClearAccountsCache | isAdministrator client] where client = clients IntMap.! clID --} -handleCmd_lobby _ = return [ProtocolError "Incorrect command (state: in lobby)"] +handleCmd_lobby clID _ _ _ = [ProtocolError "Incorrect command (state: in lobby)"]
--- a/gameServer/HWProtoNEState.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/HWProtoNEState.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,66 +1,54 @@ -{-# LANGUAGE OverloadedStrings #-} module HWProtoNEState where import qualified Data.IntMap as IntMap import Data.Maybe import Data.List import Data.Word -import Control.Monad.Reader -import qualified Data.ByteString.Char8 as B -------------------------------------- import CoreTypes import Actions import Utils -import RoomsAndClients handleCmd_NotEntered :: CmdHandler -handleCmd_NotEntered ["NICK", newNick] = do - (ci, irnc) <- ask - let cl = irnc `client` ci - if not . B.null $ nick cl then return [ProtocolError "Nickname already chosen"] - else - if haveSameNick irnc (nick cl) then return [AnswerClients [sendChan cl] ["WARNING", "Nickname already in use"], ByeClient ""] - else - if illegalName newNick then return [ByeClient "Illegal nickname"] - else - return $ - ModifyClient (\c -> c{nick = newNick}) : - AnswerClients [sendChan cl] ["NICK", newNick] : - [CheckRegistered | clientProto cl /= 0] +handleCmd_NotEntered clID clients _ ["NICK", newNick] + | not . null $ nick client = [ProtocolError "Nickname already chosen"] + | haveSameNick = [AnswerThisClient ["WARNING", "Nickname already in use"], ByeClient ""] + | illegalName newNick = [ByeClient "Illegal nickname"] + | otherwise = + ModifyClient (\c -> c{nick = newNick}) : + AnswerThisClient ["NICK", newNick] : + [CheckRegistered | clientProto client /= 0] where - haveSameNick irnc clNick = isJust $ find (\cl -> newNick == clNick) $ map (client irnc) $ allClients irnc - -handleCmd_NotEntered ["PROTO", protoNum] = do - (ci, irnc) <- ask - let cl = irnc `client` ci - if clientProto cl > 0 then return [ProtocolError "Protocol already known"] - else - if parsedProto == 0 then return [ProtocolError "Bad number"] - else - return $ - ModifyClient (\c -> c{clientProto = parsedProto}) : - AnswerClients [sendChan cl] ["PROTO", B.pack $ show parsedProto] : - [CheckRegistered | not . B.null $ nick cl] - where - parsedProto = case B.readInt protoNum of - Just (i, t) | B.null t -> fromIntegral i - otherwise -> 0 + client = clients IntMap.! clID + haveSameNick = isJust $ find (\cl -> newNick == nick cl) $ IntMap.elems clients -handleCmd_NotEntered ["PASSWORD", passwd] = do - (ci, irnc) <- ask - let cl = irnc `client` ci +handleCmd_NotEntered clID clients _ ["PROTO", protoNum] + | clientProto client > 0 = [ProtocolError "Protocol already known"] + | parsedProto == 0 = [ProtocolError "Bad number"] + | otherwise = + ModifyClient (\c -> c{clientProto = parsedProto}) : + AnswerThisClient ["PROTO", show parsedProto] : + [CheckRegistered | (not . null) (nick client)] + where + client = clients IntMap.! clID + parsedProto = fromMaybe 0 (maybeRead protoNum :: Maybe Word16) - if passwd == webPassword cl then - return $ JoinLobby : [AnswerClients [sendChan cl] ["ADMIN_ACCESS"] | isAdministrator cl] - else - return [ByeClient "Authentication failed"] -{- +handleCmd_NotEntered clID clients _ ["PASSWORD", passwd] = + if passwd == webPassword client then + [ModifyClient (\cl -> cl{logonPassed = True}), + MoveToLobby] ++ adminNotice + else + [ByeClient "Authentication failed"] + where + client = clients IntMap.! clID + adminNotice = [AnswerThisClient ["ADMIN_ACCESS"] | isAdministrator client] + handleCmd_NotEntered clID clients _ ["DUMP"] = if isAdministrator (clients IntMap.! clID) then [Dump] else [] --} + -handleCmd_NotEntered _ = return [ProtocolError "Incorrect command (state: not entered)"] +handleCmd_NotEntered clID _ _ _ = [ProtocolError "Incorrect command (state: not entered)"]
--- a/gameServer/HandlerUtils.hs Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -module HandlerUtils where - -import Control.Monad.Reader -import qualified Data.ByteString.Char8 as B - -import RoomsAndClients -import CoreTypes -import Actions - -thisClient :: Reader (ClientIndex, IRnC) ClientInfo -thisClient = do - (ci, rnc) <- ask - return $ rnc `client` ci - -thisRoom :: Reader (ClientIndex, IRnC) RoomInfo -thisRoom = do - (ci, rnc) <- ask - let ri = clientRoom rnc ci - return $ rnc `room` ri - -clientNick :: Reader (ClientIndex, IRnC) B.ByteString -clientNick = liftM nick thisClient - -roomOthersChans :: Reader (ClientIndex, IRnC) [ClientChan] -roomOthersChans = do - (ci, rnc) <- ask - let ri = clientRoom rnc ci - return $ map (sendChan . client rnc) $ filter (/= ci) (roomClients rnc ri) - -roomClientsChans :: Reader (ClientIndex, IRnC) [ClientChan] -roomClientsChans = do - (ci, rnc) <- ask - let ri = clientRoom rnc ci - return $ map (sendChan . client rnc) (roomClients rnc ri) - -thisClientChans :: Reader (ClientIndex, IRnC) [ClientChan] -thisClientChans = do - (ci, rnc) <- ask - return $ [sendChan (rnc `client` ci)] - -answerClient :: [B.ByteString] -> Reader (ClientIndex, IRnC) [Action] -answerClient msg = thisClientChans >>= return . (: []) . flip AnswerClients msg - -allRoomInfos :: Reader (a, IRnC) [RoomInfo] -allRoomInfos = liftM ((\irnc -> map (room irnc) $ allRooms irnc) . snd) ask
--- a/gameServer/NetRoutines.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/NetRoutines.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,41 +1,46 @@ -{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} module NetRoutines where +import Network import Network.Socket import System.IO +import Control.Concurrent import Control.Concurrent.Chan +import Control.Concurrent.STM import qualified Control.Exception as Exception import Data.Time -import Control.Monad ----------------------------- import CoreTypes +import ClientIO import Utils -import RoomsAndClients -acceptLoop :: Socket -> Chan CoreMessage -> IO () -acceptLoop servSock chan = forever $ do +acceptLoop :: Socket -> Chan CoreMessage -> Int -> IO () +acceptLoop servSock coreChan clientCounter = do Exception.handle (\(_ :: Exception.IOException) -> putStrLn "exception on connect") $ do - (sock, sockAddr) <- Network.Socket.accept servSock + (socket, sockAddr) <- Network.Socket.accept servSock + cHandle <- socketToHandle socket ReadWriteMode + hSetBuffering cHandle LineBuffering clientHost <- sockAddr2String sockAddr currentTime <- getCurrentTime - - sendChan' <- newChan + + sendChan <- newChan let newClient = (ClientInfo - sendChan' - sock + nextID + sendChan + cHandle clientHost currentTime "" "" False 0 - lobbyId + 0 0 False False @@ -44,5 +49,12 @@ undefined ) - writeChan chan $ Accept newClient + writeChan coreChan $ Accept newClient + + forkIO $ clientRecvLoop cHandle coreChan nextID + forkIO $ clientSendLoop cHandle coreChan sendChan nextID return () + + acceptLoop servSock coreChan nextID + where + nextID = clientCounter + 1
--- a/gameServer/OfficialServer/DBInteraction.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/OfficialServer/DBInteraction.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,4 +1,4 @@ -{-# LANGUAGE CPP, ScopedTypeVariables, OverloadedStrings #-} +{-# LANGUAGE CPP, ScopedTypeVariables #-} module OfficialServer.DBInteraction ( startDBConnection @@ -20,7 +20,7 @@ localAddressList = ["127.0.0.1", "0:0:0:0:0:0:0:1", "0:0:0:0:0:ffff:7f00:1"] -fakeDbConnection serverInfo = forever $ do +fakeDbConnection serverInfo = do q <- readChan $ dbQueries serverInfo case q of CheckAccount clUid _ clHost -> do @@ -29,6 +29,8 @@ ClearCache -> return () SendStats {} -> return () + fakeDbConnection serverInfo + #if defined(OFFICIAL_SERVER) pipeDbConnectionLoop queries coreChan hIn hOut accountsCache =
--- a/gameServer/OfficialServer/extdbinterface.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/OfficialServer/extdbinterface.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,4 +1,4 @@ -{-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} module Main where @@ -26,7 +26,7 @@ case q of CheckAccount clUid clNick _ -> do statement <- prepare dbConn dbQueryAccount - execute statement [SqlByteString $ clNick] + execute statement [SqlString $ clNick] passAndRole <- fetchRow statement finish statement let response = @@ -47,7 +47,7 @@ dbConnectionLoop mySQLConnectionInfo = - Control.Exception.handle (\(e :: IOException) -> hPutStrLn stderr $ show e) $ handleSqlError $ + Control.Exception.handle (\(_ :: IOException) -> return ()) $ handleSqlError $ bracket (connectMySQL mySQLConnectionInfo) (disconnect)
--- a/gameServer/Opts.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/Opts.hs Tue Jan 04 12:53:46 2011 +0100 @@ -3,12 +3,10 @@ getOpts, ) where -import System.Environment +import System.Environment ( getArgs ) import System.Console.GetOpt import Network import Data.Maybe ( fromMaybe ) -import qualified Data.ByteString.Char8 as B - import CoreTypes import Utils @@ -32,9 +30,9 @@ where readDedicated = fromMaybe True (maybeRead str :: Maybe Bool) -readDbLogin str opts = opts{dbLogin = B.pack str} -readDbPassword str opts = opts{dbPassword = B.pack str} -readDbHost str opts = opts{dbHost = B.pack str} +readDbLogin str opts = opts{dbLogin = str} +readDbPassword str opts = opts{dbPassword = str} +readDbHost str opts = opts{dbHost = str} getOpts :: ServerInfo -> IO ServerInfo getOpts opts = do
--- a/gameServer/RoomsAndClients.hs Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -module RoomsAndClients( - RoomIndex(), - ClientIndex(), - MRoomsAndClients(), - IRoomsAndClients(), - newRoomsAndClients, - addRoom, - addClient, - removeRoom, - removeClient, - modifyRoom, - modifyClient, - lobbyId, - moveClientToLobby, - moveClientToRoom, - clientRoomM, - clientExists, - client, - room, - client'sM, - room'sM, - allClientsM, - clientsM, - roomClientsM, - roomClientsIndicesM, - withRoomsAndClients, - allRooms, - allClients, - clientRoom, - showRooms, - roomClients - ) where - - -import Store -import Control.Monad - - -data Room r = Room { - roomClients' :: [ClientIndex], - room' :: r - } - - -data Client c = Client { - clientRoom' :: RoomIndex, - client' :: c - } - - -newtype RoomIndex = RoomIndex ElemIndex - deriving (Eq) -newtype ClientIndex = ClientIndex ElemIndex - deriving (Eq, Show, Read, Ord) - -instance Show RoomIndex where - show (RoomIndex i) = 'r' : show i - -unRoomIndex :: RoomIndex -> ElemIndex -unRoomIndex (RoomIndex r) = r - -unClientIndex :: ClientIndex -> ElemIndex -unClientIndex (ClientIndex c) = c - - -newtype MRoomsAndClients r c = MRoomsAndClients (MStore (Room r), MStore (Client c)) -newtype IRoomsAndClients r c = IRoomsAndClients (IStore (Room r), IStore (Client c)) - - -lobbyId :: RoomIndex -lobbyId = RoomIndex firstIndex - - -newRoomsAndClients :: r -> IO (MRoomsAndClients r c) -newRoomsAndClients r = do - rooms <- newStore - clients <- newStore - let rnc = MRoomsAndClients (rooms, clients) - ri <- addRoom rnc r - when (ri /= lobbyId) $ error "Empty struct inserts not at firstIndex index" - return rnc - - -roomAddClient :: ClientIndex -> Room r -> Room r -roomAddClient cl room = let cls = cl : roomClients' room; nr = room{roomClients' = cls} in cls `seq` nr `seq` nr - -roomRemoveClient :: ClientIndex -> Room r -> Room r -roomRemoveClient cl room = let cls = filter (/= cl) $ roomClients' room; nr = room{roomClients' = cls} in cls `seq` nr `seq` nr - - -addRoom :: MRoomsAndClients r c -> r -> IO RoomIndex -addRoom (MRoomsAndClients (rooms, _)) room = do - i <- addElem rooms (Room [] room) - return $ RoomIndex i - - -addClient :: MRoomsAndClients r c -> c -> IO ClientIndex -addClient (MRoomsAndClients (rooms, clients)) client = do - i <- addElem clients (Client lobbyId client) - modifyElem rooms (roomAddClient (ClientIndex i)) (unRoomIndex lobbyId) - return $ ClientIndex i - -removeRoom :: MRoomsAndClients r c -> RoomIndex -> IO () -removeRoom rnc@(MRoomsAndClients (rooms, _)) room@(RoomIndex ri) - | room == lobbyId = error "Cannot delete lobby" - | otherwise = do - clIds <- liftM roomClients' $ readElem rooms ri - forM_ clIds (moveClientToLobby rnc) - removeElem rooms ri - - -removeClient :: MRoomsAndClients r c -> ClientIndex -> IO () -removeClient (MRoomsAndClients (rooms, clients)) cl@(ClientIndex ci) = do - RoomIndex ri <- liftM clientRoom' $ readElem clients ci - modifyElem rooms (roomRemoveClient cl) ri - removeElem clients ci - - -modifyRoom :: MRoomsAndClients r c -> (r -> r) -> RoomIndex -> IO () -modifyRoom (MRoomsAndClients (rooms, _)) f (RoomIndex ri) = modifyElem rooms (\r -> r{room' = f $ room' r}) ri - -modifyClient :: MRoomsAndClients r c -> (c -> c) -> ClientIndex -> IO () -modifyClient (MRoomsAndClients (_, clients)) f (ClientIndex ci) = modifyElem clients (\c -> c{client' = f $ client' c}) ci - -moveClientInRooms :: MRoomsAndClients r c -> RoomIndex -> RoomIndex -> ClientIndex -> IO () -moveClientInRooms (MRoomsAndClients (rooms, clients)) (RoomIndex riFrom) rt@(RoomIndex riTo) cl@(ClientIndex ci) = do - modifyElem rooms (roomRemoveClient cl) riFrom - modifyElem rooms (roomAddClient cl) riTo - modifyElem clients (\c -> c{clientRoom' = rt}) ci - - -moveClientToLobby :: MRoomsAndClients r c -> ClientIndex -> IO () -moveClientToLobby rnc ci = do - room <- clientRoomM rnc ci - moveClientInRooms rnc room lobbyId ci - - -moveClientToRoom :: MRoomsAndClients r c -> RoomIndex -> ClientIndex -> IO () -moveClientToRoom rnc ri ci = moveClientInRooms rnc lobbyId ri ci - - -clientExists :: MRoomsAndClients r c -> ClientIndex -> IO Bool -clientExists (MRoomsAndClients (_, clients)) (ClientIndex ci) = elemExists clients ci - -clientRoomM :: MRoomsAndClients r c -> ClientIndex -> IO RoomIndex -clientRoomM (MRoomsAndClients (_, clients)) (ClientIndex ci) = liftM clientRoom' (clients `readElem` ci) - -client'sM :: MRoomsAndClients r c -> (c -> a) -> ClientIndex -> IO a -client'sM (MRoomsAndClients (_, clients)) f (ClientIndex ci) = liftM (f . client') (clients `readElem` ci) - -room'sM :: MRoomsAndClients r c -> (r -> a) -> RoomIndex -> IO a -room'sM (MRoomsAndClients (rooms, _)) f (RoomIndex ri) = liftM (f . room') (rooms `readElem` ri) - -allClientsM :: MRoomsAndClients r c -> IO [ClientIndex] -allClientsM (MRoomsAndClients (_, clients)) = liftM (map ClientIndex) $ indicesM clients - -clientsM :: MRoomsAndClients r c -> IO [c] -clientsM (MRoomsAndClients (_, clients)) = indicesM clients >>= mapM (\ci -> liftM client' $ readElem clients ci) - -roomClientsIndicesM :: MRoomsAndClients r c -> RoomIndex -> IO [ClientIndex] -roomClientsIndicesM (MRoomsAndClients (rooms, clients)) (RoomIndex ri) = liftM roomClients' (rooms `readElem` ri) - -roomClientsM :: MRoomsAndClients r c -> RoomIndex -> IO [c] -roomClientsM (MRoomsAndClients (rooms, clients)) (RoomIndex ri) = liftM roomClients' (rooms `readElem` ri) >>= mapM (\(ClientIndex ci) -> liftM client' $ readElem clients ci) - -withRoomsAndClients :: MRoomsAndClients r c -> (IRoomsAndClients r c -> a) -> IO a -withRoomsAndClients (MRoomsAndClients (rooms, clients)) f = - withIStore2 rooms clients (\r c -> f $ IRoomsAndClients (r, c)) - ----------------------------------------- ------------ IRoomsAndClients ----------- - -showRooms :: (Show r, Show c) => IRoomsAndClients r c -> String -showRooms rnc@(IRoomsAndClients (rooms, clients)) = concatMap showRoom (allRooms rnc) - where - showRoom r = unlines $ ((show r) ++ ": " ++ (show $ room' $ rooms ! (unRoomIndex r))) : (map showClient (roomClients' $ rooms ! (unRoomIndex r))) - showClient c = " " ++ (show c) ++ ": " ++ (show $ client' $ clients ! (unClientIndex c)) - - -allRooms :: IRoomsAndClients r c -> [RoomIndex] -allRooms (IRoomsAndClients (rooms, _)) = map RoomIndex $ indices rooms - -allClients :: IRoomsAndClients r c -> [ClientIndex] -allClients (IRoomsAndClients (_, clients)) = map ClientIndex $ indices clients - -clientRoom :: IRoomsAndClients r c -> ClientIndex -> RoomIndex -clientRoom (IRoomsAndClients (_, clients)) (ClientIndex ci) = clientRoom' (clients ! ci) - -client :: IRoomsAndClients r c -> ClientIndex -> c -client (IRoomsAndClients (_, clients)) (ClientIndex ci) = client' (clients ! ci) - -room :: IRoomsAndClients r c -> RoomIndex -> r -room (IRoomsAndClients (rooms, _)) (RoomIndex ri) = room' (rooms ! ri) - -roomClients :: IRoomsAndClients r c -> RoomIndex -> [ClientIndex] -roomClients (IRoomsAndClients (rooms, _)) (RoomIndex ri) = roomClients' $ (rooms ! ri)
--- a/gameServer/ServerCore.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/ServerCore.hs Tue Jan 04 12:53:46 2011 +0100 @@ -2,75 +2,69 @@ import Network import Control.Concurrent +import Control.Concurrent.STM import Control.Concurrent.Chan import Control.Monad import qualified Data.IntMap as IntMap import System.Log.Logger -import Control.Monad.Reader -import Control.Monad.State.Strict -import Data.Set as Set -import qualified Data.ByteString.Char8 as B -------------------------------------- import CoreTypes import NetRoutines +import Utils import HWProtoCore import Actions import OfficialServer.DBInteraction -import ServerState - - -timerLoop :: Int -> Chan CoreMessage -> IO () -timerLoop tick messagesChan = threadDelay (30 * 10^6) >> writeChan messagesChan (TimerAction tick) >> timerLoop (tick + 1) messagesChan -reactCmd :: [B.ByteString] -> StateT ServerState IO () -reactCmd cmd = do - (Just ci) <- gets clientIndex - rnc <- gets roomsClients - actions <- liftIO $ withRoomsAndClients rnc (\irnc -> runReader (handleCmd cmd) (ci, irnc)) - forM_ actions processAction +timerLoop :: Int -> Chan CoreMessage -> IO() +timerLoop tick messagesChan = threadDelay (30 * 10^6) >> writeChan messagesChan (TimerAction tick) >> timerLoop (tick + 1) messagesChan + +firstAway (_, a, b, c) = (a, b, c) + +reactCmd :: ServerInfo -> Int -> [String] -> Clients -> Rooms -> IO (ServerInfo, Clients, Rooms) +reactCmd serverInfo clID cmd clients rooms = + liftM firstAway $ foldM processAction (clID, serverInfo, clients, rooms) $ handleCmd clID clients rooms cmd -mainLoop :: StateT ServerState IO () -mainLoop = forever $ do - get >>= \s -> put $! s - - si <- gets serverInfo - r <- liftIO $ readChan $ coreChan si - - case r of - Accept ci -> processAction (AddClient ci) - - ClientMessage (ci, cmd) -> do - liftIO $ debugM "Clients" $ (show ci) ++ ": " ++ (show cmd) +mainLoop :: ServerInfo -> Clients -> Rooms -> IO () +mainLoop serverInfo clients rooms = do + r <- readChan $ coreChan serverInfo + + (newServerInfo, mClients, mRooms) <- + case r of + Accept ci -> + liftM firstAway $ processAction + (clientUID ci, serverInfo, clients, rooms) (AddClient ci) - removed <- gets removedClients - when (not $ ci `Set.member` removed) $ do - as <- get - put $! as{clientIndex = Just ci} - reactCmd cmd - - Remove ci -> do - liftIO $ debugM "Clients" $ "DeleteClient: " ++ show ci - processAction (DeleteClient ci) + ClientMessage (clID, cmd) -> do + debugM "Clients" $ (show clID) ++ ": " ++ (show cmd) + if clID `IntMap.member` clients then + reactCmd serverInfo clID cmd clients rooms + else + do + debugM "Clients" "Message from dead client" + return (serverInfo, clients, rooms) - --else - --do - --debugM "Clients" "Message from dead client" - --return (serverInfo, rnc) + ClientAccountInfo (clID, info) -> + if clID `IntMap.member` clients then + liftM firstAway $ processAction + (clID, serverInfo, clients, rooms) + (ProcessAccountInfo info) + else + do + debugM "Clients" "Got info for dead client" + return (serverInfo, clients, rooms) - ClientAccountInfo (ci, info) -> do - rnc <- gets roomsClients - exists <- liftIO $ clientExists rnc ci - when (exists) $ do - as <- get - put $! as{clientIndex = Just ci} - processAction (ProcessAccountInfo info) - return () + TimerAction tick -> + liftM firstAway $ + foldM processAction (0, serverInfo, clients, rooms) $ + PingAll : [StatsAction | even tick] + - TimerAction tick -> - mapM_ processAction $ - PingAll : [StatsAction | even tick] + {- let hadRooms = (not $ null rooms) && (null mrooms) + in unless ((not $ isDedicated serverInfo) && ((null clientsIn) || hadRooms)) $ + mainLoop serverInfo acceptChan messagesChan clientsIn mrooms -} + mainLoop newServerInfo mClients mRooms startServer :: ServerInfo -> Socket -> IO () startServer serverInfo serverSocket = do @@ -80,15 +74,14 @@ acceptLoop serverSocket (coreChan serverInfo) + 0 return () - - --forkIO $ timerLoop 0 $ coreChan serverInfo + + forkIO $ timerLoop 0 $ coreChan serverInfo startDBConnection serverInfo - rnc <- newRoomsAndClients newRoom + forkIO $ mainLoop serverInfo IntMap.empty (IntMap.singleton 0 newRoom) - forkIO $ evalStateT mainLoop (ServerState Nothing serverInfo Set.empty rnc) - - forever $ threadDelay (60 * 60 * 10^6) + forever $ threadDelay (60 * 60 * 10^6) >> putStrLn "***" \ No newline at end of file
--- a/gameServer/ServerState.hs Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -module ServerState - ( - module RoomsAndClients, - clientRoomA, - ServerState(..), - client's, - allClientsS, - roomClientsS - ) where - -import Control.Monad.State.Strict -import Data.Set as Set ----------------------- -import RoomsAndClients -import CoreTypes - -data ServerState = ServerState { - clientIndex :: !(Maybe ClientIndex), - serverInfo :: !ServerInfo, - removedClients :: !(Set.Set ClientIndex), - roomsClients :: !MRnC - } - - -clientRoomA :: StateT ServerState IO RoomIndex -clientRoomA = do - (Just ci) <- gets clientIndex - rnc <- gets roomsClients - liftIO $ clientRoomM rnc ci - -client's :: (ClientInfo -> a) -> StateT ServerState IO a -client's f = do - (Just ci) <- gets clientIndex - rnc <- gets roomsClients - liftIO $ client'sM rnc f ci - -allClientsS :: StateT ServerState IO [ClientInfo] -allClientsS = gets roomsClients >>= liftIO . clientsM - -roomClientsS :: RoomIndex -> StateT ServerState IO [ClientInfo] -roomClientsS ri = do - rnc <- gets roomsClients - liftIO $ roomClientsM rnc ri
--- a/gameServer/Store.hs Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -module Store( - ElemIndex(), - MStore(), - IStore(), - newStore, - addElem, - removeElem, - readElem, - writeElem, - modifyElem, - elemExists, - firstIndex, - indicesM, - withIStore, - withIStore2, - (!), - indices - ) where - -import qualified Data.Array.IArray as IA -import qualified Data.Array.IO as IOA -import qualified Data.IntSet as IntSet -import Data.IORef -import Control.Monad - - -newtype ElemIndex = ElemIndex Int - deriving (Eq, Show, Read, Ord) -newtype MStore e = MStore (IORef (IntSet.IntSet, IntSet.IntSet, IOA.IOArray Int e)) -newtype IStore e = IStore (IntSet.IntSet, IA.Array Int e) - - -firstIndex :: ElemIndex -firstIndex = ElemIndex 0 - --- MStore code -initialSize :: Int -initialSize = 10 - - -growFunc :: Int -> Int -growFunc a = a * 3 `div` 2 - - -newStore :: IO (MStore e) -newStore = do - newar <- IOA.newArray_ (0, initialSize - 1) - new <- newIORef (IntSet.empty, IntSet.fromAscList [0..initialSize - 1], newar) - return (MStore new) - - -growStore :: MStore e -> IO () -growStore (MStore ref) = do - (busyElems, freeElems, arr) <- readIORef ref - (_, m') <- IOA.getBounds arr - let newM' = growFunc (m' + 1) - 1 - newArr <- IOA.newArray_ (0, newM') - sequence_ [IOA.readArray arr i >>= IOA.writeArray newArr i | i <- [0..m']] - writeIORef ref (busyElems, freeElems `IntSet.union` (IntSet.fromAscList [m'+1..newM']), newArr) - - -growIfNeeded :: MStore e -> IO () -growIfNeeded m@(MStore ref) = do - (_, freeElems, _) <- readIORef ref - when (IntSet.null freeElems) $ growStore m - - -addElem :: MStore e -> e -> IO ElemIndex -addElem m@(MStore ref) element = do - growIfNeeded m - (busyElems, freeElems, arr) <- readIORef ref - let (n, freeElems') = IntSet.deleteFindMin freeElems - IOA.writeArray arr n element - writeIORef ref (IntSet.insert n busyElems, freeElems', arr) - return $ ElemIndex n - - -removeElem :: MStore e -> ElemIndex -> IO () -removeElem (MStore ref) (ElemIndex n) = do - (busyElems, freeElems, arr) <- readIORef ref - IOA.writeArray arr n (error $ "Store: no element " ++ show n) - writeIORef ref (IntSet.delete n busyElems, IntSet.insert n freeElems, arr) - - -readElem :: MStore e -> ElemIndex -> IO e -readElem (MStore ref) (ElemIndex n) = readIORef ref >>= \(_, _, arr) -> IOA.readArray arr n - - -writeElem :: MStore e -> ElemIndex -> e -> IO () -writeElem (MStore ref) (ElemIndex n) el = readIORef ref >>= \(_, _, arr) -> IOA.writeArray arr n el - - -modifyElem :: MStore e -> (e -> e) -> ElemIndex -> IO () -modifyElem (MStore ref) f (ElemIndex n) = do - (_, _, arr) <- readIORef ref - IOA.readArray arr n >>= IOA.writeArray arr n . f - -elemExists :: MStore e -> ElemIndex -> IO Bool -elemExists (MStore ref) (ElemIndex n) = do - (_, free, _) <- readIORef ref - return $ n `IntSet.notMember` free - -indicesM :: MStore e -> IO [ElemIndex] -indicesM (MStore ref) = do - (busy, _, _) <- readIORef ref - return $ map ElemIndex $ IntSet.toList busy - - --- A way to see MStore elements in pure code via IStore -m2i :: MStore e -> IO (IStore e) -m2i (MStore ref) = do - (a, _, c') <- readIORef ref - c <- IOA.unsafeFreeze c' - return $ IStore (a, c) - -i2m :: (MStore e) -> IStore e -> IO () -i2m (MStore ref) (IStore (_, arr)) = do - (b, e, _) <- readIORef ref - a <- IOA.unsafeThaw arr - writeIORef ref (b, e, a) - -withIStore :: MStore e -> (IStore e -> a) -> IO a -withIStore m f = do - i <- m2i m - let res = f i - res `seq` i2m m i - return res - - -withIStore2 :: MStore e1 -> MStore e2 -> (IStore e1 -> IStore e2 -> a) -> IO a -withIStore2 m1 m2 f = do - i1 <- m2i m1 - i2 <- m2i m2 - let res = f i1 i2 - res `seq` i2m m1 i1 - i2m m2 i2 - return res - - --- IStore code -(!) :: IStore e -> ElemIndex -> e -(!) (IStore (_, arr)) (ElemIndex i) = (IA.!) arr i - -indices :: IStore e -> [ElemIndex] -indices (IStore (busy, _)) = map ElemIndex $ IntSet.toList busy
--- a/gameServer/Utils.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/Utils.hs Tue Jan 04 12:53:46 2011 +0100 @@ -1,4 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} module Utils where import Control.Concurrent @@ -17,34 +16,37 @@ import Data.Maybe ------------------------------------------------- import qualified Codec.Binary.Base64 as Base64 -import qualified Data.ByteString.Char8 as B -import qualified Data.ByteString as BW +import qualified Data.ByteString.UTF8 as BUTF8 +import qualified Data.ByteString as B import CoreTypes -sockAddr2String :: SockAddr -> IO B.ByteString -sockAddr2String (SockAddrInet _ hostAddr) = liftM B.pack $ inet_ntoa hostAddr +sockAddr2String :: SockAddr -> IO String +sockAddr2String (SockAddrInet _ hostAddr) = inet_ntoa hostAddr sockAddr2String (SockAddrInet6 _ _ (a, b, c, d) _) = - return $ B.pack $ (foldr1 (.) + return $ (foldr1 (.) $ List.intersperse (\a -> ':':a) $ concatMap (\n -> (\(a, b) -> [showHex a, showHex b]) $ divMod n 65536) [a, b, c, d]) [] -toEngineMsg :: B.ByteString -> B.ByteString -toEngineMsg msg = B.pack $ Base64.encode (fromIntegral (BW.length msg) : (BW.unpack msg)) +toEngineMsg :: String -> String +toEngineMsg msg = Base64.encode (fromIntegral (B.length encodedMsg) : (B.unpack encodedMsg)) + where + encodedMsg = BUTF8.fromString msg -fromEngineMsg :: B.ByteString -> Maybe B.ByteString -fromEngineMsg msg = Base64.decode (B.unpack msg) >>= removeLength >>= return . BW.pack +fromEngineMsg :: String -> Maybe String +fromEngineMsg msg = liftM (map w2c) (Base64.decode msg >>= removeLength) where removeLength (x:xs) = if length xs == fromIntegral x then Just xs else Nothing removeLength _ = Nothing -checkNetCmd :: B.ByteString -> (Bool, Bool) -checkNetCmd = check . liftM B.unpack . fromEngineMsg +checkNetCmd :: String -> (Bool, Bool) +checkNetCmd msg = check decoded where + decoded = fromEngineMsg msg check Nothing = (False, False) check (Just (m:ms)) = (m `Set.member` legalMessages, m == '+') check _ = (False, False) - legalMessages = Set.fromList $ "M#+LlRrUuDdZzAaSjJ,sFNpPwtghb12345" ++ slotMessages + legalMessages = Set.fromList $ "M#+LlRrUuDdZzAaSjJ,sFNpPwtghbc12345" ++ slotMessages slotMessages = "\128\129\130\131\132\133\134\135\136\137\138" maybeRead :: Read a => String -> Maybe a @@ -52,17 +54,29 @@ [(x, rest)] | all isSpace rest -> Just x _ -> Nothing -teamToNet :: TeamInfo -> [B.ByteString] -teamToNet team = - "ADD_TEAM" - : teamname team - : teamgrave team - : teamfort team - : teamvoicepack team - : teamflag team - : teamowner team - : (B.pack $ show $ difficulty team) - : hhsInfo +teamToNet :: Word16 -> TeamInfo -> [String] +teamToNet protocol team + | protocol < 30 = [ + "ADD_TEAM", + teamname team, + teamgrave team, + teamfort team, + teamvoicepack team, + teamowner team, + show $ difficulty team + ] + ++ hhsInfo + | otherwise = [ + "ADD_TEAM", + teamname team, + teamgrave team, + teamfort team, + teamvoicepack team, + teamflag team, + teamowner team, + show $ difficulty team + ] + ++ hhsInfo where hhsInfo = concatMap (\(HedgehogInfo name hat) -> [name, hat]) $ hedgehogs team @@ -76,10 +90,10 @@ else t : replaceTeam team teams -illegalName :: B.ByteString -> Bool -illegalName = all isSpace . B.unpack +illegalName :: String -> Bool +illegalName = all isSpace -protoNumber2ver :: Word16 -> B.ByteString +protoNumber2ver :: Word16 -> String protoNumber2ver 17 = "0.9.7-dev" protoNumber2ver 19 = "0.9.7" protoNumber2ver 20 = "0.9.8-dev" @@ -98,20 +112,12 @@ protoNumber2ver 33 = "0.9.14" protoNumber2ver 34 = "0.9.15-dev" protoNumber2ver 35 = "0.9.14.1" -protoNumber2ver _ = "Unknown" +protoNumber2ver 37 = "0.9.15" +protoNumber2ver 38 = "0.9.16-dev" +protoNumber2ver w = show w askFromConsole :: String -> IO String askFromConsole msg = do putStr msg hFlush stdout getLine - - -unfoldrE :: (b -> Either b (a, b)) -> b -> ([a], b) -unfoldrE f b = - case f b of - Right (a, new_b) -> let (a', b') = unfoldrE f new_b in (a : a', b') - Left new_b -> ([], new_b) - -showB :: Show a => a -> B.ByteString -showB = B.pack .show
--- a/gameServer/hedgewars-server.cabal Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -Name: hedgewars-server -Version: 0.1 -Synopsis: hedgewars server -Description: hedgewars server -Homepage: http://www.hedgewars.org/ -License: GPL-2 -Author: unC0Rr -Maintainer: unC0Rr@hedgewars.org -Category: Game -Build-type: Simple -Cabal-version: >=1.2 - - -Executable hedgewars-server - main-is: hedgewars-server.hs - - Build-depends: - base >= 4, - unix, - containers, - array, - bytestring, - network-bytestring, - network, - time, - stm, - mtl, - dataenc, - hslogger, - process - - ghc-options: -O2 \ No newline at end of file
--- a/gameServer/hedgewars-server.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/hedgewars-server.hs Tue Jan 04 12:53:46 2011 +0100 @@ -2,15 +2,23 @@ module Main where -import Network +import Network.Socket +import qualified Network +import Network.BSD import Control.Concurrent.STM import Control.Concurrent.Chan +#if defined(NEW_EXCEPTIONS) +import qualified Control.OldException as Exception +#else import qualified Control.Exception as Exception +#endif import System.Log.Logger ----------------------------------- import Opts import CoreTypes +import OfficialServer.DBInteraction import ServerCore +import Utils #if !defined(mingw32_HOST_OS) @@ -18,12 +26,10 @@ #endif -setupLoggers :: IO () setupLoggers = updateGlobalLogger "Clients" (setLevel INFO) -main :: IO () main = withSocketsDo $ do #if !defined(mingw32_HOST_OS) installHandler sigPIPE Ignore Nothing; @@ -32,11 +38,11 @@ setupLoggers - stats' <- atomically $ newTMVar (StatisticsInfo 0 0) + stats <- atomically $ newTMVar (StatisticsInfo 0 0) dbQueriesChan <- newChan - coreChan' <- newChan - serverInfo' <- getOpts $ newServerInfo stats' coreChan' dbQueriesChan - + coreChan <- newChan + serverInfo' <- getOpts $ newServerInfo stats coreChan dbQueriesChan + #if defined(OFFICIAL_SERVER) dbHost' <- askFromConsole "DB host: " dbLogin' <- askFromConsole "login: " @@ -46,7 +52,14 @@ let serverInfo = serverInfo' #endif + + proto <- getProtocolNumber "tcp" Exception.bracket - (Network.listenOn $ Network.PortNumber $ listenPort serverInfo) + (socket AF_INET Stream proto) sClose - (startServer serverInfo) + (\sock -> do + setSocketOption sock ReuseAddr 1 + bindSocket sock (SockAddrInet (listenPort serverInfo) iNADDR_ANY) + listen sock maxListenQueue + startServer serverInfo sock + )
--- a/gameServer/stresstest.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/stresstest.hs Tue Jan 04 12:53:46 2011 +0100 @@ -6,7 +6,7 @@ import System.IO import Control.Concurrent import Network -import Control.OldException +import Control.Exception import Control.Monad import System.Random @@ -14,24 +14,24 @@ import System.Posix #endif -session1 nick room = ["NICK", nick, "", "PROTO", "32", "", "PING", "", "CHAT", "lobby 1", "", "CREATE_ROOM", room, "", "CHAT", "room 1", "", "QUIT", "creator", ""] -session2 nick room = ["NICK", nick, "", "PROTO", "32", "", "LIST", "", "JOIN_ROOM", room, "", "CHAT", "room 2", "", "PART", "", "CHAT", "lobby after part", "", "QUIT", "part-quit", ""] -session3 nick room = ["NICK", nick, "", "PROTO", "32", "", "LIST", "", "JOIN_ROON", room, "", "CHAT", "room 2", "", "QUIT", "quit", ""] +session1 nick room = ["NICK", nick, "", "PROTO", "24", "", "CHAT", "lobby 1", "", "CREATE", room, "", "CHAT", "room 1", "", "QUIT", "bye-bye", ""] +session2 nick room = ["NICK", nick, "", "PROTO", "24", "", "LIST", "", "JOIN", room, "", "CHAT", "room 2", "", "PART", "", "CHAT", "lobby after part", "", "QUIT", "bye-bye", ""] +session3 nick room = ["NICK", nick, "", "PROTO", "24", "", "LIST", "", "JOIN", room, "", "CHAT", "room 2", "", "QUIT", "bye-bye", ""] emulateSession sock s = do - mapM_ (\x -> hPutStrLn sock x >> hFlush sock >> randomRIO (30000::Int, 59000) >>= threadDelay) s + mapM_ (\x -> hPutStrLn sock x >> hFlush sock >> randomRIO (50000::Int, 90000) >>= threadDelay) s hFlush sock threadDelay 225000 -testing = Control.OldException.handle print $ do +testing = Control.Exception.handle print $ do putStrLn "Start" sock <- connectTo "127.0.0.1" (PortNumber 46631) num1 <- randomRIO (70000::Int, 70100) num2 <- randomRIO (0::Int, 2) num3 <- randomRIO (0::Int, 5) - let nick1 = 'n' : show num1 - let room1 = 'r' : show num2 + let nick1 = show num1 + let room1 = show num2 case num2 of 0 -> emulateSession sock $ session1 nick1 room1 1 -> emulateSession sock $ session2 nick1 room1 @@ -40,7 +40,7 @@ putStrLn "Finish" forks = forever $ do - delay <- randomRIO (30000::Int, 59000) + delay <- randomRIO (10000::Int, 19000) threadDelay delay forkIO testing
--- a/gameServer/stresstest2.hs Mon Dec 27 23:57:44 2010 +0100 +++ b/gameServer/stresstest2.hs Tue Jan 04 12:53:46 2011 +0100 @@ -6,7 +6,7 @@ import System.IO import Control.Concurrent import Network -import Control.OldException +import Control.Exception import Control.Monad import System.Random @@ -14,28 +14,22 @@ import System.Posix #endif -session1 nick room = ["NICK", nick, "", "PROTO", "32", ""] - - - -testing = Control.OldException.handle print $ do - putStrLn "Start" +testing = Control.Exception.handle print $ do + delay <- randomRIO (100::Int, 300) + threadDelay delay sock <- connectTo "127.0.0.1" (PortNumber 46631) + hClose sock - num1 <- randomRIO (70000::Int, 70100) - num2 <- randomRIO (0::Int, 2) - num3 <- randomRIO (0::Int, 5) - let nick1 = 'n' : show num1 - let room1 = 'r' : show num2 - mapM_ (\x -> hPutStrLn sock x >> hFlush sock >> randomRIO (300::Int, 590) >>= threadDelay) $ session1 nick1 room1 - mapM_ (\x -> hPutStrLn sock x >> hFlush sock) $ concatMap (\x -> ["CHAT_MSG", show x, ""]) [1..] - hClose sock - putStrLn "Finish" - -forks = testing +forks i = do + delay <- randomRIO (50::Int, 190) + if i `mod` 10 == 0 then putStr (show i) else putStr "." + hFlush stdout + threadDelay delay + forkIO testing + forks (i + 1) main = withSocketsDo $ do #if !defined(mingw32_HOST_OS) installHandler sigPIPE Ignore Nothing; #endif - forks + forks 1
--- a/gameServer/stresstest3.hs Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -{-# LANGUAGE CPP #-} - -module Main where - -import IO -import System.IO -import Control.Concurrent -import Network -import Control.OldException -import Control.Monad -import System.Random -import Control.Monad.State -import Data.List - -#if !defined(mingw32_HOST_OS) -import System.Posix -#endif - -type SState = Handle -io = liftIO - -readPacket :: StateT SState IO [String] -readPacket = do - h <- get - p <- io $ hGetPacket h [] - return p - where - hGetPacket h buf = do - l <- hGetLine h - if (not $ null l) then hGetPacket h (buf ++ [l]) else return buf - -waitPacket :: String -> StateT SState IO Bool -waitPacket s = do - p <- readPacket - return $ head p == s - -sendPacket :: [String] -> StateT SState IO () -sendPacket s = do - h <- get - io $ do - mapM_ (hPutStrLn h) s - hPutStrLn h "" - hFlush h - -emulateSession :: StateT SState IO () -emulateSession = do - n <- io $ randomRIO (100000::Int, 100100) - waitPacket "CONNECTED" - sendPacket ["NICK", "test" ++ (show n)] - waitPacket "NICK" - sendPacket ["PROTO", "31"] - waitPacket "PROTO" - b <- waitPacket "LOBBY:JOINED" - --io $ print b - sendPacket ["QUIT", "BYE"] - return () - -testing = Control.OldException.handle print $ do - putStr "+" - sock <- connectTo "127.0.0.1" (PortNumber 46631) - evalStateT emulateSession sock - --hClose sock - putStr "-" - hFlush stdout - -forks = forM_ [1..100] $ const $ do - delay <- randomRIO (10000::Int, 30000) - threadDelay delay - forkIO testing - -main = withSocketsDo $ do -#if !defined(mingw32_HOST_OS) - installHandler sigPIPE Ignore Nothing; -#endif - forks
--- a/hedgewars/CCHandlers.inc Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,849 +0,0 @@ -(* -* Hedgewars, a free turn based strategy game -* Copyright (c) 2004-2010 Andrey Korotaev <unC0Rr@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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -*) - -function CheckNoTeamOrHH: boolean; -var bRes: boolean; -begin -bRes:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil); -{$IFDEF DEBUGFILE} -if bRes then -if CurrentTeam = nil then AddFileLog('CONSOLE: CurTeam = nil') - else AddFileLog('CONSOLE: CurTeam <> nil, Gear = nil'); -{$ENDIF} -CheckNoTeamOrHH:= bRes; -end; -//////////////////////////////////////////////////////////////////////////////// -procedure chQuit(var s: shortstring); -const prevGState: TGameState = gsConfirm; -begin -s:= s; // avoid compiler hint -if GameState <> gsConfirm then - begin - prevGState:= GameState; - GameState:= gsConfirm - end else - GameState:= prevGState -end; - -procedure chConfirm(var s: shortstring); -begin -s:= s; // avoid compiler hint -if GameState = gsConfirm then - begin - SendIPC('Q'); - GameState:= gsExit - end -else - begin - GameState:= gsChat; - KeyPressChat(27); - KeyPressChat(47); - KeyPressChat(116); - KeyPressChat(101); - KeyPressChat(97); - KeyPressChat(109); - KeyPressChat(32) - end -end; - -procedure chCheckProto(var s: shortstring); -var i, c: LongInt; -begin -if isDeveloperMode then -begin -val(s, i, c); -if (c <> 0) or (i = 0) then exit; -TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old', true); -TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new', true) -end -end; - -procedure chAddTeam(var s: shortstring); -var Color: Longword; - ts, cs: shortstring; -begin -cs:= ''; -ts:= ''; -if isDeveloperMode then -begin -SplitBySpace(s, cs); -SplitBySpace(cs, ts); -val(cs, Color); -TryDo(Color <> 0, 'Error: black team color', true); - -// color is always little endian so the mask must be constant also in big endian archs -Color:= Color or $FF000000; - -AddTeam(Color); -CurrentTeam^.TeamName:= ts; -CurrentTeam^.PlayerHash:= s; -if GameType in [gmtDemo, gmtSave] then CurrentTeam^.ExtDriven:= true; - -CurrentTeam^.voicepack:= AskForVoicepack('Default') -end -end; - -procedure chTeamLocal(var s: shortstring); -begin -s:= s; // avoid compiler hint -if not isDeveloperMode then exit; -if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/rdriven"', true); -CurrentTeam^.ExtDriven:= true -end; - -procedure chGrave(var s: shortstring); -begin -if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/grave"', true); -if s[1]='"' then Delete(s, 1, 1); -if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); -CurrentTeam^.GraveName:= s -end; - -procedure chFort(var s: shortstring); -begin -if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/fort"', true); -if s[1]='"' then Delete(s, 1, 1); -if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); -CurrentTeam^.FortName:= s -end; - -procedure chVoicepack(var s: shortstring); -begin -if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true); -if s[1]='"' then Delete(s, 1, 1); -if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); -CurrentTeam^.voicepack:= AskForVoicepack(s) -end; - -procedure chFlag(var s: shortstring); -begin -if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/flag"', true); -if s[1]='"' then Delete(s, 1, 1); -if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); -CurrentTeam^.flag:= s -end; - -procedure chScript(var s: shortstring); -begin -if s[1]='"' then Delete(s, 1, 1); -if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); -ScriptLoad(s) -end; - -procedure chAddHH(var id: shortstring); -var s: shortstring; - Gear: PGear; -begin -s:= ''; -if (not isDeveloperMode) or (CurrentTeam = nil) then exit; -with CurrentTeam^ do - begin - SplitBySpace(id, s); - CurrentHedgehog:= @Hedgehogs[HedgehogsNumber]; - val(id, CurrentHedgehog^.BotLevel); - Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0); - SplitBySpace(s, id); - val(s, Gear^.Health); - TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true); - PHedgehog(Gear^.Hedgehog)^.Team:= CurrentTeam; - if (GameFlags and gfSharedAmmo) <> 0 then CurrentHedgehog^.AmmoStore:= Clan^.ClanIndex - else if (GameFlags and gfPerHogAmmo) <> 0 then - begin - AddAmmoStore; - CurrentHedgehog^.AmmoStore:= StoreCnt - 1 - end - else CurrentHedgehog^.AmmoStore:= TeamsCount - 1; - CurrentHedgehog^.Gear:= Gear; - CurrentHedgehog^.Name:= id; - CurrentHedgehog^.InitialHealth:= Gear^.Health; - CurrHedgehog:= HedgehogsNumber; - inc(HedgehogsNumber) - end -end; - -procedure chSetHat(var s: shortstring); -begin -if (not isDeveloperMode) or (CurrentTeam = nil) then exit; -with CurrentTeam^ do - begin - if not CurrentHedgehog^.King then - if (s = '') or - (((GameFlags and gfKing) <> 0) and (s = 'crown')) or - ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then - CurrentHedgehog^.Hat:= 'NoHat' - else - CurrentHedgehog^.Hat:= s - end; -end; - -procedure chSetHHCoords(var x: shortstring); -var y: shortstring; - t: Longint; -begin -y:= ''; -if (not isDeveloperMode) or (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then exit; -SplitBySpace(x, y); -val(x, t); -CurrentHedgehog^.Gear^.X:= int2hwFloat(t); -val(y, t); -CurrentHedgehog^.Gear^.Y:= int2hwFloat(t) -end; - -procedure chSetAmmoLoadout(var descr: shortstring); -begin -SetAmmoLoadout(descr) -end; - -procedure chSetAmmoDelay(var descr: shortstring); -begin -SetAmmoDelay(descr) -end; - -procedure chSetAmmoProbability(var descr: shortstring); -begin -SetAmmoProbability(descr) -end; - -procedure chSetAmmoReinforcement(var descr: shortstring); -begin -SetAmmoReinforcement(descr) -end; - -procedure chAddAmmoStore(var descr: shortstring); -begin -descr:= ''; // avoid compiler hint -AddAmmoStore -end; - -procedure chBind(var id: shortstring); -var s: shortstring; - b: LongInt; -begin -s:= ''; -if CurrentTeam = nil then exit; -SplitBySpace(id, s); -if s[1]='"' then Delete(s, 1, 1); -if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); -b:= KeyNameToCode(id); -if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false) - else CurrentTeam^.Binds[b]:= s -end; - -procedure chCurU_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementY:= -1; -end; - -procedure chCurU_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementY:= 0; -end; - -procedure chCurD_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementY:= 1; -end; - -procedure chCurD_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementY:= 0; -end; - -procedure chCurL_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementX:= -1; -end; - -procedure chCurL_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementX:= 0; -end; - -procedure chCurR_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementX:= 1; -end; - -procedure chCurR_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -CursorMovementX:= 0; -end; - -procedure chLeft_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('L'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmLeft -end; - -procedure chLeft_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then SendIPC('l'); -with CurrentHedgehog^.Gear^ do - Message:= Message and not gmLeft -end; - -procedure chRight_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('R'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmRight -end; - -procedure chRight_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then SendIPC('r'); -with CurrentHedgehog^.Gear^ do - Message:= Message and not gmRight -end; - -procedure chUp_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('U'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmUp -end; - -procedure chUp_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then SendIPC('u'); -with CurrentHedgehog^.Gear^ do - Message:= Message and not gmUp -end; - -procedure chDown_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('D'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmDown -end; - -procedure chDown_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then SendIPC('d'); -with CurrentHedgehog^.Gear^ do - Message:= Message and not gmDown -end; - -procedure chPrecise_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('Z'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmPrecise -end; - -procedure chPrecise_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then SendIPC('z'); -with CurrentHedgehog^.Gear^ do - Message:= Message and not gmPrecise -end; - -procedure chLJump(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('j'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmLJump -end; - -procedure chHJump(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('J'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmHJump -end; - -procedure chAttack_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - begin - {$IFDEF DEBUGFILE}AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State));{$ENDIF} - if ((State and gstHHDriven) <> 0) then - begin - FollowGear:= CurrentHedgehog^.Gear; - if not CurrentTeam^.ExtDriven then SendIPC('A'); - Message:= Message or gmAttack - end - end -end; - -procedure chAttack_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH then exit; -with CurrentHedgehog^.Gear^ do - begin - if not CurrentTeam^.ExtDriven and - ((Message and gmAttack) <> 0) then SendIPC('a'); - Message:= Message and not gmAttack - end -end; - -procedure chSwitch(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then SendIPC('S'); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - Message:= Message or gmSwitch -end; - -procedure chNextTurn(var s: shortstring); -begin - s:= s; // avoid compiler hint - TryDo(AllInactive, '/nextturn called when not all gears are inactive', true); - - if not CurrentTeam^.ExtDriven then SendIPC('N'); -{$IFDEF DEBUGFILE} - AddFileLog('Doing SwitchHedgehog: time '+inttostr(GameTicks)); -{$ENDIF} - perfExt_NewTurnBeginning(); -end; - -procedure chSay(var s: shortstring); -begin -SendIPC('s' + s); - -if copy(s, 1, 4) = '/me ' then - s:= #2'* ' + UserNick + ' ' + copy(s, 5, Length(s) - 4) -else - s:= #1 + UserNick + ': ' + s; - -AddChatString(s) -end; - -procedure chTeamSay(var s: shortstring); -begin -SendIPC('b' + s); - -s:= #4 + '[Team] ' + UserNick + ': ' + s; - -AddChatString(s) -end; - -procedure chTimer(var s: shortstring); -begin -if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or CheckNoTeamOrHH then exit; - -if not CurrentTeam^.ExtDriven then SendIPC(s); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - begin - Message:= Message or gmTimer; - MsgParam:= byte(s[1]) - ord('0') - end -end; - -procedure chSlot(var s: shortstring); -var slot: LongWord; -begin -if (s[0] <> #1) or CheckNoTeamOrHH then exit; -slot:= byte(s[1]) - 49; -if slot > cMaxSlotIndex then exit; -if not CurrentTeam^.ExtDriven then SendIPC(char(byte(s[1]) + 79)); -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -with CurrentHedgehog^.Gear^ do - begin - Message:= Message or gmSlot; - MsgParam:= slot - end -end; - -procedure chSetWeapon(var s: shortstring); -begin - if (s[0] <> #1) or CheckNoTeamOrHH then exit; - - if TAmmoType(s[1]) > High(TAmmoType) then exit; - - if not CurrentTeam^.ExtDriven then SendIPC('w' + s); - - with CurrentHedgehog^.Gear^ do - begin - Message:= Message or gmWeapon; - MsgParam:= byte(s[1]); - end; -end; - -procedure chTaunt(var s: shortstring); -begin -if (s[0] <> #1) or CheckNoTeamOrHH then exit; - -if TWave(s[1]) > High(TWave) then exit; - -if not CurrentTeam^.ExtDriven then SendIPC('t' + s); - -with CurrentHedgehog^.Gear^ do - begin - Message:= Message or gmAnimate; - MsgParam:= byte(s[1]) - end -end; - -procedure chHogSay(var s: shortstring); -var Gear: PVisualGear; - text: shortstring; -begin -text:= copy(s, 2, Length(s)-1); -if CheckNoTeamOrHH -or ((CurrentHedgehog^.Gear^.State and gstHHDriven) = 0) then - begin - chSay(text); - exit - end; - -if not CurrentTeam^.ExtDriven then SendIPC('h' + s); - -if byte(s[1]) < 4 then - begin - Gear:= AddVisualGear(0, 0, vgtSpeechBubble); - if Gear <> nil then - begin - Gear^.Hedgehog:= CurrentHedgehog; - Gear^.Text:= text; - Gear^.FrameTicks:= byte(s[1]) - end - end -else - begin - SpeechType:= byte(s[1])-3; - SpeechText:= text - end; - -end; - -procedure doPut(putX, putY: LongInt; fromAI: boolean); -begin -if CheckNoTeamOrHH or isPaused then exit; -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -bShowFinger:= false; -if not CurrentTeam^.ExtDriven and bShowAmmoMenu then - begin - bSelected:= true; - exit - end; - -with CurrentHedgehog^.Gear^, - CurrentHedgehog^ do - if (State and gstHHChooseTarget) <> 0 then - begin - isCursorVisible:= false; - if not CurrentTeam^.ExtDriven then - begin - if fromAI then - begin - TargetPoint.X:= putX; - TargetPoint.Y:= putY - end else - begin - TargetPoint.X:= CursorPoint.X - WorldDx; - TargetPoint.Y:= cScreenHeight - CursorPoint.Y - WorldDy; - end; - SendIPCXY('p', TargetPoint.X, TargetPoint.Y); - end - else - begin - TargetPoint.X:= putX; - TargetPoint.Y:= putY - end; - {$IFDEF DEBUGFILE}AddFilelog('put: ' + inttostr(TargetPoint.X) + ', ' + inttostr(TargetPoint.Y));{$ENDIF} - State:= State and not gstHHChooseTarget; - if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackingPut) <> 0 then - Message:= Message or gmAttack; - end - else - if CurrentTeam^.ExtDriven then - OutError('got /put while not being in choose target mode', false) -end; - -procedure chPut(var s: shortstring); -begin - s:= s; // avoid compiler hint - doPut(0, 0, false); -end; - -procedure chCapture(var s: shortstring); -begin -s:= s; // avoid compiler hint -flagMakeCapture:= true -end; - -procedure chSkip(var s: shortstring); -begin -s:= s; // avoid compiler hint -if not CurrentTeam^.ExtDriven then SendIPC(','); -uStats.Skipped; -skipFlag:= true -end; - -procedure chSetMap(var s: shortstring); -begin -if isDeveloperMode then -begin -Pathz[ptMapCurrent]:= Pathz[ptMaps] + '/' + s; -InitStepsFlags:= InitStepsFlags or cifMap -end -end; - -procedure chSetTheme(var s: shortstring); -begin -if isDeveloperMode then -begin -Pathz[ptCurrTheme]:= Pathz[ptThemes] + '/' + s; -InitStepsFlags:= InitStepsFlags or cifTheme -end -end; - -procedure chSetSeed(var s: shortstring); -begin -if isDeveloperMode then -begin -SetRandomSeed(s); -cSeed:= s; -InitStepsFlags:= InitStepsFlags or cifRandomize -end -end; - -procedure chAmmoMenu(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH then - bShowAmmoMenu:= true -else - begin - with CurrentTeam^ do - with Hedgehogs[CurrHedgehog] do - begin - bSelected:= false; - - if bShowAmmoMenu then bShowAmmoMenu:= false - else if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or - ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or - ((Gear^.State and gstHHDriven) = 0) then else bShowAmmoMenu:= true - end; - if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1 - end -end; - -procedure chFullScr(var s: shortstring); -var flags: Longword = 0; - ico: PSDL_Surface; -{$IFDEF DEBUGFILE} - buf: array[byte] of char; -{$ENDIF} -begin - s:= s; // avoid compiler hint - if Length(s) = 0 then cFullScreen:= not cFullScreen - else cFullScreen:= s = '1'; - -{$IFDEF DEBUGFILE} - buf[0]:= char(0); // avoid compiler hint - AddFileLog('Prepare to change video parameters...'); -{$ENDIF} - - flags:= SDL_OPENGL;// or SDL_RESIZABLE; - - if cFullScreen then - flags:= flags or SDL_FULLSCREEN; - -{$IFDEF SDL_IMAGE_NEWER} - WriteToConsole('Init SDL_image... '); - SDLTry(IMG_Init(IMG_INIT_PNG) <> 0, true); - WriteLnToConsole(msgOK); -{$ENDIF} - // load engine icon -{$IFDEF DARWIN} - ico:= LoadImage(Pathz[ptGraphics] + '/hwengine_mac', ifIgnoreCaps); -{$ELSE} - ico:= LoadImage(Pathz[ptGraphics] + '/hwengine', ifIgnoreCaps); -{$ENDIF} - if ico <> nil then - begin - SDL_WM_SetIcon(ico, 0); - SDL_FreeSurface(ico) - end; - - // set window caption - SDL_WM_SetCaption('Hedgewars', nil); - - if SDLPrimSurface <> nil then - begin -{$IFDEF DEBUGFILE} - AddFileLog('Freeing old primary surface...'); -{$ENDIF} - SDL_FreeSurface(SDLPrimSurface); - SDLPrimSurface:= nil; - end; - -{$IFDEF SDL13} - if SDLwindow = nil then - begin - SDLwindow:= SDL_CreateWindow('Hedgewars', 0, 0, cScreenWidth, cScreenHeight, - SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN - {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS{$ENDIF}); - SDL_CreateRenderer(SDLwindow, -1, 0); - end; - - SDL_SetRenderDrawColor(0, 0, 0, 255); - SDL_RenderFill(nil); - SDL_RenderPresent(); -{$ELSE} - SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags); - SDLTry(SDLPrimSurface <> nil, true); - PixelFormat:= SDLPrimSurface^.format; -{$ENDIF} - -{$IFDEF DEBUGFILE} - AddFileLog('Setting up OpenGL...'); - AddFileLog('SDL video driver: ' + shortstring(SDL_VideoDriverName(buf, sizeof(buf)))); -{$ENDIF} - SetupOpenGL(); -end; - -procedure chVol_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -inc(cVolumeDelta, 3) -end; - -procedure chVol_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -dec(cVolumeDelta, 3) -end; - -procedure chFindhh(var s: shortstring); -begin -s:= s; // avoid compiler hint -if CheckNoTeamOrHH or isPaused then exit; -bShowFinger:= true; -FollowGear:= CurrentHedgehog^.Gear -end; - -procedure chPause(var s: shortstring); -begin -s:= s; // avoid compiler hint -if ReadyTimeLeft > 1 then ReadyTimeLeft:= 1; -if gameType <> gmtNet then - isPaused:= not isPaused; -SDL_ShowCursor(ord(isPaused)) -end; - -procedure chRotateMask(var s: shortstring); -begin -s:= s; // avoid compiler hint -if ((GameFlags and gfInvulnerable) = 0) then cTagsMask:= cTagsMasks[cTagsMask] else cTagsMask:= cTagsMasksNoHealth[cTagsMask]; -end; - -procedure chSpeedup_p(var s: shortstring); -begin -s:= s; // avoid compiler hint -isSpeed:= true -end; - -procedure chSpeedup_m(var s: shortstring); -begin -s:= s; // avoid compiler hint -isSpeed:= false -end; - -procedure chZoomIn(var s: shortstring); -begin - s:= s; // avoid compiler hint - if ZoomValue < cMinZoomLevel then - ZoomValue:= ZoomValue + cZoomDelta; -end; - -procedure chZoomOut(var s: shortstring); -begin - s:= s; // avoid compiler hint - if ZoomValue > cMaxZoomLevel then - ZoomValue:= ZoomValue - cZoomDelta; -end; - -procedure chZoomReset(var s: shortstring); -begin - s:= s; // avoid compiler hint - ZoomValue:= cDefaultZoomLevel; -end; - -procedure chChat(var s: shortstring); -begin - s:= s; // avoid compiler hint - GameState:= gsChat; - KeyPressChat(27) -end; - -procedure chHistory(var s: shortstring); -begin - s:= s; // avoid compiler hint - uChat.showAll:= not uChat.showAll -end;
--- a/hedgewars/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -11,24 +11,24 @@ #if the headers are not installed, the newer apis won't be activated find_file(sdlmixer_h SDL_mixer.h ${SDLMIXER_INCLUDE_DIR}) if(sdlmixer_h) - file(STRINGS ${sdlmixer_h} sdlmixer_version_tmp REGEX "SDL_MIXER_PATCHLEVEL[\t' ']+[0-9]+") - string(REGEX MATCH ".([0-9]+)" sdlmixer_version "${sdlmixer_version_tmp}") + file(STRINGS ${sdlmixer_h} sdlmixer_version_tmp REGEX "SDL_MIXER_PATCHLEVEL[\t' ']+[0-9]+") + string(REGEX MATCH ".([0-9]+)" sdlmixer_version "${sdlmixer_version_tmp}") - if(sdlmixer_version GREATER 9) - message(STATUS "Enabling enhanced SDL_Mixer calls") - set(pascal_compiler_flags_cmn "-dSDL_MIXER_NEWER" ${pascal_compiler_flags_cmn}) - endif() + if(sdlmixer_version GREATER 9) + message(STATUS "Enabling enhanced SDL_Mixer calls") + set(pascal_compiler_flags_cmn "-dSDL_MIXER_NEWER" ${pascal_compiler_flags_cmn}) + endif() endif() find_file(sdlimage_h SDL_image.h ${SDLIMAGE_INCLUDE_DIR}) if(sdlimage_h) - file(STRINGS ${sdlimage_h} sdlimage_version_tmp REGEX "SDL_IMAGE_PATCHLEVEL[\t' ']+[0-9]+") - string(REGEX MATCH ".([0-9]+)" sdlimage_version "${sdlimage_version_tmp}") + file(STRINGS ${sdlimage_h} sdlimage_version_tmp REGEX "SDL_IMAGE_PATCHLEVEL[\t' ']+[0-9]+") + string(REGEX MATCH ".([0-9]+)" sdlimage_version "${sdlimage_version_tmp}") - if(sdlimage_version GREATER 7) - message(STATUS "Enabling enhanced SDL_Image calls") - set(pascal_compiler_flags_cmn "-dSDL_IMAGE_NEWER" ${pascal_compiler_flags_cmn}) - endif() + if(sdlimage_version GREATER 7) + message(STATUS "Enabling enhanced SDL_Image calls") + set(pascal_compiler_flags_cmn "-dSDL_IMAGE_NEWER" ${pascal_compiler_flags_cmn}) + endif() endif() #SOURCE AND PROGRAMS SECTION @@ -36,86 +36,95 @@ set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwengine.pas) set(engine_sources - ${hwengine_project} - SDLh.pas - uAI.pas - uAIActions.pas - uAIAmmoTests.pas - uAIMisc.pas - uAmmos.pas - uChat.pas - uCollisions.pas - uConsole.pas - uConsts.pas - uFloat.pas - uGame.pas - uGears.pas - uIO.pas - uKeys.pas - uLand.pas - uLandGraphics.pas - uLandObjects.pas - uLandTemplates.pas - uLandTexture.pas - uLocale.pas - uMisc.pas - uMobile.pas - uRandom.pas - uScript.pas - adler32.pas - uSound.pas - uStats.pas - uStore.pas - uTeams.pas - uVisualGears.pas - uWorld.pas - CCHandlers.inc - GSHandlers.inc - VGSHandlers.inc - GearDrawing.inc - HHHandlers.inc - SinTable.inc - ArgParsers.inc - options.inc - ${CMAKE_CURRENT_BINARY_DIR}/config.inc - ) + ${hwengine_project} + SDLh.pas + uAI.pas + uAIActions.pas + uAIAmmoTests.pas + uAIMisc.pas + uAmmos.pas + uCaptions.pas + uChat.pas + uCollisions.pas + uCommands.pas + uCommandHandlers.pas + uConsole.pas + uConsts.pas + uDebug.pas + uFloat.pas + uGame.pas + uGears.pas + uGearsRender.pas + uIO.pas + uKeys.pas + uLand.pas + uLandGraphics.pas + uLandObjects.pas + uLandPainted.pas + uLandTemplates.pas + uLandTexture.pas + uLocale.pas + uMisc.pas + uMobile.pas + uRandom.pas + uRender.pas + uRenderUtils.pas + uScript.pas + uSinTable.pas + uSound.pas + uStats.pas + uStore.pas + uTeams.pas + uTextures.pas + uTypes.pas + uUtils.pas + uVisualGears.pas + uWorld.pas + GSHandlers.inc + VGSHandlers.inc + HHHandlers.inc + ArgParsers.inc + options.inc + adler32.pas + ${CMAKE_CURRENT_BINARY_DIR}/config.inc + ) if(BUILD_ENGINE_LIBRARY) - message(STATUS "Engine will be built as library (experimental)") - set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwLibrary.pas) - set(engine_sources ${hwengine_project} PascalExports.pas ${engine_sources}) - set(pascal_compiler_flags_cmn "-dHWLIBRARY" "-k-no_order_inits" "-fPIC" ${pascal_compiler_flags_cmn}) + message(STATUS "Engine will be built as library (experimental)") + set(hwengine_project ${hedgewars_SOURCE_DIR}/hedgewars/hwLibrary.pas) + set(engine_sources ${hwengine_project} PascalExports.pas ${engine_sources}) + set(pascal_compiler_flags_cmn "-dHWLIBRARY" "-k-no_order_inits" "-fPIC" ${pascal_compiler_flags_cmn}) endif(BUILD_ENGINE_LIBRARY) find_program(fpc_executable ${fpc_tryexe}) if(fpc_executable) - exec_program(${fpc_executable} ARGS "-iV" OUTPUT_VARIABLE fpc_output) + exec_program(${fpc_executable} ARGS "-iV" OUTPUT_VARIABLE fpc_output) endif(fpc_executable) set(noexecstack_flags "-k-z" "-knoexecstack") file(WRITE ${EXECUTABLE_OUTPUT_PATH}/checkstack.pas "begin end.") exec_program(${fpc_executable} ${EXECUTABLE_OUTPUT_PATH} - ARGS ${noexecstack_flags} checkstack.pas - OUTPUT_VARIABLE noout - RETURN_VALUE testnoexecstack - ) + ARGS ${noexecstack_flags} checkstack.pas + OUTPUT_VARIABLE noout + RETURN_VALUE testnoexecstack + ) if(${testnoexecstack}) - set (noexecstack_flags "") + set (noexecstack_flags "") endif(${testnoexecstack}) if(APPLE) - string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}") - string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}") - string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}") + string(REGEX MATCH "[pP][pP][cC]+" powerpc_build "${CMAKE_OSX_ARCHITECTURES}") + string(REGEX MATCH "[iI]386+" i386_build "${CMAKE_OSX_ARCHITECTURES}") + string(REGEX MATCH "[xX]86_64+" x86_64_build "${CMAKE_OSX_ARCHITECTURES}") - if(powerpc_build) - set(powerpc_build "powerpc") - endif() + if(powerpc_build) + set(powerpc_build "powerpc") + endif() endif(APPLE) @@ -123,19 +132,19 @@ string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" fpc_version "${fpc_output}") if(fpc_version) - string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}") - string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}") - string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}") - message(STATUS "Freepascal version detected: ${fpc_vers_major}.${fpc_vers_minor}") - math(EXPR fpc_ver "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}") + string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}") + string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}") + string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}") + message(STATUS "Freepascal version detected: ${fpc_vers_major}.${fpc_vers_minor}") + math(EXPR fpc_ver "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}") - if(fpc_ver LESS "020200") - message(FATAL_ERROR "Minimum required version of FreePascal is 2.2.0") - elseif(APPLE AND x86_64_build AND fpc_ver LESS "020400") - message(FATAL_ERROR "Minimum required version of FreePascal is 2.4.0 for building 64 bit applications!") - endif() + if(fpc_ver LESS "020200") + message(FATAL_ERROR "Minimum required version of FreePascal is 2.2.0") + elseif(APPLE AND x86_64_build AND fpc_ver LESS "020400") + message(FATAL_ERROR "Minimum required version of FreePascal is 2.4.0 for building 64 bit applications!") + endif() else() - message(FATAL_ERROR "No Pascal compiler found!") + message(FATAL_ERROR "No Pascal compiler found!") endif() set(pascal_compiler ${fpc_executable}) @@ -144,40 +153,40 @@ #DEPENDECIES AND EXECUTABLES SECTION IF(NOT APPLE OR BUILD_ENGINE_LIBRARY) - #here is the command for standard executables or for shared library - add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" - COMMAND "${pascal_compiler}" - ARGS ${pascal_compiler_flags} - MAIN_DEPENDENCY ${hwengine_project} - DEPENDS ${engine_sources} - ) + #here is the command for standard executables or for shared library + add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine${CMAKE_EXECUTABLE_SUFFIX}" + COMMAND "${pascal_compiler}" + ARGS ${pascal_compiler_flags} + MAIN_DEPENDENCY ${hwengine_project} + DEPENDS ${engine_sources} + ) ELSE() - #let's build sdlmain, which is absent from the framework - find_package(SDL REQUIRED) + #let's build sdlmain, which is absent from the framework + find_package(SDL REQUIRED) - set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) - include_directories(${SDL_INCLUDE_DIR}) + set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) + include_directories(${SDL_INCLUDE_DIR}) - add_library (SDLmain STATIC SDLMain.m) + add_library (SDLmain STATIC SDLMain.m) - #these are the dependencies for building a universal binary on Mac OS X - foreach (build_arch ${powerpc_build} ${i386_build} ${x86_64_build}) - set(lipo_args_list "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}" ${lipo_args_list}) - add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}" - COMMAND "${pascal_compiler}" - ARGS ${pascal_compiler_flags} -ohwengine.${build_arch} -P${build_arch} - MAIN_DEPENDENCY ${hwengine_project} - DEPENDS ${engine_sources} SDLmain lua - ) - add_custom_target(hwengine.${build_arch} ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}") - endforeach() + #these are the dependencies for building a universal binary on Mac OS X + foreach (build_arch ${powerpc_build} ${i386_build} ${x86_64_build}) + set(lipo_args_list "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}" ${lipo_args_list}) + add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}" + COMMAND "${pascal_compiler}" + ARGS ${pascal_compiler_flags} -ohwengine.${build_arch} -P${build_arch} + MAIN_DEPENDENCY ${hwengine_project} + DEPENDS ${engine_sources} SDLmain lua + ) + add_custom_target(hwengine.${build_arch} ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hwengine.${build_arch}") + endforeach() - add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine" - COMMAND "lipo" - ARGS ${lipo_args_list} -create -output ${EXECUTABLE_OUTPUT_PATH}/hwengine - DEPENDS ${lipo_args_list} - ) + add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hwengine" + COMMAND "lipo" + ARGS ${lipo_args_list} -create -output ${EXECUTABLE_OUTPUT_PATH}/hwengine + DEPENDS ${lipo_args_list} + ) ENDIF()
--- a/hedgewars/GSHandlers.inc Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/GSHandlers.inc Tue Jan 04 12:53:46 2011 +0100 @@ -28,32 +28,32 @@ // Gear is still on the same Pixel it was before if steps < 1 then - begin + begin if onlyCheckIfChanged then - begin + begin Gear^.X := Gear^.X + dX; Gear^.Y := Gear^.Y + dY; EXIT; - end + end else steps := 1; - end; + end; if steps > 1 then - begin + begin sX:= dX / steps; sY:= dY / steps; - end + end else - begin + begin sX:= dX; sY:= dY; - end; + end; caller:= Gear^.doStep; for i:= 1 to steps do - begin + begin Gear^.X := Gear^.X + sX; Gear^.Y := Gear^.Y + sY; step(Gear); @@ -61,7 +61,7 @@ or ((Gear^.State and gstCollision) <> 0) or ((Gear^.State and gstMoving) = 0) then break; - end; + end; end; procedure makeHogsWorry(x, y: hwFloat; r: LongInt); @@ -71,27 +71,27 @@ begin gi := GearsList; while gi <> nil do - begin + begin if (gi^.Kind = gtHedgehog) then - begin + begin d := r - hwRound(Distance(gi^.X - x, gi^.Y - y)); if (d > 1) and not gi^.Invulnerable and (GetRandom(2) = 0) then - begin + begin if (CurrentHedgehog^.Gear = gi) then - PlaySound(sndOops, PHedgehog(gi^.Hedgehog)^.Team^.voicepack) + PlaySound(sndOops, gi^.Hedgehog^.Team^.voicepack) else - begin + begin if (gi^.State and gstMoving) = 0 then gi^.State := gi^.State or gstLoser; if d > r div 2 then - PlaySound(sndNooo, PHedgehog(gi^.Hedgehog)^.Team^.voicepack) + PlaySound(sndNooo, gi^.Hedgehog^.Team^.voicepack) else - PlaySound(sndUhOh, PHedgehog(gi^.Hedgehog)^.Team^.voicepack); + PlaySound(sndUhOh, gi^.Hedgehog^.Team^.voicepack); + end; end; end; + gi := gi^.NextGear end; - gi := gi^.NextGear - end; end; //////////////////////////////////////////////////////////////////////////////// procedure doStepDrowningGear(Gear: PGear); @@ -107,37 +107,38 @@ isSubmersible:= (Gear = CurrentHedgehog^.Gear) and (CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amJetpack); // probably needs tweaking. might need to be in a case statement based upon gear type if cWaterLine < hwRound(Gear^.Y) + Gear^.Radius then - begin + begin skipSpeed := _0_25; skipAngle := _1_9; skipDecay := _0_87; // this could perhaps be a tiny bit higher. if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > skipSpeed) and (hwAbs(Gear^.dX) > skipAngle * hwAbs(Gear^.dY)) then - begin + begin Gear^.dY.isNegative := true; Gear^.dY := Gear^.dY * skipDecay; Gear^.dX := Gear^.dX * skipDecay; CheckGearDrowning := false; PlaySound(sndSkip) - end + end else - begin + begin if not isSubmersible then - begin + begin CheckGearDrowning := true; Gear^.State := gstDrowning; Gear^.RenderTimer := false; - if (Gear^.Kind <> gtSniperRifleShot) and (Gear^.Kind <> gtShotgunShot) and (Gear^.Kind <> gtDEagleShot) and (Gear^.Kind <> gtSineGunShot) then + if (Gear^.Kind <> gtSniperRifleShot) and (Gear^.Kind <> gtShotgunShot) and + (Gear^.Kind <> gtDEagleShot) and (Gear^.Kind <> gtSineGunShot) then if Gear^.Kind = gtHedgehog then begin - if PHedgehog(Gear^.Hedgehog)^.Effects[heResurrectable] then + if Gear^.Hedgehog^.Effects[heResurrectable] then ResurrectHedgehog(Gear) else begin Gear^.doStep := @doStepDrowningGear; Gear^.State := Gear^.State and (not gstHHDriven); - AddCaption(Format(GetEventString(eidDrowned), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); + AddCaption(Format(GetEventString(eidDrowned), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); end end else @@ -152,30 +153,38 @@ if ((cReducedQuality and rqPlainSplash) = 0) and (((not isSubmersible) and (hwRound(Gear^.Y) < cWaterLine + 64 + Gear^.Radius)) or (isSubmersible and (hwRound(Gear^.Y) < cWaterLine + 2 + Gear^.Radius) and ((CurAmmoGear^.Pos = 0) and (CurAmmoGear^.dY < _0_01)))) then - begin + begin AddVisualGear(hwRound(Gear^.X), cWaterLine, vgtSplash); maxDrops := (Gear^.Radius div 2) + hwRound(Gear^.dX * Gear^.Radius * 2) + hwRound(Gear^. dY * Gear^.Radius * 2); for i:= max(maxDrops div 3, min(32, Random(maxDrops))) downto 0 do - begin + begin particle := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), cWaterLine, vgtDroplet); if particle <> nil then - begin + begin particle^.dX := particle^.dX - (Gear^.dX.QWordValue / 42949672960); particle^.dY := particle^.dY - (Gear^.dY.QWordValue / 21474836480) + end end - end - end; + end; if isSubmersible and (CurAmmoGear^.Pos = 0) then CurAmmoGear^.Pos := 1000 end else CheckGearDrowning := false; end; -procedure CheckCollision(Gear: PGear); +procedure CheckCollision(Gear: PGear); inline; begin - if TestCollisionXwithGear(Gear, hwSign(Gear^.X)) or TestCollisionYwithGear(Gear, hwSign(Gear^.Y) + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) or TestCollisionYwithGear(Gear, hwSign(Gear^.dY) + ) + then Gear^.State := Gear^.State or gstCollision + else Gear^.State := Gear^.State and not gstCollision +end; + +procedure CheckCollisionWithLand(Gear: PGear); inline; +begin + if TestCollisionX(Gear, hwSign(Gear^.dX)) or TestCollisionY(Gear, hwSign(Gear^.dY) ) then Gear^.State := Gear^.State or gstCollision else Gear^.State := Gear^.State and not gstCollision @@ -188,24 +197,23 @@ particle: PVisualGear; begin if _0_4 < Gear^.dY then - begin + begin dmg := ModifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70), Gear); PlaySound(sndBump); if dmg < 1 then exit; for i:= min(12, (3 + dmg div 10)) downto 0 do - begin - particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, - vgtDust); + begin + particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480); - end; + end; if (Gear^.Invulnerable) then exit; //if _0_6 < Gear^.dY then - // PlaySound(sndOw4, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) + // PlaySound(sndOw4, Gear^.Hedgehog^.Team^.voicepack) //else - // PlaySound(sndOw1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + // PlaySound(sndOw1, Gear^.Hedgehog^.Team^.voicepack); ApplyDamage(Gear, dmg, dsFall); end @@ -233,10 +241,10 @@ AllInactive := false; Gear^.Y := Gear^.Y + cDrownSpeed; Gear^.X := Gear^.X + Gear^.dX * cDrownSpeed; - if (cWaterOpacity > $FE) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then + if (not SuddenDeathDmg and (cWaterOpacity > $FE)) or (SuddenDeathDmg and (cSDWaterOpacity > $FE)) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then DeleteGear(Gear); // Create some bubbles (0.5% might be better but causes too few bubbles sometimes) - if (cWaterOpacity < $FF) and ((GameTicks and $1F) = 0) then + if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) and ((GameTicks and $1F) = 0) then if (Gear^.Kind = gtHedgehog) and (Random(4) = 0) then AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, vgtBubble) @@ -267,60 +275,60 @@ if (hwRound(Gear^.X) < LAND_WIDTH div -2) or (hwRound(Gear^.X) > LAND_WIDTH * 3 div 2) then Gear^.State := Gear^.State or gstCollision; if Gear^.dY.isNegative then - begin + begin isFalling := true; if TestCollisionYwithGear(Gear, -1) then - begin + begin collV := -1; Gear^.dX := Gear^.dX * Gear^.Friction; Gear^.dY := - Gear^.dY * Gear^.Elasticity; Gear^.State := Gear^.State or gstCollision - end + end else if (Gear^.AdvBounce=1) and TestCollisionYwithGear(Gear, 1) then collV := 1; - end + end else if TestCollisionYwithGear(Gear, 1) then begin - collV := 1; - isFalling := false; - Gear^.dX := Gear^.dX * Gear^.Friction; - Gear^.dY := - Gear^.dY * Gear^.Elasticity; - Gear^.State := Gear^.State or gstCollision + collV := 1; + isFalling := false; + Gear^.dX := Gear^.dX * Gear^.Friction; + Gear^.dY := - Gear^.dY * Gear^.Elasticity; + Gear^.State := Gear^.State or gstCollision end else - begin + begin isFalling := true; if (Gear^.AdvBounce=1) and not Gear^.dY.isNegative and TestCollisionYwithGear(Gear, -1) then collV := -1; - end; + end; if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then - begin + begin collH := hwSign(Gear^.dX); Gear^.dX := - Gear^.dX * Gear^.Elasticity; Gear^.dY := Gear^.dY * Gear^.Elasticity; Gear^.State := Gear^.State or gstCollision - end + end else if (Gear^.AdvBounce=1) and TestCollisionXwithGear(Gear, -hwSign(Gear^.dX)) then collH := -hwSign(Gear^.dX); //if Gear^.AdvBounce and (collV <>0) and (collH <> 0) and (hwSqr(tdX) + hwSqr(tdY) > _0_08) then if (Gear^.AdvBounce=1) and (collV <>0) and (collH <> 0) and ((collV=-1) or ((tdX.QWordValue + tdY.QWordValue) > _0_2.QWordValue)) then - begin + begin Gear^.dX := tdY*Gear^.Elasticity*Gear^.Friction; Gear^.dY := tdX*Gear^.Elasticity; //*Gear^.Friction; Gear^.dY.isNegative := not tdY.isNegative; isFalling := false; Gear^.AdvBounce := 10; - end; + end; if Gear^.AdvBounce > 1 then dec(Gear^.AdvBounce); if isFalling then begin Gear^.dY := Gear^.dY + cGravity; - if (GameFlags and gfMoreWind) <> 0 then Gear^.dX := Gear^.dX + cWindSpeed * _16 / max(12,sqr(Gear^.Radius)) + if (GameFlags and gfMoreWind) <> 0 then Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density end; Gear^.X := Gear^.X + Gear^.dX; @@ -519,16 +527,169 @@ if (GameFlags and gfMoreWind) = 0 then Gear^.dX := Gear^.dX + cWindSpeed; doStepFallingGear(Gear); if (Gear^.State and gstCollision) <> 0 then - begin + begin doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); DeleteGear(Gear); exit - end; + end; if (GameTicks and $3F) = 0 then AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); end; //////////////////////////////////////////////////////////////////////////////// +procedure doStepSnowball(Gear: PGear); +var kick, i: LongInt; + particle: PVisualGear; +begin + AllInactive := false; + if (GameFlags and gfMoreWind) = 0 then Gear^.dX := Gear^.dX + cWindSpeed; + doStepFallingGear(Gear); + CalcRotationDirAngle(Gear); + if (Gear^.State and gstCollision) <> 0 then + begin + kick:= hwRound((hwAbs(Gear^.dX)+hwAbs(Gear^.dY)) * _20); + Gear^.dY.isNegative:= not Gear^.dY.isNegative; + Gear^.dX.isNegative:= not Gear^.dX.isNegative; + AmmoShove(Gear, 1, kick); + for i:= 15 + kick div 10 downto 0 do + begin + particle := AddVisualGear(hwRound(Gear^.X) + Random(25), hwRound(Gear^.Y) + Random(25), vgtDust); + if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480) + end; + DeleteGear(Gear); + exit + end; + if ((GameTicks and $1F) = 0) and (Random(3) = 0) then + begin + particle:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtDust); + if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480) + end +end; + +procedure doStepSnowflake(Gear: PGear); +var xx, yy, px, py, i: LongInt; + move, allpx: Boolean; + s: PSDL_Surface; + p: PLongwordArray; + oAlpha, nAlpha: byte; +begin +if GameTicks and $7 = 0 then + begin + with Gear^ do + begin + X:= X + cWindSpeed * 1600 + dX; + Y:= Y + dY + cGravity * vobFallSpeed * 8; // using same value as flakes to try and get similar results + xx:= hwRound(X); + yy:= hwRound(Y); + if vobVelocity <> 0 then + begin + DirAngle := DirAngle + (Angle / 1250000000); + if DirAngle < 0 then DirAngle := DirAngle + 360 + else if 360 < DirAngle then DirAngle := DirAngle - 360; + end; + + inc(Health, 8); + if Health > vobFrameTicks then + begin + dec(Health, vobFrameTicks); + inc(Timer); + if Timer = vobFramesCount then Timer:= 0 + end; + + move:= false; + // move back to cloud layer + if yy > cWaterLine then move:= true + else if ((yy and LAND_HEIGHT_MASK) <> 0) or ((xx and LAND_WIDTH_MASK) <> 0) then move:=true + // Solid pixel encountered + else if (Land[yy, xx] <> 0) then + begin + // If there's room below keep falling + if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (Land[yy-1, xx] = 0) then + begin + X:= X - cWindSpeed * 1600 - dX; + end + // If there's room below, on the sides, fill the gaps + else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx-(1*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx-(1*hwSign(cWindSpeed)))] = 0) then + begin + X:= X - _0_8 * hwSign(cWindSpeed); + Y:= Y - dY - cGravity * vobFallSpeed * 8; + end + else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx-(2*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx-(2*hwSign(cWindSpeed)))] = 0) then + begin + X:= X - _0_8 * 2 * hwSign(cWindSpeed); + Y:= Y - dY - cGravity * vobFallSpeed * 8; + end + else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx+(1*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx+(1*hwSign(cWindSpeed)))] = 0) then + begin + X:= X + _0_8 * hwSign(cWindSpeed); + Y:= Y - dY - cGravity * vobFallSpeed * 8; + end + else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx+(2*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx+(2*hwSign(cWindSpeed)))] = 0) then + begin + X:= X + _0_8 * 2 * hwSign(cWindSpeed); + Y:= Y - dY - cGravity * vobFallSpeed * 8; + end + // if there's an hog/object below do nothing + else if ((((yy+1) and LAND_HEIGHT_MASK) = 0) and ((Land[yy+1, xx] and $FF) <> 0)) + then move:=true + else + begin + // we've collided with land. draw some stuff and get back into the clouds + move:= true; + if (CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtRope) then + begin + ////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS //////////////////////////////////// + dec(yy,3); + dec(xx,1); + s:= SpritesData[sprSnow].Surface; + p:= s^.pixels; + allpx:= true; + for py:= 0 to Pred(s^.h) do + begin + for px:= 0 to Pred(s^.w) do + if ((((yy + py) and LAND_HEIGHT_MASK) = 0) and (((xx + px) and LAND_WIDTH_MASK) = 0)) and ((Land[yy + py, xx + px] and $FF) = 0) then + begin + Land[yy + py, xx + px]:= Land[yy + py, xx + px] or lfObject; + if (cReducedQuality and rqBlurryLand) = 0 then + begin + LandPixels[yy + py, xx + px]:= addBgColor(LandPixels[yy + py, xx + px], p^[px]); + end + else + begin + LandPixels[(yy + py) div 2, (xx + px) div 2]:= addBgColor(LandPixels[(yy + py) div 2, (xx + px) div 2], p^[px]); + end; + end + else allpx:= false; + p:= @(p^[s^.pitch shr 2]) + end; + + + Land[py, px+1]:= lfBasic; + + if allpx then UpdateLandTexture(xx, Pred(s^.h), yy, Pred(s^.w)) + else + begin + UpdateLandTexture( + max(0, min(LAND_WIDTH, xx)), + min(LAND_WIDTH - xx, Pred(s^.w)), + max(0, min(LAND_WIDTH, yy)), + min(LAND_HEIGHT - yy, Pred(s^.h)) + ); + end; + ////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS //////////////////////////////////// + end + end; + end; + if move then + begin + X:= int2hwFloat(GetRandom(LAND_WIDTH+1024)-512); + Y:= int2hwFloat(750+(GetRandom(50)-25)) + end + end + end +end; + +//////////////////////////////////////////////////////////////////////////////// procedure doStepGrave(Gear: PGear); begin AllInactive := false; @@ -626,8 +787,8 @@ dec(Gear^.Timer); if Gear^.Timer = 0 then begin - PHedgehog(Gear^.Hedgehog)^.Gear^.Message:= PHedgehog(Gear^.Hedgehog)^.Gear^.Message and not gmAttack; - PHedgehog(Gear^.Hedgehog)^.Gear^.State:= PHedgehog(Gear^.Hedgehog)^.Gear^.State and not gstAttacking; + Gear^.Hedgehog^.Gear^.Message:= Gear^.Hedgehog^.Gear^.Message and not gmAttack; + Gear^.Hedgehog^.Gear^.State:= Gear^.Hedgehog^.Gear^.State and not gstAttacking; AttackBar:= 0; Gear^.SoundChannel := LoopSound(sndBee); @@ -736,7 +897,7 @@ dec(Gear^.Health, Gear^.Damage); Gear^.Damage := 0 end; - if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and (cWaterOpacity < $FF) then + if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) then begin for i:=(Gear^.Health - Gear^.Damage) * 4 downto 0 do begin @@ -797,6 +958,9 @@ procedure doStepDEagleShot(Gear: PGear); begin PlaySound(sndGun); + // add an initial step to avoid problem with ammoshove related to calculation of radius + 1 radius as gear widths + Gear^.X := Gear^.X + Gear^.dX; + Gear^.Y := Gear^.Y + Gear^.dY; Gear^.doStep := @doStepBulletWork end; @@ -806,7 +970,7 @@ shell: PVisualGear; begin cArtillery := true; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.State := HHGear^.State or gstNotKickable; HedgehogChAngle(HHGear); if not cLaserSighting then @@ -830,6 +994,9 @@ Gear^.dX := SignAs(AngleSin(HHGear^.Angle), HHGear^.dX) * _0_5; Gear^.dY := -AngleCos(HHGear^.Angle) * _0_5; PlaySound(sndGun); + // add an initial step to avoid problem with ammoshove related to calculation of radius + 1 radius as gear widths + Gear^.X := Gear^.X + Gear^.dX; + Gear^.Y := Gear^.Y + Gear^.dY; Gear^.doStep := @doStepBulletWork; end else @@ -895,61 +1062,66 @@ //////////////////////////////////////////////////////////////////////////////// procedure doStepPickHammerWork(Gear: PGear); var - i, ei: LongInt; + i, ei, x, y: LongInt; HHGear: PGear; begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; dec(Gear^.Timer); if (Gear^.Timer = 0)or((Gear^.Message and gmDestroy) <> 0)or((HHGear^.State and gstHHDriven) = 0) then - begin + begin StopSound(Gear^.SoundChannel); DeleteGear(Gear); AfterAttack; doStepHedgehogMoving(HHGear); // for gfInfAttack exit - end; - + end; + + x:= hwRound(Gear^.X); + y:= hwRound(Gear^.Y); if (Gear^.Timer mod 33) = 0 then - begin + begin HHGear^.State := HHGear^.State or gstNoDamage; - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y) + 7, 6, EXPLDontDraw); + doMakeExplosion(x, y + 7, 6, EXPLDontDraw); HHGear^.State := HHGear^.State and not gstNoDamage - end; + end; if (Gear^.Timer mod 47) = 0 then - begin - for i:= 0 to 1 do - AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); - i := hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2)); - ei := hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2)); + begin + // ok. this was an attempt to turn off dust if not actually drilling land. I have no idea why it isn't working as expected + if (( (y + 12) and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y + 12, x] > 255) then + for i:= 0 to 1 do + AddVisualGear(x - 5 + Random(10), y + 12, vgtDust); + + i := x - Gear^.Radius - LongInt(GetRandom(2)); + ei := x + Gear^.Radius + LongInt(GetRandom(2)); while i <= ei do - begin - DrawExplosion(i, hwRound(Gear^.Y) + 3, 3); + begin + DrawExplosion(i, y + 3, 3); inc(i, 1) - end; + end; if CheckLandValue(hwRound(Gear^.X + Gear^.dX + SignAs(_6,Gear^.dX)), hwRound(Gear^.Y + _1_9) , lfIndestructible) then - begin + begin Gear^.X := Gear^.X + Gear^.dX; Gear^.Y := Gear^.Y + _1_9; - end; + end; SetAllHHToActive; - end; + end; if TestCollisionYwithGear(Gear, 1) then - begin + begin Gear^.dY := _0; SetLittle(HHGear^.dX); HHGear^.dY := _0; - end + end else - begin + begin Gear^.dY := Gear^.dY + cGravity; Gear^.Y := Gear^.Y + Gear^.dY; if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer := 1 - end; + end; Gear^.X := Gear^.X + HHGear^.dX; HHGear^.X := Gear^.X; @@ -973,7 +1145,7 @@ HHGear: PGear; begin i := 0; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; y := hwRound(Gear^.Y) - cHHRadius * 2; while y < hwRound(Gear^.Y) do @@ -1005,7 +1177,7 @@ begin AllInactive := false; dec(Gear^.Timer); - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HedgehogChAngle(HHGear); @@ -1087,7 +1259,7 @@ begin BTPrevAngle := High(LongInt); BTSteps := 0; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.Message := 0; HHGear^.State := HHGear^.State or gstNotKickable; Gear^.doStep := @doStepBlowTorchWork @@ -1102,14 +1274,14 @@ var HHGear: PGear; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; if ((HHGear^.State and gstHHDriven) = 0) or (CheckGearDrowning(HHGear)) or TestCollisionYwithGear(HHGear, 1) then begin DeleteGear(Gear); isCursorVisible := false; - ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); + ApplyAmmoChanges(HHGear^.Hedgehog^); exit end; @@ -1121,18 +1293,18 @@ HHGear^.X := HHGear^.X + HHGear^.dX; HHGear^.Y := HHGear^.Y + HHGear^.dY; HHGear^.dY := HHGear^.dY + cGravity; - if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed * _0_2; + if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed / HHGear^.Density; if (Gear^.Message and gmAttack) <> 0 then begin Gear^.X := HHGear^.X; Gear^.Y := HHGear^.Y; - ApplyAngleBounds(PHedgehog(Gear^.Hedgehog)^, amRope); + ApplyAngleBounds(Gear^.Hedgehog^, amRope); Gear^.dX := SignAs(AngleSin(HHGear^.Angle), HHGear^.dX); Gear^.dY := -AngleCos(HHGear^.Angle); - Gear^.Friction := _450; + Gear^.Friction := _450 * _0_01 * cRopePercent; Gear^.Elasticity := _0; Gear^.State := Gear^.State and not gsttmpflag; Gear^.doStep := @doStepRope; @@ -1170,7 +1342,7 @@ end; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; if ((HHGear^.State and gstHHDriven) = 0) or (CheckGearDrowning(HHGear)) then @@ -1187,22 +1359,22 @@ if not TestCollisionYwithGear(HHGear, 1) then begin HHGear^.dY := HHGear^.dY + cGravity; - if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed * _0_2 + if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed / HHGear^.Density; end; + // vector between hedgehog and rope attaching point ropeDx := HHGear^.X - Gear^.X; - // vector between hedgehog and rope attaching point ropeDy := HHGear^.Y - Gear^.Y; mdX := ropeDx + HHGear^.dX; mdY := ropeDy + HHGear^.dY; len := _1 / Distance(mdX, mdY); + // rope vector plus hedgehog direction vector normalized mdX := mdX * len; - // rope vector plus hedgehog direction vector normalized mdY := mdY * len; + // for visual purposes only Gear^.dX := mdX; - // for visual purposes only Gear^.dY := mdY; ///// @@ -1240,7 +1412,7 @@ begin lx := hwRound(nx); ly := hwRound(ny); - if ((ly and LAND_HEIGHT_MASK) = 0) and ((lx and LAND_WIDTH_MASK) = 0) and (Land[ly, lx] <> 0) then + if ((ly and LAND_HEIGHT_MASK) = 0) and ((lx and LAND_WIDTH_MASK) = 0) and ((Land[ly, lx] and $FF00) <> 0) then begin ny := _1 / Distance(ropeDx, ropeDy); // old rope pos @@ -1330,10 +1502,47 @@ HHGear^.dY := HHGear^.dY * len; end; - + haveCollision:= ((hwRound(Gear^.Y) and LAND_HEIGHT_MASK) = 0) and ((hwRound(Gear^.X) and LAND_WIDTH_MASK) = 0) and ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) <> 0); + + if not haveCollision then + begin + // backup gear location + tx:= Gear^.X; + ty:= Gear^.Y; + + if RopePoints.Count > 0 then + begin + // set gear location to the remote end of the rope, the attachment point + Gear^.X:= RopePoints.ar[0].X; + Gear^.Y:= RopePoints.ar[0].Y; + end; + + CheckCollisionWithLand(Gear); + // if we haven't found any collision yet then check the otheer side too + if (Gear^.State and gstCollision) = 0 then + begin + Gear^.dX.isNegative:= not Gear^.dX.isNegative; + Gear^.dY.isNegative:= not Gear^.dY.isNegative; + CheckCollisionWithLand(Gear); + Gear^.dX.isNegative:= not Gear^.dX.isNegative; + Gear^.dY.isNegative:= not Gear^.dY.isNegative; + end; + + haveCollision:= (Gear^.State and gstCollision) <> 0; + + // restore gear location + Gear^.X:= tx; + Gear^.Y:= ty; + end; + + // if the attack key is pressed, lose rope contact as well if (Gear^.Message and gmAttack) <> 0 then + haveCollision:= false; + + if not haveCollision then + begin if (Gear^.State and gsttmpFlag) <> 0 then - with PHedgehog(Gear^.Hedgehog)^ do + with Gear^.Hedgehog^ do begin PlaySound(sndRopeRelease); if CurAmmoType <> amParachute then @@ -1341,10 +1550,11 @@ else DeleteMe end - else + end else if (Gear^.State and gsttmpFlag) = 0 then Gear^.State := Gear^.State or gsttmpFlag; + end; procedure doStepRopeAttach(Gear: PGear); @@ -1356,10 +1566,10 @@ begin if (Gear^.State and gstAttacked) = 0 then begin - OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^); + OnUsedAmmo(HHGear^.Hedgehog^); Gear^.State := Gear^.State or gstAttacked end; - ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^) + ApplyAmmoChanges(HHGear^.Hedgehog^) end; begin @@ -1367,7 +1577,7 @@ Gear^.Y := Gear^.Y - Gear^.dY; Gear^.Elasticity := Gear^.Elasticity + _1; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; DeleteCI(HHGear); if (HHGear^.State and gstMoving) <> 0 then @@ -1389,7 +1599,7 @@ HHGear^.Y := HHGear^.Y + HHGear^.dY; Gear^.Y := Gear^.Y + HHGear^.dY; HHGear^.dY := HHGear^.dY + cGravity; - if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed * _0_2 + if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed / HHGear^.Density end; tt := Gear^.Elasticity; @@ -1397,8 +1607,7 @@ ty := _0; while tt > _20 do begin - if TestCollisionXwithXYShift(Gear, tx, hwRound(ty), -hwSign(Gear^.dX)) - or TestCollisionYwithXYShift(Gear, hwRound(tx), hwRound(ty), -hwSign(Gear^.dY)) then + if ((hwRound(Gear^.Y+ty) and LAND_HEIGHT_MASK) = 0) and ((hwRound(Gear^.X+tx) and LAND_WIDTH_MASK) = 0) and ((Land[hwRound(Gear^.Y+ty), hwRound(Gear^.X+tx)] and $FF00) <> 0) then begin Gear^.X := Gear^.X + tx; Gear^.Y := Gear^.Y + ty; @@ -1422,7 +1631,7 @@ end; end; - CheckCollision(Gear); + CheckCollisionWithLand(Gear); if (Gear^.State and gstCollision) <> 0 then if Gear^.Elasticity < _10 then @@ -1447,7 +1656,7 @@ or ((HHGear^.State and gstHHDriven) = 0) or (HHGear^.Damage > 0) then begin - with PHedgehog(Gear^.Hedgehog)^.Gear^ do + with Gear^.Hedgehog^.Gear^ do begin State := State and not gstAttacking; Message := Message and not gmAttack @@ -1763,28 +1972,12 @@ if (Gear^.Tag = 0) and (Gear^.Timer < 1000) then inc(Gear^.Timer) else if Gear^.Tag = 1 then - begin - Gear^.Tag := 2; - if (TrainingFlags and tfTimeTrial) <> 0 then - begin - inc(TurnTimeLeft, TrainingTimeInc); - - if TrainingTimeInc > TrainingTimeInM then - dec(TrainingTimeInc, TrainingTimeInD); - if TurnTimeLeft > TrainingTimeMax then - TurnTimeLeft := TrainingTimeMax; - end; - end + Gear^.Tag := 2 else if Gear^.Tag = 2 then if Gear^.Timer > 0 then dec(Gear^.Timer) else begin - if (TrainingFlags and tfTargetRespawn) <> 0 then - begin - TrainingTargetGear := AddGear(0, 0, gtTarget, 0, _0, _0, 0); - FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); - end; DeleteGear(Gear); exit; end; @@ -1808,7 +2001,7 @@ var HHGear: PGear; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.State := HHGear^.State or gstNoDamage; DeleteCI(HHGear); @@ -1825,15 +2018,15 @@ HHGear: PGear; i: LongInt; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.State := HHGear^.State or gstNoDamage; DeleteCI(HHGear); for i:= 0 to 3 do - begin + begin AmmoShove(Gear, 30, 25); Gear^.X := Gear^.X + Gear^.dX * 5 - end; + end; HHGear^.State := (HHGear^.State and (not gstNoDamage)) or gstMoving; @@ -1857,13 +2050,12 @@ if ((GameTicks mod 100) = 0) then begin - vgt:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFire); + vgt:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFire, gstTmpFlag); if vgt <> nil then begin vgt^.dx:= 0; vgt^.dy:= 0; vgt^.FrameTicks:= 1800 div (Gear^.Tag mod 3 + 2); - vgt^.State:= gstTmpFlag; end; end; @@ -1978,7 +2170,7 @@ exit end; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; if hwRound(HHGear^.Y) <= Gear^.Tag - 2 then begin Gear^.Tag := hwRound(HHGear^.Y); @@ -2008,7 +2200,7 @@ HHGear: PGear; begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; DeleteCI(HHGear); HHGear^.X := int2hwFloat(hwRound(HHGear^.X)) - _0_5; HHGear^.dX := SignAs(cLittle, Gear^.dX); @@ -2021,7 +2213,7 @@ Gear^.doStep := @doStepFirePunchWork; DrawTunnel(HHGear^.X - int2hwFloat(cHHRadius), HHGear^.Y + _1, _0_5, _0, cHHRadius * 4, 5); - PlaySound(TSound(ord(sndFirePunch1) + GetRandom(6)), PHedgehog(HHGear^.Hedgehog)^.Team^. + PlaySound(TSound(ord(sndFirePunch1) + GetRandom(6)), HHGear^.Hedgehog^.Team^. voicepack) end; @@ -2031,7 +2223,7 @@ var HHGear: PGear; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; inc(Gear^.Timer); @@ -2049,18 +2241,20 @@ end; DeleteGear(Gear); isCursorVisible := false; - ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); + ApplyAmmoChanges(HHGear^.Hedgehog^); exit end; - if not TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then - HHGear^.X := HHGear^.X + cWindSpeed * 200; + HHGear^.X := HHGear^.X + cWindSpeed * 200; if (Gear^.Message and gmLeft) <> 0 then HHGear^.X := HHGear^.X - cMaxWindSpeed * 80 else if (Gear^.Message and gmRight) <> 0 then HHGear^.X := HHGear^.X + cMaxWindSpeed * 80; if (Gear^.Message and gmUp) <> 0 then HHGear^.Y := HHGear^.Y - cGravity * 40 else if (Gear^.Message and gmDown) <> 0 then HHGear^.Y := HHGear^.Y + cGravity * 40; + // don't drift into obstacles + if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then + HHGear^.X := HHGear^.X - int2hwFloat(hwSign(HHGear^.dX)); HHGear^.Y := HHGear^.Y + cGravity * 100; Gear^.X := HHGear^.X; Gear^.Y := HHGear^.Y @@ -2070,7 +2264,7 @@ var HHGear: PGear; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; DeleteCI(HHGear); @@ -2133,9 +2327,13 @@ Gear^.Y := int2hwFloat(topY-300); Gear^.dX := int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15); - if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) then - Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / - cGravity) * Gear^.Tag; + // calcs for Napalm Strike, so that it will hit the target (without wind at least :P) + if (Gear^.State = 2) then + Gear^.dX := Gear^.dX - cBombsSpeed * Gear^.Tag * 1000 // ^.Timer of gtNapalmBomb, make it a constant var if you prefer that :P + // calcs for regular falling gears + else if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) then + Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / + cGravity) * Gear^.Tag; Gear^.Health := 6; Gear^.doStep := @doStepAirAttackWork; @@ -2167,7 +2365,7 @@ begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; tx := int2hwFloat(TargetPoint.X); ty := int2hwFloat(TargetPoint.Y); x := HHGear^.X; @@ -2202,8 +2400,8 @@ var HHGear: PGear; begin - PHedgehog(Gear^.Hedgehog)^.Unplaced := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + Gear^.Hedgehog^.Unplaced := false; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.Y := HHGear^.Y + HHGear^.dY; // hedgehog falling to collect cases HHGear^.dY := HHGear^.dY + cGravity; @@ -2233,7 +2431,7 @@ begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; if not TryPlaceOnLand(TargetPoint.X - SpritesData[sprHHTelepMask].Width div 2, TargetPoint.Y - SpritesData[sprHHTelepMask].Height div 2, sprHHTelepMask, 0, false) then @@ -2275,14 +2473,14 @@ if ((Gear^.Message and not gmSwitch) <> 0) or (TurnTimeLeft = 0) then begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; Msg := Gear^.Message and not gmSwitch; DeleteGear(Gear); - OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^); - ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); + OnUsedAmmo(HHGear^.Hedgehog^); + ApplyAmmoChanges(HHGear^.Hedgehog^); HHGear := CurrentHedgehog^.Gear; - ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); + ApplyAmmoChanges(HHGear^.Hedgehog^); HHGear^.Message := Msg; exit end; @@ -2326,7 +2524,7 @@ begin Gear^.doStep := @doStepSwitcherWork; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; with HHGear^ do begin State := State and not gstAttacking; @@ -2377,7 +2575,7 @@ begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.State := HHGear^.State or gstNoDamage; DeleteCI(HHGear); @@ -2437,7 +2635,7 @@ if Gear^.Timer = 0 then begin Gear^.Pos := 1; - PlaySound(sndKamikaze, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + PlaySound(sndKamikaze, Gear^.Hedgehog^.Team^.voicepack); Gear^.doStep := @doStepKamikazeWork end end; @@ -2448,7 +2646,7 @@ begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.dX := Gear^.dX; HHGear^.dY := Gear^.dY; @@ -2637,7 +2835,7 @@ begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.Message := HHGear^.Message and (not gmAttack); DeleteCI(HHGear); Gear^.IntersectGear:= nil; @@ -2661,7 +2859,7 @@ if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) then if (Land[y, x] <> 0) then - begin + begin Gear^.dX.isNegative := not Gear^.dX.isNegative; Gear^.dY.isNegative := not Gear^.dY.isNegative; Gear^.dX := Gear^.dX * _1_5; @@ -2669,13 +2867,13 @@ AmmoShove(Gear, 0, 40); AfterAttack; DeleteGear(Gear) - end + end + else else - else - begin + begin AfterAttack; DeleteGear(Gear) - end + end end; procedure doStepSeductionWear(Gear: PGear); @@ -2687,7 +2885,7 @@ Gear^.Timer := 0; inc(Gear^.Pos); if Gear^.Pos = 5 then - PlaySound(sndYoohoo, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) + PlaySound(sndYoohoo, Gear^.Hedgehog^.Team^.voicepack) end; if Gear^.Pos = 14 then @@ -2697,7 +2895,7 @@ procedure doStepSeduction(Gear: PGear); begin AllInactive := false; - DeleteCI(PHedgehog(Gear^.Hedgehog)^.Gear); + DeleteCI(Gear^.Hedgehog^.Gear); Gear^.doStep := @doStepSeductionWear end; @@ -2732,6 +2930,9 @@ end; //////////////////////////////////////////////////////////////////////////////// +procedure doStepDrill(Gear: PGear); +forward; + procedure doStepDrillDrilling(Gear: PGear); var t: PGearArray; @@ -2760,10 +2961,11 @@ if (Gear^.Timer = 0) or (t^.Count <> 0) or (not TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) - and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))) + and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) + and ((Gear^.State and gsttmpFlag) = 0)) // CheckLandValue returns true if the type isn't matched or not CheckLandValue(hwRound(Gear^.X), hwRound(Gear^.Y), lfIndestructible) then - begin + begin //out of time or exited ground StopSound(Gear^.SoundChannel); if (Gear^.State and gsttmpFlag) <> 0 then @@ -2772,7 +2974,12 @@ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); DeleteGear(Gear); exit - end; + end + else if not TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) then + begin + StopSound(Gear^.SoundChannel); + Gear^.doStep := @doStepDrill + end; dec(Gear^.Timer); end; @@ -2836,7 +3043,7 @@ begin AllInactive := false; dec(Gear^.Timer); - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HedgehogChAngle(HHGear); gX := hwRound(Gear^.X) + GetLaunchX(amBallgun, hwSign(HHGear^.dX), HHGear^.Angle); gY := hwRound(Gear^.Y) + GetLaunchY(amBallgun, HHGear^.Angle); @@ -2864,7 +3071,7 @@ var HHGear: PGear; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.Message := HHGear^.Message and not (gmUp or gmDown); HHGear^.State := HHGear^.State or gstNotKickable; Gear^.doStep := @doStepBallgunWork @@ -2884,12 +3091,7 @@ begin AllInactive := false; - if ((TrainingFlags and tfRCPlane) = 0) and (Gear^.Timer > 0) then dec(Gear^.Timer); - - if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and ( - TimeTrialStartTime = 0) then TimeTrialStartTime := RealTicks; - - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; FollowGear := Gear; fChanged := false; @@ -2931,71 +3133,42 @@ Gear^.X := Gear^.X + Gear^.dX; Gear^.Y := Gear^.Y + Gear^.dY; - if (TrainingFlags and tfRCPlane) = 0 then + if (GameTicks and $FF) = 0 then + if Gear^.Timer < 3500 then + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace) + else + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); + + if ((HHGear^.Message and gmAttack) <> 0) and (Gear^.Health <> 0) then begin - if (GameTicks and $FF) = 0 then - if Gear^.Timer < 3500 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace) - else - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); - - if ((HHGear^.Message and gmAttack) <> 0) and (Gear^.Health <> 0) then - begin - HHGear^.Message := HHGear^.Message and not gmAttack; - AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY * - _0_5, 0); - dec(Gear^.Health) - end; - - if ((HHGear^.Message and gmLJump) <> 0) - and ((Gear^.State and gsttmpFlag) = 0) then - begin - Gear^.State := Gear^.State or gsttmpFlag; - PauseMusic; - playSound(sndRideOfTheValkyries); - end; - - // pickup bonuses - t := CheckGearNear(Gear, gtCase, 36, 36); - if t <> nil then - PickUp(HHGear, t); - end - else + HHGear^.Message := HHGear^.Message and not gmAttack; + AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY * + _0_5, 0); + dec(Gear^.Health) + end; + + if ((HHGear^.Message and gmLJump) <> 0) + and ((Gear^.State and gsttmpFlag) = 0) then begin - if (GameTicks and $FF) = 0 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); - - // pickup targets - t := CheckGearNear(Gear, gtTarget, 36, 36); - if t <> nil then - begin - if t^.Tag <> 0 then // collect it only once - exit; - PlaySound(sndShotgunReload); - t^.Tag := 1; - TrainingTargetGear := nil; - // remove target cursor - exit; - end; - - if (TurnTimeLeft > 0) then - dec(TurnTimeLeft) + Gear^.State := Gear^.State or gsttmpFlag; + PauseMusic; + playSound(sndRideOfTheValkyries); end; + // pickup bonuses + t := CheckGearNear(Gear, gtCase, 36, 36); + if t <> nil then + PickUp(HHGear, t); + CheckCollision(Gear); - if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and ( - TurnTimeLeft = 0)) - or CheckGearDrowning(Gear) then + if ((Gear^.State and gstCollision) <> 0) or CheckGearDrowning(Gear) then begin - if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and ( - TimeTrialStopTime = 0) then TimeTrialStopTime := RealTicks; StopSound(Gear^.SoundChannel); StopSound(sndRideOfTheValkyries); ResumeMusic; - if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and ( - TurnTimeLeft = 0)) then + if ((Gear^.State and gstCollision) <> 0) then begin doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, EXPLAutoSound); for i:= 0 to 32 do @@ -3012,10 +3185,6 @@ CurAmmoGear := nil; if (GameFlags and gfInfAttack) = 0 then TurnTimeLeft := 14 * 125; - if (TrainingFlags and tfRCPlane) <> 0 then - TurnTimeLeft := 0; - // HACK: RCPlane training allows unlimited plane starts in last 2 seconds - HHGear^.Message := 0; ParseCommand('/taunt '#1, true) end @@ -3025,7 +3194,7 @@ var HHGear: PGear; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.Message := 0; HHGear^.State := HHGear^.State or gstNotKickable; Gear^.Angle := HHGear^.Angle; @@ -3045,7 +3214,7 @@ isUnderwater:= cWaterLine < hwRound(Gear^.Y) + Gear^.Radius; if Gear^.Pos > 0 then dec(Gear^.Pos); AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; //dec(Gear^.Timer); move := _0_2; fuel := 50; @@ -3152,7 +3321,7 @@ end; DeleteGear(Gear); isCursorVisible := false; - ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); + ApplyAmmoChanges(HHGear^.Hedgehog^); // if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); // Gear^.Tex:= RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(round(Gear^.Health / 20)) + '%', cWhiteColor, fntSmall) @@ -3169,7 +3338,7 @@ Gear^.Pos:= 0; Gear^.doStep := @doStepJetpackWork; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; FollowGear := HHGear; AfterAttack; with HHGear^ do @@ -3376,7 +3545,7 @@ if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 11, EXPLPoisoned, $C0E0FFE0); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLPoisoned, $C0E0FFE0); PlaySound(sndEggBreak); AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg); vg := AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg); @@ -3396,8 +3565,7 @@ //////////////////////////////////////////////////////////////////////////////// procedure doPortalColorSwitch(); -var flags: LongWord; - CurWeapon: PAmmo; +var CurWeapon: PAmmo; begin if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) @@ -3408,11 +3576,10 @@ CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and not gmSwitch; CurWeapon:= GetAmmoEntry(CurrentHedgehog^); - flags := CurWeapon^.Timer and not 2; - if (flags and 1) = 0 then - CurWeapon^.Timer := flags or 1 + if CurWeapon^.Pos <> 0 then + CurWeapon^.Pos := 0 else - CurWeapon^.Timer := flags and not 1; + CurWeapon^.Pos := 1; end; end; @@ -3427,7 +3594,7 @@ // destroy portal if ground it was attached too is gone if ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) = 0) or (Gear^.Timer < 1) - or (PHedgehog(Gear^.Hedgehog) <> CurrentHedgehog) + or (Gear^.Hedgehog <> CurrentHedgehog) or (hwRound(Gear^.Y) > cWaterLine) then begin deleteGear(Gear); @@ -3636,7 +3803,7 @@ iterator^.dY:= iterator^.dY + hwAbs(cGravity * (iterator^.Y - conPortal^.Y)) end; - if not isbullet then + if not isbullet and (iterator^.Kind <> gtFlake) then FollowGear := iterator; //AddFileLog('portal''d'); @@ -3681,8 +3848,7 @@ s: hwFloat; procedure loadNewPortalBall(oldPortal: PGear; destroyGear: Boolean); -var - flags: LongWord; +var CurWeapon: PAmmo; begin if CurrentHedgehog <> nil then @@ -3691,18 +3857,19 @@ CurWeapon:= GetAmmoEntry(CurrentHedgehog^); if (CurAmmoType = amPortalGun) then begin - flags := CurWeapon^.Timer; - - if destroyGear xor ((oldPortal^.Tag and 2) = 0) then - flags := flags or 1 - else - flags := flags and not 1; - - CurWeapon^.Timer := flags and not 2; + if not destroyGear then + begin + // switch color of ball to opposite of oldPortal + if (oldPortal^.Tag and 2) = 0 then + CurWeapon^.Pos:= 1 + else + CurWeapon^.Pos:= 0; + end; + // make the ball visible + CurWeapon^.Timer := 0; end end; - if destroyGear then oldPortal^.Timer:= 0; end; @@ -3754,7 +3921,7 @@ doPortalColorSwitch(); doStepPerPixel(Gear, @doStepMovingPortal_real, true); if (Gear^.Timer < 1) - or (PHedgehog(Gear^.Hedgehog) <> CurrentHedgehog) then + or (Gear^.Hedgehog <> CurrentHedgehog) then deleteGear(Gear); end; @@ -3787,11 +3954,8 @@ newPortal^.Elasticity.isNegative := not newPortal^.Elasticity.isNegative; // make portal gun look unloaded - CurWeapon^.Timer := CurWeapon^.Timer or 2; - - // set portal to the currently chosen color - if ((CurWeapon^.Timer and 1) <> 0) then - newPortal^.Tag := newPortal^.Tag or 2; + if (CurWeapon <> nil) and (CurAmmoType = amPortalGun) then + CurWeapon^.Timer := CurWeapon^.Timer or 2; iterator := GearsList; while iterator <> nil do @@ -4047,7 +4211,7 @@ Fire: PGear; begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HedgehogChAngle(HHGear); gX := hwRound(Gear^.X) + GetLaunchX(amBallgun, hwSign(HHGear^.dX), HHGear^.Angle); gY := hwRound(Gear^.Y) + GetLaunchY(amBallgun, HHGear^.Angle); @@ -4111,7 +4275,7 @@ var HHGear: PGear; begin - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; HHGear^.Message := HHGear^.Message and not (gmUp or gmDown or gmLeft or gmRight); HHGear^.State := HHGear^.State or gstNotKickable; Gear^.doStep := @doStepFlamethrowerWork @@ -4140,7 +4304,7 @@ t: PGearArray; i: LongInt; begin -HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; +HHGear:= Gear^.Hedgehog^.Gear; HHGear^.State:= HHGear^.State or gstNoDamage; DeleteCI(HHGear); @@ -4181,7 +4345,7 @@ HHGear: PGear; begin AllInactive := false; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; dec(Gear^.Timer); if (HHGear = nil) or (Gear^.Timer = 0) or ((Gear^.Message and gmDestroy) <> 0) then begin @@ -4234,7 +4398,7 @@ HHGear: PGear; begin i := 0; - HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; + HHGear := Gear^.Hedgehog^.Gear; y := hwRound(Gear^.Y) - cHHRadius * 2; while y < hwRound(Gear^.Y) do @@ -4265,9 +4429,12 @@ dec(TurnTimeLeft); AllInactive := false; - hh := PHedgehog(Gear^.Hedgehog); - DrawCentered(hwRound(hh^.Gear^.X) + WorldDx, hwRound(hh^.Gear^.Y) + WorldDy - + hh := Gear^.Hedgehog; + + // no, you can't do that here + {DrawCentered(hwRound(hh^.Gear^.X) + WorldDx, hwRound(hh^.Gear^.Y) + WorldDy - cHHRadius - 14 - hh^.HealthTagTex^.h, hh^.HealthTagTex); + } (*DrawCircle(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Radius, 1.5, 0, 0, $FF, $FF);*) @@ -4321,13 +4488,13 @@ resgear^.Health := graves[i]^.Health; PHedgehog(graves[i]^.Hedgehog)^.Gear := resgear; DeleteGear(graves[i]); - RenderHealth(PHedgehog(resgear^.Hedgehog)^); - RecountTeamHealth(Phedgehog(resgear^.Hedgehog)^.Team); - PHedgehog(resgear^.Hedgehog)^.Effects[heResurrected]:= true; - if PHedgehog(resgear^.Hedgehog)^.Hat = 'NoHat' then + RenderHealth(resgear^.Hedgehog^); + RecountTeamHealth(resgear^.Hedgehog^.Team); + resgear^.Hedgehog^.Effects[heResurrected]:= true; + if resgear^.Hedgehog^.Hat = 'NoHat' then begin - FreeTexture(PHedgehog(resgear^.Hedgehog)^.HatTex); - PHedgehog(resgear^.Hedgehog)^.HatTex := Surface2Tex( + FreeTexture(resgear^.Hedgehog^.HatTex); + resgear^.Hedgehog^.HatTex := Surface2Tex( LoadImage(Pathz[ptHats] + '/Reserved/Zombie', ifNone), True) end
--- a/hedgewars/GearDrawing.inc Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,854 +0,0 @@ -procedure DrawHH(Gear: PGear; ox, oy: LongInt); -var i, t: LongInt; - amt: TAmmoType; - sign, hx, hy, cx, cy, tx, ty, sx, sy, m: LongInt; // hedgehog, crosshair, temp, sprite, direction - dx, dy, ax, ay, aAngle, dAngle, hAngle, lx, ly: real; // laser, change - defaultPos, HatVisible: boolean; - HH: PHedgehog; - CurWeapon: PAmmo; -begin -HH:= PHedgehog(Gear^.Hedgehog); -if HH^.Unplaced then exit; -m:= 1; -if ((Gear^.State and gstHHHJump) <> 0) and not cArtillery then m:= -1; -sx:= ox + 1; // this offset is very common -sy:= oy - 3; -sign:= hwSign(Gear^.dX); - -if (Gear^.State and gstHHDeath) <> 0 then - begin - DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos); - Tint(HH^.Team^.Clan^.Color); - DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos + 8); - Tint($FF, $FF, $FF, $FF); - exit - end -else if (Gear^.State and gstHHGone) <> 0 then - begin - DrawRotatedF(sprTeleport, sx, sy, Gear^.Pos, sign, 0); - exit - end; - -defaultPos:= true; -HatVisible:= false; - - -if HH^.Effects[hePoisoned] then - begin - Tint($00, $FF, $40, $40); - DrawRotatedTextureF(SpritesData[sprSmokeWhite].texture, 2, 0, 0, sx, sy, 0, 1, 22, 22, (RealTicks shr 36) mod 360); - Tint($FF, $FF, $FF, $FF) - end; - -if ((Gear^.State and gstWinner) <> 0) and - ((CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtPickHammer)) then - begin - DrawHedgehog(sx, sy, - sign, - 2, - 0, - 0); - defaultPos:= false - end; -if (Gear^.State and gstDrowning) <> 0 then - begin - DrawHedgehog(sx, sy, - sign, - 1, - 7, - 0); - defaultPos:= false - end else -if (Gear^.State and gstLoser) <> 0 then - begin - DrawHedgehog(sx, sy, - sign, - 2, - 3, - 0); - defaultPos:= false - end else - -if (Gear^.State and gstHHDriven) <> 0 then - begin - if ((Gear^.State and gstHHThinking) = 0) and - (ShowCrosshair or ((CurAmmoGear <> nil) and (CurAmmoGear^.Kind = gtRope))) and - ((Gear^.State and (gstAttacked or gstAnimation)) = 0) then - begin -(* These calculations are a little complex for a few reasons: - 1: I need to draw the laser from weapon origin to nearest land - 2: I need to start the beam outside the hedgie for attractiveness. - 3: I need to extend the beam beyond land. - This routine perhaps should be pushed into uStore or somesuch instead of continuuing the increase in size of this function. -*) - dx:= sign * m * Sin(Gear^.Angle * pi / cMaxAngle); - dy:= -Cos(Gear^.Angle * pi / cMaxAngle); - if cLaserSighting then - begin - lx:= GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle); - ly:= GetLaunchY(HH^.CurAmmoType, Gear^.Angle); - - // ensure we start outside the hedgehog (he's solid after all) - while abs(lx * lx + ly * ly) < (Gear^.radius * Gear^.radius) do - begin - lx:= lx + dx; - ly:= ly + dy - end; - - // add hog's position - lx:= lx + ox - WorldDx; - ly:= ly + oy - WorldDy; - - // decrease number of iterations required - ax:= dx * 4; - ay:= dy * 4; - - tx:= round(lx); - ty:= round(ly); - hx:= tx; - hy:= ty; - while ((ty and LAND_HEIGHT_MASK) = 0) and - ((tx and LAND_WIDTH_MASK) = 0) and - (Land[ty, tx] = 0) do // TODO: check for constant variable instead - begin - lx:= lx + ax; - ly:= ly + ay; - tx:= round(lx); - ty:= round(ly) - end; - // reached edge of land. assume infinite beam. Extend it way out past camera - if ((ty and LAND_HEIGHT_MASK) <> 0) or ((tx and LAND_WIDTH_MASK) <> 0) then - begin - tx:= round(lx + ax * (LAND_WIDTH div 4)); - ty:= round(ly + ay * (LAND_WIDTH div 4)); - end; - - //if (abs(lx-tx)>8) or (abs(ly-ty)>8) then - begin - DrawLine(hx, hy, tx, ty, 1.0, $FF, $00, $00, $C0); - end; - end; - // draw crosshair - cx:= Round(hwRound(Gear^.X) + dx * 80 + GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle)); - cy:= Round(hwRound(Gear^.Y) + dy * 80 + GetLaunchY(HH^.CurAmmoType, Gear^.Angle)); - DrawRotatedTex(HH^.Team^.CrosshairTex, - 12, 12, cx + WorldDx, cy + WorldDy, 0, - sign * (Gear^.Angle * 180.0) / cMaxAngle); - end; - hx:= ox + 8 * sign; - hy:= oy - 2; - aangle:= Gear^.Angle * 180 / cMaxAngle - 90; - if CurAmmoGear <> nil then - begin - case CurAmmoGear^.Kind of - gtShotgunShot: begin - if (CurAmmoGear^.State and gstAnimation <> 0) then - DrawRotated(sprShotgun, hx, hy, sign, aangle) - else - DrawRotated(sprHandShotgun, hx, hy, sign, aangle); - end; - gtDEagleShot: DrawRotated(sprDEagle, hx, hy, sign, aangle); - gtSniperRifleShot: begin - if (CurAmmoGear^.State and gstAnimation <> 0) then - DrawRotatedF(sprSniperRifle, hx, hy, 1, sign, aangle) - else - DrawRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle) - end; - gtBallgun: DrawRotated(sprHandBallgun, hx, hy, sign, aangle); - gtRCPlane: begin - DrawRotated(sprHandPlane, hx, hy, sign, 0); - defaultPos:= false - end; - gtRope: begin - if Gear^.X < CurAmmoGear^.X then - begin - dAngle:= 0; - hAngle:= 180; - i:= 1 - end else - begin - dAngle:= 180; - hAngle:= 0; - i:= -1 - end; - if ((Gear^.State and gstWinner) = 0) then - begin - DrawHedgehog(ox, oy, - i, - 1, - 0, - DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle); - with HH^ do - if (HatTex <> nil) then - begin - DrawRotatedTextureF(HatTex, 1.0, -1.0, -6.0, ox, oy, 0, i, 32, 32, - i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); - if HatTex^.w > 64 then - begin - Tint(HH^.Team^.Clan^.Color); - DrawRotatedTextureF(HatTex, 1.0, -1.0, -6.0, ox, oy, 32, i, 32, 32, - i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); - Tint($FF, $FF, $FF, $FF) - end - end - end; - DrawAltWeapon(Gear, ox, oy); - defaultPos:= false - end; - gtBlowTorch: begin - DrawRotated(sprBlowTorch, hx, hy, sign, aangle); - DrawHedgehog(sx, sy, - sign, - 3, - HH^.visStepPos div 2, - 0); - with HH^ do - if (HatTex <> nil) then - begin - DrawTextureF(HatTex, - 1, - sx, - sy - 5, - 0, - sign, - 32, - 32); - if HatTex^.w > 64 then - begin - Tint(HH^.Team^.Clan^.Color); - DrawTextureF(HatTex, - 1, - sx, - sy - 5, - 32, - sign, - 32, - 32); - Tint($FF, $FF, $FF, $FF) - end - end; - defaultPos:= false - end; - gtShover: DrawRotated(sprHandBaseball, hx, hy, sign, aangle + 180); - gtFirePunch: begin - DrawHedgehog(sx, sy, - sign, - 1, - 4, - 0); - defaultPos:= false - end; - gtPickHammer: begin - defaultPos:= false; - dec(sy,20); - end; - gtTeleport: defaultPos:= false; - gtWhip: begin - DrawRotatedF(sprWhip, - sx, - sy, - 1, - sign, - 0); - defaultPos:= false - end; - gtHammer: begin - DrawRotatedF(sprHammer, - sx, - sy, - 1, - sign, - 0); - defaultPos:= false - end; - gtResurrector: begin - DrawRotated(sprHandResurrector, sx, sy, 0, 0); - defaultPos:= false - end; - gtKamikaze: begin - if CurAmmoGear^.Pos = 0 then - DrawHedgehog(sx, sy, - sign, - 1, - 6, - 0) - else - DrawRotatedF(sprKamikaze, - ox, oy, - CurAmmoGear^.Pos - 1, - sign, - aangle); - defaultPos:= false - end; - gtSeduction: begin - if CurAmmoGear^.Pos >= 6 then - DrawHedgehog(sx, sy, - sign, - 2, - 2, - 0) - else - begin - DrawRotatedF(sprDress, - ox, oy, - CurAmmoGear^.Pos, - sign, - 0); - DrawSprite(sprCensored, ox - 32, oy - 20, 0) - end; - defaultPos:= false - end; - gtFlamethrower: begin - DrawRotatedF(sprHandFlamethrower, hx, hy, (RealTicks div 125) mod 4, sign, aangle); - if CurAmmoGear^.Tex <> nil then DrawCentered(sx, sy - 40, CurAmmoGear^.Tex) - end; - end; - - case CurAmmoGear^.Kind of - gtShotgunShot, - gtDEagleShot, - gtSniperRifleShot, - gtShover: begin - DrawHedgehog(sx, sy, - sign, - 0, - 4, - 0); - defaultPos:= false; - HatVisible:= true - end - end - end else - - if ((Gear^.State and gstHHJumping) <> 0) then - begin - DrawHedgehog(sx, sy, - sign*m, - 1, - 1, - 0); - HatVisible:= true; - defaultPos:= false - end else - - if (Gear^.Message and (gmLeft or gmRight) <> 0) and (not isCursorVisible) then - begin - DrawHedgehog(sx, sy, - sign, - 0, - HH^.visStepPos div 2, - 0); - defaultPos:= false; - HatVisible:= true - end - else - - if ((Gear^.State and gstAnimation) <> 0) then - begin - if (TWave(Gear^.Tag) < Low(TWave)) or (TWave(Gear^.Tag) > High(TWave)) then - begin - Gear^.State:= Gear^.State and not gstAnimation; - end - else - begin - DrawRotatedF(Wavez[TWave(Gear^.Tag)].Sprite, - sx, - sy, - Gear^.Pos, - sign, - 0.0); - defaultPos:= false - end - end - else - if ((Gear^.State and gstAttacked) = 0) then - begin - if HH^.Timer > 0 then - begin - // There must be a tidier way to do this. Anyone? - if aangle <= 90 then aangle:= aangle+360; - if Gear^.dX > _0 then aangle:= aangle-((aangle-240)*HH^.Timer/10) - else aangle:= aangle+((240-aangle)*HH^.Timer/10); - dec(HH^.Timer) - end; - amt:= CurrentHedgehog^.CurAmmoType; - CurWeapon:= GetAmmoEntry(HH^); - case amt of - amBazooka: DrawRotated(sprHandBazooka, hx, hy, sign, aangle); - amMortar: DrawRotated(sprHandMortar, hx, hy, sign, aangle); - amMolotov: DrawRotated(sprHandMolotov, hx, hy, sign, aangle); - amBallgun: DrawRotated(sprHandBallgun, hx, hy, sign, aangle); - amDrill: DrawRotated(sprHandDrill, hx, hy, sign, aangle); - amRope: DrawRotated(sprHandRope, hx, hy, sign, aangle); - amShotgun: DrawRotated(sprHandShotgun, hx, hy, sign, aangle); - amDEagle: DrawRotated(sprHandDEagle, hx, hy, sign, aangle); - amSineGun: DrawRotated(sprHandShotgun, hx, hy, sign, aangle); - amPortalGun: if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer? - DrawRotatedF(sprPortalGun, hx, hy, 0, sign, aangle) - else - DrawRotatedF(sprPortalGun, hx, hy, 1+(CurWeapon^.Timer and 1), sign, aangle); - amSniperRifle: DrawRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle); - amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, sign, aangle); - amCake: DrawRotated(sprHandCake, hx, hy, sign, aangle); - amGrenade: DrawRotated(sprHandGrenade, hx, hy, sign, aangle); - amWatermelon: DrawRotated(sprHandMelon, hx, hy, sign, aangle); - amSkip: DrawRotated(sprHandSkip, hx, hy, sign, aangle); - amClusterBomb: DrawRotated(sprHandCluster, hx, hy, sign, aangle); - amDynamite: DrawRotated(sprHandDynamite, hx, hy, sign, aangle); - amHellishBomb: DrawRotated(sprHandHellish, hx, hy, sign, aangle); - amGasBomb: DrawRotated(sprHandCheese, hx, hy, sign, aangle); - amMine: DrawRotated(sprHandMine, hx, hy, sign, aangle); - amSMine: DrawRotated(sprHandSMine, hx, hy, sign, aangle); - amSeduction: DrawRotated(sprHandSeduction, hx, hy, sign, aangle); - amVampiric: DrawRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle); - amRCPlane: begin - DrawRotated(sprHandPlane, hx, hy, sign, 0); - defaultPos:= false - end; - amGirder: begin - DrawRotated(sprHandConstruction, hx, hy, sign, aangle); - DrawSpriteClipped(sprGirder, - ox-256, - oy-256, - LongInt(topY)+WorldDy, - LongInt(rightX)+WorldDx, - cWaterLine+WorldDy, - LongInt(leftX)+WorldDx) - end; - amBee: DrawRotatedF(sprHandBee, hx, hy, (RealTicks div 125) mod 4, sign, aangle); - amFlamethrower: DrawRotatedF(sprHandFlamethrower, hx, hy, (RealTicks div 125) mod 4, sign, aangle); - amResurrector: DrawCircle(ox, oy, 98, 4, $F5, $DB, $35, $AA); // I'd rather not like to hardcode 100 here - end; - - case amt of - amAirAttack, - amMineStrike, - amDrillStrike: DrawRotated(sprHandAirAttack, sx, oy, sign, 0); - amPickHammer: DrawHedgehog(sx, sy, - sign, - 1, - 2, - 0); - amTeleport: DrawRotatedF(sprTeleport, sx, sy, 0, sign, 0); - amKamikaze: DrawHedgehog(sx, sy, - sign, - 1, - 5, - 0); - amWhip: DrawRotatedF(sprWhip, - sx, - sy, - 0, - sign, - 0); - amHammer: DrawRotatedF(sprHammer, - sx, - sy, - 0, - sign, - 0); - else - DrawHedgehog(sx, sy, - sign, - 0, - 4, - 0); - - HatVisible:= true; - (* with HH^ do - if (HatTex <> nil) - and (HatVisibility > 0) then - DrawTextureF(HatTex, - HatVisibility, - sx, - sy - 5, - 0, - sign, - 32, - 32); *) - end; - - case amt of - amBaseballBat: DrawRotated(sprHandBaseball, - sx - 4 * sign, - sy + 9, sign, aangle); - end; - - defaultPos:= false - end; - -end else // not gstHHDriven - begin - if (Gear^.Damage > 0) - and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then - begin - DrawHedgehog(sx, sy, - sign, - 2, - 1, - Gear^.DirAngle); - defaultPos:= false - end else - - if ((Gear^.State and gstHHJumping) <> 0) then - begin - DrawHedgehog(sx, sy, - sign*m, - 1, - 1, - 0); - defaultPos:= false - end; - end; - -with HH^ do - begin - if defaultPos then - begin - DrawRotatedF(sprHHIdle, - sx, - sy, - (RealTicks div 128 + Gear^.Pos) mod 19, - sign, - 0); - HatVisible:= true; - end; - - if HatVisible then - if HatVisibility < 1.0 then - HatVisibility:= HatVisibility + 0.2 - else - else - if HatVisibility > 0.0 then - HatVisibility:= HatVisibility - 0.2; - - if (HatTex <> nil) - and (HatVisibility > 0) then - if DefaultPos then - begin - DrawTextureF(HatTex, - HatVisibility, - sx, - sy - 5, - (RealTicks div 128 + Gear^.Pos) mod 19, - sign, - 32, - 32); - if HatTex^.w > 64 then - begin - Tint(HH^.Team^.Clan^.Color); - DrawTextureF(HatTex, - HatVisibility, - sx, - sy - 5, - (RealTicks div 128 + Gear^.Pos) mod 19 + 32, - sign, - 32, - 32); - Tint($FF, $FF, $FF, $FF) - end - end - else - begin - DrawTextureF(HatTex, - HatVisibility, - sx, - sy - 5, - 0, - sign*m, - 32, - 32); - if HatTex^.w > 64 then - begin - Tint(HH^.Team^.Clan^.Color); - DrawTextureF(HatTex, - HatVisibility, - sx, - sy - 5, - 32, - sign*m, - 32, - 32); - Tint($FF, $FF, $FF, $FF) - end - end - end; -if (Gear^.State and gstHHDriven) <> 0 then - begin -(* if (CurAmmoGear = nil) then - begin - amt:= CurrentHedgehog^.CurAmmoType; - case amt of - amJetpack: DrawSprite(sprJetpack, sx-32, sy-32, 0); - end - end; *) - if CurAmmoGear <> nil then - begin - case CurAmmoGear^.Kind of - gtJetpack: begin - DrawSprite(sprJetpack, sx-32, sy-32, 0); - if cWaterLine > hwRound(Gear^.Y) + Gear^.Radius then - begin - if (CurAmmoGear^.MsgParam and gmUp) <> 0 then DrawSprite(sprJetpack, sx-32, sy-28, 1); - if (CurAmmoGear^.MsgParam and gmLeft) <> 0 then DrawSprite(sprJetpack, sx-28, sy-28, 2); - if (CurAmmoGear^.MsgParam and gmRight) <> 0 then DrawSprite(sprJetpack, sx-36, sy-28, 3) - end; - if CurAmmoGear^.Tex <> nil then DrawCentered(sx, sy - 40, CurAmmoGear^.Tex); - DrawAltWeapon(Gear, sx, sy) - end; - end; - end - end; - -with HH^ do - begin - if ((Gear^.State and not gstWinner) = 0) - or ((Gear^.State = gstWait) and (Gear^.dY.QWordValue = 0)) - or (bShowFinger and ((Gear^.State and gstHHDriven) <> 0)) then - begin - t:= sy - cHHRadius - 9; - if (cTagsMask and htTransparent) <> 0 then - Tint($FF, $FF, $FF, $80); - if ((cTagsMask and htHealth) <> 0) then - begin - dec(t, HealthTagTex^.h + 2); - DrawCentered(ox, t, HealthTagTex) - end; - if (cTagsMask and htName) <> 0 then - begin - dec(t, NameTagTex^.h + 2); - DrawCentered(ox, t, NameTagTex) - end; - if (cTagsMask and htTeamName) <> 0 then - begin - dec(t, Team^.NameTagTex^.h + 2); - DrawCentered(ox, t, Team^.NameTagTex) - end; - if (cTagsMask and htTransparent) <> 0 then - Tint($FF, $FF, $FF, $FF) - end; - if (Gear^.State and gstHHDriven) <> 0 then // Current hedgehog - begin - if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then - DrawSprite(sprFinger, ox - 16, oy - 64, - GameTicks div 32 mod 16); - - if (Gear^.State and gstDrowning) = 0 then - if (Gear^.State and gstHHThinking) <> 0 then - DrawSprite(sprQuestion, ox - 10, oy - cHHRadius - 34, (RealTicks shr 9) mod 8) - end - end; - -if HH^.Effects[hePoisoned] then - begin - Tint($00, $FF, $40, $80); - DrawRotatedTextureF(SpritesData[sprSmokeWhite].texture, 1.5, 0, 0, sx, sy, 0, 1, 22, 22, 360 - (RealTicks shr 37) mod 360); - end; -if HH^.Effects[heResurrected] then - begin - Tint($f5, $db, $35, $20); - DrawSprite(sprVampiric, sx - 24, sy - 24, 0); - end; - -if Gear^.Invulnerable then - begin - Tint($FF, $FF, $FF, max($40, floor($FF * abs(1 - ((RealTicks div 2 + Gear^.uid * 491) mod 1500) / 750)))); - DrawSprite(sprInvulnerable, sx - 24, sy - 24, 0); - end; -if cVampiric and - (CurrentHedgehog^.Gear <> nil) and - (CurrentHedgehog^.Gear = Gear) then - begin - Tint($FF, 0, 0, max($40, floor($FF * abs(1 - (RealTicks mod 1500) / 750)))); - DrawSprite(sprVampiric, sx - 24, sy - 24, 0); - end; - Tint($FF, $FF, $FF, $FF) -end; - -procedure DrawGears; -var Gear, HHGear: PGear; - i: Longword; - x, y, startX, endX, startY, endY: LongInt; -begin -Gear:= GearsList; -while Gear<>nil do - begin - x:= hwRound(Gear^.X) + WorldDx; - y:= hwRound(Gear^.Y) + WorldDy; - case Gear^.Kind of - gtBomb: DrawRotated(sprBomb, x, y, 0, Gear^.DirAngle); - gtGasBomb: DrawRotated(sprCheese, x, y, 0, Gear^.DirAngle); - gtMolotov: DrawRotated(sprMolotov, x, y, 0, Gear^.DirAngle); - - gtRCPlane: begin - if (Gear^.Tag = -1) then - DrawRotated(sprPlane, x, y, -1, DxDy2Angle(Gear^.dX, Gear^.dY) + 90) - else - DrawRotated(sprPlane, x, y,0,DxDy2Angle(Gear^.dY, Gear^.dX)); - if ((TrainingFlags and tfRCPlane) <> 0) and (TrainingTargetGear <> nil) and ((Gear^.State and gstDrowning) = 0) then - DrawRotatedf(sprFinger, x, y, GameTicks div 32 mod 16, 0, DxDy2Angle(Gear^.X - TrainingTargetGear^.X, TrainingTargetGear^.Y - Gear^.Y)); - end; - gtBall: DrawRotatedf(sprBalls, x, y, Gear^.Tag,0, Gear^.DirAngle); - - gtPortal: if ((Gear^.Tag and 1) = 0) // still moving? - or (Gear^.IntersectGear = nil) or (Gear^.IntersectGear^.IntersectGear <> Gear) // not linked&backlinked? - or ((Gear^.IntersectGear^.Tag and 1) = 0) then // linked portal still moving? - DrawRotatedf(sprPortal, x, y, Gear^.Tag, hwSign(Gear^.dX), Gear^.DirAngle) - else DrawRotatedf(sprPortal, x, y, 4 + Gear^.Tag div 2, hwSign(Gear^.dX), Gear^.DirAngle); - - gtDrill: if (Gear^.State and gsttmpFlag) <> 0 then - DrawRotated(sprAirDrill, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)) - else - DrawRotated(sprDrill, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); - - gtHedgehog: DrawHH(Gear, x, y); - - gtShell: DrawRotated(sprBazookaShell, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); - - gtGrave: begin - DrawTextureF(PHedgehog(Gear^.Hedgehog)^.Team^.GraveTex, 1, x, y, (GameTicks shr 7+Gear^.uid) and 7, 1, 32, 32); - if Gear^.Health > 0 then - begin - //Tint($33, $33, $FF, max($40, floor($FF * abs(1 - (GameTicks mod (6000 div Gear^.Health)) / 750)))); - Tint($f5, $db, $35, max($40, floor($FF * abs(1 - (GameTicks mod 1500) / (750 + Gear^.Health))))); - //Tint($FF, $FF, $FF, max($40, floor($FF * abs(1 - (RealTicks mod 1500) / 750)))); - DrawSprite(sprVampiric, x - 24, y - 24, 0); - Tint($FF, $FF, $FF, $FF) - end - end; - gtBee: DrawRotatedF(sprBee, x, y, (GameTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); - gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0); - gtRope: DrawRope(Gear); - gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then - DrawRotated(sprMineOff, x, y, 0, Gear^.DirAngle) - else if Gear^.Health <> 0 then DrawRotated(sprMineOn, x, y, 0, Gear^.DirAngle) - else DrawRotated(sprMineDead, x, y, 0, Gear^.DirAngle); - gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then - DrawRotated(sprSMineOff, x, y, 0, Gear^.DirAngle) - else if Gear^.Health <> 0 then DrawRotated(sprSMineOn, x, y, 0, Gear^.DirAngle) - else DrawRotated(sprMineDead, x, y, 0, Gear^.DirAngle); - gtCase: case Gear^.Pos of - posCaseAmmo : begin - i:= (GameTicks shr 6) mod 64; - if i > 18 then i:= 0; - DrawSprite(sprCase, x - 24, y - 24, i); - end; - posCaseHealth: begin - i:= ((GameTicks shr 6) + 38) mod 64; - if i > 13 then i:= 0; - DrawSprite(sprFAid, x - 24, y - 24, i); - end; - posCaseUtility: begin - i:= (GameTicks shr 6) mod 70; - if i > 23 then i:= 0; - i:= i mod 12; - DrawSprite(sprUtility, x - 24, y - 24, i); - end; - end; - gtExplosives: begin - if ((Gear^.State and gstDrowning) <> 0) then - DrawSprite(sprExplosivesRoll, x - 24, y - 24, 0) - else if Gear^.State and gstAnimation = 0 then - begin - i:= (GameTicks shr 6 + Gear^.uid*3) mod 64; - if i > 18 then i:= 0; - DrawSprite(sprExplosives, x - 24, y - 24, i) - end - else if Gear^.State and gsttmpFlag = 0 then - DrawRotatedF(sprExplosivesRoll, x, y + 4, 0, 0, Gear^.DirAngle) - else - DrawRotatedF(sprExplosivesRoll, x, y + 4, 1, 0, Gear^.DirAngle); - end; - gtDynamite: DrawSprite2(sprDynamite, x - 16, y - 25, Gear^.Tag and 1, Gear^.Tag shr 1); - gtClusterBomb: DrawRotated(sprClusterBomb, x, y, 0, Gear^.DirAngle); - gtCluster: DrawSprite(sprClusterParticle, x - 8, y - 8, 0); - gtFlame: DrawTextureF(SpritesData[sprFlame].Texture, 2 / (Gear^.Tag mod 3 + 2), x, y, (GameTicks shr 7 + LongWord(Gear^.Tag)) mod 8, 1, 16, 16); - gtParachute: begin - DrawSprite(sprParachute, x - 24, y - 48, 0); - DrawAltWeapon(Gear, x + 1, y - 3) - end; - gtAirAttack: if Gear^.Tag > 0 then DrawSprite(sprAirplane, x - SpritesData[sprAirplane].Width div 2, y - SpritesData[sprAirplane].Height div 2, 0) - else DrawSprite(sprAirplane, x - SpritesData[sprAirplane].Width div 2, y - SpritesData[sprAirplane].Height div 2, 1); - gtAirBomb: DrawRotated(sprAirBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); - gtTeleport: begin - HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; - if not PHedgehog(Gear^.Hedgehog)^.Unplaced then DrawRotatedF(sprTeleport, x + 1, y - 3, Gear^.Pos, hwSign(Gear^.dX), 0); - DrawRotatedF(sprTeleport, hwRound(HHGear^.X) + 1 + WorldDx, hwRound(HHGear^.Y) - 3 + WorldDy, 11 - Gear^.Pos, hwSign(HHGear^.dX), 0); - end; - gtSwitcher: DrawSprite(sprSwitch, x - 16, y - 56, (GameTicks shr 6) mod 12); - gtTarget: begin - Tint($FF, $FF, $FF, floor($FF * Gear^.Timer / 1000)); - DrawSprite(sprTarget, x - 16, y - 16, 0); - Tint($FF, $FF, $FF, $FF); - end; - gtMortar: DrawRotated(sprMortar, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); - gtCake: if Gear^.Pos = 6 then - DrawRotatedf(sprCakeWalk, x, y, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90) - else - DrawRotatedf(sprCakeDown, x, y, 5 - Gear^.Pos, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90); - gtSeduction: if Gear^.Pos >= 14 then DrawSprite(sprSeduction, x - 16, y - 16, 0); - gtWatermelon: DrawRotatedf(sprWatermelon, x, y, 0, 0, Gear^.DirAngle); - gtMelonPiece: DrawRotatedf(sprWatermelon, x, y, 1, 0, Gear^.DirAngle); - gtHellishBomb: DrawRotated(sprHellishBomb, x, y, 0, Gear^.DirAngle); - gtBirdy: begin - if Gear^.State and gstAnimation = gstAnimation then - begin - if Gear^.State and gstTmpFlag = 0 then // Appearing - begin - endX:= x - WorldDx; - endY:= y - WorldDy; - if Gear^.Tag < 0 then - startX:= max(LAND_WIDTH + 1024, endX + 2048) - else - startX:= max(-LAND_WIDTH - 1024, endX - 2048); - startY:= endY - 256; - DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + floor((endX - startX) * (-power(2, -10 * LongInt(Gear^.Timer)/2000) + 1)), startY + WorldDy + floor((endY - startY) * sqrt(1 - power((LongInt(Gear^.Timer)/2000)-1, 2))), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); - end - else // Disappearing - begin - startX:= x - WorldDx; - startY:= y - WorldDy; - if Gear^.Tag > 0 then - endX:= max(LAND_WIDTH + 1024, startX + 2048) - else - endX:= max(-LAND_WIDTH - 1024, startX - 2048); - endY:= startY + 256; - DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + floor((endX - startX) * power(2, 10 * (LongInt(Gear^.Timer)/2000 - 1))) + hwRound(Gear^.dX * Gear^.Timer), startY + WorldDy + floor((endY - startY) * cos(LongInt(Gear^.Timer)/2000 * (Pi/2)) - (endY - startY)) + hwRound(Gear^.dY * Gear^.Timer), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); - end; - end - else - DrawTextureF(SpritesData[sprBirdy].Texture, 1, x, y, ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); - end; - gtEgg: DrawRotatedTextureF(SpritesData[sprEgg].Texture, 1, 0, 0, x, y, 0, 1, 16, 16, Gear^.DirAngle); - gtPiano: begin - if (Gear^.State and gstDrowning) = 0 then - begin - Tint($FF, $FF, $FF, $10); - for i:= 8 downto 1 do - DrawRotatedTextureF(SpritesData[sprPiano].Texture, 1, 0, 0, x, y - hwRound(Gear^.dY * 4 * i), 0, 1, 128, 128, 0); - Tint($FF, $FF, $FF, $FF) - end; - DrawRotatedTextureF(SpritesData[sprPiano].Texture, 1, 0, 0, x, y, 0, 1, 128, 128, 0); - end; - gtPoisonCloud: begin - if Gear^.Timer < 1020 then - Tint($C0, $C0, $00, Gear^.Timer div 8) - else if Gear^.Timer > 3980 then - Tint($C0, $C0, $00, (5000 - Gear^.Timer) div 8) - else - Tint($C0, $C0, $00, $C0); - DrawRotatedTextureF(SpritesData[sprSmokeWhite].texture, 3, 0, 0, x, y, 0, 1, 22, 22, (RealTicks shr 36 + Gear^.UID * 100) mod 360); - Tint($FF, $FF, $FF, $FF) - end; - gtResurrector: begin - DrawRotated(sprCross, x, y, 0, 0); - Tint($f5, $db, $35, max($00, floor($C0 * abs(1 - (GameTicks mod 6000) / 3000)))); - DrawTexture(x - 108, y - 108, SpritesData[sprVampiric].Texture, 4.5); - Tint($FF, $FF, $FF, $FF); - end; - gtNapalmBomb: DrawRotated(sprNapalmBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); - end; - if Gear^.RenderTimer and (Gear^.Tex <> nil) then DrawCentered(x + 8, y + 8, Gear^.Tex); - Gear:= Gear^.NextGear - end; -end;
--- a/hedgewars/HHHandlers.inc Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/HHHandlers.inc Tue Jan 04 12:53:46 2011 +0100 @@ -48,7 +48,7 @@ ChangeAmmo:= false; slot:= Gear^.MsgParam; -with PHedgehog(Gear^.Hedgehog)^ do +with Gear^.Hedgehog^ do begin Gear^.Message:= Gear^.Message and not gmSlot; ammoidx:= 0; @@ -60,7 +60,7 @@ while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx); - if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(PHedgehog(Gear^.Hedgehog)^); + if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(Gear^.Hedgehog^); MultiShootAttacks:= 0; Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump); @@ -101,7 +101,7 @@ s: boolean; begin weap:= TAmmoType(Gear^.MsgParam); -Hedgehog:= PHedgehog(Gear^.Hedgehog); +Hedgehog:= Gear^.Hedgehog; if Hedgehog^.Team^.Clan^.TurnNumber <= Ammoz[weap].SkipTurns then exit; // weapon is not activated yet @@ -118,15 +118,15 @@ dec(t) end; -if s then ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^) +if s then ApplyAmmoChanges(Gear^.Hedgehog^) end; procedure HHSetTimer(Gear: PGear); var CurWeapon: PAmmo; begin Gear^.Message:= Gear^.Message and not gmTimer; -CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); -with PHedgehog(Gear^.Hedgehog)^ do +CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); +with Gear^.Hedgehog^ do if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then begin CurWeapon^.Timer:= 1000 * Gear^.MsgParam; @@ -143,9 +143,9 @@ altUse: boolean; begin bShowFinger:= false; -CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); +CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); with Gear^, - PHedgehog(Gear^.Hedgehog)^ do + Gear^.Hedgehog^ do begin if ((State and gstHHDriven) <> 0)and ((State and (gstAttacked or gstHHChooseTarget)) = 0) and @@ -207,6 +207,7 @@ amClusterBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb, 0, newDx, newDy, CurWeapon^.Timer); amGasBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb, 0, newDx, newDy, CurWeapon^.Timer); amBazooka: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtShell, 0, newDx, newDy, 0); + amSnowball: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball, 0, newDx, newDy, 0); amBee: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBee, 0, newDx, newDy, 0); amShotgun: begin PlaySound(sndShotgunReload); @@ -222,7 +223,11 @@ amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); - amPortalGun: AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 0); + amPortalGun: begin + AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, + // set selected color + CurWeapon^.Pos); + end; amSniperRifle: begin PlaySound(sndSniperReload); CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); @@ -275,7 +280,8 @@ end; amLowGravity: begin PlaySound(sndLowGravity); - cGravity:= cMaxWindSpeed + cGravity:= cMaxWindSpeed; + cGravityf:= 0.00025 end; amExtraDamage:begin PlaySound(sndHellishImpact4); @@ -386,7 +392,7 @@ const frametime = 200; timertime = frametime * 6; begin -if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; +if Gear^.Hedgehog^.Unplaced then exit; if Gear^.Timer > 1 then begin AllInactive:= false; @@ -406,7 +412,7 @@ Gear^.Z:= cCurrHHZ; RemoveGearFromList(Gear); InsertGearToList(Gear); - PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack); Gear^.Pos:= 0; Gear^.Timer:= timertime end @@ -417,7 +423,7 @@ const frametime = 65; timertime = frametime * 11; begin -if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; +if Gear^.Hedgehog^.Unplaced then exit; if Gear^.Timer > 1 then begin AllInactive:= false; @@ -434,7 +440,7 @@ Gear^.Z:= cCurrHHZ; RemoveGearFromList(Gear); InsertGearToList(Gear); - PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack); PlaySound(sndWarp); Gear^.Pos:= 0; Gear^.Timer:= timertime @@ -454,16 +460,16 @@ posCaseUtility, posCaseAmmo: begin a:= Gear^.AmmoType; - AddAmmo(PHedgehog(HH^.Hedgehog)^, a); + AddAmmo(HH^.Hedgehog^, a); // Possibly needs to check shared clan ammo game flag once added. // On the other hand, no obvious reason that clan members shouldn't know what ammo another clan member picked up - if (not (PHedgehog(HH^.Hedgehog)^.Team^.ExtDriven - or (PHedgehog(HH^.Hedgehog)^.BotLevel > 0))) - or (PHedgehog(HH^.Hedgehog)^.Team^.Clan^.ClanIndex = LocalClan) + if (not (HH^.Hedgehog^.Team^.ExtDriven + or (HH^.Hedgehog^.BotLevel > 0))) + or (HH^.Hedgehog^.Team^.Clan^.ClanIndex = LocalClan) or (GameType = gmtDemo) then begin s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')'; - AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo); + AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); // show ammo icon vga:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtAmmo); @@ -474,12 +480,12 @@ end; posCaseHealth: begin inc(HH^.Health, Gear^.Health); - PHedgehog(HH^.Hedgehog)^.Effects[hePoisoned] := false; + HH^.Hedgehog^.Effects[hePoisoned] := false; str(Gear^.Health, s); s:= '+' + s; - AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo); - RenderHealth(PHedgehog(HH^.Hedgehog)^); - RecountTeamHealth(PHedgehog(HH^.Hedgehog)^.Team); + AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); + RenderHealth(HH^.Hedgehog^); + RecountTeamHealth(HH^.Hedgehog^.Team); i:= 0; while i < Gear^.Health do @@ -497,11 +503,11 @@ var PrevdX: LongInt; CurWeapon: PAmmo; begin -CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); +CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then begin if isCursorVisible then - with PHedgehog(Gear^.Hedgehog)^ do + with Gear^.Hedgehog^ do with CurWeapon^ do begin if (Gear^.Message and gmLeft ) <> 0 then @@ -536,7 +542,7 @@ Gear^.dY:= -_0_15; if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX); Gear^.State:= Gear^.State or gstMoving or gstHHJumping; - PlaySound(sndJump1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + PlaySound(sndJump1, Gear^.Hedgehog^.Team^.voicepack); exit end; end; @@ -549,7 +555,7 @@ Gear^.dY:= -_0_2; SetLittle(Gear^.dX); Gear^.State:= Gear^.State or gstMoving or gstHHJumping; - PlaySound(sndJump3, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + PlaySound(sndJump3, Gear^.Hedgehog^.Team^.voicepack); exit end; @@ -570,7 +576,7 @@ end; DeleteCI(Gear); // must be after exit!! (see previous line) - PHedgehog(Gear^.Hedgehog)^.visStepPos:= (PHedgehog(Gear^.Hedgehog)^.visStepPos + 1) and 7; + Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7; if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then begin if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX)) @@ -630,7 +636,7 @@ procedure HedgehogChAngle(Gear: PGear); var da: LongWord; begin -with PHedgehog(Gear^.Hedgehog)^ do +with Gear^.Hedgehog^ do if (CurAmmoType = amRope) and ((Gear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1; @@ -649,7 +655,7 @@ if Gear^.dX.QWordValue > 8160437862 then Gear^.dX.QWordValue:= 8160437862; if Gear^.dY.QWordValue > 8160437862 then Gear^.dY.QWordValue:= 8160437862; -if PHedgehog(Gear^.Hedgehog)^.Unplaced then +if Gear^.Hedgehog^.Unplaced then begin Gear^.dY:= _0; Gear^.dX:= _0; @@ -667,12 +673,12 @@ Gear^.dY:= Gear^.dY + cGravity; // this set of circumstances could be less complex if jumping was more clearly identified if ((GameFlags and gfMoreWind) <> 0) and - (Gear^.Damage <> 0) or + (((Gear^.Damage <> 0) or ((CurAmmoGear <> nil) and ((CurAmmoGear^.AmmoType = amJetpack) or (CurAmmoGear^.AmmoType = amBirdy))) or - ((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue) - then Gear^.dX := Gear^.dX + cWindSpeed * _0_2 + ((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue))) + then Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density end end else @@ -773,7 +779,7 @@ wasJumping: boolean; Hedgehog: PHedgehog; begin -Hedgehog:= PHedgehog(Gear^.Hedgehog); +Hedgehog:= Gear^.Hedgehog; if not isInMultiShoot then AllInactive:= false else @@ -919,16 +925,16 @@ PrvInactive:= false; AllInactive:= false; - if not PHedgehog(Gear^.Hedgehog)^.Team^.hasGone then + if not Gear^.Hedgehog^.Team^.hasGone then begin - PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] := false; - if PHedgehog(Gear^.Hedgehog)^.Effects[heResurrectable] then begin + Gear^.Hedgehog^.Effects[hePoisoned] := false; + if Gear^.Hedgehog^.Effects[heResurrectable] then begin ResurrectHedgehog(Gear); end else begin Gear^.State:= Gear^.State or gstHHDeath; Gear^.doStep:= @doStepHedgehogDead; // Death message - AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); + AddCaption(Format(GetEventString(eidDied), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); end; end else @@ -936,7 +942,7 @@ Gear^.State:= Gear^.State or gstHHGone; Gear^.doStep:= @doStepHedgehogGone; // Gone message - AddCaption(Format(GetEventString(eidGone), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); + AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); end end; exit @@ -974,7 +980,7 @@ doStepHedgehogFree(Gear) else begin - with PHedgehog(Gear^.Hedgehog)^ do + with Gear^.Hedgehog^ do if Team^.hasGone then TeamGoneEffect(Team^); doStepHedgehogDriven(Gear) end;
--- a/hedgewars/PascalExports.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/PascalExports.pas Tue Jan 04 12:53:46 2011 +0100 @@ -21,23 +21,21 @@ unit PascalExports; interface -uses uKeys, GLunit, uWorld, uMisc, uConsole, uTeams, uConsts, uChat, - uGears, uSound, hwengine, uAmmos, uLocale; // don't change the order! +uses uTypes, uConsts, uVariables, GLunit, uKeys, uChat, uSound, uAmmos, uUtils, + uCommands; {$INCLUDE "config.inc"} -var dummy: boolean; // avoid compiler hint - implementation {$IFDEF HWLIBRARY} var cZoomVal: GLfloat; + previousGameState: TGameState; // retrieve protocol information -procedure HW_versionInfo(netProto: PShortInt; versionStr: PPChar); cdecl; export; +procedure HW_versionInfo(netProto: PLongInt; versionStr: PPChar); cdecl; export; begin -// http://bugs.freepascal.org/view.php?id=16156 - if netProto <> nil then netProto^:= cNetProtoVersion; - if versionStr <> nil then versionStr^:= cVersionString; + netProto^:= cNetProtoVersion; + versionStr^:= cVersionString; end; procedure HW_click; cdecl; export; @@ -167,9 +165,31 @@ procedure HW_pause; cdecl; export; begin + if isPaused = false then + pauseAction:= true; +end; + +procedure HW_pauseToggle; cdecl; export; +begin pauseAction:= true; end; +function HW_isPaused: boolean; cdecl; export; +begin + exit( isPaused ); +end; + +procedure HW_suspend; cdecl; export; +begin + previousGameState:= GameState; + GameState:= gsSuspend; +end; + +procedure HW_resume; cdecl; export; +begin + GameState:= previousGameState; +end; + procedure HW_terminate(closeFrontend: boolean); cdecl; export; begin isTerminated:= true; @@ -199,11 +219,6 @@ ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) ); end; -function HW_isPaused: boolean; cdecl; export; -begin - exit( isPaused ); -end; - function HW_isWaiting: boolean; cdecl; export; begin exit( ReadyTimeLeft > 0 );
--- a/hedgewars/SDLMain.m Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/SDLMain.m Tue Jan 04 12:53:46 2011 +0100 @@ -216,9 +216,11 @@ #endif /* SDL_USE_CPS */ /* Set up the menubar */ - [NSApp setMainMenu:[[NSMenu alloc] init]]; + NSMenu *menu = [[NSMenu alloc] init]; + [NSApp setMainMenu:menu]; setApplicationMenu(); setupWindowMenu(); + [menu release]; /* Create SDLMain and make it the app delegate */ sdlMain = [[SDLMain alloc] init];
--- a/hedgewars/SDLh.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/SDLh.pas Tue Jan 04 12:53:46 2011 +0100 @@ -511,6 +511,17 @@ {$ENDIF} end; + TSDL_UserEvent = record +{$IFDEF SDL13} + type_: LongInt; + windowID: LongInt; +{$ELSE} + type_: Byte; +{$ENDIF} + code: LongInt; + data1, data2: Pointer; + end; + PSDL_Event = ^TSDL_Event; TSDL_Event = record {$IFDEF SDL13} @@ -531,6 +542,7 @@ SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent); SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent); + SDL_USEREVENT: (user: TSDL_UserEvent); {$ELSE} case Byte of SDL_NOEVENT: (type_: byte); @@ -774,7 +786,7 @@ function TTF_Init: LongInt; cdecl; external SDL_TTFLibName; procedure TTF_Quit; cdecl; external SDL_TTFLibName; -function TTF_SizeUTF8(font: PTTF_Font; const text: PChar; var w, h: LongInt): LongInt; cdecl; external SDL_TTFLibName; +function TTF_SizeUTF8(font: PTTF_Font; const text: PChar; out w, h: LongInt): LongInt; cdecl; external SDL_TTFLibName; function TTF_RenderUTF8_Solid(font: PTTF_Font; const text: PChar; fg: TSDL_Color): PSDL_Surface; cdecl; external SDL_TTFLibName; function TTF_RenderUTF8_Blended(font: PTTF_Font; const text: PChar; fg: TSDL_Color): PSDL_Surface; cdecl; external SDL_TTFLibName;
--- a/hedgewars/SinTable.inc Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1045 +0,0 @@ -(* - * Hedgewars, a free turn based strategy game - * Copyright (c) 2007 Andrey Korotaev <unC0Rr@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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - *) - -const SinTable: array[0..1024] of QWord = ( - $00000000, - $006487EB, - $00C90FC6, - $012D9782, - $01921F10, - $01F6A660, - $025B2D62, - $02BFB407, - $03243A40, - $0388BFFC, - $03ED452D, - $0451C9C3, - $04B64DAF, - $051AD0E0, - $057F5348, - $05E3D4D7, - $0648557E, - $06ACD52C, - $071153D3, - $0775D163, - $07DA4DCC, - $083EC900, - $08A342EE, - $0907BB86, - $096C32BB, - $09D0A87B, - $0A351CB8, - $0A998F62, - $0AFE0069, - $0B626FBF, - $0BC6DD53, - $0C2B4916, - $0C8FB2F9, - $0CF41AEB, - $0D5880DF, - $0DBCE4C3, - $0E214689, - $0E85A622, - $0EEA037D, - $0F4E5E8B, - $0FB2B73D, - $10170D83, - $107B614E, - $10DFB28F, - $11440135, - $11A84D31, - $120C9675, - $1270DCF0, - $12D52093, - $1339614E, - $139D9F13, - $1401D9D1, - $14661179, - $14CA45FC, - $152E774A, - $1592A554, - $15F6D00B, - $165AF75E, - $16BF1B3E, - $17233B9D, - $1787586A, - $17EB7197, - $184F8713, - $18B398CF, - $1917A6BC, - $197BB0CB, - $19DFB6EB, - $1A43B90E, - $1AA7B724, - $1B0BB11E, - $1B6FA6EC, - $1BD3987F, - $1C3785C8, - $1C9B6EB6, - $1CFF533B, - $1D633348, - $1DC70ECC, - $1E2AE5B8, - $1E8EB7FE, - $1EF2858D, - $1F564E57, - $1FBA124B, - $201DD15B, - $20818B77, - $20E5408F, - $2148F095, - $21AC9B79, - $2210412C, - $2273E19E, - $22D77CBF, - $233B1281, - $239EA2D5, - $24022DAA, - $2465B2F1, - $24C9329C, - $252CAC9A, - $259020DD, - $25F38F55, - $2656F7F3, - $26BA5AA7, - $271DB762, - $27810E14, - $27E45EB0, - $2847A924, - $28AAED62, - $290E2B5B, - $297162FF, - $29D4943F, - $2A37BF0B, - $2A9AE355, - $2AFE010D, - $2B611823, - $2BC42889, - $2C27322F, - $2C8A3506, - $2CED30FF, - $2D50260A, - $2DB31418, - $2E15FB1A, - $2E78DB01, - $2EDBB3BD, - $2F3E853F, - $2FA14F78, - $30041258, - $3066CDD1, - $30C981D3, - $312C2E50, - $318ED336, - $31F17079, - $32540608, - $32B693D3, - $331919CD, - $337B97E6, - $33DE0E0E, - $34407C36, - $34A2E250, - $3505404B, - $3567961A, - $35C9E3AC, - $362C28F3, - $368E65DE, - $36F09A61, - $3752C66A, - $37B4E9EB, - $381704D5, - $38791719, - $38DB20A7, - $393D2170, - $399F1966, - $3A010879, - $3A62EE9A, - $3AC4CBBA, - $3B269FCB, - $3B886ABB, - $3BEA2C7E, - $3C4BE503, - $3CAD943C, - $3D0F3A1A, - $3D70D68C, - $3DD26986, - $3E33F2F6, - $3E9572CF, - $3EF6E901, - $3F58557E, - $3FB9B836, - $401B111A, - $407C601B, - $40DDA52A, - $413EE039, - $41A01138, - $42013818, - $426254CA, - $42C3673F, - $43246F69, - $43856D38, - $43E6609E, - $4447498B, - $44A827F0, - $4508FBBF, - $4569C4E9, - $45CA835E, - $462B3710, - $468BDFF0, - $46EC7DEE, - $474D10FD, - $47AD990D, - $480E160F, - $486E87F5, - $48CEEEAF, - $492F4A2F, - $498F9A65, - $49EFDF44, - $4A5018BB, - $4AB046BD, - $4B10693A, - $4B708024, - $4BD08B6C, - $4C308B02, - $4C907ED9, - $4CF066E1, - $4D50430C, - $4DB0134A, - $4E0FD78D, - $4E6F8FC7, - $4ECF3BE8, - $4F2EDBE2, - $4F8E6FA6, - $4FEDF725, - $504D7250, - $50ACE11A, - $510C4372, - $516B994B, - $51CAE295, - $522A1F43, - $52894F44, - $52E8728C, - $5347890A, - $53A692B0, - $54058F70, - $54647F3B, - $54C36203, - $552237B8, - $5581004C, - $55DFBBB0, - $563E69D7, - $569D0AB0, - $56FB9E2E, - $575A2443, - $57B89CDE, - $581707F3, - $58756572, - $58D3B54D, - $5931F775, - $59902BDC, - $59EE5273, - $5A4C6B2B, - $5AAA75F7, - $5B0872C8, - $5B66618E, - $5BC4423C, - $5C2214C4, - $5C7FD916, - $5CDD8F25, - $5D3B36E1, - $5D98D03D, - $5DF65B29, - $5E53D798, - $5EB1457C, - $5F0EA4C4, - $5F6BF565, - $5FC9374E, - $60266A71, - $60838EC1, - $60E0A42F, - $613DAAAC, - $619AA22A, - $61F78A9B, - $625463F0, - $62B12E1B, - $630DE90E, - $636A94BB, - $63C73113, - $6423BE08, - $64803B8B, - $64DCA98F, - $65390805, - $659556DF, - $65F1960E, - $664DC585, - $66A9E535, - $6705F510, - $6761F508, - $67BDE50F, - $6819C516, - $6875950F, - $68D154EC, - $692D049F, - $6988A41B, - $69E4334F, - $6A3FB230, - $6A9B20AE, - $6AF67EBB, - $6B51CC49, - $6BAD094B, - $6C0835B2, - $6C635170, - $6CBE5C77, - $6D1956B9, - $6D744028, - $6DCF18B5, - $6E29E054, - $6E8496F6, - $6EDF3C8C, - $6F39D10A, - $6F945460, - $6FEEC681, - $70492760, - $70A376EE, - $70FDB51D, - $7157E1DF, - $71B1FD26, - $720C06E5, - $7265FF0E, - $72BFE593, - $7319BA65, - $73737D77, - $73CD2EBC, - $7426CE24, - $74805BA4, - $74D9D72C, - $753340AF, - $758C981F, - $75E5DD6E, - $763F108F, - $76983174, - $76F1400F, - $774A3C52, - $77A32630, - $77FBFD9B, - $7854C285, - $78AD74E0, - $7906149F, - $795EA1B5, - $79B71C13, - $7A0F83AC, - $7A67D872, - $7AC01A58, - $7B184950, - $7B70654C, - $7BC86E3F, - $7C20641B, - $7C7846D3, - $7CD01659, - $7D27D2A0, - $7D7F7B99, - $7DD71139, - $7E2E9370, - $7E860232, - $7EDD5D71, - $7F34A51F, - $7F8BD930, - $7FE2F995, - $803A0641, - $8090FF28, - $80E7E43A, - $813EB56C, - $819572AF, - $81EC1BF7, - $8242B135, - $8299325D, - $82EF9F62, - $8345F835, - $839C3CC9, - $83F26D12, - $84488902, - $849E908B, - $84F483A1, - $854A6236, - $85A02C3C, - $85F5E1A8, - $864B826B, - $86A10E78, - $86F685C2, - $874BE83C, - $87A135D9, - $87F66E8C, - $884B9247, - $88A0A0FD, - $88F59AA1, - $894A7F26, - $899F4E7F, - $89F408A0, - $8A48AD7A, - $8A9D3D00, - $8AF1B727, - $8B461BE0, - $8B9A6B1F, - $8BEEA4D7, - $8C42C8FA, - $8C96D77C, - $8CEAD050, - $8D3EB368, - $8D9280B9, - $8DE63834, - $8E39D9CD, - $8E8D6578, - $8EE0DB27, - $8F343ACD, - $8F87845E, - $8FDAB7CC, - $902DD50C, - $9080DC0F, - $90D3CCCA, - $9126A72F, - $91796B31, - $91CC18C5, - $921EAFDD, - $9271306C, - $92C39A66, - $9315EDBE, - $93682A67, - $93BA5055, - $940C5F7A, - $945E57CB, - $94B0393B, - $950203BD, - $9553B744, - $95A553C4, - $95F6D930, - $9648477C, - $96999E9A, - $96EADE80, - $973C071F, - $978D186C, - $97DE125A, - $982EF4DD, - $987FBFE7, - $98D0736D, - $99210F62, - $997193BA, - $99C20068, - $9A125560, - $9A629296, - $9AB2B7FD, - $9B02C588, - $9B52BB2C, - $9BA298DC, - $9BF25E8C, - $9C420C2F, - $9C91A1B9, - $9CE11F1F, - $9D308453, - $9D7FD149, - $9DCF05F6, - $9E1E224C, - $9E6D2640, - $9EBC11C6, - $9F0AE4D1, - $9F599F56, - $9FA84148, - $9FF6CA9A, - $A0453B42, - $A0939332, - $A0E1D25F, - $A12FF8BC, - $A17E063F, - $A1CBFAD9, - $A219D681, - $A2679928, - $A2B542C5, - $A302D349, - $A3504AAB, - $A39DA8DD, - $A3EAEDD3, - $A4381983, - $A4852BDF, - $A4D224DD, - $A51F046F, - $A56BCA8B, - $A5B87724, - $A6050A2F, - $A65183A0, - $A69DE36B, - $A6EA2984, - $A73655DF, - $A7826871, - $A7CE612E, - $A81A400B, - $A86604FB, - $A8B1AFF3, - $A8FD40E7, - $A948B7CB, - $A9941495, - $A9DF5738, - $AA2A7FA9, - $AA758DDB, - $AAC081C5, - $AB0B5B59, - $AB561A8D, - $ABA0BF54, - $ABEB49A4, - $AC35B971, - $AC800EB0, - $ACCA4954, - $AD146953, - $AD5E6EA1, - $ADA85932, - $ADF228FC, - $AE3BDDF3, - $AE85780B, - $AECEF73A, - $AF185B73, - $AF61A4AC, - $AFAAD2D9, - $AFF3E5EF, - $B03CDDE3, - $B085BAA9, - $B0CE7C36, - $B117227F, - $B15FAD79, - $B1A81D19, - $B1F07153, - $B238AA1C, - $B280C769, - $B2C8C930, - $B310AF64, - $B35879FB, - $B3A028E9, - $B3E7BC25, - $B42F33A1, - $B4768F55, - $B4BDCF34, - $B504F334, - $B54BFB49, - $B592E769, - $B5D9B789, - $B6206B9E, - $B667039D, - $B6AD7F7A, - $B6F3DF2C, - $B73A22A7, - $B78049E1, - $B7C654CE, - $B80C4364, - $B8521599, - $B897CB60, - $B8DD64B0, - $B922E17E, - $B96841BF, - $B9AD8569, - $B9F2AC70, - $BA37B6CB, - $BA7CA46D, - $BAC1754E, - $BB062962, - $BB4AC09E, - $BB8F3AF8, - $BBD39866, - $BC17D8DD, - $BC5BFC52, - $BCA002BA, - $BCE3EC0D, - $BD27B83E, - $BD6B6744, - $BDAEF913, - $BDF26DA3, - $BE35C4E7, - $BE78FED6, - $BEBC1B66, - $BEFF1A8C, - $BF41FC3E, - $BF84C071, - $BFC7671B, - $C009F032, - $C04C5BAB, - $C08EA97D, - $C0D0D99E, - $C112EC02, - $C154E0A0, - $C196B76D, - $C1D87060, - $C21A0B6E, - $C25B888D, - $C29CE7B4, - $C2DE28D7, - $C31F4BEE, - $C36050ED, - $C3A137CB, - $C3E2007E, - $C422AAFC, - $C463373A, - $C4A3A530, - $C4E3F4D2, - $C5242618, - $C56438F7, - $C5A42D65, - $C5E40359, - $C623BAC8, - $C66353A9, - $C6A2CDF2, - $C6E22999, - $C7216694, - $C76084DA, - $C79F8461, - $C7DE651F, - $C81D270B, - $C85BCA1B, - $C89A4E44, - $C8D8B37F, - $C916F9C0, - $C95520FE, - $C9932930, - $C9D1124D, - $CA0EDC49, - $CA4C871D, - $CA8A12BF, - $CAC77F24, - $CB04CC45, - $CB41FA16, - $CB7F088F, - $CBBBF7A6, - $CBF8C752, - $CC35778A, - $CC720844, - $CCAE7977, - $CCEACB19, - $CD26FD21, - $CD630F87, - $CD9F0240, - $CDDAD543, - $CE168888, - $CE521C04, - $CE8D8FAF, - $CEC8E380, - $CF04176E, - $CF3F2B6E, - $CF7A1F79, - $CFB4F385, - $CFEFA78A, - $D02A3B7D, - $D064AF56, - $D09F030C, - $D0D93696, - $D11349EB, - $D14D3D02, - $D1870FD2, - $D1C0C253, - $D1FA547A, - $D233C641, - $D26D179C, - $D2A64885, - $D2DF58F1, - $D31848D8, - $D3511832, - $D389C6F5, - $D3C25519, - $D3FAC295, - $D4330F60, - $D46B3B73, - $D4A346C3, - $D4DB3148, - $D512FAFB, - $D54AA3D1, - $D5822BC4, - $D5B992C9, - $D5F0D8D8, - $D627FDEA, - $D65F01F5, - $D695E4F1, - $D6CCA6D6, - $D703479A, - $D739C736, - $D77025A2, - $D7A662D4, - $D7DC7EC5, - $D812796C, - $D84852C1, - $D87E0ABB, - $D8B3A152, - $D8E9167F, - $D91E6A38, - $D9539C76, - $D988AD30, - $D9BD9C5E, - $D9F269F8, - $DA2715F5, - $DA5BA04F, - $DA9008FC, - $DAC44FF5, - $DAF87531, - $DB2C78A8, - $DB605A53, - $DB941A29, - $DBC7B822, - $DBFB3437, - $DC2E8E60, - $DC61C694, - $DC94DCCB, - $DCC7D0FF, - $DCFAA326, - $DD2D533A, - $DD5FE131, - $DD924D06, - $DDC496AF, - $DDF6BE25, - $DE28C360, - $DE5AA658, - $DE8C6707, - $DEBE0563, - $DEEF8167, - $DF20DB09, - $DF521242, - $DF83270B, - $DFB4195C, - $DFE4E92D, - $E0159678, - $E0462134, - $E076895A, - $E0A6CEE2, - $E0D6F1C6, - $E106F1FD, - $E136CF81, - $E1668A4A, - $E1962250, - $E1C5978C, - $E1F4E9F7, - $E224198A, - $E253263D, - $E2821009, - $E2B0D6E7, - $E2DF7AD0, - $E30DFBBC, - $E33C59A4, - $E36A9482, - $E398AC4D, - $E3C6A0FF, - $E3F47291, - $E42220FC, - $E44FAC38, - $E47D143F, - $E4AA590A, - $E4D77A91, - $E50478CE, - $E53153B9, - $E55E0B4D, - $E58A9F81, - $E5B71050, - $E5E35DB2, - $E60F87A0, - $E63B8E14, - $E6677106, - $E6933071, - $E6BECC4C, - $E6EA4493, - $E715993D, - $E740CA44, - $E76BD7A2, - $E796C150, - $E7C18746, - $E7EC2980, - $E816A7F6, - $E84102A1, - $E86B397B, - $E8954C7D, - $E8BF3BA2, - $E8E906E2, - $E912AE37, - $E93C319B, - $E9659107, - $E98ECC75, - $E9B7E3DE, - $E9E0D73D, - $EA09A68A, - $EA3251C0, - $EA5AD8D9, - $EA833BCD, - $EAAB7A97, - $EAD39531, - $EAFB8B94, - $EB235DBB, - $EB4B0B9E, - $EB729539, - $EB99FA84, - $EBC13B7B, - $EBE85816, - $EC0F5050, - $EC362422, - $EC5CD387, - $EC835E7A, - $ECA9C4F3, - $ECD006EC, - $ECF62461, - $ED1C1D4B, - $ED41F1A4, - $ED67A167, - $ED8D2C8E, - $EDB29312, - $EDD7D4EE, - $EDFCF21D, - $EE21EA98, - $EE46BE5A, - $EE6B6D5D, - $EE8FF79C, - $EEB45D11, - $EED89DB6, - $EEFCB986, - $EF20B07B, - $EF448290, - $EF682FBF, - $EF8BB802, - $EFAF1B55, - $EFD259B1, - $EFF57311, - $F0186771, - $F03B36C9, - $F05DE116, - $F0806651, - $F0A2C676, - $F0C5017F, - $F0E71767, - $F1090828, - $F12AD3BD, - $F14C7A22, - $F16DFB50, - $F18F5744, - $F1B08DF6, - $F1D19F64, - $F1F28B86, - $F2135259, - $F233F3D8, - $F2546FFC, - $F274C6C2, - $F294F824, - $F2B5041D, - $F2D4EAA8, - $F2F4ABC1, - $F3144762, - $F333BD87, - $F3530E2B, - $F3723949, - $F3913EDB, - $F3B01EDE, - $F3CED94D, - $F3ED6E23, - $F40BDD5A, - $F42A26F0, - $F4484ADD, - $F466491F, - $F48421B1, - $F4A1D48D, - $F4BF61B0, - $F4DCC915, - $F4FA0AB6, - $F5172691, - $F5341C9F, - $F550ECDE, - $F56D9747, - $F58A1BD8, - $F5A67A8B, - $F5C2B35C, - $F5DEC647, - $F5FAB347, - $F6167A59, - $F6321B77, - $F64D969E, - $F668EBC9, - $F6841AF5, - $F69F241C, - $F6BA073B, - $F6D4C44E, - $F6EF5B50, - $F709CC3E, - $F7241713, - $F73E3BCB, - $F7583A63, - $F77212D5, - $F78BC51F, - $F7A5513C, - $F7BEB729, - $F7D7F6E1, - $F7F11060, - $F80A03A4, - $F822D0A6, - $F83B7765, - $F853F7DD, - $F86C5208, - $F88485E4, - $F89C936D, - $F8B47AA0, - $F8CC3B78, - $F8E3D5F1, - $F8FB4A09, - $F91297BC, - $F929BF05, - $F940BFE2, - $F9579A4F, - $F96E4E48, - $F984DBCA, - $F99B42D2, - $F9B1835B, - $F9C79D63, - $F9DD90E6, - $F9F35DE1, - $FA090450, - $FA1E8430, - $FA33DD7E, - $FA491036, - $FA5E1C55, - $FA7301D8, - $FA87C0BC, - $FA9C58FD, - $FAB0CA99, - $FAC5158C, - $FAD939D2, - $FAED376A, - $FB010E50, - $FB14BE80, - $FB2847F8, - $FB3BAAB4, - $FB4EE6B3, - $FB61FBF0, - $FB74EA69, - $FB87B21A, - $FB9A5302, - $FBACCD1D, - $FBBF2068, - $FBD14CE1, - $FBE35284, - $FBF5314F, - $FC06E93F, - $FC187A52, - $FC29E484, - $FC3B27D4, - $FC4C443D, - $FC5D39BE, - $FC6E0855, - $FC7EAFFD, - $FC8F30B6, - $FC9F8A7C, - $FCAFBD4D, - $FCBFC926, - $FCCFAE05, - $FCDF6BE8, - $FCEF02CB, - $FCFE72AD, - $FD0DBB8C, - $FD1CDD64, - $FD2BD833, - $FD3AABF8, - $FD4958B0, - $FD57DE58, - $FD663CEF, - $FD747472, - $FD8284DF, - $FD906E34, - $FD9E306F, - $FDABCB8D, - $FDB93F8C, - $FDC68C6B, - $FDD3B228, - $FDE0B0BF, - $FDED8830, - $FDFA3878, - $FE06C196, - $FE132387, - $FE1F5E4A, - $FE2B71DC, - $FE375E3C, - $FE432368, - $FE4EC15E, - $FE5A381D, - $FE6587A2, - $FE70AFEB, - $FE7BB0F8, - $FE868AC7, - $FE913D55, - $FE9BC8A1, - $FEA62CAA, - $FEB0696D, - $FEBA7EEA, - $FEC46D1F, - $FECE3409, - $FED7D3A9, - $FEE14BFB, - $FEEA9D00, - $FEF3C6B4, - $FEFCC918, - $FF05A429, - $FF0E57E6, - $FF16E44E, - $FF1F495F, - $FF278719, - $FF2F9D79, - $FF378C80, - $FF3F542A, - $FF46F478, - $FF4E6D68, - $FF55BEF9, - $FF5CE92A, - $FF63EBF9, - $FF6AC766, - $FF717B6F, - $FF780814, - $FF7E6D54, - $FF84AB2C, - $FF8AC19E, - $FF90B0A7, - $FF967847, - $FF9C187C, - $FFA19147, - $FFA6E2A6, - $FFAC0C97, - $FFB10F1C, - $FFB5EA32, - $FFBA9DD9, - $FFBF2A10, - $FFC38ED7, - $FFC7CC2C, - $FFCBE210, - $FFCFD082, - $FFD39780, - $FFD7370B, - $FFDAAF21, - $FFDDFFC3, - $FFE128F0, - $FFE42AA6, - $FFE704E7, - $FFE9B7B1, - $FFEC4304, - $FFEEA6E0, - $FFF0E344, - $FFF2F82F, - $FFF4E5A2, - $FFF6AB9D, - $FFF84A1E, - $FFF9C126, - $FFFB10B5, - $FFFC38CA, - $FFFD3965, - $FFFE1286, - $FFFEC42C, - $FFFF4E59, - $FFFFB10B, - $FFFFEC43, - $100000000 - );
--- a/hedgewars/VGSHandlers.inc Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/VGSHandlers.inc Tue Jan 04 12:53:46 2011 +0100 @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA *) procedure doStepFlake(Gear: PVisualGear; Steps: Longword); -var sign: float; +var sign: real; begin if vobCount = 0 then exit; @@ -24,14 +24,23 @@ with Gear^ do begin inc(FrameTicks, Steps); - if FrameTicks > vobFrameTicks then + if not SuddenDeathDmg and (FrameTicks > vobFrameTicks) then begin dec(FrameTicks, vobFrameTicks); inc(Frame); if Frame = vobFramesCount then Frame:= 0 + end + else if SuddenDeathDmg and (FrameTicks > vobSDFrameTicks) then + begin + dec(FrameTicks, vobSDFrameTicks); + inc(Frame); + if Frame = vobSDFramesCount then Frame:= 0 end; X:= X + (cWindSpeedf * 200 + dX + tdX) * Steps; - Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps; + if SuddenDeathDmg then + Y:= Y + (dY + tdY + cGravityf * vobSDFallSpeed) * Steps + else + Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps; Angle:= Angle + dAngle * Steps; if Angle > 360 then Angle:= Angle - 360 @@ -59,8 +68,8 @@ begin if round(X) < cLeftScreenBorder then X:= X + cScreenSpace else if round(X) > cRightScreenBorder then X:= X - cScreenSpace; - // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + float(25); // For if flag is set for flakes rising upwards? - if round(Y) - 75 > LAND_HEIGHT then Y:= Y - float(1024 + 150); // TODO - configure in theme (jellies for example could use limited range) + // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + 25.0; // For if flag is set for flakes rising upwards? + if round(Y) - 75 > LAND_HEIGHT then Y:= Y - (1024 + 150); // TODO - configure in theme (jellies for example could use limited range) Timer:= 0; tdX:= 0; tdY:= 0 @@ -81,7 +90,7 @@ //////////////////////////////////////////////////////////////////////////////// procedure doStepCloud(Gear: PVisualGear; Steps: Longword); var s: Longword; - t: float; + t: real; begin Gear^.X:= Gear^.X + (cWindSpeedf * 750 * Gear^.dX) * Steps; @@ -444,16 +453,16 @@ begin if Gear^.Timer > Steps then dec(Gear^.Timer, Steps) else Gear^.Timer:= 0; -if (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then +if (Gear^.Hedgehog^.Gear <> nil) then begin - Gear^.X:= PHedgehog(Gear^.Hedgehog)^.Gear^.X.QWordValue/4294967296 + (Gear^.Tex^.w div 2 - Gear^.FrameTicks); - Gear^.Y:= PHedgehog(Gear^.Hedgehog)^.Gear^.Y.QWordValue/4294967296 - (16 + Gear^.Tex^.h); + Gear^.X:= Gear^.Hedgehog^.Gear^.X.QWordValue/4294967296 + (Gear^.Tex^.w div 2 - Gear^.FrameTicks); + Gear^.Y:= Gear^.Hedgehog^.Gear^.Y.QWordValue/4294967296 - (16 + Gear^.Tex^.h); end; if Gear^.Timer = 0 then begin - if PHedgehog(Gear^.Hedgehog)^.SpeechGear = Gear then - PHedgehog(Gear^.Hedgehog)^.SpeechGear:= nil; + if Gear^.Hedgehog^.SpeechGear = Gear then + Gear^.Hedgehog^.SpeechGear:= nil; DeleteVisualGear(Gear) end; end; @@ -462,10 +471,10 @@ begin Steps:= Steps; // avoid compiler hint -with PHedgehog(Gear^.Hedgehog)^ do +with Gear^.Hedgehog^ do if SpeechGear <> nil then SpeechGear^.Timer:= 0; -PHedgehog(Gear^.Hedgehog)^.SpeechGear:= Gear; +Gear^.Hedgehog^.SpeechGear:= Gear; Gear^.Timer:= max(Length(Gear^.Text) * 150, 3000); @@ -479,7 +488,7 @@ Gear^.doStep:= @doStepSpeechBubbleWork; -Gear^.Y:= Gear^.Y - float(Gear^.Tex^.h) +Gear^.Y:= Gear^.Y - Gear^.Tex^.h end; //////////////////////////////////////////////////////////////////////////////// @@ -512,7 +521,7 @@ str(Gear^.State, s); if Gear^.Hedgehog <> nil then - Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, fnt16) + Gear^.Tex:= RenderStringTex(s, Gear^.Hedgehog^.Team^.Clan^.Color, fnt16) else Gear^.Tex:= RenderStringTex(s, cWhiteColor, fnt16); @@ -521,7 +530,7 @@ else Gear^.doStep:= @doStepHealthTagWorkUnderWater; -Gear^.Y:= Gear^.Y - float(Gear^.Tex^.h); +Gear^.Y:= Gear^.Y - Gear^.Tex^.h; if Steps > 1 then Gear^.doStep(Gear, Steps-1); end; @@ -558,11 +567,20 @@ procedure doStepExplosion(Gear: PVisualGear; Steps: Longword); var i: LongWord; -gX,gY: LongInt; + gX,gY: LongInt; + vg: PVisualGear; begin gX:= round(Gear^.X); gY:= round(Gear^.Y); -for i:= 0 to 31 do AddVisualGear(gX, gY, vgtFire); +for i:= 0 to 31 do + begin + vg:= AddVisualGear(gX, gY, vgtFire); + if vg <> nil then + begin + vg^.State:= gstTmpFlag; + inc(vg^.FrameTicks, vg^.FrameTicks) + end + end; for i:= 0 to 8 do AddVisualGear(gX, gY, vgtExplPart); for i:= 0 to 8 do AddVisualGear(gX, gY, vgtExplPart2); Gear^.doStep:= @doStepExplosionWork; @@ -590,12 +608,21 @@ procedure doStepBigExplosion(Gear: PVisualGear; Steps: Longword); var i: LongWord; -gX,gY: LongInt; + gX,gY: LongInt; + vg: PVisualGear; begin gX:= round(Gear^.X); gY:= round(Gear^.Y); AddVisualGear(gX, gY, vgtSmokeRing); -for i:= 0 to 46 do AddVisualGear(gX, gY, vgtFire); +for i:= 0 to 46 do + begin + vg:= AddVisualGear(gX, gY, vgtFire); + if vg <> nil then + begin + vg^.State:= gstTmpFlag; + inc(vg^.FrameTicks, vg^.FrameTicks) + end + end; for i:= 0 to 15 do AddVisualGear(gX, gY, vgtExplPart); for i:= 0 to 15 do AddVisualGear(gX, gY, vgtExplPart2); Gear^.doStep:= @doStepBigExplosionWork; @@ -627,3 +654,27 @@ else dec(Gear^.FrameTicks, Steps); end; + +//////////////////////////////////////////////////////////////////////////////// +procedure doStepCircle(Gear: PVisualGear; Steps: Longword); +var tmp: LongInt; + i: LongWord; +begin +with Gear^ do + if Frame <> 0 then + for i:= 1 to Steps do + begin + inc(FrameTicks); + if (FrameTicks mod Frame) = 0 then + begin + tmp:= Gear^.Tint and $FF; + if tdY >= 0 then inc(tmp) + else dec(tmp); + if tmp < round(dX) then tdY:= 1; + if tmp > round(dY) then tdY:= -1; + if tmp > 255 then tmp := 255; + if tmp < 0 then tmp := 0; + Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or tmp + end + end +end;
--- a/hedgewars/hwLibrary.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/hwLibrary.pas Tue Jan 04 12:53:46 2011 +0100 @@ -12,10 +12,9 @@ // these procedures/functions to the PascalImports.h file (also in the "Pascal Sources" group) // to make these functions available in the C/C++/Objective-C source files // (add "#include PascalImports.h" near the top of these files if it's not there yet) -uses cmem, hwengine, PascalExports; +uses cmem, uVariables, PascalExports, hwengine; begin // avoid compiler warnings about units not being used isTerminated:= isTerminated; - dummy:= dummy; end.
--- a/hedgewars/hwengine.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/hwengine.pas Tue Jan 04 12:53:46 2011 +0100 @@ -30,10 +30,8 @@ {$ENDIF} uses SDLh, uMisc, uConsole, uGame, uConsts, uLand, uAmmos, uVisualGears, uGears, uStore, uWorld, uKeys, uSound, - uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uRandom, uLandTexture, uCollisions, uMobile, sysutils; - -var isTerminated: boolean = false; - alsoShutdownFrontend: boolean = false; + uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uRandom, uLandTexture, uCollisions, uMobile, + sysutils, uTypes, uVariables, uCommands, uUtils, uCaptions, uDebug, uCommandHandlers, uLandPainted; {$IFDEF HWLIBRARY} procedure initEverything(complete:boolean); @@ -50,16 +48,19 @@ procedure DoTimer(Lag: LongInt); var s: shortstring; begin - if not isPaused then inc(RealTicks, Lag); + if isPaused = false then + inc(RealTicks, Lag); case GameState of gsLandGen: begin GenMap; + ParseCommand('sendlanddigest', true); GameState:= gsStart; end; gsStart: begin if HasBorder then DisableSomeWeapons; AddClouds; + AddFlakes; AssignHHCoords; AddMiscGears; StoreLoad; @@ -98,6 +99,7 @@ gsExit: begin isTerminated:= true; end; + gsSuspend: exit; end; {$IFDEF SDL13} @@ -105,12 +107,13 @@ {$ELSE} SDL_GL_SwapBuffers(); {$ENDIF} - // not going to make captures on the iPhone + if flagMakeCapture then begin flagMakeCapture:= false; s:= 'hw_' + FormatDateTime('YYYY-MM-DD_HH-mm-ss', Now()) + inttostr(GameTicks); WriteLnToConsole('Saving ' + s + '...'); + playSound(sndShutter); MakeScreenshot(s); //SDL_SaveBMP_RW(SDLPrimSurface, SDL_RWFromFile(Str2PChar(s), 'wb'), 1) end; @@ -123,7 +126,6 @@ FreeActionsList(); StoreRelease(); ControllerClose(); - SendKB(); CloseIPC(); TTF_Quit(); {$IFDEF SDL13} @@ -147,19 +149,16 @@ begin case event.type_ of SDL_KEYDOWN: if GameState = gsChat then -{$IFDEF IPHONEOS} +{$IFDEF SDL13} // sdl on iphone supports only ashii keyboards and the unicode field is deprecated in sdl 1.3 KeyPressChat(event.key.keysym.sym); + SDL_WINDOWEVENT: + if event.wevent.event = SDL_WINDOWEVENT_SHOWN then + cHasFocus:= true; {$ELSE} KeyPressChat(event.key.keysym.unicode); SDL_MOUSEBUTTONDOWN: if event.button.button = SDL_BUTTON_WHEELDOWN then uKeys.wheelDown:= true; SDL_MOUSEBUTTONUP: if event.button.button = SDL_BUTTON_WHEELUP then uKeys.wheelUp:= true; -{$ENDIF} -{$IFDEF SDL13} - SDL_WINDOWEVENT: - if event.wevent.event = SDL_WINDOWEVENT_SHOWN then - cHasFocus:= true; -{$ELSE} SDL_ACTIVEEVENT: if (event.active.state and SDL_APPINPUTFOCUS) <> 0 then cHasFocus:= event.active.gain = 1; @@ -169,8 +168,8 @@ SDL_JOYBUTTONDOWN: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, true); SDL_JOYBUTTONUP: ControllerButtonEvent(event.jbutton.which, event.jbutton.button, false); SDL_QUITEV: isTerminated:= true - end; // end case event.type_ - end; // end while SDL_PollEvent(@event) <> 0 + end; //end case event.type_ of + end; //end while SDL_PollEvent(@event) <> 0 do if isTerminated = false then begin @@ -319,10 +318,16 @@ Randomize(); // uConsts does not need initialization as they are all consts + uUtils.initModule; uMisc.initModule; + uVariables.initModule; uConsole.initModule; // MUST happen after uMisc + uCommands.initModule; + uCommandHandlers.initModule; uLand.initModule; + uLandPainted.initModule; + uIO.initModule; if complete then @@ -351,6 +356,7 @@ uTeams.initModule; uVisualGears.initModule; uWorld.initModule; + uCaptions.initModule; end; end; @@ -358,6 +364,7 @@ begin if complete then begin + uCaptions.freeModule; uWorld.freeModule; uVisualGears.freeModule; uTeams.freeModule; @@ -387,7 +394,11 @@ uIO.freeModule; //stub uLand.freeModule; + uCommandHandlers.freeModule; + uCommands.freeModule; uConsole.freeModule; + uVariables.freeModule; + uUtils.freeModule; uMisc.freeModule; // uMisc closes the debug log. end;
--- a/hedgewars/uAI.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uAI.pas Tue Jan 04 12:53:46 2011 +0100 @@ -29,8 +29,9 @@ procedure FreeActionsList; implementation -uses uTeams, uConsts, SDLh, uAIMisc, uGears, uAIAmmoTests, uAIActions, uMisc, - uAmmos, uConsole, SysUtils{$IFDEF UNIX}, cthreads{$ENDIF}; +uses uConsts, SDLh, uAIMisc, uAIAmmoTests, uAIActions, + uAmmos, SysUtils{$IFDEF UNIX}, cthreads{$ENDIF}, uTypes, + uVariables, uCommands, uUtils, uDebug; var BestActions: TActions; CanUseAmmo: array [TAmmoType] of boolean; @@ -65,7 +66,7 @@ Score, i: LongInt; a, aa: TAmmoType; begin -BotLevel:= PHedgehog(Me^.Hedgehog)^.BotLevel; +BotLevel:= Me^.Hedgehog^.BotLevel; for i:= 0 to Pred(Targets.Count) do if (Targets.ar[i].Score >= 0) and (not StopThinking) then @@ -194,18 +195,18 @@ Actions.Pos:= 0; Actions.Score:= 0; Stack.Count:= 0; -BotLevel:= PHedgehog(Me^.Hedgehog)^.BotLevel; +BotLevel:= Me^.Hedgehog^.BotLevel; tmp:= random(2) + 1; Push(0, Actions, Me^, tmp); Push(0, Actions, Me^, tmp xor 3); -if (Me^.State and gstAttacked) = 0 then maxticks:= max(0, TurnTimeLeft - 5000 - LongWord(4000 * BotLevel)) +if (Me^.State and gstAttacked) = 0 then maxticks:= Max(0, TurnTimeLeft - 5000 - LongWord(4000 * BotLevel)) else maxticks:= TurnTimeLeft; if (Me^.State and gstAttacked) = 0 then TestAmmos(Actions, Me, false); BestRate:= RatePlace(Me); -BaseRate:= max(BestRate, 0); +BaseRate:= Max(BestRate, 0); while (Stack.Count > 0) and (not StopThinking) and (GameFlags and gfArtillery = 0) do begin @@ -321,7 +322,7 @@ FillBonuses((Me^.State and gstAttacked) <> 0); for a:= Low(TAmmoType) to High(TAmmoType) do - CanUseAmmo[a]:= Assigned(AmmoTests[a].proc) and HHHasAmmo(PHedgehog(Me^.Hedgehog)^, a); + CanUseAmmo[a]:= Assigned(AmmoTests[a].proc) and HHHasAmmo(Me^.Hedgehog^, a); {$IFDEF DEBUGFILE}AddFileLog('Enter Think Thread');{$ENDIF} BeginThread(@Think, Me, ThinkThread) end;
--- a/hedgewars/uAIActions.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uAIActions.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,7 +20,7 @@ unit uAIActions; interface -uses uGears, uFloat; +uses uFloat, uTypes; const MAXACTIONS = 96; aia_none = 0; @@ -62,7 +62,7 @@ procedure ProcessAction(var Actions: TActions; Me: PGear); implementation -uses uMisc, uConsts, uConsole, uAIMisc, uAI, uAmmos; +uses uAIMisc, uAI, uAmmos, uVariables, uCommands, uUtils, uDebug, uIO; const ActionIdToStr: array[0..6] of string[16] = ( {aia_none} '', @@ -95,8 +95,8 @@ else begin WriteLnToConsole('AI action: '+SpecActionIdToStr[Action.Action]); if (Action.Action = aia_WaitXL) or (Action.Action = aia_WaitXR) then - WriteLnToConsole('AI action Wait X = '+inttostr(Action.Param)+', current X = '+inttostr(hwRound(Me^.X))) - else if (Action.Action = aia_AwareExpl) then WriteLnToConsole('Aware X = ' + inttostr(Action.X) + ', Y = ' + inttostr(Action.Y)); + WriteLnToConsole('AI action Wait X = '+IntToStr(Action.Param)+', current X = '+IntToStr(hwRound(Me^.X))) + else if (Action.Action = aia_AwareExpl) then WriteLnToConsole('Aware X = ' + IntToStr(Action.X) + ', Y = ' + IntToStr(Action.Y)); end end; {$ENDIF} @@ -199,7 +199,7 @@ aim_push: s:= '+' + s; aim_release: s:= '-' + s; end - else if Param <> 0 then s:= s + ' ' + inttostr(Param); + else if Param <> 0 then s:= s + ' ' + IntToStr(Param); ParseCommand(s, true) end end;
--- a/hedgewars/uAIAmmoTests.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uAIAmmoTests.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,7 +20,7 @@ unit uAIAmmoTests; interface -uses SDLh, uGears, uConsts, uFloat; +uses SDLh, uConsts, uFloat, uTypes; const amtest_OnTurn = $00000001; type TAttackParams = record @@ -31,6 +31,7 @@ end; function TestBazooka(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +function TestSnowball(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; function TestGrenade(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; function TestMolotov(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; function TestClusterBomb(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; @@ -102,13 +103,14 @@ (proc: @TestGrenade; flags: 0), // amSMine (proc: @TestFirePunch; flags: 0), // amHammer (proc: nil; flags: 0), // amResurrector - (proc: nil; flags: 0) // amDrillStrike + (proc: nil; flags: 0),// amDrillStrike + (proc: @TestSnowball; flags: 0) // amSnowball ); const BadTurn = Low(LongInt) div 4; implementation -uses uMisc, uAIMisc, uLand; +uses uAIMisc, uVariables, uUtils; function Metric(x1, y1, x2, y2: LongInt): LongInt; begin @@ -172,6 +174,63 @@ TestBazooka:= valueResult end; +function TestSnowball(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; +var Vx, Vy, r: hwFloat; + rTime: LongInt; + Score, EX, EY: LongInt; + valueResult: LongInt; + + function CheckTrace: LongInt; + var x, y, dX, dY: hwFloat; + t: LongInt; + value: LongInt; + begin + x:= Me^.X; + y:= Me^.Y; + dX:= Vx; + dY:= -Vy; + t:= rTime; + repeat + x:= x + dX; + y:= y + dY; + dX:= dX + cWindSpeed; + dY:= dY + cGravity; + dec(t) + until TestCollExcludingMe(Me, hwRound(x), hwRound(y), 5) or (t <= 0); + EX:= hwRound(x); + EY:= hwRound(y); + value:= RateExplosion(Me, EX, EY, 5); + if value = 0 then value:= - Metric(Targ.X, Targ.Y, EX, EY) div 64; + CheckTrace:= value; + end; + +begin +ap.Time:= 0; +rTime:= 350; +ap.ExplR:= 0; +valueResult:= BadTurn; +repeat + rTime:= rTime + 300 + Level * 50 + random(300); + Vx:= - cWindSpeed * rTime * _0_5 + (int2hwFloat(Targ.X + AIrndSign(2)) - Me^.X) / int2hwFloat(rTime); + Vy:= cGravity * rTime * _0_5 - (int2hwFloat(Targ.Y) - Me^.Y) / int2hwFloat(rTime); + r:= Distance(Vx, Vy); + if not (r > _1) then + begin + Score:= CheckTrace; + if valueResult <= Score then + begin + ap.Angle:= DxDy2AttackAngle(Vx, Vy) + AIrndSign(random((Level - 1) * 9)); + ap.Power:= hwRound(r * cMaxPower) - random((Level - 1) * 17 + 1); + ap.ExplR:= 100; + ap.ExplX:= EX; + ap.ExplY:= EY; + valueResult:= Score + end; + end +until (rTime > 4250); +TestSnowball:= valueResult +end; + function TestMolotov(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; var Vx, Vy, r: hwFloat; Score, EX, EY, valueResult: LongInt; @@ -539,7 +598,7 @@ or (y.Round > LongWord(LAND_HEIGHT)) or (d > 200); -if Abs(Targ.X - hwRound(x)) + Abs(Targ.Y - hwRound(y)) < 3 then valueResult:= max(0, (4 - d div 50) * 7 * 1024) +if Abs(Targ.X - hwRound(x)) + Abs(Targ.Y - hwRound(y)) < 3 then valueResult:= Max(0, (4 - d div 50) * 7 * 1024) else valueResult:= BadTurn; TestDesertEagle:= valueResult end;
--- a/hedgewars/uAIMisc.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uAIMisc.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,7 +20,7 @@ unit uAIMisc; interface -uses SDLh, uConsts, uGears, uFloat; +uses SDLh, uConsts, uFloat, uTypes; const MAXBONUS = 1024; @@ -68,8 +68,7 @@ end; implementation -uses uTeams, uMisc, uLand, uCollisions; - +uses uCollisions, uVariables, uUtils, uDebug; const KillScore = 200; @@ -131,7 +130,7 @@ begin bonuses.Count:= 0; -MyClan:= PHedgehog(ThinkingHH^.Hedgehog)^.Team^.Clan; +MyClan:= ThinkingHH^.Hedgehog^.Team^.Clan; Gear:= GearsList; while Gear <> nil do begin @@ -150,7 +149,7 @@ AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 60, -25) else if isAfterAttack and (ThinkingHH^.Hedgehog <> Gear^.Hedgehog) then - if (MyClan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan) then + if (MyClan = Gear^.Hedgehog^.Team^.Clan) then AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 150, -3) // hedgehog-friend else AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 100, 3)
--- a/hedgewars/uAmmos.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uAmmos.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,7 +20,7 @@ unit uAmmos; interface -uses uConsts, uTeams, uStats; +uses uConsts, uTypes; procedure initModule; procedure freeModule; @@ -47,7 +47,7 @@ var StoreCnt: Longword; implementation -uses uMisc, uGears, uWorld, uLocale, uConsole, uMobile; +uses uLocale, uMobile, uVariables, uCommands, uUtils, uCaptions, uDebug; type TAmmoCounts = array[TAmmoType] of Longword; var StoresList: array[0..Pred(cMaxHHs)] of PHHAmmo; @@ -68,20 +68,7 @@ begin TryDo(mi[Ammoz[a].Slot] <= cMaxSlotAmmoIndex, 'Ammo slot overflow', true); Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]]:= Ammoz[a].Ammo; - with Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]] do - begin - Count:= cnts[a]; - if (TotalRounds < 0) and ((GameFlags and gfPlaceHog) <> 0) and (a = amTeleport) then Count:= AMMO_INFINITE; - end; - inc(mi[Ammoz[a].Slot]) - end - else if (TotalRounds < 0) and ((GameFlags and gfPlaceHog) <> 0) and (a = amTeleport) then - begin - TryDo(mi[Ammoz[a].Slot] <= cMaxSlotAmmoIndex, 'Ammo slot overflow', true); - Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]]:= Ammoz[a].Ammo; - - Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]].Count:= AMMO_INFINITE; - + with Ammo^[Ammoz[a].Slot, mi[Ammoz[a].Slot]] do Count:= cnts[a]; inc(mi[Ammoz[a].Slot]) end end @@ -107,7 +94,6 @@ Ammoz[a].Probability:= probability[byte(ammoProbability[ord(a)]) - byte('0')]; Ammoz[a].SkipTurns:= (byte(ammoDelay[ord(a)]) - byte('0')); Ammoz[a].NumberInCase:= (byte(ammoReinforcement[ord(a)]) - byte('0')); - if (TrainingFlags and tfIgnoreDelays) <> 0 then Ammoz[a].SkipTurns:= 0; cnt:= byte(ammoLoadout[ord(a)]) - byte('0'); // avoid things we already have infinite number if cnt = 9 then @@ -134,10 +120,14 @@ if ((GameFlags and gfPlaceHog) <> 0) and (a <> amTeleport) and (a <> amSkip) and - (Ammoz[a].SkipTurns < 10000) then inc(Ammoz[a].SkipTurns,10000) + (Ammoz[a].SkipTurns < 10000) then inc(Ammoz[a].SkipTurns,10000); + if ((GameFlags and gfPlaceHog) <> 0) and (a = amTeleport) then ammos[a]:= AMMO_INFINITE end else ammos[a]:= AMMO_INFINITE; - InitialCounts[Pred(StoreCnt)][a]:= ammos[a]; + if ((GameFlags and gfPlaceHog) <> 0) and (a = amTeleport) then + InitialCounts[Pred(StoreCnt)][a]:= cnt + else + InitialCounts[Pred(StoreCnt)][a]:= ammos[a]; end; FillAmmoStore(StoresList[Pred(StoreCnt)], ammos) end; @@ -329,15 +319,12 @@ with CurWeapon^ do begin - if AmmoType <> amNothing then - begin - s:= trammo[Ammoz[AmmoType].NameId]; - if (Count <> AMMO_INFINITE) and not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0)) then - s:= s + ' (' + IntToStr(Count) + ')'; - if (Propz and ammoprop_Timerable) <> 0 then - s:= s + ', ' + inttostr(Timer div 1000) + ' ' + trammo[sidSeconds]; - AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo); - end; + s:= trammo[Ammoz[AmmoType].NameId]; + if (Count <> AMMO_INFINITE) and not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0)) then + s:= s + ' (' + IntToStr(Count) + ')'; + if (Propz and ammoprop_Timerable) <> 0 then + s:= s + ', ' + IntToStr(Timer div 1000) + ' ' + trammo[sidSeconds]; + AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo); if (Propz and ammoprop_NeedTarget) <> 0 then begin Gear^.State:= Gear^.State or gstHHChooseTarget; @@ -427,8 +414,22 @@ if Ammoz[a].SkipTurns >= 10000 then dec(Ammoz[a].SkipTurns,10000) end; + + +procedure chAddAmmoStore(var descr: shortstring); +begin +descr:= ''; // avoid compiler hint +AddAmmoStore +end; + procedure initModule; begin + RegisterVariable('ammloadt', vtCommand, @SetAmmoLoadout, false); + RegisterVariable('ammdelay', vtCommand, @SetAmmoDelay, false); + RegisterVariable('ammprob', vtCommand, @SetAmmoProbability, false); + RegisterVariable('ammreinf', vtCommand, @SetAmmoReinforcement, false); + RegisterVariable('ammstore', vtCommand, @chAddAmmoStore , false); + StoreCnt:= 0; ammoLoadout:= ''; ammoProbability:= '';
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uCaptions.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,72 @@ +unit uCaptions; + +interface +uses uTypes; + +procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); +procedure DrawCaptions; + +procedure initModule; +procedure freeModule; + +implementation +uses uTextures, uRenderUtils, uVariables, uRender, uConsts; + +type TCaptionStr = record + Tex: PTexture; + EndTime: LongWord; + end; +var + Captions: array[TCapGroup] of TCaptionStr; + +procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); +begin + if Captions[Group].Tex <> nil then + FreeTexture(Captions[Group].Tex); + Captions[Group].Tex:= nil; + + Captions[Group].Tex:= RenderStringTex(s, Color, fntBig); + + case Group of + capgrpGameState: Captions[Group].EndTime:= RealTicks + 2200 + else + Captions[Group].EndTime:= RealTicks + 1400 + LongWord(Captions[Group].Tex^.w) * 3; + end; +end; + +procedure DrawCaptions; +var + grp: TCapGroup; + offset: LongInt; +begin +{$IFDEF IPHONEOS} + offset:= 40; +{$ELSE} + offset:= 8; +{$ENDIF} + + for grp:= Low(TCapGroup) to High(TCapGroup) do + with Captions[grp] do + if Tex <> nil then + begin + DrawCentered(0, offset, Tex); + inc(offset, Tex^.h + 2); + if EndTime <= RealTicks then + begin + FreeTexture(Tex); + Tex:= nil; + EndTime:= 0 + end; + end; +end; + +procedure initModule; +begin + FillChar(Captions, sizeof(Captions), 0) +end; + +procedure freeModule; +begin +end; + +end.
--- a/hedgewars/uChat.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uChat.pas Tue Jan 04 12:53:46 2011 +0100 @@ -34,7 +34,7 @@ showAll: boolean; implementation -uses uMisc, uStore, uConsts, SDLh, uConsole, uKeys, uTeams; +uses SDLh, uKeys, uTypes, uVariables, uCommands, uUtils, uTextures, uRender, uIO; const MaxStrIndex = 27; @@ -181,44 +181,42 @@ visibleCount:= cnt; end; +procedure SendHogSpeech(s: shortstring); +begin +SendIPC('h' + s); +ParseCommand('/hogsay '+s, true) +end; + procedure AcceptChatString(s: shortstring); var i: TWave; - + c, t: LongInt; + x: byte; begin -// "Make hedgehog say something" -if (s[1] = '"') and (s[Length(s)] = '"') then +t:= LocalTeam; +x:= 0; +if (s[1] = '"') and (s[Length(s)] = '"') then x:= 1 +else if (s[1] = '''') and (s[Length(s)] = '''') then x:= 2 +else if (s[1] = '-') and (s[Length(s)] = '-') then x:= 3; +if not CurrentTeam^.ExtDriven and (x <> 0) then + for c:= 0 to Pred(TeamsCount) do + if (TeamsArray[c] = CurrentTeam) then t:= c; + +if x <> 0 then begin - if CurrentTeam^.ExtDriven then + if t = -1 then ParseCommand('/say ' + copy(s, 2, Length(s)-2), true) else - ParseCommand('/hogsay '#1 + copy(s, 2, Length(s)-2), true); + SendHogSpeech(char(x) + char(t) + copy(s, 2, Length(s)-2)); exit end; -// 'Make hedgehog think something' -if (s[1] = '''') and (s[Length(s)] = '''') then - begin - if CurrentTeam^.ExtDriven then - ParseCommand('/say ' + copy(s, 2, Length(s)-2), true) - else - ParseCommand('/hogsay '#2 + copy(s, 2, Length(s)-2), true); - exit - end; -// -Make hedgehog yell something- -if (s[1] = '-') and (s[Length(s)] = '-') then - begin - if CurrentTeam^.ExtDriven then - ParseCommand('/say ' + copy(s, 2, Length(s)-2), true) - else - ParseCommand('/hogsay '#3 + copy(s, 2, Length(s)-2), true); - exit - end; + // These 3 are same as above, only are to make the hedgehog say it on next attack if (s[1] = '/') and (copy(s, 1, 5) = '/hsa ') then begin if CurrentTeam^.ExtDriven then ParseCommand('/say ' + copy(s, 6, Length(s)-5), true) else - ParseCommand('/hogsay '#4 + copy(s, 6, Length(s)-5), true); + SendHogSpeech(#4 + copy(s, 6, Length(s)-5)); exit end; if (s[1] = '/') and (copy(s, 1, 5) = '/hta ') then @@ -226,7 +224,7 @@ if CurrentTeam^.ExtDriven then ParseCommand('/say ' + copy(s, 6, Length(s)-5), true) else - ParseCommand('/hogsay '#5 + copy(s, 6, Length(s)-5), true); + SendHogSpeech(#5 + copy(s, 6, Length(s)-5)); exit end; if (s[1] = '/') and (copy(s, 1, 5) = '/hya ') then @@ -234,7 +232,7 @@ if CurrentTeam^.ExtDriven then ParseCommand('/say ' + copy(s, 6, Length(s)-5), true) else - ParseCommand('/hogsay '#6 + copy(s, 6, Length(s)-5), true); + SendHogSpeech(#6 + copy(s, 6, Length(s)-5)); exit end; @@ -308,8 +306,64 @@ end end; +procedure chChatMessage(var s: shortstring); +begin + AddChatString(s) +end; + +procedure chSay(var s: shortstring); +begin + SendIPC('s' + s); + + if copy(s, 1, 4) = '/me ' then + s:= #2'* ' + UserNick + ' ' + copy(s, 5, Length(s) - 4) + else + s:= #1 + UserNick + ': ' + s; + + AddChatString(s) +end; + +procedure chTeamSay(var s: shortstring); +begin + SendIPC('b' + s); + + s:= #4 + '[Team] ' + UserNick + ': ' + s; + + AddChatString(s) +end; + +procedure chHistory(var s: shortstring); +begin + s:= s; // avoid compiler hint + uChat.showAll:= not uChat.showAll +end; + +procedure chChat(var s: shortstring); +begin + s:= s; // avoid compiler hint + GameState:= gsChat; + if length(s) = 0 then + KeyPressChat(27) + else + begin + KeyPressChat(27); + KeyPressChat(47); + KeyPressChat(116); + KeyPressChat(101); + KeyPressChat(97); + KeyPressChat(109); + KeyPressChat(32) + end +end; + procedure initModule; begin + RegisterVariable('chatmsg', vtCommand, @chChatMessage, true); + RegisterVariable('say', vtCommand, @chSay, true); + RegisterVariable('team', vtCommand, @chTeamSay, true); + RegisterVariable('history', vtCommand, @chHistory, true ); + RegisterVariable('chat', vtCommand, @chChat, true ); + lastStr:= 0; visibleCount:= 0; showAll:= false;
--- a/hedgewars/uCollisions.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uCollisions.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,7 +20,7 @@ unit uCollisions; interface -uses uGears, uFloat; +uses uFloat, uTypes; const cMaxGearArrayInd = 255; @@ -44,6 +44,7 @@ function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean; function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionX(Gear: PGear; Dir: LongInt): boolean; function TestCollisionY(Gear: PGear; Dir: LongInt): boolean; function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean; @@ -52,7 +53,7 @@ function calcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): Boolean; implementation -uses uMisc, uConsts, uLand, uLandGraphics; +uses uConsts, uLandGraphics, uVariables, uDebug; type TCollisionEntry = record X, Y, Radius: LongInt; @@ -289,6 +290,24 @@ Gear^.X:= Gear^.X - ShiftX; Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY) end; +function TestCollisionX(Gear: PGear; Dir: LongInt): boolean; +var x, y, i: LongInt; +begin +x:= hwRound(Gear^.X); +if Dir < 0 then x:= x - Gear^.Radius + else x:= x + Gear^.Radius; +if (x and LAND_WIDTH_MASK) = 0 then + begin + y:= hwRound(Gear^.Y) - Gear^.Radius + 1; + i:= y + Gear^.Radius * 2 - 2; + repeat + if (y and LAND_HEIGHT_MASK) = 0 then + if Land[y, x] > 255 then exit(true); + inc(y) + until (y > i); + end; +TestCollisionX:= false +end; function TestCollisionY(Gear: PGear; Dir: LongInt): boolean; var x, y, i: LongInt;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uCommandHandlers.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,617 @@ +{$INCLUDE "options.inc"} +unit uCommandHandlers; + +interface + +procedure initModule; +procedure freeModule; + +implementation +uses uCommands, uTypes, uVariables, uIO, uDebug, uConsts, uScript, uUtils, SDLh, uRandom; + +procedure chGenCmd(var s: shortstring); +begin +case s[1] of + 'R': if ReadyTimeLeft > 1 then + begin + ReadyTimeLeft:= 1; + if not CurrentTeam^.ExtDriven then SendIPC('c'+s); + end + end +end; + +procedure chQuit(var s: shortstring); +const prevGState: TGameState = gsConfirm; +begin +s:= s; // avoid compiler hint +if GameState <> gsConfirm then + begin + prevGState:= GameState; + GameState:= gsConfirm + end else + GameState:= prevGState +end; + +procedure chConfirm(var s: shortstring); +begin +s:= s; // avoid compiler hint +if GameState = gsConfirm then + begin + SendIPC('Q'); + GameState:= gsExit + end +else + ParseCommand('chat team', true); +end; + +procedure chCheckProto(var s: shortstring); +var i, c: LongInt; +begin +if isDeveloperMode then +begin +val(s, i, c); +if (c <> 0) or (i = 0) then exit; +TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old', true); +TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new', true) +end +end; + +procedure chTeamLocal(var s: shortstring); +begin +s:= s; // avoid compiler hint +if not isDeveloperMode then exit; +if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/rdriven"', true); +CurrentTeam^.ExtDriven:= true +end; + +procedure chGrave(var s: shortstring); +begin +if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/grave"', true); +if s[1]='"' then Delete(s, 1, 1); +if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); +CurrentTeam^.GraveName:= s +end; + +procedure chFort(var s: shortstring); +begin +if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/fort"', true); +if s[1]='"' then Delete(s, 1, 1); +if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); +CurrentTeam^.FortName:= s +end; + +procedure chFlag(var s: shortstring); +begin +if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/flag"', true); +if s[1]='"' then Delete(s, 1, 1); +if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); +CurrentTeam^.flag:= s +end; + +procedure chScript(var s: shortstring); +begin +if s[1]='"' then Delete(s, 1, 1); +if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); +ScriptLoad(s) +end; + +procedure chSetHat(var s: shortstring); +begin +if (not isDeveloperMode) or (CurrentTeam = nil) then exit; +with CurrentTeam^ do + begin + if not CurrentHedgehog^.King then + if (s = '') or + (((GameFlags and gfKing) <> 0) and (s = 'crown')) or + ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then + CurrentHedgehog^.Hat:= 'NoHat' + else + CurrentHedgehog^.Hat:= s + end; +end; + +procedure chCurU_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementY:= -1; +end; + +procedure chCurU_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementY:= 0; +end; + +procedure chCurD_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementY:= 1; +end; + +procedure chCurD_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementY:= 0; +end; + +procedure chCurL_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementX:= -1; +end; + +procedure chCurL_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementX:= 0; +end; + +procedure chCurR_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementX:= 1; +end; + +procedure chCurR_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +CursorMovementX:= 0; +end; + +procedure chLeft_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('L'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmLeft and InputMask); + ScriptCall('onLeft'); +end; + +procedure chLeft_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH then exit; +if not CurrentTeam^.ExtDriven then SendIPC('l'); +with CurrentHedgehog^.Gear^ do + Message:= Message and not (gmLeft and InputMask); + ScriptCall('onLeftUp'); +end; + +procedure chRight_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('R'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmRight and InputMask); + ScriptCall('onRight'); +end; + +procedure chRight_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH then exit; +if not CurrentTeam^.ExtDriven then SendIPC('r'); +with CurrentHedgehog^.Gear^ do + Message:= Message and not (gmRight and InputMask); + ScriptCall('onRightUp'); +end; + +procedure chUp_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('U'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmUp and InputMask); + ScriptCall('onUp'); +end; + +procedure chUp_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH then exit; +if not CurrentTeam^.ExtDriven then SendIPC('u'); +with CurrentHedgehog^.Gear^ do + Message:= Message and not (gmUp and InputMask); + ScriptCall('onUpUp'); +end; + +procedure chDown_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('D'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmDown and InputMask); + ScriptCall('onDown'); +end; + +procedure chDown_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH then exit; +if not CurrentTeam^.ExtDriven then SendIPC('d'); +with CurrentHedgehog^.Gear^ do + Message:= Message and not (gmDown and InputMask); + ScriptCall('onDownUp'); +end; + +procedure chPrecise_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('Z'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmPrecise and InputMask); + ScriptCall('onPrecise'); +end; + +procedure chPrecise_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH then exit; +if not CurrentTeam^.ExtDriven then SendIPC('z'); +with CurrentHedgehog^.Gear^ do + Message:= Message and not (gmPrecise and InputMask); + ScriptCall('onPreciseUp'); +end; + +procedure chLJump(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('j'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmLJump and InputMask); + ScriptCall('onLJump'); +end; + +procedure chHJump(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('J'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmHJump and InputMask); + ScriptCall('onHJump'); +end; + +procedure chAttack_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + begin + {$IFDEF DEBUGFILE}AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State));{$ENDIF} + if ((State and gstHHDriven) <> 0) then + begin + FollowGear:= CurrentHedgehog^.Gear; + if not CurrentTeam^.ExtDriven then SendIPC('A'); + Message:= Message or (gmAttack and InputMask); + ScriptCall('onAttack'); + end + end +end; + +procedure chAttack_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH then exit; +with CurrentHedgehog^.Gear^ do + begin + if not CurrentTeam^.ExtDriven and + ((Message and gmAttack) <> 0) then SendIPC('a'); + Message:= Message and not (gmAttack and InputMask); + ScriptCall('onAttackUp'); + end +end; + +procedure chSwitch(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +if not CurrentTeam^.ExtDriven then SendIPC('S'); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + Message:= Message or (gmSwitch and InputMask); + ScriptCall('onSwitch'); +end; + +procedure chNextTurn(var s: shortstring); +begin + s:= s; // avoid compiler hint + TryDo(AllInactive, '/nextturn called when not all gears are inactive', true); + + if not CurrentTeam^.ExtDriven then SendIPC('N'); +{$IFDEF DEBUGFILE} + AddFileLog('Doing SwitchHedgehog: time '+inttostr(GameTicks)); +{$ENDIF} +end; + +procedure chTimer(var s: shortstring); +begin +if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or CheckNoTeamOrHH then exit; + +if not CurrentTeam^.ExtDriven then SendIPC(s); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + begin + Message:= Message or (gmTimer and InputMask); + MsgParam:= byte(s[1]) - ord('0'); + ScriptCall('onTimer'); + end +end; + +procedure chSlot(var s: shortstring); +var slot: LongWord; +begin +if (s[0] <> #1) or CheckNoTeamOrHH then exit; +slot:= byte(s[1]) - 49; +if slot > cMaxSlotIndex then exit; +if not CurrentTeam^.ExtDriven then SendIPC(char(byte(s[1]) + 79)); +bShowFinger:= false; +with CurrentHedgehog^.Gear^ do + begin + Message:= Message or (gmSlot and InputMask); + MsgParam:= slot; + ScriptCall('onSlot'); + end +end; + +procedure chSetWeapon(var s: shortstring); +begin + if (s[0] <> #1) or CheckNoTeamOrHH then exit; + + if TAmmoType(s[1]) > High(TAmmoType) then exit; + + if not CurrentTeam^.ExtDriven then SendIPC('w' + s); + + with CurrentHedgehog^.Gear^ do + begin + Message:= Message or (gmWeapon and InputMask); + MsgParam:= byte(s[1]); + ScriptCall('onSetWeapon'); + end; +end; + +procedure chTaunt(var s: shortstring); +begin +if (s[0] <> #1) or CheckNoTeamOrHH then exit; + +if TWave(s[1]) > High(TWave) then exit; + +if not CurrentTeam^.ExtDriven then SendIPC('t' + s); + +with CurrentHedgehog^.Gear^ do + begin + Message:= Message or (gmAnimate and InputMask); + MsgParam:= byte(s[1]) ; + ScriptCall('onTaunt'); + end +end; + +procedure chPut(var s: shortstring); +begin + s:= s; // avoid compiler hint + doPut(0, 0, false); +end; + +procedure chCapture(var s: shortstring); +begin +s:= s; // avoid compiler hint +flagMakeCapture:= true +end; + +procedure chSetMap(var s: shortstring); +begin +if isDeveloperMode then +begin +Pathz[ptMapCurrent]:= Pathz[ptMaps] + '/' + s; +InitStepsFlags:= InitStepsFlags or cifMap +end +end; + +procedure chSetTheme(var s: shortstring); +begin +if isDeveloperMode then +begin +Pathz[ptCurrTheme]:= Pathz[ptThemes] + '/' + s; +Theme:= s; +InitStepsFlags:= InitStepsFlags or cifTheme +end +end; + +procedure chSetSeed(var s: shortstring); +begin +if isDeveloperMode then +begin +SetRandomSeed(s); +cSeed:= s; +InitStepsFlags:= InitStepsFlags or cifRandomize +end +end; + +procedure chAmmoMenu(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH then + bShowAmmoMenu:= true +else + begin + with CurrentTeam^ do + with Hedgehogs[CurrHedgehog] do + begin + bSelected:= false; + + if bShowAmmoMenu then bShowAmmoMenu:= false + else if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or + ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or + ((Gear^.State and gstHHDriven) = 0) then else bShowAmmoMenu:= true + end; + end +end; + +procedure chVol_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +inc(cVolumeDelta, 3) +end; + +procedure chVol_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +dec(cVolumeDelta, 3) +end; + +procedure chFindhh(var s: shortstring); +begin +s:= s; // avoid compiler hint +if CheckNoTeamOrHH or isPaused then exit; +bShowFinger:= true; +FollowGear:= CurrentHedgehog^.Gear +end; + +procedure chPause(var s: shortstring); +begin +s:= s; // avoid compiler hint +if gameType <> gmtNet then + isPaused:= not isPaused; +SDL_ShowCursor(ord(isPaused)) +end; + +procedure chRotateMask(var s: shortstring); +begin +s:= s; // avoid compiler hint +if ((GameFlags and gfInvulnerable) = 0) then cTagsMask:= cTagsMasks[cTagsMask] else cTagsMask:= cTagsMasksNoHealth[cTagsMask]; +end; + +procedure chSpeedup_p(var s: shortstring); +begin +s:= s; // avoid compiler hint +isSpeed:= true +end; + +procedure chSpeedup_m(var s: shortstring); +begin +s:= s; // avoid compiler hint +isSpeed:= false +end; + +procedure chZoomIn(var s: shortstring); +begin + s:= s; // avoid compiler hint + if ZoomValue < cMinZoomLevel then + ZoomValue:= ZoomValue + cZoomDelta; +end; + +procedure chZoomOut(var s: shortstring); +begin + s:= s; // avoid compiler hint + if ZoomValue > cMaxZoomLevel then + ZoomValue:= ZoomValue - cZoomDelta; +end; + +procedure chZoomReset(var s: shortstring); +begin + s:= s; // avoid compiler hint + ZoomValue:= cDefaultZoomLevel; +end; + + +procedure initModule; +begin +//////// Begin top sorted by freq analysis not including chatmsg + RegisterVariable('+right' , vtCommand, @chRight_p , false); + RegisterVariable('-right' , vtCommand, @chRight_m , false); + RegisterVariable('+up' , vtCommand, @chUp_p , false); + RegisterVariable('-up' , vtCommand, @chUp_m , false); + RegisterVariable('+left' , vtCommand, @chLeft_p , false); + RegisterVariable('-left' , vtCommand, @chLeft_m , false); + RegisterVariable('+attack' , vtCommand, @chAttack_p , false); + RegisterVariable('+down' , vtCommand, @chDown_p , false); + RegisterVariable('-down' , vtCommand, @chDown_m , false); + RegisterVariable('hjump' , vtCommand, @chHJump , false); + RegisterVariable('ljump' , vtCommand, @chLJump , false); + RegisterVariable('nextturn', vtCommand, @chNextTurn , false); + RegisterVariable('-attack' , vtCommand, @chAttack_m , false); + RegisterVariable('slot' , vtCommand, @chSlot , false); + RegisterVariable('setweap' , vtCommand, @chSetWeapon , false); +//////// End top by freq analysis + RegisterVariable('gencmd' , vtCommand, @chGenCmd , false); + RegisterVariable('flag' , vtCommand, @chFlag , false); + RegisterVariable('script' , vtCommand, @chScript , false); + RegisterVariable('proto' , vtCommand, @chCheckProto , true ); + RegisterVariable('spectate', vtBoolean, @fastUntilLag , false); + RegisterVariable('capture' , vtCommand, @chCapture , true ); + RegisterVariable('rotmask' , vtCommand, @chRotateMask , true ); + RegisterVariable('rdriven' , vtCommand, @chTeamLocal , false); + RegisterVariable('map' , vtCommand, @chSetMap , false); + RegisterVariable('theme' , vtCommand, @chSetTheme , false); + RegisterVariable('seed' , vtCommand, @chSetSeed , false); + RegisterVariable('template_filter', vtLongInt, @cTemplateFilter, false); + RegisterVariable('mapgen' , vtLongInt, @cMapGen , false); + RegisterVariable('maze_size',vtLongInt, @cMazeSize , false); + RegisterVariable('delay' , vtLongInt, @cInactDelay , false); + RegisterVariable('ready' , vtLongInt, @cReadyDelay , false); + RegisterVariable('casefreq', vtLongInt, @cCaseFactor , false); + RegisterVariable('healthprob', vtLongInt, @cHealthCaseProb, false); + RegisterVariable('hcaseamount', vtLongInt, @cHealthCaseAmount, false); + RegisterVariable('sd_turns', vtLongInt, @cSuddenDTurns , false); + RegisterVariable('waterrise', vtLongInt, @cWaterRise , false); + RegisterVariable('healthdec', vtLongInt, @cHealthDecrease, false); + RegisterVariable('damagepct',vtLongInt, @cDamagePercent , false); + RegisterVariable('ropepct' , vtLongInt, @cRopePercent , false); + RegisterVariable('minedudpct',vtLongInt,@cMineDudPercent, false); + RegisterVariable('minesnum', vtLongInt, @cLandMines , false); + RegisterVariable('explosives',vtLongInt,@cExplosives , false); + RegisterVariable('gmflags' , vtLongInt, @GameFlags , false); + RegisterVariable('turntime', vtLongInt, @cHedgehogTurnTime, false); + RegisterVariable('minestime',vtLongInt, @cMinesTime , false); + RegisterVariable('fort' , vtCommand, @chFort , false); + RegisterVariable('grave' , vtCommand, @chGrave , false); + RegisterVariable('hat' , vtCommand, @chSetHat , false); + RegisterVariable('quit' , vtCommand, @chQuit , true ); + RegisterVariable('confirm' , vtCommand, @chConfirm , true ); + RegisterVariable('+speedup', vtCommand, @chSpeedup_p , true ); + RegisterVariable('-speedup', vtCommand, @chSpeedup_m , true ); + RegisterVariable('zoomin' , vtCommand, @chZoomIn , true ); + RegisterVariable('zoomout' , vtCommand, @chZoomOut , true ); + RegisterVariable('zoomreset',vtCommand, @chZoomReset , true ); + RegisterVariable('ammomenu', vtCommand, @chAmmoMenu , true); + RegisterVariable('+precise', vtCommand, @chPrecise_p , false); + RegisterVariable('-precise', vtCommand, @chPrecise_m , false); + RegisterVariable('switch' , vtCommand, @chSwitch , false); + RegisterVariable('timer' , vtCommand, @chTimer , false); + RegisterVariable('taunt' , vtCommand, @chTaunt , false); + RegisterVariable('put' , vtCommand, @chPut , false); + RegisterVariable('+volup' , vtCommand, @chVol_p , true ); + RegisterVariable('-volup' , vtCommand, @chVol_m , true ); + RegisterVariable('+voldown', vtCommand, @chVol_m , true ); + RegisterVariable('-voldown', vtCommand, @chVol_p , true ); + RegisterVariable('findhh' , vtCommand, @chFindhh , true ); + RegisterVariable('pause' , vtCommand, @chPause , true ); + RegisterVariable('+cur_u' , vtCommand, @chCurU_p , true ); + RegisterVariable('-cur_u' , vtCommand, @chCurU_m , true ); + RegisterVariable('+cur_d' , vtCommand, @chCurD_p , true ); + RegisterVariable('-cur_d' , vtCommand, @chCurD_m , true ); + RegisterVariable('+cur_l' , vtCommand, @chCurL_p , true ); + RegisterVariable('-cur_l' , vtCommand, @chCurL_m , true ); + RegisterVariable('+cur_r' , vtCommand, @chCurR_p , true ); + RegisterVariable('-cur_r' , vtCommand, @chCurR_m , true ); +end; + +procedure freeModule; +begin +end; + +end.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uCommands.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,135 @@ +{$INCLUDE "options.inc"} + +unit uCommands; + +interface + +var isDeveloperMode: boolean; +type TVariableType = (vtCommand, vtLongInt, vthwFloat, vtBoolean); + TCommandHandler = procedure (var params: shortstring); + +procedure initModule; +procedure freeModule; +procedure RegisterVariable(Name: shortstring; VType: TVariableType; p: pointer; Trusted: boolean); +procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); +procedure StopMessages(Message: Longword); + +implementation +uses Types, uConsts, uVariables, uConsole, uUtils, uDebug; + +type PVariable = ^TVariable; + TVariable = record + Next: PVariable; + Name: string[15]; + VType: TVariableType; + Handler: pointer; + Trusted: boolean; + end; + +var + Variables: PVariable; + +procedure RegisterVariable(Name: shortstring; VType: TVariableType; p: pointer; Trusted: boolean); +var value: PVariable; +begin +New(value); +TryDo(value <> nil, 'RegisterVariable: value = nil', true); +FillChar(value^, sizeof(TVariable), 0); +value^.Name:= Name; +value^.VType:= VType; +value^.Handler:= p; +value^.Trusted:= Trusted; + +if Variables = nil then Variables:= value + else begin + value^.Next:= Variables; + Variables:= value + end; +end; + + +procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); +var ii: LongInt; + s: shortstring; + t: PVariable; + c: char; +begin +//WriteLnToConsole(CmdStr); +if CmdStr[0]=#0 then exit; +c:= CmdStr[1]; +if c in ['/', '$'] then Delete(CmdStr, 1, 1) else c:= '/'; +s:= ''; +SplitBySpace(CmdStr, s); +{$IFDEF DEBUGFILE}AddFileLog('[Cmd] ' + c + CmdStr + ' (' + inttostr(length(s)) + ')');{$ENDIF} +t:= Variables; +while t <> nil do + begin + if t^.Name = CmdStr then + begin + if TrustedSource or t^.Trusted then + case t^.VType of + vtCommand: if c='/' then + begin + TCommandHandler(t^.Handler)(s); + end; + vtLongInt: if c='$' then + if s[0]=#0 then + begin + str(PLongInt(t^.Handler)^, s); + WriteLnToConsole('$' + CmdStr + ' is "' + s + '"'); + end else val(s, PLongInt(t^.Handler)^); + vthwFloat: if c='$' then + if s[0]=#0 then + begin + //str(PhwFloat(t^.Handler)^:4:6, s); + WriteLnToConsole('$' + CmdStr + ' is "' + s + '"'); + end else; //val(s, PhwFloat(t^.Handler)^, i); + vtBoolean: if c='$' then + if s[0]=#0 then + begin + str(ord(boolean(t^.Handler^)), s); + WriteLnToConsole('$' + CmdStr + ' is "' + s + '"'); + end else + begin + val(s, ii); + boolean(t^.Handler^):= not (ii = 0) + end; + end; + exit + end else t:= t^.Next + end; +case c of + '$': WriteLnToConsole(errmsgUnknownVariable + ': "$' + CmdStr + '"') + else WriteLnToConsole(errmsgUnknownCommand + ': "/' + CmdStr + '"') end +end; + + +procedure StopMessages(Message: Longword); +begin +if (Message and gmLeft) <> 0 then ParseCommand('/-left', true) else +if (Message and gmRight) <> 0 then ParseCommand('/-right', true) else +if (Message and gmUp) <> 0 then ParseCommand('/-up', true) else +if (Message and gmDown) <> 0 then ParseCommand('/-down', true) else +if (Message and gmAttack) <> 0 then ParseCommand('/-attack', true) +end; + +procedure initModule; +begin + Variables:= nil; + isDeveloperMode:= true; +end; + +procedure freeModule; +var t, tt: PVariable; +begin + tt:= Variables; + Variables:= nil; + while tt <> nil do + begin + t:= tt; + tt:= tt^.Next; + Dispose(t) + end; +end; + +end.
--- a/hedgewars/uConsole.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uConsole.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,44 +20,26 @@ unit uConsole; interface -uses uFloat; - -var isDeveloperMode: boolean; -type TVariableType = (vtCommand, vtLongInt, vthwFloat, vtBoolean); - TCommandHandler = procedure (var params: shortstring); procedure initModule; procedure freeModule; procedure WriteToConsole(s: shortstring); procedure WriteLnToConsole(s: shortstring); -procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); -procedure StopMessages(Message: Longword); function GetLastConsoleLine: shortstring; -procedure doPut(putX, putY: LongInt; fromAI: boolean); - implementation -uses uMisc, uStore, Types, uConsts, uGears, uTeams, uIO, uKeys, uWorld, uMobile, - uRandom, uAmmos, uStats, uChat, SDLh, uSound, uVisualGears, uScript; +uses Types, uVariables, uUtils; const cLineWidth: LongInt = 0; - cLinesCount = 256; + cLinesCount = 8; -type PVariable = ^TVariable; - TVariable = record - Next: PVariable; - Name: string[15]; - VType: TVariableType; - Handler: pointer; - Trusted: boolean; - end; +type TTextLine = record s: shortstring; end; var ConsoleLines: array[byte] of TTextLine; CurrLine: LongInt; - Variables: PVariable; procedure SetLine(var tl: TTextLine; str: shortstring); begin @@ -65,32 +47,12 @@ s:= str; end; -function RegisterVariable(Name: shortstring; VType: TVariableType; p: pointer; Trusted: boolean): PVariable; -var value: PVariable; -begin -New(value); -TryDo(value <> nil, 'RegisterVariable: value = nil', true); -FillChar(value^, sizeof(TVariable), 0); -value^.Name:= Name; -value^.VType:= VType; -value^.Handler:= p; -value^.Trusted:= Trusted; - -if Variables = nil then Variables:= value - else begin - value^.Next:= Variables; - Variables:= value - end; - -RegisterVariable:= value; -end; - procedure WriteToConsole(s: shortstring); var Len: LongInt; done: boolean; begin {$IFNDEF NOCONSOLE} -{$IFDEF DEBUGFILE}AddFileLog('Console write: ' + s);{$ENDIF} +{$IFDEF DEBUGFILE}AddFileLog('[Con] ' + s);{$ENDIF} Write(s); done:= false; @@ -122,60 +84,6 @@ {$ENDIF} end; -procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); -var ii: LongInt; - s: shortstring; - t: PVariable; - c: char; -begin -//WriteLnToConsole(CmdStr); -if CmdStr[0]=#0 then exit; -{$IFDEF DEBUGFILE}AddFileLog('ParseCommand "' + CmdStr + '"');{$ENDIF} -c:= CmdStr[1]; -if c in ['/', '$'] then Delete(CmdStr, 1, 1) else c:= '/'; -s:= ''; -SplitBySpace(CmdStr, s); -t:= Variables; -while t <> nil do - begin - if t^.Name = CmdStr then - begin - if TrustedSource or t^.Trusted then - case t^.VType of - vtCommand: if c='/' then - begin - TCommandHandler(t^.Handler)(s); - end; - vtLongInt: if c='$' then - if s[0]=#0 then - begin - str(PLongInt(t^.Handler)^, s); - WriteLnToConsole('$' + CmdStr + ' is "' + s + '"'); - end else val(s, PLongInt(t^.Handler)^); - vthwFloat: if c='$' then - if s[0]=#0 then - begin - //str(PhwFloat(t^.Handler)^:4:6, s); - WriteLnToConsole('$' + CmdStr + ' is "' + s + '"'); - end else; //val(s, PhwFloat(t^.Handler)^, i); - vtBoolean: if c='$' then - if s[0]=#0 then - begin - str(ord(boolean(t^.Handler^)), s); - WriteLnToConsole('$' + CmdStr + ' is "' + s + '"'); - end else - begin - val(s, ii); - boolean(t^.Handler^):= not (ii = 0) - end; - end; - exit - end else t:= t^.Next - end; -case c of - '$': WriteLnToConsole(errmsgUnknownVariable + ': "$' + CmdStr + '"') - else WriteLnToConsole(errmsgUnknownCommand + ': "/' + CmdStr + '"') end -end; function GetLastConsoleLine: shortstring; var valueStr: shortstring; @@ -192,22 +100,10 @@ GetLastConsoleLine:= valueStr; end; -procedure StopMessages(Message: Longword); -begin -if (Message and gmLeft) <> 0 then ParseCommand('/-left', true) else -if (Message and gmRight) <> 0 then ParseCommand('/-right', true) else -if (Message and gmUp) <> 0 then ParseCommand('/-up', true) else -if (Message and gmDown) <> 0 then ParseCommand('/-down', true) else -if (Message and gmAttack) <> 0 then ParseCommand('/-attack', true) -end; - -{$INCLUDE "CCHandlers.inc"} procedure initModule; var i: LongInt; begin CurrLine:= 0; - Variables:= nil; - isDeveloperMode:= true; // initConsole cLineWidth:= cScreenWidth div 10; @@ -215,113 +111,11 @@ cLineWidth:= 255; for i:= 0 to Pred(cLinesCount) do PByte(@ConsoleLines[i])^:= 0; - - // NOTE: please, keep most frequently used commands on bottom - RegisterVariable('flag' , vtCommand, @chFlag , false); - RegisterVariable('script' , vtCommand, @chScript , false); - RegisterVariable('proto' , vtCommand, @chCheckProto , true ); - RegisterVariable('spectate', vtBoolean, @fastUntilLag , false); - RegisterVariable('capture' , vtCommand, @chCapture , true ); - RegisterVariable('rotmask' , vtCommand, @chRotateMask , true ); - RegisterVariable('addteam' , vtCommand, @chAddTeam , false); - RegisterVariable('rdriven' , vtCommand, @chTeamLocal , false); - RegisterVariable('map' , vtCommand, @chSetMap , false); - RegisterVariable('theme' , vtCommand, @chSetTheme , false); - RegisterVariable('seed' , vtCommand, @chSetSeed , false); - RegisterVariable('template_filter', vtLongInt, @cTemplateFilter, false); - RegisterVariable('mapgen' , vtLongInt, @cMapGen , false); - RegisterVariable('maze_size',vtLongInt, @cMazeSize , false); - RegisterVariable('delay' , vtLongInt, @cInactDelay , false); - RegisterVariable('ready' , vtLongInt, @cReadyDelay , false); - RegisterVariable('casefreq', vtLongInt, @cCaseFactor , false); - RegisterVariable('healthprob', vtLongInt, @cHealthCaseProb, false); - RegisterVariable('hcaseamount', vtLongInt, @cHealthCaseAmount, false); - RegisterVariable('sd_turns', vtLongInt, @cSuddenDTurns , false); - RegisterVariable('waterrise', vtLongInt, @cWaterRise , false); - RegisterVariable('healthdec', vtLongInt, @cHealthDecrease, false); - RegisterVariable('damagepct',vtLongInt, @cDamagePercent , false); - RegisterVariable('minedudpct',vtLongInt,@cMineDudPercent, false); - RegisterVariable('minesnum', vtLongInt, @cLandMines , false); - RegisterVariable('explosives',vtLongInt,@cExplosives , false); - RegisterVariable('gmflags' , vtLongInt, @GameFlags , false); - RegisterVariable('trflags' , vtLongInt, @TrainingFlags , false); - RegisterVariable('turntime', vtLongInt, @cHedgehogTurnTime, false); - RegisterVariable('minestime',vtLongInt, @cMinesTime , false); - RegisterVariable('fort' , vtCommand, @chFort , false); - RegisterVariable('voicepack',vtCommand, @chVoicepack , false); - RegisterVariable('grave' , vtCommand, @chGrave , false); - RegisterVariable('bind' , vtCommand, @chBind , true ); - RegisterVariable('addhh' , vtCommand, @chAddHH , false); - RegisterVariable('hat' , vtCommand, @chSetHat , false); - RegisterVariable('hhcoords', vtCommand, @chSetHHCoords , false); - RegisterVariable('ammloadt', vtCommand, @chSetAmmoLoadout, false); - RegisterVariable('ammdelay', vtCommand, @chSetAmmoDelay, false); - RegisterVariable('ammprob', vtCommand, @chSetAmmoProbability, false); - RegisterVariable('ammreinf', vtCommand, @chSetAmmoReinforcement, false); - RegisterVariable('ammstore', vtCommand, @chAddAmmoStore , false); - RegisterVariable('quit' , vtCommand, @chQuit , true ); - RegisterVariable('confirm' , vtCommand, @chConfirm , true ); - RegisterVariable('+speedup', vtCommand, @chSpeedup_p , true ); - RegisterVariable('-speedup', vtCommand, @chSpeedup_m , true ); - RegisterVariable('zoomin' , vtCommand, @chZoomIn , true ); - RegisterVariable('zoomout' , vtCommand, @chZoomOut , true ); - RegisterVariable('zoomreset',vtCommand, @chZoomReset , true ); - RegisterVariable('skip' , vtCommand, @chSkip , false); - RegisterVariable('history' , vtCommand, @chHistory , true ); - RegisterVariable('chat' , vtCommand, @chChat , true ); - RegisterVariable('say' , vtCommand, @chSay , true ); - RegisterVariable('hogsay' , vtCommand, @chHogSay , true ); - RegisterVariable('team' , vtCommand, @chTeamSay , true ); - RegisterVariable('ammomenu', vtCommand, @chAmmoMenu , true); - RegisterVariable('+precise', vtCommand, @chPrecise_p , false); - RegisterVariable('-precise', vtCommand, @chPrecise_m , false); - RegisterVariable('+left' , vtCommand, @chLeft_p , false); - RegisterVariable('-left' , vtCommand, @chLeft_m , false); - RegisterVariable('+right' , vtCommand, @chRight_p , false); - RegisterVariable('-right' , vtCommand, @chRight_m , false); - RegisterVariable('+up' , vtCommand, @chUp_p , false); - RegisterVariable('-up' , vtCommand, @chUp_m , false); - RegisterVariable('+down' , vtCommand, @chDown_p , false); - RegisterVariable('-down' , vtCommand, @chDown_m , false); - RegisterVariable('+attack' , vtCommand, @chAttack_p , false); - RegisterVariable('-attack' , vtCommand, @chAttack_m , false); - RegisterVariable('switch' , vtCommand, @chSwitch , false); - RegisterVariable('nextturn', vtCommand, @chNextTurn , false); - RegisterVariable('timer' , vtCommand, @chTimer , false); - RegisterVariable('taunt' , vtCommand, @chTaunt , false); - RegisterVariable('setweap' , vtCommand, @chSetWeapon , false); - RegisterVariable('slot' , vtCommand, @chSlot , false); - RegisterVariable('put' , vtCommand, @chPut , false); - RegisterVariable('ljump' , vtCommand, @chLJump , false); - RegisterVariable('hjump' , vtCommand, @chHJump , false); - RegisterVariable('fullscr' , vtCommand, @chFullScr , true ); - RegisterVariable('+volup' , vtCommand, @chVol_p , true ); - RegisterVariable('-volup' , vtCommand, @chVol_m , true ); - RegisterVariable('+voldown', vtCommand, @chVol_m , true ); - RegisterVariable('-voldown', vtCommand, @chVol_p , true ); - RegisterVariable('findhh' , vtCommand, @chFindhh , true ); - RegisterVariable('pause' , vtCommand, @chPause , true ); - RegisterVariable('+cur_u' , vtCommand, @chCurU_p , true ); - RegisterVariable('-cur_u' , vtCommand, @chCurU_m , true ); - RegisterVariable('+cur_d' , vtCommand, @chCurD_p , true ); - RegisterVariable('-cur_d' , vtCommand, @chCurD_m , true ); - RegisterVariable('+cur_l' , vtCommand, @chCurL_p , true ); - RegisterVariable('-cur_l' , vtCommand, @chCurL_m , true ); - RegisterVariable('+cur_r' , vtCommand, @chCurR_p , true ); - RegisterVariable('-cur_r' , vtCommand, @chCurR_m , true ); end; procedure freeModule; -var t, tt: PVariable; begin - tt:= Variables; - Variables:= nil; - while tt <> nil do - begin - t:= tt; - tt:= tt^.Next; - Dispose(t) - end; + end; end.
--- a/hedgewars/uConsts.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uConsts.pas Tue Jan 04 12:53:46 2011 +0100 @@ -21,181 +21,10 @@ unit uConsts; interface -uses SDLh, uFloat, uLocale, GLunit; - +uses SDLh, uFloat, GLunit; {$INCLUDE "config.inc"} -// typed const is a variable despite const qualifier -// in freepascal you may actually use var for the same purpose - -type - HwColor4f = record - r, g, b, a: byte - end; - - TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit); - - TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax); - - TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps, - ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts, - ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps); - - TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame, - sprLag, sprArrow, sprBazookaShell, sprTargetP, sprBee, - sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff, - sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower, - sprClusterBomb, sprClusterParticle, sprFlame, sprHorizont, - sprHorizontL, sprHorizontR, sprSky, sprSkyL, - sprSkyR, sprAMBorderHorizontal, sprAMBorderVertical, sprAMSlot, sprAMAmmos, - sprAMSlotKeys, sprAMCorners, sprFinger, sprAirBomb, - sprAirplane, sprAmAirplane, sprAmGirder, sprHHTelepMask, - sprSwitch, sprParachute, sprTarget, sprRopeNode, - sprQuestion, sprPowerBar, sprWindBar, sprWindL, sprWindR, - sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun, - sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer, - sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath, - sprShotgun, sprDEagle, sprHHIdle, sprMortar, sprTurnsLeft, - sprKamikaze, sprWhip, sprKowtow, sprSad, sprWave, - sprHurrah, sprLemonade, sprShrug, sprJuggle, sprExplPart, sprExplPart2, - sprCakeWalk, sprCakeDown, sprAMAmmosBW, sprWatermelon, - sprEvilTrace, sprHellishBomb, sprSeduction, sprDress, - sprCensored, sprDrill, sprHandDrill, sprHandBallgun, sprBalls, - sprPlane, sprHandPlane, sprUtility, sprInvulnerable, sprVampiric, sprGirder, - sprSpeechCorner, sprSpeechEdge, sprSpeechTail, - sprThoughtCorner, sprThoughtEdge, sprThoughtTail, - sprShoutCorner, sprShoutEdge, sprShoutTail, - sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov, - sprSmoke, sprSmokeWhite, sprShell, sprDust, sprExplosives, sprExplosivesRoll, - sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction, - sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster, - sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp, - sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee, - sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal, - sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote, - sprSMineOff, sprSMineOn, sprHandSMine, sprHammer, - sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb, - sprBulletHit - ); - - // Gears that interact with other Gears and/or Land - TGearType = (gtBomb, gtHedgehog, gtShell, gtGrave, gtBee, // 4 - gtShotgunShot, gtPickHammer, gtRope, gtMine, gtCase, // 9 - gtDEagleShot, gtDynamite, gtClusterBomb, gtCluster, gtShover, // 14 - gtFlame, gtFirePunch, gtATStartGame, gtATSmoothWindCh, // 18 - gtATFinishGame, gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, // 23 - gtGirder, gtTeleport, gtSwitcher, gtTarget, gtMortar, // 28 - gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 34 - gtHellishBomb, gtWaterUp, gtDrill, gtBallGun, gtBall, gtRCPlane, // 40 - gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45 - gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51 - gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector, // 56 - gtNapalmBomb); // 57 - - // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.) - TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, - vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble, - vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, - vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg, - vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion, - vgtBigExplosion, vgtChunk, vgtNote, vgtLineTrail, - vgtBulletHit); - - TGearsType = set of TGearType; - - TDamageSource = (dsUnknown, dsFall, dsBullet, dsExplosion, dsShove, dsPoison); - - TSound = (sndNone, - sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease, - sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact, - sndMineTick, sndPickhammer, sndGun, sndBee, sndJump1, sndJump2, - sndJump3, sndYesSir, sndLaugh, sndIllGetYou, sndIncoming, - sndMissed, sndStupid, sndFirstBlood, sndBoring, sndByeBye, - sndSameTeam, sndNutter, sndReinforce, sndTraitor, sndRegret, - sndEnemyDown, sndCoward, sndHurry, sndWatchIt, sndKamikaze, - sndCake, sndOw1, sndOw2, sndOw3, sndOw4, sndFirePunch1, sndFirePunch2, - sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6, - sndMelon, sndHellish, sndYoohoo, sndRCPlane, sndWhipCrack, - sndRideOfTheValkyries, sndDenied, sndPlaced, sndBaseballBat, - sndVaporize, sndWarp, sndSuddenDeath, sndMortar, sndShutter, - sndHomerun, sndMolotov, sndCover, sndUhOh, sndOops, - sndNooo, sndHello, sndRopeShot, sndRopeAttach, sndRopeRelease, - sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity, - sndHellishImpact1, sndHellishImpact2, sndHellishImpact3, sndHellishImpact4, - sndMelonImpact, sndDroplet1, sndDroplet2, sndDroplet3, sndEggBreak, sndDrillRocket, - sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater, - sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8, - sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3, sndWhack, - sndComeonthen, sndParachute, sndBump, sndResurrector); - - TAmmoType = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, // 6 - amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, // 13 - amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch, // 18 - amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake, // 24 - amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, // 30 - amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35 - amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42 - amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48 - amResurrector, amDrillStrike); - - TCrateType = (HealthCrate, AmmoCrate, UtilityCrate); - - THWFont = (fnt16, fntBig, fntSmall {$IFNDEF IPHONEOS}, CJKfnt16, CJKfntBig, CJKfntSmall{$ENDIF}); - - TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume, - capgrpMessage, capgrpAmmostate); - - TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs, - siClanHealth, siTeamStats, siPlayerKills, siMaxTeamDamage, - siMaxTeamKills, siMaxTurnSkips ); - - TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle); - - TRenderMode = (rmDefault, rmLeftEye, rmRightEye); - TStereoMode = (smNone, smRedCyan, smCyanRed, smRedBlue, smBlueRed, smRedGreen, smGreenRed, smHorizontal, smVertical, smAFR); - - THHFont = record - Handle: PTTF_Font; - Height: LongInt; - style: LongInt; - Name: string[21]; - end; - - PAmmo = ^TAmmo; - TAmmo = record - Propz: LongWord; - Count: LongWord; -(* Using for place hedgehogs mode, but for any other situation where the initial count would be needed I guess. -For example, say, a mode where the weaponset is reset each turn, or on sudden death *) - NumPerTurn: LongWord; - Timer: LongWord; - Pos: LongWord; - AmmoType: TAmmoType; - AttackVoice: TSound; - end; - - TVertex2f = record - X, Y: GLfloat; - end; - - TVertex2i = record - X, Y: GLint; - end; - - PTexture = ^TTexture; - TTexture = record - id: GLuint; - w, h, scale: LongInt; - rx, ry: GLfloat; - priority: GLfloat; - vb, tb: array [0..3] of TVertex2f; - PrevTexture, NextTexture: PTexture; - end; - - THogEffect = (heInvulnerable, heResurrectable, hePoisoned, heResurrected); - - TScreenFade = (sfNone, sfInit, sfToBlack, sfFromBlack, sfToWhite, sfFromWhite); const sfMax = 1000; cDefaultParamNum = 17; @@ -236,7 +65,7 @@ rqNoBackground= $00000004; // don't draw background rqSimpleRope = $00000008; // draw rope using lines only rq2DWater = $00000010; // disable 3D water effect - rqFancyBoom = $00000020; // no fancy explosion effects + rqAntiBoom = $00000020; // no fancy explosion effects rqKillFlakes = $00000040; // no flakes rqSlowMenu = $00000080; // ammomenu appears with no animation rqPlainSplash = $00000100; // no droplets @@ -270,6 +99,7 @@ cPowerDivisor = 1500; MAXNAMELEN = 192; + MAXROPEPOINTS = 3840; // some opengl headers do not have these macros GL_BGR = $80E0; @@ -282,6 +112,7 @@ cCursorEdgesDist : LongInt = 100; cTeamHealthWidth : LongInt = 128; cWaterOpacity : byte = $80; + cSDWaterOpacity : byte = $80; cifRandomize = $00000001; cifTheme = $00000002; @@ -290,7 +121,7 @@ cTransparentColor: Longword = $00000000; - cMaxTeams = 6; + cMaxTeams = 8; cMaxHHIndex = 7; cMaxHHs = 48; cMaxSpawnPoints = 1024; @@ -328,14 +159,6 @@ cSendEmptyPacketTime = 1000; trigTurns = $80000001; - // Training Flags - tfNone = $00000000; - tfTimeTrial = $00000001; - tfRCPlane = $00000002; - tfSpawnTargets = $00000004; - tfIgnoreDelays = $00000008; - tfTargetRespawn = $00000010; - gfAny = $FFFFFFFF; gfOneClanMode = $00000001; // used in trainings gfMultiWeapon = $00000002; // used in trainings @@ -360,7 +183,7 @@ gfInfAttack = $00100000; gfResetWeps = $00200000; gfPerHogAmmo = $00400000; - gfDisableWind = $00800000; // only lua for now + gfDisableWind = $00800000; gfMoreWind = $01000000; // NOTE: When adding new game flags, ask yourself // if a "game start notice" would be useful. If so, @@ -445,1847 +268,7 @@ htHealth = $04; htTransparent = $08; - cHHFileName = 'Hedgehog'; - cCHFileName = 'Crosshair'; - cThemeCFGFilename = 'theme.cfg'; - FontBorder = 2; - cPathz: array[TPathType] of shortstring = ( - '', // ptNone - '', // ptData - 'Graphics', // ptGraphics - 'Themes', // ptThemes - 'Themes/avematan', // ptCurrTheme - 'Teams', // ptTeams - 'Maps', // ptMaps - '', // ptMapCurrent - 'Demos', // ptDemos - 'Sounds', // ptSounds - 'Graphics/Graves', // ptGraves - 'Fonts', // ptFonts - 'Forts', // ptForts - 'Locale', // ptLocale - 'Graphics/AmmoMenu', // ptAmmoMenu - 'Graphics/Hedgehog', // ptHedgehog - 'Sounds/voices', // ptVoices - 'Graphics/Hats', // ptHats - 'Graphics/Flags', // ptFlags - 'Missions/Maps' // ptMissionMaps - ); - - cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13); - cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0); - - Fontz: array[THWFont] of THHFont = ( - (Handle: nil; - Height: 12; - style: TTF_STYLE_NORMAL; - Name: 'DejaVuSans-Bold.ttf'), - (Handle: nil; - Height: 24; - style: TTF_STYLE_NORMAL; - Name: 'DejaVuSans-Bold.ttf'), - (Handle: nil; - Height: 10; - style: TTF_STYLE_NORMAL; - Name: 'DejaVuSans-Bold.ttf') - {$IFNDEF IPHONEOS}, // remove chinese fonts for now - (Handle: nil; - Height: 12; - style: TTF_STYLE_NORMAL; - Name: 'wqy-zenhei.ttc'), - (Handle: nil; - Height: 24; - style: TTF_STYLE_NORMAL; - Name: 'wqy-zenhei.ttc'), - (Handle: nil; - Height: 10; - style: TTF_STYLE_NORMAL; - Name: 'wqy-zenhei.ttc') - {$ENDIF} - ); - - SpritesData: array[TSprite] of record - FileName: String[16]; - Path, AltPath: TPathType; - Texture: PTexture; - Surface: PSDL_Surface; - Width, Height, imageWidth, imageHeight: LongInt; - saveSurf: boolean; - priority: GLfloat; - getDimensions, getImageDimensions: boolean; - end = ( - (FileName: 'BlueWater'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; - Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprWater - (FileName: 'Clouds'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; - Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCloud - (FileName: 'Bomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBomb - (FileName: 'BigDigits'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigDigit - (FileName: 'Frame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 4; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFrame - (FileName: 'Lag'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 65; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLag - (FileName: 'Arrow'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCursor - (FileName:'BazookaShell'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBazookaShell - (FileName: 'Targetp'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetP - (FileName: 'Bee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBee - (FileName: 'SmokeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeTrace - (FileName: 'RopeHook'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprRopeHook - (FileName: 'Expl50'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosion50 - (FileName: 'MineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOff - (FileName: 'MineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOn - (FileName: 'MineDead'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineDead - (FileName: 'Case'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCase - (FileName: 'FirstAid'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprFAid - (FileName: 'dynamite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDynamite - (FileName: 'Power'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprPower - (FileName: 'ClBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterBomb - (FileName: 'ClParticle'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterParticle - (FileName: 'Flame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlame - (FileName: 'horizont'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; - Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont - (FileName: 'horizontL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; - Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont - (FileName: 'horizontR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; - Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont - (FileName: 'Sky'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; - Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky - (FileName: 'SkyL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; - Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky - (FileName: 'SkyR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; - Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky - (FileName: 'BorderHorizontal'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 33; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderHorizontal - (FileName: 'BorderVertical'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 2; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderVertical - (FileName: 'Slot'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 33; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlot - (FileName: 'Ammos'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMAmmos - (FileName: 'SlotKeys'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlotKeys - (FileName: 'Corners'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 2; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMCorners - (FileName: 'Finger'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFinger - (FileName: 'AirBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirBomb - (FileName: 'Airplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 254; Height: 101; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirplane - (FileName: 'amAirplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmAirplane - (FileName: 'amGirder'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmGirder - (FileName: 'hhMask'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHHTelepMask - (FileName: 'Switch'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSwitch - (FileName: 'Parachute'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprParachute - (FileName: 'Target'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTarget - (FileName: 'RopeNode'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 6; Height: 6; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprRopeNode - (FileName: 'thinking'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprQuestion - (FileName: 'PowerBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPowerBar - (FileName: 'WindBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 151; Height: 17; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindBar - (FileName: 'WindL'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindL - (FileName: 'WindR'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindR - (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 - (FileName: 'amRope'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandRope - (FileName: 'amBazooka'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBazooka - (FileName: 'amShotgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandShotgun - (FileName: 'amDEagle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDEagle - (FileName:'amAirAttack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandAirAttack - (FileName: 'amBaseball'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBaseball - (FileName: 'Hammer'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPHammer - (FileName: 'amBTorch_i'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBlowTorch - (FileName: 'amBTorch_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBlowTorch - (FileName: 'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTeleport - (FileName: 'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHHDeath - (FileName:'amShotgun_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprShotgun - (FileName: 'amDEagle_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDEagle - (FileName: 'Idle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHHIdle - (FileName: 'Mortar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMortar - (FileName: 'TurnsLeft'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTurnsLeft - (FileName: 'amKamikaze'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprKamikaze - (FileName: 'amWhip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWhip - (FileName: 'Kowtow'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprKowtow - (FileName: 'Sad'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSad - (FileName: 'Wave'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprWave - (FileName: 'Hurrah'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHurrah - (FileName:'ILoveLemonade';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLemonade - (FileName: 'Shrug'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShrug - (FileName: 'Juggle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprJuggle - (FileName: 'ExplPart'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart - (FileName: 'ExplPart2'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart2 - (FileName: 'Cake_walk'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeWalk - (FileName: 'Cake_down'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeDown - (FileName: 'Ammos_bw'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprAMAmmosBW - (FileName: 'Watermelon'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWatermelon - (FileName: 'EvilTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprEvilTrace - (FileName:'HellishBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHellishBomb - (FileName: 'Seduction'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSeduction - (FileName: 'HHDress'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprDress - (FileName: 'Censored'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprCensored - (FileName: 'Drill'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDrill - (FileName: 'amDrill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDrill - (FileName: 'amBallgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBallgun - (FileName: 'Balls'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBalls - (FileName: 'RCPlane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPlane - (FileName: 'amRCPlane'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandPlane - (FileName: 'Utility'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprUtility - (FileName:'Invulnerable';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprInvulnerable - (FileName: 'Vampiric'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprVampiric - (FileName: 'amGirder'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 512; Height:512; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprGirder - (FileName:'SpeechCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 12; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechCorner - (FileName: 'SpeechEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 25; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechEdge - (FileName: 'SpeechTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 25; Height: 26; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechTail - (FileName:'ThoughtCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 49; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtCorner - (FileName:'ThoughtEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 23; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtEdge - (FileName:'ThoughtTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 45; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtTail - (FileName:'ShoutCorner'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 34; Height: 23; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutCorner - (FileName: 'ShoutEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 30; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutEdge - (FileName: 'ShoutTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 30; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutTail - (FileName:'amSniperRifle';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSniperRifle - (FileName: 'Bubbles'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBubbles - (FileName: 'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprJetpack - (FileName: 'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHealth - (FileName: 'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),//sprHandMolotov - (FileName: 'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMolotov - (FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmoke - (FileName: 'SmokeWhite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeWhite - (FileName: 'Shells'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprShell - (FileName: 'Dust'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; - Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDust - (FileName: 'Explosives'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosives - (FileName: 'ExplosivesRoll'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosivesRoll - (FileName: 'amTeleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmTeleport - (FileName: 'Splash'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; - Width: 80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSplash - (FileName: 'Droplet'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDroplet - (FileName: 'Birdy'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 75; Height: 75; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBirdy - (FileName: 'amCake'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCake - (FileName: 'amConstruction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandConstruction - (FileName: 'amGrenade'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandGrenade - (FileName: 'amMelon'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMelon - (FileName: 'amMortar'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMortar - (FileName: 'amSkip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSkip - (FileName: 'amCluster'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCluster - (FileName: 'amDynamite'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDynamite - (FileName: 'amHellish'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandHellish - (FileName: 'amMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMine - (FileName: 'amSeduction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSeduction - (FileName: 'amVamp'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandVamp - (FileName: 'BigExplosion'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 385; Height: 385; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigExplosion - (FileName: 'SmokeRing'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 200; Height: 200; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSmokeRing - (FileName: 'BeeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprBeeTrace - (FileName: 'Egg'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprEgg - (FileName: 'TargetBee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetBee - (FileName: 'amBee'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBee - (FileName: 'Feather'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 15; Height: 25; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFeather - (FileName: 'Piano'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPiano - (FileName: 'amSineGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSineGun - (FileName: 'amPortalGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortalGun - (FileName: 'Portal'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortal - (FileName: 'cheese'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCheese - (FileName: 'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese - (FileName: 'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandFlamethrower - (FileName: 'Chunk'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprChunk - (FileName: 'Note'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprNote - (FileName: 'SMineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOff - (FileName: 'SMineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOn - (FileName: 'amSMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSMine - (FileName: 'amHammer'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprWhip - (FileName: 'amResurrector'; Path: ptHedgehog; AltPath: ptNone; - Texture: nil; Surface: nil; Width: 32; Height: 32; - imageWidth: 0; imageHeight: 0; saveSurf: false; priority: - tpMedium; getDimensions: false; getImageDimensions: true), - //sprHandResurrector - (FileName: 'Cross'; Path: ptGraphics; altPath: ptNone; - Texture: nil; Surface: nil; Width: 108; Height: 138; - imageWidth: 0; imageHeight: 0; saveSurf: false; priority: - tpMedium; getDimensions: false; getImageDimensions: true), - //sprCross - (FileName: 'AirDrill'; Path: ptGraphics; AltPath: ptNone; - Texture: nil; Surface: nil; Width: 16; Height: 16; - imageWidth: 0; imageHeight: 0; saveSurf: false; priority: - tpMedium; getDimensions: false; getImageDimensions: true), - // sprAirDrill - (FileName: 'NapalmBomb'; Path: ptGraphics; AltPath: ptNone; - Texture: nil; Surface: nil; Width: 16; Height: 16; - imageWidth: 0; imageHeight: 0; saveSurf: false; priority: - tpMedium; getDimensions: false; getImageDimensions: true), - // sprNapalmBomb - (FileName: 'BulletHit'; Path: ptGraphics; AltPath: ptNone; - Texture: nil; Surface: nil; Width: 32; Height: 32; - imageWidth: 0; imageHeight: 0; saveSurf: false; priority: - tpMedium; getDimensions: false; getImageDimensions: true) - // sprNapalmBomb - ); - - - Wavez: array [TWave] of record - Sprite: TSprite; - FramesCount: Longword; - Interval: Longword; - cmd: String[20]; - Voice: TSound; - VoiceDelay: LongWord; - end = ( - (Sprite: sprKowtow; FramesCount: 12; Interval: 125; cmd: '/rollup'; Voice: sndNone; VoiceDelay: 0), - (Sprite: sprSad; FramesCount: 14; Interval: 125; cmd: '/sad'; Voice: sndNone; VoiceDelay: 0), - (Sprite: sprWave; FramesCount: 16; Interval: 125; cmd: '/wave'; Voice: sndHello; VoiceDelay: 5), - (Sprite: sprHurrah; FramesCount: 14; Interval: 125; cmd: '/hurrah'; Voice: sndNone; VoiceDelay: 0), - (Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0), - (Sprite: sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0), - (Sprite: sprJuggle; FramesCount: 49; Interval: 38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0) - ); - - Soundz: array[TSound] of record - FileName: String[25]; - Path : TPathType; - end = ( - (FileName: ''; Path: ptNone ),// sndNone - (FileName: 'grenadeimpact.ogg'; Path: ptSounds),// sndGrenadeImpact - (FileName: 'explosion.ogg'; Path: ptSounds),// sndExplosion - (FileName: 'throwpowerup.ogg'; Path: ptSounds),// sndThrowPowerUp - (FileName: 'throwrelease.ogg'; Path: ptSounds),// sndThrowRelease - (FileName: 'splash.ogg'; Path: ptSounds),// sndSplash - (FileName: 'shotgunreload.ogg'; Path: ptSounds),// sndShotgunReload - (FileName: 'shotgunfire.ogg'; Path: ptSounds),// sndShotgunFire - (FileName: 'graveimpact.ogg'; Path: ptSounds),// sndGraveImpact - (FileName: 'minetick.ogg'; Path: ptSounds),// sndMineTicks - (FileName: 'pickhammer.ogg'; Path: ptSounds),// sndPickhammer - (FileName: 'gun.ogg'; Path: ptSounds),// sndGun - (FileName: 'bee.ogg'; Path: ptSounds),// sndBee - (FileName: 'Jump1.ogg'; Path: ptVoices),// sndJump1 - (FileName: 'Jump2.ogg'; Path: ptVoices),// sndJump2 - (FileName: 'Jump3.ogg'; Path: ptVoices),// sndJump3 - (FileName: 'Yessir.ogg'; Path: ptVoices),// sndYesSir - (FileName: 'Laugh.ogg'; Path: ptVoices),// sndLaugh - (FileName: 'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou - (FileName: 'Incoming.ogg'; Path: ptVoices),// sndIncoming - (FileName: 'Missed.ogg'; Path: ptVoices),// sndMissed - (FileName: 'Stupid.ogg'; Path: ptVoices),// sndStupid - (FileName: 'Firstblood.ogg'; Path: ptVoices),// sndFirstBlood - (FileName: 'Boring.ogg'; Path: ptVoices),// sndBoring - (FileName: 'Byebye.ogg'; Path: ptVoices),// sndByeBye - (FileName: 'Sameteam.ogg'; Path: ptVoices),// sndSameTeam - (FileName: 'Nutter.ogg'; Path: ptVoices),// sndNutter - (FileName: 'Reinforcements.ogg'; Path: ptVoices),// sndReinforce - (FileName: 'Traitor.ogg'; Path: ptVoices),// sndTraitor - (FileName: 'Youllregretthat.ogg'; Path: ptVoices),// sndRegret - (FileName: 'Enemydown.ogg'; Path: ptVoices),// sndEnemyDown - (FileName: 'Coward.ogg'; Path: ptVoices),// sndCoward - (FileName: 'Hurry.ogg'; Path: ptVoices),// sndHurry - (FileName: 'Watchit.ogg'; Path: ptVoices),// sndWatchIt - (FileName: 'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze - (FileName: 'cake2.ogg'; Path: ptSounds),// sndCake - (FileName: 'Ow1.ogg'; Path: ptVoices),// sndOw1 - (FileName: 'Ow2.ogg'; Path: ptVoices),// sndOw2 - (FileName: 'Ow3.ogg'; Path: ptVoices),// sndOw3 - (FileName: 'Ow4.ogg'; Path: ptVoices),// sndOw4 - (FileName: 'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1 - (FileName: 'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2 - (FileName: 'Firepunch3.ogg'; Path: ptVoices),// sndFirepunch3 - (FileName: 'Firepunch4.ogg'; Path: ptVoices),// sndFirepunch4 - (FileName: 'Firepunch5.ogg'; Path: ptVoices),// sndFirepunch5 - (FileName: 'Firepunch6.ogg'; Path: ptVoices),// sndFirepunch6 - (FileName: 'Melon.ogg'; Path: ptVoices),// sndMelon - (FileName: 'Hellish.ogg'; Path: ptSounds),// sndHellish - (FileName: 'Yoohoo.ogg'; Path: ptSounds),// sndYoohoo - (FileName: 'rcplane.ogg'; Path: ptSounds),// sndRCPlane - (FileName: 'whipcrack.ogg'; Path: ptSounds),// sndWhipCrack - (FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds),// sndRideOfTheValkyries - (FileName: 'denied.ogg'; Path: ptSounds),// sndDenied - (FileName: 'placed.ogg'; Path: ptSounds),// sndPlaced - (FileName: 'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat - (FileName: 'steam.ogg'; Path: ptSounds),// sndVaporize - (FileName: 'warp.ogg'; Path: ptSounds),// sndWarp - (FileName: 'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath - (FileName: 'mortar.ogg'; Path: ptSounds),// sndMortar - (FileName: 'shutterclick.ogg'; Path: ptSounds),// sndShutter - (FileName: 'homerun.ogg'; Path: ptSounds),// sndHomerun - (FileName: 'molotov.ogg'; Path: ptSounds),// sndMolotov - (FileName: 'Takecover.ogg'; Path: ptVoices),// sndCover - (FileName: 'Uh-oh.ogg'; Path: ptVoices),// sndUhOh - (FileName: 'Oops.ogg'; Path: ptVoices),// sndOops - (FileName: 'Nooo.ogg'; Path: ptVoices),// sndNooo - (FileName: 'Hello.ogg'; Path: ptVoices),// sndHello - (FileName: 'ropeshot.ogg'; Path: ptSounds),// sndRopeShot - (FileName: 'ropeattach.ogg'; Path: ptSounds),// sndRopeAttach - (FileName: 'roperelease.ogg'; Path: ptSounds),// sndRopeRelease - (FileName: 'switchhog.ogg'; Path: ptSounds),// sndSwitchHog - (FileName: 'victory.ogg'; Path: ptVoices),// sndVictory - (FileName: 'sniperreload.ogg'; Path: ptSounds),// sndSniperReload - (FileName: 'steps.ogg'; Path: ptSounds),// sndSteps - (FileName: 'lowgravity.ogg'; Path: ptSounds),// sndLowGravity - (FileName: 'hell_growl.ogg'; Path: ptSounds),// sndHellishImpact1 - (FileName: 'hell_ooff.ogg'; Path: ptSounds),// sndHellishImpact2 - (FileName: 'hell_ow.ogg'; Path: ptSounds),// sndHellishImpact3 - (FileName: 'hell_ugh.ogg'; Path: ptSounds),// sndHellishImpact4 - (FileName: 'melonimpact.ogg'; Path: ptSounds),// sndMelonImpact - (FileName: 'Droplet1.ogg'; Path: ptSounds),// sndDroplet1 - (FileName: 'Droplet2.ogg'; Path: ptSounds),// sndDroplet2 - (FileName: 'Droplet3.ogg'; Path: ptSounds),// sndDroplet3 - (FileName: 'egg.ogg'; Path: ptSounds),// sndEggBreak - (FileName: 'drillgun.ogg'; Path: ptSounds),// sndDrillRocket - (FileName: 'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough - (FileName: 'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan - (FileName: 'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay - (FileName: 'Whistle.ogg'; Path: ptSounds),// sndWhistle - (FileName: 'beewater.ogg'; Path: ptSounds),// sndBeeWater - (FileName: '1C.ogg'; Path: ptSounds),// sndPiano0 - (FileName: '2D.ogg'; Path: ptSounds),// sndPiano1 - (FileName: '3E.ogg'; Path: ptSounds),// sndPiano2 - (FileName: '4F.ogg'; Path: ptSounds),// sndPiano3 - (FileName: '5G.ogg'; Path: ptSounds),// sndPiano4 - (FileName: '6A.ogg'; Path: ptSounds),// sndPiano5 - (FileName: '7B.ogg'; Path: ptSounds),// sndPiano6 - (FileName: '8C.ogg'; Path: ptSounds),// sndPiano7 - (FileName: '9D.ogg'; Path: ptSounds),// sndPiano8 - (FileName: 'skip.ogg'; Path: ptSounds),// sndSkip - (FileName: 'shotgunfire.ogg'; Path: ptSounds),// sndSineGun - (FileName: 'Ooff1.ogg'; Path: ptVoices),// sndOoff1 - (FileName: 'Ooff2.ogg'; Path: ptVoices),// sndOoff2 - (FileName: 'Ooff3.ogg'; Path: ptVoices),// sndOoff3 - (FileName: 'whipcrack.ogg'; Path: ptSounds),// sndWhack - (FileName: 'Comeonthen.ogg'; Path: ptVoices),// sndComeonthen - (FileName: 'parachute.ogg'; Path: ptSounds),// sndParachute - (FileName: 'bump.ogg'; Path: ptSounds),// sndBump - (FileName: 'hogchant3.ogg'; Path: ptSounds) // sndResurrector - ); - - Ammoz: array [TAmmoType] of record - NameId: TAmmoStrId; - NameTex: PTexture; - Probability, NumberInCase: Longword; - Ammo: TAmmo; - Slot: 0..cMaxSlotIndex; - TimeAfterTurn: Longword; - minAngle, maxAngle: Longword; - isDamaging: boolean; - SkipTurns: Longword; - PosCount: Longword; - PosSprite: TSprite; - ejectX, ejectY: Longint; - end = ( - (NameId: sidNothing; - NameTex: nil; - Probability: 0; - NumberInCase: 0; - Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Effect; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amNothing; - AttackVoice: sndNone); - Slot: 0; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 9999; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Grenade - (NameId: sidGrenade; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amGrenade; - AttackVoice: sndCover); - Slot: 1; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// ClusterBomb - (NameId: sidClusterBomb; - NameTex: nil; - Probability: 100; - NumberInCase: 3; - Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; - Count: 5; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amClusterBomb; - AttackVoice: sndCover); - Slot: 1; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Bazooka - (NameId: sidBazooka; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBazooka; - AttackVoice: sndNone); - Slot: 0; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //20; - ejectY: -6), - -// Bee - (NameId: sidBee; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBee; - AttackVoice: sndNone); - Slot: 0; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //16; - ejectY: 0), - -// Shotgun - (NameId: sidShotgun; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs; - Count: AMMO_INFINITE; - NumPerTurn: 1; - Timer: 0; - Pos: 0; - AmmoType: amShotgun; - AttackVoice: sndNone); - Slot: 2; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //26; - ejectY: -6), - -// PickHammer - (NameId: sidPickHammer; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amPickHammer; - AttackVoice: sndNone); - Slot: 6; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Skip - (NameId: sidSkip; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amSkip; - AttackVoice: sndNone); - Slot: 9; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Rope - (NameId: sidRope; - NameTex: nil; - Probability: 100; - NumberInCase: 3; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_ForwMsgs or - ammoprop_AttackInMove or - ammoprop_Utility or - ammoprop_AltAttack; - Count: 5; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amRope; - AttackVoice: sndNone); - Slot: 7; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: cMaxAngle div 2; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Mine - (NameId: sidMine; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amMine; - AttackVoice: sndLaugh); - Slot: 4; - TimeAfterTurn: 5000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// DEagle - (NameId: sidDEagle; - NameTex: nil; - Probability: 20; - NumberInCase: 2; - Ammo: (Propz: 0; - Count: 3; - NumPerTurn: 3; - Timer: 0; - Pos: 0; - AmmoType: amDEagle; - AttackVoice: sndNone); - Slot: 2; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //23; - ejectY: -6), - -// Dynamite - (NameId: sidDynamite; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amDynamite; - AttackVoice: sndLaugh); - Slot: 4; - TimeAfterTurn: 5000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// FirePunch - (NameId: sidFirePunch; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amFirePunch; - AttackVoice: sndNone); - Slot: 3; - TimeAfterTurn: 3000; - MinAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Whip - (NameId: sidWhip; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amWhip; - AttackVoice: sndNone); - Slot: 3; - TimeAfterTurn: 3000; - MinAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// BaseballBat - (NameId: sidBaseballBat; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBaseballBat; - AttackVoice: sndNone); - Slot: 3; - TimeAfterTurn: 5000; - minAngle: 0; - maxAngle: cMaxAngle div 2; - isDamaging: true; - SkipTurns: 2; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Parachute - (NameId: sidParachute; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_ForwMsgs or - ammoprop_AttackInMove or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_Utility or - ammoprop_AltAttack; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amParachute; - AttackVoice: sndNone); - Slot: 7; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// AirAttack - (NameId: sidAirAttack; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut or - ammoprop_DontHold or - ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amAirAttack; - AttackVoice: sndIncoming); - Slot: 5; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 5; - PosCount: 2; - PosSprite: sprAmAirplane; - ejectX: 0; - ejectY: 0), - -// MineStrike - (NameId: sidMineStrike; - NameTex: nil; - Probability: 200; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut or - ammoprop_DontHold or - ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amMineStrike; - AttackVoice: sndIncoming); - Slot: 5; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 5; - PosCount: 2; - PosSprite: sprAmAirplane; - ejectX: 0; - ejectY: 0), - -// BlowTorch - (NameId: sidBlowTorch; - NameTex: nil; - Probability: 100; - NumberInCase: 2; - Ammo: (Propz: ammoprop_ForwMsgs; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBlowTorch; - AttackVoice: sndNone); - Slot: 6; - TimeAfterTurn: 3000; - minAngle: 768; - maxAngle: 1280; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Girder - (NameId: sidGirder; - NameTex: nil; - Probability: 150; - NumberInCase: 3; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_Utility or - ammoprop_AttackingPut; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amGirder; - AttackVoice: sndNone); - Slot: 6; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 8; - PosSprite: sprAmGirder; - ejectX: 0; - ejectY: 0), - -// Teleport - (NameId: sidTeleport; - NameTex: nil; - Probability: 200; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut or - ammoprop_Utility or - ammoprop_DontHold; - Count: 2; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amTeleport; - AttackVoice: sndNone); - Slot: 7; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 2; - PosSprite: sprAmTeleport; - ejectX: 0; - ejectY: 0), - -// Switch - (NameId: sidSwitch; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_ForwMsgs or - ammoprop_NoCrosshair or - ammoprop_Utility or - ammoprop_DontHold; - Count: 3; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amSwitch; - AttackVoice: sndNone); - Slot: 9; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Mortar - (NameId: sidMortar; - NameTex: nil; - Probability: 100; - NumberInCase: 4; - Ammo: (Propz: 0; - Count: 4; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amMortar; - AttackVoice: sndNone); - Slot: 0; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //20; - ejectY: -6), - -// Kamikaze - (NameId: sidKamikaze; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amKamikaze; - AttackVoice: sndNone); - Slot: 3; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Cake - (NameId: sidCake; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amCake; - AttackVoice: sndLaugh); - Slot: 4; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 4; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Seduction - (NameId: sidSeduction; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amSeduction; - AttackVoice: sndNone); - Slot: 3; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Watermelon - (NameId: sidWatermelon; - NameTex: nil; - Probability: 400; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; - Count: 0; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amWatermelon; - AttackVoice: sndMelon); - Slot: 1; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// HellishBomb ("Hellish Hand-Grenade") - (NameId: sidHellishBomb; - NameTex: nil; - Probability: 400; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; - Count: 0; - NumPerTurn: 0; - Timer: 5000; - Pos: 0; - AmmoType: amHellishBomb; - AttackVoice: sndNone); - Slot: 1; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Napalm - (NameId: sidNapalm; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut or - ammoprop_DontHold or - ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amNapalm; - AttackVoice: sndIncoming); - Slot: 5; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 7; - PosCount: 2; - PosSprite: sprAmAirplane; - ejectX: 0; - ejectY: 0), - -// Drill ("Drill Rocket") - (NameId: sidDrill; - NameTex: nil; - Probability: 300; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amDrill; - AttackVoice: sndNone); - Slot: 0; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprDrill; - ejectX: 0; //20; - ejectY: -6), - -// Ballgun - (NameId: sidBallgun; - NameTex: nil; - Probability: 400; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 5001; - Pos: 0; - AmmoType: amBallgun; - AttackVoice: sndNone); - Slot: 4; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //20; - ejectY: -3), - -// RC-Plane - (NameId: sidRCPlane; - NameTex: nil; - Probability: 200; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs{ or - ammoprop_DontHold or - ammoprop_AltAttack}; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amRCPlane; - AttackVoice: sndNone); - Slot: 4; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 4; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// LowGravity - (NameId: sidLowGravity; - NameTex: nil; - Probability: 20; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility or - ammoprop_Effect; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amLowGravity; - AttackVoice: sndNone); - Slot: 9; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// ExtraDamage - (NameId: sidExtraDamage; - NameTex: nil; - Probability: 15; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility or - ammoprop_Effect; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amExtraDamage; - AttackVoice: sndNone); - Slot: 9; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Invulnerable - (NameId: sidInvulnerable; - NameTex: nil; - Probability: 20; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility or - ammoprop_Effect; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amInvulnerable; - AttackVoice: sndNone); - Slot: 8; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// ExtraTime - (NameId: sidExtraTime; - NameTex: nil; - Probability: 30; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility or - ammoprop_Effect; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amExtraTime; - AttackVoice: sndNone); - Slot: 9; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// LaserSight - (NameId: sidLaserSight; - NameTex: nil; - Probability: 15; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility or - ammoprop_Effect; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amLaserSight; - AttackVoice: sndNone); - Slot: 8; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Vampiric - (NameId: sidVampiric; - NameTex: nil; - Probability: 15; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_AltUse or - ammoprop_Utility or - ammoprop_Effect; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amVampiric; - AttackVoice: sndNone); - Slot: 8; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// SniperRifle - (NameId: sidSniperRifle; - NameTex: nil; - Probability: 20; - NumberInCase: 2; - Ammo: (Propz: 0; - Count: 2; - NumPerTurn: 1; - Timer: 0; - Pos: 0; - AmmoType: amSniperRifle; - AttackVoice: sndNone); - Slot: 2; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //40; - ejectY: -5), - -// Jetpack ("Flying Saucer") - (NameId: sidJetpack; - NameTex: nil; - Probability: 20; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_ForwMsgs or - ammoprop_AttackInMove or - ammoprop_NoCrosshair or - ammoprop_DontHold or - ammoprop_Utility or - ammoprop_AltAttack; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amJetpack; - AttackVoice: sndNone); - Slot: 7; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Molotov - (NameId: sidMolotov; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amMolotov; - AttackVoice: sndNone); - Slot: 1; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Birdy - (NameId: sidBirdy; - NameTex: nil; - Probability: 20; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or - ammoprop_NoCrosshair or - ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amBirdy; - AttackVoice: sndNone); - Slot: 7; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// PortalGun - (NameId: sidPortalGun; - NameTex: nil; - Probability: 20; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoRoundEnd or - ammoprop_AttackInMove or - ammoprop_DontHold or - ammoprop_Utility; - Count: 1; - NumPerTurn: 3; - Timer: 0; - Pos: 0; - AmmoType: amPortalGun; - AttackVoice: sndNone); - Slot: 6; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: false; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: -5; //29; - ejectY: -7), - -// Piano - (NameId: sidPiano; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut or - ammoprop_DontHold or - ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amPiano; - AttackVoice: sndIncoming); - Slot: 5; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 7; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// GasBomb - (NameId: sidGasBomb; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; - Count: AMMO_INFINITE; - NumPerTurn: 0; - Timer: 3000; - Pos: 0; - AmmoType: amGasBomb; - AttackVoice: sndCover); - Slot: 1; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// SineGun - (NameId: sidSineGun; - NameTex: nil; - Probability: 20; - NumberInCase: 2; - Ammo: (Propz: ammoprop_AttackInMove; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amSineGun; - AttackVoice: sndNone); - Slot: 2; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Flamethrower - (NameId: sidFlamethrower; - NameTex: nil; - Probability: 20; - NumberInCase: 1; - Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; - Count: 1; - NumPerTurn: 0; - Timer: 5001; - Pos: 0; - AmmoType: amFlamethrower; - AttackVoice: sndNone); - Slot: 2; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; //20; - ejectY: -3), - -// Sticky Mine - (NameId: sidSMine; - NameTex: nil; - Probability: 100; - NumberInCase: 1; - Ammo: (Propz: ammoprop_Power; //FIXME: enable multishoot at altuse, until then removed ammoprop_AltUse - Count: 1; - NumPerTurn: 1; - Timer: 0; - Pos: 0; - AmmoType: amSMine; - AttackVoice: sndLaugh); - Slot: 4; - TimeAfterTurn: 5000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Hammer - (NameId: sidHammer; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amHammer; - AttackVoice: sndNone); - Slot: 3; - TimeAfterTurn: 1000; - MinAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// Ressurrector - (NameId: sidResurrector; - NameTex: nil; - Probability: 0; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_Utility or - ammoprop_NoRoundEnd; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amResurrector; - AttackVoice: sndNone); - Slot: 8; - TimeAfterTurn: 3000; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 0; - PosCount: 1; - PosSprite: sprWater; - ejectX: 0; - ejectY: 0), - -// DrillStrike - (NameId: sidDrillStrike; - NameTex: nil; - Probability: 200; - NumberInCase: 1; - Ammo: (Propz: ammoprop_NoCrosshair or - ammoprop_NeedTarget or - ammoprop_AttackingPut or - ammoprop_DontHold or - ammoprop_NotBorder; - Count: 1; - NumPerTurn: 0; - Timer: 0; - Pos: 0; - AmmoType: amDrillStrike; - AttackVoice: sndIncoming); - Slot: 5; - TimeAfterTurn: 0; - minAngle: 0; - maxAngle: 0; - isDamaging: true; - SkipTurns: 6; - PosCount: 2; - PosSprite: sprAmAirplane; - ejectX: 0; - ejectY: 0) - ); - - - - conversionFormat: TSDL_PixelFormat = ( - palette: nil; - BitsPerPixel : 32; - BytesPerPixel: 4; - Rloss : 0; - Gloss : 0; - Bloss : 0; - Aloss : 0; -{$IFDEF ENDIAN_LITTLE} - Rshift: 0; - Gshift: 8; - Bshift: 16; - Ashift: 24; -{$ELSE} - Rshift: 24; - Gshift: 16; - Bshift: 8; - Ashift: 0; -{$ENDIF} - RMask : RMask; - GMask : GMask; - BMask : BMask; - AMask : AMask; - colorkey: 0; - alpha : 255 - ); implementation
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uDebug.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,35 @@ +{$INCLUDE "options.inc"} + +unit uDebug; + +interface + +procedure OutError(Msg: shortstring; isFatalError: boolean); +procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); inline; +procedure SDLTry(Assert: boolean; isFatal: boolean); + +implementation +uses SDLh, uConsole, uCommands; + +procedure OutError(Msg: shortstring; isFatalError: boolean); +begin +WriteLnToConsole(Msg); +if isFatalError then + begin + ParseCommand('fatal ' + GetLastConsoleLine, true); + SDL_Quit; + halt(1) + end +end; + +procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); +begin +if not Assert then OutError(Msg, isFatal) +end; + +procedure SDLTry(Assert: boolean; isFatal: boolean); +begin +if not Assert then OutError(SDL_GetError, isFatal) +end; + +end. \ No newline at end of file
--- a/hedgewars/uFloat.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uFloat.pas Tue Jan 04 12:53:46 2011 +0100 @@ -62,6 +62,7 @@ function AngleSin(const Angle: Longword): hwFloat; function AngleCos(const Angle: Longword): hwFloat; function SignAs(const num, signum: hwFloat): hwFloat; inline; +function hwSign(r: hwFloat): LongInt; inline; {$IFDEF FPC} {$J-} @@ -147,7 +148,7 @@ {$ENDIF} implementation -//uses uMisc; +uses uSinTable; {$IFDEF FPC} @@ -342,7 +343,12 @@ SignAs.isNegative:= signum.isNegative end; -{$INCLUDE "SinTable.inc"} +function hwSign(r: hwFloat): LongInt; +begin +// yes, we have negative zero for a reason +if r.isNegative then hwSign:= -1 else hwSign:= 1 +end; + function AngleSin(const Angle: Longword): hwFloat; begin
--- a/hedgewars/uGame.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uGame.pas Tue Jan 04 12:53:46 2011 +0100 @@ -26,7 +26,7 @@ //////////////////// implementation //////////////////// -uses uMisc, uConsts, uKeys, uTeams, uIO, uAI, uGears, uScript, uSound, uMobile, uVisualGears; +uses uKeys, uTeams, uIO, uAI, uGears, uSound, uMobile, uVisualGears, uTypes, uVariables; procedure DoGameTick(Lag: LongInt); var i: LongInt; @@ -45,7 +45,6 @@ i:= 1; while (GameState <> gsExit) and (i <= Lag) do begin - ScriptCall('onGameTick'); if not CurrentTeam^.ExtDriven then begin if CurrentHedgehog^.BotLevel <> 0 then ProcessBot;
--- a/hedgewars/uGears.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uGears.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,63 +20,7 @@ unit uGears; interface -uses SDLh, uConsts, uFloat, Math; - - -type - PGear = ^TGear; - TGearStepProcedure = procedure (Gear: PGear); - TGear = record - NextGear, PrevGear: PGear; - Active: Boolean; - AdvBounce: Longword; - Invulnerable: Boolean; - RenderTimer: Boolean; - AmmoType : TAmmoType; - State : Longword; - X : hwFloat; - Y : hwFloat; - dX: hwFloat; - dY: hwFloat; - Kind: TGearType; - Pos: Longword; - doStep: TGearStepProcedure; - Radius: LongInt; - Angle, Power : Longword; - DirAngle: real; - Timer : LongWord; - Elasticity: hwFloat; - Friction : hwFloat; - Message, MsgParam : Longword; - Hedgehog: pointer; - Health, Damage, Karma: LongInt; - CollisionIndex: LongInt; - Tag: LongInt; - Tex: PTexture; - Z: Longword; - IntersectGear: PGear; - FlightTime: Longword; - uid: Longword; - ImpactSound: TSound; // first sound, others have to be after it in the sounds def. - nImpactSounds: Word; // count of ImpactSounds - SoundChannel: LongInt; - PortalCounter: LongWord // Hopefully temporary, but avoids infinite portal loops in a guaranteed fashion. - end; - TPGearArray = Array of PGear; - -var AllInactive: boolean; - PrvInactive: boolean; - CurAmmoGear: PGear; - GearsList: PGear; - KilledHHs: Longword; - SuddenDeathDmg: Boolean; - SpeechType: Longword; - SpeechText: shortstring; - TrainingTargetGear: PGear; - skipFlag: boolean; - PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress - StepSoundTimer: LongInt; - StepSoundChannel: LongInt; +uses SDLh, uConsts, uFloat, uTypes; procedure initModule; procedure freeModule; @@ -96,27 +40,16 @@ procedure InsertGearToList(Gear: PGear); procedure RemoveGearFromList(Gear: PGear); function ModifyDamage(dmg: Longword; Gear: PGear): Longword; -procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); -function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; -function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; +procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt; skipProximity: boolean = false); +procedure DeleteGear(Gear: PGear); + implementation -uses uWorld, uMisc, uStore, uConsole, uSound, uTeams, uRandom, uCollisions, uLand, uIO, uLandGraphics, - uAIMisc, uLocale, uAI, uAmmos, uStats, uVisualGears, uScript, GLunit, uMobile; +uses uStore, uSound, uTeams, uRandom, uCollisions, uIO, uLandGraphics, + uAIMisc, uLocale, uAI, uAmmos, uStats, uVisualGears, uScript, GLunit, uMobile, uVariables, + uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions, uDebug, uLandTexture; -const MAXROPEPOINTS = 384; -var RopePoints: record - Count: Longword; - HookAngle: GLfloat; - ar: array[0..MAXROPEPOINTS] of record - X, Y: hwFloat; - dLen: hwFloat; - b: boolean; - end; - rounded: array[0..MAXROPEPOINTS + 2] of TVertex2f; - end; -procedure DeleteGear(Gear: PGear); forward; procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); forward; procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); forward; procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward; @@ -133,22 +66,6 @@ procedure HHSetWeapon(Gear: PGear); forward; procedure doStepCase(Gear: PGear); forward; -function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; -begin - if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then - GetLaunchX:= sign(dir) * (8 + hwRound(AngleSin(angle) * Ammoz[at].ejectX) + hwRound(AngleCos(angle) * Ammoz[at].ejectY)) - else - GetLaunchX:= 0 -end; - -function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; -begin - if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then - GetLaunchY:= hwRound(AngleSin(angle) * Ammoz[at].ejectY) - hwRound(AngleCos(angle) * Ammoz[at].ejectX) - 2 - else - GetLaunchY:= 0 -end; - {$INCLUDE "GSHandlers.inc"} {$INCLUDE "HHHandlers.inc"} @@ -210,7 +127,9 @@ @doStepHammer, @doStepHammerHit, @doStepResurrector, - @doStepNapalmBomb + @doStepNapalmBomb, + @doStepSnowball, + @doStepSnowflake ); procedure InsertGearToList(Gear: PGear); @@ -253,7 +172,7 @@ begin tag:= AddVisualGear(hwRound(HHGear^.X), hwRound(HHGear^.Y), vgtHealthTag, dmg); if (tag <> nil) then - tag^.Hedgehog:= PHedgehog(HHGear^.Hedgehog); // the tag needs the tag to determine the text color + tag^.Hedgehog:= HHGear^.Hedgehog; // the tag needs the tag to determine the text color AllInactive:= false; HHGear^.Active:= true; end; @@ -302,6 +221,7 @@ gear^.Radius:= 5; gear^.Elasticity:= _0_8; gear^.Friction:= _0_8; + gear^.Density:= _1_5; gear^.RenderTimer:= true; if gear^.Timer = 0 then gear^.Timer:= 3000 end; @@ -312,22 +232,49 @@ gear^.Radius:= 6; gear^.Elasticity:= _0_8; gear^.Friction:= _0_995; + gear^.Density:= _2; gear^.RenderTimer:= true; if gear^.Timer = 0 then gear^.Timer:= 3000 end; + gtMelonPiece: begin + gear^.Density:= _2; + end; gtHedgehog: begin gear^.AdvBounce:= 1; gear^.Radius:= cHHRadius; gear^.Elasticity:= _0_35; gear^.Friction:= _0_999; gear^.Angle:= cMaxAngle div 2; + gear^.Density:= _3; gear^.Z:= cHHZ; if (GameFlags and gfAISurvival) <> 0 then - if PHedgehog(gear^.Hedgehog)^.BotLevel > 0 then - PHedgehog(gear^.Hedgehog)^.Effects[heResurrectable] := true; + if gear^.Hedgehog^.BotLevel > 0 then + gear^.Hedgehog^.Effects[heResurrectable] := true; end; gtShell: begin gear^.Radius:= 4; + gear^.Density:= _1; + end; + gtSnowball: begin + gear^.Radius:= 4; + gear^.Elasticity:= _1; + gear^.Friction:= _1; + gear^.Density:= _0_5; + end; + + gtFlake: begin + with Gear^ do + begin + DirAngle:= random * 360; + dx.isNegative:= GetRandom(2) = 0; + dx.QWordValue:= GetRandom(100000000); + dy.isNegative:= false; + dy.QWordValue:= GetRandom(70000000); + if GetRandom(2) = 0 then dx := -dx; + Health:= random(vobFrameTicks); + Timer:= random(vobFramesCount); + Angle:= (random(2) * 2 - 1) * (1 + random(10000)) * vobVelocity + end end; gtGrave: begin gear^.ImpactSound:= sndGraveImpact; @@ -356,7 +303,7 @@ end; gtRope: begin gear^.Radius:= 3; - gear^.Friction:= _450; + gear^.Friction:= _450 * _0_01 * cRopePercent; RopePoints.Count:= 0; end; gtMine: begin @@ -365,10 +312,11 @@ gear^.Radius:= 2; gear^.Elasticity:= _0_55; gear^.Friction:= _0_995; + gear^.Density:= _0_9; if cMinesTime < 0 then gear^.Timer:= getrandom(51)*100 else - gear^.Timer:= cMinesTime*1000; + gear^.Timer:= cMinesTime; end; gtSMine: begin gear^.Health:= 10; @@ -376,6 +324,7 @@ gear^.Radius:= 2; gear^.Elasticity:= _0_55; gear^.Friction:= _0_995; + gear^.Density:= _0_9; gear^.Timer:= 500; end; gtCase: begin @@ -390,6 +339,7 @@ gear^.Radius:= 16; gear^.Elasticity:= _0_4; gear^.Friction:= _0_995; + gear^.Density:= _6; gear^.Health:= cBarrelHealth end; gtDEagleShot: begin @@ -404,10 +354,12 @@ gear^.Radius:= 3; gear^.Elasticity:= _0_55; gear^.Friction:= _0_03; + gear^.Density:= _2; gear^.Timer:= 5000; end; gtCluster: begin gear^.Radius:= 2; + gear^.Density:= _1_5; gear^.RenderTimer:= true end; gtShover: gear^.Radius:= 20; @@ -415,6 +367,7 @@ gear^.Tag:= GetRandom(32); gear^.Radius:= 1; gear^.Health:= 5; + gear^.Density:= _1; if (gear^.dY.QWordValue = 0) and (gear^.dX.QWordValue = 0) then begin gear^.dY:= (getrandom - _0_8) * _0_03; @@ -427,6 +380,7 @@ end; gtAirBomb: begin gear^.Radius:= 5; + gear^.Density:= _2; end; gtBlowTorch: begin gear^.Radius:= cHHRadius + cBlowTorchC; @@ -445,7 +399,8 @@ gtMortar: begin gear^.Radius:= 4; gear^.Elasticity:= _0_2; - gear^.Friction:= _0_08 + gear^.Friction:= _0_08; + gear^.Density:= _1; end; gtWhip: gear^.Radius:= 20; gtHammer: gear^.Radius:= 20; @@ -468,12 +423,14 @@ gear^.Radius:= 4; gear^.Elasticity:= _0_5; gear^.Friction:= _0_96; + gear^.Density:= _1_5; gear^.RenderTimer:= true; gear^.Timer:= 5000 end; gtDrill: begin gear^.Timer:= 5000; - gear^.Radius:= 4 + gear^.Radius:= 4; + gear^.Density:= _1; end; gtBall: begin gear^.ImpactSound:= sndGrenadeImpact; @@ -484,6 +441,7 @@ gear^.Timer:= 5000; gear^.Elasticity:= _0_7; gear^.Friction:= _0_995; + gear^.Density:= _1_5; end; gtBallgun: begin gear^.Timer:= 5001; @@ -499,6 +457,7 @@ end; gtMolotov: begin gear^.Radius:= 6; + gear^.Density:= _2; end; gtBirdy: begin gear^.Radius:= 16; // todo: check @@ -510,6 +469,7 @@ gear^.Radius:= 4; gear^.Elasticity:= _0_6; gear^.Friction:= _0_96; + gear^.Density:= _1; if gear^.Timer = 0 then gear^.Timer:= 3000 end; gtPortal: begin @@ -517,13 +477,15 @@ gear^.nImpactSounds:= 1; gear^.AdvBounce:= 0; gear^.Radius:= 16; - gear^.Tag:= 0; + // set color + gear^.Tag:= 2 * gear^.Timer; gear^.Timer:= 15000; gear^.RenderTimer:= false; gear^.Health:= 100; end; gtPiano: begin - gear^.Radius:= 32 + gear^.Radius:= 32; + gear^.Density:= _50; end; gtSineGunShot: begin gear^.Radius:= 5; @@ -549,6 +511,7 @@ gtNapalmBomb: begin gear^.Timer:= 1000; gear^.Radius:= 5; + gear^.Density:= _1_5; end; end; @@ -594,17 +557,17 @@ begin t:= max(Gear^.Damage, Gear^.Health); Gear^.Damage:= t; - if (cWaterOpacity < $FF) and (hwRound(Gear^.Y) < cWaterLine + 256) then + if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cWaterOpacity < $FF))) and (hwRound(Gear^.Y) < cWaterLine + 256) then spawnHealthTagForHH(Gear, t); uStats.HedgehogDamaged(Gear) end; - team:= PHedgehog(Gear^.Hedgehog)^.Team; + team:= Gear^.Hedgehog^.Team; if CurrentHedgehog^.Gear = Gear then FreeActionsList; // to avoid ThinkThread on drawned gear - PHedgehog(Gear^.Hedgehog)^.Gear:= nil; - if PHedgehog(Gear^.Hedgehog)^.King then + Gear^.Hedgehog^.Gear:= nil; + if Gear^.Hedgehog^.King then begin // are there any other kings left? Just doing nil check. Presumably a mortally wounded king will get reaped soon enough k:= false; @@ -618,7 +581,14 @@ end end; inc(KilledHHs); - RecountTeamHealth(team) + RecountTeamHealth(team); + if (CurrentHedgehog <> nil) and CurrentHedgehog^.Effects[heResurrectable] and not Gear^.Hedgehog^.Effects[heResurrectable] then + with CurrentHedgehog^ do + begin + inc(Team^.stats.AIKills); + if Team^.AIKillsTex <> nil then FreeTexture(Team^.AIKillsTex); + Team^.AIKillsTex := RenderStringTex(inttostr(Team^.stats.AIKills), Team^.Clan^.Color, fnt16); + end end; {$IFDEF DEBUGFILE} with Gear^ do AddFileLog('Delete: #' + inttostr(uid) + ' (' + inttostr(hwRound(x)) + ',' + inttostr(hwRound(y)) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + EnumToStr(Kind)); @@ -626,6 +596,7 @@ if CurAmmoGear = Gear then CurAmmoGear:= nil; if FollowGear = Gear then FollowGear:= nil; +if lastGearByUID = Gear then lastGearByUID := nil; RemoveGearFromList(Gear); Dispose(Gear) end; @@ -655,17 +626,17 @@ else dec(Gear^.Health, dmg); - if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and + if (Gear^.Hedgehog^.Team = CurrentTeam) and (Gear^.Damage <> Gear^.Karma) and - not PHedgehog(Gear^.Hedgehog)^.King and - not PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] and + not Gear^.Hedgehog^.King and + not Gear^.Hedgehog^.Effects[hePoisoned] and not SuddenDeathDmg then Gear^.State:= Gear^.State or gstLoser; spawnHealthTagForHH(Gear, dmg); - RenderHealth(PHedgehog(Gear^.Hedgehog)^); - RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team); + RenderHealth(Gear^.Hedgehog^); + RecountTeamHealth(Gear^.Hedgehog^.Team); end; if (not isInMultiShoot) then Gear^.Karma:= 0; @@ -689,20 +660,20 @@ if Gear^.Kind = gtHedgehog then begin tmp:= 0; - if PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] then + if Gear^.Hedgehog^.Effects[hePoisoned] then begin inc(tmp, ModifyDamage(5, Gear)); - if (GameFlags and gfResetHealth) <> 0 then dec(PHedgehog(Gear^.Hedgehog)^.InitialHealth) // does not need a minimum check since <= 1 basically disables it + if (GameFlags and gfResetHealth) <> 0 then dec(Gear^.Hedgehog^.InitialHealth) // does not need a minimum check since <= 1 basically disables it end; if (TotalRounds > cSuddenDTurns - 1) then begin inc(tmp, cHealthDecrease); - if (GameFlags and gfResetHealth) <> 0 then dec(PHedgehog(Gear^.Hedgehog)^.InitialHealth, cHealthDecrease) + if (GameFlags and gfResetHealth) <> 0 then dec(Gear^.Hedgehog^.InitialHealth, cHealthDecrease) end; - if PHedgehog(Gear^.Hedgehog)^.King then + if Gear^.Hedgehog^.King then begin flag:= false; - team:= PHedgehog(Gear^.Hedgehog)^.Team; + team:= Gear^.Hedgehog^.Team; for i:= 0 to Pred(team^.HedgehogsNumber) do if (team^.Hedgehogs[i].Gear <> nil) and (not team^.Hedgehogs[i].King) and @@ -711,7 +682,7 @@ if not flag then begin inc(tmp, 5); - if (GameFlags and gfResetHealth) <> 0 then dec(PHedgehog(Gear^.Hedgehog)^.InitialHealth, 5) + if (GameFlags and gfResetHealth) <> 0 then dec(Gear^.Hedgehog^.InitialHealth, 5) end end; if tmp > 0 then @@ -764,7 +735,7 @@ end; Gear^.doStep(Gear); // might be useful later - //ScriptCall('OnGearStep', Gear^.uid); + //ScriptCall('onGearStep', Gear^.uid); end end; @@ -822,11 +793,19 @@ stHealth: begin if (cWaterRise <> 0) or (cHealthDecrease <> 0) then begin - if (TotalRounds = cSuddenDTurns) and not SuddenDeathDmg and not isInMultiShoot then + if (TotalRounds = cSuddenDTurns) and not SuddenDeath and not isInMultiShoot then begin - SuddenDeathDmg:= true; + SuddenDeath:= true; + if cHealthDecrease <> 0 then + begin + SuddenDeathDmg:= true; + ChangeToSDClouds; + ChangeToSDFlakes; + end; AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState); - playSound(sndSuddenDeath) + playSound(sndSuddenDeath); + MusicFN:= SDMusic; + ChangeMusic end else if (TotalRounds < cSuddenDTurns) and not isInMultiShoot then begin @@ -939,6 +918,7 @@ inc(hiTicks) // we do not recieve a message for this end; +ScriptCall('onGameTick'); inc(GameTicks) end; @@ -951,7 +931,10 @@ SpeechText:= ''; // in case it has not been consumed if (GameFlags and gfLowGravity) = 0 then + begin cGravity:= cMaxWindSpeed * 2; + cGravityf:= 0.00025 * 2 + end; if (GameFlags and gfVampiric) = 0 then cVampiric:= false; @@ -969,11 +952,13 @@ for i:= 0 to cMaxHHIndex do with Hedgehogs[i] do begin +(* if (SpeechGear <> nil) then begin DeleteVisualGear(SpeechGear); // remove to restore persisting beyond end of turn. Tiy says was too much of a gameplay issue SpeechGear:= nil end; +*) if (Gear <> nil) then begin @@ -985,15 +970,15 @@ while t <> nil do begin t^.PortalCounter:= 0; - if ((GameFlags and gfResetHealth) <> 0) and (t^.Kind = gtHedgehog) and (t^.Health < PHedgehog(t^.Hedgehog)^.InitialHealth) then + if ((GameFlags and gfResetHealth) <> 0) and (t^.Kind = gtHedgehog) and (t^.Health < t^.Hedgehog^.InitialHealth) then begin - t^.Health:= PHedgehog(t^.Hedgehog)^.InitialHealth; - RenderHealth(PHedgehog(t^.Hedgehog)^); + t^.Health:= t^.Hedgehog^.InitialHealth; + RenderHealth(t^.Hedgehog^); end; t:= t^.NextGear end; - if (GameFlags and gfResetWeps) <> 0 then + if ((GameFlags and gfResetWeps) <> 0) and not PlacingHogs then ResetWeapons; if (GameFlags and gfResetHealth) <> 0 then @@ -1009,7 +994,7 @@ if (Gear^.Kind = gtHedgehog) and (Damage>=1) then begin HHHurt(Gear^.Hedgehog, Source); - AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color); + AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, Gear^.Hedgehog^.Team^.Clan^.Color); tmpDmg:= min(Damage, max(0,Gear^.Health-Gear^.Damage)); if (Gear <> CurrentHedgehog^.Gear) and (CurrentHedgehog^.Gear <> nil) and (tmpDmg >= 1) then begin @@ -1045,7 +1030,7 @@ end; end; inc(Gear^.Damage, Damage); - ScriptCall('OnGearDamage', Gear^.UID, Damage); + ScriptCall('onGearDamage', Gear^.UID, Damage); end; procedure SetAllToActive; @@ -1072,151 +1057,21 @@ end end; -procedure DrawAltWeapon(Gear: PGear; sx, sy: LongInt); + +procedure DrawGears; +var Gear: PGear; + x, y: LongInt; begin -with PHedgehog(Gear^.Hedgehog)^ do +Gear:= GearsList; +while Gear <> nil do begin - if not (((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then - exit; - DrawTexture(sx + 16, sy + 16, ropeIconTex); - DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, sx + 30, sy + 30, ord(CurAmmoType) - 1, 1, 32, 32); + x:= hwRound(Gear^.X) + WorldDx; + y:= hwRound(Gear^.Y) + WorldDy; + RenderGear(Gear, x, y); + Gear:= Gear^.NextGear end; end; -procedure DrawRopeLinesRQ(Gear: PGear); -begin -with RopePoints do - begin - rounded[Count].X:= hwRound(Gear^.X); - rounded[Count].Y:= hwRound(Gear^.Y); - rounded[Count + 1].X:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X); - rounded[Count + 1].Y:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y); - end; - -if (RopePoints.Count > 0) or (Gear^.Elasticity.QWordValue > 0) then - begin - glDisable(GL_TEXTURE_2D); - //glEnable(GL_LINE_SMOOTH); - - glPushMatrix; - - glTranslatef(WorldDx, WorldDy, 0); - - glLineWidth(4.0); - - Tint($C0, $C0, $C0, $FF); - - glVertexPointer(2, GL_FLOAT, 0, @RopePoints.rounded[0]); - glDrawArrays(GL_LINE_STRIP, 0, RopePoints.Count + 2); - Tint($FF, $FF, $FF, $FF); - - glPopMatrix; - - glEnable(GL_TEXTURE_2D); - //glDisable(GL_LINE_SMOOTH) - end -end; - -procedure DrawRope(Gear: PGear); -var roplen: LongInt; - i: Longword; - - procedure DrawRopeLine(X1, Y1, X2, Y2: LongInt); - var eX, eY, dX, dY: LongInt; - i, sX, sY, x, y, d: LongInt; - b: boolean; - begin - if (X1 = X2) and (Y1 = Y2) then - begin - //OutError('WARNING: zero length rope line!', false); - exit - end; - eX:= 0; - eY:= 0; - dX:= X2 - X1; - dY:= Y2 - Y1; - - if (dX > 0) then sX:= 1 - else - if (dX < 0) then - begin - sX:= -1; - dX:= -dX - end else sX:= dX; - - if (dY > 0) then sY:= 1 - else - if (dY < 0) then - begin - sY:= -1; - dY:= -dY - end else sY:= dY; - - if (dX > dY) then d:= dX - else d:= dY; - - x:= X1; - y:= Y1; - - for i:= 0 to d do - begin - inc(eX, dX); - inc(eY, dY); - b:= false; - if (eX > d) then - begin - dec(eX, d); - inc(x, sX); - b:= true - end; - if (eY > d) then - begin - dec(eY, d); - inc(y, sY); - b:= true - end; - if b then - begin - inc(roplen); - if (roplen mod 4) = 0 then DrawSprite(sprRopeNode, x - 2, y - 2, 0) - end - end - end; -begin - if (cReducedQuality and rqSimpleRope) <> 0 then - DrawRopeLinesRQ(Gear) - else - begin - roplen:= 0; - if RopePoints.Count > 0 then - begin - i:= 0; - while i < Pred(RopePoints.Count) do - begin - DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, - hwRound(RopePoints.ar[Succ(i)].X) + WorldDx, hwRound(RopePoints.ar[Succ(i)].Y) + WorldDy); - inc(i) - end; - DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, - hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy); - DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, - hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy); - end else - if Gear^.Elasticity.QWordValue > 0 then - DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, - hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy); - end; - - -if RopePoints.Count > 0 then - DrawRotated(sprRopeHook, hwRound(RopePoints.ar[0].X) + WorldDx, hwRound(RopePoints.ar[0].Y) + WorldDy, 1, RopePoints.HookAngle) - else - if Gear^.Elasticity.QWordValue > 0 then - DrawRotated(sprRopeHook, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); -end; - -{$INCLUDE "GearDrawing.inc"} - procedure FreeGearsList; var t, tt: PGear; begin @@ -1236,12 +1091,6 @@ begin AddGear(0, 0, gtATStartGame, 0, _0, _0, 2000); -if (TrainingFlags and tfSpawnTargets) <> 0 then - begin - TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0); - FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); - end; - for i:= 0 to Pred(cLandMines) do begin Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0); @@ -1254,7 +1103,10 @@ end; if (GameFlags and gfLowGravity) <> 0 then + begin cGravity:= cMaxWindSpeed; + cGravityf:= 0.00025 + end; if (GameFlags and gfVampiric) <> 0 then cVampiric:= true; @@ -1271,7 +1123,14 @@ cLaserSighting:= true; if (GameFlags and gfArtillery) <> 0 then - cArtillery:= true + cArtillery:= true; + +if not hasBorder and ((Theme = 'Snow') or (Theme = 'Christmas')) and ((cReducedQuality and rqLowRes) = 0) then + begin + for i:= 0 to Pred(vobCount*2) do + AddGear(GetRandom(LAND_WIDTH+1024)-512, LAND_HEIGHT - GetRandom(LAND_HEIGHT div 2), gtFlake, 0, _0, _0, 0); + disableLandBack:= true + end end; procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); @@ -1349,7 +1208,7 @@ if Gear^.Kind <> gtFlame then FollowGear:= Gear end; if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) then - PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] := true; + Gear^.Hedgehog^.Effects[hePoisoned] := true; end; end; @@ -1448,13 +1307,10 @@ begin if (Ammo^.Kind = gtDEagleShot) or (Ammo^.Kind = gtSniperRifleShot) then - begin + begin VGear := AddVisualGear(hwround(Ammo^.X), hwround(Ammo^.Y), vgtBulletHit); - if VGear <> nil then - begin - VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY); + if VGear <> nil then VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY); end; - end; if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then Gear^.FlightTime:= 1; @@ -1473,7 +1329,7 @@ if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch DeleteCI(Gear); - if (Gear^.Kind = gtHedgehog) and PHedgehog(Gear^.Hedgehog)^.King then + if (Gear^.Kind = gtHedgehog) and Gear^.Hedgehog^.King then begin Gear^.dX:= Ammo^.dX * Power * _0_005; Gear^.dY:= Ammo^.dY * Power * _0_005 @@ -1663,17 +1519,20 @@ gear^.State := gstWait; uStats.HedgehogDamaged(gear); gear^.Damage := 0; - gear^.Health := 100; - with CurrentHedgehog^ do begin - inc(Team^.stats.AIKills); - if Team^.AIKillsTex <> nil then FreeTexture(Team^.AIKillsTex); - Team^.AIKillsTex := RenderStringTex(inttostr(Team^.stats.AIKills), Team^.Clan^.Color, fnt16); - end; - tempTeam := PHedgehog(gear^.Hedgehog)^.Team; + gear^.Health := gear^.Hedgehog^.InitialHealth; + gear^.Hedgehog^.Effects[hePoisoned] := false; + if not CurrentHedgehog^.Effects[heResurrectable] then + with CurrentHedgehog^ do + begin + inc(Team^.stats.AIKills); + if Team^.AIKillsTex <> nil then FreeTexture(Team^.AIKillsTex); + Team^.AIKillsTex := RenderStringTex(inttostr(Team^.stats.AIKills), Team^.Clan^.Color, fnt16); + end; + tempTeam := gear^.Hedgehog^.Team; DeleteCI(gear); - FindPlace(gear, false, 0, LAND_WIDTH); + FindPlace(gear, false, 0, LAND_WIDTH, true); if gear <> nil then begin - RenderHealth(PHedgehog(gear^.Hedgehog)^); + RenderHealth(gear^.Hedgehog^); ScriptCall('onGearResurrect', gear^.uid); end; RecountTeamHealth(tempTeam); @@ -1801,7 +1660,7 @@ end end; -procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); +procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt; skipProximity: boolean = false); function CountNonZeroz(x, y, r, c: LongInt): LongInt; var i: LongInt; @@ -1823,57 +1682,66 @@ ar2: array[0..1023] of TPoint; cnt, cnt2: Longword; delta: LongInt; + reallySkip, tryAgain: boolean; begin -delta:= 250; -cnt2:= 0; -repeat - x:= Left + LongInt(GetRandom(Delta)); +reallySkip:= false; // try not skipping proximity at first +tryAgain:= true; +while tryAgain do + begin + delta:= 250; + cnt2:= 0; repeat - inc(x, Delta); - cnt:= 0; - y:= min(1024, topY) - 2 * Gear^.Radius; - while y < cWaterLine do - begin - repeat - inc(y, 2); - until (y >= cWaterLine) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) = 0); + x:= Left + LongInt(GetRandom(Delta)); + repeat + inc(x, Delta); + cnt:= 0; + y:= min(1024, topY) - 2 * Gear^.Radius; + while y < cWaterLine do + begin + repeat + inc(y, 2); + until (y >= cWaterLine) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) = 0); - sy:= y; + sy:= y; - repeat - inc(y); - until (y >= cWaterLine) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) <> 0); + repeat + inc(y); + until (y >= cWaterLine) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) <> 0); - if (y - sy > Gear^.Radius * 2) and - (((Gear^.Kind = gtExplosives) - and (y < cWaterLine) - and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 60, 60) = nil) - and (CountNonZeroz(x, y+1, Gear^.Radius - 1, Gear^.Radius+1) > Gear^.Radius)) - or - ((Gear^.Kind <> gtExplosives) - and (y < cWaterLine) - and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 110, 110) = nil))) then - begin - ar[cnt].X:= x; - if withFall then ar[cnt].Y:= sy + Gear^.Radius - else ar[cnt].Y:= y - Gear^.Radius; - inc(cnt) + if (y - sy > Gear^.Radius * 2) and + (((Gear^.Kind = gtExplosives) + and (y < cWaterLine) + and (reallySkip or (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 60, 60) = nil)) + and (CountNonZeroz(x, y+1, Gear^.Radius - 1, Gear^.Radius+1) > Gear^.Radius)) + or + ((Gear^.Kind <> gtExplosives) + and (y < cWaterLine) + and (reallySkip or (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 110, 110) = nil)))) then + begin + ar[cnt].X:= x; + if withFall then ar[cnt].Y:= sy + Gear^.Radius + else ar[cnt].Y:= y - Gear^.Radius; + inc(cnt) + end; + + inc(y, 45) end; - inc(y, 45) - end; + if cnt > 0 then + with ar[GetRandom(cnt)] do + begin + ar2[cnt2].x:= x; + ar2[cnt2].y:= y; + inc(cnt2) + end + until (x + Delta > Right); - if cnt > 0 then - with ar[GetRandom(cnt)] do - begin - ar2[cnt2].x:= x; - ar2[cnt2].y:= y; - inc(cnt2) - end - until (x + Delta > Right); - - dec(Delta, 60) -until (cnt2 > 0) or (Delta < 70); + dec(Delta, 60) + until (cnt2 > 0) or (Delta < 70); + if (cnt2 = 0) and skipProximity and not reallySkip then tryAgain:= true + else tryAgain:= false; + reallySkip:= true; + end; if cnt2 > 0 then with ar2[GetRandom(cnt2)] do @@ -1887,7 +1755,7 @@ else begin OutError('Can''t find place for Gear', false); - if Gear^.Kind = gtHedgehog then PHedgehog(Gear^.Hedgehog)^.Effects[heResurrectable] := false; + if Gear^.Kind = gtHedgehog then Gear^.Hedgehog^.Effects[heResurrectable] := false; DeleteGear(Gear); Gear:= nil end @@ -1902,7 +1770,7 @@ *) i:= _1; if (CurrentHedgehog <> nil) and CurrentHedgehog^.King then i:= _1_5; -if (Gear^.Hedgehog <> nil) and (PHedgehog(Gear^.Hedgehog)^.King) then +if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.King) then ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent * _0_5) else ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent) @@ -1912,26 +1780,114 @@ var gear: PGear; begin GearByUID:= nil; +if uid = 0 then exit; +if (lastGearByUID <> nil) and (lastGearByUID^.uid = uid) then + begin + GearByUID:= lastGearByUID; + exit + end; gear:= GearsList; while gear <> nil do begin if gear^.uid = uid then begin - GearByUID:= gear; - exit + lastGearByUID:= gear; + GearByUID:= gear; + exit end; gear:= gear^.NextGear end end; + +procedure chSkip(var s: shortstring); +begin +s:= s; // avoid compiler hint +if not CurrentTeam^.ExtDriven then SendIPC(','); +uStats.Skipped; +skipFlag:= true +end; + +procedure chHogSay(var s: shortstring); +var Gear: PVisualGear; + text: shortstring; + hh: PHedgehog; + i, x, t, h: byte; + c, j: LongInt; +begin + hh:= nil; + i:= 0; + t:= 0; + x:= byte(s[1]); // speech type + if x < 4 then + begin + t:= byte(s[2]); // team + if Length(s) > 2 then h:= byte(s[3]) // target hog + end; + // allow targetting a hog by specifying a number as the first portion of the text + if (x < 4) and (h > byte('0')) and (h < byte('9')) then i:= h - 48; + if i <> 0 then text:= copy(s, 4, Length(s) - 1) + else if x < 4 then text:= copy(s, 3, Length(s) - 1) + else text:= copy(s, 2, Length(s) - 1); + + (* + if CheckNoTeamOrHH then + begin + ParseCommand('say ' + text, true); + exit + end; + *) + + if (x < 4) and (TeamsArray[t] <> nil) then + begin + // if team matches current hedgehog team, default to current hedgehog + if (i = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Team = TeamsArray[t]) then hh:= CurrentHedgehog + else + begin + // otherwise use the first living hog or the hog amongs the remaining ones indicated by i + j:= 0; + c:= 0; + while (j <= cMaxHHIndex) and (hh = nil) do + begin + if (TeamsArray[t]^.Hedgehogs[j].Gear <> nil) then + begin + inc(c); + if (i=0) or (i=c) then + hh:= @TeamsArray[t]^.Hedgehogs[j] + end; + inc(j) + end + end; + if hh <> nil then + begin + Gear:= AddVisualGear(0, 0, vgtSpeechBubble); + if Gear <> nil then + begin + Gear^.Hedgehog:= hh; + Gear^.Text:= text; + Gear^.FrameTicks:= x + end + end + //else ParseCommand('say ' + text, true) + end + else if (x >= 4) then + begin + SpeechType:= x-3; + SpeechText:= text + end; +end; + procedure initModule; begin + RegisterVariable('skip', vtCommand, @chSkip, false); + RegisterVariable('hogsay', vtCommand, @chHogSay, true ); + CurAmmoGear:= nil; GearsList:= nil; KilledHHs:= 0; + SuddenDeath:= false; SuddenDeathDmg:= false; SpeechType:= 1; - TrainingTargetGear:= nil; skipFlag:= false; AllInactive:= false;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uGearsRender.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,1032 @@ +{$INCLUDE "options.inc"} +unit uGearsRender; + +interface +uses uTypes, uConsts, GLunit, uFloat; + +procedure RenderGear(Gear: PGear; x, y: LongInt); + +var RopePoints: record + Count: Longword; + HookAngle: GLfloat; + ar: array[0..MAXROPEPOINTS] of record + X, Y: hwFloat; + dLen: hwFloat; + b: boolean; + end; + rounded: array[0..MAXROPEPOINTS + 2] of TVertex2f; + end; + +implementation +uses uRender, uUtils, uVariables, uAmmos, Math; + +procedure DrawRopeLinesRQ(Gear: PGear); +begin +with RopePoints do + begin + rounded[Count].X:= hwRound(Gear^.X); + rounded[Count].Y:= hwRound(Gear^.Y); + rounded[Count + 1].X:= hwRound(Gear^.Hedgehog^.Gear^.X); + rounded[Count + 1].Y:= hwRound(Gear^.Hedgehog^.Gear^.Y); + end; + +if (RopePoints.Count > 0) or (Gear^.Elasticity.QWordValue > 0) then + begin + glDisable(GL_TEXTURE_2D); + //glEnable(GL_LINE_SMOOTH); + + glPushMatrix; + + glTranslatef(WorldDx, WorldDy, 0); + + glLineWidth(4.0); + + Tint($C0, $C0, $C0, $FF); + + glVertexPointer(2, GL_FLOAT, 0, @RopePoints.rounded[0]); + glDrawArrays(GL_LINE_STRIP, 0, RopePoints.Count + 2); + Tint($FF, $FF, $FF, $FF); + + glPopMatrix; + + glEnable(GL_TEXTURE_2D); + //glDisable(GL_LINE_SMOOTH) + end +end; + + +procedure DrawRope(Gear: PGear); +var roplen: LongInt; + i: Longword; + + procedure DrawRopeLine(X1, Y1, X2, Y2: LongInt); + var eX, eY, dX, dY: LongInt; + i, sX, sY, x, y, d: LongInt; + b: boolean; + begin + if (X1 = X2) and (Y1 = Y2) then + begin + //OutError('WARNING: zero length rope line!', false); + exit + end; + eX:= 0; + eY:= 0; + dX:= X2 - X1; + dY:= Y2 - Y1; + + if (dX > 0) then sX:= 1 + else + if (dX < 0) then + begin + sX:= -1; + dX:= -dX + end else sX:= dX; + + if (dY > 0) then sY:= 1 + else + if (dY < 0) then + begin + sY:= -1; + dY:= -dY + end else sY:= dY; + + if (dX > dY) then d:= dX + else d:= dY; + + x:= X1; + y:= Y1; + + for i:= 0 to d do + begin + inc(eX, dX); + inc(eY, dY); + b:= false; + if (eX > d) then + begin + dec(eX, d); + inc(x, sX); + b:= true + end; + if (eY > d) then + begin + dec(eY, d); + inc(y, sY); + b:= true + end; + if b then + begin + inc(roplen); + if (roplen mod 4) = 0 then DrawSprite(sprRopeNode, x - 2, y - 2, 0) + end + end + end; +begin + if (cReducedQuality and rqSimpleRope) <> 0 then + DrawRopeLinesRQ(Gear) + else + begin + roplen:= 0; + if RopePoints.Count > 0 then + begin + i:= 0; + while i < Pred(RopePoints.Count) do + begin + DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, + hwRound(RopePoints.ar[Succ(i)].X) + WorldDx, hwRound(RopePoints.ar[Succ(i)].Y) + WorldDy); + inc(i) + end; + DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, + hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy); + DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, + hwRound(Gear^.Hedgehog^.Gear^.X) + WorldDx, hwRound(Gear^.Hedgehog^.Gear^.Y) + WorldDy); + end else + if Gear^.Elasticity.QWordValue > 0 then + DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, + hwRound(Gear^.Hedgehog^.Gear^.X) + WorldDx, hwRound(Gear^.Hedgehog^.Gear^.Y) + WorldDy); + end; + + +if RopePoints.Count > 0 then + DrawRotated(sprRopeHook, hwRound(RopePoints.ar[0].X) + WorldDx, hwRound(RopePoints.ar[0].Y) + WorldDy, 1, RopePoints.HookAngle) + else + if Gear^.Elasticity.QWordValue > 0 then + DrawRotated(sprRopeHook, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); +end; + + +procedure DrawAltWeapon(Gear: PGear; sx, sy: LongInt); +begin +with Gear^.Hedgehog^ do + begin + if not (((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then + exit; + DrawTexture(sx + 16, sy + 16, ropeIconTex); + DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, sx + 30, sy + 30, ord(CurAmmoType) - 1, 1, 32, 32); + end; +end; + + +procedure DrawHH(Gear: PGear; ox, oy: LongInt); +var i, t: LongInt; + amt: TAmmoType; + sign, hx, hy, cx, cy, tx, ty, sx, sy, m: LongInt; // hedgehog, crosshair, temp, sprite, direction + dx, dy, ax, ay, aAngle, dAngle, hAngle, lx, ly: real; // laser, change + defaultPos, HatVisible: boolean; + HH: PHedgehog; + CurWeapon: PAmmo; +begin + HH:= Gear^.Hedgehog; + if HH^.Unplaced then exit; + m:= 1; + if ((Gear^.State and gstHHHJump) <> 0) and not cArtillery then m:= -1; + sx:= ox + 1; // this offset is very common + sy:= oy - 3; + sign:= hwSign(Gear^.dX); + + if (Gear^.State and gstHHDeath) <> 0 then + begin + DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos); + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); + DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos + 8); + Tint($FF, $FF, $FF, $FF); + exit + end + else if (Gear^.State and gstHHGone) <> 0 then + begin + DrawRotatedF(sprTeleport, sx, sy, Gear^.Pos, sign, 0); + exit + end; + + defaultPos:= true; + HatVisible:= false; + + + if HH^.Effects[hePoisoned] then + begin + Tint($00, $FF, $40, $40); + DrawRotatedTextureF(SpritesData[sprSmokeWhite].texture, 2, 0, 0, sx, sy, 0, 1, 22, 22, (RealTicks shr 36) mod 360); + Tint($FF, $FF, $FF, $FF) + end; + + if ((Gear^.State and gstWinner) <> 0) and + ((CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtPickHammer)) then + begin + DrawHedgehog(sx, sy, + sign, + 2, + 0, + 0); + defaultPos:= false + end; + if (Gear^.State and gstDrowning) <> 0 then + begin + DrawHedgehog(sx, sy, + sign, + 1, + 7, + 0); + defaultPos:= false + end else + if (Gear^.State and gstLoser) <> 0 then + begin + DrawHedgehog(sx, sy, + sign, + 2, + 3, + 0); + defaultPos:= false + end else + + if (Gear^.State and gstHHDriven) <> 0 then + begin + if ((Gear^.State and gstHHThinking) = 0) and + (ShowCrosshair or ((CurAmmoGear <> nil) and (CurAmmoGear^.Kind = gtRope))) and + ((Gear^.State and (gstAttacked or gstAnimation)) = 0) then + begin + (* These calculations are a little complex for a few reasons: + 1: I need to draw the laser from weapon origin to nearest land + 2: I need to start the beam outside the hedgie for attractiveness. + 3: I need to extend the beam beyond land. + This routine perhaps should be pushed into uStore or somesuch instead of continuuing the increase in size of this function. + *) + dx:= sign * m * Sin(Gear^.Angle * pi / cMaxAngle); + dy:= -Cos(Gear^.Angle * pi / cMaxAngle); + if cLaserSighting then + begin + lx:= GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle); + ly:= GetLaunchY(HH^.CurAmmoType, Gear^.Angle); + + // ensure we start outside the hedgehog (he's solid after all) + while abs(lx * lx + ly * ly) < (Gear^.radius * Gear^.radius) do + begin + lx:= lx + dx; + ly:= ly + dy + end; + + // add hog's position + lx:= lx + ox - WorldDx; + ly:= ly + oy - WorldDy; + + // decrease number of iterations required + ax:= dx * 4; + ay:= dy * 4; + + tx:= round(lx); + ty:= round(ly); + hx:= tx; + hy:= ty; + while ((ty and LAND_HEIGHT_MASK) = 0) and + ((tx and LAND_WIDTH_MASK) = 0) and + (Land[ty, tx] = 0) do // TODO: check for constant variable instead + begin + lx:= lx + ax; + ly:= ly + ay; + tx:= round(lx); + ty:= round(ly) + end; + // reached edge of land. assume infinite beam. Extend it way out past camera + if ((ty and LAND_HEIGHT_MASK) <> 0) or ((tx and LAND_WIDTH_MASK) <> 0) then + begin + tx:= round(lx + ax * (LAND_WIDTH div 4)); + ty:= round(ly + ay * (LAND_WIDTH div 4)); + end; + + //if (abs(lx-tx)>8) or (abs(ly-ty)>8) then + begin + DrawLine(hx, hy, tx, ty, 1.0, $FF, $00, $00, $C0); + end; + end; + // draw crosshair + cx:= Round(hwRound(Gear^.X) + dx * 80 + GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle)); + cy:= Round(hwRound(Gear^.Y) + dy * 80 + GetLaunchY(HH^.CurAmmoType, Gear^.Angle)); + DrawRotatedTex(HH^.Team^.CrosshairTex, + 12, 12, cx + WorldDx, cy + WorldDy, 0, + sign * (Gear^.Angle * 180.0) / cMaxAngle); + end; + hx:= ox + 8 * sign; + hy:= oy - 2; + aangle:= Gear^.Angle * 180 / cMaxAngle - 90; + if CurAmmoGear <> nil then + begin + case CurAmmoGear^.Kind of + gtShotgunShot: begin + if (CurAmmoGear^.State and gstAnimation <> 0) then + DrawRotated(sprShotgun, hx, hy, sign, aangle) + else + DrawRotated(sprHandShotgun, hx, hy, sign, aangle); + end; + gtDEagleShot: DrawRotated(sprDEagle, hx, hy, sign, aangle); + gtSniperRifleShot: begin + if (CurAmmoGear^.State and gstAnimation <> 0) then + DrawRotatedF(sprSniperRifle, hx, hy, 1, sign, aangle) + else + DrawRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle) + end; + gtBallgun: DrawRotated(sprHandBallgun, hx, hy, sign, aangle); + gtRCPlane: begin + DrawRotated(sprHandPlane, hx, hy, sign, 0); + defaultPos:= false + end; + gtRope: begin + if Gear^.X < CurAmmoGear^.X then + begin + dAngle:= 0; + hAngle:= 180; + i:= 1 + end else + begin + dAngle:= 180; + hAngle:= 0; + i:= -1 + end; + if ((Gear^.State and gstWinner) = 0) then + begin + DrawHedgehog(ox, oy, + i, + 1, + 0, + DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle); + with HH^ do + if (HatTex <> nil) then + begin + DrawRotatedTextureF(HatTex, 1.0, -1.0, -6.0, ox, oy, 0, i, 32, 32, + i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); + if HatTex^.w > 64 then + begin + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); + DrawRotatedTextureF(HatTex, 1.0, -1.0, -6.0, ox, oy, 32, i, 32, 32, + i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); + Tint($FF, $FF, $FF, $FF) + end + end + end; + DrawAltWeapon(Gear, ox, oy); + defaultPos:= false + end; + gtBlowTorch: begin + DrawRotated(sprBlowTorch, hx, hy, sign, aangle); + DrawHedgehog(sx, sy, + sign, + 3, + HH^.visStepPos div 2, + 0); + with HH^ do + if (HatTex <> nil) then + begin + DrawTextureF(HatTex, + 1, + sx, + sy - 5, + 0, + sign, + 32, + 32); + if HatTex^.w > 64 then + begin + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); + DrawTextureF(HatTex, + 1, + sx, + sy - 5, + 32, + sign, + 32, + 32); + Tint($FF, $FF, $FF, $FF) + end + end; + defaultPos:= false + end; + gtShover: DrawRotated(sprHandBaseball, hx, hy, sign, aangle + 180); + gtFirePunch: begin + DrawHedgehog(sx, sy, + sign, + 1, + 4, + 0); + defaultPos:= false + end; + gtPickHammer: begin + defaultPos:= false; + dec(sy,20); + end; + gtTeleport: defaultPos:= false; + gtWhip: begin + DrawRotatedF(sprWhip, + sx, + sy, + 1, + sign, + 0); + defaultPos:= false + end; + gtHammer: begin + DrawRotatedF(sprHammer, + sx, + sy, + 1, + sign, + 0); + defaultPos:= false + end; + gtResurrector: begin + DrawRotated(sprHandResurrector, sx, sy, 0, 0); + defaultPos:= false + end; + gtKamikaze: begin + if CurAmmoGear^.Pos = 0 then + DrawHedgehog(sx, sy, + sign, + 1, + 6, + 0) + else + DrawRotatedF(sprKamikaze, + ox, oy, + CurAmmoGear^.Pos - 1, + sign, + aangle); + defaultPos:= false + end; + gtSeduction: begin + if CurAmmoGear^.Pos >= 6 then + DrawHedgehog(sx, sy, + sign, + 2, + 2, + 0) + else + begin + DrawRotatedF(sprDress, + ox, oy, + CurAmmoGear^.Pos, + sign, + 0); + DrawSprite(sprCensored, ox - 32, oy - 20, 0) + end; + defaultPos:= false + end; + gtFlamethrower: begin + DrawRotatedF(sprHandFlamethrower, hx, hy, (RealTicks div 125) mod 4, sign, aangle); + if CurAmmoGear^.Tex <> nil then DrawCentered(sx, sy - 40, CurAmmoGear^.Tex) + end; + end; + + case CurAmmoGear^.Kind of + gtShotgunShot, + gtDEagleShot, + gtSniperRifleShot, + gtShover: begin + DrawHedgehog(sx, sy, + sign, + 0, + 4, + 0); + defaultPos:= false; + HatVisible:= true + end + end + end else + + if ((Gear^.State and gstHHJumping) <> 0) then + begin + DrawHedgehog(sx, sy, + sign*m, + 1, + 1, + 0); + HatVisible:= true; + defaultPos:= false + end else + + if (Gear^.Message and (gmLeft or gmRight) <> 0) and (not isCursorVisible) then + begin + DrawHedgehog(sx, sy, + sign, + 0, + HH^.visStepPos div 2, + 0); + defaultPos:= false; + HatVisible:= true + end + else + + if ((Gear^.State and gstAnimation) <> 0) then + begin + if (TWave(Gear^.Tag) < Low(TWave)) or (TWave(Gear^.Tag) > High(TWave)) then + begin + Gear^.State:= Gear^.State and not gstAnimation; + end + else + begin + DrawRotatedF(Wavez[TWave(Gear^.Tag)].Sprite, + sx, + sy, + Gear^.Pos, + sign, + 0.0); + defaultPos:= false + end + end + else + if ((Gear^.State and gstAttacked) = 0) then + begin + if HH^.Timer > 0 then + begin + // There must be a tidier way to do this. Anyone? + if aangle <= 90 then aangle:= aangle+360; + if Gear^.dX > _0 then aangle:= aangle-((aangle-240)*HH^.Timer/10) + else aangle:= aangle+((240-aangle)*HH^.Timer/10); + dec(HH^.Timer) + end; + amt:= CurrentHedgehog^.CurAmmoType; + CurWeapon:= GetAmmoEntry(HH^); + case amt of + amBazooka: DrawRotated(sprHandBazooka, hx, hy, sign, aangle); + amSnowball: DrawRotated(sprHandSnowball, hx, hy, sign, aangle); + amMortar: DrawRotated(sprHandMortar, hx, hy, sign, aangle); + amMolotov: DrawRotated(sprHandMolotov, hx, hy, sign, aangle); + amBallgun: DrawRotated(sprHandBallgun, hx, hy, sign, aangle); + amDrill: DrawRotated(sprHandDrill, hx, hy, sign, aangle); + amRope: DrawRotated(sprHandRope, hx, hy, sign, aangle); + amShotgun: DrawRotated(sprHandShotgun, hx, hy, sign, aangle); + amDEagle: DrawRotated(sprHandDEagle, hx, hy, sign, aangle); + amSineGun: DrawRotated(sprHandShotgun, hx, hy, sign, aangle); + amPortalGun: if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer? + DrawRotatedF(sprPortalGun, hx, hy, 0, sign, aangle) + else + DrawRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle); + amSniperRifle: DrawRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle); + amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, sign, aangle); + amCake: DrawRotated(sprHandCake, hx, hy, sign, aangle); + amGrenade: DrawRotated(sprHandGrenade, hx, hy, sign, aangle); + amWatermelon: DrawRotated(sprHandMelon, hx, hy, sign, aangle); + amSkip: DrawRotated(sprHandSkip, hx, hy, sign, aangle); + amClusterBomb: DrawRotated(sprHandCluster, hx, hy, sign, aangle); + amDynamite: DrawRotated(sprHandDynamite, hx, hy, sign, aangle); + amHellishBomb: DrawRotated(sprHandHellish, hx, hy, sign, aangle); + amGasBomb: DrawRotated(sprHandCheese, hx, hy, sign, aangle); + amMine: DrawRotated(sprHandMine, hx, hy, sign, aangle); + amSMine: DrawRotated(sprHandSMine, hx, hy, sign, aangle); + amSeduction: DrawRotated(sprHandSeduction, hx, hy, sign, aangle); + amVampiric: DrawRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle); + amRCPlane: begin + DrawRotated(sprHandPlane, hx, hy, sign, 0); + defaultPos:= false + end; + amGirder: begin + DrawRotated(sprHandConstruction, hx, hy, sign, aangle); + DrawSpriteClipped(sprGirder, + ox-256, + oy-256, + LongInt(topY)+WorldDy, + LongInt(rightX)+WorldDx, + cWaterLine+WorldDy, + LongInt(leftX)+WorldDx) + end; + amBee: DrawRotatedF(sprHandBee, hx, hy, (RealTicks div 125) mod 4, sign, aangle); + amFlamethrower: DrawRotatedF(sprHandFlamethrower, hx, hy, (RealTicks div 125) mod 4, sign, aangle); + amResurrector: DrawCircle(ox, oy, 98, 4, $F5, $DB, $35, $AA); // I'd rather not like to hardcode 100 here + end; + + case amt of + amAirAttack, + amMineStrike, + amDrillStrike: DrawRotated(sprHandAirAttack, sx, oy, sign, 0); + amPickHammer: DrawHedgehog(sx, sy, + sign, + 1, + 2, + 0); + amTeleport: DrawRotatedF(sprTeleport, sx, sy, 0, sign, 0); + amKamikaze: DrawHedgehog(sx, sy, + sign, + 1, + 5, + 0); + amWhip: DrawRotatedF(sprWhip, + sx, + sy, + 0, + sign, + 0); + amHammer: DrawRotatedF(sprHammer, + sx, + sy, + 0, + sign, + 0); + else + DrawHedgehog(sx, sy, + sign, + 0, + 4, + 0); + + HatVisible:= true; + (* with HH^ do + if (HatTex <> nil) + and (HatVisibility > 0) then + DrawTextureF(HatTex, + HatVisibility, + sx, + sy - 5, + 0, + sign, + 32, + 32); *) + end; + + case amt of + amBaseballBat: DrawRotated(sprHandBaseball, + sx - 4 * sign, + sy + 9, sign, aangle); + end; + + defaultPos:= false + end; + + end else // not gstHHDriven + begin + if (Gear^.Damage > 0) + and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then + begin + DrawHedgehog(sx, sy, + sign, + 2, + 1, + Gear^.DirAngle); + defaultPos:= false + end else + + if ((Gear^.State and gstHHJumping) <> 0) then + begin + DrawHedgehog(sx, sy, + sign*m, + 1, + 1, + 0); + defaultPos:= false + end; + end; + + with HH^ do + begin + if defaultPos then + begin + DrawRotatedF(sprHHIdle, + sx, + sy, + (RealTicks div 128 + Gear^.Pos) mod 19, + sign, + 0); + HatVisible:= true; + end; + + if HatVisible then + if HatVisibility < 1.0 then + HatVisibility:= HatVisibility + 0.2 + else + else + if HatVisibility > 0.0 then + HatVisibility:= HatVisibility - 0.2; + + if (HatTex <> nil) + and (HatVisibility > 0) then + if DefaultPos then + begin + DrawTextureF(HatTex, + HatVisibility, + sx, + sy - 5, + (RealTicks div 128 + Gear^.Pos) mod 19, + sign, + 32, + 32); + if HatTex^.w > 64 then + begin + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); + DrawTextureF(HatTex, + HatVisibility, + sx, + sy - 5, + (RealTicks div 128 + Gear^.Pos) mod 19 + 32, + sign, + 32, + 32); + Tint($FF, $FF, $FF, $FF) + end + end + else + begin + DrawTextureF(HatTex, + HatVisibility, + sx, + sy - 5, + 0, + sign*m, + 32, + 32); + if HatTex^.w > 64 then + begin + Tint(HH^.Team^.Clan^.Color shl 8 or $FF); + DrawTextureF(HatTex, + HatVisibility, + sx, + sy - 5, + 32, + sign*m, + 32, + 32); + Tint($FF, $FF, $FF, $FF) + end + end + end; + if (Gear^.State and gstHHDriven) <> 0 then + begin + (* if (CurAmmoGear = nil) then + begin + amt:= CurrentHedgehog^.CurAmmoType; + case amt of + amJetpack: DrawSprite(sprJetpack, sx-32, sy-32, 0); + end + end; *) + if CurAmmoGear <> nil then + begin + case CurAmmoGear^.Kind of + gtJetpack: begin + DrawSprite(sprJetpack, sx-32, sy-32, 0); + if cWaterLine > hwRound(Gear^.Y) + Gear^.Radius then + begin + if (CurAmmoGear^.MsgParam and gmUp) <> 0 then DrawSprite(sprJetpack, sx-32, sy-28, 1); + if (CurAmmoGear^.MsgParam and gmLeft) <> 0 then DrawSprite(sprJetpack, sx-28, sy-28, 2); + if (CurAmmoGear^.MsgParam and gmRight) <> 0 then DrawSprite(sprJetpack, sx-36, sy-28, 3) + end; + if CurAmmoGear^.Tex <> nil then DrawCentered(sx, sy - 40, CurAmmoGear^.Tex); + DrawAltWeapon(Gear, sx, sy) + end; + end; + end + end; + + with HH^ do + begin + if ((Gear^.State and not gstWinner) = 0) + or ((Gear^.State = gstWait) and (Gear^.dY.QWordValue = 0)) + or (bShowFinger and ((Gear^.State and gstHHDriven) <> 0)) then + begin + t:= sy - cHHRadius - 9; + if (cTagsMask and htTransparent) <> 0 then + Tint($FF, $FF, $FF, $80); + if ((cTagsMask and htHealth) <> 0) then + begin + dec(t, HealthTagTex^.h + 2); + DrawCentered(ox, t, HealthTagTex) + end; + if (cTagsMask and htName) <> 0 then + begin + dec(t, NameTagTex^.h + 2); + DrawCentered(ox, t, NameTagTex) + end; + if (cTagsMask and htTeamName) <> 0 then + begin + dec(t, Team^.NameTagTex^.h + 2); + DrawCentered(ox, t, Team^.NameTagTex) + end; + if (cTagsMask and htTransparent) <> 0 then + Tint($FF, $FF, $FF, $FF) + end; + if (Gear^.State and gstHHDriven) <> 0 then // Current hedgehog + begin + if (CurAmmoGear <> nil) and (CurAmmoGear^.Kind = gtResurrector) then + DrawCentered(ox, sy - cHHRadius - 7 - HealthTagTex^.h, HealthTagTex); + + if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then + DrawSprite(sprFinger, ox - 16, oy - 64, + GameTicks div 32 mod 16); + + if (Gear^.State and gstDrowning) = 0 then + if (Gear^.State and gstHHThinking) <> 0 then + DrawSprite(sprQuestion, ox - 10, oy - cHHRadius - 34, (RealTicks shr 9) mod 8) + end + end; + + if HH^.Effects[hePoisoned] then + begin + Tint($00, $FF, $40, $80); + DrawRotatedTextureF(SpritesData[sprSmokeWhite].texture, 1.5, 0, 0, sx, sy, 0, 1, 22, 22, 360 - (RealTicks shr 37) mod 360); + end; + if HH^.Effects[heResurrected] then + begin + Tint($f5, $db, $35, $20); + DrawSprite(sprVampiric, sx - 24, sy - 24, 0); + end; + + if Gear^.Invulnerable then + begin + Tint($FF, $FF, $FF, max($40, round($FF * abs(1 - ((RealTicks div 2 + Gear^.uid * 491) mod 1500) / 750)))); + DrawSprite(sprInvulnerable, sx - 24, sy - 24, 0); + end; + if cVampiric and + (CurrentHedgehog^.Gear <> nil) and + (CurrentHedgehog^.Gear = Gear) then + begin + Tint($FF, 0, 0, max($40, round($FF * abs(1 - (RealTicks mod 1500) / 750)))); + DrawSprite(sprVampiric, sx - 24, sy - 24, 0); + end; + Tint($FF, $FF, $FF, $FF) +end; + + +procedure RenderGear(Gear: PGear; x, y: LongInt); +var + HHGear: PGear; + i: Longword; + startX, endX, startY, endY: LongInt; +begin + case Gear^.Kind of + gtBomb: DrawRotated(sprBomb, x, y, 0, Gear^.DirAngle); + gtSnowball: DrawRotated(sprSnowball, x, y, 0, Gear^.DirAngle); + gtGasBomb: DrawRotated(sprCheese, x, y, 0, Gear^.DirAngle); + gtMolotov: DrawRotated(sprMolotov, x, y, 0, Gear^.DirAngle); + + gtRCPlane: begin + if (Gear^.Tag = -1) then + DrawRotated(sprPlane, x, y, -1, DxDy2Angle(Gear^.dX, Gear^.dY) + 90) + else + DrawRotated(sprPlane, x, y,0,DxDy2Angle(Gear^.dY, Gear^.dX)); + end; + gtBall: DrawRotatedf(sprBalls, x, y, Gear^.Tag,0, Gear^.DirAngle); + + gtPortal: if ((Gear^.Tag and 1) = 0) // still moving? + or (Gear^.IntersectGear = nil) or (Gear^.IntersectGear^.IntersectGear <> Gear) // not linked&backlinked? + or ((Gear^.IntersectGear^.Tag and 1) = 0) then // linked portal still moving? + DrawRotatedf(sprPortal, x, y, Gear^.Tag, hwSign(Gear^.dX), Gear^.DirAngle) + else DrawRotatedf(sprPortal, x, y, 4 + Gear^.Tag div 2, hwSign(Gear^.dX), Gear^.DirAngle); + + gtDrill: if (Gear^.State and gsttmpFlag) <> 0 then + DrawRotated(sprAirDrill, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)) + else + DrawRotated(sprDrill, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); + + gtHedgehog: DrawHH(Gear, x, y); + + gtShell: DrawRotated(sprBazookaShell, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); + + gtGrave: begin + DrawTextureF(Gear^.Hedgehog^.Team^.GraveTex, 1, x, y, (GameTicks shr 7+Gear^.uid) and 7, 1, 32, 32); + if Gear^.Health > 0 then + begin + //Tint($33, $33, $FF, max($40, round($FF * abs(1 - (GameTicks mod (6000 div Gear^.Health)) / 750)))); + Tint($f5, $db, $35, max($40, round($FF * abs(1 - (GameTicks mod 1500) / (750 + Gear^.Health))))); + //Tint($FF, $FF, $FF, max($40, round($FF * abs(1 - (RealTicks mod 1500) / 750)))); + DrawSprite(sprVampiric, x - 24, y - 24, 0); + Tint($FF, $FF, $FF, $FF) + end + end; + gtBee: DrawRotatedF(sprBee, x, y, (GameTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); + gtPickHammer: DrawSprite(sprPHammer, x - 16, y - 50 + LongInt(((GameTicks shr 5) and 1) * 2), 0); + gtRope: DrawRope(Gear); + gtMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then + DrawRotated(sprMineOff, x, y, 0, Gear^.DirAngle) + else if Gear^.Health <> 0 then DrawRotated(sprMineOn, x, y, 0, Gear^.DirAngle) + else DrawRotated(sprMineDead, x, y, 0, Gear^.DirAngle); + gtSMine: if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then + DrawRotated(sprSMineOff, x, y, 0, Gear^.DirAngle) + else if Gear^.Health <> 0 then DrawRotated(sprSMineOn, x, y, 0, Gear^.DirAngle) + else DrawRotated(sprMineDead, x, y, 0, Gear^.DirAngle); + gtCase: case Gear^.Pos of + posCaseAmmo : begin + i:= (GameTicks shr 6) mod 64; + if i > 18 then i:= 0; + DrawSprite(sprCase, x - 24, y - 24, i); + end; + posCaseHealth: begin + i:= ((GameTicks shr 6) + 38) mod 64; + if i > 13 then i:= 0; + DrawSprite(sprFAid, x - 24, y - 24, i); + end; + posCaseUtility: begin + i:= (GameTicks shr 6) mod 70; + if i > 23 then i:= 0; + i:= i mod 12; + DrawSprite(sprUtility, x - 24, y - 24, i); + end; + end; + gtExplosives: begin + if ((Gear^.State and gstDrowning) <> 0) then + DrawSprite(sprExplosivesRoll, x - 24, y - 24, 0) + else if Gear^.State and gstAnimation = 0 then + begin + i:= (GameTicks shr 6 + Gear^.uid*3) mod 64; + if i > 18 then i:= 0; + DrawSprite(sprExplosives, x - 24, y - 24, i) + end + else if Gear^.State and gsttmpFlag = 0 then + DrawRotatedF(sprExplosivesRoll, x, y + 4, 0, 0, Gear^.DirAngle) + else + DrawRotatedF(sprExplosivesRoll, x, y + 4, 1, 0, Gear^.DirAngle); + end; + gtDynamite: DrawSprite2(sprDynamite, x - 16, y - 25, Gear^.Tag and 1, Gear^.Tag shr 1); + gtClusterBomb: DrawRotated(sprClusterBomb, x, y, 0, Gear^.DirAngle); + gtCluster: DrawSprite(sprClusterParticle, x - 8, y - 8, 0); + gtFlame: DrawTextureF(SpritesData[sprFlame].Texture, 2 / (Gear^.Tag mod 3 + 2), x, y, (GameTicks shr 7 + LongWord(Gear^.Tag)) mod 8, 1, 16, 16); + gtParachute: begin + DrawSprite(sprParachute, x - 24, y - 48, 0); + DrawAltWeapon(Gear, x + 1, y - 3) + end; + gtAirAttack: if Gear^.Tag > 0 then DrawSprite(sprAirplane, x - SpritesData[sprAirplane].Width div 2, y - SpritesData[sprAirplane].Height div 2, 0) + else DrawSprite(sprAirplane, x - SpritesData[sprAirplane].Width div 2, y - SpritesData[sprAirplane].Height div 2, 1); + gtAirBomb: DrawRotated(sprAirBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); + gtTeleport: begin + HHGear:= Gear^.Hedgehog^.Gear; + if not Gear^.Hedgehog^.Unplaced then DrawRotatedF(sprTeleport, x + 1, y - 3, Gear^.Pos, hwSign(Gear^.dX), 0); + DrawRotatedF(sprTeleport, hwRound(HHGear^.X) + 1 + WorldDx, hwRound(HHGear^.Y) - 3 + WorldDy, 11 - Gear^.Pos, hwSign(HHGear^.dX), 0); + end; + gtSwitcher: DrawSprite(sprSwitch, x - 16, y - 56, (GameTicks shr 6) mod 12); + gtTarget: begin + Tint($FF, $FF, $FF, round($FF * Gear^.Timer / 1000)); + DrawSprite(sprTarget, x - 16, y - 16, 0); + Tint($FF, $FF, $FF, $FF); + end; + gtMortar: DrawRotated(sprMortar, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); + gtCake: if Gear^.Pos = 6 then + DrawRotatedf(sprCakeWalk, x, y, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90) + else + DrawRotatedf(sprCakeDown, x, y, 5 - Gear^.Pos, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90); + gtSeduction: if Gear^.Pos >= 14 then DrawSprite(sprSeduction, x - 16, y - 16, 0); + gtWatermelon: DrawRotatedf(sprWatermelon, x, y, 0, 0, Gear^.DirAngle); + gtMelonPiece: DrawRotatedf(sprWatermelon, x, y, 1, 0, Gear^.DirAngle); + gtHellishBomb: DrawRotated(sprHellishBomb, x, y, 0, Gear^.DirAngle); + gtBirdy: begin + if Gear^.State and gstAnimation = gstAnimation then + begin + if Gear^.State and gstTmpFlag = 0 then // Appearing + begin + endX:= x - WorldDx; + endY:= y - WorldDy; + if Gear^.Tag < 0 then + startX:= max(LAND_WIDTH + 1024, endX + 2048) + else + startX:= max(-LAND_WIDTH - 1024, endX - 2048); + startY:= endY - 256; + DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + round((endX - startX) * (-power(2, -10 * LongInt(Gear^.Timer)/2000) + 1)), startY + WorldDy + round((endY - startY) * sqrt(1 - power((LongInt(Gear^.Timer)/2000)-1, 2))), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); + end + else // Disappearing + begin + startX:= x - WorldDx; + startY:= y - WorldDy; + if Gear^.Tag > 0 then + endX:= max(LAND_WIDTH + 1024, startX + 2048) + else + endX:= max(-LAND_WIDTH - 1024, startX - 2048); + endY:= startY + 256; + DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + round((endX - startX) * power(2, 10 * (LongInt(Gear^.Timer)/2000 - 1))) + hwRound(Gear^.dX * Gear^.Timer), startY + WorldDy + round((endY - startY) * cos(LongInt(Gear^.Timer)/2000 * (Pi/2)) - (endY - startY)) + hwRound(Gear^.dY * Gear^.Timer), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); + end; + end + else + DrawTextureF(SpritesData[sprBirdy].Texture, 1, x, y, ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); + end; + gtEgg: DrawRotatedTextureF(SpritesData[sprEgg].Texture, 1, 0, 0, x, y, 0, 1, 16, 16, Gear^.DirAngle); + gtPiano: begin + if (Gear^.State and gstDrowning) = 0 then + begin + Tint($FF, $FF, $FF, $10); + for i:= 8 downto 1 do + DrawRotatedTextureF(SpritesData[sprPiano].Texture, 1, 0, 0, x, y - hwRound(Gear^.dY * 4 * i), 0, 1, 128, 128, 0); + Tint($FF, $FF, $FF, $FF) + end; + DrawRotatedTextureF(SpritesData[sprPiano].Texture, 1, 0, 0, x, y, 0, 1, 128, 128, 0); + end; + gtPoisonCloud: begin + if Gear^.Timer < 1020 then + Tint($C0, $C0, $00, Gear^.Timer div 8) + else if Gear^.Timer > 3980 then + Tint($C0, $C0, $00, (5000 - Gear^.Timer) div 8) + else + Tint($C0, $C0, $00, $C0); + DrawRotatedTextureF(SpritesData[sprSmokeWhite].texture, 3, 0, 0, x, y, 0, 1, 22, 22, (RealTicks shr 36 + Gear^.UID * 100) mod 360); + Tint($FF, $FF, $FF, $FF) + end; + gtResurrector: begin + DrawRotated(sprCross, x, y, 0, 0); + Tint($f5, $db, $35, max($00, round($C0 * abs(1 - (GameTicks mod 6000) / 3000)))); + DrawTexture(x - 108, y - 108, SpritesData[sprVampiric].Texture, 4.5); + Tint($FF, $FF, $FF, $FF); + end; + gtNapalmBomb: DrawRotated(sprNapalmBomb, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); + gtFlake: if not isInLag then + begin + if vobVelocity = 0 then + //DrawSprite(sprFlake, x-SpritesData[sprFlake].Width div 2, y-SpritesData[sprFlake].Height div 2, Gear^.Timer) + DrawSprite(sprFlake, x, y, Gear^.Timer) + else + //DrawRotatedF(sprFlake, x-SpritesData[sprFlake].Width div 2, y-SpritesData[sprFlake].Height div 2, Gear^.Timer, 1, Gear^.DirAngle); + DrawRotatedF(sprFlake, x, y, Gear^.Timer, 1, Gear^.DirAngle) + end; + + end; + if Gear^.RenderTimer and (Gear^.Tex <> nil) then DrawCentered(x + 8, y + 8, Gear^.Tex); +end; + +end.
--- a/hedgewars/uIO.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uIO.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,7 +20,7 @@ unit uIO; interface -uses SDLh; +uses SDLh, uTypes; var ipcPort: Word = 0; hiTicks: Word; @@ -35,14 +35,16 @@ procedure SendIPCTimeInc; procedure SendKeepAliveMessage(Lag: Longword); procedure LoadRecordFromFile(fileName: shortstring); +procedure SendStat(sit: TStatInfoType; s: shortstring); procedure IPCWaitPongEvent; procedure IPCCheckSock; procedure InitIPC; procedure CloseIPC; procedure NetGetNextCmd; +procedure doPut(putX, putY: LongInt; fromAI: boolean); implementation -uses uConsole, uConsts, uWorld, uMisc, uLand, uChat, uTeams; +uses uConsole, uConsts, uVariables, uCommands, uUtils, uDebug; type PCmd = ^TCmd; TCmd = packed record @@ -64,7 +66,6 @@ SendEmptyPacketTicks: LongWord; - function AddCmd(Time: Word; str: shortstring): PCmd; var command: PCmd; begin @@ -128,7 +129,7 @@ 'e': ParseCommand(copy(s, 2, Length(s) - 1), true); 'E': OutError(copy(s, 2, Length(s) - 1), true); 'W': OutError(copy(s, 2, Length(s) - 1), false); - 'M': CheckLandDigest(s); + 'M': ParseCommand('landcheck ' + s, true); 'T': case s[2] of 'L': GameType:= gmtLocal; 'D': GameType:= gmtDemo; @@ -138,7 +139,7 @@ else loTicks:= SDLNet_Read16(@s[byte(s[0]) - 1]); AddCmd(loTicks, s); - {$IFDEF DEBUGFILE}AddFileLog('IPC in: '+s[1]+' ticks '+inttostr(lastcmd^.loTime));{$ENDIF} + {$IFDEF DEBUGFILE}AddFileLog('[IPC in] '+s[1]+' ticks '+IntToStr(lastcmd^.loTime));{$ENDIF} end end; @@ -203,6 +204,15 @@ close(f) end; +procedure SendStat(sit: TStatInfoType; s: shortstring); +const stc: array [TStatInfoType] of char = 'rDkKHTPsSB'; +var buf: shortstring; +begin +buf:= 'i' + stc[sit] + s; +SendIPCRaw(@buf[0], length(buf) + 1) +end; + + procedure SendIPC(s: shortstring); begin if IPCSock <> nil then @@ -210,7 +220,7 @@ SendEmptyPacketTicks:= 0; if s[0]>#251 then s[0]:= #251; SDLNet_Write16(GameTicks, @s[Succ(byte(s[0]))]); - {$IFDEF DEBUGFILE}AddFileLog('IPC send: '+ s[1]);{$ENDIF} + {$IFDEF DEBUGFILE}AddFileLog('[IPC out] '+ s[1]);{$ENDIF} inc(s[0], 2); SDLNet_TCP_Send(IPCSock, @s, Succ(byte(s[0]))) end @@ -237,7 +247,7 @@ procedure SendIPCTimeInc; const timeinc: shortstring = '#'; begin -{$IFDEF DEBUGFILE}AddFileLog('IPC Send #');{$ENDIF} +{$IFDEF DEBUGFILE}AddFileLog('[IPC out] <time increment>');{$ENDIF} SendIPCRaw(@timeinc, 2) end; @@ -275,6 +285,7 @@ and (tmpflag or (headcmd^.cmd = '#')) // '#' is the only cmd which can be sent within same tick after 'N' and ((GameTicks = hiTicks shl 16 + headcmd^.loTime) or (headcmd^.cmd = 's') // for these commands time is not specified + or (headcmd^.cmd = 'h') // seems the hedgewars protocol does not allow remote synced commands or (headcmd^.cmd = '#') or (headcmd^.cmd = 'b') or (headcmd^.cmd = 'F')) do @@ -298,20 +309,25 @@ 'j': ParseCommand('ljump', true); 'J': ParseCommand('hjump', true); ',': ParseCommand('skip', true); + 'c': begin + s:= copy(headcmd^.str, 2, Pred(headcmd^.len)); + ParseCommand('gencmd ' + s, true); + end; 's': begin s:= copy(headcmd^.str, 2, Pred(headcmd^.len)); - AddChatString(s); + ParseCommand('chatmsg ' + s, true); WriteLnToConsole(s) end; 'b': begin s:= copy(headcmd^.str, 2, Pred(headcmd^.len)); - AddChatString(#4 + s); + ParseCommand('chatmsg '#4 + s, true); WriteLnToConsole(s) end; - 'F': TeamGone(copy(headcmd^.str, 2, Pred(headcmd^.len))); +// TODO: deprecate 'F' + 'F': ParseCommand('teamgone ' + copy(headcmd^.str, 2, Pred(headcmd^.len)), true); 'N': begin tmpflag:= false; - {$IFDEF DEBUGFILE}AddFileLog('got cmd "N": time '+inttostr(hiTicks shl 16 + headcmd^.loTime)){$ENDIF} + {$IFDEF DEBUGFILE}AddFileLog('got cmd "N": time '+IntToStr(hiTicks shl 16 + headcmd^.loTime)){$ENDIF} end; 'p': begin x16:= SDLNet_Read16(@(headcmd^.X)); @@ -342,8 +358,8 @@ if (headcmd <> nil) and tmpflag and (not CurrentTeam^.hasGone) then TryDo(GameTicks < hiTicks shl 16 + headcmd^.loTime, 'oops, queue error. in buffer: ' + headcmd^.cmd + - ' (' + inttostr(GameTicks) + ' > ' + - inttostr(hiTicks shl 16 + headcmd^.loTime) + ')', + ' (' + IntToStr(GameTicks) + ' > ' + + IntToStr(hiTicks shl 16 + headcmd^.loTime) + ')', true); isInLag:= (headcmd = nil) and tmpflag and (not CurrentTeam^.hasGone); @@ -351,8 +367,58 @@ if isInLag then fastUntilLag:= false end; +procedure chFatalError(var s: shortstring); +begin + SendIPC('E' + s); +end; + +procedure doPut(putX, putY: LongInt; fromAI: boolean); +begin +if CheckNoTeamOrHH or isPaused then exit; +bShowFinger:= false; +if not CurrentTeam^.ExtDriven and bShowAmmoMenu then + begin + bSelected:= true; + exit + end; + +with CurrentHedgehog^.Gear^, + CurrentHedgehog^ do + if (State and gstHHChooseTarget) <> 0 then + begin + isCursorVisible:= false; + if not CurrentTeam^.ExtDriven then + begin + if fromAI then + begin + TargetPoint.X:= putX; + TargetPoint.Y:= putY + end else + begin + TargetPoint.X:= CursorPoint.X - WorldDx; + TargetPoint.Y:= cScreenHeight - CursorPoint.Y - WorldDy; + end; + SendIPCXY('p', TargetPoint.X, TargetPoint.Y); + end + else + begin + TargetPoint.X:= putX; + TargetPoint.Y:= putY + end; + {$IFDEF DEBUGFILE}AddFilelog('put: ' + inttostr(TargetPoint.X) + ', ' + inttostr(TargetPoint.Y));{$ENDIF} + State:= State and not gstHHChooseTarget; + if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackingPut) <> 0 then + Message:= Message or (gmAttack and InputMask); + end + else + if CurrentTeam^.ExtDriven then + OutError('got /put while not being in choose target mode', false) +end; + procedure initModule; begin + RegisterVariable('fatal', vtCommand, @chFatalError, true ); + IPCSock:= nil; headcmd:= nil;
--- a/hedgewars/uKeys.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uKeys.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,10 +20,7 @@ unit uKeys; interface -uses uConsts, SDLh; - -type TBinds = array[0..cKeyMaxIndex] of shortstring; -type TKeyboardState = array[0..cKeyMaxIndex] of Byte; +uses SDLh, uTypes; procedure initModule; procedure freeModule; @@ -85,8 +82,7 @@ {$ENDIF} {$ENDIF} implementation -uses uTeams, uConsole, uMisc; -//const KeyNumber = 1024; +uses uConsole, uCommands, uMisc, uVariables, uConsts, uUtils, uDebug; var tkbd, tkbdn: TKeyboardState; KeyNames: array [0..cKeyMaxIndex] of string[15]; @@ -175,14 +171,19 @@ if CurrentBinds[i][0] <> #0 then begin if (i > 3) and (tkbdn[i] <> 0) and not ((CurrentBinds[i] = 'put') or (CurrentBinds[i] = 'ammomenu') or (CurrentBinds[i] = '+cur_u') or (CurrentBinds[i] = '+cur_d') or (CurrentBinds[i] = '+cur_l') or (CurrentBinds[i] = '+cur_r')) then hideAmmoMenu:= true; - if (tkbd[i] = 0) and (tkbdn[i] <> 0) then ParseCommand(CurrentBinds[i], Trusted) + if (tkbd[i] = 0) and (tkbdn[i] <> 0) then + begin + ParseCommand(CurrentBinds[i], Trusted); + if (CurrentTeam <> nil) and not CurrentTeam^.ExtDriven and (ReadyTimeLeft > 1) then ParseCommand('gencmd R', true) + end else if (CurrentBinds[i][1] = '+') and (tkbdn[i] = 0) and (tkbd[i] <> 0) then begin s:= CurrentBinds[i]; s[1]:= '-'; - ParseCommand(s, Trusted) + ParseCommand(s, Trusted); + if (CurrentTeam <> nil) and not CurrentTeam^.ExtDriven and (ReadyTimeLeft > 1) then ParseCommand('gencmd R', true) end; tkbd[i]:= tkbdn[i] end @@ -196,7 +197,7 @@ k:= SDL_GetMouseState(nil, nil); {$IFNDEF IPHONEOS}pkbd:={$ENDIF}SDL_GetKeyState(@j); -TryDo(j < cKeyMaxIndex, 'SDL keys number is more than expected (' + inttostr(j) + ')', true); +TryDo(j < cKeyMaxIndex, 'SDL keys number is more than expected (' + IntToStr(j) + ')', true); {$IFNDEF IPHONEOS} for i:= 1 to pred(j) do @@ -265,7 +266,7 @@ for i:= 6 to cKeyMaxIndex do begin s:= shortstring(sdl_getkeyname(i)); - //writeln(stdout,inttostr(i) + ': ' + s); + //writeln(stdout,IntToStr(i) + ': ' + s); if s = 'unknown key' then KeyNames[i]:= '' else begin @@ -275,7 +276,7 @@ end; end; -//for i:= 0 to cKeyMaxIndex do writeln(stdout,inttostr(i) + ': ' + KeyNames[i]); +//for i:= 0 to cKeyMaxIndex do writeln(stdout,IntToStr(i) + ': ' + KeyNames[i]); // get the size of keyboard array SDL_GetKeyState(@k); @@ -285,21 +286,21 @@ begin for i:= 0 to Pred(ControllerNumAxes[j]) do begin - keynames[k + 0]:= 'j' + inttostr(j) + 'a' + inttostr(i) + 'u'; - keynames[k + 1]:= 'j' + inttostr(j) + 'a' + inttostr(i) + 'd'; + keynames[k + 0]:= 'j' + IntToStr(j) + 'a' + IntToStr(i) + 'u'; + keynames[k + 1]:= 'j' + IntToStr(j) + 'a' + IntToStr(i) + 'd'; inc(k, 2); end; for i:= 0 to Pred(ControllerNumHats[j]) do begin - keynames[k + 0]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'u'; - keynames[k + 1]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'r'; - keynames[k + 2]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'd'; - keynames[k + 3]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'l'; + keynames[k + 0]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'u'; + keynames[k + 1]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'r'; + keynames[k + 2]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'd'; + keynames[k + 3]:= 'j' + IntToStr(j) + 'h' + IntToStr(i) + 'l'; inc(k, 4); end; for i:= 0 to Pred(ControllerNumButtons[j]) do begin - keynames[k]:= 'j' + inttostr(j) + 'b' + inttostr(i); + keynames[k]:= 'j' + IntToStr(j) + 'b' + IntToStr(i); inc(k, 1); end; end; @@ -350,7 +351,7 @@ DefaultBinds[KeyNameToCode('left_shift')]:= '+precise'; {$ENDIF} -for i:= 1 to 10 do DefaultBinds[KeyNameToCode('f'+inttostr(i))]:= 'slot '+inttostr(i); +for i:= 1 to 10 do DefaultBinds[KeyNameToCode('f'+IntToStr(i))]:= 'slot '+IntToStr(i); SetDefaultBinds(); end; @@ -425,7 +426,7 @@ ControllerNumControllers:= SDL_NumJoysticks(); if ControllerNumControllers > 6 then ControllerNumControllers:= 6; -WriteLnToConsole('Number of game controllers: ' + inttostr(ControllerNumControllers)); +WriteLnToConsole('Number of game controllers: ' + IntToStr(ControllerNumControllers)); if ControllerNumControllers > 0 then begin @@ -441,10 +442,10 @@ //ControllerNumBalls[j]:= SDL_JoystickNumBalls(Controller[j]); ControllerNumHats[j]:= SDL_JoystickNumHats(Controller[j]); ControllerNumButtons[j]:= SDL_JoystickNumButtons(Controller[j]); - WriteLnToConsole('* Number of axes: ' + inttostr(ControllerNumAxes[j])); - //WriteLnToConsole('* Number of balls: ' + inttostr(ControllerNumBalls[j])); - WriteLnToConsole('* Number of hats: ' + inttostr(ControllerNumHats[j])); - WriteLnToConsole('* Number of buttons: ' + inttostr(ControllerNumButtons[j])); + WriteLnToConsole('* Number of axes: ' + IntToStr(ControllerNumAxes[j])); + //WriteLnToConsole('* Number of balls: ' + IntToStr(ControllerNumBalls[j])); + WriteLnToConsole('* Number of hats: ' + IntToStr(ControllerNumHats[j])); + WriteLnToConsole('* Number of buttons: ' + IntToStr(ControllerNumButtons[j])); ControllerEnabled:= 1; if ControllerNumAxes[j] > 20 then ControllerNumAxes[j]:= 20;
--- a/hedgewars/uLand.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uLand.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,23 +20,7 @@ unit uLand; interface -uses SDLh, uLandTemplates, uFloat, uConsts, GLunit; - -type - TLandArray = packed array of array of LongWord; - TCollisionArray = packed array of array of Word; - TPreview = packed array[0..127, 0..31] of byte; - TDirtyTag = packed array of array of byte; - -var Land: TCollisionArray; - LandPixels: TLandArray; - LandDirty: TDirtyTag; - hasBorder: boolean; - hasGirders: boolean; - isMap: boolean; - playHeight, playWidth, leftX, rightX, topY, MaxHedgehogs: Longword; // idea is that a template can specify height/width. Or, a map, a height/width by the dimensions of the image. If the map has pixels near top of image, it triggers border. - LandBackSurface: PSDL_Surface; - digest: shortstring; +uses SDLh, uLandTemplates, uFloat, uConsts, GLunit, uTypes; type direction = record x, y: LongInt; end; const DIR_N: direction = (x: 0; y: -1); @@ -48,11 +32,10 @@ procedure freeModule; procedure GenMap; function GenPreview: TPreview; -procedure CheckLandDigest(s: shortstring); -function LandBackPixel(x, y: LongInt): LongWord; implementation -uses uConsole, uStore, uMisc, uRandom, uTeams, uLandObjects, Adler32, uIO, uLandTexture, sysutils; +uses uConsole, uStore, uRandom, uLandObjects, uIO, uLandTexture, sysutils, + uVariables, uUtils, uCommands, Adler32, uDebug, uLandPainted; operator=(const a, b: direction) c: Boolean; begin @@ -64,30 +47,6 @@ ar: array[0..Pred(cMaxEdgePoints)] of TPoint; end; -procedure LogLandDigest; -var s: shortstring; - adler, i: LongInt; -begin -adler:= 1; -for i:= 0 to LAND_HEIGHT-1 do - Adler32Update(adler, @Land[i,0], LAND_WIDTH); -s:= 'M'+inttostr(adler); - -CheckLandDigest(s); -SendIPCRaw(@s[0], Length(s) + 1) -end; - -procedure CheckLandDigest(s: shortstring); -begin -{$IFDEF DEBUGFILE} - AddFileLog('CheckLandDigest: ' + s + ' digest : ' + digest); -{$ENDIF} - if digest = '' then - digest:= s - else - TryDo(s = digest, 'Different maps generated, sorry', true); -end; - procedure DrawLine(X1, Y1, X2, Y2: LongInt; Color: Longword); var eX, eY, dX, dY: LongInt; @@ -319,17 +278,6 @@ end; end; -function LandBackPixel(x, y: LongInt): LongWord; -var p: PLongWordArray; -begin - if LandBackSurface = nil then LandBackPixel:= 0 - else - begin - p:= LandBackSurface^.pixels; - LandBackPixel:= p^[LandBackSurface^.w * (y mod LandBackSurface^.h) + (x mod LandBackSurface^.w)];// or $FF000000; - end -end; - procedure ColorizeLand(Surface: PSDL_Surface); var tmpsurf: PSDL_Surface; r, rr: TSDL_Rect; @@ -385,7 +333,7 @@ r.x:= x mod tmpsurf^.w; r.y:= 0; r.w:= 1; - r.h:= min(16, yd - yu + 1); + r.h:= Min(16, yd - yu + 1); SDL_UpperBlit(tmpsurf, @r, Surface, @rr); end; yd:= yu - 1; @@ -548,57 +496,70 @@ i: Longword; y, x: Longword; begin -for y:= 0 to LAND_HEIGHT - 1 do - for x:= 0 to LAND_WIDTH - 1 do - Land[y, x]:= lfBasic; - -{$HINTS OFF} -SetPoints(Template, pa); -{$HINTS ON} -for i:= 1 to Template.BezierizeCount do - begin - BezierizeEdge(pa, _0_5); - RandomizePoints(pa); - RandomizePoints(pa) - end; -for i:= 1 to Template.RandPassesCount do RandomizePoints(pa); -BezierizeEdge(pa, _0_1); - -DrawEdge(pa, 0); - -with Template do - for i:= 0 to pred(FillPointsCount) do - with FillPoints^[i] do - FillLand(x, y); - -DrawEdge(pa, lfBasic); - -MaxHedgehogs:= Template.MaxHedgehogs; -hasGirders:= Template.hasGirders; -playHeight:= Template.TemplateHeight; -playWidth:= Template.TemplateWidth; -leftX:= ((LAND_WIDTH - playWidth) div 2); -rightX:= (playWidth + ((LAND_WIDTH - playWidth) div 2)) - 1; -topY:= LAND_HEIGHT - playHeight; - -// force to only cavern even if a cavern map is invertable if cTemplateFilter = 4 ? -if (cTemplateFilter = 4) or - (Template.canInvert and (getrandom(2) = 0)) or - (not Template.canInvert and Template.isNegative) then - begin - hasBorder:= true; for y:= 0 to LAND_HEIGHT - 1 do for x:= 0 to LAND_WIDTH - 1 do - if (y < topY) or (x < leftX) or (x > rightX) then - Land[y, x]:= 0 - else - begin - if Land[y, x] = 0 then - Land[y, x]:= lfBasic - else if Land[y, x] = lfBasic then - Land[y, x]:= 0; - end; - end; + Land[y, x]:= lfBasic; + {$HINTS OFF} + SetPoints(Template, pa); + {$HINTS ON} + for i:= 1 to Template.BezierizeCount do + begin + BezierizeEdge(pa, _0_5); + RandomizePoints(pa); + RandomizePoints(pa) + end; + for i:= 1 to Template.RandPassesCount do RandomizePoints(pa); + BezierizeEdge(pa, _0_1); + + + DrawEdge(pa, 0); + + with Template do + for i:= 0 to pred(FillPointsCount) do + with FillPoints^[i] do + FillLand(x, y); + + DrawEdge(pa, lfBasic); + + MaxHedgehogs:= Template.MaxHedgehogs; + hasGirders:= Template.hasGirders; + playHeight:= Template.TemplateHeight; + playWidth:= Template.TemplateWidth; + leftX:= ((LAND_WIDTH - playWidth) div 2); + rightX:= (playWidth + ((LAND_WIDTH - playWidth) div 2)) - 1; + topY:= LAND_HEIGHT - playHeight; + + // HACK: force to only cavern even if a cavern map is invertable if cTemplateFilter = 4 ? + if (cTemplateFilter = 4) or + (Template.canInvert and (getrandom(2) = 0)) or + (not Template.canInvert and Template.isNegative) then + begin + hasBorder:= true; + for y:= 0 to LAND_HEIGHT - 1 do + for x:= 0 to LAND_WIDTH - 1 do + if (y < topY) or (x < leftX) or (x > rightX) then + Land[y, x]:= 0 + else + begin + if Land[y, x] = 0 then + Land[y, x]:= lfBasic + else if Land[y, x] = lfBasic then + Land[y, x]:= 0; + end; + end; +end; + +procedure GenDrawnMap; +begin + uLandPainted.Draw; + + MaxHedgehogs:= 48; + hasGirders:= true; + playHeight:= 2048; + playWidth:= 4096; + leftX:= ((LAND_WIDTH - playWidth) div 2); + rightX:= (playWidth + ((LAND_WIDTH - playWidth) div 2)) - 1; + topY:= LAND_HEIGHT - playHeight; end; function SelectTemplate: LongInt; @@ -1083,6 +1044,9 @@ case cMapGen of 0: GenBlank(EdgeTemplates[SelectTemplate]); 1: GenMaze; + 2: GenDrawnMap; + else + OutError('Unknown mapgen', true); end; AddProgress(); @@ -1239,8 +1203,6 @@ AddProgress; -{$IFDEF DEBUGFILE}LogLandDigest;{$ENDIF} - // check for land near top c:= 0; if (GameFlags and gfBorder) <> 0 then @@ -1325,6 +1287,9 @@ case cMapGen of 0: GenBlank(EdgeTemplates[SelectTemplate]); 1: GenMaze; + 2: GenDrawnMap; + else + OutError('Unknown mapgen', true); end; lh:= LAND_HEIGHT div 128; @@ -1348,8 +1313,35 @@ GenPreview:= Preview end; + +procedure chLandCheck(var s: shortstring); +begin +{$IFDEF DEBUGFILE} + AddFileLog('CheckLandDigest: ' + s + ' digest : ' + digest); +{$ENDIF} + if digest = '' then + digest:= s + else + TryDo(s = digest, 'Different maps generated, sorry', true); +end; + +procedure chSendLandDigest(var s: shortstring); +var adler, i: LongInt; +begin + adler:= 1; + for i:= 0 to LAND_HEIGHT-1 do + Adler32Update(adler, @Land[i,0], LAND_WIDTH); + s:= 'M' + IntToStr(adler); + + chLandCheck(s); + SendIPCRaw(@s[0], Length(s) + 1) +end; + procedure initModule; begin + RegisterVariable('landcheck', vtCommand, @chLandCheck, false); + RegisterVariable('sendlanddigest', vtCommand, @chSendLandDigest, false); + LandBackSurface:= nil; digest:= '';
--- a/hedgewars/uLandGraphics.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uLandGraphics.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,44 +20,71 @@ unit uLandGraphics; interface -uses uFloat, uConsts; +uses uFloat, uConsts, uTypes; type PRangeArray = ^TRangeArray; TRangeArray = array[0..31] of record Left, Right: LongInt; end; +function addBgColor(OldColor, NewColor: LongWord): LongWord; function SweepDirty: boolean; function Despeckle(X, Y: LongInt): boolean; function CheckLandValue(X, Y: LongInt; LandFlag: Word): boolean; -function DrawExplosion(X, Y, Radius: LongInt): Longword; +function DrawExplosion(X, Y, Radius: LongInt): Longword; procedure DrawHLinesExplosions(ar: PRangeArray; Radius: LongInt; y, dY: LongInt; Count: Byte); procedure DrawTunnel(X, Y, dX, dY: hwFloat; ticks, HalfWidth: LongInt); procedure FillRoundInLand(X, Y, Radius: LongInt; Value: Longword); procedure ChangeRoundInLand(X, Y, Radius: LongInt; doSet: boolean); +function LandBackPixel(x, y: LongInt): LongWord; function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean): boolean; implementation -uses SDLh, uMisc, uLand, uLandTexture; +uses SDLh, uLandTexture, uVariables, uUtils, uDebug; + +function addBgColor(OldColor, NewColor: LongWord): LongWord; +// Factor ranges from 0 to 100% NewColor +var + oRed, oBlue, oGreen, oAlpha, nRed, nBlue, nGreen, nAlpha: Byte; +begin + // Get colors + oAlpha := (OldColor shr 24) and $FF; + oRed := (OldColor shr 16) and $FF; + oGreen := (OldColor shr 8) and $FF; + oBlue := (OldColor) and $FF; + + nAlpha := (NewColor shr 24) and $FF; + nRed := (NewColor shr 16) and $FF; + nGreen := (NewColor shr 8) and $FF; + nBlue := (NewColor) and $FF; + + // Mix colors + nAlpha := min(255, oAlpha + nAlpha); + nRed := ((oRed * oAlpha) + (nRed * (255-oAlpha))) div 255; + nGreen := ((oGreen * oAlpha) + (nGreen * (255-oAlpha))) div 255; + nBlue := ((oBlue * oAlpha) + (nBlue * (255-oAlpha))) div 255; + + addBgColor := (nAlpha shl 24) or (nRed shl 16) or (nGreen shl 8) or (nBlue); +end; procedure FillCircleLines(x, y, dx, dy: LongInt; Value: Longword); var i: LongInt; begin if ((y + dy) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (Land[y + dy, i] and lfIndestructible) = 0 then Land[y + dy, i]:= Value; if ((y - dy) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (Land[y - dy, i] and lfIndestructible) = 0 then Land[y - dy, i]:= Value; if ((y + dx) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (Land[y + dx, i] and lfIndestructible) = 0 then Land[y + dx, i]:= Value; if ((y - dx) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (Land[y - dx, i] and lfIndestructible) = 0 then Land[y - dx, i]:= Value; end; @@ -68,33 +95,33 @@ if not doSet then begin if ((y + dy) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (Land[y + dy, i] > 0) and (Land[y + dy, i] < 256) then dec(Land[y + dy, i]); // check > 0 because explosion can erase collision data if ((y - dy) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (Land[y - dy, i] > 0) and (Land[y - dy, i] < 256) then dec(Land[y - dy, i]); if ((y + dx) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (Land[y + dx, i] > 0) and (Land[y + dx, i] < 256) then dec(Land[y + dx, i]); if ((y - dx) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (Land[y - dx, i] > 0) and (Land[y - dx, i] < 256) then dec(Land[y - dx, i]); end else begin if ((y + dy) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (Land[y + dy, i] < 256) then inc(Land[y + dy, i]); if ((y - dy) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (Land[y - dy, i] < 256) then inc(Land[y - dy, i]); if ((y + dx) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (Land[y + dx, i] < 256) then inc(Land[y + dx, i]); if ((y - dx) and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (Land[y - dx, i] < 256) then inc(Land[y - dx, i]); end @@ -145,7 +172,7 @@ begin t:= y + dy; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (not isMap and ((Land[t, i] and lfIndestructible) = 0)) or ((Land[t, i] and lfBasic) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= 0 @@ -154,7 +181,7 @@ t:= y - dy; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if (not isMap and ((Land[t, i] and lfIndestructible) = 0)) or ((Land[t, i] and lfBasic) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= 0 @@ -163,7 +190,7 @@ t:= y + dx; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (not isMap and ((Land[t, i] and lfIndestructible) = 0)) or ((Land[t, i] and lfBasic) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= 0 @@ -172,7 +199,7 @@ t:= y - dx; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if (not isMap and ((Land[t, i] and lfIndestructible) = 0)) or ((Land[t, i] and lfBasic) <> 0) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= 0 @@ -188,8 +215,8 @@ cnt:= 0; t:= y + dy; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) then + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do + if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then begin inc(cnt); if (cReducedQuality and rqBlurryLand) = 0 then @@ -198,7 +225,7 @@ LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) end else - if ((Land[t, i] and lfObject) <> 0) then + if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= 0 else @@ -206,8 +233,8 @@ t:= y - dy; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) then + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do + if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then begin inc(cnt); if (cReducedQuality and rqBlurryLand) = 0 then @@ -216,7 +243,7 @@ LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) end else - if ((Land[t, i] and lfObject) <> 0) then + if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[t, i]:= 0 else @@ -224,26 +251,8 @@ t:= y + dx; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) then - begin - inc(cnt); - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= LandBackPixel(i, t) - else - LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) - end - else - if ((Land[t, i] and lfObject) <> 0) then - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= 0 - else - LandPixels[t div 2, i div 2]:= 0; - -t:= y - dx; -if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do - if ((Land[t, i] and lfBasic) <> 0) then + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do + if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then begin inc(cnt); if (cReducedQuality and rqBlurryLand) = 0 then @@ -252,11 +261,29 @@ LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) end else - if ((Land[t, i] and lfObject) <> 0) then + if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then + if (cReducedQuality and rqBlurryLand) = 0 then + LandPixels[t, i]:= 0 + else + LandPixels[t div 2, i div 2]:= 0; + +t:= y - dx; +if (t and LAND_HEIGHT_MASK) = 0 then + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do + if ((Land[t, i] and lfBasic) <> 0) and not disableLandBack then + begin + inc(cnt); + if (cReducedQuality and rqBlurryLand) = 0 then + LandPixels[t, i]:= LandBackPixel(i, t) + else + LandPixels[t div 2, i div 2]:= LandBackPixel(i, t) + end + else + if ((Land[t, i] and lfObject) <> 0) or (disableLandBack and ((Land[t, i] and lfIndestructible) = 0)) then if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[t, i]:= 0 + LandPixels[t, i]:= 0 else - LandPixels[t div 2, i div 2]:= 0; + LandPixels[t div 2, i div 2]:= 0; FillLandCircleLinesBG:= cnt; end; @@ -265,7 +292,7 @@ begin t:= y + dy; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then begin if (cReducedQuality and rqBlurryLand) = 0 then @@ -280,7 +307,7 @@ t:= y - dy; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do + for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then begin if (cReducedQuality and rqBlurryLand) = 0 then @@ -294,7 +321,7 @@ t:= y + dx; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then begin if (cReducedQuality and rqBlurryLand) = 0 then @@ -309,7 +336,7 @@ t:= y - dx; if (t and LAND_HEIGHT_MASK) = 0 then - for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do + for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then begin if (cReducedQuality and rqBlurryLand) = 0 then @@ -393,10 +420,10 @@ if (dx = dy) then FillLandCircleLinesEBC(x, y, dx, dy); end; -tx:= max(X - Radius - 1, 0); -dx:= min(X + Radius + 1, LAND_WIDTH) - tx; -ty:= max(Y - Radius - 1, 0); -dy:= min(Y + Radius + 1, LAND_HEIGHT) - ty; +tx:= Max(X - Radius - 1, 0); +dx:= Min(X + Radius + 1, LAND_WIDTH) - tx; +ty:= Max(Y - Radius - 1, 0); +dy:= Min(Y + Radius + 1, LAND_HEIGHT) - ty; UpdateLandTexture(tx, dx, ty, dy); DrawExplosion:= cnt end; @@ -406,15 +433,15 @@ begin for i:= 0 to Pred(Count) do begin - for ty:= max(y - Radius, 0) to min(y + Radius, LAND_HEIGHT) do - for tx:= max(0, ar^[i].Left - Radius) to min(LAND_WIDTH, ar^[i].Right + Radius) do - if (Land[ty, tx] and lfBasic) <> 0 then + for ty:= Max(y - Radius, 0) to Min(y + Radius, LAND_HEIGHT) do + for tx:= Max(0, ar^[i].Left - Radius) to Min(LAND_WIDTH, ar^[i].Right + Radius) do + if ((Land[ty, tx] and lfBasic) <> 0) and not disableLandBack then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[ty, tx]:= LandBackPixel(tx, ty) else LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty) else - if (Land[ty, tx] and lfObject) <> 0 then + if ((Land[ty, tx] and lfObject) <> 0) or (disableLandBack and ((Land[ty, tx] and lfIndestructible) = 0)) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[ty, tx]:= 0 else @@ -427,8 +454,8 @@ for i:= 0 to Pred(Count) do begin - for ty:= max(y - Radius, 0) to min(y + Radius, LAND_HEIGHT) do - for tx:= max(0, ar^[i].Left - Radius) to min(LAND_WIDTH, ar^[i].Right + Radius) do + for ty:= Max(y - Radius, 0) to Min(y + Radius, LAND_HEIGHT) do + for tx:= Max(0, ar^[i].Left - Radius) to Min(LAND_WIDTH, ar^[i].Right + Radius) do if ((Land[ty, tx] and lfBasic) <> 0) or ((Land[ty, tx] and lfObject) <> 0) then begin if (cReducedQuality and rqBlurryLand) = 0 then @@ -520,13 +547,13 @@ ty:= hwRound(Y); if ((ty and LAND_HEIGHT_MASK) = 0) and ((tx and LAND_WIDTH_MASK) = 0) and ((Land[ty, tx] and lfIndestructible) = 0) then begin - if (Land[ty, tx] and lfBasic) <> 0 then + if ((Land[ty, tx] and lfBasic) <> 0) and not disableLandBack then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[ty, tx]:= LandBackPixel(tx, ty) else LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty) else - if (Land[ty, tx] and lfObject) <> 0 then + if ((Land[ty, tx] and lfObject) <> 0) or (disableLandBack and ((Land[ty, tx] and lfIndestructible) = 0)) then if (cReducedQuality and rqBlurryLand) = 0 then LandPixels[ty, tx]:= 0 else @@ -584,10 +611,10 @@ ny:= ny + dX; end; -tx:= max(stX - HalfWidth * 2 - 4 - abs(hwRound(dX * ticks)), 0); -ty:= max(stY - HalfWidth * 2 - 4 - abs(hwRound(dY * ticks)), 0); -ddx:= min(stX + HalfWidth * 2 + 4 + abs(hwRound(dX * ticks)), LAND_WIDTH) - tx; -ddy:= min(stY + HalfWidth * 2 + 4 + abs(hwRound(dY * ticks)), LAND_HEIGHT) - ty; +tx:= Max(stX - HalfWidth * 2 - 4 - abs(hwRound(dX * ticks)), 0); +ty:= Max(stY - HalfWidth * 2 - 4 - abs(hwRound(dY * ticks)), 0); +ddx:= Min(stX + HalfWidth * 2 + 4 + abs(hwRound(dX * ticks)), LAND_WIDTH) - tx; +ddy:= Min(stY + HalfWidth * 2 + 4 + abs(hwRound(dY * ticks)), LAND_HEIGHT) - ty; UpdateLandTexture(tx, ddx, ty, ddy) end; @@ -660,18 +687,30 @@ if SDL_MustLock(Image) then SDL_UnlockSurface(Image); -x:= max(cpX, leftX); -w:= min(cpX + Image^.w, LAND_WIDTH) - x; -y:= max(cpY, topY); -h:= min(cpY + Image^.h, LAND_HEIGHT) - y; +x:= Max(cpX, leftX); +w:= Min(cpX + Image^.w, LAND_WIDTH) - x; +y:= Max(cpY, topY); +h:= Min(cpY + Image^.h, LAND_HEIGHT) - y; UpdateLandTexture(x, w, y, h) end; // was experimenting with applying as damage occurred. function Despeckle(X, Y: LongInt): boolean; -var nx, ny, i, j, c: LongInt; +var nx, ny, i, j, c, xx, yy: LongInt; + pixelsweep: boolean; begin -if ((Land[Y, X] and lfDamaged) <> 0) and ((Land[Y, X] and lfIndestructible) = 0) then // check neighbours +if (cReducedQuality and rqBlurryLand) = 0 then + begin + xx:= X; + yy:= Y; + end +else + begin + xx:= X div 2; + yy:= Y div 2; + end; +pixelsweep:= ((Land[Y, X] and $FF00) = 0) and (LandPixels[yy, xx] <> 0); +if (((Land[Y, X] and lfDamaged) <> 0) and ((Land[Y, X] and lfIndestructible) = 0)) or pixelsweep then begin c:= 0; for i:= -1 to 1 do @@ -681,25 +720,29 @@ ny:= Y + i; nx:= X + j; if ((ny and LAND_HEIGHT_MASK) = 0) and ((nx and LAND_WIDTH_MASK) = 0) then - if Land[ny, nx] > 255 then - inc(c); + begin + if pixelsweep then + begin + if ((cReducedQuality and rqBlurryLand) <> 0) then + begin + nx:= nx div 2; + ny:= ny div 2 + end; + if LandPixels[ny, nx] <> 0 then inc(c); + end + else if Land[ny, nx] > 255 then inc(c); + end end; if c < 4 then // 0-3 neighbours begin - if (cReducedQuality and rqBlurryLand) = 0 then - if (Land[Y, X] and lfBasic) <> 0 then - LandPixels[Y, X]:= LandBackPixel(X, Y) - else - LandPixels[Y, X]:= 0 + if ((Land[Y, X] and lfBasic) <> 0) and not disableLandBack then + LandPixels[yy, xx]:= LandBackPixel(X, Y) else - if (Land[Y, X] and lfBasic) <> 0 then - LandPixels[Y div 2, X div 2]:= LandBackPixel(X, Y) - else - LandPixels[Y div 2, X div 2]:= 0; + LandPixels[yy, xx]:= 0; Land[Y, X]:= 0; - exit(true); + if not pixelsweep then exit(true); end; end; Despeckle:= false @@ -772,4 +815,17 @@ begin CheckLandValue:= ((X and LAND_WIDTH_MASK <> 0) or (Y and LAND_HEIGHT_MASK <> 0)) or ((Land[Y, X] and LandFlag) = 0) end; + +function LandBackPixel(x, y: LongInt): LongWord; +var p: PLongWordArray; +begin + if LandBackSurface = nil then LandBackPixel:= 0 + else + begin + p:= LandBackSurface^.pixels; + LandBackPixel:= p^[LandBackSurface^.w * (y mod LandBackSurface^.h) + (x mod LandBackSurface^.w)];// or $FF000000; + end +end; + + end.
--- a/hedgewars/uLandObjects.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uLandObjects.pas Tue Jan 04 12:53:46 2011 +0100 @@ -29,7 +29,8 @@ procedure AddOnLandObjects(Surface: PSDL_Surface); implementation -uses uLand, uStore, uConsts, uMisc, uConsole, uRandom, uVisualGears, uSound, GLunit; +uses uStore, uConsts, uConsole, uRandom, uVisualGears, uSound, GLunit, + uTypes, uVariables, uUtils, uDebug, sysutils; const MaxRects = 512; MAXOBJECTRECTS = 16; @@ -225,7 +226,9 @@ tmpx2:= bx; while (tmpx <= bx - rect.w div 2 - 1) and bRes do begin - bRes:= (Land[rect.y, tmpx] = Color) and (Land[by, tmpx] = Color) and + bRes:= ((rect.y and LAND_HEIGHT_MASK) = 0) and ((by and LAND_HEIGHT_MASK) = 0) and + ((tmpx and LAND_WIDTH_MASK) = 0) and ((tmpx2 and LAND_WIDTH_MASK) = 0) and + (Land[rect.y, tmpx] = Color) and (Land[by, tmpx] = Color) and (Land[rect.y, tmpx2] = Color) and (Land[by, tmpx2] = Color); inc(tmpx); dec(tmpx2) @@ -234,7 +237,9 @@ tmpy2:= by-1; while (tmpy <= by - rect.h div 2 - 1) and bRes do begin - bRes:= (Land[tmpy, rect.x] = Color) and (Land[tmpy, bx] = Color) and + bRes:= ((tmpy and LAND_HEIGHT_MASK) = 0) and ((tmpy2 and LAND_HEIGHT_MASK) = 0) and + ((rect.x and LAND_WIDTH_MASK) = 0) and ((bx and LAND_WIDTH_MASK) = 0) and + (Land[tmpy, rect.x] = Color) and (Land[tmpy, bx] = Color) and (Land[tmpy2, rect.x] = Color) and (Land[tmpy2, bx] = Color); inc(tmpy); dec(tmpy2) @@ -361,9 +366,9 @@ end; procedure ReadThemeInfo(var ThemeObjects: TThemeObjects; var SprayObjects: TSprayObjects); -var s: shortstring; +var s, key: shortstring; f: textfile; - i, ii: LongInt; + i, ii, numFlakes: LongInt; c1, c2: TSDL_Color; procedure CheckRect(Width, Height, x, y, w, h: LongWord); @@ -383,87 +388,213 @@ filemode:= 0; // readonly Reset(f); -// read sky and explosion border colors -Readln(f, c1.r, c1.g, c1. b); -Readln(f, c2.r, c2.g, c2. b); -// read water gradient colors -Readln(f, WaterColorArray[0].r, WaterColorArray[0].g, WaterColorArray[0].b); -Readln(f, WaterColorArray[2].r, WaterColorArray[2].g, WaterColorArray[2].b, cWaterOpacity); -WaterColorArray[0].a := 255; -WaterColorArray[2].a := 255; -WaterColorArray[1]:= WaterColorArray[0]; -WaterColorArray[3]:= WaterColorArray[2]; +ThemeObjects.Count:= 0; +SprayObjects.Count:= 0; -glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); // sky color -cExplosionBorderColor:= c2.value or AMask; +while not eof(f) do + begin + Readln(f, s); + if Length(s) = 0 then continue; + if s[1] = ';' then continue; + + i:= Pos('=', s); + key:= Trim(Copy(s, 1, Pred(i))); + Delete(s, 1, i); -ReadLn(f, s); -if MusicFN = '' then MusicFN:= s; - -ReadLn(f, cCloudsNumber); - -// TODO - adjust all the theme cloud numbers. This should not be a permanent fix -//cCloudsNumber:= cCloudsNumber * (LAND_WIDTH div 2048); - -// scale number of clouds depending on screen space (two times land width) -cCloudsNumber:= cCloudsNumber * cScreenSpace div LAND_WIDTH; - -Readln(f, ThemeObjects.Count); -for i:= 0 to Pred(ThemeObjects.Count) do - begin - Readln(f, s); // filename - with ThemeObjects.objs[i] do + if key = 'sky' then + begin + i:= Pos(',', s); + c1.r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + c1.g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + c1.b:= StrToInt(Trim(s)); + glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); + end + else if key = 'border' then + begin + i:= Pos(',', s); + c2.r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + c2.g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + c2.b:= StrToInt(Trim(s)); + cExplosionBorderColor:= c2.value or AMask; + end + else if key = 'water-top' then + begin + i:= Pos(',', s); + WaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + WaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + WaterColorArray[0].b:= StrToInt(Trim(s)); + WaterColorArray[0].a := 255; + WaterColorArray[1]:= WaterColorArray[0]; + end + else if key = 'water-bottom' then + begin + i:= Pos(',', s); + WaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + WaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + WaterColorArray[2].b:= StrToInt(Trim(s)); + WaterColorArray[2].a := 255; + WaterColorArray[3]:= WaterColorArray[2]; + end + else if key = 'water-opacity' then + begin + cWaterOpacity:= StrToInt(Trim(s)); + cSDWaterOpacity:= cWaterOpacity + end + else if key = 'music' then MusicFN:= Trim(s) + else if key = 'clouds' then + begin + cCloudsNumber:= StrToInt(Trim(s)) * cScreenSpace div LAND_WIDTH; + cSDCloudsNumber:= cCloudsNumber + end + else if key = 'object' then + begin + inc(ThemeObjects.Count); + with ThemeObjects.objs[Pred(ThemeObjects.Count)] do begin - Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps); + i:= Pos(',', s); + Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + Trim(Copy(s, 1, Pred(i))), ifCritical or ifTransparent or ifIgnoreCaps); Width:= Surf^.w; Height:= Surf^.h; - Read(f, Maxcnt); + Delete(s, 1, i); + i:= Pos(',', s); + Maxcnt:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); if (Maxcnt < 1) or (Maxcnt > MAXTHEMEOBJECTS) then OutError('Object''s max count should be between 1 and '+ inttostr(MAXTHEMEOBJECTS) +' (it was '+ inttostr(Maxcnt) +').', true); with inland do begin - Read(f, x, y, w, h); + i:= Pos(',', s); + x:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + y:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + w:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + h:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); CheckRect(Width, Height, x, y, w, h) end; - Read(f, rectcnt); + i:= Pos(',', s); + rectcnt:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); for ii:= 1 to rectcnt do with outland[ii] do begin - Read(f, x, y, w, h); + i:= Pos(',', s); + x:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + y:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + w:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + if ii = rectcnt then h:= StrToInt(Trim(s)) + else + begin + i:= Pos(',', s); + h:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i) + end; CheckRect(Width, Height, x, y, w, h) end; - ReadLn(f) + end; + end + else if key = 'spray' then + begin + inc(SprayObjects.Count); + with SprayObjects.objs[Pred(SprayObjects.Count)] do + begin + i:= Pos(',', s); + Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + Trim(Copy(s, 1, Pred(i))), ifCritical or ifTransparent or ifIgnoreCaps); + Width:= Surf^.w; + Height:= Surf^.h; + Delete(s, 1, i); + Maxcnt:= StrToInt(Trim(s)); + end; + end + else if key = 'flakes' then + begin + i:= Pos(',', s); + vobCount:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + if vobCount > 0 then + begin + i:= Pos(',', s); + vobFramesCount:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobFrameTicks:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobVelocity:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + vobFallSpeed:= StrToInt(Trim(s)); + vobCount:= vobCount * cScreenSpace div LAND_WIDTH; end; + end + else if key = 'sd-water-top' then + begin + i:= Pos(',', s); + SDWaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + SDWaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + SDWaterColorArray[0].b:= StrToInt(Trim(s)); + SDWaterColorArray[0].a := 255; + SDWaterColorArray[1]:= SDWaterColorArray[0]; + end + else if key = 'sd-water-bottom' then + begin + i:= Pos(',', s); + SDWaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + SDWaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + SDWaterColorArray[2].b:= StrToInt(Trim(s)); + SDWaterColorArray[2].a := 255; + SDWaterColorArray[3]:= SDWaterColorArray[2]; + end + else if key = 'sd-water-opacity' then cSDWaterOpacity:= StrToInt(Trim(s)) + else if key = 'sd-clouds' then cSDCloudsNumber:= StrToInt(Trim(s)) * cScreenSpace div LAND_WIDTH + else if key = 'sd-flakes' then + begin + i:= Pos(',', s); + vobSDCount:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + if vobSDCount > 0 then + begin + i:= Pos(',', s); + vobSDFramesCount:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobSDFrameTicks:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + vobSDVelocity:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + vobSDFallSpeed:= StrToInt(Trim(s)); + vobSDCount:= vobSDCount * cScreenSpace div LAND_WIDTH; + end; + end end; -// sprays -Readln(f, SprayObjects.Count); -for i:= 0 to Pred(SprayObjects.Count) do - begin - Readln(f, s); // filename - with SprayObjects.objs[i] do - begin - Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps); - Width:= Surf^.w; - Height:= Surf^.h; - ReadLn(f, Maxcnt) - end; - end; - -// snowflakes -Readln(f, vobCount); -if vobCount > 0 then - Readln(f, vobFramesCount, vobFrameTicks, vobVelocity, vobFallSpeed); - -// adjust amount of flakes scaled by screen space -vobCount:= longint(vobCount) * cScreenSpace div LAND_WIDTH; - -if (cReducedQuality and rqKillFlakes) <> 0 then - vobCount:= 0; - - -for i:= 0 to Pred(vobCount) do - AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake); - Close(f); {$I+} TryDo(IOResult = 0, 'Bad data or cannot access file ' + cThemeCFGFilename, true);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uLandPainted.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,174 @@ +(* + * Hedgewars, a free turn based strategy game + * Copyright (c) 2010 Andrey Korotaev <unC0Rr@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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + *) + +{$INCLUDE "options.inc"} + +unit uLandPainted; + +interface + +procedure Draw; +procedure initModule; + +implementation +uses uLandGraphics, uConsts, uUtils, SDLh, uCommands, uDebug; + +type PointRec = packed record + X, Y: SmallInt; + flags: byte; + end; + +type + PPointEntry = ^PointEntry; + PointEntry = record + point: PointRec; + next: PPointEntry; + end; + +var pointsListHead, pointsListLast: PPointEntry; + +procedure DrawLineOnLand(X1, Y1, X2, Y2: LongInt); +var eX, eY, dX, dY: LongInt; + i, sX, sY, x, y, d: LongInt; + b: boolean; + len: LongWord; +begin + len:= 0; + if (X1 = X2) and (Y1 = Y2) then + begin + exit + end; + eX:= 0; + eY:= 0; + dX:= X2 - X1; + dY:= Y2 - Y1; + + if (dX > 0) then sX:= 1 + else + if (dX < 0) then + begin + sX:= -1; + dX:= -dX + end else sX:= dX; + + if (dY > 0) then sY:= 1 + else + if (dY < 0) then + begin + sY:= -1; + dY:= -dY + end else sY:= dY; + + if (dX > dY) then d:= dX + else d:= dY; + + x:= X1; + y:= Y1; + + for i:= 0 to d do + begin + inc(eX, dX); + inc(eY, dY); + b:= false; + if (eX > d) then + begin + dec(eX, d); + inc(x, sX); + b:= true + end; + if (eY > d) then + begin + dec(eY, d); + inc(y, sY); + b:= true + end; + if b then + begin + inc(len); + if (len mod 4) = 0 then FillRoundInLand(X, Y, 34, lfBasic) + end + end +end; + +procedure chDraw(var s: shortstring); +var rec: PointRec; + prec: ^PointRec; + pe: PPointEntry; + i, l: byte; +begin + i:= 1; + l:= length(s); + while i < l do + begin + prec:= @s[i]; + rec:= prec^; + rec.X:= SDLNet_Read16(@rec.X); + rec.Y:= SDLNet_Read16(@rec.Y); + + pe:= new(PPointEntry); + if pointsListLast = nil then + pointsListHead:= pe + else + pointsListLast^.next:= pe; + pointsListLast:= pe; + + pe^.point:= rec; + pe^.next:= nil; + + inc(i, 5) + end; +end; + +procedure Draw; +var pe: PPointEntry; + prevPoint: PointRec; +begin + // shutup compiler + prevPoint.X:= 0; + prevPoint.Y:= 0; + + pe:= pointsListHead; + TryDo((pe = nil) or (pe^.point.flags and $80 <> 0), 'Corrupted draw data', true); + + while(pe <> nil) do + begin + if (pe^.point.flags and $80 <> 0) then + begin + {$IFDEF DEBUGFILE}AddFileLog('[DRAW] Move to: ('+inttostr(pe^.point.X)+','+inttostr(pe^.point.Y)+')');{$ENDIF} + FillRoundInLand(pe^.point.X, pe^.point.Y, 34, lfBasic) + end + else + begin + {$IFDEF DEBUGFILE}AddFileLog('[DRAW] Line to: ('+inttostr(pe^.point.X)+','+inttostr(pe^.point.Y)+')');{$ENDIF} + DrawLineOnLand(prevPoint.X, prevPoint.Y, pe^.point.X, pe^.point.Y); + end; + + prevPoint:= pe^.point; + pe:= pe^.next; + end; +end; + +procedure initModule; +begin + pointsListHead:= nil; + pointsListLast:= nil; + + RegisterVariable('draw', vtCommand, @chDraw, false); +end; + +end.
--- a/hedgewars/uLandTexture.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uLandTexture.pas Tue Jan 04 12:53:46 2011 +0100 @@ -28,8 +28,7 @@ procedure DrawLand(dX, dY: LongInt); implementation -uses uMisc, uLand, uStore, uConsts, GLunit; - +uses uConsts, GLunit, uTypes, uVariables, uTextures, uDebug, uRender; const TEXSIZE = 256;
--- a/hedgewars/uLocale.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uLocale.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,37 +20,9 @@ unit uLocale; interface -type TAmmoStrId = (sidNothing, sidGrenade, sidClusterBomb, sidBazooka, sidBee, sidShotgun, - sidPickHammer, sidSkip, sidRope, sidMine, sidDEagle, - sidDynamite, sidBaseballBat, sidFirePunch, sidSeconds, - sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch, - sidGirder, sidTeleport, sidSwitch, sidMortar, sidWhip, - sidKamikaze, sidCake, sidSeduction, sidWatermelon, - sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane, - sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime, - sidLaserSight, sidVampiric, sidSniperRifle, sidJetpack, - sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb, sidSineGun, sidFlamethrower, - sidSMine, sidHammer, sidResurrector, sidDrillStrike); - - TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused, - sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync, - sidNoEndTurn, sidNotYetAvailable, sidRoundSD, sidRoundsSD, sidReady); - - TEventId = (eidDied, eidDrowned, eidRoundStart, eidRoundWin, eidRoundDraw, - eidNewHealthPack, eidNewAmmoPack, eidNewUtilityPack, eidTurnSkipped, eidHurtSelf, - eidHomerun, eidGone); - - TGoalStrId = (gidCaption, gidSubCaption, gidForts, gidLowGravity, gidInvulnerable, - gidVampiric, gidKarma, gidKing, gidPlaceHog, gidArtillery, - gidSolidLand, gidSharedAmmo, gidMineTimer, gidNoMineTimer, gidRandomMineTimer, - gidDamageModifier, gidResetHealth, gidAISurvival, gidInfAttack, gidResetWeps, gidPerHogAmmo); +uses uTypes; const MAX_EVENT_STRINGS = 100; -var trammo: array[TAmmoStrId] of ansistring; // name of the weapon - trammoc: array[TAmmoStrId] of ansistring; // caption of the weapon - trammod: array[TAmmoStrId] of ansistring; // description of the weapon - trmsg: array[TMsgStrId] of ansistring; // message of the event - trgoal: array[TGoalStrId] of ansistring; // message of the goal procedure LoadLocale(FileName: shortstring); function Format(fmt: shortstring; var arg: shortstring): shortstring; @@ -58,7 +30,7 @@ function GetEventString(e: TEventId): ansistring; implementation -uses uMisc, uRandom; +uses uRandom, uUtils, uVariables, uDebug; var trevt: array[TEventId] of array [0..Pred(MAX_EVENT_STRINGS)] of ansistring; trevt_n: array[TEventId] of integer; @@ -72,7 +44,6 @@ loaded: boolean; begin loaded:= false; -trammo[sidNothing]:= ' '; for e:= Low(TEventId) to High(TEventId) do first[e]:= true; {$I-} // iochecks off @@ -97,10 +68,10 @@ TryDo(s[6] = '=', 'Load locale: "=" expected', true); Delete(s, 1, 6); case a of - 0: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammo[TAmmoStrId(b+1)]:= s; + 0: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammo[TAmmoStrId(b)]:= s; 1: if (b >=0) and (b <= ord(High(TMsgStrId))) then trmsg[TMsgStrId(b)]:= s; 2: if (b >=0) and (b <= ord(High(TEventId))) then begin - TryDo(trevt_n[TEventId(b)] < MAX_EVENT_STRINGS, 'Too many event strings in ' + inttostr(a) + ':' + inttostr(b), false); + TryDo(trevt_n[TEventId(b)] < MAX_EVENT_STRINGS, 'Too many event strings in ' + IntToStr(a) + ':' + IntToStr(b), false); if first[TEventId(b)] then begin trevt_n[TEventId(b)]:= 0; @@ -109,8 +80,8 @@ trevt[TEventId(b)][trevt_n[TEventId(b)]]:= s; inc(trevt_n[TEventId(b)]); end; - 3: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammoc[TAmmoStrId(b+1)]:= s; - 4: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammod[TAmmoStrId(b+1)]:= s; + 3: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammoc[TAmmoStrId(b)]:= s; + 4: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammod[TAmmoStrId(b)]:= s; 5: if (b >=0) and (b <= ord(High(TGoalStrId))) then trgoal[TGoalStrId(b)]:= s; end; end;
--- a/hedgewars/uMisc.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uMisc.pas Tue Jan 04 12:53:46 2011 +0100 @@ -21,238 +21,18 @@ unit uMisc; interface -uses SDLh, uConsts, uFloat, GLunit, Math; - -var -/////// init flags /////// - cScreenWidth : LongInt = 1024; - cScreenHeight : LongInt = 768; - cBits : LongInt = 32; - //ipcPort is in uIO - cFullScreen : boolean = false; - isSoundEnabled : boolean = true; - isMusicEnabled : boolean = false; - cLocaleFName : shortstring = 'en.txt'; - cInitVolume : LongInt = 100; - cTimerInterval : LongInt = 8; - PathPrefix : shortstring = './'; - cShowFPS : boolean = false; - cAltDamage : boolean = true; - cReducedQuality : LongWord = rqNone; - //userNick is in uChat - recordFileName : shortstring = ''; - cReadyDelay : Longword = 0; - cLogfileBase : shortstring = 'debug'; -////////////////////////// - - isCursorVisible : boolean; - isTerminated : boolean; - isInLag : boolean; - isPaused : boolean; - - isSEBackup : boolean; - isInMultiShoot : boolean; - isSpeed : boolean; - isFirstFrame : boolean; - - cStereoMode : TStereoMode; - fastUntilLag : boolean; - - GameState : TGameState; - GameType : TGameType; - GameFlags : Longword; - TrainingFlags : Longword; - TurnTimeLeft : Longword; - ReadyTimeLeft : Longword; - cSuddenDTurns : LongInt; - cDamagePercent : LongInt; - cMineDudPercent : LongWord; - cTemplateFilter : LongInt; - cMapGen : LongInt; - cMazeSize : LongInt; - - cHedgehogTurnTime: Longword; - cMinesTime : LongInt; - cMaxAIThinkTime : Longword; - - cHealthCaseProb : LongInt; - cHealthCaseAmount: LongInt; - cWaterRise : LongInt; - cHealthDecrease : LongInt; - - cCloudsNumber : LongInt; - - cTagsMask : byte; - zoom : GLfloat; - ZoomValue : GLfloat; - - cWaterLine : LongInt; - cGearScrEdgesDist: LongInt; +uses SDLh, uConsts, GLunit, uTypes; - GameTicks : LongWord; - TrainingTimeInc : Longword; - TrainingTimeInD : Longword; - TrainingTimeInM : Longword; - TrainingTimeMax : Longword; - - TimeTrialStartTime: Longword; - TimeTrialStopTime : Longword; - - // originally from uConsts - Pathz: array[TPathType] of shortstring; - CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture; - LAND_WIDTH : LongInt; - LAND_HEIGHT : LongInt; - LAND_WIDTH_MASK : LongWord; - LAND_HEIGHT_MASK : LongWord; - cMaxCaptions : LongInt; - - cLeftScreenBorder : LongInt; - cRightScreenBorder : LongInt; - cScreenSpace : LongInt; - - cCaseFactor : Longword; - cLandMines : Longword; - cExplosives : Longword; - - cSeed : shortstring; - cVolumeDelta : LongInt; - cHasFocus : boolean; - cInactDelay : Longword; - - bBetweenTurns : boolean; - bWaterRising : boolean; - - ShowCrosshair : boolean; - CursorMovementX : LongInt; - CursorMovementY : LongInt; - cDrownSpeed : hwFloat; - cDrownSpeedf : float; - cMaxWindSpeed : hwFloat; - cWindSpeed : hwFloat; - cWindSpeedf : float; - cGravity : hwFloat; - cGravityf : float; - cDamageModifier : hwFloat; - cLaserSighting : boolean; - cVampiric : boolean; - cArtillery : boolean; - WeaponTooltipTex : PTexture; - - flagMakeCapture : boolean; - - InitStepsFlags : Longword; - RealTicks : Longword; - AttackBar : LongInt; - - WaterColorArray : array[0..3] of HwColor4f; - - CursorPoint : TPoint; - TargetPoint : TPoint; - - TextureList : PTexture; - - ScreenFade : TScreenFade; - ScreenFadeValue : LongInt; - ScreenFadeSpeed : LongInt; - -{$IFDEF SDL13} - SDLwindow : PSDL_Window; -{$ENDIF} +procedure movecursor(dx, dy: LongInt); +function doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface; +procedure MakeScreenshot(filename: shortstring); +function GetTeamStatString(p: PTeam): shortstring; procedure initModule; procedure freeModule; -procedure SplitBySpace(var a, b: shortstring); -procedure SplitByChar(var a, b: ansistring; c: char); -function EnumToStr(const en : TGearType) : shortstring; overload; -function EnumToStr(const en : TSound) : shortstring; overload; -function EnumToStr(const en : TAmmoType) : shortstring; overload; -function EnumToStr(const en : THogEffect) : shortstring; overload; -procedure movecursor(dx, dy: LongInt); -function hwSign(r: hwFloat): LongInt; inline; -function Min(a, b: LongInt): LongInt; inline; -function Max(a, b: LongInt): LongInt; inline; -procedure OutError(Msg: shortstring; isFatalError: boolean); -procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); inline; -procedure SDLTry(Assert: boolean; isFatal: boolean); -function IntToStr(n: LongInt): shortstring; -function FloatToStr(n: hwFloat): shortstring; -function DxDy2Angle(const _dY, _dX: hwFloat): GLfloat; -function DxDy2Angle32(const _dY, _dX: hwFloat): LongInt; -function DxDy2AttackAngle(const _dY, _dX: hwFloat): LongInt; -(* -procedure AdjustColor(var Color: Longword); -procedure SetKB(n: Longword); -*) -procedure SendKB; -procedure SetLittle(var r: hwFloat); -procedure SendStat(sit: TStatInfoType; s: shortstring); -function Str2PChar(const s: shortstring): PChar; -function NewTexture(width, height: Longword; buf: Pointer): PTexture; -function Surface2Tex(surf: PSDL_Surface; enableClamp: boolean): PTexture; -procedure FreeTexture(tex: PTexture); -function toPowerOf2(i: Longword): Longword; inline; -function DecodeBase64(s: shortstring): shortstring; -function doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface; -function endian(independent: LongWord): LongWord; inline; -{$IFDEF DEBUGFILE} -procedure AddFileLog(s: shortstring); -(* function RectToStr(Rect: TSDL_Rect): shortstring; *) -{$ENDIF} -procedure MakeScreenshot(filename: shortstring); implementation -uses uConsole, uStore, uIO, uSound, typinfo, sysutils, uMobile; - -var KBnum: Longword; -{$IFDEF DEBUGFILE} - f: textfile; -{$ENDIF} - -// should this include "strtolower()" for the split string? -procedure SplitBySpace(var a, b: shortstring); -var i, t: LongInt; -begin -i:= Pos(' ', a); -if i > 0 then - begin - for t:= 1 to Pred(i) do - if (a[t] >= 'A')and(a[t] <= 'Z') then Inc(a[t], 32); - b:= copy(a, i + 1, Length(a) - i); - byte(a[0]):= Pred(i) - end else b:= ''; -end; - -procedure SplitByChar(var a, b: ansistring; c: char); -var i: LongInt; -begin -i:= Pos(c, a); -if i > 0 then - begin - b:= copy(a, i + 1, Length(a) - i); - setlength(a, Pred(i)); - end else b:= ''; -end; - -function EnumToStr(const en : TGearType) : shortstring; overload; -begin -EnumToStr:= GetEnumName(TypeInfo(TGearType), ord(en)) -end; - -function EnumToStr(const en : TSound) : shortstring; overload; -begin -EnumToStr:= GetEnumName(TypeInfo(TSound), ord(en)) -end; - -function EnumToStr(const en : TAmmoType) : shortstring; overload; -begin -EnumToStr:= GetEnumName(TypeInfo(TAmmoType), ord(en)) -end; - -function EnumToStr(const en: THogEffect) : shortstring; overload; -begin - EnumToStr := GetEnumName(TypeInfo(THogEffect), ord(en)) -end; +uses typinfo, sysutils, uVariables; procedure movecursor(dx, dy: LongInt); var x, y: LongInt; @@ -265,328 +45,6 @@ SDL_WarpMouse(x, y); end; -function hwSign(r: hwFloat): LongInt; -begin -// yes, we have negative zero for a reason -if r.isNegative then hwSign:= -1 else hwSign:= 1 -end; - -function Min(a, b: LongInt): LongInt; -begin -if a < b then Min:= a else Min:= b -end; - -function Max(a, b: LongInt): LongInt; -begin -if a > b then Max:= a else Max:= b -end; - -procedure OutError(Msg: shortstring; isFatalError: boolean); -begin -// obsolete? written in WriteLnToConsole() anyway -// {$IFDEF DEBUGFILE}AddFileLog(Msg);{$ENDIF} -WriteLnToConsole(Msg); -if isFatalError then - begin - SendIPC('E' + GetLastConsoleLine); - SDL_Quit; - halt(1) - end -end; - -procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); -begin -if not Assert then OutError(Msg, isFatal) -end; - -procedure SDLTry(Assert: boolean; isFatal: boolean); -begin -if not Assert then OutError(SDL_GetError, isFatal) -end; - -(* -procedure AdjustColor(var Color: Longword); -begin -Color:= SDL_MapRGB(PixelFormat, (Color shr 16) and $FF, (Color shr 8) and $FF, Color and $FF) -end; - -procedure SetKB(n: Longword); -begin -KBnum:= n -end; -*) - - -function IntToStr(n: LongInt): shortstring; -begin -str(n, IntToStr) -end; - -function FloatToStr(n: hwFloat): shortstring; -begin -FloatToStr:= cstr(n) + '_' + inttostr(Lo(n.QWordValue)) -end; - -procedure SetTextureParameters(enableClamp: Boolean); -begin - if enableClamp and ((cReducedQuality and rqClampLess) = 0) then - begin - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) - end; - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) -end; - -function DxDy2Angle(const _dY, _dX: hwFloat): GLfloat; -var dY, dX: Extended; -begin -dY:= _dY.QWordValue / $100000000; -if _dY.isNegative then dY:= - dY; -dX:= _dX.QWordValue / $100000000; -if _dX.isNegative then dX:= - dX; -DxDy2Angle:= arctan2(dY, dX) * 180 / pi -end; - -function DxDy2Angle32(const _dY, _dX: hwFloat): LongInt; -const _16divPI: Extended = 16/pi; -var dY, dX: Extended; -begin -dY:= _dY.QWordValue / $100000000; -if _dY.isNegative then dY:= - dY; -dX:= _dX.QWordValue / $100000000; -if _dX.isNegative then dX:= - dX; -DxDy2Angle32:= trunc(arctan2(dY, dX) * _16divPI) and $1f -end; - -function DxDy2AttackAngle(const _dY, _dX: hwFloat): LongInt; -const MaxAngleDivPI: Extended = cMaxAngle/pi; -var dY, dX: Extended; -begin -dY:= _dY.QWordValue / $100000000; -if _dY.isNegative then dY:= - dY; -dX:= _dX.QWordValue / $100000000; -if _dX.isNegative then dX:= - dX; -DxDy2AttackAngle:= trunc(arctan2(dY, dX) * MaxAngleDivPI) -end; - -procedure SendKB; -var s: shortstring; -begin -if KBnum <> 0 then -begin -s:= 'K' + inttostr(KBnum); -SendIPCRaw(@s, Length(s) + 1) -end -end; - -procedure SetLittle(var r: hwFloat); -begin -r:= SignAs(cLittle, r) -end; - -procedure SendStat(sit: TStatInfoType; s: shortstring); -const stc: array [TStatInfoType] of char = 'rDkKHTPsSB'; -var buf: shortstring; -begin -buf:= 'i' + stc[sit] + s; -SendIPCRaw(@buf[0], length(buf) + 1) -end; - -function Str2PChar(const s: shortstring): PChar; -const CharArray: array[byte] of Char = ''; -begin -CharArray:= s; -CharArray[Length(s)]:= #0; -Str2PChar:= @CharArray -end; - -function isPowerOf2(i: Longword): boolean; -begin -if i = 0 then exit(true); -while (i and 1) = 0 do i:= i shr 1; -isPowerOf2:= (i = 1) -end; - -function toPowerOf2(i: Longword): Longword; -begin -toPowerOf2:= 1; -while (toPowerOf2 < i) do toPowerOf2:= toPowerOf2 shl 1 -end; - -procedure ResetVertexArrays(texture: PTexture); -begin -with texture^ do - begin - vb[0].X:= 0; - vb[0].Y:= 0; - vb[1].X:= w; - vb[1].Y:= 0; - vb[2].X:= w; - vb[2].Y:= h; - vb[3].X:= 0; - vb[3].Y:= h; - - tb[0].X:= 0; - tb[0].Y:= 0; - tb[1].X:= rx; - tb[1].Y:= 0; - tb[2].X:= rx; - tb[2].Y:= ry; - tb[3].X:= 0; - tb[3].Y:= ry - end; -end; - -function NewTexture(width, height: Longword; buf: Pointer): PTexture; -begin -new(NewTexture); -NewTexture^.PrevTexture:= nil; -NewTexture^.NextTexture:= nil; -NewTexture^.Scale:= 1; -if TextureList <> nil then - begin - TextureList^.PrevTexture:= NewTexture; - NewTexture^.NextTexture:= TextureList - end; -TextureList:= NewTexture; - -NewTexture^.w:= width; -NewTexture^.h:= height; -NewTexture^.rx:= 1.0; -NewTexture^.ry:= 1.0; - -ResetVertexArrays(NewTexture); - -glGenTextures(1, @NewTexture^.id); - -glBindTexture(GL_TEXTURE_2D, NewTexture^.id); -glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf); - -SetTextureParameters(true); -end; - -function Surface2Tex(surf: PSDL_Surface; enableClamp: boolean): PTexture; -var tw, th, x, y: Longword; - tmpp: pointer; - fromP4, toP4: PLongWordArray; -begin -new(Surface2Tex); -Surface2Tex^.PrevTexture:= nil; -Surface2Tex^.NextTexture:= nil; -if TextureList <> nil then - begin - TextureList^.PrevTexture:= Surface2Tex; - Surface2Tex^.NextTexture:= TextureList - end; -TextureList:= Surface2Tex; - -Surface2Tex^.w:= surf^.w; -Surface2Tex^.h:= surf^.h; - -if (surf^.format^.BytesPerPixel <> 4) then - begin - TryDo(false, 'Surface2Tex failed, expecting 32 bit surface', true); - Surface2Tex^.id:= 0; - exit - end; - - -glGenTextures(1, @Surface2Tex^.id); - -glBindTexture(GL_TEXTURE_2D, Surface2Tex^.id); - -if SDL_MustLock(surf) then - SDLTry(SDL_LockSurface(surf) >= 0, true); - -if (not SupportNPOTT) and (not (isPowerOf2(Surf^.w) and isPowerOf2(Surf^.h))) then - begin - tw:= toPowerOf2(Surf^.w); - th:= toPowerOf2(Surf^.h); - - Surface2Tex^.rx:= Surf^.w / tw; - Surface2Tex^.ry:= Surf^.h / th; - - GetMem(tmpp, tw * th * surf^.format^.BytesPerPixel); - - fromP4:= Surf^.pixels; - toP4:= tmpp; - - for y:= 0 to Pred(Surf^.h) do - begin - for x:= 0 to Pred(Surf^.w) do toP4^[x]:= fromP4^[x]; - for x:= Surf^.w to Pred(tw) do toP4^[x]:= 0; - toP4:= @(toP4^[tw]); - fromP4:= @(fromP4^[Surf^.pitch div 4]) - end; - - for y:= Surf^.h to Pred(th) do - begin - for x:= 0 to Pred(tw) do toP4^[x]:= 0; - toP4:= @(toP4^[tw]) - end; - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tw, th, 0, GL_RGBA, GL_UNSIGNED_BYTE, tmpp); - - FreeMem(tmpp, tw * th * surf^.format^.BytesPerPixel) - end -else - begin - Surface2Tex^.rx:= 1.0; - Surface2Tex^.ry:= 1.0; - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surf^.w, surf^.h, 0, GL_RGBA, GL_UNSIGNED_BYTE, surf^.pixels); - end; - -ResetVertexArrays(Surface2Tex); - -if SDL_MustLock(surf) then - SDL_UnlockSurface(surf); - -SetTextureParameters(enableClamp); -end; - -procedure FreeTexture(tex: PTexture); -begin - if tex <> nil then - begin - if tex^.NextTexture <> nil then - tex^.NextTexture^.PrevTexture:= tex^.PrevTexture; - if tex^.PrevTexture <> nil then - tex^.PrevTexture^.NextTexture:= tex^.NextTexture - else - TextureList:= tex^.NextTexture; - glDeleteTextures(1, @tex^.id); - Dispose(tex); - end -end; - -function DecodeBase64(s: shortstring): shortstring; -const table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; -var i, t, c: Longword; -begin -c:= 0; -for i:= 1 to Length(s) do - begin - t:= Pos(s[i], table); - if s[i] = '=' then inc(c); - if t > 0 then byte(s[i]):= t - 1 else byte(s[i]):= 0 - end; - -i:= 1; -t:= 1; -while i <= length(s) do - begin - DecodeBase64[t ]:= char((byte(s[i ]) shl 2) or (byte(s[i + 1]) shr 4)); - DecodeBase64[t + 1]:= char((byte(s[i + 1]) shl 4) or (byte(s[i + 2]) shr 2)); - DecodeBase64[t + 2]:= char((byte(s[i + 2]) shl 6) or (byte(s[i + 3]) )); - inc(t, 3); - inc(i, 4) - end; - -if c < 3 then t:= t - c; - -byte(DecodeBase64[0]):= t - 1 -end; procedure MakeScreenshot(filename: shortstring); var p: Pointer; @@ -611,8 +69,6 @@ 0, 0, 0, 0 // number of important colors ); begin -playSound(sndShutter); - // flash ScreenFade:= sfFromWhite; ScreenFadeValue:= sfMax; @@ -660,227 +116,35 @@ FreeMem(p) end; -{$IFDEF DEBUGFILE} -procedure AddFileLog(s: shortstring); -begin -writeln(f, GameTicks: 6, ': ', s); -flush(f) -end; -(* -function RectToStr(Rect: TSDL_Rect): shortstring; -begin -RectToStr:= '(x: ' + inttostr(rect.x) + '; y: ' + inttostr(rect.y) + '; w: ' + inttostr(rect.w) + '; h: ' + inttostr(rect.h) + ')' -end; -*) -{$ENDIF} - function doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface; {* for more information http://www.idevgames.com/forum/showpost.php?p=85864&postcount=7 *} var convertedSurf: PSDL_Surface = nil; begin if (tmpsurf^.format^.bitsperpixel = 24) or ((tmpsurf^.format^.bitsperpixel = 32) and (tmpsurf^.format^.rshift > tmpsurf^.format^.bshift)) then - begin + begin convertedSurf:= SDL_ConvertSurface(tmpsurf, @conversionFormat, SDL_SWSURFACE); SDL_FreeSurface(tmpsurf); exit(convertedSurf); - end; + end; exit(tmpsurf); end; -function endian(independent: LongWord): LongWord; inline; + +function GetTeamStatString(p: PTeam): shortstring; +var s: ansistring; begin -{$IFDEF ENDIAN_LITTLE} -endian:= independent; -{$ELSE} -endian:= (((independent and $FF000000) shr 24) or - ((independent and $00FF0000) shr 8) or - ((independent and $0000FF00) shl 8) or - ((independent and $000000FF) shl 24)) -{$ENDIF} + s:= p^.TeamName + ':' + IntToStr(p^.TeamHealth) + ':'; + GetTeamStatString:= s; end; - procedure initModule; -{$IFDEF DEBUGFILE}{$IFNDEF IPHONEOS}var i: LongInt;{$ENDIF}{$ENDIF} begin - Pathz:= cPathz; - {* REFERENCE - 4096 -> $FFFFF000 - 2048 -> $FFFFF800 - 1024 -> $FFFFFC00 - 512 -> $FFFFFE00 *} - if (cReducedQuality and rqLowRes) <> 0 then - begin - LAND_WIDTH:= 2048; - LAND_HEIGHT:= 1024; - LAND_WIDTH_MASK:= $FFFFF800; - LAND_HEIGHT_MASK:= $FFFFFC00; - end - else - begin - LAND_WIDTH:= 4096; - LAND_HEIGHT:= 2048; - LAND_WIDTH_MASK:= $FFFFF000; - LAND_HEIGHT_MASK:= $FFFFF800 - end; - - cDrownSpeed.QWordValue := 257698038; // 0.06 - cDrownSpeedf := 0.06; - cMaxWindSpeed.QWordValue:= 1073742; // 0.00025 - cWindSpeed.QWordValue := 429496; // 0.0001 - cWindSpeedf := 0.0001; - cGravity := cMaxWindSpeed * 2; - cGravityf := 0.00025 * 2; - cDamageModifier := _1; - TargetPoint := cTargetPointRef; - TextureList := nil; - - // int, longint longword and byte - CursorMovementX := 0; - CursorMovementY := 0; - GameTicks := 0; - TrainingTimeInc := 10000; - TrainingTimeInD := 500; - TrainingTimeInM := 5000; - TrainingTimeMax := 60000; - TimeTrialStartTime := 0; - TimeTrialStopTime := 0; - cWaterLine := LAND_HEIGHT; - cGearScrEdgesDist := 240; - - GameFlags := 0; - TrainingFlags := 0; - TurnTimeLeft := 0; - cSuddenDTurns := 15; - cDamagePercent := 100; - cMineDudPercent := 0; - cTemplateFilter := 0; - cMapGen := 0; // MAPGEN_REGULAR - cMazeSize := 0; - cHedgehogTurnTime := 45000; - cMinesTime := 3; - cMaxAIThinkTime := 9000; - cCloudsNumber := 9; - cHealthCaseProb := 35; - cHealthCaseAmount := 25; - cWaterRise := 47; - cHealthDecrease := 5; - - cTagsMask := 0; - KBnum := 0; - InitStepsFlags := 0; - RealTicks := 0; - AttackBar := 0; // 0 - none, 1 - just bar at the right-down corner, 2 - from weapon - cCaseFactor := 5; {0..9} - cLandMines := 4; - cExplosives := 2; - - GameState := Low(TGameState); - GameType := gmtLocal; - zoom := cDefaultZoomLevel; - ZoomValue := cDefaultZoomLevel; - WeaponTooltipTex:= nil; - cLaserSighting := false; - cVampiric := false; - cArtillery := false; - flagMakeCapture := false; - bBetweenTurns := false; - bWaterRising := false; - isCursorVisible := false; - isTerminated := false; - isInLag := false; - isPaused := false; - isInMultiShoot := false; - isSpeed := false; - fastUntilLag := false; - isFirstFrame := true; - isSEBackup := true; - cSeed := ''; - cVolumeDelta := 0; - cHasFocus := true; - cInactDelay := 1250; - ReadyTimeLeft := 0; - - ScreenFade := sfNone; - -{$IFDEF SDL13} - SDLwindow := nil; -{$ENDIF} - - // those values still aren't perfect - cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth); - cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH); - cScreenSpace:= cRightScreenBorder - cLeftScreenBorder; - - if isPhone() then - cMaxCaptions:= 3 - else - cMaxCaptions:= 4; - -{$IFDEF DEBUGFILE} -{$I-} -{$IFDEF IPHONEOS} - Assign(f,'../Documents/hw-' + cLogfileBase + '.log'); - Rewrite(f); -{$ELSE} - if (ParamStr(1) <> '') and (ParamStr(2) <> '') then - if (ParamCount <> 3) and (ParamCount <> cDefaultParamNum) then - begin - for i:= 0 to 7 do - begin - assign(f, ExtractFileDir(ParamStr(2)) + '/' + cLogfileBase + inttostr(i) + '.log'); - rewrite(f); - if IOResult = 0 then break; - end; - if IOResult <> 0 then f:= stderr; // if everything fails, write to stderr - end - else - begin - for i:= 0 to 7 do - begin - assign(f, ParamStr(1) + '/Logs/' + cLogfileBase + inttostr(i) + '.log'); - rewrite(f); - if IOResult = 0 then break; - end; - if IOResult <> 0 then f:= stderr; // if everything fails, write to stderr - end - else - f:= stderr; -{$ENDIF} -{$I+} -{$ENDIF} end; procedure freeModule; begin recordFileName:= ''; - while TextureList <> nil do FreeTexture(TextureList); - -{$IFDEF DEBUGFILE} - writeln(f, 'halt at ', GameTicks, ' ticks. TurnTimeLeft = ', TurnTimeLeft); - flush(f); - close(f); -{$ENDIF} - - // re-init flags so they will always contain safe values - cScreenWidth := 1024; - cScreenHeight := 768; - cBits := 32; - //ipcPort is in uIO - cFullScreen := false; - isSoundEnabled := true; - isMusicEnabled := false; - cLocaleFName := 'en.txt'; - cInitVolume := 100; - cTimerInterval := 8; - PathPrefix := './'; - cShowFPS := false; - cAltDamage := true; - cReducedQuality := rqNone; - //userNick is in uChat - recordFileName := ''; - cReadyDelay := 0; end; end.
--- a/hedgewars/uMobile.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uMobile.pas Tue Jan 04 12:53:46 2011 +0100 @@ -30,9 +30,11 @@ procedure replayFinished; cdecl; external; procedure updateVisualsNewTurn; cdecl; external; function isApplePhone: Boolean; cdecl; external; +function isAppleDeviceMuted: Boolean; cdecl; external; procedure AudioServicesPlaySystemSound(num: LongInt); cdecl; external; {$ENDIF} function isPhone: Boolean; inline; +function isDeviceMute: Boolean; inline; procedure performRumble; inline; procedure perfExt_AddProgress; inline; procedure perfExt_FinishProgress; inline; @@ -42,7 +44,7 @@ procedure perfExt_SaveFinishedSynching; inline; implementation -uses uTeams, uConsole; +uses uVariables; function isPhone: Boolean; inline; begin @@ -52,6 +54,14 @@ exit(false); end; +function isDeviceMute: Boolean; inline; +begin +{$IFDEF IPHONEOS} +// exit(isAppleDeviceMuted()); +{$ENDIF} + exit(false); +end; + procedure performRumble; inline; begin {$IFDEF IPHONEOS} @@ -77,7 +87,9 @@ procedure perfExt_AmmoUpdate; // don't inline begin {$IFDEF IPHONEOS} - if (CurrentTeam^.ExtDriven) or (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then + if (CurrentTeam = nil) or + (CurrentTeam^.ExtDriven) or + (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then exit(); // the other way around throws a compiler error updateVisualsNewTurn(); {$ENDIF}
--- a/hedgewars/uRandom.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uRandom.pas Tue Jan 04 12:53:46 2011 +0100 @@ -30,12 +30,8 @@ function GetRandom: hwFloat; overload; function GetRandom(m: LongWord): LongWord; overload; function rndSign(num: hwFloat): hwFloat; -{$IFDEF DEBUGFILE} -procedure DumpBuffer; -{$ENDIF} implementation -uses uMisc; var cirbuf: array[0..63] of Longword; n: byte; @@ -62,7 +58,7 @@ cirbuf[i]:= byte(Seed[i + 1]); for i:= Length(Seed) to 54 do - cirbuf[i]:= $A98765 + (cNetProtoVersion * 2); // odd number + cirbuf[i]:= $A98765 + 68; // odd number for i:= 0 to 1023 do GetNext end; @@ -76,7 +72,6 @@ function GetRandom(m: LongWord): LongWord; begin -TryDo((m > 0),'GetRandom(0) called! Please report this to the developers!',true); GetNext; GetRandom:= GetNext mod m end; @@ -87,15 +82,6 @@ rndSign:= num end; -{$IFDEF DEBUGFILE} -procedure DumpBuffer; -var i: LongInt; -begin -for i:= 0 to 63 do - AddFileLog('[' + inttostr(i) + '] = ' + inttostr(cirbuf[i])) -end; -{$ENDIF} - procedure initModule; begin n:= 54;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uRender.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,450 @@ +{$INCLUDE "options.inc"} +unit uRender; + +interface + +uses SDLh, uTypes, GLunit; + +procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt); +procedure DrawFromRect(X, Y, W, H: LongInt; r: PSDL_Rect; SourceTexture: PTexture); +procedure DrawFromRect(X, Y: LongInt; r: PSDL_Rect; SourceTexture: PTexture); +procedure DrawSprite (Sprite: TSprite; X, Y, Frame: LongInt); +procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt); +procedure DrawSpriteClipped(Sprite: TSprite; X, Y, TopY, RightX, BottomY, LeftX: LongInt); +procedure DrawTexture(X, Y: LongInt; Texture: PTexture; Scale: GLfloat = 1.0); +procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, w, h: LongInt); +procedure DrawRotatedTextureF(Texture: PTexture; Scale, OffsetX, OffsetY: GLfloat; X, Y, Frame, Dir, w, h: LongInt; Angle: real); +procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real); +procedure DrawRotatedF(Sprite: TSprite; X, Y, Frame, Dir: LongInt; Angle: real); +procedure DrawRotatedTex(Tex: PTexture; hw, hh, X, Y, Dir: LongInt; Angle: real); +procedure DrawCentered(X, Top: LongInt; Source: PTexture); +procedure DrawLine(X0, Y0, X1, Y1, Width: Single; r, g, b, a: Byte); +procedure DrawFillRect(r: TSDL_Rect); +procedure DrawCircle(X, Y, Radius, Width: LongInt; r, g, b, a: Byte); +procedure DrawCircle(X, Y, Radius, Width: LongInt); +procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real); +procedure Tint(r, g, b, a: Byte); inline; +procedure Tint(c: Longword); inline; + +var + HHTexture: PTexture; + +implementation +uses uVariables; +var + lastTint: Longword; + +procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt); +begin +r.y:= r.y + Height * Position; +r.h:= Height; +DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture) +end; + +procedure DrawFromRect(X, Y: LongInt; r: PSDL_Rect; SourceTexture: PTexture); +begin +DrawFromRect(X, Y, r^.w, r^.h, r, SourceTexture) +end; + +procedure DrawFromRect(X, Y, W, H: LongInt; r: PSDL_Rect; SourceTexture: PTexture); +var rr: TSDL_Rect; + _l, _r, _t, _b: real; + VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; +begin +if (SourceTexture^.h = 0) or (SourceTexture^.w = 0) then exit; + +// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) +if (abs(X) > W) and ((abs(X + W / 2) - W / 2) > cScreenWidth / cScaleFactor) then + exit; +if (abs(Y) > H) and ((abs(Y + H / 2 - (0.5 * cScreenHeight)) - H / 2) > cScreenHeight / cScaleFactor) then + exit; + +rr.x:= X; +rr.y:= Y; +rr.w:= W; +rr.h:= H; + +_l:= r^.x / SourceTexture^.w * SourceTexture^.rx; +_r:= (r^.x + r^.w) / SourceTexture^.w * SourceTexture^.rx; +_t:= r^.y / SourceTexture^.h * SourceTexture^.ry; +_b:= (r^.y + r^.h) / SourceTexture^.h * SourceTexture^.ry; + +glBindTexture(GL_TEXTURE_2D, SourceTexture^.id); + +VertexBuffer[0].X:= X; +VertexBuffer[0].Y:= Y; +VertexBuffer[1].X:= rr.w + X; +VertexBuffer[1].Y:= Y; +VertexBuffer[2].X:= rr.w + X; +VertexBuffer[2].Y:= rr.h + Y; +VertexBuffer[3].X:= X; +VertexBuffer[3].Y:= rr.h + Y; + +TextureBuffer[0].X:= _l; +TextureBuffer[0].Y:= _t; +TextureBuffer[1].X:= _r; +TextureBuffer[1].Y:= _t; +TextureBuffer[2].X:= _r; +TextureBuffer[2].Y:= _b; +TextureBuffer[3].X:= _l; +TextureBuffer[3].Y:= _b; + + +glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); +glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); +glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); +end; + + +procedure DrawTexture(X, Y: LongInt; Texture: PTexture; Scale: GLfloat); +begin + +glPushMatrix; +glTranslatef(X, Y, 0); +glScalef(Scale, Scale, 1); + +glBindTexture(GL_TEXTURE_2D, Texture^.id); + +glVertexPointer(2, GL_FLOAT, 0, @Texture^.vb); +glTexCoordPointer(2, GL_FLOAT, 0, @Texture^.tb); +glDrawArrays(GL_TRIANGLE_FAN, 0, Length(Texture^.vb)); + +glPopMatrix +end; + +procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, w, h: LongInt); +begin + DrawRotatedTextureF(Texture, Scale, 0, 0, X, Y, Frame, Dir, w, h, 0) +end; + +procedure DrawRotatedTextureF(Texture: PTexture; Scale, OffsetX, OffsetY: GLfloat; X, Y, Frame, Dir, w, h: LongInt; Angle: real); +var ft, fb, fl, fr: GLfloat; + hw, nx, ny: LongInt; + VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; +begin +// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) +if (abs(X) > W) and ((abs(X + dir * OffsetX) - W / 2) * cScaleFactor > cScreenWidth) then + exit; +if (abs(Y) > H) and ((abs(Y + OffsetY - (0.5 * cScreenHeight)) - W / 2) * cScaleFactor > cScreenHeight) then + exit; + +glPushMatrix; +glTranslatef(X, Y, 0); + +if Dir < 0 then + glRotatef(Angle, 0, 0, -1) +else + glRotatef(Angle, 0, 0, 1); + +glTranslatef(Dir*OffsetX, OffsetY, 0); +glScalef(Scale, Scale, 1); + +// Any reason for this call? And why only in t direction, not s? +//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + +if Dir < 0 then + hw:= w div -2 +else + hw:= w div 2; + +nx:= round(Texture^.w / w); // number of horizontal frames +ny:= round(Texture^.h / h); // number of vertical frames + +ft:= (Frame mod ny) * Texture^.ry / ny; +fb:= ((Frame mod ny) + 1) * Texture^.ry / ny; +fl:= (Frame div ny) * Texture^.rx / nx; +fr:= ((Frame div ny) + 1) * Texture^.rx / nx; + +glBindTexture(GL_TEXTURE_2D, Texture^.id); + +VertexBuffer[0].X:= -hw; +VertexBuffer[0].Y:= w / -2; +VertexBuffer[1].X:= hw; +VertexBuffer[1].Y:= w / -2; +VertexBuffer[2].X:= hw; +VertexBuffer[2].Y:= w / 2; +VertexBuffer[3].X:= -hw; +VertexBuffer[3].Y:= w / 2; + +TextureBuffer[0].X:= fl; +TextureBuffer[0].Y:= ft; +TextureBuffer[1].X:= fr; +TextureBuffer[1].Y:= ft; +TextureBuffer[2].X:= fr; +TextureBuffer[2].Y:= fb; +TextureBuffer[3].X:= fl; +TextureBuffer[3].Y:= fb; + +glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); +glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); +glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); + +glPopMatrix +end; + +procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real); +begin + DrawRotatedTex(SpritesData[Sprite].Texture, + SpritesData[Sprite].Width, + SpritesData[Sprite].Height, + X, Y, Dir, Angle) +end; + +procedure DrawRotatedF(Sprite: TSprite; X, Y, Frame, Dir: LongInt; Angle: real); +begin +glPushMatrix; +glTranslatef(X, Y, 0); + +if Dir < 0 then + glRotatef(Angle, 0, 0, -1) +else + glRotatef(Angle, 0, 0, 1); +if Dir < 0 then glScalef(-1.0, 1.0, 1.0); + +DrawSprite(Sprite, -SpritesData[Sprite].Width div 2, -SpritesData[Sprite].Height div 2, Frame); + +glPopMatrix +end; + +procedure DrawRotatedTex(Tex: PTexture; hw, hh, X, Y, Dir: LongInt; Angle: real); +var VertexBuffer: array [0..3] of TVertex2f; +begin +// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) +if (abs(X) > 2 * hw) and ((abs(X) - hw) > cScreenWidth / cScaleFactor) then + exit; +if (abs(Y) > 2 * hh) and ((abs(Y - 0.5 * cScreenHeight) - hh) > cScreenHeight / cScaleFactor) then + exit; + +glPushMatrix; +glTranslatef(X, Y, 0); + +if Dir < 0 then + begin + hw:= - hw; + glRotatef(Angle, 0, 0, -1); + end else + glRotatef(Angle, 0, 0, 1); + + +glBindTexture(GL_TEXTURE_2D, Tex^.id); + +VertexBuffer[0].X:= -hw; +VertexBuffer[0].Y:= -hh; +VertexBuffer[1].X:= hw; +VertexBuffer[1].Y:= -hh; +VertexBuffer[2].X:= hw; +VertexBuffer[2].Y:= hh; +VertexBuffer[3].X:= -hw; +VertexBuffer[3].Y:= hh; + +glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); +glTexCoordPointer(2, GL_FLOAT, 0, @Tex^.tb); +glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); + +glPopMatrix +end; + +procedure DrawSprite (Sprite: TSprite; X, Y, Frame: LongInt); +var row, col, numFramesFirstCol: LongInt; +begin +numFramesFirstCol:= SpritesData[Sprite].imageHeight div SpritesData[Sprite].Height; +row:= Frame mod numFramesFirstCol; +col:= Frame div numFramesFirstCol; +DrawSprite2 (Sprite, X, Y, col, row); +end; + +procedure DrawSpriteClipped(Sprite: TSprite; X, Y, TopY, RightX, BottomY, LeftX: LongInt); +var r: TSDL_Rect; +begin +r.x:= 0; +r.y:= 0; +r.w:= SpritesData[Sprite].Width; +r.h:= SpritesData[Sprite].Height; + +if (X < LeftX) then + r.x:= LeftX - X; +if (Y < TopY) then + r.y:= TopY - Y; + +if (Y + SpritesData[Sprite].Height > BottomY) then + r.h:= BottomY - Y + 1; +if (X + SpritesData[Sprite].Width > RightX) then + r.w:= RightX - X + 1; + +dec(r.h, r.y); +dec(r.w, r.x); + +DrawFromRect(X + r.x, Y + r.y, @r, SpritesData[Sprite].Texture) +end; + +procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt); +var r: TSDL_Rect; +begin + r.x:= FrameX * SpritesData[Sprite].Width; + r.w:= SpritesData[Sprite].Width; + r.y:= FrameY * SpritesData[Sprite].Height; + r.h:= SpritesData[Sprite].Height; + DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture) +end; + +procedure DrawCentered(X, Top: LongInt; Source: PTexture); +var scale: GLfloat; +begin + if (Source^.w + 20) > cScreenWidth then + scale:= cScreenWidth / (Source^.w + 20) + else + scale:= 1.0; + DrawTexture(X - round(Source^.w * scale) div 2, Top, Source, scale) +end; + +procedure DrawLine(X0, Y0, X1, Y1, Width: Single; r, g, b, a: Byte); +var VertexBuffer: array [0..3] of TVertex2f; +begin + glDisable(GL_TEXTURE_2D); + glEnable(GL_LINE_SMOOTH); + + glPushMatrix; + glTranslatef(WorldDx, WorldDy, 0); + glLineWidth(Width); + + Tint(r, g, b, a); + VertexBuffer[0].X:= X0; + VertexBuffer[0].Y:= Y0; + VertexBuffer[1].X:= X1; + VertexBuffer[1].Y:= Y1; + + glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); + glDrawArrays(GL_LINES, 0, Length(VertexBuffer)); + Tint($FF, $FF, $FF, $FF); + + glPopMatrix; + + glEnable(GL_TEXTURE_2D); + glDisable(GL_LINE_SMOOTH); +end; + +procedure DrawFillRect(r: TSDL_Rect); +var VertexBuffer: array [0..3] of TVertex2f; +begin +// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) +if (abs(r.x) > r.w) and ((abs(r.x + r.w / 2) - r.w / 2) * cScaleFactor > cScreenWidth) then + exit; +if (abs(r.y) > r.h) and ((abs(r.y + r.h / 2 - (0.5 * cScreenHeight)) - r.h / 2) * cScaleFactor > cScreenHeight) then + exit; + +glDisable(GL_TEXTURE_2D); + +Tint($00, $00, $00, $80); + +VertexBuffer[0].X:= r.x; +VertexBuffer[0].Y:= r.y; +VertexBuffer[1].X:= r.x + r.w; +VertexBuffer[1].Y:= r.y; +VertexBuffer[2].X:= r.x + r.w; +VertexBuffer[2].Y:= r.y + r.h; +VertexBuffer[3].X:= r.x; +VertexBuffer[3].Y:= r.y + r.h; + +glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); +glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); + +Tint($FF, $FF, $FF, $FF); +glEnable(GL_TEXTURE_2D) +end; + +procedure DrawCircle(X, Y, Radius, Width: LongInt; r, g, b, a: Byte); +begin + Tint(r, g, b, a); + DrawCircle(X, Y, Radius, Width); + Tint($FF, $FF, $FF, $FF); +end; + +procedure DrawCircle(X, Y, Radius, Width: LongInt); +var + i: LongInt; + CircleVertex: array [0..359] of TVertex2f; +begin + for i := 0 to 359 do begin + CircleVertex[i].X := X + Radius*cos(i*pi/180); + CircleVertex[i].Y := Y + Radius*sin(i*pi/180); + end; + glDisable(GL_TEXTURE_2D); + glEnable(GL_LINE_SMOOTH); + glPushMatrix; + glLineWidth(Width); + glVertexPointer(2, GL_FLOAT, 0, @CircleVertex[0]); + glDrawArrays(GL_LINE_LOOP, 0, 360); + glPopMatrix; + glEnable(GL_TEXTURE_2D); + glDisable(GL_LINE_SMOOTH); +end; + + +procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real); +const VertexBuffer: array [0..3] of TVertex2f = ( + (x: -16; y: -16), + (x: 16; y: -16), + (x: 16; y: 16), + (x: -16; y: 16)); +var l, r, t, b: real; + TextureBuffer: array [0..3] of TVertex2f; +begin + // don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) + if (abs(X) > 32) and ((abs(X) - 16) * cScaleFactor > cScreenWidth) then + exit; + if (abs(Y) > 32) and ((abs(Y - 0.5 * cScreenHeight) - 16) * cScaleFactor > cScreenHeight) then + exit; + + t:= Pos * 32 / HHTexture^.h; + b:= (Pos + 1) * 32 / HHTexture^.h; + + if Dir = -1 then + begin + l:= (Step + 1) * 32 / HHTexture^.w; + r:= Step * 32 / HHTexture^.w + end else + begin + l:= Step * 32 / HHTexture^.w; + r:= (Step + 1) * 32 / HHTexture^.w + end; + + + glPushMatrix(); + glTranslatef(X, Y, 0); + glRotatef(Angle, 0, 0, 1); + + glBindTexture(GL_TEXTURE_2D, HHTexture^.id); + + TextureBuffer[0].X:= l; + TextureBuffer[0].Y:= t; + TextureBuffer[1].X:= r; + TextureBuffer[1].Y:= t; + TextureBuffer[2].X:= r; + TextureBuffer[2].Y:= b; + TextureBuffer[3].X:= l; + TextureBuffer[3].Y:= b; + + glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); + glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); + glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); + + glPopMatrix +end; + + +procedure Tint(r, g, b, a: Byte); inline; +var nc: Longword; +begin +nc:= (a shl 24) or (b shl 16) or (g shl 8) or r; +if nc = lastTint then + exit; +glColor4ub(r, g, b, a); +lastTint:= nc; +end; + +procedure Tint(c: Longword); inline; +begin +Tint(((c shr 24) and $FF), ((c shr 16) and $FF), (c shr 8) and $FF, (c and $FF)) +end; + +end.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uRenderUtils.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,356 @@ +{$INCLUDE "options.inc"} +unit uRenderUtils; + +interface +uses SDLh, uTypes; + +procedure flipSurface(Surface: PSDL_Surface; Vertical: Boolean); +procedure copyRotatedSurface(src, dest: PSDL_Surface); // this is necessary since width/height are read only in SDL +procedure copyToXY(src, dest: PSDL_Surface; destX, destY: LongInt); +function RenderStringTex(s: ansistring; Color: Longword; font: THWFont): PTexture; +function RenderSpeechBubbleTex(s: ansistring; SpeechType: Longword; font: THWFont): PTexture; +procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; Clear: boolean); + +implementation +uses uUtils, uVariables, uConsts, uTextures, sysutils, uDebug; + +procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; Clear: boolean); +var r: TSDL_Rect; +begin + r:= rect^; + if Clear then SDL_FillRect(Surface, @r, 0); + + BorderColor:= SDL_MapRGB(Surface^.format, BorderColor shr 16, BorderColor shr 8, BorderColor and $FF); + FillColor:= SDL_MapRGB(Surface^.format, FillColor shr 16, FillColor shr 8, FillColor and $FF); + + r.y:= rect^.y + 1; + r.h:= rect^.h - 2; + SDL_FillRect(Surface, @r, BorderColor); + r.x:= rect^.x + 1; + r.w:= rect^.w - 2; + r.y:= rect^.y; + r.h:= rect^.h; + SDL_FillRect(Surface, @r, BorderColor); + r.x:= rect^.x + 2; + r.y:= rect^.y + 1; + r.w:= rect^.w - 4; + r.h:= rect^.h - 2; + SDL_FillRect(Surface, @r, FillColor); + r.x:= rect^.x + 1; + r.y:= rect^.y + 2; + r.w:= rect^.w - 2; + r.h:= rect^.h - 4; + SDL_FillRect(Surface, @r, FillColor) +end; + +function WriteInRoundRect(Surface: PSDL_Surface; X, Y: LongInt; Color: LongWord; Font: THWFont; s: ansistring): TSDL_Rect; +var w, h: LongInt; + tmpsurf: PSDL_Surface; + clr: TSDL_Color; + finalRect: TSDL_Rect; +begin + TTF_SizeUTF8(Fontz[Font].Handle, Str2PChar(s), w, h); + finalRect.x:= X; + finalRect.y:= Y; + finalRect.w:= w + FontBorder * 2 + 4; + finalRect.h:= h + FontBorder * 2; + DrawRoundRect(@finalRect, cWhiteColor, endian(cNearBlackColorChannels.value), Surface, true); + clr.r:= (Color shr 16) and $FF; + clr.g:= (Color shr 8) and $FF; + clr.b:= Color and $FF; + tmpsurf:= TTF_RenderUTF8_Blended(Fontz[Font].Handle, Str2PChar(s), clr); + finalRect.x:= X + FontBorder + 2; + finalRect.y:= Y + FontBorder; + SDLTry(tmpsurf <> nil, true); + SDL_UpperBlit(tmpsurf, nil, Surface, @finalRect); + SDL_FreeSurface(tmpsurf); + finalRect.x:= X; + finalRect.y:= Y; + finalRect.w:= w + FontBorder * 2 + 4; + finalRect.h:= h + FontBorder * 2; + WriteInRoundRect:= finalRect; +end; + +procedure flipSurface(Surface: PSDL_Surface; Vertical: Boolean); +var y, x, i, j: LongInt; + tmpPixel: Longword; + pixels: PLongWordArray; +begin + TryDo(Surface^.format^.BytesPerPixel = 4, 'flipSurface failed, expecting 32 bit surface', true); + pixels:= Surface^.pixels; + if Vertical then + for y := 0 to (Surface^.h div 2) - 1 do + for x := 0 to Surface^.w - 1 do + begin + i:= y * Surface^.w + x; + j:= (Surface^.h - y - 1) * Surface^.w + x; + tmpPixel:= pixels^[i]; + pixels^[i]:= pixels^[j]; + pixels^[j]:= tmpPixel; + end + else + for x := 0 to (Surface^.w div 2) - 1 do + for y := 0 to Surface^.h -1 do + begin + i:= y*Surface^.w + x; + j:= y*Surface^.w + (Surface^.w - x - 1); + tmpPixel:= pixels^[i]; + pixels^[i]:= pixels^[j]; + pixels^[j]:= tmpPixel; + end; +end; + +procedure copyToXY(src, dest: PSDL_Surface; destX, destY: LongInt); +var srcX, srcY, i, j, maxDest: LongInt; + srcPixels, destPixels: PLongWordArray; + r0, g0, b0, a0, r1, g1, b1, a1: Byte; +begin + maxDest:= (dest^.pitch div 4) * dest^.h; + srcPixels:= src^.pixels; + destPixels:= dest^.pixels; + + for srcX:= 0 to src^.w - 1 do + for srcY:= 0 to src^.h - 1 do + begin + i:= (destY + srcY) * (dest^.pitch div 4) + destX + srcX; + j:= srcY * (src^.pitch div 4) + srcX; + if (i < maxDest) and (srcPixels^[j] and AMask <> 0) then + begin + SDL_GetRGBA(destPixels^[i], dest^.format, @r0, @g0, @b0, @a0); + SDL_GetRGBA(srcPixels^[j], src^.format, @r1, @g1, @b1, @a1); + r0:= (r0 * (255 - LongInt(a1)) + r1 * LongInt(a1)) div 255; + g0:= (g0 * (255 - LongInt(a1)) + g1 * LongInt(a1)) div 255; + b0:= (b0 * (255 - LongInt(a1)) + b1 * LongInt(a1)) div 255; + a0:= (a0 * (255 - LongInt(a1)) + a1 * LongInt(a1)) div 255; + destPixels^[i]:= SDL_MapRGBA(dest^.format, r0, g0, b0, a0); + end; + end; +end; + +procedure copyRotatedSurface(src, dest: PSDL_Surface); // this is necessary since width/height are read only in SDL, apparently +var y, x, i, j: LongInt; + srcPixels, destPixels: PLongWordArray; +begin + TryDo(src^.format^.BytesPerPixel = 4, 'rotateSurface failed, expecting 32 bit surface', true); + TryDo(dest^.format^.BytesPerPixel = 4, 'rotateSurface failed, expecting 32 bit surface', true); + + srcPixels:= src^.pixels; + destPixels:= dest^.pixels; + + j:= 0; + for x := 0 to src^.w - 1 do + for y := 0 to src^.h - 1 do + begin + i:= (src^.h - 1 - y) * (src^.pitch div 4) + x; + destPixels^[j]:= srcPixels^[i]; + inc(j) + end; +end; + +function RenderStringTex(s: ansistring; Color: Longword; font: THWFont): PTexture; +var w, h: LongInt; + finalSurface: PSDL_Surface; +begin + if length(s) = 0 then s:= ' '; + font:= CheckCJKFont(s, font); + w:= 0; h:= 0; // avoid compiler hints + TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(s), w, h); + + finalSurface:= SDL_CreateRGBSurface(SDL_SWSURFACE, w + FontBorder * 2 + 4, h + FontBorder * 2, + 32, RMask, GMask, BMask, AMask); + + TryDo(finalSurface <> nil, 'RenderString: fail to create surface', true); + + WriteInRoundRect(finalSurface, 0, 0, Color, font, s); + + TryDo(SDL_SetColorKey(finalSurface, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); + + RenderStringTex:= Surface2Tex(finalSurface, false); + + SDL_FreeSurface(finalSurface); +end; + + +function RenderSpeechBubbleTex(s: ansistring; SpeechType: Longword; font: THWFont): PTexture; +var textWidth, textHeight, x, y, w, h, i, j, pos, prevpos, line, numLines, edgeWidth, edgeHeight, cornerWidth, cornerHeight: LongInt; + finalSurface, tmpsurf, rotatedEdge: PSDL_Surface; + rect: TSDL_Rect; + chars: set of char = [#9,' ',';',':','?','!',',']; + substr: shortstring; + edge, corner, tail: TSPrite; +begin + case SpeechType of + 1: begin; + edge:= sprSpeechEdge; + corner:= sprSpeechCorner; + tail:= sprSpeechTail; + end; + 2: begin; + edge:= sprThoughtEdge; + corner:= sprThoughtCorner; + tail:= sprThoughtTail; + end; + 3: begin; + edge:= sprShoutEdge; + corner:= sprShoutCorner; + tail:= sprShoutTail; + end; + end; + edgeHeight:= SpritesData[edge].Height; + edgeWidth:= SpritesData[edge].Width; + cornerWidth:= SpritesData[corner].Width; + cornerHeight:= SpritesData[corner].Height; + // This one screws up WrapText + //s:= 'This is the song that never ends. ''cause it goes on and on my friends. Some people, started singing it not knowing what it was. And they''ll just go on singing it forever just because... This is the song that never ends...'; + // This one does not + //s:= 'This is the song that never ends. cause it goes on and on my friends. Some people, started singing it not knowing what it was. And they will go on singing it forever just because... This is the song that never ends... '; + + numLines:= 0; + + if length(s) = 0 then s:= '...'; + font:= CheckCJKFont(s, font); + w:= 0; h:= 0; // avoid compiler hints + TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(s), w, h); + if w<8 then w:= 8; + j:= 0; + if (length(s) > 20) then + begin + w:= 0; + i:= round(Sqrt(length(s)) * 2); + s:= WrapText(s, #1, chars, i); + pos:= 1; prevpos:= 0; line:= 0; + // Find the longest line for the purposes of centring the text. Font dependant. + while pos <= length(s) do + begin + if (s[pos] = #1) or (pos = length(s)) then + begin + inc(numlines); + if s[pos] <> #1 then inc(pos); + while s[prevpos+1] = ' ' do inc(prevpos); + substr:= copy(s, prevpos+1, pos-prevpos-1); + i:= 0; j:= 0; + TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(substr), i, j); + if i > w then w:= i; + prevpos:= pos; + end; + inc(pos); + end; + end + else numLines := 1; + + textWidth:=((w-(cornerWidth-edgeWidth)*2) div edgeWidth)*edgeWidth+edgeWidth; + textHeight:=(((numlines * h + 2)-((cornerHeight-edgeWidth)*2)) div edgeWidth)*edgeWidth; + + textHeight:=max(textHeight,edgeWidth); + //textWidth:=max(textWidth,SpritesData[tail].Width); + rect.x:= 0; + rect.y:= 0; + rect.w:= textWidth + (cornerWidth * 2); + rect.h:= textHeight + cornerHeight*2 - edgeHeight + SpritesData[tail].Height; + //s:= inttostr(w) + ' ' + inttostr(numlines) + ' ' + inttostr(rect.x) + ' '+inttostr(rect.y) + ' ' + inttostr(rect.w) + ' ' + inttostr(rect.h); + + finalSurface:= SDL_CreateRGBSurface(SDL_SWSURFACE, rect.w, rect.h, 32, RMask, GMask, BMask, AMask); + + TryDo(finalSurface <> nil, 'RenderString: fail to create surface', true); + + //////////////////////////////// CORNERS /////////////////////////////// + copyToXY(SpritesData[corner].Surface, finalSurface, 0, 0); /////////////////// NW + + flipSurface(SpritesData[corner].Surface, true); // store all 4 versions in memory to avoid repeated flips? + x:= 0; + y:= textHeight + cornerHeight -1; + copyToXY(SpritesData[corner].Surface, finalSurface, x, y); /////////////////// SW + + flipSurface(SpritesData[corner].Surface, false); + x:= rect.w-cornerWidth-1; + y:= textHeight + cornerHeight -1; + copyToXY(SpritesData[corner].Surface, finalSurface, x, y); /////////////////// SE + + flipSurface(SpritesData[corner].Surface, true); + x:= rect.w-cornerWidth-1; + y:= 0; + copyToXY(SpritesData[corner].Surface, finalSurface, x, y); /////////////////// NE + flipSurface(SpritesData[corner].Surface, false); // restore original position + //////////////////////////////// END CORNERS /////////////////////////////// + + //////////////////////////////// EDGES ////////////////////////////////////// + x:= cornerWidth; + y:= 0; + while x < rect.w-cornerWidth-1 do + begin + copyToXY(SpritesData[edge].Surface, finalSurface, x, y); ///////////////// top edge + inc(x,edgeWidth); + end; + flipSurface(SpritesData[edge].Surface, true); + x:= cornerWidth; + y:= textHeight + cornerHeight*2 - edgeHeight-1; + while x < rect.w-cornerWidth-1 do + begin + copyToXY(SpritesData[edge].Surface, finalSurface, x, y); ///////////////// bottom edge + inc(x,edgeWidth); + end; + flipSurface(SpritesData[edge].Surface, true); // restore original position + + rotatedEdge:= SDL_CreateRGBSurface(SDL_SWSURFACE, edgeHeight, edgeWidth, 32, RMask, GMask, BMask, AMask); + x:= rect.w - edgeHeight - 1; + y:= cornerHeight; + //// initially was going to rotate in place, but the SDL spec claims width/height are read only + copyRotatedSurface(SpritesData[edge].Surface,rotatedEdge); + while y < textHeight + cornerHeight do + begin + copyToXY(rotatedEdge, finalSurface, x, y); + inc(y,edgeWidth); + end; + flipSurface(rotatedEdge, false); // restore original position + x:= 0; + y:= cornerHeight; + while y < textHeight + cornerHeight do + begin + copyToXY(rotatedEdge, finalSurface, x, y); + inc(y,edgeWidth); + end; + //////////////////////////////// END EDGES ////////////////////////////////////// + + x:= cornerWidth; + y:= textHeight + cornerHeight * 2 - edgeHeight - 1; + copyToXY(SpritesData[tail].Surface, finalSurface, x, y); + + rect.x:= edgeHeight; + rect.y:= edgeHeight; + rect.w:= rect.w - edgeHeight * 2; + rect.h:= textHeight + cornerHeight * 2 - edgeHeight * 2; + i:= rect.w; + j:= rect.h; + SDL_FillRect(finalSurface, @rect, cWhiteColor); + + pos:= 1; prevpos:= 0; line:= 0; + while pos <= length(s) do + begin + if (s[pos] = #1) or (pos = length(s)) then + begin + if s[pos] <> #1 then inc(pos); + while s[prevpos+1] = ' 'do inc(prevpos); + substr:= copy(s, prevpos+1, pos-prevpos-1); + if Length(substr) <> 0 then + begin + tmpsurf:= TTF_RenderUTF8_Blended(Fontz[Font].Handle, Str2PChar(substr), cNearBlackColorChannels); + rect.x:= edgeHeight + 1 + ((i - w) div 2); + // trying to more evenly position the text, vertically + rect.y:= edgeHeight + ((j-(numLines*h)) div 2) + line * h; + SDLTry(tmpsurf <> nil, true); + SDL_UpperBlit(tmpsurf, nil, finalSurface, @rect); + SDL_FreeSurface(tmpsurf); + inc(line); + prevpos:= pos; + end; + end; + inc(pos); + end; + + RenderSpeechBubbleTex:= Surface2Tex(finalSurface, true); + + SDL_FreeSurface(rotatedEdge); + SDL_FreeSurface(finalSurface); +end; + +end.
--- a/hedgewars/uScript.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uScript.pas Tue Jan 04 12:53:46 2011 +0100 @@ -41,7 +41,6 @@ {$IFNDEF LUA_DISABLED} uses LuaPas in 'LuaPas.pas', uConsole, - uMisc, uConsts, uVisualGears, uGears, @@ -49,11 +48,16 @@ uWorld, uAmmos, uSound, - uTeams, - uKeys, uChat, uStats, - uRandom; + uRandom, + uTypes, + uVariables, + uCommands, + uUtils, + uKeys, + uCaptions, + uDebug; var luaState : Plua_State; ScriptAmmoLoadout : shortstring; @@ -79,6 +83,55 @@ // where L contains the state, returns the number of return values on the stack // call lua_gettop(L) to receive number of parameters passed +function lc_band(L: PLua_State): LongInt; Cdecl; +begin + if lua_gettop(L) <> 2 then + begin + LuaError('Lua: Wrong number of parameters passed to band!'); + lua_pushnil(L); + end + else lua_pushinteger(L, lua_tointeger(L, 2) and lua_tointeger(L, 1)); + lc_band := 1; +end; + +function lc_bor(L: PLua_State): LongInt; Cdecl; +begin + if lua_gettop(L) <> 2 then + begin + LuaError('Lua: Wrong number of parameters passed to bor!'); + lua_pushnil(L); + end + else lua_pushinteger(L, lua_tointeger(L, 2) or lua_tointeger(L, 1)); + lc_bor := 1; +end; + +function lc_bnot(L: PLua_State): LongInt; Cdecl; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to bnot!'); + lua_pushnil(L); + end + else lua_pushinteger(L, not lua_tointeger(L, 1)); + lc_bnot := 1; +end; + +function lc_getinputmask(L : Plua_State) : LongInt; Cdecl; +begin + if lua_gettop(L) <> 0 then + LuaError('Lua: Wrong number of parameters passed to GetInputMask!') + else lua_pushinteger(L, InputMask); + lc_getinputmask:= 1 +end; + +function lc_setinputmask(L : Plua_State) : LongInt; Cdecl; +begin + if lua_gettop(L) <> 1 then + LuaError('Lua: Wrong number of parameters passed to SetInputMask!') + else InputMask:= lua_tointeger(L, 1); + lc_setinputmask:= 0 +end; + function lc_writelntoconsole(L : Plua_State) : LongInt; Cdecl; begin if lua_gettop(L) = 1 then @@ -162,7 +215,7 @@ else begin gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), HealthCrate, 0); - lua_pushnumber(L, gear^.uid); + lua_pushinteger(L, gear^.uid); end; lc_spawnhealthcrate := 1; end; @@ -177,7 +230,7 @@ else begin gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), AmmoCrate, lua_tointeger(L, 3)); - lua_pushnumber(L, gear^.uid); + lua_pushinteger(L, gear^.uid); end; lc_spawnammocrate := 1; end; @@ -192,7 +245,7 @@ else begin gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), UtilityCrate, lua_tointeger(L, 3)); - lua_pushnumber(L, gear^.uid); + lua_pushinteger(L, gear^.uid); end; lc_spawnutilitycrate := 1; end; @@ -219,11 +272,134 @@ t:= lua_tointeger(L, 7); gear:= AddGear(x, y, gt, s, dx, dy, t); - lua_pushnumber(L, gear^.uid) + lastGearByUID:= gear; + lua_pushinteger(L, gear^.uid) end; lc_addgear:= 1; // 1 return value end; +function lc_deletegear(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to DeleteGear!'); + end + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if gear <> nil then DeleteGear(gear); + end; + lc_deletegear:= 0 +end; + +function lc_addvisualgear(L : Plua_State) : LongInt; Cdecl; +var vg : PVisualGear; + x, y, s: LongInt; + c: Boolean; + vgt: TVisualGearType; +begin + if lua_gettop(L) <> 5 then + begin + LuaError('Lua: Wrong number of parameters passed to AddVisualGear!'); + lua_pushnil(L); // return value on stack (nil) + end + else + begin + x:= lua_tointeger(L, 1); + y:= lua_tointeger(L, 2); + vgt:= TVisualGearType(lua_tointeger(L, 3)); + s:= lua_tointeger(L, 4); + c:= lua_toboolean(L, 5); + + vg:= AddVisualGear(x, y, vgt, s, c); + if vg <> nil then + begin + lastVisualGearByUID:= vg; + lua_pushinteger(L, vg^.uid) + end + else lua_pushinteger(L, 0) + end; + lc_addvisualgear:= 1; // 1 return value +end; + +function lc_deletevisualgear(L : Plua_State) : LongInt; Cdecl; +var vg : PVisualGear; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to DeleteVisualGear!'); + end + else + begin + vg:= VisualGearByUID(lua_tointeger(L, 1)); + if vg <> nil then DeleteVisualGear(vg); + end; + lc_deletevisualgear:= 0 +end; + +function lc_getvisualgearvalues(L : Plua_State) : LongInt; Cdecl; +var vg: PVisualGear; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to GetVisualGearValues!'); + lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); + lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L) + end + else + begin + vg:= VisualGearByUID(lua_tointeger(L, 1)); + if vg <> nil then + begin + lua_pushinteger(L, round(vg^.X)); + lua_pushinteger(L, round(vg^.Y)); + lua_pushnumber(L, vg^.dX); + lua_pushnumber(L, vg^.dY); + lua_pushnumber(L, vg^.Angle); + lua_pushinteger(L, vg^.Frame); + lua_pushinteger(L, vg^.FrameTicks); + lua_pushinteger(L, vg^.State); + lua_pushinteger(L, vg^.Timer); + lua_pushinteger(L, vg^.Tint); + end + else + begin + lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); + lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L) + end + end; + lc_getvisualgearvalues:= 10; +end; + +function lc_setvisualgearvalues(L : Plua_State) : LongInt; Cdecl; +var vg : PVisualGear; +begin + if lua_gettop(L) <> 11 then + begin + LuaError('Lua: Wrong number of parameters passed to SetVisualGearValues!'); + lua_pushnil(L); // return value on stack (nil) + end + else + begin + vg:= VisualGearByUID(lua_tointeger(L, 1)); + if vg <> nil then + begin + vg^.X:= lua_tointeger(L, 2); + vg^.Y:= lua_tointeger(L, 3); + vg^.dX:= lua_tonumber(L, 4); + vg^.dY:= lua_tonumber(L, 5); + vg^.Angle:= lua_tonumber(L, 6); + vg^.Frame:= lua_tointeger(L, 7); + if lua_tointeger(L, 8) <> 0 then vg^.FrameTicks:= lua_tointeger(L, 8); // find a better way to do this. maybe need to break all these up. + vg^.State:= lua_tointeger(L, 9); + vg^.Timer:= lua_tointeger(L, 10); + vg^.Tint:= lua_tointeger(L, 11); + end + end; + lc_setvisualgearvalues:= 0; +end; + function lc_getfollowgear(L : Plua_State) : LongInt; Cdecl; begin if lua_gettop(L) <> 0 then @@ -235,7 +411,7 @@ if FollowGear = nil then lua_pushnil(L) else - lua_pushnumber(L, FollowGear^.uid); + lua_pushinteger(L, FollowGear^.uid); lc_getfollowgear:= 1; // 1 return value end; @@ -277,6 +453,25 @@ lc_getgearmessage:= 1 end; +function lc_getgearelasticity(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to GetGearElasticity!'); + lua_pushnil(L); // return value on stack (nil) + end + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if gear <> nil then + lua_pushinteger(L, hwRound(gear^.elasticity * _10000)) + else + lua_pushnil(L); + end; + lc_getgearelasticity:= 1 +end; + function lc_setgearmessage(L : Plua_State) : LongInt; Cdecl; var gear : PGear; begin @@ -299,13 +494,27 @@ else begin gear := GearByUID(lua_tointeger(L, 1)); if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then - lua_pushinteger(L, PHedgehog(gear^.Hedgehog)^.BotLevel) + lua_pushinteger(L, gear^.Hedgehog^.BotLevel) else lua_pushnil(L); end; lc_gethoglevel := 1; end; +function lc_sethoglevel(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 2 then + LuaError('Lua: Wrong number of parameters passed to SetHogLevel!') + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then + gear^.Hedgehog^.BotLevel:= lua_tointeger(L, 2); + end; + lc_sethoglevel:= 0 +end; + function lc_gethogclan(L : Plua_State) : LongInt; Cdecl; var gear : PGear; begin @@ -319,7 +528,7 @@ gear:= GearByUID(lua_tointeger(L, 1)); if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then begin - lua_pushinteger(L, PHedgehog(gear^.Hedgehog)^.Team^.Clan^.ClanIndex) + lua_pushinteger(L, gear^.Hedgehog^.Team^.Clan^.ClanIndex) end else lua_pushnil(L); @@ -327,6 +536,17 @@ lc_gethogclan:= 1 end; +function lc_getclancolor(L : Plua_State) : LongInt; Cdecl; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to GetClanColor!'); + lua_pushnil(L); // return value on stack (nil) + end + else lua_pushinteger(L, ClansArray[lua_tointeger(L, 1)]^.Color shl 8 or $FF); + lc_getclancolor:= 1 +end; + function lc_gethogteamname(L : Plua_State) : LongInt; Cdecl; var gear : PGear; begin @@ -340,7 +560,7 @@ gear:= GearByUID(lua_tointeger(L, 1)); if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then begin - lua_pushstring(L, str2pchar(PHedgehog(gear^.Hedgehog)^.Team^.TeamName)) + lua_pushstring(L, str2pchar(gear^.Hedgehog^.Team^.TeamName)) end else lua_pushnil(L); @@ -361,7 +581,7 @@ gear:= GearByUID(lua_tointeger(L, 1)); if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then begin - lua_pushstring(L, str2pchar(PHedgehog(gear^.Hedgehog)^.Name)) + lua_pushstring(L, str2pchar(gear^.Hedgehog^.Name)) end else lua_pushnil(L); @@ -381,7 +601,7 @@ begin gear:= GearByUID(lua_tointeger(L, 1)); if gear <> nil then - lua_pushnumber(L, gear^.Timer) + lua_pushinteger(L, gear^.Timer) else lua_pushnil(L); end; @@ -400,7 +620,7 @@ begin gear:= GearByUID(lua_tointeger(L, 1)); if gear <> nil then - lua_pushnumber(L, gear^.Health) + lua_pushinteger(L, gear^.Health) else lua_pushnil(L); end; @@ -419,7 +639,7 @@ begin gear:= GearByUID(lua_tointeger(L, 1)); if gear <> nil then - lua_pushnumber(L, hwRound(gear^.X)) + lua_pushinteger(L, hwRound(gear^.X)) else lua_pushnil(L); end; @@ -438,7 +658,7 @@ begin gear:= GearByUID(lua_tointeger(L, 1)); if gear <> nil then - lua_pushnumber(L, hwRound(gear^.Y)) + lua_pushinteger(L, hwRound(gear^.Y)) else lua_pushnil(L); end; @@ -467,28 +687,6 @@ lc_copypv:= 1 end; -function lc_copypv2(L : Plua_State) : LongInt; Cdecl; -var gears, geard : PGear; -begin - if lua_gettop(L) <> 2 then - begin - LuaError('Lua: Wrong number of parameters passed to CopyPV2!'); - end - else - begin - gears:= GearByUID(lua_tointeger(L, 1)); - geard:= GearByUID(lua_tointeger(L, 2)); - if (gears <> nil) and (geard <> nil) then - begin - geard^.X:= gears^.X; - geard^.Y:= gears^.Y; - geard^.dX:= gears^.dX * 2; - geard^.dY:= gears^.dY * 2; - end - end; - lc_copypv2:= 1 -end; - function lc_followgear(L : Plua_State) : LongInt; Cdecl; var gear : PGear; begin @@ -505,17 +703,17 @@ function lc_hogsay(L : Plua_State) : LongInt; Cdecl; var gear : PGear; vgear : PVisualGear; + s : LongWord; begin - if lua_gettop(L) <> 3 then - begin - LuaError('Lua: Wrong number of parameters passed to HogSay!'); - end - else + if lua_gettop(L) = 4 then s:= lua_tointeger(L, 4) + else s:= 0; + + if (lua_gettop(L) = 4) or (lua_gettop(L) = 3) then begin gear:= GearByUID(lua_tointeger(L, 1)); if gear <> nil then begin - vgear:= AddVisualGear(0, 0, vgtSpeechBubble); + vgear:= AddVisualGear(0, 0, vgtSpeechBubble, s, true); if vgear <> nil then begin vgear^.Text:= lua_tostring(L, 2); @@ -524,8 +722,25 @@ if (vgear^.FrameTicks < 1) or (vgear^.FrameTicks > 3) then vgear^.FrameTicks:= 1; end; end + end + else LuaError('Lua: Wrong number of parameters passed to HogSay!'); + lc_hogsay:= 0 +end; + +function lc_addammo(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 2 then + begin + LuaError('Lua: Wrong number of parameters passed to AddAmmo!'); + end + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if (gear <> nil) and (gear^.Hedgehog <> nil) then + AddAmmo(gear^.Hedgehog^, TAmmoType(lua_tointeger(L, 2))); end; - lc_hogsay:= 0 + lc_addammo:= 0 end; function lc_sethealth(L : Plua_State) : LongInt; Cdecl; @@ -570,7 +785,7 @@ else begin gear := GearByUID(lua_tointeger(L, 1)); if gear <> nil then - PHedgehog(gear^.Hedgehog)^.Effects[THogEffect(lua_tointeger(L, 2))]:= lua_tointeger(L, 3) <> 0; + gear^.Hedgehog^.Effects[THogEffect(lua_tointeger(L, 2))]:= lua_toboolean(L, 3); end; lc_seteffect := 0; end; @@ -641,9 +856,11 @@ function lc_findplace(L : Plua_State) : LongInt; Cdecl; var gear: PGear; fall: boolean; + tryhard: boolean; left, right: LongInt; begin - if lua_gettop(L) <> 4 then + tryhard:= false; + if (lua_gettop(L) <> 4) and (lua_gettop(L) <> 5) then LuaError('Lua: Wrong number of parameters passed to FindPlace!') else begin @@ -651,24 +868,35 @@ fall:= lua_toboolean(L, 2); left:= lua_tointeger(L, 3); right:= lua_tointeger(L, 4); + if lua_gettop(L) = 5 then tryhard:= lua_toboolean(L, 5); if gear <> nil then - FindPlace(gear, fall, left, right) + FindPlace(gear, fall, left, right, tryhard); + if gear <> nil then lua_pushinteger(L, gear^.uid) + else lua_pushnil(L); end; - lc_findplace:= 0 + lc_findplace:= 1 end; function lc_playsound(L : Plua_State) : LongInt; Cdecl; +var gear: PGear; begin - if lua_gettop(L) <> 1 then - LuaError('Lua: Wrong number of parameters passed to PlaySound!') - else - PlaySound(TSound(lua_tointeger(L, 1))); + if lua_gettop(L) = 1 then + PlaySound(TSound(lua_tointeger(L, 1))) + else if lua_gettop(L) = 2 then + begin + gear:= GearByUID(lua_tointeger(L, 2)); + if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then + PlaySound(TSound(lua_tointeger(L, 1)),gear^.Hedgehog^.Team^.Voicepack) + end + else LuaError('Lua: Wrong number of parameters passed to PlaySound!'); lc_playsound:= 0; end; function lc_addteam(L : Plua_State) : LongInt; Cdecl; +var np: LongInt; begin - if lua_gettop(L) <> 5 then + np:= lua_gettop(L); + if (np < 5) or (np > 6) then begin LuaError('Lua: Wrong number of parameters passed to AddTeam!'); //lua_pushnil(L) @@ -679,6 +907,7 @@ ParseCommand('grave ' + lua_tostring(L, 3), true); ParseCommand('fort ' + lua_tostring(L, 4), true); ParseCommand('voicepack ' + lua_tostring(L, 5), true); + if (np = 6) then ParseCommand('flag ' + lua_tostring(L, 6), true); CurrentTeam^.Binds:= DefaultBinds // fails on x64 //lua_pushinteger(L, LongInt(CurrentTeam)); @@ -762,6 +991,45 @@ lc_setgearposition:= 0 end; +function lc_getgearvelocity(L : Plua_State) : LongInt; Cdecl; +var gear: PGear; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to GetGearVelocity!'); + lua_pushnil(L); + lua_pushnil(L) + end + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if gear <> nil then + begin + lua_pushnumber(L, hwRound(gear^.dX * 1000) / 1000); + lua_pushnumber(L, hwRound(gear^.dY * 1000) / 1000) + end + end; + lc_getgearvelocity:= 2; +end; + +function lc_setgearvelocity(L : Plua_State) : LongInt; Cdecl; +var gear: PGear; +begin + if lua_gettop(L) <> 3 then + LuaError('Lua: Wrong number of parameters passed to SetGearVelocity!') + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if gear <> nil then + begin + gear^.dX:= int2hwFloat(round(lua_tonumber(L, 2) * 1000)) / 1000; + gear^.dY:= int2hwFloat(round(lua_tonumber(L, 3) * 1000)) / 1000; + SetAllToActive; + end + end; + lc_setgearvelocity:= 0 +end; + function lc_setzoom(L : Plua_State) : LongInt; Cdecl; begin if lua_gettop(L) <> 1 then @@ -821,6 +1089,45 @@ end; lc_getrandom:= 1 end; + +function lc_setwind(L : Plua_State) : LongInt; Cdecl; +begin + if lua_gettop(L) <> 1 then + LuaError('Lua: Wrong number of parameters passed to SetWind!') + else + begin + cWindSpeed:= int2hwfloat(lua_tointeger(L, 1)) / 100 * cMaxWindSpeed; + cWindSpeedf:= SignAs(cWindSpeed,cWindSpeed).QWordValue / SignAs(_1,_1).QWordValue; + if cWindSpeed.isNegative then + CWindSpeedf := -cWindSpeedf; + AddGear(0, 0, gtATSmoothWindCh, 0, _0, _0, 1)^.Tag:= hwRound(cWindSpeed * 72 / cMaxWindSpeed); + end; + lc_setwind:= 0 +end; + +function lc_getdatapath(L : Plua_State) : LongInt; Cdecl; +begin + if lua_gettop(L) <> 0 then + begin + LuaError('Lua: Wrong number of parameters passed to GetDataPath!'); + lua_pushnil(L); + end + else + lua_pushstring(L, str2pchar(Pathz[ptData])); + lc_getdatapath:= 1 +end; + +function lc_maphasborder(L : Plua_State) : LongInt; Cdecl; +begin + if lua_gettop(L) <> 0 then + begin + LuaError('Lua: Wrong number of parameters passed to MapHasBorder!'); + lua_pushnil(L); + end + else + lua_pushboolean(L, hasBorder); + lc_maphasborder:= 1 +end; /////////////////// procedure ScriptPrintStack; @@ -875,7 +1182,6 @@ end; procedure ScriptOnGameInit; -var s, t : ansistring; begin // not required if there is no script to run if not ScriptLoaded then @@ -901,12 +1207,6 @@ ScriptSetString('Map', ''); ScriptSetString('Theme', ''); -// import locale -s:= cLocaleFName; -t:= ''; -SplitByChar(s, t, '.'); -ScriptSetString('L', s); - ScriptCall('onGameInit'); // pop game variables @@ -1084,9 +1384,11 @@ procedure initModule; var at : TGearType; + vgt: TVisualGearType; am : TAmmoType; st : TSound; he: THogEffect; + s, t : ansistring; begin // initialize lua luaState:= lua_open; @@ -1102,6 +1404,12 @@ ScriptSetInteger('LAND_WIDTH', LAND_WIDTH); ScriptSetInteger('LAND_HEIGHT', LAND_HEIGHT); +// import locale +s:= cLocaleFName; +t:= ''; +SplitByChar(s, t, '.'); +ScriptSetString('L', s); + // import game flags ScriptSetInteger('gfForts', gfForts); ScriptSetInteger('gfMultiWeapon', gfMultiWeapon); @@ -1154,6 +1462,9 @@ for at:= Low(TGearType) to High(TGearType) do ScriptSetInteger(EnumToStr(at), ord(at)); +for vgt:= Low(TVisualGearType) to High(TVisualGearType) do + ScriptSetInteger(EnumToStr(vgt), ord(vgt)); + // register sounds for st:= Low(TSound) to High(TSound) do ScriptSetInteger(EnumToStr(st), ord(st)); @@ -1166,7 +1477,17 @@ ScriptSetInteger(EnumToStr(he), ord(he)); // register functions +lua_register(luaState, 'band', @lc_band); +lua_register(luaState, 'bor', @lc_bor); +lua_register(luaState, 'bnot', @lc_bnot); +lua_register(luaState, 'GetInputMask', @lc_getinputmask); +lua_register(luaState, 'SetInputMask', @lc_setinputmask); lua_register(luaState, 'AddGear', @lc_addgear); +lua_register(luaState, 'DeleteGear', @lc_deletegear); +lua_register(luaState, 'AddVisualGear', @lc_addvisualgear); +lua_register(luaState, 'DeleteVisualGear', @lc_deletevisualgear); +lua_register(luaState, 'GetVisualGearValues', @lc_getvisualgearvalues); +lua_register(luaState, 'SetVisualGearValues', @lc_setvisualgearvalues); lua_register(luaState, 'SpawnHealthCrate', @lc_spawnhealthcrate); lua_register(luaState, 'SpawnAmmoCrate', @lc_spawnammocrate); lua_register(luaState, 'SpawnUtilityCrate', @lc_spawnutilitycrate); @@ -1176,6 +1497,8 @@ lua_register(luaState, 'FindPlace', @lc_findplace); lua_register(luaState, 'SetGearPosition', @lc_setgearposition); lua_register(luaState, 'GetGearPosition', @lc_getgearposition); +lua_register(luaState, 'SetGearVelocity', @lc_setgearvelocity); +lua_register(luaState, 'GetGearVelocity', @lc_getgearvelocity); lua_register(luaState, 'ParseCommand', @lc_parsecommand); lua_register(luaState, 'ShowMission', @lc_showmission); lua_register(luaState, 'HideMission', @lc_hidemission); @@ -1184,17 +1507,19 @@ lua_register(luaState, 'PlaySound', @lc_playsound); lua_register(luaState, 'AddTeam', @lc_addteam); lua_register(luaState, 'AddHog', @lc_addhog); +lua_register(luaState, 'AddAmmo', @lc_addammo); lua_register(luaState, 'SetHealth', @lc_sethealth); lua_register(luaState, 'GetHealth', @lc_gethealth); lua_register(luaState, 'SetEffect', @lc_seteffect); lua_register(luaState, 'GetHogClan', @lc_gethogclan); +lua_register(luaState, 'GetClanColor', @lc_getclancolor); lua_register(luaState, 'GetHogTeamName', @lc_gethogteamname); lua_register(luaState, 'GetHogName', @lc_gethogname); lua_register(luaState, 'GetHogLevel', @lc_gethoglevel); +lua_register(luaState, 'SetHogLevel', @lc_sethoglevel); lua_register(luaState, 'GetX', @lc_getx); lua_register(luaState, 'GetY', @lc_gety); lua_register(luaState, 'CopyPV', @lc_copypv); -lua_register(luaState, 'CopyPV2', @lc_copypv2); lua_register(luaState, 'FollowGear', @lc_followgear); lua_register(luaState, 'GetFollowGear', @lc_getfollowgear); lua_register(luaState, 'SetState', @lc_setstate); @@ -1208,9 +1533,13 @@ lua_register(luaState, 'HogTurnLeft', @lc_hogturnleft); lua_register(luaState, 'CampaignLock', @lc_campaignlock); lua_register(luaState, 'CampaignUnlock', @lc_campaignunlock); +lua_register(luaState, 'GetGearElasticity', @lc_getgearelasticity); lua_register(luaState, 'GetGearMessage', @lc_getgearmessage); lua_register(luaState, 'SetGearMessage', @lc_setgearmessage); lua_register(luaState, 'GetRandom', @lc_getrandom); +lua_register(luaState, 'SetWind', @lc_setwind); +lua_register(luaState, 'GetDataPath', @lc_getdatapath); +lua_register(luaState, 'MapHasBorder', @lc_maphasborder); ScriptClearStack; // just to be sure stack is empty
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uSinTable.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,1053 @@ +(* + * Hedgewars, a free turn based strategy game + * Copyright (c) 2007 Andrey Korotaev <unC0Rr@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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + *) + +unit uSinTable; + +interface + +const SinTable: array[0..1024] of QWord = ( + $00000000, + $006487EB, + $00C90FC6, + $012D9782, + $01921F10, + $01F6A660, + $025B2D62, + $02BFB407, + $03243A40, + $0388BFFC, + $03ED452D, + $0451C9C3, + $04B64DAF, + $051AD0E0, + $057F5348, + $05E3D4D7, + $0648557E, + $06ACD52C, + $071153D3, + $0775D163, + $07DA4DCC, + $083EC900, + $08A342EE, + $0907BB86, + $096C32BB, + $09D0A87B, + $0A351CB8, + $0A998F62, + $0AFE0069, + $0B626FBF, + $0BC6DD53, + $0C2B4916, + $0C8FB2F9, + $0CF41AEB, + $0D5880DF, + $0DBCE4C3, + $0E214689, + $0E85A622, + $0EEA037D, + $0F4E5E8B, + $0FB2B73D, + $10170D83, + $107B614E, + $10DFB28F, + $11440135, + $11A84D31, + $120C9675, + $1270DCF0, + $12D52093, + $1339614E, + $139D9F13, + $1401D9D1, + $14661179, + $14CA45FC, + $152E774A, + $1592A554, + $15F6D00B, + $165AF75E, + $16BF1B3E, + $17233B9D, + $1787586A, + $17EB7197, + $184F8713, + $18B398CF, + $1917A6BC, + $197BB0CB, + $19DFB6EB, + $1A43B90E, + $1AA7B724, + $1B0BB11E, + $1B6FA6EC, + $1BD3987F, + $1C3785C8, + $1C9B6EB6, + $1CFF533B, + $1D633348, + $1DC70ECC, + $1E2AE5B8, + $1E8EB7FE, + $1EF2858D, + $1F564E57, + $1FBA124B, + $201DD15B, + $20818B77, + $20E5408F, + $2148F095, + $21AC9B79, + $2210412C, + $2273E19E, + $22D77CBF, + $233B1281, + $239EA2D5, + $24022DAA, + $2465B2F1, + $24C9329C, + $252CAC9A, + $259020DD, + $25F38F55, + $2656F7F3, + $26BA5AA7, + $271DB762, + $27810E14, + $27E45EB0, + $2847A924, + $28AAED62, + $290E2B5B, + $297162FF, + $29D4943F, + $2A37BF0B, + $2A9AE355, + $2AFE010D, + $2B611823, + $2BC42889, + $2C27322F, + $2C8A3506, + $2CED30FF, + $2D50260A, + $2DB31418, + $2E15FB1A, + $2E78DB01, + $2EDBB3BD, + $2F3E853F, + $2FA14F78, + $30041258, + $3066CDD1, + $30C981D3, + $312C2E50, + $318ED336, + $31F17079, + $32540608, + $32B693D3, + $331919CD, + $337B97E6, + $33DE0E0E, + $34407C36, + $34A2E250, + $3505404B, + $3567961A, + $35C9E3AC, + $362C28F3, + $368E65DE, + $36F09A61, + $3752C66A, + $37B4E9EB, + $381704D5, + $38791719, + $38DB20A7, + $393D2170, + $399F1966, + $3A010879, + $3A62EE9A, + $3AC4CBBA, + $3B269FCB, + $3B886ABB, + $3BEA2C7E, + $3C4BE503, + $3CAD943C, + $3D0F3A1A, + $3D70D68C, + $3DD26986, + $3E33F2F6, + $3E9572CF, + $3EF6E901, + $3F58557E, + $3FB9B836, + $401B111A, + $407C601B, + $40DDA52A, + $413EE039, + $41A01138, + $42013818, + $426254CA, + $42C3673F, + $43246F69, + $43856D38, + $43E6609E, + $4447498B, + $44A827F0, + $4508FBBF, + $4569C4E9, + $45CA835E, + $462B3710, + $468BDFF0, + $46EC7DEE, + $474D10FD, + $47AD990D, + $480E160F, + $486E87F5, + $48CEEEAF, + $492F4A2F, + $498F9A65, + $49EFDF44, + $4A5018BB, + $4AB046BD, + $4B10693A, + $4B708024, + $4BD08B6C, + $4C308B02, + $4C907ED9, + $4CF066E1, + $4D50430C, + $4DB0134A, + $4E0FD78D, + $4E6F8FC7, + $4ECF3BE8, + $4F2EDBE2, + $4F8E6FA6, + $4FEDF725, + $504D7250, + $50ACE11A, + $510C4372, + $516B994B, + $51CAE295, + $522A1F43, + $52894F44, + $52E8728C, + $5347890A, + $53A692B0, + $54058F70, + $54647F3B, + $54C36203, + $552237B8, + $5581004C, + $55DFBBB0, + $563E69D7, + $569D0AB0, + $56FB9E2E, + $575A2443, + $57B89CDE, + $581707F3, + $58756572, + $58D3B54D, + $5931F775, + $59902BDC, + $59EE5273, + $5A4C6B2B, + $5AAA75F7, + $5B0872C8, + $5B66618E, + $5BC4423C, + $5C2214C4, + $5C7FD916, + $5CDD8F25, + $5D3B36E1, + $5D98D03D, + $5DF65B29, + $5E53D798, + $5EB1457C, + $5F0EA4C4, + $5F6BF565, + $5FC9374E, + $60266A71, + $60838EC1, + $60E0A42F, + $613DAAAC, + $619AA22A, + $61F78A9B, + $625463F0, + $62B12E1B, + $630DE90E, + $636A94BB, + $63C73113, + $6423BE08, + $64803B8B, + $64DCA98F, + $65390805, + $659556DF, + $65F1960E, + $664DC585, + $66A9E535, + $6705F510, + $6761F508, + $67BDE50F, + $6819C516, + $6875950F, + $68D154EC, + $692D049F, + $6988A41B, + $69E4334F, + $6A3FB230, + $6A9B20AE, + $6AF67EBB, + $6B51CC49, + $6BAD094B, + $6C0835B2, + $6C635170, + $6CBE5C77, + $6D1956B9, + $6D744028, + $6DCF18B5, + $6E29E054, + $6E8496F6, + $6EDF3C8C, + $6F39D10A, + $6F945460, + $6FEEC681, + $70492760, + $70A376EE, + $70FDB51D, + $7157E1DF, + $71B1FD26, + $720C06E5, + $7265FF0E, + $72BFE593, + $7319BA65, + $73737D77, + $73CD2EBC, + $7426CE24, + $74805BA4, + $74D9D72C, + $753340AF, + $758C981F, + $75E5DD6E, + $763F108F, + $76983174, + $76F1400F, + $774A3C52, + $77A32630, + $77FBFD9B, + $7854C285, + $78AD74E0, + $7906149F, + $795EA1B5, + $79B71C13, + $7A0F83AC, + $7A67D872, + $7AC01A58, + $7B184950, + $7B70654C, + $7BC86E3F, + $7C20641B, + $7C7846D3, + $7CD01659, + $7D27D2A0, + $7D7F7B99, + $7DD71139, + $7E2E9370, + $7E860232, + $7EDD5D71, + $7F34A51F, + $7F8BD930, + $7FE2F995, + $803A0641, + $8090FF28, + $80E7E43A, + $813EB56C, + $819572AF, + $81EC1BF7, + $8242B135, + $8299325D, + $82EF9F62, + $8345F835, + $839C3CC9, + $83F26D12, + $84488902, + $849E908B, + $84F483A1, + $854A6236, + $85A02C3C, + $85F5E1A8, + $864B826B, + $86A10E78, + $86F685C2, + $874BE83C, + $87A135D9, + $87F66E8C, + $884B9247, + $88A0A0FD, + $88F59AA1, + $894A7F26, + $899F4E7F, + $89F408A0, + $8A48AD7A, + $8A9D3D00, + $8AF1B727, + $8B461BE0, + $8B9A6B1F, + $8BEEA4D7, + $8C42C8FA, + $8C96D77C, + $8CEAD050, + $8D3EB368, + $8D9280B9, + $8DE63834, + $8E39D9CD, + $8E8D6578, + $8EE0DB27, + $8F343ACD, + $8F87845E, + $8FDAB7CC, + $902DD50C, + $9080DC0F, + $90D3CCCA, + $9126A72F, + $91796B31, + $91CC18C5, + $921EAFDD, + $9271306C, + $92C39A66, + $9315EDBE, + $93682A67, + $93BA5055, + $940C5F7A, + $945E57CB, + $94B0393B, + $950203BD, + $9553B744, + $95A553C4, + $95F6D930, + $9648477C, + $96999E9A, + $96EADE80, + $973C071F, + $978D186C, + $97DE125A, + $982EF4DD, + $987FBFE7, + $98D0736D, + $99210F62, + $997193BA, + $99C20068, + $9A125560, + $9A629296, + $9AB2B7FD, + $9B02C588, + $9B52BB2C, + $9BA298DC, + $9BF25E8C, + $9C420C2F, + $9C91A1B9, + $9CE11F1F, + $9D308453, + $9D7FD149, + $9DCF05F6, + $9E1E224C, + $9E6D2640, + $9EBC11C6, + $9F0AE4D1, + $9F599F56, + $9FA84148, + $9FF6CA9A, + $A0453B42, + $A0939332, + $A0E1D25F, + $A12FF8BC, + $A17E063F, + $A1CBFAD9, + $A219D681, + $A2679928, + $A2B542C5, + $A302D349, + $A3504AAB, + $A39DA8DD, + $A3EAEDD3, + $A4381983, + $A4852BDF, + $A4D224DD, + $A51F046F, + $A56BCA8B, + $A5B87724, + $A6050A2F, + $A65183A0, + $A69DE36B, + $A6EA2984, + $A73655DF, + $A7826871, + $A7CE612E, + $A81A400B, + $A86604FB, + $A8B1AFF3, + $A8FD40E7, + $A948B7CB, + $A9941495, + $A9DF5738, + $AA2A7FA9, + $AA758DDB, + $AAC081C5, + $AB0B5B59, + $AB561A8D, + $ABA0BF54, + $ABEB49A4, + $AC35B971, + $AC800EB0, + $ACCA4954, + $AD146953, + $AD5E6EA1, + $ADA85932, + $ADF228FC, + $AE3BDDF3, + $AE85780B, + $AECEF73A, + $AF185B73, + $AF61A4AC, + $AFAAD2D9, + $AFF3E5EF, + $B03CDDE3, + $B085BAA9, + $B0CE7C36, + $B117227F, + $B15FAD79, + $B1A81D19, + $B1F07153, + $B238AA1C, + $B280C769, + $B2C8C930, + $B310AF64, + $B35879FB, + $B3A028E9, + $B3E7BC25, + $B42F33A1, + $B4768F55, + $B4BDCF34, + $B504F334, + $B54BFB49, + $B592E769, + $B5D9B789, + $B6206B9E, + $B667039D, + $B6AD7F7A, + $B6F3DF2C, + $B73A22A7, + $B78049E1, + $B7C654CE, + $B80C4364, + $B8521599, + $B897CB60, + $B8DD64B0, + $B922E17E, + $B96841BF, + $B9AD8569, + $B9F2AC70, + $BA37B6CB, + $BA7CA46D, + $BAC1754E, + $BB062962, + $BB4AC09E, + $BB8F3AF8, + $BBD39866, + $BC17D8DD, + $BC5BFC52, + $BCA002BA, + $BCE3EC0D, + $BD27B83E, + $BD6B6744, + $BDAEF913, + $BDF26DA3, + $BE35C4E7, + $BE78FED6, + $BEBC1B66, + $BEFF1A8C, + $BF41FC3E, + $BF84C071, + $BFC7671B, + $C009F032, + $C04C5BAB, + $C08EA97D, + $C0D0D99E, + $C112EC02, + $C154E0A0, + $C196B76D, + $C1D87060, + $C21A0B6E, + $C25B888D, + $C29CE7B4, + $C2DE28D7, + $C31F4BEE, + $C36050ED, + $C3A137CB, + $C3E2007E, + $C422AAFC, + $C463373A, + $C4A3A530, + $C4E3F4D2, + $C5242618, + $C56438F7, + $C5A42D65, + $C5E40359, + $C623BAC8, + $C66353A9, + $C6A2CDF2, + $C6E22999, + $C7216694, + $C76084DA, + $C79F8461, + $C7DE651F, + $C81D270B, + $C85BCA1B, + $C89A4E44, + $C8D8B37F, + $C916F9C0, + $C95520FE, + $C9932930, + $C9D1124D, + $CA0EDC49, + $CA4C871D, + $CA8A12BF, + $CAC77F24, + $CB04CC45, + $CB41FA16, + $CB7F088F, + $CBBBF7A6, + $CBF8C752, + $CC35778A, + $CC720844, + $CCAE7977, + $CCEACB19, + $CD26FD21, + $CD630F87, + $CD9F0240, + $CDDAD543, + $CE168888, + $CE521C04, + $CE8D8FAF, + $CEC8E380, + $CF04176E, + $CF3F2B6E, + $CF7A1F79, + $CFB4F385, + $CFEFA78A, + $D02A3B7D, + $D064AF56, + $D09F030C, + $D0D93696, + $D11349EB, + $D14D3D02, + $D1870FD2, + $D1C0C253, + $D1FA547A, + $D233C641, + $D26D179C, + $D2A64885, + $D2DF58F1, + $D31848D8, + $D3511832, + $D389C6F5, + $D3C25519, + $D3FAC295, + $D4330F60, + $D46B3B73, + $D4A346C3, + $D4DB3148, + $D512FAFB, + $D54AA3D1, + $D5822BC4, + $D5B992C9, + $D5F0D8D8, + $D627FDEA, + $D65F01F5, + $D695E4F1, + $D6CCA6D6, + $D703479A, + $D739C736, + $D77025A2, + $D7A662D4, + $D7DC7EC5, + $D812796C, + $D84852C1, + $D87E0ABB, + $D8B3A152, + $D8E9167F, + $D91E6A38, + $D9539C76, + $D988AD30, + $D9BD9C5E, + $D9F269F8, + $DA2715F5, + $DA5BA04F, + $DA9008FC, + $DAC44FF5, + $DAF87531, + $DB2C78A8, + $DB605A53, + $DB941A29, + $DBC7B822, + $DBFB3437, + $DC2E8E60, + $DC61C694, + $DC94DCCB, + $DCC7D0FF, + $DCFAA326, + $DD2D533A, + $DD5FE131, + $DD924D06, + $DDC496AF, + $DDF6BE25, + $DE28C360, + $DE5AA658, + $DE8C6707, + $DEBE0563, + $DEEF8167, + $DF20DB09, + $DF521242, + $DF83270B, + $DFB4195C, + $DFE4E92D, + $E0159678, + $E0462134, + $E076895A, + $E0A6CEE2, + $E0D6F1C6, + $E106F1FD, + $E136CF81, + $E1668A4A, + $E1962250, + $E1C5978C, + $E1F4E9F7, + $E224198A, + $E253263D, + $E2821009, + $E2B0D6E7, + $E2DF7AD0, + $E30DFBBC, + $E33C59A4, + $E36A9482, + $E398AC4D, + $E3C6A0FF, + $E3F47291, + $E42220FC, + $E44FAC38, + $E47D143F, + $E4AA590A, + $E4D77A91, + $E50478CE, + $E53153B9, + $E55E0B4D, + $E58A9F81, + $E5B71050, + $E5E35DB2, + $E60F87A0, + $E63B8E14, + $E6677106, + $E6933071, + $E6BECC4C, + $E6EA4493, + $E715993D, + $E740CA44, + $E76BD7A2, + $E796C150, + $E7C18746, + $E7EC2980, + $E816A7F6, + $E84102A1, + $E86B397B, + $E8954C7D, + $E8BF3BA2, + $E8E906E2, + $E912AE37, + $E93C319B, + $E9659107, + $E98ECC75, + $E9B7E3DE, + $E9E0D73D, + $EA09A68A, + $EA3251C0, + $EA5AD8D9, + $EA833BCD, + $EAAB7A97, + $EAD39531, + $EAFB8B94, + $EB235DBB, + $EB4B0B9E, + $EB729539, + $EB99FA84, + $EBC13B7B, + $EBE85816, + $EC0F5050, + $EC362422, + $EC5CD387, + $EC835E7A, + $ECA9C4F3, + $ECD006EC, + $ECF62461, + $ED1C1D4B, + $ED41F1A4, + $ED67A167, + $ED8D2C8E, + $EDB29312, + $EDD7D4EE, + $EDFCF21D, + $EE21EA98, + $EE46BE5A, + $EE6B6D5D, + $EE8FF79C, + $EEB45D11, + $EED89DB6, + $EEFCB986, + $EF20B07B, + $EF448290, + $EF682FBF, + $EF8BB802, + $EFAF1B55, + $EFD259B1, + $EFF57311, + $F0186771, + $F03B36C9, + $F05DE116, + $F0806651, + $F0A2C676, + $F0C5017F, + $F0E71767, + $F1090828, + $F12AD3BD, + $F14C7A22, + $F16DFB50, + $F18F5744, + $F1B08DF6, + $F1D19F64, + $F1F28B86, + $F2135259, + $F233F3D8, + $F2546FFC, + $F274C6C2, + $F294F824, + $F2B5041D, + $F2D4EAA8, + $F2F4ABC1, + $F3144762, + $F333BD87, + $F3530E2B, + $F3723949, + $F3913EDB, + $F3B01EDE, + $F3CED94D, + $F3ED6E23, + $F40BDD5A, + $F42A26F0, + $F4484ADD, + $F466491F, + $F48421B1, + $F4A1D48D, + $F4BF61B0, + $F4DCC915, + $F4FA0AB6, + $F5172691, + $F5341C9F, + $F550ECDE, + $F56D9747, + $F58A1BD8, + $F5A67A8B, + $F5C2B35C, + $F5DEC647, + $F5FAB347, + $F6167A59, + $F6321B77, + $F64D969E, + $F668EBC9, + $F6841AF5, + $F69F241C, + $F6BA073B, + $F6D4C44E, + $F6EF5B50, + $F709CC3E, + $F7241713, + $F73E3BCB, + $F7583A63, + $F77212D5, + $F78BC51F, + $F7A5513C, + $F7BEB729, + $F7D7F6E1, + $F7F11060, + $F80A03A4, + $F822D0A6, + $F83B7765, + $F853F7DD, + $F86C5208, + $F88485E4, + $F89C936D, + $F8B47AA0, + $F8CC3B78, + $F8E3D5F1, + $F8FB4A09, + $F91297BC, + $F929BF05, + $F940BFE2, + $F9579A4F, + $F96E4E48, + $F984DBCA, + $F99B42D2, + $F9B1835B, + $F9C79D63, + $F9DD90E6, + $F9F35DE1, + $FA090450, + $FA1E8430, + $FA33DD7E, + $FA491036, + $FA5E1C55, + $FA7301D8, + $FA87C0BC, + $FA9C58FD, + $FAB0CA99, + $FAC5158C, + $FAD939D2, + $FAED376A, + $FB010E50, + $FB14BE80, + $FB2847F8, + $FB3BAAB4, + $FB4EE6B3, + $FB61FBF0, + $FB74EA69, + $FB87B21A, + $FB9A5302, + $FBACCD1D, + $FBBF2068, + $FBD14CE1, + $FBE35284, + $FBF5314F, + $FC06E93F, + $FC187A52, + $FC29E484, + $FC3B27D4, + $FC4C443D, + $FC5D39BE, + $FC6E0855, + $FC7EAFFD, + $FC8F30B6, + $FC9F8A7C, + $FCAFBD4D, + $FCBFC926, + $FCCFAE05, + $FCDF6BE8, + $FCEF02CB, + $FCFE72AD, + $FD0DBB8C, + $FD1CDD64, + $FD2BD833, + $FD3AABF8, + $FD4958B0, + $FD57DE58, + $FD663CEF, + $FD747472, + $FD8284DF, + $FD906E34, + $FD9E306F, + $FDABCB8D, + $FDB93F8C, + $FDC68C6B, + $FDD3B228, + $FDE0B0BF, + $FDED8830, + $FDFA3878, + $FE06C196, + $FE132387, + $FE1F5E4A, + $FE2B71DC, + $FE375E3C, + $FE432368, + $FE4EC15E, + $FE5A381D, + $FE6587A2, + $FE70AFEB, + $FE7BB0F8, + $FE868AC7, + $FE913D55, + $FE9BC8A1, + $FEA62CAA, + $FEB0696D, + $FEBA7EEA, + $FEC46D1F, + $FECE3409, + $FED7D3A9, + $FEE14BFB, + $FEEA9D00, + $FEF3C6B4, + $FEFCC918, + $FF05A429, + $FF0E57E6, + $FF16E44E, + $FF1F495F, + $FF278719, + $FF2F9D79, + $FF378C80, + $FF3F542A, + $FF46F478, + $FF4E6D68, + $FF55BEF9, + $FF5CE92A, + $FF63EBF9, + $FF6AC766, + $FF717B6F, + $FF780814, + $FF7E6D54, + $FF84AB2C, + $FF8AC19E, + $FF90B0A7, + $FF967847, + $FF9C187C, + $FFA19147, + $FFA6E2A6, + $FFAC0C97, + $FFB10F1C, + $FFB5EA32, + $FFBA9DD9, + $FFBF2A10, + $FFC38ED7, + $FFC7CC2C, + $FFCBE210, + $FFCFD082, + $FFD39780, + $FFD7370B, + $FFDAAF21, + $FFDDFFC3, + $FFE128F0, + $FFE42AA6, + $FFE704E7, + $FFE9B7B1, + $FFEC4304, + $FFEEA6E0, + $FFF0E344, + $FFF2F82F, + $FFF4E5A2, + $FFF6AB9D, + $FFF84A1E, + $FFF9C126, + $FFFB10B5, + $FFFC38CA, + $FFFD3965, + $FFFE1286, + $FFFEC42C, + $FFFF4E59, + $FFFFB10B, + $FFFFEC43, + $100000000 + ); + +implementation + +end.
--- a/hedgewars/uSound.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uSound.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,13 +20,7 @@ unit uSound; interface -uses SDLh, uConsts; - -type PVoicepack = ^TVoicepack; - TVoicepack = record - name: shortstring; - chunks: array [TSound] of PMixChunk; - end; +uses SDLh, uConsts, uTypes; var MusicFN: shortstring; @@ -45,6 +39,7 @@ procedure PlayMusic; procedure PauseMusic; procedure ResumeMusic; +procedure ChangeMusic; procedure StopSound(snd: TSound); procedure StopSound(chn: LongInt); function ChangeVolume(voldelta: LongInt): LongInt; @@ -52,7 +47,7 @@ implementation -uses uMisc, uConsole; +uses uVariables, uConsole, uUtils, uCommands, uDebug, uMobile; const chanTPU = 32; var Volume: LongInt; @@ -153,7 +148,8 @@ begin defVoicepack^.chunks[i]:= nil; // preload all the big sound files (>32k) that would otherwise lockup the game - if (i in [sndBeeWater, sndBee, sndCake, sndHellishImpact1, sndHellish, sndHomerun, sndMolotov, sndMortar, sndRideOfTheValkyries, sndYoohoo]) + if (i in [sndBeeWater, sndBee, sndCake, sndHellishImpact1, sndHellish, sndHomerun, + sndMolotov, sndMortar, sndRideOfTheValkyries, sndYoohoo]) and (Soundz[i].Path <> ptVoices) and (Soundz[i].FileName <> '') then begin s:= Pathz[Soundz[i].Path] + '/' + Soundz[i].FileName; @@ -184,7 +180,7 @@ procedure PlaySound(snd: TSound; voicepack: PVoicepack; keepPlaying: boolean); var s:shortstring; begin - if (not isSoundEnabled) or fastUntilLag then + if (not isSoundEnabled) or fastUntilLag or isDeviceMute() then exit; if keepPlaying and (lastChan[snd] <> -1) and (Mix_Playing(lastChan[snd]) <> 0) then @@ -226,7 +222,7 @@ function LoopSound(snd: TSound; voicepack: PVoicepack): LongInt; var s: shortstring; begin - if (not isSoundEnabled) or fastUntilLag then + if (not isSoundEnabled) or fastUntilLag or isDeviceMute() then begin LoopSound:= -1; exit @@ -323,8 +319,28 @@ Mix_ResumeMusic(Mus); end; +procedure ChangeMusic; +begin + if (MusicFN = '') or (not isMusicEnabled) then + exit; + + if Mus <> nil then + Mix_FreeMusic(Mus); + + PlayMusic; +end; + +procedure chVoicepack(var s: shortstring); +begin + if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true); + if s[1]='"' then Delete(s, 1, 1); + if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); + CurrentTeam^.voicepack:= AskForVoicepack(s) +end; + procedure initModule; begin + RegisterVariable('voicepack', vtCommand, @chVoicepack, false); MusicFN:=''; end;
--- a/hedgewars/uStats.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uStats.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,27 +20,7 @@ unit uStats; interface -uses uGears, uConsts; - -type TStatistics = record - DamageRecv, - DamageGiven: Longword; - StepDamageRecv, - StepDamageGiven, - StepKills: Longword; - MaxStepDamageRecv, - MaxStepDamageGiven, - MaxStepKills: Longword; - FinishedTurns: Longword; - end; - -type TTeamStats = record - Kills : Longword; - AIKills : Longword; - TeamKills : Longword; - TurnSkips : Longword; - TeamDamage : Longword; -end; +uses uConsts, uTypes; var TotalRounds: LongInt; FinishedTurnsTotal: LongInt; @@ -55,7 +35,8 @@ procedure SendStats; implementation -uses uTeams, uSound, uMisc, uLocale, uWorld; +uses uSound, uLocale, uVariables, uUtils, uIO, uCaptions, uDebug, uMisc; + var DamageGiven : Longword = 0; DamageClan : Longword = 0; DamageTotal : Longword = 0; @@ -71,10 +52,10 @@ procedure HedgehogDamaged(Gear: PGear); begin -if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then +if CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then vpHurtSameClan:= CurrentHedgehog^.Team^.voicepack else - vpHurtEnemy:= PHedgehog(Gear^.Hedgehog)^.Team^.voicepack; + vpHurtEnemy:= Gear^.Hedgehog^.Team^.voicepack; if bBetweenTurns then exit; @@ -83,7 +64,7 @@ if Gear <> CurrentHedgehog^.Gear then inc(CurrentHedgehog^.stats.StepDamageGiven, Gear^.Damage); -if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(DamageClan, Gear^.Damage); +if CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then inc(DamageClan, Gear^.Damage); if Gear^.Health <= Gear^.Damage then begin @@ -92,14 +73,14 @@ inc(KillsTotal); inc(CurrentHedgehog^.Team^.stats.Kills); if (CurrentHedgehog^.Team^.TeamName = - PHedgehog(Gear^.Hedgehog)^.Team^.TeamName) then begin + Gear^.Hedgehog^.Team^.TeamName) then begin inc(CurrentHedgehog^.Team^.stats.TeamKills); inc(CurrentHedgehog^.Team^.stats.TeamDamage, Gear^.Damage); end; - if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(KillsClan); + if CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then inc(KillsClan); end; -inc(PHedgehog(Gear^.Hedgehog)^.stats.StepDamageRecv, Gear^.Damage); +inc(Gear^.Hedgehog^.stats.StepDamageRecv, Gear^.Damage); inc(DamageGiven, Gear^.Damage); inc(DamageTotal, Gear^.Damage) end; @@ -177,7 +158,7 @@ for t:= 0 to Pred(ClansCount) do with ClansArray[t]^ do begin - SendStat(siClanHealth, inttostr(Color) + ' ' + inttostr(ClanHealth)); + SendStat(siClanHealth, IntToStr(Color) + ' ' + IntToStr(ClanHealth)); end; Kills:= 0; @@ -237,8 +218,8 @@ { send player stats for winner teams } if Clan^.ClanHealth > 0 then begin - SendStat(siPlayerKills, inttostr(Clan^.Color) + ' ' + - inttostr(stats.Kills) + ' ' + TeamName); + SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + + IntToStr(stats.Kills) + ' ' + TeamName); end; { determine maximum values of TeamKills, TurnSkips, TeamDamage } @@ -261,25 +242,25 @@ for t:= 0 to Pred(TeamsCount) do begin with TeamsArray[t]^ do begin if Clan^.ClanHealth = 0 then begin - SendStat(siPlayerKills, inttostr(Clan^.Color) + ' ' + - inttostr(stats.Kills) + ' ' + TeamName); + SendStat(siPlayerKills, IntToStr(Clan^.Color) + ' ' + + IntToStr(stats.Kills) + ' ' + TeamName); end; end; end; if msdhh <> nil then - SendStat(siMaxStepDamage, inttostr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); + SendStat(siMaxStepDamage, IntToStr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')'); if mskcnt = 1 then - SendStat(siMaxStepKills, inttostr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')'); + SendStat(siMaxStepKills, IntToStr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')'); if maxTeamKills > 1 then - SendStat(siMaxTeamKills, inttostr(maxTeamKills) + ' ' + maxTeamKillsName); + SendStat(siMaxTeamKills, IntToStr(maxTeamKills) + ' ' + maxTeamKillsName); if maxTurnSkips > 2 then - SendStat(siMaxTurnSkips, inttostr(maxTurnSkips) + ' ' + maxTurnSkipsName); + SendStat(siMaxTurnSkips, IntToStr(maxTurnSkips) + ' ' + maxTurnSkipsName); if maxTeamDamage > 30 then - SendStat(siMaxTeamDamage, inttostr(maxTeamDamage) + ' ' + maxTeamDamageName); + SendStat(siMaxTeamDamage, IntToStr(maxTeamDamage) + ' ' + maxTeamDamageName); -if KilledHHs > 0 then SendStat(siKilledHHs, inttostr(KilledHHs)); +if KilledHHs > 0 then SendStat(siKilledHHs, IntToStr(KilledHHs)); end; procedure initModule;
--- a/hedgewars/uStore.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uStore.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,58 +20,13 @@ unit uStore; interface -uses sysutils, uConsts, uTeams, SDLh, GLunit, uWorld; - - -var PixelFormat: PSDL_PixelFormat; - SDLPrimSurface: PSDL_Surface; - PauseTexture, - SyncTexture, - ConfirmTexture: PTexture; - cScaleFactor: GLfloat; - SupportNPOTT: Boolean; - Step: LongInt; - squaresize : LongInt; - numsquares : LongInt; - ProgrTex: PTexture; - MissionIcons: PSDL_Surface; - ropeIconTex: PTexture; - rotationQt: GLfloat; - wScreen: LongInt; - hScreen: LongInt; - framel, framer, depthl, depthr: GLuint; - texl, texr: GLuint; +uses sysutils, uConsts, SDLh, GLunit, uTypes; procedure initModule; procedure freeModule; procedure StoreLoad; procedure StoreRelease; -procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt); -procedure DrawSprite (Sprite: TSprite; X, Y, Frame: LongInt); -procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt); -procedure DrawSpriteClipped(Sprite: TSprite; X, Y, TopY, RightX, BottomY, LeftX: LongInt); -procedure DrawTexture(X, Y: LongInt; Texture: PTexture; Scale: GLfloat = 1.0); -procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, w, h: LongInt); -procedure DrawRotatedTextureF(Texture: PTexture; Scale, OffsetX, OffsetY: GLfloat; X, Y, Frame, Dir, w, h: LongInt; Angle: real); -procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real); -procedure DrawRotatedF(Sprite: TSprite; X, Y, Frame, Dir: LongInt; Angle: real); -procedure DrawRotatedTex(Tex: PTexture; hw, hh, X, Y, Dir: LongInt; Angle: real); -procedure DrawCentered(X, Top: LongInt; Source: PTexture); -procedure DrawFromRect(X, Y, W, H: LongInt; r: PSDL_Rect; SourceTexture: PTexture); -procedure DrawFromRect(X, Y: LongInt; r: PSDL_Rect; SourceTexture: PTexture); -procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real); -procedure DrawLine(X0, Y0, X1, Y1, Width: Single; r, g, b, a: Byte); -procedure DrawFillRect(r: TSDL_Rect); -procedure DrawCircle(X, Y, Radius: LongInt; Width: Single; r, g, b, a: Byte); -procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; Clear: boolean); -function CheckCJKFont(s: ansistring; font: THWFont): THWFont; -function RenderStringTex(s: ansistring; Color: Longword; font: THWFont): PTexture; -function RenderSpeechBubbleTex(s: ansistring; SpeechType: Longword; font: THWFont): PTexture; -procedure flipSurface(Surface: PSDL_Surface; Vertical: Boolean); -//procedure rotateSurface(Surface: PSDL_Surface); -procedure copyRotatedSurface(src, dest: PSDL_Surface); // this is necessary since width/height are read only in SDL -procedure copyToXY(src, dest: PSDL_Surface; destX, destY: LongInt); procedure RenderHealth(var Hedgehog: THedgehog); procedure AddProgress; procedure FinishProgress; @@ -82,91 +37,14 @@ procedure RenderWeaponTooltip(atype: TAmmoType); procedure ShowWeaponTooltip(x, y: LongInt); procedure FreeWeaponTooltip; -procedure Tint(r, g, b, a: Byte); inline; -procedure Tint(c: Longword); inline; implementation -uses uMisc, uConsole, uLocale, uMobile; +uses uMisc, uConsole, uMobile, uVariables, uUtils, uTextures, uRender, uRenderUtils, uCommands, uDebug; type TGPUVendor = (gvUnknown, gvNVIDIA, gvATI, gvIntel, gvApple); -var HHTexture: PTexture; - MaxTextureSize: LongInt; +var MaxTextureSize: LongInt; cGPUVendor: TGPUVendor; - lastTint: Longword; - -procedure Tint(r, g, b, a: Byte); inline; -var nc: Longword; -begin -nc:= (a shl 24) or (b shl 16) or (g shl 8) or r; -if nc = lastTint then - exit; -glColor4ub(r, g, b, a); -lastTint:= nc; -end; - -procedure Tint(c: Longword); inline; -begin -Tint(((c shr 16) and $FF), ((c shr 8) and $FF), (c and $FF), $FF); -end; - -procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; Clear: boolean); -var r: TSDL_Rect; -begin -r:= rect^; -if Clear then SDL_FillRect(Surface, @r, 0); - -BorderColor:= SDL_MapRGB(Surface^.format, BorderColor shr 16, BorderColor shr 8, BorderColor and $FF); -FillColor:= SDL_MapRGB(Surface^.format, FillColor shr 16, FillColor shr 8, FillColor and $FF); - -r.y:= rect^.y + 1; -r.h:= rect^.h - 2; -SDL_FillRect(Surface, @r, BorderColor); -r.x:= rect^.x + 1; -r.w:= rect^.w - 2; -r.y:= rect^.y; -r.h:= rect^.h; -SDL_FillRect(Surface, @r, BorderColor); -r.x:= rect^.x + 2; -r.y:= rect^.y + 1; -r.w:= rect^.w - 4; -r.h:= rect^.h - 2; -SDL_FillRect(Surface, @r, FillColor); -r.x:= rect^.x + 1; -r.y:= rect^.y + 2; -r.w:= rect^.w - 2; -r.h:= rect^.h - 4; -SDL_FillRect(Surface, @r, FillColor) -end; - -function WriteInRoundRect(Surface: PSDL_Surface; X, Y: LongInt; Color: LongWord; Font: THWFont; s: ansistring): TSDL_Rect; -var w, h: LongInt; - tmpsurf: PSDL_Surface; - clr: TSDL_Color; - finalRect: TSDL_Rect; -begin -w:= 0; h:= 0; // avoid compiler hints -TTF_SizeUTF8(Fontz[Font].Handle, Str2PChar(s), w, h); -finalRect.x:= X; -finalRect.y:= Y; -finalRect.w:= w + FontBorder * 2 + 4; -finalRect.h:= h + FontBorder * 2; -DrawRoundRect(@finalRect, cWhiteColor, endian(cNearBlackColorChannels.value), Surface, true); -clr.r:= (Color shr 16) and $FF; -clr.g:= (Color shr 8) and $FF; -clr.b:= Color and $FF; -tmpsurf:= TTF_RenderUTF8_Blended(Fontz[Font].Handle, Str2PChar(s), clr); -finalRect.x:= X + FontBorder + 2; -finalRect.y:= Y + FontBorder; -SDLTry(tmpsurf <> nil, true); -SDL_UpperBlit(tmpsurf, nil, Surface, @finalRect); -SDL_FreeSurface(tmpsurf); -finalRect.x:= X; -finalRect.y:= Y; -finalRect.w:= w + FontBorder * 2 + 4; -finalRect.h:= h + FontBorder * 2; -WriteInRoundRect:= finalRect; -end; function WriteInRect(Surface: PSDL_Surface; X, Y: LongInt; Color: LongWord; Font: THWFont; s: ansistring): TSDL_Rect; var w, h: LongInt; @@ -242,7 +120,7 @@ // overwrite flag for cpu teams and keep players from using it if (Hedgehogs[0].Gear <> nil) and (Hedgehogs[0].BotLevel > 0) then - Flag:= 'cpu' + if Flag = 'hedgewars' then Flag:= 'cpu' else if Flag = 'cpu' then Flag:= 'hedgewars'; @@ -396,7 +274,9 @@ for ii:= Low(TSprite) to High(TSprite) do with SpritesData[ii] do // FIXME - add a sprite attribute - if ((cReducedQuality and rqNoBackground) = 0) or (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR, sprFlake, sprSplash, sprDroplet])) then // FIXME: hack + if ((cReducedQuality and rqNoBackground) = 0) or // FIXME: should check for both rqNoBackground and rqKillFlakes + (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR, sprFlake, sprSplash, sprDroplet, sprSDSplash, sprSDDroplet]) or + (((Theme = 'Snow') or (Theme = 'Christmas')) and ((ii = sprFlake) or (ii = sprSDFlake)))) then // FIXME: hack; also should checked against rqLowRes begin if AltPath = ptNone then if ii in [sprHorizontL, sprHorizontR, sprSkyL, sprSkyR] then // FIXME: hack @@ -429,7 +309,8 @@ else begin Texture:= Surface2Tex(tmpsurf, false); - if (ii = sprWater) and ((cReducedQuality and (rq2DWater or rqClampLess)) = 0) then // HACK: We should include some sprite attribute to define the texture wrap directions + // HACK: We should include some sprite attribute to define the texture wrap directions + if ((ii = sprWater) or (ii = sprSDWater)) and ((cReducedQuality and (rq2DWater or rqClampLess)) = 0) then glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); end; glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, priority); @@ -483,396 +364,6 @@ {$ENDIF} end; -procedure DrawFromRect(X, Y: LongInt; r: PSDL_Rect; SourceTexture: PTexture); -begin -DrawFromRect(X, Y, r^.w, r^.h, r, SourceTexture) -end; - -procedure DrawFromRect(X, Y, W, H: LongInt; r: PSDL_Rect; SourceTexture: PTexture); -var rr: TSDL_Rect; - _l, _r, _t, _b: real; - VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; -begin -if (SourceTexture^.h = 0) or (SourceTexture^.w = 0) then exit; - -// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) -if (abs(X) > W) and ((abs(X + W / 2) - W / 2) > cScreenWidth / cScaleFactor) then - exit; -if (abs(Y) > H) and ((abs(Y + H / 2 - (0.5 * cScreenHeight)) - H / 2) > cScreenHeight / cScaleFactor) then - exit; - -rr.x:= X; -rr.y:= Y; -rr.w:= W; -rr.h:= H; - -_l:= r^.x / SourceTexture^.w * SourceTexture^.rx; -_r:= (r^.x + r^.w) / SourceTexture^.w * SourceTexture^.rx; -_t:= r^.y / SourceTexture^.h * SourceTexture^.ry; -_b:= (r^.y + r^.h) / SourceTexture^.h * SourceTexture^.ry; - -glBindTexture(GL_TEXTURE_2D, SourceTexture^.id); - -VertexBuffer[0].X:= X; -VertexBuffer[0].Y:= Y; -VertexBuffer[1].X:= rr.w + X; -VertexBuffer[1].Y:= Y; -VertexBuffer[2].X:= rr.w + X; -VertexBuffer[2].Y:= rr.h + Y; -VertexBuffer[3].X:= X; -VertexBuffer[3].Y:= rr.h + Y; - -TextureBuffer[0].X:= _l; -TextureBuffer[0].Y:= _t; -TextureBuffer[1].X:= _r; -TextureBuffer[1].Y:= _t; -TextureBuffer[2].X:= _r; -TextureBuffer[2].Y:= _b; -TextureBuffer[3].X:= _l; -TextureBuffer[3].Y:= _b; - - -glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); -glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); -glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); -end; - -procedure DrawTexture(X, Y: LongInt; Texture: PTexture; Scale: GLfloat); -begin - -glPushMatrix; -glTranslatef(X, Y, 0); -glScalef(Scale, Scale, 1); - -glBindTexture(GL_TEXTURE_2D, Texture^.id); - -glVertexPointer(2, GL_FLOAT, 0, @Texture^.vb); -glTexCoordPointer(2, GL_FLOAT, 0, @Texture^.tb); -glDrawArrays(GL_TRIANGLE_FAN, 0, Length(Texture^.vb)); - -glPopMatrix -end; - -procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, w, h: LongInt); -begin - DrawRotatedTextureF(Texture, Scale, 0, 0, X, Y, Frame, Dir, w, h, 0) -end; - -procedure DrawRotatedTextureF(Texture: PTexture; Scale, OffsetX, OffsetY: GLfloat; X, Y, Frame, Dir, w, h: LongInt; Angle: real); -var ft, fb, fl, fr: GLfloat; - hw, nx, ny: LongInt; - VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; -begin -// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) -if (abs(X) > W) and ((abs(X + dir * OffsetX) - W / 2) * cScaleFactor > cScreenWidth) then - exit; -if (abs(Y) > H) and ((abs(Y + OffsetY - (0.5 * cScreenHeight)) - W / 2) * cScaleFactor > cScreenHeight) then - exit; - -glPushMatrix; -glTranslatef(X, Y, 0); - -if Dir < 0 then - glRotatef(Angle, 0, 0, -1) -else - glRotatef(Angle, 0, 0, 1); - -glTranslatef(Dir*OffsetX, OffsetY, 0); -glScalef(Scale, Scale, 1); - -// Any reason for this call? And why only in t direction, not s? -//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - -if Dir < 0 then - hw:= w div -2 -else - hw:= w div 2; - -nx:= round(Texture^.w / w); // number of horizontal frames -ny:= round(Texture^.h / h); // number of vertical frames - -ft:= (Frame mod ny) * Texture^.ry / ny; -fb:= ((Frame mod ny) + 1) * Texture^.ry / ny; -fl:= (Frame div ny) * Texture^.rx / nx; -fr:= ((Frame div ny) + 1) * Texture^.rx / nx; - -glBindTexture(GL_TEXTURE_2D, Texture^.id); - -VertexBuffer[0].X:= -hw; -VertexBuffer[0].Y:= w / -2; -VertexBuffer[1].X:= hw; -VertexBuffer[1].Y:= w / -2; -VertexBuffer[2].X:= hw; -VertexBuffer[2].Y:= w / 2; -VertexBuffer[3].X:= -hw; -VertexBuffer[3].Y:= w / 2; - -TextureBuffer[0].X:= fl; -TextureBuffer[0].Y:= ft; -TextureBuffer[1].X:= fr; -TextureBuffer[1].Y:= ft; -TextureBuffer[2].X:= fr; -TextureBuffer[2].Y:= fb; -TextureBuffer[3].X:= fl; -TextureBuffer[3].Y:= fb; - -glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); -glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); -glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); - -glPopMatrix -end; - -procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real); -begin - DrawRotatedTex(SpritesData[Sprite].Texture, - SpritesData[Sprite].Width, - SpritesData[Sprite].Height, - X, Y, Dir, Angle) -end; - -procedure DrawRotatedF(Sprite: TSprite; X, Y, Frame, Dir: LongInt; Angle: real); -begin -glPushMatrix; -glTranslatef(X, Y, 0); - -if Dir < 0 then - glRotatef(Angle, 0, 0, -1) -else - glRotatef(Angle, 0, 0, 1); -if Dir < 0 then glScalef(-1.0, 1.0, 1.0); - -DrawSprite(Sprite, -SpritesData[Sprite].Width div 2, -SpritesData[Sprite].Height div 2, Frame); - -glPopMatrix -end; - -procedure DrawRotatedTex(Tex: PTexture; hw, hh, X, Y, Dir: LongInt; Angle: real); -var VertexBuffer: array [0..3] of TVertex2f; -begin -// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) -if (abs(X) > 2 * hw) and ((abs(X) - hw) > cScreenWidth / cScaleFactor) then - exit; -if (abs(Y) > 2 * hh) and ((abs(Y - 0.5 * cScreenHeight) - hh) > cScreenHeight / cScaleFactor) then - exit; - -glPushMatrix; -glTranslatef(X, Y, 0); - -if Dir < 0 then - begin - hw:= - hw; - glRotatef(Angle, 0, 0, -1); - end else - glRotatef(Angle, 0, 0, 1); - - -glBindTexture(GL_TEXTURE_2D, Tex^.id); - -VertexBuffer[0].X:= -hw; -VertexBuffer[0].Y:= -hh; -VertexBuffer[1].X:= hw; -VertexBuffer[1].Y:= -hh; -VertexBuffer[2].X:= hw; -VertexBuffer[2].Y:= hh; -VertexBuffer[3].X:= -hw; -VertexBuffer[3].Y:= hh; - -glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); -glTexCoordPointer(2, GL_FLOAT, 0, @Tex^.tb); -glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); - -glPopMatrix -end; - -procedure DrawSpriteFromRect(Sprite: TSprite; r: TSDL_Rect; X, Y, Height, Position: LongInt); -begin -r.y:= r.y + Height * Position; -r.h:= Height; -DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture) -end; - -procedure DrawSprite (Sprite: TSprite; X, Y, Frame: LongInt); -var row, col, numFramesFirstCol: LongInt; -begin -numFramesFirstCol:= SpritesData[Sprite].imageHeight div SpritesData[Sprite].Height; -row:= Frame mod numFramesFirstCol; -col:= Frame div numFramesFirstCol; -DrawSprite2 (Sprite, X, Y, col, row); -end; - -procedure DrawSpriteClipped(Sprite: TSprite; X, Y, TopY, RightX, BottomY, LeftX: LongInt); -var r: TSDL_Rect; -begin -r.x:= 0; -r.y:= 0; -r.w:= SpritesData[Sprite].Width; -r.h:= SpritesData[Sprite].Height; - -if (X < LeftX) then - r.x:= LeftX - X; -if (Y < TopY) then - r.y:= TopY - Y; - -if (Y + SpritesData[Sprite].Height > BottomY) then - r.h:= BottomY - Y + 1; -if (X + SpritesData[Sprite].Width > RightX) then - r.w:= RightX - X + 1; - -dec(r.h, r.y); -dec(r.w, r.x); - -DrawFromRect(X + r.x, Y + r.y, @r, SpritesData[Sprite].Texture) -end; - -procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt); -var r: TSDL_Rect; -begin - r.x:= FrameX * SpritesData[Sprite].Width; - r.w:= SpritesData[Sprite].Width; - r.y:= FrameY * SpritesData[Sprite].Height; - r.h:= SpritesData[Sprite].Height; - DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture) -end; - -procedure DrawCentered(X, Top: LongInt; Source: PTexture); -var scale: GLfloat; -begin - if (Source^.w + 20) > cScreenWidth then - scale:= cScreenWidth / (Source^.w + 20) - else - scale:= 1.0; - DrawTexture(X - round(Source^.w * scale) div 2, Top, Source, scale) -end; - -procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real); -const VertexBuffer: array [0..3] of TVertex2f = ( - (x: -16; y: -16), - (x: 16; y: -16), - (x: 16; y: 16), - (x: -16; y: 16)); -var l, r, t, b: real; - TextureBuffer: array [0..3] of TVertex2f; -begin -// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) -if (abs(X) > 32) and ((abs(X) - 16) * cScaleFactor > cScreenWidth) then - exit; -if (abs(Y) > 32) and ((abs(Y - 0.5 * cScreenHeight) - 16) * cScaleFactor > cScreenHeight) then - exit; - -t:= Pos * 32 / HHTexture^.h; -b:= (Pos + 1) * 32 / HHTexture^.h; - -if Dir = -1 then - begin - l:= (Step + 1) * 32 / HHTexture^.w; - r:= Step * 32 / HHTexture^.w - end else - begin - l:= Step * 32 / HHTexture^.w; - r:= (Step + 1) * 32 / HHTexture^.w - end; - - -glPushMatrix(); -glTranslatef(X, Y, 0); -glRotatef(Angle, 0, 0, 1); - -glBindTexture(GL_TEXTURE_2D, HHTexture^.id); - -TextureBuffer[0].X:= l; -TextureBuffer[0].Y:= t; -TextureBuffer[1].X:= r; -TextureBuffer[1].Y:= t; -TextureBuffer[2].X:= r; -TextureBuffer[2].Y:= b; -TextureBuffer[3].X:= l; -TextureBuffer[3].Y:= b; - -glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); -glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); -glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); - -glPopMatrix -end; - -procedure DrawLine(X0, Y0, X1, Y1, Width: Single; r, g, b, a: Byte); -var VertexBuffer: array [0..3] of TVertex2f; -begin - glDisable(GL_TEXTURE_2D); - glEnable(GL_LINE_SMOOTH); - - glPushMatrix; - glTranslatef(WorldDx, WorldDy, 0); - glLineWidth(Width); - - Tint(r, g, b, a); - VertexBuffer[0].X:= X0; - VertexBuffer[0].Y:= Y0; - VertexBuffer[1].X:= X1; - VertexBuffer[1].Y:= Y1; - - glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); - glDrawArrays(GL_LINES, 0, Length(VertexBuffer)); - Tint($FF, $FF, $FF, $FF); - - glPopMatrix; - - glEnable(GL_TEXTURE_2D); - glDisable(GL_LINE_SMOOTH); -end; - -procedure DrawFillRect(r: TSDL_Rect); -var VertexBuffer: array [0..3] of TVertex2f; -begin -// don't draw anything outside the visible screen space (first check fixes some sprite drawing, e.g. hedgehogs) -if (abs(r.x) > r.w) and ((abs(r.x + r.w / 2) - r.w / 2) * cScaleFactor > cScreenWidth) then - exit; -if (abs(r.y) > r.h) and ((abs(r.y + r.h / 2 - (0.5 * cScreenHeight)) - r.h / 2) * cScaleFactor > cScreenHeight) then - exit; - -glDisable(GL_TEXTURE_2D); - -Tint($00, $00, $00, $80); - -VertexBuffer[0].X:= r.x; -VertexBuffer[0].Y:= r.y; -VertexBuffer[1].X:= r.x + r.w; -VertexBuffer[1].Y:= r.y; -VertexBuffer[2].X:= r.x + r.w; -VertexBuffer[2].Y:= r.y + r.h; -VertexBuffer[3].X:= r.x; -VertexBuffer[3].Y:= r.y + r.h; - -glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); -glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); - -Tint($FF, $FF, $FF, $FF); -glEnable(GL_TEXTURE_2D) -end; - -procedure DrawCircle(X, Y, Radius: LongInt; Width: Single; r, g, b, a: Byte); -var - i: LongInt; - CircleVertex: array [0..359] of TVertex2f; -begin - for i := 0 to 359 do begin - CircleVertex[i].X := X + Radius*cos(i*pi/180); - CircleVertex[i].Y := Y + Radius*sin(i*pi/180); - end; - glDisable(GL_TEXTURE_2D); - glEnable(GL_LINE_SMOOTH); - glPushMatrix; - glLineWidth(Width); - Tint(r, g, b, a); - glVertexPointer(2, GL_FLOAT, 0, @CircleVertex[0]); - glDrawArrays(GL_LINE_LOOP, 0, 360); - Tint($FF, $FF, $FF, $FF); - glPopMatrix; - glEnable(GL_TEXTURE_2D); - glDisable(GL_LINE_SMOOTH); -end; - procedure StoreRelease; var ii: TSprite; begin @@ -901,247 +392,6 @@ end; -function CheckCJKFont(s: ansistring; font: THWFont): THWFont; -var l, i : LongInt; - u: WideChar; - tmpstr: array[0..256] of WideChar; -begin - -{$IFNDEF IPHONEOS} -// remove chinese fonts for now -if (font >= CJKfnt16) or (length(s) = 0) then -{$ENDIF} - exit(font); - -l:= Utf8ToUnicode(@tmpstr, Str2PChar(s), length(s))-1; -i:= 0; -while i < l do - begin - u:= tmpstr[i]; - if (#$2E80 <= u) and ( - (u <= #$2FDF ) or // CJK Radicals Supplement / Kangxi Radicals - ((#$2FF0 <= u) and (u <= #$303F)) or // Ideographic Description Characters / CJK Radicals Supplement - ((#$31C0 <= u) and (u <= #$31EF)) or // CJK Strokes - ((#$3200 <= u) and (u <= #$4DBF)) or // Enclosed CJK Letters and Months / CJK Compatibility / CJK Unified Ideographs Extension A - ((#$4E00 <= u) and (u <= #$9FFF)) or // CJK Unified Ideographs - ((#$F900 <= u) and (u <= #$FAFF)) or // CJK Compatibility Ideographs - ((#$FE30 <= u) and (u <= #$FE4F))) // CJK Compatibility Forms - then exit(THWFont( ord(font) + ((ord(High(THWFont))+1) div 2) )); - inc(i) - end; -exit(font); -(* two more to check. pascal WideChar is only 16 bit though - ((#$20000 <= u) and (u >= #$2A6DF)) or // CJK Unified Ideographs Extension B - ((#$2F800 <= u) and (u >= #$2FA1F))) // CJK Compatibility Ideographs Supplement *) -end; - -function RenderStringTex(s: ansistring; Color: Longword; font: THWFont): PTexture; -var w, h: LongInt; - finalSurface: PSDL_Surface; -begin -if length(s) = 0 then s:= ' '; -font:= CheckCJKFont(s, font); -w:= 0; h:= 0; // avoid compiler hints -TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(s), w, h); - -finalSurface:= SDL_CreateRGBSurface(SDL_SWSURFACE, w + FontBorder * 2 + 4, h + FontBorder * 2, - 32, RMask, GMask, BMask, AMask); - -TryDo(finalSurface <> nil, 'RenderString: fail to create surface', true); - -WriteInRoundRect(finalSurface, 0, 0, Color, font, s); - -TryDo(SDL_SetColorKey(finalSurface, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); - -RenderStringTex:= Surface2Tex(finalSurface, false); - -SDL_FreeSurface(finalSurface); -end; - -function RenderSpeechBubbleTex(s: ansistring; SpeechType: Longword; font: THWFont): PTexture; -var textWidth, textHeight, x, y, w, h, i, j, pos, prevpos, line, numLines, edgeWidth, edgeHeight, cornerWidth, cornerHeight: LongInt; - finalSurface, tmpsurf, rotatedEdge: PSDL_Surface; - rect: TSDL_Rect; - chars: TSysCharSet = [#9,' ','.',';',':','?','!',',']; - substr: shortstring; - edge, corner, tail: TSPrite; -begin - -case SpeechType of - 1: begin; - edge:= sprSpeechEdge; - corner:= sprSpeechCorner; - tail:= sprSpeechTail; - end; - 2: begin; - edge:= sprThoughtEdge; - corner:= sprThoughtCorner; - tail:= sprThoughtTail; - end; - 3: begin; - edge:= sprShoutEdge; - corner:= sprShoutCorner; - tail:= sprShoutTail; - end; - end; -edgeHeight:= SpritesData[edge].Height; -edgeWidth:= SpritesData[edge].Width; -cornerWidth:= SpritesData[corner].Width; -cornerHeight:= SpritesData[corner].Height; -// This one screws up WrapText -//s:= 'This is the song that never ends. ''cause it goes on and on my friends. Some people, started singing it not knowing what it was. And they''ll just go on singing it forever just because... This is the song that never ends...'; -// This one does not -//s:= 'This is the song that never ends. cause it goes on and on my friends. Some people, started singing it not knowing what it was. And they will go on singing it forever just because... This is the song that never ends... '; - -numLines:= 0; - -if length(s) = 0 then s:= '...'; -font:= CheckCJKFont(s, font); -w:= 0; h:= 0; // avoid compiler hints -TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(s), w, h); -if w<8 then w:= 8; -j:= 0; -if (length(s) > 20) then - begin - w:= 0; - i:= round(Sqrt(length(s)) * 2); - s:= WrapText(s, #1, chars, i); - pos:= 1; prevpos:= 0; line:= 0; -// Find the longest line for the purposes of centring the text. Font dependant. - while pos <= length(s) do - begin - if (s[pos] = #1) or (pos = length(s)) then - begin - inc(numlines); - if s[pos] <> #1 then inc(pos); - while s[prevpos+1] = ' ' do inc(prevpos); - substr:= copy(s, prevpos+1, pos-prevpos-1); - i:= 0; j:= 0; - TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(substr), i, j); - if i > w then w:= i; - prevpos:= pos; - end; - inc(pos); - end; - end -else numLines := 1; - -textWidth:=((w-(cornerWidth-edgeWidth)*2) div edgeWidth)*edgeWidth+edgeWidth; -textHeight:=(((numlines * h + 2)-((cornerHeight-edgeWidth)*2)) div edgeWidth)*edgeWidth; - -textHeight:=max(textHeight,edgeWidth); -//textWidth:=max(textWidth,SpritesData[tail].Width); -rect.x:= 0; -rect.y:= 0; -rect.w:= textWidth + (cornerWidth * 2); -rect.h:= textHeight + cornerHeight*2 - edgeHeight + SpritesData[tail].Height; -//s:= inttostr(w) + ' ' + inttostr(numlines) + ' ' + inttostr(rect.x) + ' '+inttostr(rect.y) + ' ' + inttostr(rect.w) + ' ' + inttostr(rect.h); - -finalSurface:= SDL_CreateRGBSurface(SDL_SWSURFACE, rect.w, rect.h, 32, RMask, GMask, BMask, AMask); - -TryDo(finalSurface <> nil, 'RenderString: fail to create surface', true); - -//////////////////////////////// CORNERS /////////////////////////////// -copyToXY(SpritesData[corner].Surface, finalSurface, 0, 0); /////////////////// NW - -flipSurface(SpritesData[corner].Surface, true); // store all 4 versions in memory to avoid repeated flips? -x:= 0; -y:= textHeight + cornerHeight -1; -copyToXY(SpritesData[corner].Surface, finalSurface, x, y); /////////////////// SW - -flipSurface(SpritesData[corner].Surface, false); -x:= rect.w-cornerWidth-1; -y:= textHeight + cornerHeight -1; -copyToXY(SpritesData[corner].Surface, finalSurface, x, y); /////////////////// SE - -flipSurface(SpritesData[corner].Surface, true); -x:= rect.w-cornerWidth-1; -y:= 0; -copyToXY(SpritesData[corner].Surface, finalSurface, x, y); /////////////////// NE -flipSurface(SpritesData[corner].Surface, false); // restore original position -//////////////////////////////// END CORNERS /////////////////////////////// - -//////////////////////////////// EDGES ////////////////////////////////////// -x:= cornerWidth; -y:= 0; -while x < rect.w-cornerWidth-1 do - begin - copyToXY(SpritesData[edge].Surface, finalSurface, x, y); ///////////////// top edge - inc(x,edgeWidth); - end; -flipSurface(SpritesData[edge].Surface, true); -x:= cornerWidth; -y:= textHeight + cornerHeight*2 - edgeHeight-1; -while x < rect.w-cornerWidth-1 do - begin - copyToXY(SpritesData[edge].Surface, finalSurface, x, y); ///////////////// bottom edge - inc(x,edgeWidth); - end; -flipSurface(SpritesData[edge].Surface, true); // restore original position - -rotatedEdge:= SDL_CreateRGBSurface(SDL_SWSURFACE, edgeHeight, edgeWidth, 32, RMask, GMask, BMask, AMask); -x:= rect.w - edgeHeight - 1; -y:= cornerHeight; -//// initially was going to rotate in place, but the SDL spec claims width/height are read only -copyRotatedSurface(SpritesData[edge].Surface,rotatedEdge); -while y < textHeight + cornerHeight do - begin - copyToXY(rotatedEdge, finalSurface, x, y); - inc(y,edgeWidth); - end; -flipSurface(rotatedEdge, false); // restore original position -x:= 0; -y:= cornerHeight; -while y < textHeight + cornerHeight do - begin - copyToXY(rotatedEdge, finalSurface, x, y); - inc(y,edgeWidth); - end; -//////////////////////////////// END EDGES ////////////////////////////////////// - -x:= cornerWidth; -y:= textHeight + cornerHeight * 2 - edgeHeight - 1; -copyToXY(SpritesData[tail].Surface, finalSurface, x, y); - -rect.x:= edgeHeight; -rect.y:= edgeHeight; -rect.w:= rect.w - edgeHeight * 2; -rect.h:= textHeight + cornerHeight * 2 - edgeHeight * 2; -i:= rect.w; -j:= rect.h; -SDL_FillRect(finalSurface, @rect, cWhiteColor); - -pos:= 1; prevpos:= 0; line:= 0; -while pos <= length(s) do - begin - if (s[pos] = #1) or (pos = length(s)) then - begin - if s[pos] <> #1 then inc(pos); - while s[prevpos+1] = ' 'do inc(prevpos); - substr:= copy(s, prevpos+1, pos-prevpos-1); - if Length(substr) <> 0 then - begin - tmpsurf:= TTF_RenderUTF8_Blended(Fontz[Font].Handle, Str2PChar(substr), cNearBlackColorChannels); - rect.x:= edgeHeight + 1 + ((i - w) div 2); - // trying to more evenly position the text, vertically - rect.y:= edgeHeight + ((j-(numLines*h)) div 2) + line * h; - SDLTry(tmpsurf <> nil, true); - SDL_UpperBlit(tmpsurf, nil, finalSurface, @rect); - SDL_FreeSurface(tmpsurf); - inc(line); - prevpos:= pos; - end; - end; - inc(pos); - end; - -//TryDo(SDL_SetColorKey(finalSurface, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); -RenderSpeechBubbleTex:= Surface2Tex(finalSurface, true); - -SDL_FreeSurface(rotatedEdge); -SDL_FreeSurface(finalSurface); -end; - procedure RenderHealth(var Hedgehog: THedgehog); var s: shortstring; begin @@ -1155,7 +405,7 @@ var tmpsurf: PSDL_Surface; s: shortstring; begin - WriteToConsole(msgLoading + filename + '.png [flags: ' + inttostr(imageFlags) + ']'); + WriteToConsole(msgLoading + filename + '.png [flags: ' + inttostr(imageFlags) + '] '); s:= filename + '.png'; tmpsurf:= IMG_Load(Str2PChar(s)); @@ -1408,82 +658,6 @@ perfExt_FinishProgress(); end; -procedure flipSurface(Surface: PSDL_Surface; Vertical: Boolean); -var y, x, i, j: LongInt; - tmpPixel: Longword; - pixels: PLongWordArray; -begin -TryDo(Surface^.format^.BytesPerPixel = 4, 'flipSurface failed, expecting 32 bit surface', true); -pixels:= Surface^.pixels; -if Vertical then - for y := 0 to (Surface^.h div 2) - 1 do - for x := 0 to Surface^.w - 1 do - begin - i:= y * Surface^.w + x; - j:= (Surface^.h - y - 1) * Surface^.w + x; - tmpPixel:= pixels^[i]; - pixels^[i]:= pixels^[j]; - pixels^[j]:= tmpPixel; - end -else - for x := 0 to (Surface^.w div 2) - 1 do - for y := 0 to Surface^.h -1 do - begin - i:= y*Surface^.w + x; - j:= y*Surface^.w + (Surface^.w - x - 1); - tmpPixel:= pixels^[i]; - pixels^[i]:= pixels^[j]; - pixels^[j]:= tmpPixel; - end; -end; - -procedure copyToXY(src, dest: PSDL_Surface; destX, destY: LongInt); -var srcX, srcY, i, j, maxDest: LongInt; - srcPixels, destPixels: PLongWordArray; - r0, g0, b0, a0, r1, g1, b1, a1: Byte; -begin -maxDest:= (dest^.pitch div 4) * dest^.h; -srcPixels:= src^.pixels; -destPixels:= dest^.pixels; - -for srcX:= 0 to src^.w - 1 do - for srcY:= 0 to src^.h - 1 do - begin - i:= (destY + srcY) * (dest^.pitch div 4) + destX + srcX; - j:= srcY * (src^.pitch div 4) + srcX; - if (i < maxDest) and (srcPixels^[j] and AMask <> 0) then - begin - SDL_GetRGBA(destPixels^[i], dest^.format, @r0, @g0, @b0, @a0); - SDL_GetRGBA(srcPixels^[j], src^.format, @r1, @g1, @b1, @a1); - r0:= (r0 * (255 - LongInt(a1)) + r1 * LongInt(a1)) div 255; - g0:= (g0 * (255 - LongInt(a1)) + g1 * LongInt(a1)) div 255; - b0:= (b0 * (255 - LongInt(a1)) + b1 * LongInt(a1)) div 255; - a0:= (a0 * (255 - LongInt(a1)) + a1 * LongInt(a1)) div 255; - destPixels^[i]:= SDL_MapRGBA(dest^.format, r0, g0, b0, a0); - end; - end; -end; - -procedure copyRotatedSurface(src, dest: PSDL_Surface); // this is necessary since width/height are read only in SDL, apparently -var y, x, i, j: LongInt; - srcPixels, destPixels: PLongWordArray; -begin -TryDo(src^.format^.BytesPerPixel = 4, 'rotateSurface failed, expecting 32 bit surface', true); -TryDo(dest^.format^.BytesPerPixel = 4, 'rotateSurface failed, expecting 32 bit surface', true); - -srcPixels:= src^.pixels; -destPixels:= dest^.pixels; - -j:= 0; -for x := 0 to src^.w - 1 do - for y := 0 to src^.h - 1 do - begin - i:= (src^.h - 1 - y) * (src^.pitch div 4) + x; - destPixels^[j]:= srcPixels^[i]; - inc(j) - end; -end; - function RenderHelpWindow(caption, subcaption, description, extra: ansistring; extracolor: LongInt; iconsurf: PSDL_Surface; iconrect: PSDL_Rect): PTexture; var tmpsurf: PSDL_SURFACE; w, h, i, j: LongInt; @@ -1659,8 +833,85 @@ WeaponTooltipTex:= nil end; +procedure chFullScr(var s: shortstring); +var flags: Longword = 0; + ico: PSDL_Surface; +{$IFDEF DEBUGFILE} + buf: array[byte] of char; +{$ENDIF} +begin + s:= s; // avoid compiler hint + if Length(s) = 0 then cFullScreen:= not cFullScreen + else cFullScreen:= s = '1'; + +{$IFDEF DEBUGFILE} + buf[0]:= char(0); // avoid compiler hint + AddFileLog('Prepare to change video parameters...'); +{$ENDIF} + + flags:= SDL_OPENGL;// or SDL_RESIZABLE; + + if cFullScreen then + flags:= flags or SDL_FULLSCREEN; + +{$IFDEF SDL_IMAGE_NEWER} + WriteToConsole('Init SDL_image... '); + SDLTry(IMG_Init(IMG_INIT_PNG) <> 0, true); + WriteLnToConsole(msgOK); +{$ENDIF} + // load engine icon +{$IFDEF DARWIN} + ico:= LoadImage(Pathz[ptGraphics] + '/hwengine_mac', ifIgnoreCaps); +{$ELSE} + ico:= LoadImage(Pathz[ptGraphics] + '/hwengine', ifIgnoreCaps); +{$ENDIF} + if ico <> nil then + begin + SDL_WM_SetIcon(ico, 0); + SDL_FreeSurface(ico) + end; + + // set window caption + SDL_WM_SetCaption('Hedgewars', nil); + + if SDLPrimSurface <> nil then + begin +{$IFDEF DEBUGFILE} + AddFileLog('Freeing old primary surface...'); +{$ENDIF} + SDL_FreeSurface(SDLPrimSurface); + SDLPrimSurface:= nil; + end; + +{$IFDEF SDL13} + if SDLwindow = nil then + begin + SDLwindow:= SDL_CreateWindow('Hedgewars', 0, 0, cScreenWidth, cScreenHeight, + SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN + {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS{$ENDIF}); + SDL_CreateRenderer(SDLwindow, -1, 0); + end; + + SDL_SetRenderDrawColor(0, 0, 0, 255); + SDL_RenderFill(nil); + SDL_RenderPresent(); +{$ELSE} + SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags); + SDLTry(SDLPrimSurface <> nil, true); + PixelFormat:= SDLPrimSurface^.format; +{$ENDIF} + +{$IFDEF DEBUGFILE} + AddFileLog('Setting up OpenGL...'); + AddFileLog('SDL video driver: ' + shortstring(SDL_VideoDriverName(buf, sizeof(buf)))); +{$ENDIF} + SetupOpenGL(); +end; + procedure initModule; begin + RegisterVariable('fullscr', vtCommand, @chFullScr, true); + PixelFormat:= nil; SDLPrimSurface:= nil;
--- a/hedgewars/uTeams.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uTeams.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,92 +20,11 @@ unit uTeams; interface -uses uConsts, uKeys, uGears, uRandom, uFloat, uStats, uVisualGears, uCollisions, GLunit, uSound; - -type - PHHAmmo = ^THHAmmo; - THHAmmo = array[0..cMaxSlotIndex, 0..cMaxSlotAmmoIndex] of TAmmo; - - PHedgehog = ^THedgehog; - PTeam = ^TTeam; - PClan = ^TClan; - - THedgehog = record - Name: string[MAXNAMELEN]; - Gear: PGear; - SpeechGear: PVisualGear; - NameTagTex, - HealthTagTex, - HatTex: PTexture; - Ammo: PHHAmmo; - CurAmmoType: TAmmoType; - AmmoStore: Longword; - Team: PTeam; - MultiShootAttacks: Longword; - visStepPos: LongWord; - BotLevel : Byte; // 0 - Human player - HatVisibility: GLfloat; - stats: TStatistics; - Hat: shortstring; - InitialHealth: LongInt; // used for gfResetHealth - King: boolean; // Flag for a bunch of hedgehog attributes - Unplaced: boolean; // Flag for hog placing mode - Timer: Longword; - Effects: Array[THogEffect] of boolean; - end; - - TTeam = record - Clan: PClan; - TeamName: string[MAXNAMELEN]; - ExtDriven: boolean; - Binds: TBinds; - Hedgehogs: array[0..cMaxHHIndex] of THedgehog; - CurrHedgehog: LongWord; - NameTagTex: PTexture; - CrosshairTex, - GraveTex, - HealthTex, - AIKillsTex, - FlagTex: PTexture; - Flag: shortstring; - GraveName: shortstring; - FortName: shortstring; - TeamHealth: LongInt; - TeamHealthBarWidth, - NewTeamHealthBarWidth: LongInt; - DrawHealthY: LongInt; - AttackBar: LongWord; - HedgehogsNumber: Longword; - hasGone: boolean; - voicepack: PVoicepack; - PlayerHash: shortstring; // md5 hash of player name. For temporary enabling of hats as thank you. Hashed for privacy of players - stats: TTeamStats; - end; - - TClan = record - Color: Longword; - Teams: array[0..Pred(cMaxTeams)] of PTeam; - TeamsNumber: Longword; - CurrTeam: LongWord; - ClanHealth: LongInt; - ClanIndex: LongInt; - TurnNumber: LongWord; - end; - -var CurrentTeam: PTeam; - PreviousTeam: PTeam; - CurrentHedgehog: PHedgehog; - TeamsArray: array[0..Pred(cMaxTeams)] of PTeam; - TeamsCount: Longword; - ClansArray: array[0..Pred(cMaxTeams)] of PClan; - ClansCount: Longword; - LocalClan: LongInt; // last non-bot, non-extdriven clan - LocalAmmo: LongInt; // last non-bot, non-extdriven clan's first team's ammo index - CurMinAngle, CurMaxAngle: Longword; - GameOver: boolean; +uses uConsts, uKeys, uGears, uRandom, uFloat, uStats, uVisualGears, uCollisions, GLunit, uSound, uTypes; procedure initModule; procedure freeModule; + function AddTeam(TeamColor: Longword): PTeam; procedure SwitchHedgehog; procedure AfterSwitchHedgehog; @@ -114,12 +33,11 @@ procedure RecountTeamHealth(team: PTeam); procedure RestoreTeamsFromSave; function CheckForWin: boolean; -procedure TeamGone(s: shortstring); procedure TeamGoneEffect(var Team: TTeam); -function GetTeamStatString(p: PTeam): shortstring; implementation -uses uMisc, uWorld, uLocale, uAmmos, uChat, uMobile; +uses uLocale, uAmmos, uChat, uMobile, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug, uScript; + const MaxTeamHealth: LongInt = 0; function CheckForWin: boolean; @@ -203,6 +121,19 @@ InsertGearToList(Gear) end end; +// Try to make the ammo menu viewed when not your turn be a bit more useful for per-hog-ammo mode +with CurrentTeam^ do + if ((GameFlags and gfPerHogAmmo) <> 0) and (not ExtDriven) and (CurrentHedgehog^.BotLevel = 0) then + begin + c:= CurrHedgehog; + repeat + begin + inc(c); + if c > cMaxHHIndex then c:= 0 + end + until (c = CurrHedgehog) or (Hedgehogs[c].Gear <> nil); + LocalAmmo:= Hedgehogs[c].AmmoStore + end; c:= CurrentTeam^.Clan^.ClanIndex; repeat @@ -317,6 +248,7 @@ end; perfExt_NewTurnBeginning(); +ScriptCall('onNewTurn'); end; function AddTeam(TeamColor: Longword): PTeam; @@ -380,6 +312,7 @@ if (not ExtDriven) and (Hedgehogs[0].BotLevel = 0) then begin LocalClan:= Clan^.ClanIndex; + LocalTeam:= t; LocalAmmo:= Hedgehogs[0].AmmoStore end; th:= 0; @@ -446,7 +379,7 @@ begin MaxTeamHealth:= NewTeamHealthBarWidth; RecountAllTeamsHealth; - end else NewTeamHealthBarWidth:= (NewTeamHealthBarWidth * cTeamHealthWidth) div MaxTeamHealth + end else if NewTeamHealthBarWidth > 0 then NewTeamHealthBarWidth:= (NewTeamHealthBarWidth * cTeamHealthWidth) div MaxTeamHealth end; RecountClanHealth(team^.Clan); @@ -461,7 +394,103 @@ TeamsArray[t]^.ExtDriven:= false end; -procedure TeamGone(s: shortstring); +procedure TeamGoneEffect(var Team: TTeam); +var i: LongInt; +begin +with Team do + for i:= 0 to cMaxHHIndex do + with Hedgehogs[i] do + if Gear <> nil then + begin + Gear^.Invulnerable:= false; + Gear^.Damage:= Gear^.Health + end +end; + +procedure chAddHH(var id: shortstring); +var s: shortstring; + Gear: PGear; +begin + s:= ''; + if (not isDeveloperMode) or (CurrentTeam = nil) then exit; + with CurrentTeam^ do + begin + SplitBySpace(id, s); + CurrentHedgehog:= @Hedgehogs[HedgehogsNumber]; + val(id, CurrentHedgehog^.BotLevel); + Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0); + SplitBySpace(s, id); + val(s, Gear^.Health); + TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true); + Gear^.Hedgehog^.Team:= CurrentTeam; + if (GameFlags and gfSharedAmmo) <> 0 then CurrentHedgehog^.AmmoStore:= Clan^.ClanIndex + else if (GameFlags and gfPerHogAmmo) <> 0 then + begin + AddAmmoStore; + CurrentHedgehog^.AmmoStore:= StoreCnt - 1 + end + else CurrentHedgehog^.AmmoStore:= TeamsCount - 1; + CurrentHedgehog^.Gear:= Gear; + CurrentHedgehog^.Name:= id; + CurrentHedgehog^.InitialHealth:= Gear^.Health; + CurrHedgehog:= HedgehogsNumber; + inc(HedgehogsNumber) + end +end; + +procedure chAddTeam(var s: shortstring); +var Color: Longword; + ts, cs: shortstring; +begin + cs:= ''; + ts:= ''; + if isDeveloperMode then + begin + SplitBySpace(s, cs); + SplitBySpace(cs, ts); + val(cs, Color); + TryDo(Color <> 0, 'Error: black team color', true); + + // color is always little endian so the mask must be constant also in big endian archs + Color:= Color or $FF000000; + + AddTeam(Color); + CurrentTeam^.TeamName:= ts; + CurrentTeam^.PlayerHash:= s; + if GameType in [gmtDemo, gmtSave] then CurrentTeam^.ExtDriven:= true; + + CurrentTeam^.voicepack:= AskForVoicepack('Default') + end +end; + +procedure chSetHHCoords(var x: shortstring); +var y: shortstring; + t: Longint; +begin +y:= ''; +if (not isDeveloperMode) or (CurrentHedgehog = nil) or (CurrentHedgehog^.Gear = nil) then exit; +SplitBySpace(x, y); +val(x, t); +CurrentHedgehog^.Gear^.X:= int2hwFloat(t); +val(y, t); +CurrentHedgehog^.Gear^.Y:= int2hwFloat(t) +end; + +procedure chBind(var id: shortstring); +var s: shortstring; + b: LongInt; +begin +s:= ''; +if CurrentTeam = nil then exit; +SplitBySpace(id, s); +if s[1]='"' then Delete(s, 1, 1); +if s[byte(s[0])]='"' then Delete(s, byte(s[0]), 1); +b:= KeyNameToCode(id); +if b = 0 then OutError(errmsgUnknownVariable + ' "' + id + '"', false) + else CurrentTeam^.Binds[b]:= s +end; + +procedure chTeamGone(var s:shortstring); var t: LongInt; begin t:= 0; @@ -479,34 +508,22 @@ RecountTeamHealth(TeamsArray[t]) end; -procedure TeamGoneEffect(var Team: TTeam); -var i: LongInt; -begin -with Team do - for i:= 0 to cMaxHHIndex do - with Hedgehogs[i] do - if Gear <> nil then - begin - Gear^.Invulnerable:= false; - Gear^.Damage:= Gear^.Health - end -end; - -function GetTeamStatString(p: PTeam): shortstring; -var s: ansistring; -begin - s:= p^.TeamName + ':' + inttostr(p^.TeamHealth) + ':'; - GetTeamStatString:= s; -end; procedure initModule; begin + RegisterVariable('addhh', vtCommand, @chAddHH, false); + RegisterVariable('addteam', vtCommand, @chAddTeam, false); + RegisterVariable('hhcoords', vtCommand, @chSetHHCoords, false); + RegisterVariable('bind', vtCommand, @chBind, true ); + RegisterVariable('teamgone', vtCommand, @chTeamGone, true ); + CurrentTeam:= nil; PreviousTeam:= nil; CurrentHedgehog:= nil; TeamsCount:= 0; ClansCount:= 0; LocalClan:= -1; + LocalTeam:= -1; LocalAmmo:= -1; GameOver:= false end;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uTextures.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,187 @@ +{$INCLUDE "options.inc"} + +unit uTextures; +interface +uses SDLh, uTypes; + +function NewTexture(width, height: Longword; buf: Pointer): PTexture; +function Surface2Tex(surf: PSDL_Surface; enableClamp: boolean): PTexture; +procedure FreeTexture(tex: PTexture); + +procedure initModule; +procedure freeModule; + +implementation +uses GLunit, uUtils, uVariables, uConsts, uDebug; + +var TextureList: PTexture; + + +procedure SetTextureParameters(enableClamp: Boolean); +begin + if enableClamp and ((cReducedQuality and rqClampLess) = 0) then + begin + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) + end; + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) +end; + +procedure ResetVertexArrays(texture: PTexture); +begin +with texture^ do + begin + vb[0].X:= 0; + vb[0].Y:= 0; + vb[1].X:= w; + vb[1].Y:= 0; + vb[2].X:= w; + vb[2].Y:= h; + vb[3].X:= 0; + vb[3].Y:= h; + + tb[0].X:= 0; + tb[0].Y:= 0; + tb[1].X:= rx; + tb[1].Y:= 0; + tb[2].X:= rx; + tb[2].Y:= ry; + tb[3].X:= 0; + tb[3].Y:= ry + end; +end; + +function NewTexture(width, height: Longword; buf: Pointer): PTexture; +begin +new(NewTexture); +NewTexture^.PrevTexture:= nil; +NewTexture^.NextTexture:= nil; +NewTexture^.Scale:= 1; +if TextureList <> nil then + begin + TextureList^.PrevTexture:= NewTexture; + NewTexture^.NextTexture:= TextureList + end; +TextureList:= NewTexture; + +NewTexture^.w:= width; +NewTexture^.h:= height; +NewTexture^.rx:= 1.0; +NewTexture^.ry:= 1.0; + +ResetVertexArrays(NewTexture); + +glGenTextures(1, @NewTexture^.id); + +glBindTexture(GL_TEXTURE_2D, NewTexture^.id); +glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf); + +SetTextureParameters(true); +end; + +function Surface2Tex(surf: PSDL_Surface; enableClamp: boolean): PTexture; +var tw, th, x, y: Longword; + tmpp: pointer; + fromP4, toP4: PLongWordArray; +begin +new(Surface2Tex); +Surface2Tex^.PrevTexture:= nil; +Surface2Tex^.NextTexture:= nil; +if TextureList <> nil then + begin + TextureList^.PrevTexture:= Surface2Tex; + Surface2Tex^.NextTexture:= TextureList + end; +TextureList:= Surface2Tex; + +Surface2Tex^.w:= surf^.w; +Surface2Tex^.h:= surf^.h; + +if (surf^.format^.BytesPerPixel <> 4) then + begin + TryDo(false, 'Surface2Tex failed, expecting 32 bit surface', true); + Surface2Tex^.id:= 0; + exit + end; + + +glGenTextures(1, @Surface2Tex^.id); + +glBindTexture(GL_TEXTURE_2D, Surface2Tex^.id); + +if SDL_MustLock(surf) then + SDLTry(SDL_LockSurface(surf) >= 0, true); + +if (not SupportNPOTT) and (not (isPowerOf2(Surf^.w) and isPowerOf2(Surf^.h))) then + begin + tw:= toPowerOf2(Surf^.w); + th:= toPowerOf2(Surf^.h); + + Surface2Tex^.rx:= Surf^.w / tw; + Surface2Tex^.ry:= Surf^.h / th; + + GetMem(tmpp, tw * th * surf^.format^.BytesPerPixel); + + fromP4:= Surf^.pixels; + toP4:= tmpp; + + for y:= 0 to Pred(Surf^.h) do + begin + for x:= 0 to Pred(Surf^.w) do toP4^[x]:= fromP4^[x]; + for x:= Surf^.w to Pred(tw) do toP4^[x]:= 0; + toP4:= @(toP4^[tw]); + fromP4:= @(fromP4^[Surf^.pitch div 4]) + end; + + for y:= Surf^.h to Pred(th) do + begin + for x:= 0 to Pred(tw) do toP4^[x]:= 0; + toP4:= @(toP4^[tw]) + end; + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tw, th, 0, GL_RGBA, GL_UNSIGNED_BYTE, tmpp); + + FreeMem(tmpp, tw * th * surf^.format^.BytesPerPixel) + end +else + begin + Surface2Tex^.rx:= 1.0; + Surface2Tex^.ry:= 1.0; + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surf^.w, surf^.h, 0, GL_RGBA, GL_UNSIGNED_BYTE, surf^.pixels); + end; + +ResetVertexArrays(Surface2Tex); + +if SDL_MustLock(surf) then + SDL_UnlockSurface(surf); + +SetTextureParameters(enableClamp); +end; + +procedure FreeTexture(tex: PTexture); +begin + if tex <> nil then + begin + if tex^.NextTexture <> nil then + tex^.NextTexture^.PrevTexture:= tex^.PrevTexture; + if tex^.PrevTexture <> nil then + tex^.PrevTexture^.NextTexture:= tex^.NextTexture + else + TextureList:= tex^.NextTexture; + glDeleteTextures(1, @tex^.id); + Dispose(tex); + end +end; + +procedure initModule; +begin +TextureList:= nil; +end; + +procedure freeModule; +begin + while TextureList <> nil do FreeTexture(TextureList); +end; + +end. \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uTypes.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,376 @@ +{$INCLUDE "options.inc"} + +unit uTypes; +interface + +uses SDLh, uFloat, GLunit, uConsts, Math; + +// NOTE: typed const is a variable despite const qualifier +// in freepascal you may actually use var for the same purpose + +type + HwColor4f = record + r, g, b, a: byte + end; + + TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit, gsSuspend); + + TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax); + + TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps, + ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts, + ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps, ptSuddenDeath); + + TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame, + sprLag, sprArrow, sprBazookaShell, sprTargetP, sprBee, + sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff, + sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower, + sprClusterBomb, sprClusterParticle, sprFlame, sprHorizont, + sprHorizontL, sprHorizontR, sprSky, sprSkyL, + sprSkyR, sprAMBorderHorizontal, sprAMBorderVertical, sprAMSlot, sprAMAmmos, + sprAMSlotKeys, sprAMCorners, sprFinger, sprAirBomb, + sprAirplane, sprAmAirplane, sprAmGirder, sprHHTelepMask, + sprSwitch, sprParachute, sprTarget, sprRopeNode, + sprQuestion, sprPowerBar, sprWindBar, sprWindL, sprWindR, + sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun, + sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer, + sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath, + sprShotgun, sprDEagle, sprHHIdle, sprMortar, sprTurnsLeft, + sprKamikaze, sprWhip, sprKowtow, sprSad, sprWave, + sprHurrah, sprLemonade, sprShrug, sprJuggle, sprExplPart, sprExplPart2, + sprCakeWalk, sprCakeDown, sprAMAmmosBW, sprWatermelon, + sprEvilTrace, sprHellishBomb, sprSeduction, sprDress, + sprCensored, sprDrill, sprHandDrill, sprHandBallgun, sprBalls, + sprPlane, sprHandPlane, sprUtility, sprInvulnerable, sprVampiric, sprGirder, + sprSpeechCorner, sprSpeechEdge, sprSpeechTail, + sprThoughtCorner, sprThoughtEdge, sprThoughtTail, + sprShoutCorner, sprShoutEdge, sprShoutTail, + sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov, + sprSmoke, sprSmokeWhite, sprShell, sprDust, sprExplosives, sprExplosivesRoll, + sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction, + sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster, + sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp, + sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee, + sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal, + sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote, + sprSMineOff, sprSMineOn, sprHandSMine, sprHammer, + sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb, + sprBulletHit, sprSnowball, sprHandSnowball, sprSnow, + sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet + ); + + // Gears that interact with other Gears and/or Land + TGearType = (gtBomb, gtHedgehog, gtShell, gtGrave, gtBee, // 4 + gtShotgunShot, gtPickHammer, gtRope, gtMine, gtCase, // 9 + gtDEagleShot, gtDynamite, gtClusterBomb, gtCluster, gtShover, // 14 + gtFlame, gtFirePunch, gtATStartGame, gtATSmoothWindCh, // 18 + gtATFinishGame, gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, // 23 + gtGirder, gtTeleport, gtSwitcher, gtTarget, gtMortar, // 28 + gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 34 + gtHellishBomb, gtWaterUp, gtDrill, gtBallGun, gtBall, gtRCPlane, // 40 + gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45 + gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51 + gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector, // 56 + gtNapalmBomb, gtSnowball, gtFlake); // 58 + + // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.) + TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, + vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble, + vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, + vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg, + vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion, + vgtBigExplosion, vgtChunk, vgtNote, vgtLineTrail, vgtBulletHit, vgtCircle); + + TGearsType = set of TGearType; + + TDamageSource = (dsUnknown, dsFall, dsBullet, dsExplosion, dsShove, dsPoison); + + TSound = (sndNone, + sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease, + sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact, + sndMineTick, sndPickhammer, sndGun, sndBee, sndJump1, sndJump2, + sndJump3, sndYesSir, sndLaugh, sndIllGetYou, sndIncoming, + sndMissed, sndStupid, sndFirstBlood, sndBoring, sndByeBye, + sndSameTeam, sndNutter, sndReinforce, sndTraitor, sndRegret, + sndEnemyDown, sndCoward, sndHurry, sndWatchIt, sndKamikaze, + sndCake, sndOw1, sndOw2, sndOw3, sndOw4, sndFirePunch1, sndFirePunch2, + sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6, + sndMelon, sndHellish, sndYoohoo, sndRCPlane, sndWhipCrack, + sndRideOfTheValkyries, sndDenied, sndPlaced, sndBaseballBat, + sndVaporize, sndWarp, sndSuddenDeath, sndMortar, sndShutter, + sndHomerun, sndMolotov, sndCover, sndUhOh, sndOops, + sndNooo, sndHello, sndRopeShot, sndRopeAttach, sndRopeRelease, + sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity, + sndHellishImpact1, sndHellishImpact2, sndHellishImpact3, sndHellishImpact4, + sndMelonImpact, sndDroplet1, sndDroplet2, sndDroplet3, sndEggBreak, sndDrillRocket, + sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater, + sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8, + sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3, sndWhack, + sndComeonthen, sndParachute, sndBump, sndResurrector); + + TAmmoType = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, // 6 + amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, // 13 + amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch, // 18 + amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake, // 24 + amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, // 30 + amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35 + amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42 + amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48 + amResurrector, amDrillStrike, amSnowball); + + TCrateType = (HealthCrate, AmmoCrate, UtilityCrate); + + THWFont = (fnt16, fntBig, fntSmall {$IFNDEF IPHONEOS}, CJKfnt16, CJKfntBig, CJKfntSmall{$ENDIF}); + + TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume, + capgrpMessage, capgrpAmmostate); + + TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs, + siClanHealth, siTeamStats, siPlayerKills, siMaxTeamDamage, + siMaxTeamKills, siMaxTurnSkips ); + + TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle); + + TRenderMode = (rmDefault, rmLeftEye, rmRightEye); + TStereoMode = (smNone, smRedCyan, smCyanRed, smRedBlue, smBlueRed, smRedGreen, smGreenRed, smHorizontal, smVertical, smAFR); + + THHFont = record + Handle: PTTF_Font; + Height: LongInt; + style: LongInt; + Name: string[21]; + end; + + PAmmo = ^TAmmo; + TAmmo = record + Propz: LongWord; + Count: LongWord; +(* Using for place hedgehogs mode, but for any other situation where the initial count would be needed I guess. +For example, say, a mode where the weaponset is reset each turn, or on sudden death *) + NumPerTurn: LongWord; + Timer: LongWord; + Pos: LongWord; + AmmoType: TAmmoType; + AttackVoice: TSound; + end; + + TVertex2f = record + X, Y: GLfloat; + end; + + TVertex2i = record + X, Y: GLint; + end; + + PTexture = ^TTexture; + TTexture = record + id: GLuint; + w, h, scale: LongInt; + rx, ry: GLfloat; + priority: GLfloat; + vb, tb: array [0..3] of TVertex2f; + PrevTexture, NextTexture: PTexture; + end; + + THogEffect = (heInvulnerable, heResurrectable, hePoisoned, heResurrected); + + TScreenFade = (sfNone, sfInit, sfToBlack, sfFromBlack, sfToWhite, sfFromWhite); + + PGear = ^TGear; + PHedgehog = ^THedgehog; + PTeam = ^TTeam; + PClan = ^TClan; + + TGearStepProcedure = procedure (Gear: PGear); + TGear = record + NextGear, PrevGear: PGear; + Active: Boolean; + AdvBounce: Longword; + Invulnerable: Boolean; + RenderTimer: Boolean; + AmmoType : TAmmoType; + State : Longword; + X : hwFloat; + Y : hwFloat; + dX: hwFloat; + dY: hwFloat; + Kind: TGearType; + Pos: Longword; + doStep: TGearStepProcedure; + Radius: LongInt; + Angle, Power : Longword; + DirAngle: real; + Timer : LongWord; + Elasticity: hwFloat; + Friction : hwFloat; + Density : hwFloat; + Message, MsgParam : Longword; + Hedgehog: PHedgehog; + Health, Damage, Karma: LongInt; + CollisionIndex: LongInt; + Tag: LongInt; + Tex: PTexture; + Z: Longword; + IntersectGear: PGear; + FlightTime: Longword; + uid: Longword; + ImpactSound: TSound; // first sound, others have to be after it in the sounds def. + nImpactSounds: Word; // count of ImpactSounds + SoundChannel: LongInt; + PortalCounter: LongWord // Hopefully temporary, but avoids infinite portal loops in a guaranteed fashion. + end; + TPGearArray = Array of PGear; + + PVisualGear = ^TVisualGear; + TVGearStepProcedure = procedure (Gear: PVisualGear; Steps: Longword); + TVisualGear = record + NextGear, PrevGear: PVisualGear; + Frame, + FrameTicks: Longword; + X : real; + Y : real; + dX: real; + dY: real; + tdX: real; + tdY: real; + State : Longword; + Timer: Longword; + Angle, dAngle: real; + Kind: TVisualGearType; + doStep: TVGearStepProcedure; + Tex: PTexture; + alpha, scale: GLfloat; + Hedgehog: PHedgehog; + Text: shortstring; + Tint: Longword; + uid: Longword; + end; + + TStatistics = record + DamageRecv, + DamageGiven: Longword; + StepDamageRecv, + StepDamageGiven, + StepKills: Longword; + MaxStepDamageRecv, + MaxStepDamageGiven, + MaxStepKills: Longword; + FinishedTurns: Longword; + end; + + TTeamStats = record + Kills : Longword; + AIKills : Longword; + TeamKills : Longword; + TurnSkips : Longword; + TeamDamage : Longword; + end; + + TBinds = array[0..cKeyMaxIndex] of shortstring; + TKeyboardState = array[0..cKeyMaxIndex] of Byte; + + PVoicepack = ^TVoicepack; + TVoicepack = record + name: shortstring; + chunks: array [TSound] of PMixChunk; + end; + + PHHAmmo = ^THHAmmo; + THHAmmo = array[0..cMaxSlotIndex, 0..cMaxSlotAmmoIndex] of TAmmo; + + THedgehog = record + Name: string[MAXNAMELEN]; + Gear: PGear; + SpeechGear: PVisualGear; + NameTagTex, + HealthTagTex, + HatTex: PTexture; + Ammo: PHHAmmo; + CurAmmoType: TAmmoType; + AmmoStore: Longword; + Team: PTeam; + MultiShootAttacks: Longword; + visStepPos: LongWord; + BotLevel : Byte; // 0 - Human player + HatVisibility: GLfloat; + stats: TStatistics; + Hat: shortstring; + InitialHealth: LongInt; // used for gfResetHealth + King: boolean; // Flag for a bunch of hedgehog attributes + Unplaced: boolean; // Flag for hog placing mode + Timer: Longword; + Effects: Array[THogEffect] of boolean; + end; + + TTeam = record + Clan: PClan; + TeamName: string[MAXNAMELEN]; + ExtDriven: boolean; + Binds: TBinds; + Hedgehogs: array[0..cMaxHHIndex] of THedgehog; + CurrHedgehog: LongWord; + NameTagTex: PTexture; + CrosshairTex, + GraveTex, + HealthTex, + AIKillsTex, + FlagTex: PTexture; + Flag: shortstring; + GraveName: shortstring; + FortName: shortstring; + TeamHealth: LongInt; + TeamHealthBarWidth, + NewTeamHealthBarWidth: LongInt; + DrawHealthY: LongInt; + AttackBar: LongWord; + HedgehogsNumber: Longword; + hasGone: boolean; + voicepack: PVoicepack; + PlayerHash: shortstring; // md5 hash of player name. For temporary enabling of hats as thank you. Hashed for privacy of players + stats: TTeamStats; + end; + + TClan = record + Color: Longword; + Teams: array[0..Pred(cMaxTeams)] of PTeam; + TeamsNumber: Longword; + CurrTeam: LongWord; + ClanHealth: LongInt; + ClanIndex: LongInt; + TurnNumber: LongWord; + end; + + TAmmoStrId = (sidGrenade, sidClusterBomb, sidBazooka, sidBee, sidShotgun, + sidPickHammer, sidSkip, sidRope, sidMine, sidDEagle, + sidDynamite, sidBaseballBat, sidFirePunch, sidSeconds, + sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch, + sidGirder, sidTeleport, sidSwitch, sidMortar, sidWhip, + sidKamikaze, sidCake, sidSeduction, sidWatermelon, + sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane, + sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime, + sidLaserSight, sidVampiric, sidSniperRifle, sidJetpack, + sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb, sidSineGun, sidFlamethrower, + sidSMine, sidHammer, sidResurrector, sidDrillStrike, sidSnowball, sidNothing); + + TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused, + sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync, + sidNoEndTurn, sidNotYetAvailable, sidRoundSD, sidRoundsSD, sidReady); + + TEventId = (eidDied, eidDrowned, eidRoundStart, eidRoundWin, eidRoundDraw, + eidNewHealthPack, eidNewAmmoPack, eidNewUtilityPack, eidTurnSkipped, eidHurtSelf, + eidHomerun, eidGone); + + TGoalStrId = (gidCaption, gidSubCaption, gidForts, gidLowGravity, gidInvulnerable, + gidVampiric, gidKarma, gidKing, gidPlaceHog, gidArtillery, + gidSolidLand, gidSharedAmmo, gidMineTimer, gidNoMineTimer, gidRandomMineTimer, + gidDamageModifier, gidResetHealth, gidAISurvival, gidInfAttack, gidResetWeps, gidPerHogAmmo); + + TLandArray = packed array of array of LongWord; + TCollisionArray = packed array of array of Word; + TPreview = packed array[0..127, 0..31] of byte; + TDirtyTag = packed array of array of byte; + + +implementation + +end.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uUtils.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,356 @@ +{$INCLUDE "options.inc"} +unit uUtils; + +interface +uses uTypes, uFloat, GLunit; + +procedure SplitBySpace(var a, b: shortstring); +procedure SplitByChar(var a, b: ansistring; c: char); + +function EnumToStr(const en : TGearType) : shortstring; overload; +function EnumToStr(const en : TVisualGearType) : shortstring; overload; +function EnumToStr(const en : TSound) : shortstring; overload; +function EnumToStr(const en : TAmmoType) : shortstring; overload; +function EnumToStr(const en : THogEffect) : shortstring; overload; + +function Min(a, b: LongInt): LongInt; inline; +function Max(a, b: LongInt): LongInt; inline; + +function IntToStr(n: LongInt): shortstring; +function FloatToStr(n: hwFloat): shortstring; + +function DxDy2Angle(const _dY, _dX: hwFloat): GLfloat; +function DxDy2Angle32(const _dY, _dX: hwFloat): LongInt; +function DxDy2AttackAngle(const _dY, _dX: hwFloat): LongInt; + +procedure SetLittle(var r: hwFloat); + +function Str2PChar(const s: shortstring): PChar; +function DecodeBase64(s: shortstring): shortstring; + +function isPowerOf2(i: Longword): boolean; +function toPowerOf2(i: Longword): Longword; inline; + +function endian(independent: LongWord): LongWord; inline; + +function CheckCJKFont(s: ansistring; font: THWFont): THWFont; + +{$IFDEF DEBUGFILE} +procedure AddFileLog(s: shortstring); +{$ENDIF} + +function CheckNoTeamOrHH: boolean; inline; + +function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; +function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; + +procedure initModule; +procedure freeModule; + + +implementation +uses typinfo, Math, uConsts, uVariables, SysUtils; + +{$IFDEF DEBUGFILE} +var f: textfile; +{$ENDIF} + +// should this include "strtolower()" for the split string? +procedure SplitBySpace(var a, b: shortstring); +var i, t: LongInt; +begin +i:= Pos(' ', a); +if i > 0 then + begin + for t:= 1 to Pred(i) do + if (a[t] >= 'A')and(a[t] <= 'Z') then Inc(a[t], 32); + b:= copy(a, i + 1, Length(a) - i); + byte(a[0]):= Pred(i) + end else b:= ''; +end; + +procedure SplitByChar(var a, b: ansistring; c: char); +var i: LongInt; +begin +i:= Pos(c, a); +if i > 0 then + begin + b:= copy(a, i + 1, Length(a) - i); + setlength(a, Pred(i)); + end else b:= ''; +end; + +function EnumToStr(const en : TGearType) : shortstring; overload; +begin +EnumToStr:= GetEnumName(TypeInfo(TGearType), ord(en)) +end; +function EnumToStr(const en : TVisualGearType) : shortstring; overload; +begin +EnumToStr:= GetEnumName(TypeInfo(TVisualGearType), ord(en)) +end; + +function EnumToStr(const en : TSound) : shortstring; overload; +begin +EnumToStr:= GetEnumName(TypeInfo(TSound), ord(en)) +end; + +function EnumToStr(const en : TAmmoType) : shortstring; overload; +begin +EnumToStr:= GetEnumName(TypeInfo(TAmmoType), ord(en)) +end; + +function EnumToStr(const en: THogEffect) : shortstring; overload; +begin + EnumToStr := GetEnumName(TypeInfo(THogEffect), ord(en)) +end; + + +function Min(a, b: LongInt): LongInt; +begin +if a < b then Min:= a else Min:= b +end; + +function Max(a, b: LongInt): LongInt; +begin +if a > b then Max:= a else Max:= b +end; + + +function IntToStr(n: LongInt): shortstring; +begin +str(n, IntToStr) +end; + +function FloatToStr(n: hwFloat): shortstring; +begin +FloatToStr:= cstr(n) + '_' + inttostr(Lo(n.QWordValue)) +end; + + +function DxDy2Angle(const _dY, _dX: hwFloat): GLfloat; +var dY, dX: Extended; +begin +dY:= _dY.QWordValue / $100000000; +if _dY.isNegative then dY:= - dY; +dX:= _dX.QWordValue / $100000000; +if _dX.isNegative then dX:= - dX; +DxDy2Angle:= arctan2(dY, dX) * 180 / pi +end; + +function DxDy2Angle32(const _dY, _dX: hwFloat): LongInt; +const _16divPI: Extended = 16/pi; +var dY, dX: Extended; +begin +dY:= _dY.QWordValue / $100000000; +if _dY.isNegative then dY:= - dY; +dX:= _dX.QWordValue / $100000000; +if _dX.isNegative then dX:= - dX; +DxDy2Angle32:= trunc(arctan2(dY, dX) * _16divPI) and $1f +end; + +function DxDy2AttackAngle(const _dY, _dX: hwFloat): LongInt; +const MaxAngleDivPI: Extended = cMaxAngle/pi; +var dY, dX: Extended; +begin +dY:= _dY.QWordValue / $100000000; +if _dY.isNegative then dY:= - dY; +dX:= _dX.QWordValue / $100000000; +if _dX.isNegative then dX:= - dX; +DxDy2AttackAngle:= trunc(arctan2(dY, dX) * MaxAngleDivPI) +end; + + +procedure SetLittle(var r: hwFloat); +begin +r:= SignAs(cLittle, r) +end; + + +function isPowerOf2(i: Longword): boolean; +begin +if i = 0 then exit(true); +while not odd(i) do i:= i shr 1; +isPowerOf2:= (i = 1) +end; + +function toPowerOf2(i: Longword): Longword; +begin +toPowerOf2:= 1; +while (toPowerOf2 < i) do toPowerOf2:= toPowerOf2 shl 1 +end; + + +function DecodeBase64(s: shortstring): shortstring; +const table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +var i, t, c: Longword; +begin +c:= 0; +for i:= 1 to Length(s) do + begin + t:= Pos(s[i], table); + if s[i] = '=' then inc(c); + if t > 0 then byte(s[i]):= t - 1 else byte(s[i]):= 0 + end; + +i:= 1; +t:= 1; +while i <= length(s) do + begin + DecodeBase64[t ]:= char((byte(s[i ]) shl 2) or (byte(s[i + 1]) shr 4)); + DecodeBase64[t + 1]:= char((byte(s[i + 1]) shl 4) or (byte(s[i + 2]) shr 2)); + DecodeBase64[t + 2]:= char((byte(s[i + 2]) shl 6) or (byte(s[i + 3]) )); + inc(t, 3); + inc(i, 4) + end; + +if c < 3 then t:= t - c; + +byte(DecodeBase64[0]):= t - 1 +end; + + +function Str2PChar(const s: shortstring): PChar; +const CharArray: array[byte] of Char = ''; +begin +CharArray:= s; +CharArray[Length(s)]:= #0; +Str2PChar:= @CharArray +end; + + +function endian(independent: LongWord): LongWord; inline; +begin +{$IFDEF ENDIAN_LITTLE} +endian:= independent; +{$ELSE} +endian:= (((independent and $FF000000) shr 24) or + ((independent and $00FF0000) shr 8) or + ((independent and $0000FF00) shl 8) or + ((independent and $000000FF) shl 24)) +{$ENDIF} +end; + + +{$IFDEF DEBUGFILE} +procedure AddFileLog(s: shortstring); +begin +writeln(f, GameTicks: 6, ': ', s); +flush(f) +end; +{$ENDIF} + + +function CheckCJKFont(s: ansistring; font: THWFont): THWFont; +var l, i : LongInt; + u: WideChar; + tmpstr: array[0..256] of WideChar; +begin + +{$IFNDEF IPHONEOS} +// remove chinese fonts for now +if (font >= CJKfnt16) or (length(s) = 0) then +{$ENDIF} + exit(font); + +l:= Utf8ToUnicode(@tmpstr, Str2PChar(s), length(s))-1; +i:= 0; + +while i < l do + begin + u:= tmpstr[i]; + if (#$1100 <= u) and ( + (u <= #$11FF ) or // Hangul Jamo + ((#$2E80 <= u) and (u <= #$2FDF)) or // CJK Radicals Supplement / Kangxi Radicals + ((#$2FF0 <= u) and (u <= #$303F)) or // Ideographic Description Characters / CJK Radicals Supplement + ((#$3130 <= u) and (u <= #$318F)) or // Hangul Compatibility Jamo + ((#$31C0 <= u) and (u <= #$31EF)) or // CJK Strokes + ((#$3200 <= u) and (u <= #$4DBF)) or // Enclosed CJK Letters and Months / CJK Compatibility / CJK Unified Ideographs Extension A + ((#$4E00 <= u) and (u <= #$9FFF)) or // CJK Unified Ideographs + ((#$AC00 <= u) and (u <= #$D7AF)) or // Hangul Syllables + ((#$F900 <= u) and (u <= #$FAFF)) or // CJK Compatibility Ideographs + ((#$FE30 <= u) and (u <= #$FE4F))) // CJK Compatibility Forms + then exit(THWFont( ord(font) + ((ord(High(THWFont))+1) div 2) )); + inc(i) + end; +exit(font); +(* two more to check. pascal WideChar is only 16 bit though + ((#$20000 <= u) and (u >= #$2A6DF)) or // CJK Unified Ideographs Extension B + ((#$2F800 <= u) and (u >= #$2FA1F))) // CJK Compatibility Ideographs Supplement *) +end; + + +function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; +begin + GetLaunchX:= 0 +(* + if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then + GetLaunchX:= sign(dir) * (8 + hwRound(AngleSin(angle) * Ammoz[at].ejectX) + hwRound(AngleCos(angle) * Ammoz[at].ejectY)) + else + GetLaunchX:= 0 *) +end; + +function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; +begin + GetLaunchY:= 0 +(* + if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then + GetLaunchY:= hwRound(AngleSin(angle) * Ammoz[at].ejectY) - hwRound(AngleCos(angle) * Ammoz[at].ejectX) - 2 + else + GetLaunchY:= 0*) +end; + +function CheckNoTeamOrHH: boolean; +begin +CheckNoTeamOrHH:= (CurrentTeam = nil) or (CurrentHedgehog^.Gear = nil); +end; + +procedure initModule; +{$IFDEF DEBUGFILE}{$IFNDEF IPHONEOS}var i: LongInt;{$ENDIF}{$ENDIF} +begin +{$IFDEF DEBUGFILE} +{$I-} +{$IFDEF IPHONEOS} + Assign(f,'../Documents/hw-' + cLogfileBase + '.log'); + Rewrite(f); +{$ELSE} + if (ParamStr(1) <> '') and (ParamStr(2) <> '') then + if (ParamCount <> 3) and (ParamCount <> cDefaultParamNum) then + begin + for i:= 0 to 7 do + begin + assign(f, ExtractFileDir(ParamStr(2)) + '/' + cLogfileBase + inttostr(i) + '.log'); + rewrite(f); + if IOResult = 0 then break; + end; + if IOResult <> 0 then f:= stderr; // if everything fails, write to stderr + end + else + begin + for i:= 0 to 7 do + begin + assign(f, ParamStr(1) + '/Logs/' + cLogfileBase + inttostr(i) + '.log'); + rewrite(f); + if IOResult = 0 then break; + end; + if IOResult <> 0 then f:= stderr; // if everything fails, write to stderr + end + else + f:= stderr; +{$ENDIF} +{$I+} +{$ENDIF} + +end; + +procedure freeModule; +begin + recordFileName:= ''; + +{$IFDEF DEBUGFILE} + writeln(f, 'halt at ', GameTicks, ' ticks. TurnTimeLeft = ', TurnTimeLeft); + flush(f); + close(f); +{$ENDIF} +end; + +end.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hedgewars/uVariables.pas Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,2322 @@ +{$INCLUDE options.inc} + +unit uVariables; +interface + +uses SDLh, uTypes, uFloat, GLunit, uConsts, Math, uMobile; + +var +/////// init flags /////// + cScreenWidth : LongInt = 1024; + cScreenHeight : LongInt = 768; + cBits : LongInt = 32; + //ipcPort is in uIO + cFullScreen : boolean = false; + isSoundEnabled : boolean = true; + isMusicEnabled : boolean = false; + cLocaleFName : shortstring = 'en.txt'; + cInitVolume : LongInt = 100; + cTimerInterval : LongInt = 8; + PathPrefix : shortstring = './'; + cShowFPS : boolean = false; + cAltDamage : boolean = true; + cReducedQuality : LongWord = rqNone; + //userNick is in uChat + recordFileName : shortstring = ''; + cReadyDelay : Longword = 5000; + cLogfileBase : shortstring = 'debug'; + cStereoMode : TStereoMode = smNone; +////////////////////////// + + alsoShutdownFrontend: boolean = false; + + isCursorVisible : boolean; + isTerminated : boolean; + isInLag : boolean; + isPaused : boolean; + + isSEBackup : boolean; + isInMultiShoot : boolean; + isSpeed : boolean; + isFirstFrame : boolean; + + fastUntilLag : boolean; + + GameState : TGameState; + GameType : TGameType; + InputMask : LongWord; + GameFlags : Longword; + TurnTimeLeft : Longword; + ReadyTimeLeft : Longword; + cSuddenDTurns : LongInt; + cDamagePercent : LongInt; + cMineDudPercent : LongWord; + cTemplateFilter : LongInt; + cMapGen : LongInt; + cMazeSize : LongInt; + cRopePercent : LongWord; + + cHedgehogTurnTime: Longword; + cMinesTime : LongInt; + cMaxAIThinkTime : Longword; + + cHealthCaseProb : LongInt; + cHealthCaseAmount: LongInt; + cWaterRise : LongInt; + cHealthDecrease : LongInt; + + cCloudsNumber : LongInt; + cSDCloudsNumber : LongInt; + + cTagsMask : byte; + zoom : GLfloat; + ZoomValue : GLfloat; + + cWaterLine : LongInt; + cGearScrEdgesDist: LongInt; + + GameTicks : LongWord; + + // originally from uConsts + Pathz: array[TPathType] of shortstring; + CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture; + LAND_WIDTH : LongInt; + LAND_HEIGHT : LongInt; + LAND_WIDTH_MASK : LongWord; + LAND_HEIGHT_MASK : LongWord; + cMaxCaptions : LongInt; + + cLeftScreenBorder : LongInt; + cRightScreenBorder : LongInt; + cScreenSpace : LongInt; + + cCaseFactor : Longword; + cLandMines : Longword; + cExplosives : Longword; + + cSeed : shortstring; + cVolumeDelta : LongInt; + cHasFocus : boolean; + cInactDelay : Longword; + + bBetweenTurns : boolean; + bWaterRising : boolean; + + ShowCrosshair : boolean; + CursorMovementX : LongInt; + CursorMovementY : LongInt; + cDrownSpeed : hwFloat; + cDrownSpeedf : real; + cMaxWindSpeed : hwFloat; + cWindSpeed : hwFloat; + cWindSpeedf : real; + cGravity : hwFloat; + cGravityf : real; + cDamageModifier : hwFloat; + cLaserSighting : boolean; + cVampiric : boolean; + cArtillery : boolean; + WeaponTooltipTex : PTexture; + + flagMakeCapture : boolean; + + InitStepsFlags : Longword; + RealTicks : Longword; + AttackBar : LongInt; + + WaterColorArray : array[0..3] of HwColor4f; + SDWaterColorArray : array[0..3] of HwColor4f; + SDMusic : shortstring; + + CursorPoint : TPoint; + TargetPoint : TPoint; + + ScreenFade : TScreenFade; + ScreenFadeValue : LongInt; + ScreenFadeSpeed : LongInt; + + Theme : shortstring; + disableLandBack : boolean; + +{$IFDEF SDL13} + SDLwindow : PSDL_Window; +{$ENDIF} + + WorldDx: LongInt; + WorldDy: LongInt; + +const + cHHFileName = 'Hedgehog'; + cCHFileName = 'Crosshair'; + cThemeCFGFilename = 'theme.cfg'; + + FontBorder = 2; + cPathz: array[TPathType] of shortstring = ( + '', // ptNone + '', // ptData + 'Graphics', // ptGraphics + 'Themes', // ptThemes + 'Themes/avematan', // ptCurrTheme + 'Teams', // ptTeams + 'Maps', // ptMaps + '', // ptMapCurrent + 'Demos', // ptDemos + 'Sounds', // ptSounds + 'Graphics/Graves', // ptGraves + 'Fonts', // ptFonts + 'Forts', // ptForts + 'Locale', // ptLocale + 'Graphics/AmmoMenu', // ptAmmoMenu + 'Graphics/Hedgehog', // ptHedgehog + 'Sounds/voices', // ptVoices + 'Graphics/Hats', // ptHats + 'Graphics/Flags', // ptFlags + 'Missions/Maps', // ptMissionMaps + 'Graphics/SuddenDeath' // ptSuddenDeath + ); + + cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13); + cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0); + + Fontz: array[THWFont] of THHFont = ( + (Handle: nil; + Height: 12; + style: TTF_STYLE_NORMAL; + Name: 'DejaVuSans-Bold.ttf'), + (Handle: nil; + Height: 24; + style: TTF_STYLE_NORMAL; + Name: 'DejaVuSans-Bold.ttf'), + (Handle: nil; + Height: 10; + style: TTF_STYLE_NORMAL; + Name: 'DejaVuSans-Bold.ttf') + {$IFNDEF IPHONEOS}, // remove chinese fonts for now + (Handle: nil; + Height: 12; + style: TTF_STYLE_NORMAL; + Name: 'wqy-zenhei.ttc'), + (Handle: nil; + Height: 24; + style: TTF_STYLE_NORMAL; + Name: 'wqy-zenhei.ttc'), + (Handle: nil; + Height: 10; + style: TTF_STYLE_NORMAL; + Name: 'wqy-zenhei.ttc') + {$ENDIF} + ); + + SpritesData: array[TSprite] of record + FileName: String[16]; + Path, AltPath: TPathType; + Texture: PTexture; + Surface: PSDL_Surface; + Width, Height, imageWidth, imageHeight: LongInt; + saveSurf: boolean; + priority: GLfloat; + getDimensions, getImageDimensions: boolean; + end = ( + (FileName: 'BlueWater'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprWater + (FileName: 'Clouds'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCloud + (FileName: 'Bomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBomb + (FileName: 'BigDigits'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigDigit + (FileName: 'Frame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 4; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFrame + (FileName: 'Lag'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 65; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLag + (FileName: 'Arrow'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCursor + (FileName:'BazookaShell'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBazookaShell + (FileName: 'Targetp'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetP + (FileName: 'Bee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBee + (FileName: 'SmokeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeTrace + (FileName: 'RopeHook'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprRopeHook + (FileName: 'Expl50'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosion50 + (FileName: 'MineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOff + (FileName: 'MineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOn + (FileName: 'MineDead'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineDead + (FileName: 'Case'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCase + (FileName: 'FirstAid'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprFAid + (FileName: 'dynamite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDynamite + (FileName: 'Power'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprPower + (FileName: 'ClBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterBomb + (FileName: 'ClParticle'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterParticle + (FileName: 'Flame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlame + (FileName: 'horizont'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont + (FileName: 'horizontL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont + (FileName: 'horizontR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont + (FileName: 'Sky'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky + (FileName: 'SkyL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky + (FileName: 'SkyR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky + (FileName: 'BorderHorizontal'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 33; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderHorizontal + (FileName: 'BorderVertical'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 2; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderVertical + (FileName: 'Slot'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 33; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlot + (FileName: 'Ammos'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMAmmos + (FileName: 'SlotKeys'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlotKeys + (FileName: 'Corners'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 2; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMCorners + (FileName: 'Finger'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFinger + (FileName: 'AirBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirBomb + (FileName: 'Airplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 254; Height: 101; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirplane + (FileName: 'amAirplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmAirplane + (FileName: 'amGirder'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmGirder + (FileName: 'hhMask'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHHTelepMask + (FileName: 'Switch'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSwitch + (FileName: 'Parachute'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprParachute + (FileName: 'Target'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTarget + (FileName: 'RopeNode'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 6; Height: 6; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprRopeNode + (FileName: 'thinking'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprQuestion + (FileName: 'PowerBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPowerBar + (FileName: 'WindBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 151; Height: 17; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindBar + (FileName: 'WindL'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindL + (FileName: 'WindR'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindR + (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 + (FileName: 'amRope'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandRope + (FileName: 'amBazooka'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBazooka + (FileName: 'amShotgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandShotgun + (FileName: 'amDEagle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDEagle + (FileName:'amAirAttack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandAirAttack + (FileName: 'amBaseball'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBaseball + (FileName: 'Hammer'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPHammer + (FileName: 'amBTorch_i'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBlowTorch + (FileName: 'amBTorch_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBlowTorch + (FileName: 'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTeleport + (FileName: 'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHHDeath + (FileName:'amShotgun_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprShotgun + (FileName: 'amDEagle_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDEagle + (FileName: 'Idle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHHIdle + (FileName: 'Mortar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMortar + (FileName: 'TurnsLeft'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTurnsLeft + (FileName: 'amKamikaze'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprKamikaze + (FileName: 'amWhip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWhip + (FileName: 'Kowtow'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprKowtow + (FileName: 'Sad'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSad + (FileName: 'Wave'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprWave + (FileName: 'Hurrah'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHurrah + (FileName:'ILoveLemonade';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLemonade + (FileName: 'Shrug'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShrug + (FileName: 'Juggle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprJuggle + (FileName: 'ExplPart'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart + (FileName: 'ExplPart2'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart2 + (FileName: 'Cake_walk'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeWalk + (FileName: 'Cake_down'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeDown + (FileName: 'Ammos_bw'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprAMAmmosBW + (FileName: 'Watermelon'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWatermelon + (FileName: 'EvilTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprEvilTrace + (FileName:'HellishBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHellishBomb + (FileName: 'Seduction'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSeduction + (FileName: 'HHDress'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprDress + (FileName: 'Censored'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprCensored + (FileName: 'Drill'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDrill + (FileName: 'amDrill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDrill + (FileName: 'amBallgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBallgun + (FileName: 'Balls'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBalls + (FileName: 'RCPlane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPlane + (FileName: 'amRCPlane'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandPlane + (FileName: 'Utility'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprUtility + (FileName:'Invulnerable';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprInvulnerable + (FileName: 'Vampiric'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprVampiric + (FileName: 'amGirder'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 512; Height:512; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprGirder + (FileName:'SpeechCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 12; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechCorner + (FileName: 'SpeechEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 25; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechEdge + (FileName: 'SpeechTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 25; Height: 26; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechTail + (FileName:'ThoughtCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 49; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtCorner + (FileName:'ThoughtEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 23; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtEdge + (FileName:'ThoughtTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 45; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtTail + (FileName:'ShoutCorner'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 34; Height: 23; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutCorner + (FileName: 'ShoutEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 30; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutEdge + (FileName: 'ShoutTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 30; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutTail + (FileName:'amSniperRifle';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSniperRifle + (FileName: 'Bubbles'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBubbles + (FileName: 'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprJetpack + (FileName: 'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHealth + (FileName: 'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),//sprHandMolotov + (FileName: 'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMolotov + (FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmoke + (FileName: 'SmokeWhite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeWhite + (FileName: 'Shells'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprShell + (FileName: 'Dust'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDust + (FileName: 'Explosives'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosives + (FileName: 'ExplosivesRoll'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosivesRoll + (FileName: 'amTeleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmTeleport + (FileName: 'Splash'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSplash + (FileName: 'Droplet'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDroplet + (FileName: 'Birdy'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 75; Height: 75; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBirdy + (FileName: 'amCake'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCake + (FileName: 'amConstruction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandConstruction + (FileName: 'amGrenade'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandGrenade + (FileName: 'amMelon'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMelon + (FileName: 'amMortar'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMortar + (FileName: 'amSkip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSkip + (FileName: 'amCluster'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCluster + (FileName: 'amDynamite'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDynamite + (FileName: 'amHellish'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandHellish + (FileName: 'amMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMine + (FileName: 'amSeduction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSeduction + (FileName: 'amVamp'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandVamp + (FileName: 'BigExplosion'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 385; Height: 385; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigExplosion + (FileName: 'SmokeRing'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 200; Height: 200; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSmokeRing + (FileName: 'BeeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprBeeTrace + (FileName: 'Egg'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprEgg + (FileName: 'TargetBee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetBee + (FileName: 'amBee'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBee + (FileName: 'Feather'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 15; Height: 25; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFeather + (FileName: 'Piano'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPiano + (FileName: 'amSineGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSineGun + (FileName: 'amPortalGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortalGun + (FileName: 'Portal'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortal + (FileName: 'cheese'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCheese + (FileName: 'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese + (FileName: 'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandFlamethrower + (FileName: 'Chunk'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprChunk + (FileName: 'Note'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprNote + (FileName: 'SMineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOff + (FileName: 'SMineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOn + (FileName: 'amSMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSMine + (FileName: 'amHammer'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprWhip + (FileName: 'amResurrector'; Path: ptHedgehog; AltPath: ptNone; + Texture: nil; Surface: nil; Width: 32; Height: 32; + imageWidth: 0; imageHeight: 0; saveSurf: false; priority: + tpMedium; getDimensions: false; getImageDimensions: true), + //sprHandResurrector + (FileName: 'Cross'; Path: ptGraphics; altPath: ptNone; + Texture: nil; Surface: nil; Width: 108; Height: 138; + imageWidth: 0; imageHeight: 0; saveSurf: false; priority: + tpMedium; getDimensions: false; getImageDimensions: true), + //sprCross + (FileName: 'AirDrill'; Path: ptGraphics; AltPath: ptNone; + Texture: nil; Surface: nil; Width: 16; Height: 16; + imageWidth: 0; imageHeight: 0; saveSurf: false; priority: + tpMedium; getDimensions: false; getImageDimensions: true), + // sprAirDrill + (FileName: 'NapalmBomb'; Path: ptGraphics; AltPath: ptNone; + Texture: nil; Surface: nil; Width: 16; Height: 16; + imageWidth: 0; imageHeight: 0; saveSurf: false; priority: + tpMedium; getDimensions: false; getImageDimensions: true), + // sprNapalmBomb + (FileName: 'BulletHit'; Path: ptGraphics; AltPath: ptNone; + Texture: nil; Surface: nil; Width: 32; Height: 32; + imageWidth: 0; imageHeight: 0; saveSurf: false; priority: + tpMedium; getDimensions: false; getImageDimensions: true), + // sprNapalmBomb + (FileName: 'Snowball'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnowball + (FileName: 'amSnowball'; Path: ptCurrTheme; AltPath: ptHedgehog; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSnowball + (FileName: 'Snow'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; + Width: 4; Height: 4; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnow + (FileName: 'SDFlake'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSDFlake + (FileName: 'SDWater'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; + Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprSDWater + (FileName: 'SDClouds'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; + Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprSDCloud + (FileName: 'SDSplash'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; + Width: 80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSDSplash + (FileName: 'SDDroplet'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true)// sprSDDroplet + ); + + + Wavez: array [TWave] of record + Sprite: TSprite; + FramesCount: Longword; + Interval: Longword; + cmd: String[20]; + Voice: TSound; + VoiceDelay: LongWord; + end = ( + (Sprite: sprKowtow; FramesCount: 12; Interval: 125; cmd: '/rollup'; Voice: sndNone; VoiceDelay: 0), + (Sprite: sprSad; FramesCount: 14; Interval: 125; cmd: '/sad'; Voice: sndNone; VoiceDelay: 0), + (Sprite: sprWave; FramesCount: 16; Interval: 125; cmd: '/wave'; Voice: sndHello; VoiceDelay: 5), + (Sprite: sprHurrah; FramesCount: 14; Interval: 125; cmd: '/hurrah'; Voice: sndNone; VoiceDelay: 0), + (Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0), + (Sprite: sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0), + (Sprite: sprJuggle; FramesCount: 49; Interval: 38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0) + ); + + Soundz: array[TSound] of record + FileName: String[25]; + Path : TPathType; + end = ( + (FileName: ''; Path: ptNone ),// sndNone + (FileName: 'grenadeimpact.ogg'; Path: ptSounds),// sndGrenadeImpact + (FileName: 'explosion.ogg'; Path: ptSounds),// sndExplosion + (FileName: 'throwpowerup.ogg'; Path: ptSounds),// sndThrowPowerUp + (FileName: 'throwrelease.ogg'; Path: ptSounds),// sndThrowRelease + (FileName: 'splash.ogg'; Path: ptSounds),// sndSplash + (FileName: 'shotgunreload.ogg'; Path: ptSounds),// sndShotgunReload + (FileName: 'shotgunfire.ogg'; Path: ptSounds),// sndShotgunFire + (FileName: 'graveimpact.ogg'; Path: ptSounds),// sndGraveImpact + (FileName: 'minetick.ogg'; Path: ptSounds),// sndMineTicks + (FileName: 'pickhammer.ogg'; Path: ptSounds),// sndPickhammer + (FileName: 'gun.ogg'; Path: ptSounds),// sndGun + (FileName: 'bee.ogg'; Path: ptSounds),// sndBee + (FileName: 'Jump1.ogg'; Path: ptVoices),// sndJump1 + (FileName: 'Jump2.ogg'; Path: ptVoices),// sndJump2 + (FileName: 'Jump3.ogg'; Path: ptVoices),// sndJump3 + (FileName: 'Yessir.ogg'; Path: ptVoices),// sndYesSir + (FileName: 'Laugh.ogg'; Path: ptVoices),// sndLaugh + (FileName: 'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou + (FileName: 'Incoming.ogg'; Path: ptVoices),// sndIncoming + (FileName: 'Missed.ogg'; Path: ptVoices),// sndMissed + (FileName: 'Stupid.ogg'; Path: ptVoices),// sndStupid + (FileName: 'Firstblood.ogg'; Path: ptVoices),// sndFirstBlood + (FileName: 'Boring.ogg'; Path: ptVoices),// sndBoring + (FileName: 'Byebye.ogg'; Path: ptVoices),// sndByeBye + (FileName: 'Sameteam.ogg'; Path: ptVoices),// sndSameTeam + (FileName: 'Nutter.ogg'; Path: ptVoices),// sndNutter + (FileName: 'Reinforcements.ogg'; Path: ptVoices),// sndReinforce + (FileName: 'Traitor.ogg'; Path: ptVoices),// sndTraitor + (FileName: 'Youllregretthat.ogg'; Path: ptVoices),// sndRegret + (FileName: 'Enemydown.ogg'; Path: ptVoices),// sndEnemyDown + (FileName: 'Coward.ogg'; Path: ptVoices),// sndCoward + (FileName: 'Hurry.ogg'; Path: ptVoices),// sndHurry + (FileName: 'Watchit.ogg'; Path: ptVoices),// sndWatchIt + (FileName: 'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze + (FileName: 'cake2.ogg'; Path: ptSounds),// sndCake + (FileName: 'Ow1.ogg'; Path: ptVoices),// sndOw1 + (FileName: 'Ow2.ogg'; Path: ptVoices),// sndOw2 + (FileName: 'Ow3.ogg'; Path: ptVoices),// sndOw3 + (FileName: 'Ow4.ogg'; Path: ptVoices),// sndOw4 + (FileName: 'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1 + (FileName: 'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2 + (FileName: 'Firepunch3.ogg'; Path: ptVoices),// sndFirepunch3 + (FileName: 'Firepunch4.ogg'; Path: ptVoices),// sndFirepunch4 + (FileName: 'Firepunch5.ogg'; Path: ptVoices),// sndFirepunch5 + (FileName: 'Firepunch6.ogg'; Path: ptVoices),// sndFirepunch6 + (FileName: 'Melon.ogg'; Path: ptVoices),// sndMelon + (FileName: 'Hellish.ogg'; Path: ptSounds),// sndHellish + (FileName: 'Yoohoo.ogg'; Path: ptSounds),// sndYoohoo + (FileName: 'rcplane.ogg'; Path: ptSounds),// sndRCPlane + (FileName: 'whipcrack.ogg'; Path: ptSounds),// sndWhipCrack + (FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds),// sndRideOfTheValkyries + (FileName: 'denied.ogg'; Path: ptSounds),// sndDenied + (FileName: 'placed.ogg'; Path: ptSounds),// sndPlaced + (FileName: 'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat + (FileName: 'steam.ogg'; Path: ptSounds),// sndVaporize + (FileName: 'warp.ogg'; Path: ptSounds),// sndWarp + (FileName: 'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath + (FileName: 'mortar.ogg'; Path: ptSounds),// sndMortar + (FileName: 'shutterclick.ogg'; Path: ptSounds),// sndShutter + (FileName: 'homerun.ogg'; Path: ptSounds),// sndHomerun + (FileName: 'molotov.ogg'; Path: ptSounds),// sndMolotov + (FileName: 'Takecover.ogg'; Path: ptVoices),// sndCover + (FileName: 'Uh-oh.ogg'; Path: ptVoices),// sndUhOh + (FileName: 'Oops.ogg'; Path: ptVoices),// sndOops + (FileName: 'Nooo.ogg'; Path: ptVoices),// sndNooo + (FileName: 'Hello.ogg'; Path: ptVoices),// sndHello + (FileName: 'ropeshot.ogg'; Path: ptSounds),// sndRopeShot + (FileName: 'ropeattach.ogg'; Path: ptSounds),// sndRopeAttach + (FileName: 'roperelease.ogg'; Path: ptSounds),// sndRopeRelease + (FileName: 'switchhog.ogg'; Path: ptSounds),// sndSwitchHog + (FileName: 'victory.ogg'; Path: ptVoices),// sndVictory + (FileName: 'sniperreload.ogg'; Path: ptSounds),// sndSniperReload + (FileName: 'steps.ogg'; Path: ptSounds),// sndSteps + (FileName: 'lowgravity.ogg'; Path: ptSounds),// sndLowGravity + (FileName: 'hell_growl.ogg'; Path: ptSounds),// sndHellishImpact1 + (FileName: 'hell_ooff.ogg'; Path: ptSounds),// sndHellishImpact2 + (FileName: 'hell_ow.ogg'; Path: ptSounds),// sndHellishImpact3 + (FileName: 'hell_ugh.ogg'; Path: ptSounds),// sndHellishImpact4 + (FileName: 'melonimpact.ogg'; Path: ptSounds),// sndMelonImpact + (FileName: 'Droplet1.ogg'; Path: ptSounds),// sndDroplet1 + (FileName: 'Droplet2.ogg'; Path: ptSounds),// sndDroplet2 + (FileName: 'Droplet3.ogg'; Path: ptSounds),// sndDroplet3 + (FileName: 'egg.ogg'; Path: ptSounds),// sndEggBreak + (FileName: 'drillgun.ogg'; Path: ptSounds),// sndDrillRocket + (FileName: 'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough + (FileName: 'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan + (FileName: 'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay + (FileName: 'Whistle.ogg'; Path: ptSounds),// sndWhistle + (FileName: 'beewater.ogg'; Path: ptSounds),// sndBeeWater + (FileName: '1C.ogg'; Path: ptSounds),// sndPiano0 + (FileName: '2D.ogg'; Path: ptSounds),// sndPiano1 + (FileName: '3E.ogg'; Path: ptSounds),// sndPiano2 + (FileName: '4F.ogg'; Path: ptSounds),// sndPiano3 + (FileName: '5G.ogg'; Path: ptSounds),// sndPiano4 + (FileName: '6A.ogg'; Path: ptSounds),// sndPiano5 + (FileName: '7B.ogg'; Path: ptSounds),// sndPiano6 + (FileName: '8C.ogg'; Path: ptSounds),// sndPiano7 + (FileName: '9D.ogg'; Path: ptSounds),// sndPiano8 + (FileName: 'skip.ogg'; Path: ptSounds),// sndSkip + (FileName: 'shotgunfire.ogg'; Path: ptSounds),// sndSineGun + (FileName: 'Ooff1.ogg'; Path: ptVoices),// sndOoff1 + (FileName: 'Ooff2.ogg'; Path: ptVoices),// sndOoff2 + (FileName: 'Ooff3.ogg'; Path: ptVoices),// sndOoff3 + (FileName: 'whipcrack.ogg'; Path: ptSounds),// sndWhack + (FileName: 'Comeonthen.ogg'; Path: ptVoices),// sndComeonthen + (FileName: 'parachute.ogg'; Path: ptSounds),// sndParachute + (FileName: 'bump.ogg'; Path: ptSounds),// sndBump + (FileName: 'hogchant3.ogg'; Path: ptSounds) // sndResurrector + ); + + Ammoz: array [TAmmoType] of record + NameId: TAmmoStrId; + NameTex: PTexture; + Probability, NumberInCase: Longword; + Ammo: TAmmo; + Slot: 0..cMaxSlotIndex; + TimeAfterTurn: Longword; + minAngle, maxAngle: Longword; + isDamaging: boolean; + SkipTurns: Longword; + PosCount: Longword; + PosSprite: TSprite; + ejectX, ejectY: Longint; + end = ( + (NameId: sidNothing; + NameTex: nil; + Probability: 0; + NumberInCase: 0; + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Effect; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amNothing; + AttackVoice: sndNone); + Slot: 0; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 9999; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Grenade + (NameId: sidGrenade; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amGrenade; + AttackVoice: sndCover); + Slot: 1; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// ClusterBomb + (NameId: sidClusterBomb; + NameTex: nil; + Probability: 100; + NumberInCase: 3; + Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; + Count: 5; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amClusterBomb; + AttackVoice: sndCover); + Slot: 1; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Bazooka + (NameId: sidBazooka; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBazooka; + AttackVoice: sndNone); + Slot: 0; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //20; + ejectY: -6), + +// Bee + (NameId: sidBee; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBee; + AttackVoice: sndNone); + Slot: 0; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //16; + ejectY: 0), + +// Shotgun + (NameId: sidShotgun; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs; + Count: AMMO_INFINITE; + NumPerTurn: 1; + Timer: 0; + Pos: 0; + AmmoType: amShotgun; + AttackVoice: sndNone); + Slot: 2; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //26; + ejectY: -6), + +// PickHammer + (NameId: sidPickHammer; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amPickHammer; + AttackVoice: sndNone); + Slot: 6; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Skip + (NameId: sidSkip; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSkip; + AttackVoice: sndNone); + Slot: 9; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Rope + (NameId: sidRope; + NameTex: nil; + Probability: 100; + NumberInCase: 3; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_ForwMsgs or + ammoprop_AttackInMove or + ammoprop_Utility or + ammoprop_AltAttack; + Count: 5; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amRope; + AttackVoice: sndNone); + Slot: 7; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: cMaxAngle div 2; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Mine + (NameId: sidMine; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amMine; + AttackVoice: sndLaugh); + Slot: 4; + TimeAfterTurn: 5000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// DEagle + (NameId: sidDEagle; + NameTex: nil; + Probability: 20; + NumberInCase: 2; + Ammo: (Propz: 0; + Count: 3; + NumPerTurn: 3; + Timer: 0; + Pos: 0; + AmmoType: amDEagle; + AttackVoice: sndNone); + Slot: 2; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //23; + ejectY: -6), + +// Dynamite + (NameId: sidDynamite; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amDynamite; + AttackVoice: sndLaugh); + Slot: 4; + TimeAfterTurn: 5000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// FirePunch + (NameId: sidFirePunch; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amFirePunch; + AttackVoice: sndNone); + Slot: 3; + TimeAfterTurn: 3000; + MinAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Whip + (NameId: sidWhip; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amWhip; + AttackVoice: sndNone); + Slot: 3; + TimeAfterTurn: 3000; + MinAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// BaseballBat + (NameId: sidBaseballBat; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_DontHold; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBaseballBat; + AttackVoice: sndNone); + Slot: 3; + TimeAfterTurn: 5000; + minAngle: 0; + maxAngle: cMaxAngle div 2; + isDamaging: true; + SkipTurns: 2; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Parachute + (NameId: sidParachute; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_ForwMsgs or + ammoprop_AttackInMove or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_Utility or + ammoprop_AltAttack; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amParachute; + AttackVoice: sndNone); + Slot: 7; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// AirAttack + (NameId: sidAirAttack; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or + ammoprop_NeedTarget or + ammoprop_AttackingPut or + ammoprop_DontHold or + ammoprop_NotBorder; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amAirAttack; + AttackVoice: sndIncoming); + Slot: 5; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 5; + PosCount: 2; + PosSprite: sprAmAirplane; + ejectX: 0; + ejectY: 0), + +// MineStrike + (NameId: sidMineStrike; + NameTex: nil; + Probability: 200; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or + ammoprop_NeedTarget or + ammoprop_AttackingPut or + ammoprop_DontHold or + ammoprop_NotBorder; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amMineStrike; + AttackVoice: sndIncoming); + Slot: 5; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 5; + PosCount: 2; + PosSprite: sprAmAirplane; + ejectX: 0; + ejectY: 0), + +// BlowTorch + (NameId: sidBlowTorch; + NameTex: nil; + Probability: 100; + NumberInCase: 2; + Ammo: (Propz: ammoprop_ForwMsgs; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBlowTorch; + AttackVoice: sndNone); + Slot: 6; + TimeAfterTurn: 3000; + minAngle: 768; + maxAngle: 1280; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Girder + (NameId: sidGirder; + NameTex: nil; + Probability: 150; + NumberInCase: 3; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_NoCrosshair or + ammoprop_NeedTarget or + ammoprop_Utility or + ammoprop_AttackingPut; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amGirder; + AttackVoice: sndNone); + Slot: 6; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 8; + PosSprite: sprAmGirder; + ejectX: 0; + ejectY: 0), + +// Teleport + (NameId: sidTeleport; + NameTex: nil; + Probability: 200; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or + ammoprop_NoCrosshair or + ammoprop_NeedTarget or + ammoprop_AttackingPut or + ammoprop_Utility or + ammoprop_DontHold; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amTeleport; + AttackVoice: sndNone); + Slot: 7; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 2; + PosSprite: sprAmTeleport; + ejectX: 0; + ejectY: 0), + +// Switch + (NameId: sidSwitch; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_ForwMsgs or + ammoprop_NoCrosshair or + ammoprop_Utility or + ammoprop_DontHold; + Count: 3; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSwitch; + AttackVoice: sndNone); + Slot: 9; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Mortar + (NameId: sidMortar; + NameTex: nil; + Probability: 100; + NumberInCase: 4; + Ammo: (Propz: 0; + Count: 4; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amMortar; + AttackVoice: sndNone); + Slot: 0; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //20; + ejectY: -6), + +// Kamikaze + (NameId: sidKamikaze; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amKamikaze; + AttackVoice: sndNone); + Slot: 3; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Cake + (NameId: sidCake; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amCake; + AttackVoice: sndLaugh); + Slot: 4; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 4; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Seduction + (NameId: sidSeduction; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSeduction; + AttackVoice: sndNone); + Slot: 3; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Watermelon + (NameId: sidWatermelon; + NameTex: nil; + Probability: 400; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; + Count: 0; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amWatermelon; + AttackVoice: sndMelon); + Slot: 1; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// HellishBomb ("Hellish Hand-Grenade") + (NameId: sidHellishBomb; + NameTex: nil; + Probability: 400; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: 0; + NumPerTurn: 0; + Timer: 5000; + Pos: 0; + AmmoType: amHellishBomb; + AttackVoice: sndNone); + Slot: 1; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Napalm + (NameId: sidNapalm; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or + ammoprop_NeedTarget or + ammoprop_AttackingPut or + ammoprop_DontHold or + ammoprop_NotBorder; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amNapalm; + AttackVoice: sndIncoming); + Slot: 5; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 7; + PosCount: 2; + PosSprite: sprAmAirplane; + ejectX: 0; + ejectY: 0), + +// Drill ("Drill Rocket") + (NameId: sidDrill; + NameTex: nil; + Probability: 300; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amDrill; + AttackVoice: sndNone); + Slot: 0; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprDrill; + ejectX: 0; //20; + ejectY: -6), + +// Ballgun + (NameId: sidBallgun; + NameTex: nil; + Probability: 400; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 5001; + Pos: 0; + AmmoType: amBallgun; + AttackVoice: sndNone); + Slot: 4; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //20; + ejectY: -3), + +// RC-Plane + (NameId: sidRCPlane; + NameTex: nil; + Probability: 200; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs{ or + ammoprop_DontHold or + ammoprop_AltAttack}; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amRCPlane; + AttackVoice: sndNone); + Slot: 4; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 4; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// LowGravity + (NameId: sidLowGravity; + NameTex: nil; + Probability: 20; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_AltUse or + ammoprop_Utility or + ammoprop_Effect; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amLowGravity; + AttackVoice: sndNone); + Slot: 9; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// ExtraDamage + (NameId: sidExtraDamage; + NameTex: nil; + Probability: 15; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_AltUse or + ammoprop_Utility or + ammoprop_Effect; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amExtraDamage; + AttackVoice: sndNone); + Slot: 9; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Invulnerable + (NameId: sidInvulnerable; + NameTex: nil; + Probability: 20; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_AltUse or + ammoprop_Utility or + ammoprop_Effect; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amInvulnerable; + AttackVoice: sndNone); + Slot: 8; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// ExtraTime + (NameId: sidExtraTime; + NameTex: nil; + Probability: 30; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_AltUse or + ammoprop_Utility or + ammoprop_Effect; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amExtraTime; + AttackVoice: sndNone); + Slot: 9; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// LaserSight + (NameId: sidLaserSight; + NameTex: nil; + Probability: 15; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_AltUse or + ammoprop_Utility or + ammoprop_Effect; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amLaserSight; + AttackVoice: sndNone); + Slot: 8; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Vampiric + (NameId: sidVampiric; + NameTex: nil; + Probability: 15; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_AltUse or + ammoprop_Utility or + ammoprop_Effect; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amVampiric; + AttackVoice: sndNone); + Slot: 8; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// SniperRifle + (NameId: sidSniperRifle; + NameTex: nil; + Probability: 20; + NumberInCase: 2; + Ammo: (Propz: 0; + Count: 2; + NumPerTurn: 1; + Timer: 0; + Pos: 0; + AmmoType: amSniperRifle; + AttackVoice: sndNone); + Slot: 2; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //40; + ejectY: -5), + +// Jetpack ("Flying Saucer") + (NameId: sidJetpack; + NameTex: nil; + Probability: 20; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_ForwMsgs or + ammoprop_AttackInMove or + ammoprop_NoCrosshair or + ammoprop_DontHold or + ammoprop_Utility or + ammoprop_AltAttack; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amJetpack; + AttackVoice: sndNone); + Slot: 7; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Molotov + (NameId: sidMolotov; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amMolotov; + AttackVoice: sndNone); + Slot: 1; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Birdy + (NameId: sidBirdy; + NameTex: nil; + Probability: 20; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or + ammoprop_NoCrosshair or + ammoprop_DontHold; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amBirdy; + AttackVoice: sndNone); + Slot: 7; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// PortalGun + (NameId: sidPortalGun; + NameTex: nil; + Probability: 20; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoRoundEnd or + ammoprop_AttackInMove or + ammoprop_DontHold or + ammoprop_Utility; + Count: 1; + NumPerTurn: 3; + Timer: 0; + Pos: 0; + AmmoType: amPortalGun; + AttackVoice: sndNone); + Slot: 6; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: false; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: -5; //29; + ejectY: -7), + +// Piano + (NameId: sidPiano; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or + ammoprop_NeedTarget or + ammoprop_AttackingPut or + ammoprop_DontHold or + ammoprop_NotBorder; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amPiano; + AttackVoice: sndIncoming); + Slot: 5; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 7; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// GasBomb + (NameId: sidGasBomb; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 3000; + Pos: 0; + AmmoType: amGasBomb; + AttackVoice: sndCover); + Slot: 1; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// SineGun + (NameId: sidSineGun; + NameTex: nil; + Probability: 20; + NumberInCase: 2; + Ammo: (Propz: ammoprop_AttackInMove; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSineGun; + AttackVoice: sndNone); + Slot: 2; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Flamethrower + (NameId: sidFlamethrower; + NameTex: nil; + Probability: 20; + NumberInCase: 1; + Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold; + Count: 1; + NumPerTurn: 0; + Timer: 5001; + Pos: 0; + AmmoType: amFlamethrower; + AttackVoice: sndNone); + Slot: 2; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; //20; + ejectY: -3), + +// Sticky Mine + (NameId: sidSMine; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power; //FIXME: enable multishoot at altuse, until then removed ammoprop_AltUse + Count: 1; + NumPerTurn: 1; + Timer: 0; + Pos: 0; + AmmoType: amSMine; + AttackVoice: sndLaugh); + Slot: 4; + TimeAfterTurn: 5000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Hammer + (NameId: sidHammer; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amHammer; + AttackVoice: sndNone); + Slot: 3; + TimeAfterTurn: 1000; + MinAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// Ressurrector + (NameId: sidResurrector; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or + ammoprop_Utility or + ammoprop_NoRoundEnd; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amResurrector; + AttackVoice: sndNone); + Slot: 8; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0), + +// DrillStrike + (NameId: sidDrillStrike; + NameTex: nil; + Probability: 200; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or + ammoprop_NeedTarget or + ammoprop_AttackingPut or + ammoprop_DontHold or + ammoprop_NotBorder; + Count: 1; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amDrillStrike; + AttackVoice: sndIncoming); + Slot: 5; + TimeAfterTurn: 0; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 6; + PosCount: 2; + PosSprite: sprAmAirplane; + ejectX: 0; + ejectY: 0), +// Snowball/Mudball + (NameId: sidSnowball; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or ammoprop_AltUse; + Count: 2; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amSnowball; + AttackVoice: sndNone); + Slot: 0; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0) + ); + + + conversionFormat: TSDL_PixelFormat = ( + palette: nil; + BitsPerPixel : 32; + BytesPerPixel: 4; + Rloss : 0; + Gloss : 0; + Bloss : 0; + Aloss : 0; +{$IFDEF ENDIAN_LITTLE} + Rshift: 0; + Gshift: 8; + Bshift: 16; + Ashift: 24; +{$ELSE} + Rshift: 24; + Gshift: 16; + Bshift: 8; + Ashift: 0; +{$ENDIF} + RMask : RMask; + GMask : GMask; + BMask : BMask; + AMask : AMask; + colorkey: 0; + alpha : 255 + ); + + +var + Land: TCollisionArray; + LandPixels: TLandArray; + LandDirty: TDirtyTag; + hasBorder: boolean; + hasGirders: boolean; + isMap: boolean; + playHeight, playWidth, leftX, rightX, topY, MaxHedgehogs: Longword; // idea is that a template can specify height/width. Or, a map, a height/width by the dimensions of the image. If the map has pixels near top of image, it triggers border. + LandBackSurface: PSDL_Surface; + digest: shortstring; + CurAmmoGear: PGear; + lastGearByUID: PGear; + GearsList: PGear; + AllInactive: boolean; + PrvInactive: boolean; + KilledHHs: Longword; + SuddenDeath: Boolean; + SuddenDeathDmg: Boolean; + SpeechType: Longword; + SpeechText: shortstring; + skipFlag: boolean; + PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress + StepSoundTimer: LongInt; + StepSoundChannel: LongInt; + + CurrentTeam: PTeam; + PreviousTeam: PTeam; + CurrentHedgehog: PHedgehog; + TeamsArray: array[0..Pred(cMaxTeams)] of PTeam; + TeamsCount: Longword; + ClansArray: array[0..Pred(cMaxTeams)] of PClan; + ClansCount: Longword; + LocalClan: LongInt; // last non-bot, non-extdriven clan + LocalTeam: LongInt; // last non-bot, non-extdriven clan first team + LocalAmmo: LongInt; // last non-bot, non-extdriven clan's first team's ammo index, updated to next upcoming hog for per-hog-ammo + CurMinAngle, CurMaxAngle: Longword; + GameOver: boolean; + + FollowGear: PGear; + WindBarWidth: LongInt; + bShowAmmoMenu: boolean; + bSelected: boolean; + bShowFinger: boolean; + Frames: Longword; + WaterColor, DeepWaterColor: TSDL_Color; + SkyOffset: LongInt; + HorizontOffset: LongInt; +{$IFDEF COUNTTICKS} + cntTicks: LongWord; +{$ENDIF} + cOffsetY: LongInt; + AFRToggle: Boolean; + bAFRRight: Boolean; + + + PixelFormat: PSDL_PixelFormat; + SDLPrimSurface: PSDL_Surface; + PauseTexture, + SyncTexture, + ConfirmTexture: PTexture; + cScaleFactor: GLfloat; + SupportNPOTT: Boolean; + Step: LongInt; + squaresize : LongInt; + numsquares : LongInt; + ProgrTex: PTexture; + MissionIcons: PSDL_Surface; + ropeIconTex: PTexture; + // orientation of the viewport + rotationQt: GLfloat; + // stereoscopic framebuffer and textures + framel, framer, depthl, depthr: GLuint; + texl, texr: GLuint; + + + VisualGearsList: PVisualGear; + lastVisualGearByUID: PVisualGear; + vobFrameTicks, vobFramesCount, vobCount: Longword; + vobVelocity, vobFallSpeed: LongInt; + vobSDFrameTicks, vobSDFramesCount, vobSDCount: Longword; + vobSDVelocity, vobSDFallSpeed: LongInt; + + + hideAmmoMenu: boolean; + wheelUp: boolean; + wheelDown: boolean; + + ControllerNumControllers: Integer; + ControllerEnabled: Integer; + ControllerNumAxes: array[0..5] of Integer; + //ControllerNumBalls: array[0..5] of Integer; + ControllerNumHats: array[0..5] of Integer; + ControllerNumButtons: array[0..5] of Integer; + ControllerAxes: array[0..5] of array[0..19] of Integer; + //ControllerBalls: array[0..5] of array[0..19] of array[0..1] of Integer; + ControllerHats: array[0..5] of array[0..19] of Byte; + ControllerButtons: array[0..5] of array[0..19] of Byte; + + DefaultBinds, CurrentBinds: TBinds; + + coeff: LongInt; + +{$IFDEF HWLIBRARY} + leftClick: boolean; + middleClick: boolean; + rightClick: boolean; + + upKey: boolean; + downKey: boolean; + rightKey: boolean; + leftKey: boolean; + preciseKey: boolean; + + backspaceKey: boolean; + spaceKey: boolean; + enterKey: boolean; + tabKey: boolean; + + chatAction: boolean; + pauseAction: boolean; +{$ENDIF} + +var trammo: array[TAmmoStrId] of ansistring; // name of the weapon + trammoc: array[TAmmoStrId] of ansistring; // caption of the weapon + trammod: array[TAmmoStrId] of ansistring; // description of the weapon + trmsg: array[TMsgStrId] of ansistring; // message of the event + trgoal: array[TGoalStrId] of ansistring; // message of the goal + +procedure initModule; +procedure freeModule; + +implementation + + +procedure initModule; +begin + lastVisualGearByUID:= nil; + lastGearByUID:= nil; + + Pathz:= cPathz; + {* REFERENCE + 4096 -> $FFFFF000 + 2048 -> $FFFFF800 + 1024 -> $FFFFFC00 + 512 -> $FFFFFE00 *} + if (cReducedQuality and rqLowRes) <> 0 then + begin + LAND_WIDTH:= 2048; + LAND_HEIGHT:= 1024; + LAND_WIDTH_MASK:= $FFFFF800; + LAND_HEIGHT_MASK:= $FFFFFC00; + end + else + begin + LAND_WIDTH:= 4096; + LAND_HEIGHT:= 2048; + LAND_WIDTH_MASK:= $FFFFF000; + LAND_HEIGHT_MASK:= $FFFFF800 + end; + + SDWaterColorArray[0].r := 182; + SDWaterColorArray[0].g := 144; + SDWaterColorArray[0].b := 201; + SDWaterColorArray[0].a := 255; + SDWaterColorArray[2].r := 150; + SDWaterColorArray[2].g := 112; + SDWaterColorArray[2].b := 169; + SDWaterColorArray[2].a := 255; + SDWaterColorArray[1]:= SDWaterColorArray[0]; + SDWaterColorArray[3]:= SDWaterColorArray[2]; + + SDMusic:= 'main_theme.ogg'; + + cDrownSpeed.QWordValue := 257698038; // 0.06 + cDrownSpeedf := 0.06; + cMaxWindSpeed.QWordValue:= 1073742; // 0.00025 + cWindSpeed.QWordValue := 0; // 0.0 + cWindSpeedf := 0.0; + cGravity := cMaxWindSpeed * 2; + cGravityf := 0.00025 * 2; + cDamageModifier := _1; + TargetPoint := cTargetPointRef; + + // int, longint longword and byte + CursorMovementX := 0; + CursorMovementY := 0; + GameTicks := 0; + cWaterLine := LAND_HEIGHT; + cGearScrEdgesDist := 240; + + InputMask := $FFFFFFFF; + GameFlags := 0; + TurnTimeLeft := 0; + cSuddenDTurns := 15; + cDamagePercent := 100; + cRopePercent := 100; + cMineDudPercent := 0; + cTemplateFilter := 0; + cMapGen := 0; // MAPGEN_REGULAR + cMazeSize := 0; + cHedgehogTurnTime := 45000; + cMinesTime := 3000; + cMaxAIThinkTime := 9000; + cCloudsNumber := 9; + cSDCloudsNumber := 9; + cHealthCaseProb := 35; + cHealthCaseAmount := 25; + cWaterRise := 47; + cHealthDecrease := 5; + + cTagsMask := 0; + InitStepsFlags := 0; + RealTicks := 0; + AttackBar := 0; // 0 - none, 1 - just bar at the right-down corner, 2 - from weapon + cCaseFactor := 5; {0..9} + cLandMines := 4; + cExplosives := 2; + + GameState := Low(TGameState); + GameType := gmtLocal; + zoom := cDefaultZoomLevel; + ZoomValue := cDefaultZoomLevel; + WeaponTooltipTex:= nil; + cLaserSighting := false; + cVampiric := false; + cArtillery := false; + flagMakeCapture := false; + bBetweenTurns := false; + bWaterRising := false; + isCursorVisible := false; + isTerminated := false; + isInLag := false; + isPaused := false; + isInMultiShoot := false; + isSpeed := false; + fastUntilLag := false; + isFirstFrame := true; + isSEBackup := true; + cSeed := ''; + cVolumeDelta := 0; + cHasFocus := true; + cInactDelay := 1250; + ReadyTimeLeft := 0; + + disableLandBack := false; + + ScreenFade := sfNone; + +{$IFDEF SDL13} + SDLwindow := nil; +{$ENDIF} + + // those values still are not perfect + cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth); + cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH); + cScreenSpace:= cRightScreenBorder - cLeftScreenBorder; + + if isPhone() then + cMaxCaptions:= 3 + else + cMaxCaptions:= 4; + + vobSDFrameTicks:= 0; + vobSDFramesCount:= 0; + vobSDCount:= 30 * cScreenSpace div LAND_WIDTH; + vobSDVelocity:= 0; + vobSDFallSpeed:= 0; +end; + +procedure freeModule; +begin + // re-init flags so they will always contain safe values + cScreenWidth := 1024; + cScreenHeight := 768; + cBits := 32; + //ipcPort is in uIO + cFullScreen := false; + isSoundEnabled := true; + isMusicEnabled := false; + cLocaleFName := 'en.txt'; + cInitVolume := 100; + cTimerInterval := 8; + PathPrefix := './'; + cShowFPS := false; + cAltDamage := true; + cReducedQuality := rqNone; + //userNick is in uChat + recordFileName := ''; + cReadyDelay := 5000; + cStereoMode := smNone; +end; + +end.
--- a/hedgewars/uVisualGears.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uVisualGears.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,49 +20,26 @@ unit uVisualGears; interface -uses uConsts, uFloat, Math, GLunit; - -type PVisualGear = ^TVisualGear; - TVGearStepProcedure = procedure (Gear: PVisualGear; Steps: Longword); - TVisualGear = record - NextGear, PrevGear: PVisualGear; - Frame, - FrameTicks: Longword; - X : float; - Y : float; - dX: float; - dY: float; - tdX: float; - tdY: float; - State : Longword; - Timer: Longword; - Angle, dAngle: real; - Kind: TVisualGearType; - doStep: TVGearStepProcedure; - Tex: PTexture; - alpha, scale: GLfloat; - Hedgehog: pointer; - Text: shortstring; - Tint: Longword; - end; +uses uConsts, uFloat, GLunit, uTypes; procedure initModule; procedure freeModule; -function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear; +function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0; Critical: Boolean = false): PVisualGear; procedure ProcessVisualGears(Steps: Longword); procedure KickFlakes(Radius, X, Y: LongInt); procedure DrawVisualGears(Layer: LongWord); procedure DeleteVisualGear(Gear: PVisualGear); +function VisualGearByUID(uid : Longword) : PVisualGear; procedure AddClouds; +procedure ChangeToSDClouds; +procedure AddFlakes; +procedure ChangeToSDFlakes; procedure AddDamageTag(X, Y, Damage, Color: LongWord); -var VisualGearsList: PVisualGear; - vobFrameTicks, vobFramesCount, vobCount: Longword; - vobVelocity, vobFallSpeed: LongInt; +implementation +uses uSound, uMobile, uVariables, uTextures, uRender, Math, uRenderUtils; -implementation -uses uWorld, uMisc, uStore, uTeams, uSound, uMobile; const cExplFrameTicks = 110; {$INCLUDE "VGSHandlers.inc"} @@ -119,22 +96,25 @@ @doStepChunk, @doStepNote, @doStepLineTrail, - @doStepBulletHit + @doStepBulletHit, + @doStepCircle ); -function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0): PVisualGear; +function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord = 0; Critical: Boolean = false): PVisualGear; +const VGCounter: Longword = 0; var gear: PVisualGear; t: Longword; - sp: float; + sp: real; begin if (GameType = gmtSave) or (fastUntilLag and (GameType = gmtNet)) then // we are scrolling now - if Kind <> vgtCloud then + if (Kind <> vgtCloud) and not Critical then begin AddVisualGear:= nil; exit end; -if ((cReducedQuality and rqFancyBoom) <> 0) and +if ((cReducedQuality and rqAntiBoom) <> 0) and + not Critical and not (Kind in [vgtTeamHealthSorter, vgtSmallDamageTag, @@ -149,14 +129,16 @@ exit end; +inc(VGCounter); New(gear); FillChar(gear^, sizeof(TVisualGear), 0); -gear^.X:= float(X); -gear^.Y:= float(Y); +gear^.X:= real(X); +gear^.Y:= real(Y); gear^.Kind := Kind; gear^.doStep:= doStepHandlers[Kind]; gear^.State:= 0; gear^.Tint:= $FFFFFFFF; +gear^.uid:= VGCounter; with gear^ do case Kind of @@ -164,13 +146,22 @@ Timer:= 0; tdX:= 0; tdY:= 0; - FrameTicks:= random(vobFrameTicks); - Frame:= random(vobFramesCount); + if SuddenDeathDmg then + begin + FrameTicks:= random(vobSDFrameTicks); + Frame:= random(vobSDFramesCount); + end + else + begin + FrameTicks:= random(vobFrameTicks); + Frame:= random(vobFramesCount); + end; Angle:= random * 360; dx:= 0.0000038654705 * random(10000); dy:= 0.000003506096 * random(7000); if random(2) = 0 then dx := -dx; - dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000 + if SuddenDeathDmg then dAngle:= (random(2) * 2 - 1) * (1 + random) * vobSDVelocity / 1000 + else dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000 end; vgtCloud: begin Frame:= random(4); @@ -349,6 +340,8 @@ if Gear^.PrevGear <> nil then Gear^.PrevGear^.NextGear:= Gear^.NextGear else VisualGearsList:= Gear^.NextGear; + if lastVisualGearByUID = Gear then lastVisualGearByUID:= nil; + Dispose(Gear); end; @@ -378,7 +371,7 @@ if Gear^.Kind = vgtFlake then begin // Damage calc from doMakeExplosion - dmg:= min(101, Radius + cHHRadius div 2 - LongInt(abs(round(Gear^.X) - X) + abs(round(Gear^.Y) - Y)) div 5); + dmg:= Min(101, Radius + cHHRadius div 2 - LongInt(abs(round(Gear^.X) - X) + abs(round(Gear^.Y) - Y)) div 5); if dmg > 1 then begin Gear^.tdX:= 0.02 * dmg + 0.01; @@ -394,53 +387,78 @@ procedure DrawVisualGears(Layer: LongWord); var Gear: PVisualGear; + tinted: boolean; + tmp: real; begin Gear:= VisualGearsList; case Layer of 0: while Gear <> nil do begin - Tint(Gear^.Tint); + if Gear^.Tint <> $FFFFFFFF then Tint(Gear^.Tint); case Gear^.Kind of - vgtFlake: if vobVelocity = 0 then - DrawSprite(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) + vgtFlake: if SuddenDeathDmg then + if vobSDVelocity = 0 then + DrawSprite(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) + else + DrawRotatedF(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle) else - DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle); - vgtCloud: DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame); + if vobVelocity = 0 then + DrawSprite(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) + else + DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle); + vgtCloud: if SuddenDeathDmg then + DrawSprite(sprSDCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) + else + DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame); end; + if Gear^.Tint <> $FFFFFFFF then Tint($FF,$FF,$FF,$FF); Gear:= Gear^.NextGear end; 1: while Gear <> nil do begin - Tint(Gear^.Tint); + tinted:= false; + if Gear^.Tint <> $FFFFFFFF then Tint(Gear^.Tint); case Gear^.Kind of vgtSmokeTrace: if Gear^.State < 8 then DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); vgtEvilTrace: if Gear^.State < 8 then DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); vgtLineTrail: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 1.0, $FF, min(Gear^.Timer, $C0), min(Gear^.Timer, $80), min(Gear^.Timer, $FF)); + vgtSpeechBubble: if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog^.Team <> CurrentTeam)) or (Gear^.State = 1)) then + begin + tinted:= true; + Tint($FF, $FF, $FF, $66); + DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex) + end end; - if (cReducedQuality and rqFancyBoom) = 0 then + if (cReducedQuality and rqAntiBoom) = 0 then case Gear^.Kind of vgtSmoke: DrawSprite(sprSmoke, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); vgtDust: DrawSprite(sprDust, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); vgtFeather: begin if Gear^.FrameTicks < 255 then + begin Tint($FF, $FF, $FF, Gear^.FrameTicks); + tinted:= true + end; DrawRotatedF(sprFeather, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); end; end; + if (Gear^.Tint <> $FFFFFFFF) or tinted then Tint($FF,$FF,$FF,$FF); Gear:= Gear^.NextGear end; 2: while Gear <> nil do begin - Tint(Gear^.Tint); + tinted:= false; + if Gear^.Tint <> $FFFFFFFF then Tint(Gear^.Tint); case Gear^.Kind of vgtExplosion: DrawSprite(sprExplosion50, round(Gear^.X) - 32 + WorldDx, round(Gear^.Y) - 32 + WorldDy, Gear^.State); vgtBigExplosion: begin - Tint($FF, $FF, $FF, floor($FF * (1 - power(Gear^.Timer / 250, 4)))); + tinted:= true; + Tint($FF, $FF, $FF, round($FF * (1 - power(Gear^.Timer / 250, 4)))); DrawRotatedTextureF(SpritesData[sprBigExplosion].Texture, 0.85 * (-power(2, -10 * Int(Gear^.Timer)/250) + 1) + 0.4, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 385, 385, Gear^.Angle); end; end; - if (cReducedQuality and rqFancyBoom) = 0 then + if (cReducedQuality and rqAntiBoom) = 0 then case Gear^.Kind of vgtExplPart: DrawSprite(sprExplPart, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); vgtExplPart2: DrawSprite(sprExplPart2, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); @@ -451,38 +469,54 @@ vgtBubble: DrawSprite(sprBubbles, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8); vgtSteam: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); vgtAmmo: begin - Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); + tinted:= true; + Tint($FF, $FF, $FF, round(Gear^.alpha * $FF)); DrawTextureF(ropeIconTex, Gear^.scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 32, 32); DrawTextureF(SpritesData[sprAMAmmos].Texture, Gear^.scale * 0.90, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame - 1, 1, 32, 32); end; vgtHealth: begin + tinted:= true; case Gear^.Frame div 10 of - 0:Tint(0, $FF, 0, floor(Gear^.FrameTicks * $FF / 1000)); - 1:Tint($FF, 0, 0, floor(Gear^.FrameTicks * $FF / 1000)); + 0:Tint(0, $FF, 0, round(Gear^.FrameTicks * $FF / 1000)); + 1:Tint($FF, 0, 0, round(Gear^.FrameTicks * $FF / 1000)); end; DrawSprite(sprHealth, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, 0); end; vgtShell: begin if Gear^.FrameTicks < $FF then + begin Tint($FF, $FF, $FF, Gear^.FrameTicks); + tinted:= true + end; DrawRotatedF(sprShell, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); end; vgtEgg: begin if Gear^.FrameTicks < $FF then + begin Tint($FF, $FF, $FF, Gear^.FrameTicks); + tinted:= true + end; DrawRotatedF(sprEgg, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); end; - vgtSplash: DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)); - vgtDroplet: DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame); + vgtSplash: if SuddenDeathDmg then + DrawSprite(sprSDSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)) + else + DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)); + vgtDroplet: if SuddenDeathDmg then + DrawSprite(sprSDDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame) + else + DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame); vgtBeeTrace: begin if Gear^.FrameTicks < $FF then Tint($FF, $FF, $FF, Gear^.FrameTicks div 2) else Tint($FF, $FF, $FF, $80); + tinted:= true; DrawRotatedF(sprBeeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, (RealTicks shr 4) mod cMaxAngle); end; vgtSmokeRing: begin - Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); + tinted:= true; + Tint($FF, $FF, $FF, round(Gear^.alpha * $FF)); DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle); end; vgtChunk: DrawRotatedF(sprChunk, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); @@ -491,11 +525,41 @@ end; case Gear^.Kind of vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); - vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); + vgtSpeechBubble: if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog^.Team = CurrentTeam)) or (Gear^.State = 2)) then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); + vgtCircle: if gear^.Angle = 1 then + begin + tmp:= Gear^.State / 100; + DrawTexture(round(Gear^.X-24*tmp) + WorldDx, round(Gear^.Y-24*tmp) + WorldDy, SpritesData[sprVampiric].Texture, tmp) + end + else DrawCircle(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State, Gear^.Timer); end; + if (Gear^.Tint <> $FFFFFFFF) or tinted then Tint($FF,$FF,$FF,$FF); Gear:= Gear^.NextGear end + end; +end; + +function VisualGearByUID(uid : Longword) : PVisualGear; +var vg: PVisualGear; +begin +VisualGearByUID:= nil; +if uid = 0 then exit; +if (lastVisualGearByUID <> nil) and (lastVisualGearByUID^.uid = uid) then + begin + VisualGearByUID:= lastVisualGearByUID; + exit + end; +vg:= VisualGearsList; +while vg <> nil do + begin + if vg^.uid = uid then + begin + lastVisualGearByUID:= vg; + VisualGearByUID:= vg; + exit + end; + vg:= vg^.NextGear end end; @@ -506,6 +570,60 @@ AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud) end; +procedure ChangeToSDClouds; +var i: LongInt; + vg, tmp: PVisualGear; +begin +if cCloudsNumber = cSDCloudsNumber then exit; +vg:= VisualGearsList; +while vg <> nil do + if vg^.Kind = vgtCloud then + begin + tmp:= vg^.NextGear; + DeleteVisualGear(vg); + vg:= tmp + end + else vg:= vg^.NextGear; +for i:= 0 to cSDCloudsNumber - 1 do + AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cSDCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud) +end; + +procedure AddFlakes; +var i: LongInt; +begin +if (cReducedQuality and rqKillFlakes) <> 0 then exit; + +if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then + for i:= 0 to Pred(vobCount) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake) +else + for i:= 0 to Pred(vobCount div 3) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake); +end; + +procedure ChangeToSDFlakes; +var i: LongInt; + vg, tmp: PVisualGear; +begin +if (cReducedQuality and rqKillFlakes) <> 0 then exit; +if vobCount = vobSDCount then exit; +vg:= VisualGearsList; +while vg <> nil do + if vg^.Kind = vgtFlake then + begin + tmp:= vg^.NextGear; + DeleteVisualGear(vg); + vg:= tmp + end + else vg:= vg^.NextGear; +if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then + for i:= 0 to Pred(vobSDCount) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake) +else + for i:= 0 to Pred(vobSDCount div 3) do + AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake); +end; + procedure initModule; begin VisualGearsList:= nil;
--- a/hedgewars/uWorld.pas Mon Dec 27 23:57:44 2010 +0100 +++ b/hedgewars/uWorld.pas Tue Jan 04 12:53:46 2011 +0100 @@ -20,25 +20,7 @@ unit uWorld; interface -uses SDLh, uGears, uConsts, uFloat, uRandom; - -var FollowGear: PGear; - WindBarWidth: LongInt; - bShowAmmoMenu: boolean; - bSelected: boolean; - bShowFinger: boolean; - Frames: Longword; - AFRToggle: Boolean; - WaterColor, DeepWaterColor: TSDL_Color; - WorldDx: LongInt; - WorldDy: LongInt; - SkyOffset: LongInt; - HorizontOffset: LongInt; - bAFRRight: Boolean; -{$IFDEF COUNTTICKS} - cntTicks: LongWord; -{$ENDIF} - cOffsetY: LongInt; +uses SDLh, uGears, uConsts, uFloat, uRandom, uTypes; procedure initModule; procedure freeModule; @@ -46,22 +28,31 @@ procedure InitWorld; procedure DrawWorld(Lag: LongInt); procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode); -procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt); procedure HideMission; procedure ShakeCamera(amount: LongWord); procedure MoveCamera; implementation -uses uStore, uMisc, uTeams, uIO, uKeys, uLocale, uSound, uAmmos, uVisualGears, uChat, uLandTexture, uLand, GLunit; - -type TCaptionStr = record - Tex: PTexture; - EndTime: LongWord; - end; +uses + uStore, + uMisc, + uIO, + uLocale, + uSound, + uAmmos, + uVisualGears, + uChat, + uLandTexture, + GLunit, + uVariables, + uUtils, + uTextures, + uRender, + uCaptions + ; var cWaveWidth, cWaveHeight: LongInt; - Captions: array[TCapGroup] of TCaptionStr; AMSlotSize, AMxOffset, AMyOffset, AMWidth, AMxShift, SlotsNum: LongInt; tmpSurface: PSDL_Surface; fpsTexture: PTexture; @@ -156,14 +147,14 @@ ScreenFadeSpeed:= 1; // modified mine timers? -if cMinesTime <> 3 then +if cMinesTime <> 3000 then begin if cMinesTime = 0 then g:= AddGoal(g, gfAny, gidNoMineTimer) else if cMinesTime < 0 then g:= AddGoal(g, gfAny, gidRandomMineTimer) else - g:= AddGoal(g, gfAny, gidMineTimer, cMinesTime); + g:= AddGoal(g, gfAny, gidMineTimer, cMinesTime div 1000); end; // if the string has been set, show it for (default timeframe) seconds @@ -397,7 +388,7 @@ {$IFDEF IPHONEOS} ShowWeaponTooltip(x - WeaponTooltipTex^.w - 3, AMyOffset - 1); {$ELSE} - ShowWeaponTooltip(x - WeaponTooltipTex^.w - 3, min(y + 1, cScreenHeight - WeaponTooltipTex^.h - 40)); + ShowWeaponTooltip(x - WeaponTooltipTex^.w - 3, Min(y + 1, cScreenHeight - WeaponTooltipTex^.h - 40)); {$ENDIF} bSelected:= false; @@ -409,10 +400,20 @@ r: TSDL_Rect; lw, lh: GLfloat; begin - WaterColorArray[0].a := Alpha; - WaterColorArray[1].a := Alpha; - WaterColorArray[2].a := Alpha; - WaterColorArray[3].a := Alpha; + if SuddenDeathDmg then + begin + SDWaterColorArray[0].a := Alpha; + SDWaterColorArray[1].a := Alpha; + SDWaterColorArray[2].a := Alpha; + SDWaterColorArray[3].a := Alpha + end + else + begin + WaterColorArray[0].a := Alpha; + WaterColorArray[1].a := Alpha; + WaterColorArray[2].a := Alpha; + WaterColorArray[3].a := Alpha + end; lw:= cScreenWidth / cScaleFactor; lh:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 + 16; @@ -436,7 +437,10 @@ glDisableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_COLOR_ARRAY); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); + if SuddenDeathDmg then + glColorPointer(4, GL_UNSIGNED_BYTE, 0, @SDWaterColorArray[0]) + else + glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); @@ -452,24 +456,39 @@ procedure DrawWaves(Dir, dX, dY: LongInt; tnt: Byte); var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; lw, waves, shift: GLfloat; + sprite: TSprite; begin +if SuddenDeathDmg then + sprite:= sprSDWater +else + sprite:= sprWater; + +cWaveWidth:= SpritesData[sprite].Width; + lw:= cScreenWidth / cScaleFactor; waves:= lw * 2 / cWaveWidth; -Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255 - tnt, - LongInt(tnt) * WaterColorArray[2].g div 255 + 255 - tnt, - LongInt(tnt) * WaterColorArray[2].b div 255 + 255 - tnt, - 255 -); +if SuddenDeathDmg then + Tint(LongInt(tnt) * SDWaterColorArray[2].r div 255 + 255 - tnt, + LongInt(tnt) * SDWaterColorArray[2].g div 255 + 255 - tnt, + LongInt(tnt) * SDWaterColorArray[2].b div 255 + 255 - tnt, + 255 + ) +else + Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255 - tnt, + LongInt(tnt) * WaterColorArray[2].g div 255 + 255 - tnt, + LongInt(tnt) * WaterColorArray[2].b div 255 + 255 - tnt, + 255 + ); -glBindTexture(GL_TEXTURE_2D, SpritesData[sprWater].Texture^.id); +glBindTexture(GL_TEXTURE_2D, SpritesData[sprite].Texture^.id); VertexBuffer[0].X:= -lw; VertexBuffer[0].Y:= cWaterLine + WorldDy + dY; VertexBuffer[1].X:= lw; VertexBuffer[1].Y:= VertexBuffer[0].Y; VertexBuffer[2].X:= lw; -VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprWater].Height; +VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprite].Height; VertexBuffer[3].X:= -lw; VertexBuffer[3].Y:= VertexBuffer[2].Y; @@ -479,7 +498,7 @@ TextureBuffer[1].X:= TextureBuffer[0].X + waves; TextureBuffer[1].Y:= TextureBuffer[0].Y; TextureBuffer[2].X:= TextureBuffer[1].X; -TextureBuffer[2].Y:= SpritesData[sprWater].Texture^.ry; +TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry; TextureBuffer[3].X:= TextureBuffer[0].X; TextureBuffer[3].Y:= TextureBuffer[2].Y; @@ -728,7 +747,7 @@ begin // Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway ScreenBottom:= (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine); - offsetY:= 10 * min(0, -145 - ScreenBottom); + offsetY:= 10 * Min(0, -145 - ScreenBottom); SkyOffset:= offsetY div 35 + cWaveHeight; HorizontOffset:= SkyOffset; if ScreenBottom > SkyOffset then @@ -792,7 +811,10 @@ DrawVisualGears(2); - DrawWater(cWaterOpacity, 0); + if SuddenDeathDmg then + DrawWater(cSDWaterOpacity, 0) + else + DrawWater(cWaterOpacity, 0); // Waves ChangeDepth(RM, cStereo_Water); @@ -803,10 +825,16 @@ //DrawWater(cWaterOpacity, - offsetY div 40); ChangeDepth(RM, cStereo_Water); DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8); - DrawWater(cWaterOpacity, - offsetY div 20); + if SuddenDeathDmg then + DrawWater(cSDWaterOpacity, - offsetY div 20) + else + DrawWater(cWaterOpacity, - offsetY div 20); ChangeDepth(RM, cStereo_Water); DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2); - DrawWater(cWaterOpacity, - offsetY div 10); + if SuddenDeathDmg then + DrawWater(cSDWaterOpacity, - offsetY div 10) + else + DrawWater(cWaterOpacity, - offsetY div 10); ChangeDepth(RM, cStereo_Water); DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0); ResetDepth(RM); @@ -860,73 +888,8 @@ DrawSprite(sprFrame, -(cScreenWidth shr 1) + t - 4 + offsetY, cScreenHeight - offsetX, 0); end; -{$IFNDEF IPHONEOS} -// Timetrial -if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then - begin - if TimeTrialStopTime = 0 then i:= RealTicks - TimeTrialStartTime else i:= TimeTrialStopTime - TimeTrialStartTime; - t:= 272; - // right frame - DrawSprite(sprFrame, -cScreenWidth div 2 + t, 8, 1); - dec(t, 32); - // 1 ms - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 10 ms - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 100 ms - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 16); - // Point - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 11); - dec(t, 32); - i:= i div 10; - // 1 s - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 10s - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 6); - dec(t, 16); - // Point - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 10); - dec(t, 32); - i:= i div 6; - // 1 m - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - dec(t, 32); - i:= i div 10; - // 10 m - DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); - // left frame - DrawSprite(sprFrame, -cScreenWidth div 2 + t - 4, 8, 0); - end; -{$ENDIF} - // Captions -{$IFDEF IPHONEOS} -offset:= 40; -{$ELSE} -if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then offset:= 48 -else offset:= 8; -{$ENDIF} - - for grp:= Low(TCapGroup) to High(TCapGroup) do - with Captions[grp] do - if Tex <> nil then - begin - DrawCentered(0, offset, Tex); - inc(offset, Tex^.h + 2); - if EndTime <= RealTicks then - begin - FreeTexture(Tex); - Tex:= nil; - EndTime:= 0 - end; - end; +DrawCaptions; // Teams Healths for t:= 0 to Pred(TeamsCount) do @@ -935,7 +898,7 @@ highlight:= bShowFinger and (CurrentTeam = TeamsArray[t]) and ((RealTicks mod 1000) < 500); if highlight then - Tint(Clan^.Color); + Tint(Clan^.Color shl 8 or $FF); // draw name DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY, NameTagTex); @@ -1034,7 +997,7 @@ if (ReadyTimeLeft = 0) and (missionTimer > 0) then dec(missionTimer, Lag); if missionTimer < 0 then missionTimer:= 0; // avoid subtracting below 0 if missionTex <> nil then - DrawCentered(0, min((cScreenHeight shr 1) + 100, cScreenHeight - 48 - missionTex^.h), missionTex); + DrawCentered(0, Min((cScreenHeight shr 1) + 100, cScreenHeight - 48 - missionTex^.h), missionTex); end; // fps @@ -1175,22 +1138,6 @@ isFirstFrame:= false end; -procedure AddCaption(s: shortstring; Color: Longword; Group: TCapGroup); -begin -//if Group in [capgrpGameState] then WriteLnToConsole(s); - if Captions[Group].Tex <> nil then - FreeTexture(Captions[Group].Tex); - Captions[Group].Tex:= nil; - - Captions[Group].Tex:= RenderStringTex(s, Color, fntBig); - - case Group of - capgrpGameState: Captions[Group].EndTime:= RealTicks + 2200 - else - Captions[Group].EndTime:= RealTicks + 1400 + LongWord(Captions[Group].Tex^.w) * 3; - end; -end; - procedure MoveCamera; var EdgesDist, wdy: LongInt; PrevSentPointTime: LongWord = 0; @@ -1316,8 +1263,8 @@ end else begin - r.x:= ((-icon - 1) shr 5) * 32; - r.y:= ((-icon - 1) mod 32) * 32; + r.x:= ((-icon - 1) shr 4) * 32; + r.y:= ((-icon - 1) mod 16) * 32; missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, SpritesData[sprAMAmmos].Surface, @r) end; end; @@ -1330,7 +1277,7 @@ procedure ShakeCamera(amount: LongWord); begin - amount:= max(1, amount); + amount:= Max(1, amount); WorldDx:= WorldDx - amount + LongInt(getRandom(1 + amount * 2)); WorldDy:= WorldDy - amount + LongInt(getRandom(1 + amount * 2)); end; @@ -1355,8 +1302,6 @@ missionTimer:= 0; missionTex:= nil; cOffsetY:= 0; - - FillChar(Captions, sizeof(Captions), 0) end; procedure freeModule;
--- a/misc/hedgewars.desktop Mon Dec 27 23:57:44 2010 +0100 +++ b/misc/hedgewars.desktop Tue Jan 04 12:53:46 2011 +0100 @@ -5,13 +5,15 @@ Name=Hedgewars GenericName=Fighting Hedgehogs GenericName[de]=Kämpfende Igel +GenericName[es]=Batallas entre erizos +GenericName[fr]=Bataille de hérissons +GenericName[ko]=고슴도치 싸우기 +GenericName[it]=Ricci combattenti +GenericName[pl]=Walczące jeże +GenericName[pt]=Batalhas entre ouriços GenericName[ru]=Битвы ежей -GenericName[pl]=Walczące jeże GenericName[sk]=Bojujúci ježkovia GenericName[sv]=Stridande igelkottar -GenericName[es]=Batallas entre erizos -GenericName[it]=Ricci combattenti -GenericName[pt]=Batalhas entre ouriços Icon=hedgewars.png Exec=hedgewars Terminal=false
--- a/project_files/HedgewarsMobile/Classes/AboutViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/AboutViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -91,6 +91,37 @@ // do nothing } +-(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 95; +} + +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section { + NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; + char *fullver; + int proto; + HW_versionInfo(&proto, &fullver); + + NSString *footerString = [[NSString alloc] initWithFormat: + @"You are running Hedgewars-iOS %@ based on Hedgewars version %s (protocol %d)", + version, fullver, proto]; + + UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 50)]; + footer.backgroundColor = [UIColor clearColor]; + + UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width*80/100, 90)]; + label.center = CGPointMake(self.tableView.frame.size.width/2, 45); + label.textAlignment = UITextAlignmentCenter; + label.font = [UIFont systemFontOfSize:16]; + label.textColor = [UIColor lightGrayColor]; + label.numberOfLines = 5; + label.text = footerString; + + label.backgroundColor = [UIColor clearColor]; + [footer addSubview:label]; + [label release]; + return [footer autorelease]; +} + #pragma mark - #pragma mark Memory Management -(void) didReceiveMemoryWarning {
--- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -27,7 +27,7 @@ #define BTNS_PER_ROW 9 #define DEFAULT_DESCRIPTION IS_IPAD() ? \ - NSLocalizedString(@"Hold your finger on a weapon to see what it does...",@"") : \ + NSLocalizedString(@"Hold your finger on a weapon to see what it does.\nYou can move this window anywhere on the screen.",@"") : \ NSLocalizedString(@"Hold your finger on a weapon to see what it does.\nTap anywhere to dismiss.",@"") @implementation AmmoMenuViewController @@ -40,11 +40,6 @@ #pragma mark - #pragma mark view handling -(void) viewDidLoad { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(updateAmmoVisuals) - name:@"updateAmmoVisuals" - object:nil]; - self.view.frame = CGRectMake(0, 0, 480, 320); self.view.backgroundColor = [UIColor blackColor]; self.view.layer.borderColor = [[UIColor whiteColor] CGColor]; @@ -344,7 +339,6 @@ } -(void) viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; self.imagesArray = nil; self.buttonsArray = nil; self.nameLabel = nil;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/Appirater.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,105 @@ +/* + This file is part of Appirater. + + 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. + */ +/* + * Appirater.h + * appirater + * + * Created by Arash Payan on 9/5/09. + * http://arashpayan.com + * Copyright 2010 Arash Payan. All rights reserved. + */ + +#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 5 // 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 10 // 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/Appirater.m Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,207 @@ +/* + This file is part of Appirater. + + 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. + */ +/* + * Appirater.m + * appirater + * + * Created by Arash Payan on 9/5/09. + * http://arashpayan.com + * Copyright 2010 Arash Payan. All rights reserved. + */ + +#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"; + +@interface Appirater (hidden) + +-(BOOL) connectedToNetwork; + +@end + +@implementation Appirater (hidden) + +-(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; + + BOOL 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; +} + +@end + + +@implementation Appirater + ++(void) appLaunched { + Appirater *appirater = [[Appirater alloc] init]; + [NSThread detachNewThreadSelector:@selector(appLaunchedHandler) toTarget:appirater withObject:nil]; +} + +-(void) appLaunchedHandler { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + 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 + int launchCount = [userDefaults integerForKey:kAppiraterLaunchCount]; + launchCount++; + [userDefaults setInteger:launchCount forKey:kAppiraterLaunchCount]; + if (APPIRATER_DEBUG) + NSLog(@"APPIRATER Launch count: %d", 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 ([self connectedToNetwork]) { // 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]; + + [pool release]; +} + +-(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
--- a/project_files/HedgewarsMobile/Classes/CGPointUtils.c Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/CGPointUtils.c Tue Jan 04 12:53:46 2011 +0100 @@ -32,3 +32,29 @@ CGFloat rads = acos(((a*c) + (b*d)) / ((sqrt(a*a + b*b)) * (sqrt(c*c + d*d)))); return radiansToDegrees(rads); } + +CGFloat CGPointDot(CGPoint a,CGPoint b) { + return a.x*b.x+a.y*b.y; +} + +CGFloat CGPointLen(CGPoint a) { + return sqrtf(a.x*a.x+a.y*a.y); +} + +CGPoint CGPointSub(CGPoint a,CGPoint b) { + CGPoint c = {a.x-b.x,a.y-b.y}; + return c; +} + +CGFloat CGPointDist(CGPoint a,CGPoint b) { + CGPoint c = CGPointSub(a,b); + return CGPointLen(c); +} + +CGPoint CGPointNorm(CGPoint a) { + CGFloat m = sqrtf(a.x*a.x+a.y*a.y); + CGPoint c; + c.x = a.x/m; + c.y = a.y/m; + return c; +}
--- a/project_files/HedgewarsMobile/Classes/CGPointUtils.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/CGPointUtils.h Tue Jan 04 12:53:46 2011 +0100 @@ -21,3 +21,9 @@ CGFloat distanceBetweenPoints (CGPoint first, CGPoint second); CGFloat angleBetweenPoints(CGPoint first, CGPoint second); CGFloat angleBetweenLines(CGPoint line1Start, CGPoint line1End, CGPoint line2Start, CGPoint line2End); + +CGFloat CGPointDot(CGPoint a, CGPoint b); +CGFloat CGPointLen(CGPoint a); +CGPoint CGPointSub(CGPoint a, CGPoint b); +CGFloat CGPointDist(CGPoint a, CGPoint b); +CGPoint CGPointNorm(CGPoint a);
--- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.h Tue Jan 04 12:53:46 2011 +0100 @@ -25,6 +25,7 @@ #define SETTINGS_FILE() [DOCUMENTS_FOLDER() stringByAppendingString:@"/settings.plist"] #define DEBUG_FILE() [DOCUMENTS_FOLDER() stringByAppendingString:@"/hw-game.log"] +#define HEDGEHOG_FILE() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Settings/Images/hedgehog.png"] #define TEAMS_DIRECTORY() [DOCUMENTS_FOLDER() stringByAppendingString:@"/Teams/"] #define WEAPONS_DIRECTORY() [DOCUMENTS_FOLDER() stringByAppendingString:@"/Weapons/"] @@ -52,10 +53,12 @@ #define UICOLOR_HW_YELLOW_TEXT [UIColor colorWithRed:(CGFloat)0xF0/255 green:(CGFloat)0xD0/255 blue:0 alpha:1] #define UICOLOR_HW_DARKBLUE [UIColor colorWithRed:(CGFloat)0x0F/255 green:0 blue:(CGFloat)0x42/255 alpha:1] #define UICOLOR_HW_ALPHABLUE [UIColor colorWithRed:(CGFloat)0x0F/255 green:0 blue:(CGFloat)0x42/255 alpha:0.58f] +#define UICOLOR_HW_ALMOSTBLACK (IS_NOT_POWERFUL()) ? [UIColor blackColor] : [UIColor colorWithRed:0 green:0 blue:0 alpha:0.6] #define IS_DUALHEAD() ([[UIScreen class] respondsToSelector:@selector(screens)] && [[UIScreen screens] count] > 1) #define IS_IPAD() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define IS_NOT_POWERFUL() ([modelType() hasPrefix:@"iPhone1"] || [modelType() hasPrefix:@"iPod1,1"] || [modelType() hasPrefix:@"iPod2,1"]) +#define IS_NOT_VERY_POWERFUL() ([modelType() hasPrefix:@"iPad1"] || [modelType() hasPrefix:@"iPhone2"] || [modelType() hasPrefix:@"iPod3"] || [modelType() hasPrefix:@"iPod4"] ) #define DEFAULT_NETGAME_PORT 46631 @@ -72,3 +75,10 @@ UILabel *createLabelWithParams (NSString *title, CGRect frame, CGFloat borderWidth, UIColor *borderColor, UIColor *backgroundColor); CGSize PSPNGSizeFromMetaData (NSString *aFileName); + +@interface NSString (extra) + +-(NSString *) MD5hash; + +@end +
--- a/project_files/HedgewarsMobile/Classes/CommodityFunctions.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/CommodityFunctions.m Tue Jan 04 12:53:46 2011 +0100 @@ -25,15 +25,13 @@ #import <mach/mach.h> #import <mach/mach_host.h> #import <QuartzCore/QuartzCore.h> -#import "AudioToolbox/AudioToolbox.h" +#import <AudioToolbox/AudioToolbox.h> +#import <CommonCrypto/CommonDigest.h> #import "PascalImports.h" BOOL inline rotationManager (UIInterfaceOrientation interfaceOrientation) { - if (IS_IPAD()) - return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || - (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); - else - return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); + return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || + (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); } NSInteger inline randomPort () { @@ -186,3 +184,19 @@ // Return Size. return CGSizeMake(resultWidth,resultHeight); } + +@implementation NSString (extra) + +-(NSString *)MD5hash { + const char *cStr = [self UTF8String]; + unsigned char result[16]; + CC_MD5( cStr, strlen(cStr), result ); + return [NSString stringWithFormat: + @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", + result[0], result[1], result[2], result[3], result[4], result[5], + result[6], result[7], result[8], result[9], result[10], result[11], + result[12], result[13], result[14], result[15]]; +} + + +@end
--- a/project_files/HedgewarsMobile/Classes/CreationChamber.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/CreationChamber.h Tue Jan 04 12:53:46 2011 +0100 @@ -23,4 +23,4 @@ void createTeamNamed (NSString *nameWithoutExt); void createWeaponNamed (NSString *nameWithoutExt, int type); -void createSchemeNamed (NSString *nameWithoutExt); \ No newline at end of file +void createSchemeNamed (NSString *nameWithoutExt);
--- a/project_files/HedgewarsMobile/Classes/CreationChamber.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/CreationChamber.m Tue Jan 04 12:53:46 2011 +0100 @@ -74,57 +74,54 @@ NSDictionary *theWeapon = nil; switch (type) { - case 0: //default + default: //default theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: - @"93919294221991210322351110012010000002111101010111",@"ammostore_initialqt", - @"04050405416006555465544647765766666661555101011154",@"ammostore_probability", - @"00000000000002055000000400070040000000002000000006",@"ammostore_delay", - @"13111103121111111231141111111111111112111111011111",@"ammostore_crate", nil]; + @"939192942219912103223511100120100000021111010101112",@"ammostore_initialqt", + @"040504054160065554655446477657666666615551010111541",@"ammostore_probability", + @"000000000000020550000004000700400000000020000000060",@"ammostore_delay", + @"131111031211111112311411111111111111121111110111112",@"ammostore_crate", nil]; break; case 1: //crazy theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: - @"99999999999999999929999999999999992999999999099999",@"ammostore_initialqt", - @"11111101111111111111111111111111111111111111011111",@"ammostore_probability", - @"00000000000000000000000000000000000000000000000000",@"ammostore_delay", - @"13111103121111111231141111111111111112111101011111",@"ammostore_crate", nil]; + @"999999999999999999299999999999999929999999990999999",@"ammostore_initialqt", + @"111111011111111111111111111111111111111111110111111",@"ammostore_probability", + @"000000000000000000000000000000000000000000000000000",@"ammostore_delay", + @"131111031211111112311411111111111111121111010111111",@"ammostore_crate", nil]; break; case 2: //pro mode theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: - @"90900090000000000000090000000000000000000000000000",@"ammostore_initialqt", - @"00000000000000000000000000000000000000000000000000",@"ammostore_probability", - @"00000000000002055000000400070040000000002000000000",@"ammostore_delay", - @"11111111111111111111111111111111111111111001011111",@"ammostore_crate", nil]; + @"909000900000000000000900000000000000000000000000000",@"ammostore_initialqt", + @"000000000000000000000000000000000000000000000000000",@"ammostore_probability", + @"000000000000020550000004000700400000000020000000000",@"ammostore_delay", + @"111111111111111111111111111111111111111110010111111",@"ammostore_crate", nil]; break; case 3: //shoppa theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: - @"00000099000000000000000000000000000000000000000000",@"ammostore_initialqt", - @"44444100442444022101121212224220000000020004000100",@"ammostore_probability", - @"00000000000000000000000000000000000000000000000000",@"ammostore_delay", - @"11111111111111111111111111111111111111111011011111",@"ammostore_crate", nil]; + @"000000990000000000000000000000000000000000000000000",@"ammostore_initialqt", + @"444441004424440221011212122242200000000200040001001",@"ammostore_probability", + @"000000000000000000000000000000000000000000000000000",@"ammostore_delay", + @"111111111111111111111111111111111111111110110111111",@"ammostore_crate", nil]; break; case 4: //clean slate theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: - @"10100090000100000110000000000000000000000000000010",@"ammostore_initialqt", - @"04050405416006555465544647765766666661555101011154",@"ammostore_probability", - @"00000000000002055000000400070040000000002000000000",@"ammostore_delay", - @"13111103121111111231141111111111111112111111011111",@"ammostore_crate", nil]; + @"101000900001000001100000000000000000000000000000100",@"ammostore_initialqt", + @"040504054160065554655446477657666666615551010111541",@"ammostore_probability", + @"000000000000020550000004000700400000000020000000000",@"ammostore_delay", + @"131111031211111112311411111111111111121111110111111",@"ammostore_crate", nil]; break; case 5: //minefield theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: - @"00000099000900000003000000000000000000000000000000",@"ammostore_initialqt", - @"00000000000000000000000000000000000000000000000000",@"ammostore_probability", - @"00000000000002055000000400070040000000002000000000",@"ammostore_delay", - @"11111111111111111111111111111111111111111111011111",@"ammostore_crate", nil]; + @"000000990009000000030000000000000000000000000000000",@"ammostore_initialqt", + @"000000000000000000000000000000000000000000000000000",@"ammostore_probability", + @"000000000000020550000004000700400000000020000000000",@"ammostore_delay", + @"111111111111111111111111111111111111111111110111111",@"ammostore_crate", nil]; break; case 6: //thinking with portals theWeapon = [[NSDictionary alloc] initWithObjectsAndKeys: - @"90000090020000000021000000000000001100000900000000",@"ammostore_initialqt", - @"04050405416006555465544647765766666661555101011154",@"ammostore_probability", - @"00000000000002055000000400070040000000002000000006",@"ammostore_delay", - @"13111103121111111231141111111111111112111111011111",@"ammostore_crate", nil]; - break; - default: - NSLog(@"Nope"); + @"900000900200000000210000000000000011000009000000000",@"ammostore_initialqt", + @"040504054160065554655446477657666666615551010111541",@"ammostore_probability", + @"000000000000020550000004000700400000000020000000060",@"ammostore_delay", + @"131111031211111112311411111111111111121111110111111",@"ammostore_crate", nil]; break; } @@ -145,45 +142,51 @@ error:NULL]; } + int basicFlags[] = {100, 100, 45, 15, 47, 5, 100, 5, 35, 25, 3, 4, 0, 2}; + BOOL gameFlags[] = {NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, YES, NO, NO, NO, NO, + NO, NO, NO, NO, NO, NO, NO}; + NSMutableArray *basicArray = [[NSMutableArray alloc] initWithObjects: - [NSNumber numberWithInt:100], //initialhealth - [NSNumber numberWithInt:45], //turntime - [NSNumber numberWithInt:100], //damagemodifier - [NSNumber numberWithInt:15], //suddendeathtimeout - [NSNumber numberWithInt:47], //waterrise - [NSNumber numberWithInt:5], //healthdecrease - [NSNumber numberWithInt:5], //cratedrops - [NSNumber numberWithInt:35], //healthprob - [NSNumber numberWithInt:25], //healthamount - [NSNumber numberWithInt:3], //minestime - [NSNumber numberWithInt:4], //minesnumber - [NSNumber numberWithInt:0], //dudmines - [NSNumber numberWithInt:2], //explosives + [NSNumber numberWithInt:basicFlags[0]], //initialhealth + [NSNumber numberWithInt:basicFlags[1]], //damagemodifier + [NSNumber numberWithInt:basicFlags[2]], //turntime + [NSNumber numberWithInt:basicFlags[3]], //suddendeathtimeout + [NSNumber numberWithInt:basicFlags[4]], //waterrise + [NSNumber numberWithInt:basicFlags[5]], //healthdecrease + [NSNumber numberWithInt:basicFlags[6]], //ropelength + [NSNumber numberWithInt:basicFlags[7]], //cratedrops + [NSNumber numberWithInt:basicFlags[8]], //healthprob + [NSNumber numberWithInt:basicFlags[9]], //healthamount + [NSNumber numberWithInt:basicFlags[10]], //minestime + [NSNumber numberWithInt:basicFlags[11]], //minesnumber + [NSNumber numberWithInt:basicFlags[12]], //dudmines + [NSNumber numberWithInt:basicFlags[13]], //explosives nil]; NSMutableArray *gamemodArray= [[NSMutableArray alloc] initWithObjects: - [NSNumber numberWithBool:NO], //fortmode - [NSNumber numberWithBool:NO], //divideteam - [NSNumber numberWithBool:NO], //solidland - [NSNumber numberWithBool:NO], //addborder - [NSNumber numberWithBool:NO], //lowgravity - [NSNumber numberWithBool:NO], //lasersight - [NSNumber numberWithBool:NO], //invulnerable - [NSNumber numberWithBool:NO], //resethealth - [NSNumber numberWithBool:NO], //vampirism - [NSNumber numberWithBool:NO], //karma - [NSNumber numberWithBool:NO], //artillery - [NSNumber numberWithBool:YES], //randomorder - [NSNumber numberWithBool:NO], //king - [NSNumber numberWithBool:NO], //placehedgehogs - [NSNumber numberWithBool:NO], //clansharesammo - [NSNumber numberWithBool:NO], //disablegirders - [NSNumber numberWithBool:NO], //disablelandobjects - [NSNumber numberWithBool:NO], //aisurvival - [NSNumber numberWithBool:NO], //infattack - [NSNumber numberWithBool:NO], //resetweaps - [NSNumber numberWithBool:NO], //perhogammo - [NSNumber numberWithBool:NO], //nowind + [NSNumber numberWithBool:gameFlags[0]], //fortmode + [NSNumber numberWithBool:gameFlags[1]], //divideteam + [NSNumber numberWithBool:gameFlags[2]], //solidland + [NSNumber numberWithBool:gameFlags[3]], //addborder + [NSNumber numberWithBool:gameFlags[4]], //lowgravity + [NSNumber numberWithBool:gameFlags[5]], //lasersight + [NSNumber numberWithBool:gameFlags[6]], //invulnerable + [NSNumber numberWithBool:gameFlags[7]], //resethealth + [NSNumber numberWithBool:gameFlags[8]], //vampirism + [NSNumber numberWithBool:gameFlags[9]], //karma + [NSNumber numberWithBool:gameFlags[10]], //artillery + [NSNumber numberWithBool:gameFlags[11]], //randomorder + [NSNumber numberWithBool:gameFlags[12]], //king + [NSNumber numberWithBool:gameFlags[13]], //placehedgehogs + [NSNumber numberWithBool:gameFlags[14]], //clansharesammo + [NSNumber numberWithBool:gameFlags[15]], //disablegirders + [NSNumber numberWithBool:gameFlags[16]], //disablelandobjects + [NSNumber numberWithBool:gameFlags[17]], //aisurvival + [NSNumber numberWithBool:gameFlags[18]], //infattack + [NSNumber numberWithBool:gameFlags[19]], //resetweaps + [NSNumber numberWithBool:gameFlags[20]], //perhogammo + [NSNumber numberWithBool:gameFlags[21]], //nowind + [NSNumber numberWithBool:gameFlags[22]], //morewind nil]; NSMutableDictionary *theScheme = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
--- a/project_files/HedgewarsMobile/Classes/FlagsViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/FlagsViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -20,6 +20,7 @@ #import "FlagsViewController.h" +#import <QuartzCore/QuartzCore.h> #import "CommodityFunctions.h" @implementation FlagsViewController @@ -99,6 +100,7 @@ UIImage *flagSprite = [[UIImage alloc] initWithContentsOfFile:flagFile]; [flagFile release]; cell.imageView.image = flagSprite; + cell.imageView.layer.borderWidth = 0.3; [flagSprite release]; cell.textLabel.text = [[source objectAtIndex:row] stringByDeletingPathExtension];
--- a/project_files/HedgewarsMobile/Classes/FortsViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/FortsViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -23,6 +23,8 @@ #import "CommodityFunctions.h" #import "UIImageExtra.h" +#define IMGNUM_PER_FORT 4 + @implementation FortsViewController @synthesize teamDictionary, fortArray, lastIndexPath; @@ -41,7 +43,7 @@ NSMutableArray *filteredContents = [[NSMutableArray alloc] initWithCapacity:([directoryContents count] / 3)]; // we need to remove the double entries and the L.png suffix for (int i = 0; i < [directoryContents count]; i++) { - if (i % 3 == 1) { + if (i % IMGNUM_PER_FORT == 3) { NSString *currentName = [directoryContents objectAtIndex:i]; NSString *correctName = [currentName substringToIndex:([currentName length] - 5)]; [filteredContents addObject:correctName]; @@ -51,13 +53,13 @@ [filteredContents release]; // statically set row height instead of using delegate method for performance reasons - self.tableView.rowHeight = 200; + self.tableView.rowHeight = 128; self.title = NSLocalizedString(@"Choose team fort",@""); } -- (void)viewWillAppear:(BOOL)animated { +-(void) viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView reloadData]; [self.tableView setContentOffset:CGPointMake(0,0) animated:NO]; @@ -79,10 +81,9 @@ static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { + if (cell == nil) cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; - } NSString *fortName = [fortArray objectAtIndex:[indexPath row]]; cell.textLabel.text = fortName; @@ -151,7 +152,6 @@ [teamDictionary release]; [lastIndexPath release]; [fortArray release]; -// [fortSprites release]; [super dealloc]; }
--- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -25,6 +25,7 @@ #import "TeamConfigViewController.h" #import "SchemeWeaponConfigViewController.h" #import "HelpPageViewController.h" +#import "StatsPageViewController.h" #import "CommodityFunctions.h" #import "UIImageExtra.h" #import "PascalImports.h" @@ -38,12 +39,7 @@ } -(IBAction) buttonPressed:(id) sender { - // works even if it's not actually a button - UIButton *theButton; - if (IS_IPAD()) - theButton = [[(NSNotification *)sender userInfo] objectForKey:@"sender"]; - else - theButton = (UIButton *)sender; + UIButton *theButton = (UIButton *)sender; switch (theButton.tag) { case 0: @@ -157,7 +153,6 @@ int hogs = 0; for (NSDictionary *teamData in teamConfigViewController.listOfSelectedTeams) hogs += [[teamData objectForKey:@"number"] intValue]; - if (hogs > self.mapConfigViewController.maxHogs) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Too many hogs",@"") message:NSLocalizedString(@"The map is too small for that many hogs",@"") @@ -172,7 +167,7 @@ // play if there aren't too many teams if ([self.teamConfigViewController.listOfSelectedTeams count] > HW_getMaxNumberOfTeams()) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Too many teams",@"") - message:NSLocalizedString(@"Max six teams are allowed in the same game",@"") + message:NSLocalizedString(@"You exceeded the maximum number of tems allowed in a game",@"") delegate:nil cancelButtonTitle:NSLocalizedString(@"Ok, got it",@"") otherButtonTitles:nil]; @@ -193,7 +188,7 @@ return NO; } - // play if the gameflags are set correctly (divideteam works only with 2 teams + // play if the gameflags are set correctly (divideteam works only with 2 teams) NSString *schemePath = [[NSString alloc] initWithFormat:@"%@/%@",SCHEMES_DIRECTORY(),self.schemeWeaponConfigViewController.selectedScheme]; NSArray *gameFlags = [[NSDictionary dictionaryWithContentsOfFile:schemePath] objectForKey:@"gamemod"]; [schemePath release]; @@ -232,43 +227,30 @@ [NSNumber numberWithInt:self.interfaceOrientation],@"orientation", nil]; - // finally launch game and remove this controller - DLog(@"sending config %@", gameDictionary); + NSDictionary *allDataNecessary = [NSDictionary dictionaryWithObjectsAndKeys: + gameDictionary,@"game_dictionary", + [NSNumber numberWithBool:NO],@"netgame", + @"",@"savefile", + nil]; - if ([[gameDictionary allKeys] count] == 11) { - NSDictionary *allDataNecessary = [NSDictionary dictionaryWithObjectsAndKeys:gameDictionary,@"game_dictionary", @"",@"savefile", - [NSNumber numberWithBool:NO],@"netgame", nil]; - // let's hide all the views while the game is on - UIViewController *dummy = [[UIViewController alloc] init]; - [self presentModalViewController:dummy animated:NO]; - [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; - [self dismissModalViewControllerAnimated:NO]; - [dummy release]; - } else { - DLog(@"gameconfig data not complete!!"); - [self.parentViewController dismissModalViewControllerAnimated:YES]; - // present an alert to the user, with an image on the ipad (too big for the iphone) - NSString *msg = NSLocalizedString(@"Something went wrong with your configuration. Please try again.",@""); - if (IS_IPAD()) - msg = [msg stringByAppendingString:@"\n\n\n\n\n\n\n\n"]; // this makes space for the image + StatsPageViewController *statsPage = [[StatsPageViewController alloc] initWithStyle:UITableViewStyleGrouped]; + statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical; + if ([statsPage respondsToSelector:@selector(setModalPresentationStyle:)]) + statsPage.modalPresentationStyle = UIModalPresentationPageSheet; + [self presentModalViewController:statsPage animated:NO]; - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Whoops" - message:msg - delegate:nil - cancelButtonTitle:@"Ok" - otherButtonTitles:nil]; - - if (IS_IPAD()) { - UIImageView *deniedImg = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"denied.png"]]; - deniedImg.frame = CGRectMake(25, 80, 240, 160); - [alert addSubview:deniedImg]; - [deniedImg release]; - } - [alert show]; - [alert release]; + NSArray *stats = [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; + if ([stats count] == 0) + [statsPage dismissModalViewControllerAnimated:NO]; + else { + statsPage.statsArray = stats; + [statsPage.tableView reloadData]; + [statsPage viewWillAppear:YES]; } + + [statsPage release]; } -(void) loadNiceHogs { @@ -312,12 +294,6 @@ self.view.frame = CGRectMake(0, 0, screen.size.height, screen.size.width); if (IS_IPAD()) { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(buttonPressed:) - name:@"buttonPressed" - object:nil]; - srandom(time(NULL)); - // load other controllers if (self.mapConfigViewController == nil) self.mapConfigViewController = [[MapConfigViewController alloc] initWithNibName:@"MapConfigViewController-iPad" bundle:nil]; @@ -358,6 +334,7 @@ self.teamConfigViewController.view.frame = CGRectMake(348, 200, 328, 480); self.schemeWeaponConfigViewController.view.frame = CGRectMake(10, 70, 300, 600); + self.mapConfigViewController.parentController = self; } else { // this is the visible controller if (self.mapConfigViewController == nil) @@ -367,6 +344,7 @@ [self.view addSubview:self.schemeWeaponConfigViewController.view]; } [self.view addSubview:self.mapConfigViewController.view]; + self.mapConfigViewController.externalController = schemeWeaponConfigViewController; [super viewDidLoad]; } @@ -420,7 +398,6 @@ } -(void) viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; self.imgContainer = nil; self.mapConfigViewController = nil; self.teamConfigViewController = nil;
--- a/project_files/HedgewarsMobile/Classes/GameSetup.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameSetup.h Tue Jan 04 12:53:46 2011 +0100 @@ -25,10 +25,12 @@ @interface GameSetup : NSObject { NSDictionary *systemSettings; NSDictionary *gameConfig; + NSMutableArray *statsArray; NSInteger ipcPort; // Port on which engine will listen TCPsocket csd; // Client socket descriptor - + TCPsocket esd; // External socket descriptor + NSString *savePath; BOOL isNetGame; BOOL menuStyle; @@ -36,18 +38,18 @@ @property (nonatomic, retain) NSDictionary *systemSettings; @property (nonatomic, retain) NSDictionary *gameConfig; +@property (nonatomic, retain) NSMutableArray *statsArray; @property (nonatomic, retain) NSString *savePath; @property (assign) BOOL menuStyle; -(id) initWithDictionary:(NSDictionary *)gameDictionary; -(void) engineProtocol; --(void) startThread:(NSString *)selector; --(int) sendToEngine:(NSString *)string; --(int) sendToEngineNoSave:(NSString *)string; +-(int) sendToEngine:(NSString *)string; +-(int) sendToEngineNoSave:(NSString *)string; -(void) provideTeamData:(NSString *)teamName forHogs:(NSInteger) numberOfPlayingHogs withHealth:(NSInteger) initialHealth ofColor:(NSNumber *)teamColor; -(void) provideAmmoData:(NSString *)ammostoreName forPlayingTeams:(NSInteger) numberOfTeams; -(NSInteger) provideScheme:(NSString *)schemeName; --(const char **)getSettings:(NSString *)recordFile; +-(const char **)getGameSettings:(NSString *)recordFile; @end
--- a/project_files/HedgewarsMobile/Classes/GameSetup.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/GameSetup.m Tue Jan 04 12:53:46 2011 +0100 @@ -21,7 +21,6 @@ #import "GameSetup.h" #import "SDL_uikitappdelegate.h" -#import "SDL_net.h" #import "PascalImports.h" #import "CommodityFunctions.h" #import "OverlayViewController.h" @@ -29,7 +28,7 @@ #define BUFFER_SIZE 255 // like in original frontend @implementation GameSetup -@synthesize systemSettings, gameConfig, savePath, menuStyle; +@synthesize systemSettings, gameConfig, statsArray, savePath, menuStyle; -(id) initWithDictionary:(NSDictionary *)gameDictionary { if (self = [super init]) { @@ -58,11 +57,14 @@ [outputFormatter release]; } else self.savePath = path; + + self.statsArray = nil; } return self; } -(void) dealloc { + [statsArray release]; [gameConfig release]; [systemSettings release]; [savePath release]; @@ -165,7 +167,6 @@ [schemePath release]; NSArray *basicArray = [schemeDictionary objectForKey:@"basic"]; NSArray *gamemodArray = [schemeDictionary objectForKey:@"gamemod"]; - int i = 0; int result = 0; int mask = 0x00000004; @@ -184,23 +185,16 @@ NSArray *mods = [[NSArray alloc] initWithContentsOfFile:path]; [path release]; - // initial health result = [[basicArray objectAtIndex:0] intValue]; - // turn time - NSInteger tentativeTurntime = [[basicArray objectAtIndex:1] intValue]; - if (tentativeTurntime >= 100) - tentativeTurntime = 9999; - NSString *turnTime = [[NSString alloc] initWithFormat:@"e$turntime %d",tentativeTurntime * 1000]; - [self sendToEngine:turnTime]; - [turnTime release]; - - for (i = 2; i < [basicArray count]; i++) { - NSDictionary *basicDict = [mods objectAtIndex:i]; - NSString *command = [basicDict objectForKey:@"command"]; + for (int i = 1; i < [basicArray count]; i++) { + NSDictionary *dict = [mods objectAtIndex:i]; + NSString *command = [dict objectForKey:@"command"]; NSInteger value = [[basicArray objectAtIndex:i] intValue]; - if ([basicDict objectForKey:@"checkOverMax"] && value >= [[basicDict objectForKey:@"max"] intValue]) + if ([[dict objectForKey:@"checkOverMax"] boolValue] && value >= [[dict objectForKey:@"max"] intValue]) value = 9999; + if ([[dict objectForKey:@"times1000"] boolValue]) + value = value * 1000; NSString *strToSend = [[NSString alloc] initWithFormat:@"%@ %d",command,value]; [self sendToEngine:strToSend]; [strToSend release]; @@ -212,34 +206,28 @@ } #pragma mark - -#pragma mark Thread/Network relevant code -// select one of GameSetup method and execute it in a seprate thread --(void) startThread:(NSString *)selector { - SEL usage = NSSelectorFromString(selector); - [NSThread detachNewThreadSelector:usage toTarget:self withObject:nil]; -} - --(void) dumpRawData:(const uint8_t*)buffer ofSize:(uint8_t) length { +#pragma mark Network relevant code +-(void) dumpRawData:(const char *)buffer ofSize:(uint8_t) length { // is it performant to reopen the stream every time? NSOutputStream *os = [[NSOutputStream alloc] initToFileAtPath:self.savePath append:YES]; [os open]; [os write:&length maxLength:1]; - [os write:buffer maxLength:length]; + [os write:(const uint8_t *)buffer maxLength:length]; [os close]; [os release]; } // wrapper that computes the length of the message and then sends the command string, saving the command on a file --(int) sendToEngine: (NSString *)string { +-(int) sendToEngine:(NSString *)string { uint8_t length = [string length]; - [self dumpRawData:(const uint8_t *)[string UTF8String] ofSize:length]; + [self dumpRawData:[string UTF8String] ofSize:length]; SDLNet_TCP_Send(csd, &length, 1); return SDLNet_TCP_Send(csd, [string UTF8String], length); } // wrapper that computes the length of the message and then sends the command string, skipping file writing --(int) sendToEngineNoSave: (NSString *)string { +-(int) sendToEngineNoSave:(NSString *)string { uint8_t length = [string length]; SDLNet_TCP_Send(csd, &length, 1); @@ -253,8 +241,9 @@ IPaddress ip; int eProto; BOOL clientQuit; - uint8_t buffer[BUFFER_SIZE]; + char const buffer[BUFFER_SIZE]; uint8_t msgSize; + int statMaxCapacity = 10-3; clientQuit = NO; csd = NULL; @@ -283,10 +272,10 @@ while (!clientQuit) { msgSize = 0; - memset(buffer, '\0', BUFFER_SIZE); + memset((void *)buffer, '\0', BUFFER_SIZE); if (SDLNet_TCP_Recv(csd, &msgSize, sizeof(uint8_t)) <= 0) break; - if (SDLNet_TCP_Recv(csd, buffer, msgSize) <=0) + if (SDLNet_TCP_Recv(csd, (void *)buffer, msgSize) <= 0) break; switch (buffer[0]) { @@ -298,7 +287,7 @@ else [self sendToEngineNoSave:@"TL"]; NSString *saveHeader = @"TS"; - [self dumpRawData:(const uint8_t *)[saveHeader UTF8String] ofSize:[saveHeader length]]; + [self dumpRawData:[saveHeader UTF8String] ofSize:[saveHeader length]]; // seed info [self sendToEngine:[self.gameConfig objectForKey:@"seed_command"]]; @@ -348,34 +337,59 @@ [self dumpRawData:buffer ofSize:msgSize]; sscanf((char *)buffer, "%*s %d", &eProto); - short int netProto = 0; + int netProto; char *versionStr; HW_versionInfo(&netProto, &versionStr); if (netProto == eProto) { DLog(@"Setting protocol version %d (%s)", eProto, versionStr); } else { - DLog(@"ERROR - wrong protocol number: [%s] - expecting %d", &buffer[1], eProto); + DLog(@"ERROR - wrong protocol number: %d (expecting %d)", netProto, eProto); clientQuit = YES; } break; case 'i': + if (self.statsArray == nil) + self.statsArray = [[NSMutableArray alloc] initWithCapacity:statMaxCapacity]; + NSString *tempStr = [NSString stringWithUTF8String:&buffer[2]]; + NSString *arg = [[tempStr componentsSeparatedByString:@" "] objectAtIndex:0]; + int index = [arg length] + 3; switch (buffer[1]) { - case 'r': - DLog(@"Winning team: %s", &buffer[2]); + case 'r': // winning team + [self.statsArray insertObject:[NSString stringWithUTF8String:&buffer[2]] atIndex:0]; + break; + case 'D': // best shot + [self.statsArray addObject:[NSString stringWithFormat:@"The best shot award was won by %s with %@ points", &buffer[index], arg]]; + break; + case 'k': // best hedgehog + [self.statsArray addObject:[NSString stringWithFormat:@"The best killer is %s with %@ kills in a turn", &buffer[index], arg]]; + break; + case 'K': // number of hogs killed + [self.statsArray addObject:[NSString stringWithFormat:@"A total of %@ hedgehog(s) were killed during this round", arg]]; break; - case 'k': - DLog(@"Best Hedgehog: %s", &buffer[2]); + case 'H': //something about team health + break; + case 'T': // local team stats + break; + case 'P': // player postion + break; + case 's': // self damage + [self.statsArray addObject:[NSString stringWithFormat:@"%s thought it's good to shoot his own hedgehogs with %@ points", &buffer[index], arg]]; + break; + case 'S': // friendly fire + [self.statsArray addObject:[NSString stringWithFormat:@"%s killed %@ of his own hedgehogs", &buffer[index], arg]]; + break; + case 'B': // turn skipped + [self.statsArray addObject:[NSString stringWithFormat:@"%s was scared and skipped turn %@ times", &buffer[index], arg]]; break; default: - // TODO: losta stats stuff + DLog(@"Unhandled stat message, see statsPage.cpp"); break; } break; case 'q': // game ended, can remove the savefile [[NSFileManager defaultManager] removeItemAtPath:self.savePath error:nil]; - //[[NSNotificationCenter defaultCenter] postNotificationName:@"removedSave" object:nil]; // and remove + disable the overlay [[NSNotificationCenter defaultCenter] postNotificationName:@"remove overlay" object:nil]; break; @@ -384,7 +398,7 @@ break; } } - DLog(@"Engine exited, closing server"); + DLog(@"Engine exited, ending thread"); // wait a little to let the client close cleanly [NSThread sleepForTimeInterval:2]; // Close the client socket @@ -399,7 +413,7 @@ #pragma mark - #pragma mark Setting methods // returns an array of c-strings that are read by engine at startup --(const char **)getSettings: (NSString *)recordFile { +-(const char **)getGameSettings:(NSString *)recordFile { NSInteger width, height; NSString *ipcString = [[NSString alloc] initWithFormat:@"%d", ipcPort]; NSString *localeString = [[NSString alloc] initWithFormat:@"%@.txt", [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]]; @@ -422,21 +436,21 @@ NSString *horizontalSize = [[NSString alloc] initWithFormat:@"%d", width]; NSString *verticalSize = [[NSString alloc] initWithFormat:@"%d", height]; - const char **gameArgs = (const char**) malloc(sizeof(char *) * 10); - NSInteger tmpQuality; + const char **gameArgs = (const char **)malloc(sizeof(char *) * 10); + BOOL enhanced = [[self.systemSettings objectForKey:@"enhanced"] boolValue]; NSString *modelId = modelType(); - if ([modelId hasPrefix:@"iPhone1"] || // = iPhone or iPhone 3G - [modelId hasPrefix:@"iPod1,1"] || [modelId hasPrefix:@"iPod2,1"]) // = iPod Touch or iPod Touch 2G - tmpQuality = 0x00000001 | 0x00000002 | 0x00000008 | 0x00000040; // rqLowRes | rqBlurryLand | rqSimpleRope | rqKillFlakes - else if ([modelId hasPrefix:@"iPhone2"] || // = iPhone 3GS - [modelId hasPrefix:@"iPod3"]) // = iPod Touch 3G - tmpQuality = 0x00000002 | 0x00000040; // rqBlurryLand | rqKillFlakes - else if ([modelId hasPrefix:@"iPad1"]) // = iPad - tmpQuality = 0x00000002; // rqBlurryLand - else // = everything else - tmpQuality = 0; // full quality - if (IS_IPAD() == NO) // = disable tooltips on phone + NSInteger tmpQuality; + if ([modelId hasPrefix:@"iPhone1"] || [modelId hasPrefix:@"iPod1,1"] || [modelId hasPrefix:@"iPod2,1"]) // = iPhone and iPhone 3G or iPod Touch or iPod Touch 2G + tmpQuality = 0x00000001 | 0x00000002 | 0x00000008 | 0x00000040; // rqLowRes | rqBlurryLand | rqSimpleRope | rqKillFlakes + else if ([modelId hasPrefix:@"iPhone2"] || [modelId hasPrefix:@"iPod3"]) // = iPhone 3GS or iPod Touch 3G + tmpQuality = 0x00000002 | 0x00000040; // rqBlurryLand | rqKillFlakes + else if ([modelId hasPrefix:@"iPad1"] || [modelId hasPrefix:@"iPod4"] || enhanced == NO) // = iPad 1G or iPod Touch 4G or not enhanced mode + tmpQuality = 0x00000002; // rqBlurryLand + else // = everything else + tmpQuality = 0; // full quality + + if (IS_IPAD() == NO) // = disable tooltips on phone tmpQuality = tmpQuality | 0x00000400; // prevents using an empty nickname
--- a/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/GeneralSettingsViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -76,7 +76,13 @@ case 30: //alternateSwitch [self.settingsDictionary setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"alternate"]; break; - case 60: //getReady + case 70: //enhanced graphics + [self.settingsDictionary setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"enhanced"]; + break; + case 80: //nomultitasking + [self.settingsDictionary setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"multitasking"]; + break; + case 60: //classic menu [self.settingsDictionary setObject:[NSNumber numberWithBool:theSwitch.on] forKey:@"menu"]; break; default: @@ -88,8 +94,10 @@ -(void) saveTextFieldValue:(NSString *)textString withTag:(NSInteger) tagValue { if (tagValue == 40) [self.settingsDictionary setObject:textString forKey:@"username"]; - else - [self.settingsDictionary setObject:textString forKey:@"password"]; + else { + [self.settingsDictionary setObject:[NSNumber numberWithInt:[textString length]] forKey:@"password_length"]; + [self.settingsDictionary setObject:[textString MD5hash] forKey:@"password"]; + } } #pragma mark - @@ -98,7 +106,7 @@ return 3; } --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger )section { switch (section) { case 0: // user and pass return 1; // set 2 here for the password field @@ -107,10 +115,10 @@ return 2; break; case 2: // other stuff - if (IS_IPAD()) - return 2; + if (IS_IPAD() == YES) + return 4; else - return 1; + return 3; break; default: DLog(@"Nope"); @@ -166,11 +174,19 @@ editableCell.textField.secureTextEntry = NO; editableCell.tag = 40; } else { + // create a dummy password for setting some visual content for the password + int pwdLength = [[self.settingsDictionary objectForKey:@"password_length"] intValue]; + char *dummyStr = (char *)malloc(sizeof(char)*pwdLength); + for (int i = 0; i < pwdLength; i++) + dummyStr[i] = i; + NSString *dummy = [[NSString alloc] initWithBytes:dummyStr length:pwdLength encoding:NSASCIIStringEncoding]; + free(dummyStr); editableCell.titleLabel.text = NSLocalizedString(@"Password","from the settings table"); editableCell.textField.placeholder = NSLocalizedString(@"Insert your password",@""); - editableCell.textField.text = [self.settingsDictionary objectForKey:@"password"]; + editableCell.textField.text = dummy; editableCell.textField.secureTextEntry = YES; editableCell.tag = 50; + [dummy release]; } editableCell.accessoryView = nil; @@ -208,16 +224,34 @@ } switchContent = (UISwitch *)cell.accessoryView; - if (row == 0) { - cell.textLabel.text = NSLocalizedString(@"Alternate Damage", @""); - cell.detailTextLabel.text = NSLocalizedString(@"Damage popups will notify you on every single hit", @""); - switchContent.on = [[self.settingsDictionary objectForKey:@"alternate"] boolValue]; - switchContent.tag = 30; - } else { - cell.textLabel.text = NSLocalizedString(@"Classic Ammo Menu", @""); - cell.detailTextLabel.text = NSLocalizedString(@"Select which style of ammo menu you prefer",@""); - switchContent.on = [[self.settingsDictionary objectForKey:@"menu"] boolValue]; - switchContent.tag = 60; + switch (row) { + case 0: + cell.textLabel.text = NSLocalizedString(@"Alternate Damage", @""); + cell.detailTextLabel.text = NSLocalizedString(@"Damage popups will notify you on every single hit", @""); + switchContent.on = [[self.settingsDictionary objectForKey:@"alternate"] boolValue]; + switchContent.tag = 30; + break; + case 1: + cell.textLabel.text = NSLocalizedString(@"Enanched Graphics Mode", @""); + cell.detailTextLabel.text = NSLocalizedString(@"The game will use more memory so it could crash!", @""); + switchContent.on = [[self.settingsDictionary objectForKey:@"enhanced"] boolValue]; + switchContent.tag = 70; + break; + case 2: + cell.textLabel.text = NSLocalizedString(@"Multitasking Enabled", @""); + cell.detailTextLabel.text = NSLocalizedString(@"Disable it in case of issues when returing in game", @""); + switchContent.on = [[self.settingsDictionary objectForKey:@"multitasking"] boolValue]; + switchContent.tag = 80; + break; + case 3: + cell.textLabel.text = NSLocalizedString(@"Classic Ammo Menu", @""); + cell.detailTextLabel.text = NSLocalizedString(@"Select which style of ammo menu you prefer",@""); + switchContent.on = [[self.settingsDictionary objectForKey:@"menu"] boolValue]; + switchContent.tag = 60; + break; + default: + DLog(@"Nope"); + break; } break; default:
--- a/project_files/HedgewarsMobile/Classes/HelpPageViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/HelpPageViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -36,10 +36,10 @@ // on iPhone the XIBs contain UIScrollView -(void) viewDidLoad { - if (scrollView.tag == 0) + if (scrollView.tag == 0) // ipad scrollView.contentSize = CGSizeMake(480,650); - else - scrollView.contentSize = CGSizeMake(480,460); + else // iphone + scrollView.contentSize = CGSizeMake(480,470); scrollView.maximumZoomScale = 4.0; scrollView.minimumZoomScale = 0.75; scrollView.clipsToBounds = YES; @@ -47,11 +47,6 @@ [super viewDidLoad]; } - --(void) scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view { - [self.view removeFromSuperview]; -} - -(void) viewDidUnload { [super viewDidUnload]; self.scrollView = nil; @@ -62,7 +57,6 @@ [super dealloc]; } -// on iPad the XIBs contain UIControl -(IBAction) dismiss { [UIView beginAnimations:@"helpingame" context:NULL]; self.view.alpha = 0;
--- a/project_files/HedgewarsMobile/Classes/HogButtonView.h Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* - * Hedgewars-iOS, a Hedgewars port for iOS devices - * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * File created on 20/04/2010. - */ - - -#import <UIKit/UIKit.h> - - -@interface HogButtonView : UIButton { - NSInteger numberOfHogs; - UIImage *singleHog; - NSMutableDictionary *ownerDictionary; -} - -@property (nonatomic,retain) UIImage *singleHog; -@property (nonatomic) NSInteger numberOfHogs; -@property (nonatomic,retain) NSMutableDictionary *ownerDictionary; - --(void) drawManyHogs:(NSInteger) hogs; --(void) addOne; - -@end
--- a/project_files/HedgewarsMobile/Classes/HogButtonView.m Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* - * Hedgewars-iOS, a Hedgewars port for iOS devices - * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * File created on 20/04/2010. - */ - - -#import "HogButtonView.h" -#import "CommodityFunctions.h" -#import "UIImageExtra.h" -#import "PascalImports.h" - -@implementation HogButtonView -@synthesize singleHog, numberOfHogs, ownerDictionary; - --(id) initWithFrame:(CGRect)frame { - if ((self = [super initWithFrame:frame])) { - self.backgroundColor = [UIColor clearColor]; - - NSString *normalHogFile = [[NSString alloc] initWithFormat:@"%@/Hedgehog.png",GRAPHICS_DIRECTORY()]; - UIImage *normalHogSprite = [[UIImage alloc] initWithContentsOfFile:normalHogFile andCutAt:CGRectMake(96, 0, 32, 32)]; - [normalHogFile release]; - - self.singleHog = normalHogSprite; - [normalHogSprite release]; - [self addTarget:self action:@selector(addOne) forControlEvents:UIControlEventTouchUpInside]; - } - return self; -} - --(void) addOne { - playSound(@"clickSound"); - self.highlighted = NO; - NSInteger number = self.numberOfHogs; - number++; - [self drawManyHogs:number]; -} - --(void) drawManyHogs:(NSInteger) hogs { - if (numberOfHogs != hogs) { - if (hogs <= HW_getMaxNumberOfHogs() && hogs >= 1) - numberOfHogs = hogs; - else { - if (hogs > HW_getMaxNumberOfHogs()) - numberOfHogs = 1; - else - numberOfHogs = HW_getMaxNumberOfHogs(); - } - [ownerDictionary setObject:[NSNumber numberWithInt:numberOfHogs] forKey:@"number"]; - - UIImage *teamHogs = [[[UIImage alloc] init] autorelease]; - for (int i = 0; i < numberOfHogs; i++) { - teamHogs = [singleHog mergeWith:teamHogs - atPoint:CGPointMake(8, 0) - ofSize:CGSizeMake(88, 32)]; - } - [self setImage:teamHogs forState:UIControlStateNormal]; - } -} - --(void) dealloc { - [ownerDictionary release]; - [singleHog release]; - [super dealloc]; -} - - -@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/HoldTableViewCell.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,39 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 03/07/2010. + */ + + +#import <UIKit/UIKit.h> + +@protocol HoldTableViewCellDelegate <NSObject> + +-(void) holdAction:(NSString *)content; + +@end + +@interface HoldTableViewCell : UITableViewCell { + id<HoldTableViewCellDelegate> delegate; + NSTimeInterval time; +} + +@property (nonatomic,assign) id<HoldTableViewCellDelegate> delegate; + +-(void) holdAction; + +@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/HoldTableViewCell.m Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,70 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 03/07/2010. + */ + + +#import "HoldTableViewCell.h" +#import "CGPointUtils.h" + +@implementation HoldTableViewCell +@synthesize delegate; + +#define SWIPE_DRAG_HORIZ_MIN 10 +#define SWIPE_DRAG_VERT_MAX 40 + +-(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { + delegate = nil; + } + return self; +} + +-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + UITouch *touch = [[event allTouches] anyObject]; + + time = touch.timestamp; + [self performSelector:@selector(holdAction) withObject:nil afterDelay:0.25]; + + [super touchesBegan:touches withEvent:event]; +} + +-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { + UITouch *touch = [[event allTouches] anyObject]; + + if ( touch.timestamp - time < 0.25 ) { + [NSObject cancelPreviousPerformRequestsWithTarget:self + selector:@selector(holdAction) + object:nil]; + + [super touchesEnded:touches withEvent:event]; + } else + [super touchesCancelled:touches withEvent:event]; +} + +-(void) holdAction { + if (self.delegate != nil && [self.delegate respondsToSelector:@selector(holdAction:)]) + [self.delegate holdAction:self.textLabel.text]; +} + +-(void) dealloc { + self.delegate = nil; + [super dealloc]; +} + +@end
--- a/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -185,7 +185,7 @@ #pragma mark - #pragma mark actionSheet methods -(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger) buttonIndex { - if (IS_IPAD()){ + if (IS_IPAD() == NO){ CGRect screen = [[UIScreen mainScreen] bounds]; [UIView beginAnimations:@"table width less" context:NULL]; [UIView setAnimationDuration:0.2];
--- a/project_files/HedgewarsMobile/Classes/LevelViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/LevelViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -177,7 +177,6 @@ self.lastIndexPath = indexPath; [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; } - [self.navigationController popViewControllerAnimated:YES]; } [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; }
--- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -27,6 +27,7 @@ #import "SplitViewRootController.h" #import "AboutViewController.h" #import "SavedGamesViewController.h" +#import "ServerSetup.h" @implementation MainMenuViewController @synthesize gameConfigViewController, settingsViewController, aboutViewController, savedGamesViewController; @@ -37,7 +38,6 @@ // check if some configuration files are already set; if they are present it means that the current copy must be updated -(void) createNecessaryFiles { - NSString *sourceFile, *destinationFile; NSString *resourcesDir = [[NSBundle mainBundle] resourcePath]; DLog(@"Creating necessary files"); @@ -69,31 +69,21 @@ // we copy teams only the first time because it's unlikely that newer ones are going to be added NSString *baseTeamsDir = [[NSString alloc] initWithFormat:@"%@/Settings/Teams/",resourcesDir]; for (NSString *str in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:baseTeamsDir error:NULL]) { - sourceFile = [baseTeamsDir stringByAppendingString:str]; - destinationFile = [TEAMS_DIRECTORY() stringByAppendingString:str]; + NSString *sourceFile = [baseTeamsDir stringByAppendingString:str]; + NSString *destinationFile = [TEAMS_DIRECTORY() stringByAppendingString:str]; [[NSFileManager defaultManager] removeItemAtPath:destinationFile error:NULL]; [[NSFileManager defaultManager] copyItemAtPath:sourceFile toPath:destinationFile error:NULL]; } [baseTeamsDir release]; } - // TODO: is merge needed? + // merge not needed as format rarely changes - // SCHEMES - update old stuff and add new stuff - if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == NO) - [[NSFileManager defaultManager] createDirectoryAtPath:SCHEMES_DIRECTORY() - withIntermediateDirectories:YES - attributes:nil - error:NULL]; - // TODO: do the merge if necessary - // we overwrite the default ones because it is likely that new modes are added every release + // SCHEMES - always overwrite and delete custom ones + if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == YES) + [[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL]; NSString *baseSchemesDir = [[NSString alloc] initWithFormat:@"%@/Settings/Schemes/",resourcesDir]; - for (NSString *str in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:baseSchemesDir error:NULL]) { - sourceFile = [baseSchemesDir stringByAppendingString:str]; - destinationFile = [SCHEMES_DIRECTORY() stringByAppendingString:str]; - [[NSFileManager defaultManager] removeItemAtPath:destinationFile error:NULL]; - [[NSFileManager defaultManager] copyItemAtPath:sourceFile toPath:destinationFile error:NULL]; - } - [baseSchemesDir release]; + [[NSFileManager defaultManager] copyItemAtPath:baseSchemesDir toPath:SCHEMES_DIRECTORY() error:NULL]; + // WEAPONS - always overwrite if ([[NSFileManager defaultManager] fileExistsAtPath:WEAPONS_DIRECTORY()] == NO) @@ -108,8 +98,7 @@ createWeaponNamed(@"Clean Slate", 4); createWeaponNamed(@"Minefield", 5); createWeaponNamed(@"Thinking with Portals", 6); - - DLog(@"Success"); + // merge not needed because weapons not present in the set are 0ed by GameSetup } #pragma mark - @@ -134,6 +123,17 @@ [userDefaults synchronize]; [self createNecessaryFiles]; } + + /* + ServerSetup *setup = [[ServerSetup alloc] init]; + if ([setup isNetworkReachable]) { + DLog(@"network is reachable"); + [NSThread detachNewThreadSelector:@selector(serverProtocol) + toTarget:setup + withObject:nil]; + } + [setup release]; + */ } @@ -190,11 +190,11 @@ if (nil == self.aboutViewController) { AboutViewController *about = [[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:nil]; about.modalTransitionStyle = UIModalTransitionStyleCoverVertical; - about.modalPresentationStyle = UIModalPresentationFormSheet; + if ([about respondsToSelector:@selector(setModalPresentationStyle:)]) + about.modalPresentationStyle = UIModalPresentationFormSheet; self.aboutViewController = about; [about release]; } - [self presentModalViewController:self.aboutViewController animated:YES]; #endif break; @@ -202,7 +202,8 @@ if (nil == self.savedGamesViewController) { SavedGamesViewController *savedgames = [[SavedGamesViewController alloc] initWithNibName:@"SavedGamesViewController" bundle:nil]; savedgames.modalTransitionStyle = UIModalTransitionStyleCoverVertical; - savedgames.modalPresentationStyle = UIModalPresentationPageSheet; + if ([savedgames respondsToSelector:@selector(setModalPresentationStyle:)]) + savedgames.modalPresentationStyle = UIModalPresentationPageSheet; self.savedGamesViewController = savedgames; [savedgames release]; }
--- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.h Tue Jan 04 12:53:46 2011 +0100 @@ -22,10 +22,13 @@ #import <UIKit/UIKit.h> #import "MapPreviewButtonView.h" +@class SchemeWeaponConfigViewController; +@class GameConfigViewController; + @interface MapConfigViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, MapPreviewViewDelegate> { - NSInteger oldValue; //slider - NSInteger oldPage; //segmented control - BOOL busy; + NSInteger oldValue; // for the slider + NSInteger oldPage; // for the segmented control + BOOL busy; // for the preview button // objects read (mostly) by parent view NSInteger maxHogs; @@ -48,6 +51,10 @@ // internal objects NSIndexPath *lastIndexPath; NSArray *dataSourceArray; + + // controller for mission state + SchemeWeaponConfigViewController *externalController; + GameConfigViewController *parentController; } @@ -71,6 +78,10 @@ @property (nonatomic,retain) NSIndexPath *lastIndexPath; @property (nonatomic,retain) NSArray *dataSourceArray; +@property (nonatomic,assign) SchemeWeaponConfigViewController *externalController; +@property (nonatomic,assign) GameConfigViewController *parentController; + + -(IBAction) buttonPressed:(id) sender; -(IBAction) mapButtonPressed;
--- a/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/MapConfigViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -23,13 +23,16 @@ #import "PascalImports.h" #import "CommodityFunctions.h" #import "UIImageExtra.h" +#import "SchemeWeaponConfigViewController.h" +#import "GameConfigViewController.h" #define scIndex self.segmentedControl.selectedSegmentIndex #define isRandomness() (segmentedControl.selectedSegmentIndex == 0 || segmentedControl.selectedSegmentIndex == 2) @implementation MapConfigViewController @synthesize previewButton, maxHogs, seedCommand, templateFilterCommand, mapGenCommand, mazeSizeCommand, themeCommand, staticMapCommand, - missionCommand, tableView, maxLabel, sizeLabel, segmentedControl, slider, lastIndexPath, dataSourceArray, busy; + missionCommand, tableView, maxLabel, sizeLabel, segmentedControl, slider, lastIndexPath, dataSourceArray, busy, + externalController, parentController; -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -136,6 +139,7 @@ cell.textLabel.adjustsFontSizeToFitWidth = YES; cell.textLabel.minimumFontSize = 7; cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; + cell.textLabel.backgroundColor = [UIColor clearColor]; if (isRandomness()) { UIImage *image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@/icon.png",THEMES_DIRECTORY(),labelString]]; @@ -151,7 +155,7 @@ } else cell.accessoryView = nil; - cell.backgroundColor = [UIColor blackColor]; + cell.backgroundColor = UICOLOR_HW_ALMOSTBLACK; return cell; } @@ -320,16 +324,17 @@ mission = @""; [self sliderChanged:nil]; self.slider.enabled = YES; + [externalController fillSections]; break; case 1: // Map - case 3: // Mission mapgen = @"e$mapgen 0"; // dummy values, these are set by -updatePreview -> -didSelectRowAtIndexPath -> -setDetailsForStaticMap staticmap = @"map Bamboo"; mission = @""; self.slider.enabled = NO; self.sizeLabel.text = NSLocalizedString(@"No filter",@""); + [externalController fillSections]; break; case 2: // Maze @@ -338,6 +343,17 @@ mission = @""; [self sliderChanged:nil]; self.slider.enabled = YES; + [externalController fillSections]; + break; + + case 3: // Mission + mapgen = @"e$mapgen 0"; + // dummy values, these are set by -updatePreview -> -didSelectRowAtIndexPath -> -setDetailsForStaticMap + staticmap = @"map Bamboo"; + mission = @""; + self.slider.enabled = NO; + self.sizeLabel.text = NSLocalizedString(@"No filter",@""); + [externalController emptySections]; break; default: @@ -356,9 +372,7 @@ } -(IBAction) buttonPressed:(id) sender { - [[NSNotificationCenter defaultCenter] postNotificationName:@"buttonPressed" - object:nil - userInfo:[NSDictionary dictionaryWithObject:sender forKey:@"sender"]]; + [self.parentController buttonPressed:sender]; } #pragma mark - @@ -372,14 +386,15 @@ [string release]; // remove a trailing "" element [themeArray removeLastObject]; + + // remove images that are too big for certain devices without loading the whole image NSArray *mapArrayFull = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:MAPS_DIRECTORY() error:NULL]; NSMutableArray *mapArray = [[NSMutableArray alloc] init]; for (NSString *str in mapArrayFull) { CGSize imgSize = PSPNGSizeFromMetaData([MAPS_DIRECTORY() stringByAppendingFormat:@"%@/map.png",str]); - //DLog(@"%@ %f %f", str, imgSize.width, imgSize.height); if (IS_NOT_POWERFUL() && imgSize.height > 1024.0f) continue; - if (IS_IPAD() && imgSize.height > 1280.0f) + if (IS_NOT_VERY_POWERFUL() && imgSize.height > 1280.0f) continue; [mapArray addObject:str]; } @@ -388,10 +403,9 @@ NSMutableArray *missionArray = [[NSMutableArray alloc] init]; for (NSString *str in missionArrayFull) { CGSize imgSize = PSPNGSizeFromMetaData([MISSIONS_DIRECTORY() stringByAppendingFormat:@"%@/map.png",str]); - //DLog(@"%@ %f %f", str, imgSize.width, imgSize.height); if (IS_NOT_POWERFUL() && imgSize.height > 1024.0f) continue; - if (IS_IPAD() && imgSize.height > 1280.0f) + if (IS_NOT_VERY_POWERFUL() && imgSize.height > 1280.0f) continue; [missionArray addObject:str]; } @@ -436,7 +450,7 @@ if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) [self.tableView setBackgroundView:nil]; - self.view.backgroundColor = [UIColor clearColor]; + self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.separatorColor = UICOLOR_HW_YELLOW_BODER; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; } @@ -478,14 +492,16 @@ -(void) didReceiveMemoryWarning { self.dataSourceArray = nil; + [super didReceiveMemoryWarning]; - self.tableView = nil; - self.maxLabel = nil; - self.sizeLabel = nil; - self.slider = nil; + if (self.view.superview == nil) { + self.tableView = nil; + self.maxLabel = nil; + self.sizeLabel = nil; + self.slider = nil; + } MSG_MEMCLEAN(); - [super didReceiveMemoryWarning]; } -(void) dealloc {
--- a/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/MapPreviewButtonView.m Tue Jan 04 12:53:46 2011 +0100 @@ -53,11 +53,12 @@ #pragma mark - #pragma mark image wrappers -(void) setBackgroundImageRounded:(UIImage *)image forState:(UIControlState)state { - [self setBackgroundImage:[image makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:UIControlStateNormal]; + // TODO:http://stackoverflow.com/questions/4272476/setbackgroundimage-behaviour-changed-on-ipad-4-2 + [self setBackgroundImage:[image makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:state]; } -(void) setImageRounded:(UIImage *)image forState:(UIControlState)state { - [self setImage:[image makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:UIControlStateNormal]; + [self setImage:[image makeRoundCornersOfSize:CGSizeMake(12, 12)] forState:state]; } -(void) setImageRoundedForNormalState:(UIImage *)image {
--- a/project_files/HedgewarsMobile/Classes/ObjcExports.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.h Tue Jan 04 12:53:46 2011 +0100 @@ -25,8 +25,12 @@ #define REPLAYBLACKVIEW_TAG 9955 #define ACTIVITYINDICATOR_TAG 987654 +@class AmmoMenuViewController; + void objcExportsInit(); BOOL isGameRunning(); void setGameRunning(BOOL value); NSInteger cachedGrenadeTime(); +void clearView(); void setGrenadeTime(NSInteger value); +void setAmmoMenuInstance(AmmoMenuViewController *instance);
--- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Tue Jan 04 12:53:46 2011 +0100 @@ -20,6 +20,8 @@ #import "ObjcExports.h" +#import "AmmoMenuViewController.h" +#import "AudioToolbox/AudioToolbox.h" #pragma mark - #pragma mark internal variables @@ -29,6 +31,10 @@ BOOL savedGame; // cache the grenade time NSInteger grenadeTime; +// the reference to the newMenu instance +AmmoMenuViewController *amvc_instance; +// the audiosession must be initialized before using properties +BOOL gAudioSessionInited = NO; #pragma mark - #pragma mark functions called like oop @@ -54,6 +60,10 @@ grenadeTime = value; } +void inline setAmmoMenuInstance(AmmoMenuViewController *instance) { + amvc_instance = instance; +} + #pragma mark - #pragma mark functions called by pascal code void startSpinning() { @@ -86,6 +96,7 @@ } void clearView() { + // don't use any engine calls here as this function is called every time the ammomenu is opened UIWindow *theWindow = (IS_DUALHEAD()) ? [SDLUIKitDelegate sharedAppDelegate].uiwindow : [[UIApplication sharedApplication] keyWindow]; UIButton *theButton = (UIButton *)[theWindow viewWithTag:CONFIRMATION_TAG]; UISegmentedControl *theSegment = (UISegmentedControl *)[theWindow viewWithTag:GRENADE_TAG]; @@ -141,5 +152,40 @@ } void updateVisualsNewTurn(void) { - [[NSNotificationCenter defaultCenter] postNotificationName:@"updateAmmoVisuals" object:nil]; + [amvc_instance updateAmmoVisuals]; } + +/* +// http://stackoverflow.com/questions/287543/how-to-programatically-sense-the-iphone-mute-switch +BOOL isAppleDeviceMuted(void) { + if (!gAudioSessionInited) { + AudioSessionInterruptionListener inInterruptionListener = NULL; + OSStatus error; + if ((error = AudioSessionInitialize(NULL, NULL, inInterruptionListener, NULL))) + DLog(@"*** Error *** error in AudioSessionInitialize: %d", error); + else + gAudioSessionInited = YES; + } + UInt32 propertySize = sizeof(CFStringRef); + BOOL muteResult = NO; + + // this checks if there is volume + Float32 volume; + OSStatus n = AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareOutputVolume, &propertySize, &volume); + if (n != 0) + DLog( @"AudioSessionGetProperty 'volume': %d", n ); + BOOL volumeResult = (volume == 0.0f); + + // this checks if the device is muted + CFStringRef state; + n = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); + if (n != 0) + DLog( @"AudioSessionGetProperty 'audioRoute': %d", n ); + else { + NSString *result = (NSString *)state; + muteResult = ([result length] == 0); + releaseAndNil(result); + } + return volumeResult || muteResult; +} +*/
--- a/project_files/HedgewarsMobile/Classes/OverlayViewController.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.h Tue Jan 04 12:53:46 2011 +0100 @@ -51,6 +51,10 @@ // stuff initialized externally BOOL isNetGame; BOOL useClassicMenu; + NSInteger initialOrientation; + + // the containing window + UIWindow *containerWindow; // dual head support NSInteger initialScreenCount; @@ -63,6 +67,8 @@ @property (nonatomic,retain) AmmoMenuViewController *amvc; @property (assign) BOOL isNetGame; @property (assign) BOOL useClassicMenu; +@property (assign) NSInteger initialOrientation; +@property (assign) UIWindow *containerWindow; -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
--- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -38,19 +38,25 @@ #define removeConfirmationInput() [[self.view viewWithTag:CONFIRMATION_TAG] removeFromSuperview]; @implementation OverlayViewController -@synthesize popoverController, popupMenu, helpPage, amvc, isNetGame, useClassicMenu; +@synthesize popoverController, popupMenu, helpPage, amvc, isNetGame, useClassicMenu, initialOrientation, containerWindow; #pragma mark - #pragma mark rotation -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + // don't rotate until the game is running for performance and synchronization with the sdlview + if (isGameRunning() == NO) + return (interfaceOrientation == (UIInterfaceOrientation) self.initialOrientation); return rotationManager(interfaceOrientation); } // pause the game and remove objc menus so that animation is smoother -(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation) toInterfaceOrientation duration:(NSTimeInterval) duration{ + if (isGameRunning() == NO) + return; + + HW_pause(); [self dismissPopover]; - if (HW_isPaused() == NO) - HW_pause(); + if (self.amvc.isVisible && IS_DUALHEAD() == NO) { [self.amvc disappear]; wasVisible = YES; @@ -75,16 +81,21 @@ // now restore previous state -(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation { + if (isGameRunning() == NO) + return; + if (wasVisible || IS_DUALHEAD()) [self.amvc appearInView:self.view]; - if (HW_isPaused() == YES) - HW_pause(); + HW_pauseToggle(); [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; } // while in dual head the above rotation functions are not called -(void) dualHeadRotation:(NSNotification *)notification { + if (isGameRunning() == NO) + return; + UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; [UIView beginAnimations:@"rotation" context:NULL]; @@ -191,6 +202,8 @@ name:UIScreenDidDisconnectNotification object:nil]; } + + self.containerWindow = [[UIApplication sharedApplication] keyWindow]; // present the overlay [UIView beginAnimations:@"showing overlay" context:NULL]; @@ -208,8 +221,7 @@ otherButtonTitles:nil]; [alert show]; [alert release]; - if (HW_isPaused() == NO) - HW_pause(); + HW_pause(); } } @@ -383,6 +395,7 @@ break; case 10: playSound(@"clickSound"); + clearView(); HW_pause(); if (self.amvc.isVisible && IS_DUALHEAD() == NO) { doDim(); @@ -393,12 +406,13 @@ break; case 11: playSound(@"clickSound"); + clearView(); removeConfirmationInput(); if (IS_DUALHEAD() || self.useClassicMenu == NO) { if (self.amvc == nil) self.amvc = [[AmmoMenuViewController alloc] init]; - + setAmmoMenuInstance(amvc); if (self.amvc.isVisible) { doDim(); [self.amvc disappear]; @@ -409,6 +423,7 @@ } } } else { + setAmmoMenuInstance(nil); HW_ammoMenu(); } break; @@ -480,7 +495,7 @@ if (YES == isPopoverVisible) { isPopoverVisible = NO; if (HW_isPaused()) - HW_pause(); + HW_pauseToggle(); if (IS_IPAD()) { [(InGameMenuViewController *)[[self popoverController] contentViewController] removeChat]; @@ -494,11 +509,25 @@ #pragma mark - #pragma mark Custom touch event handling +-(BOOL) shouldIgnoreTouch:(NSSet *)allTouches { + if (isGameRunning() == NO) + return YES; + + // ignore activity near the dpad and buttons + CGPoint touchPoint = [[[allTouches allObjects] objectAtIndex:0] locationInView:self.view]; + CGSize screen = [[UIScreen mainScreen] bounds].size; + + if ((touchPoint.x < 160 && touchPoint.y > screen.width - 155 ) || + (touchPoint.x > screen.height - 135 && touchPoint.y > screen.width - 140)) + return YES; + return NO; +} + -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSSet *allTouches = [event allTouches]; UITouch *first, *second; - if (isGameRunning() == NO) + if ([self shouldIgnoreTouch:allTouches] == YES) return; // hide in-game menu @@ -537,9 +566,9 @@ NSSet *allTouches = [event allTouches]; CGPoint currentPosition = [[[allTouches allObjects] objectAtIndex:0] locationInView:self.view]; - if (isGameRunning() == NO) + if ([self shouldIgnoreTouch:allTouches] == YES) return; - + switch ([allTouches count]) { case 1: // if we're in the menu we just click in the point @@ -629,9 +658,9 @@ int x, y, dx, dy; UITouch *touch, *first, *second; - if (isGameRunning() == NO) + if ([self shouldIgnoreTouch:allTouches] == YES) return; - + switch ([allTouches count]) { case 1: touch = [[allTouches allObjects] objectAtIndex:0];
--- a/project_files/HedgewarsMobile/Classes/PascalImports.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/PascalImports.h Tue Jan 04 12:53:46 2011 +0100 @@ -34,7 +34,7 @@ void GenLandPreview(void); void LoadLocaleWrapper(const char *filename); - void HW_versionInfo(short int *netProto, char **versionStr); + void HW_versionInfo(int *protoNum, char **versionStr); void HW_click(void); void HW_ammoMenu(void); @@ -63,16 +63,20 @@ void HW_chat(void); void HW_chatEnd(void); void HW_tab(void); + void HW_pause(void); + void HW_pauseToggle(void); + BOOL HW_isPaused(void); void HW_terminate(BOOL andCloseFrontend); + void HW_suspend(void); + void HW_resume(void); void HW_setCursor(int x, int y); void HW_getCursor(int *x, int *y); BOOL HW_isAmmoMenuOpen(void); BOOL HW_isAmmoMenuNotAllowed(void); - BOOL HW_isPaused(void); BOOL HW_isWeaponRequiringClick(void); BOOL HW_isWeaponTimerable(void); BOOL HW_isWeaponSwitch(void);
--- a/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h Tue Jan 04 12:53:46 2011 +0100 @@ -23,9 +23,11 @@ #import <UIKit/UIKit.h> @class MainMenuViewController; +@class OverlayViewController; @interface SDLUIKitDelegate:NSObject<UIApplicationDelegate> { MainMenuViewController *mainViewController; + OverlayViewController *overlayController; UIWindow *uiwindow; UIWindow *secondWindow; BOOL isInGame; @@ -33,11 +35,12 @@ @property (assign) BOOL isInGame; @property (nonatomic,retain) MainMenuViewController *mainViewController; +@property (nonatomic,retain) OverlayViewController *overlayController; @property (nonatomic,retain) UIWindow *uiwindow; @property (nonatomic,retain) UIWindow *secondWindow; +(SDLUIKitDelegate *)sharedAppDelegate; --(void) startSDLgame:(NSDictionary *)gameDictionary; +-(NSArray *)startSDLgame:(NSDictionary *)gameDictionary; -(void) displayOverlayLater:(id) object; @end
--- a/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m Tue Jan 04 12:53:46 2011 +0100 @@ -24,15 +24,17 @@ #import "SDL_uikitopenglview.h" #import "SDL_uikitwindow.h" #import "SDL_events_c.h" -#import "../SDL_sysvideo.h" #import "jumphack.h" #import "SDL_video.h" #import "SDL_mixer.h" #import "PascalImports.h" +#import "ObjcExports.h" #import "CommodityFunctions.h" #import "GameSetup.h" #import "MainMenuViewController.h" #import "OverlayViewController.h" +#import "Appirater.h" +#include <unistd.h> #ifdef main #undef main @@ -40,16 +42,15 @@ #define BLACKVIEW_TAG 17935 #define SECONDBLACKVIEW_TAG 48620 -#define VALGRIND "/opt/valgrind/bin/valgrind" +#define VALGRIND "/opt/fink/bin/valgrind" int main (int argc, char *argv[]) { #ifdef VALGRIND_REXEC // Using the valgrind build config, rexec ourself in valgrind // from http://landonf.bikemonkey.org/code/iphone/iPhone_Simulator_Valgrind.20081224.html if (argc < 2 || (argc >= 2 && strcmp(argv[1], "-valgrind") != 0)) - execl(VALGRIND, VALGRIND, "--leak-check=full", argv[0], "-valgrind", NULL); + execl(VALGRIND, VALGRIND, "--leak-check=full", "--dsymutil=yes", argv[0], "-valgrind", NULL); #endif - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, @"SDLUIKitDelegate"); [pool release]; @@ -57,7 +58,7 @@ } @implementation SDLUIKitDelegate -@synthesize mainViewController, uiwindow, secondWindow, isInGame; +@synthesize mainViewController, overlayController, uiwindow, secondWindow, isInGame; // convenience method +(SDLUIKitDelegate *)sharedAppDelegate { @@ -77,13 +78,14 @@ -(void) dealloc { [mainViewController release]; + [overlayController release]; [uiwindow release]; [secondWindow release]; [super dealloc]; } // main routine for calling the actual game engine --(void) startSDLgame:(NSDictionary *)gameDictionary { +-(NSArray *)startSDLgame:(NSDictionary *)gameDictionary { UIWindow *gameWindow; if (IS_DUALHEAD()) gameWindow = self.secondWindow; @@ -116,25 +118,35 @@ } [blackView release]; + // pull out useful configuration info from various files GameSetup *setup = [[GameSetup alloc] initWithDictionary:gameDictionary]; NSNumber *isNetGameNum = [gameDictionary objectForKey:@"netgame"]; - - if ([isNetGameNum boolValue] == NO) - [setup startThread:@"engineProtocol"]; - const char **gameArgs = [setup getSettings:[gameDictionary objectForKey:@"savefile"]]; + + [NSThread detachNewThreadSelector:@selector(engineProtocol) + toTarget:setup + withObject:nil]; + NSNumber *menuStyle = [NSNumber numberWithBool:setup.menuStyle]; - [setup release]; - - // since the sdlwindow is not yet created, we add the overlayController with a delay - NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:isNetGameNum,@"net",menuStyle,@"menu",nil]; + NSNumber *orientation = [[gameDictionary objectForKey:@"game_dictionary"] objectForKey:@"orientation"]; + NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: + isNetGameNum,@"net", + menuStyle,@"menu", + orientation,@"orientation", + nil]; [self performSelector:@selector(displayOverlayLater:) withObject:dict afterDelay:1]; - // this is the pascal fuction that starts the game (wrapped around isInGame) + // need to set again [gameDictionary objectForKey:@"savefile"] because if it's empty it means it's a normal game + const char **gameArgs = [setup getGameSettings:[gameDictionary objectForKey:@"savefile"]]; self.isInGame = YES; + // this is the pascal fuction that starts the game Game(gameArgs); self.isInGame = NO; free(gameArgs); + + NSArray *stats = setup.statsArray; + [setup release]; + [self.uiwindow makeKeyAndVisible]; [self.uiwindow bringSubviewToFront:self.mainViewController.view]; @@ -148,28 +160,28 @@ [UIView commitAnimations]; [refBlackView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1]; [refSecondBlackView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:2]; + + return stats; } -// overlay with controls, become visible later, with a transparency effect +// overlay with controls, become visible later, with a transparency effect since the sdlwindow is not yet created -(void) displayOverlayLater:(id) object { NSDictionary *dict = (NSDictionary *)object; - OverlayViewController *overlayController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil]; - overlayController.isNetGame = [[dict objectForKey:@"net"] boolValue]; - overlayController.useClassicMenu = [[dict objectForKey:@"menu"] boolValue]; + self.overlayController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil]; + self.overlayController.isNetGame = [[dict objectForKey:@"net"] boolValue]; + self.overlayController.useClassicMenu = [[dict objectForKey:@"menu"] boolValue]; + self.overlayController.initialOrientation = [[dict objectForKey:@"orientation"] intValue]; UIWindow *gameWindow; if (IS_DUALHEAD()) gameWindow = self.uiwindow; else gameWindow = [[UIApplication sharedApplication] keyWindow]; - [gameWindow addSubview:overlayController.view]; - //[[[gameWindow subviews] objectAtIndex:0] addSubview:overlayController.view]; - // don't release a controller according to http://developer.apple.com/library/ios/#qa/qa2010/qa1688.html - //[overlayController release]; + [gameWindow addSubview:self.overlayController.view]; } // override the direct execution of SDL_main to allow us to implement the frontend (or even using a nib) --(void) applicationDidFinishLaunching:(UIApplication *)application { +-(BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [application setStatusBarHidden:YES]; self.uiwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; @@ -200,6 +212,9 @@ [titleView release]; [self.secondWindow makeKeyAndVisible]; } + + [Appirater appLaunched]; + return YES; } -(void) applicationWillTerminate:(UIApplication *)application { @@ -219,40 +234,35 @@ } -(void) applicationWillResignActive:(UIApplication *)application { - if (self.isInGame) { - HW_pause(); - - // Send every window on every screen a MINIMIZED event. - SDL_VideoDevice *_this = SDL_GetVideoDevice(); - if (!_this) - return; - - int i; - for (i = 0; i < _this->num_displays; i++) { - const SDL_VideoDisplay *display = &_this->displays[i]; - SDL_Window *window; - for (window = display->windows; window != nil; window = window->next) - SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MINIMIZED, 0, 0); + UIDevice* device = [UIDevice currentDevice]; + if ([device respondsToSelector:@selector(isMultitaskingSupported)] && + device.multitaskingSupported && + self.isInGame) { + // let's try to be permissive with multitasking here... + NSDictionary *settings = [[NSDictionary alloc] initWithContentsOfFile:SETTINGS_FILE()]; + if ([[settings objectForKey:@"multitasking"] boolValue]) + HW_suspend(); + else { + // so the game returns to the configuration view + if (isGameRunning()) + HW_terminate(NO); + else { + // while screen is loading you can't call HW_terminate() so we close the app + SDL_SendQuit(); + HW_terminate(YES); + longjmp(*(jump_env()), 1); + } } + [settings release]; } } -(void) applicationDidBecomeActive:(UIApplication *)application { - if (self.isInGame) { - HW_pause(); - - // Send every window on every screen a RESTORED event. - SDL_VideoDevice *_this = SDL_GetVideoDevice(); - if (!_this) - return; - - int i; - for (i = 0; i < _this->num_displays; i++) { - const SDL_VideoDisplay *display = &_this->displays[i]; - SDL_Window *window; - for (window = display->windows; window != nil; window = window->next) - SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0); - } + UIDevice* device = [UIDevice currentDevice]; + if ([device respondsToSelector:@selector(isMultitaskingSupported)] && + device.multitaskingSupported && + self.isInGame) { + HW_resume(); } }
--- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -21,6 +21,7 @@ #import "SavedGamesViewController.h" #import "SDL_uikitappdelegate.h" +#import "StatsPageViewController.h" #import "CommodityFunctions.h" @implementation SavedGamesViewController @@ -111,7 +112,11 @@ cancelButtonTitle:cancelStr destructiveButtonTitle:confirmStr otherButtonTitles:nil]; - [actionSheet showInView:self.view]; + + if (IS_IPAD()) + [actionSheet showFromBarButtonItem:(UIBarButtonItem *)sender animated:YES]; + else + [actionSheet showInView:self.view]; [actionSheet release]; } @@ -170,7 +175,7 @@ label.font = [UIFont systemFontOfSize:16]; label.textColor = [UIColor lightGrayColor]; label.numberOfLines = 5; - label.text = NSLocalizedString(@"Games are automatically saved and can be resumed by selecting an entry above.\nYou can modify this list by pressing the 'Edit' button.\nNotice that completed games are deleted, so make backups.",@""); + label.text = NSLocalizedString(@"Games are automatically saved and can be resumed by selecting an entry above.\nYou can modify this list by pressing the 'Edit' button.\nCompleted games are removed at the end of the match.",@""); label.backgroundColor = [UIColor clearColor]; [footer addSubview:label]; @@ -213,8 +218,23 @@ [NSNumber numberWithBool:NO],@"netgame", [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:self.interfaceOrientation] forKey:@"orientation"],@"game_dictionary", nil]; - [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; - [self.parentViewController dismissModalViewControllerAnimated:NO]; + + StatsPageViewController *statsPage = [[StatsPageViewController alloc] initWithStyle:UITableViewStyleGrouped]; + statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical; + if ([statsPage respondsToSelector:@selector(setModalPresentationStyle:)]) + statsPage.modalPresentationStyle = UIModalPresentationPageSheet; + [self presentModalViewController:statsPage animated:NO]; + + NSArray *stats = [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary]; + if ([stats count] == 0) { + [statsPage dismissModalViewControllerAnimated:NO]; + } else { + statsPage.statsArray = stats; + [statsPage.tableView reloadData]; + [statsPage viewWillAppear:YES]; + } + // reload needed because when ending game the entry remains there + [self.tableView reloadData]; } #pragma mark -
--- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.h Tue Jan 04 12:53:46 2011 +0100 @@ -33,6 +33,7 @@ NSString *selectedWeapon; UISwitch *syncSwitch; + BOOL hideSections; } @property (nonatomic,retain) NSArray *listOfSchemes; @@ -43,4 +44,7 @@ @property (nonatomic,retain) NSString *selectedWeapon; @property (nonatomic,retain) UISwitch *syncSwitch; +-(void) fillSections; +-(void) emptySections; + @end
--- a/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SchemeWeaponConfigViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -23,6 +23,8 @@ #import "CommodityFunctions.h" #import "SDL_uikitappdelegate.h" +#define LABEL_TAG 57423 + @implementation SchemeWeaponConfigViewController @synthesize listOfSchemes, listOfWeapons, lastIndexPath_sc, lastIndexPath_we, selectedScheme, selectedWeapon, syncSwitch; @@ -45,7 +47,7 @@ if (IS_IPAD()) [self.tableView setBackgroundView:nil]; else { - UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:@"backgroundCenter.png"]; + UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:@"background~iphone.png"]; UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage]; [backgroundImage release]; [self.tableView setBackgroundView:background]; @@ -81,7 +83,10 @@ #pragma mark - #pragma mark Table view data source -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { - return 3; + if (hideSections) + return 0; + else + return 3; } -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { @@ -141,7 +146,7 @@ cell.accessoryView = self.syncSwitch; } - cell.backgroundColor = [UIColor blackColor]; + cell.backgroundColor = UICOLOR_HW_ALMOSTBLACK; cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; cell.detailTextLabel.textColor = [UIColor whiteColor]; return cell; @@ -215,6 +220,45 @@ [aTableView deselectRowAtIndexPath:indexPath animated:YES]; } +-(void) fillSections { + if (hideSections == YES) { + hideSections = NO; + NSRange range; + range.location = 0; + range.length = 3; + NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range]; + [self.tableView insertSections:sections withRowAnimation:UITableViewRowAnimationFade]; + self.selectedScheme = @"Default.plist"; + self.selectedWeapon = @"Default.plist"; + + self.tableView.scrollEnabled = YES; + + [[self.view viewWithTag:LABEL_TAG] removeFromSuperview]; + } +} + +-(void) emptySections { + hideSections = YES; + NSRange range; + range.location = 0; + range.length = 3; + NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range]; + [self.tableView deleteSections:sections withRowAnimation:UITableViewRowAnimationFade]; + self.selectedScheme = @"Default.plist"; + self.selectedWeapon = @"Default.plist"; + + self.tableView.scrollEnabled = NO; + + CGRect frame = CGRectMake(0, 0, self.view.frame.size.width * 80/100, 60); + UILabel *theLabel = createBlueLabel(NSLocalizedString(@"Missions don't need further configuration",@""), frame); + theLabel.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2); + theLabel.numberOfLines = 2; + theLabel.tag = LABEL_TAG; + + [self.view addSubview:theLabel]; + [theLabel release]; +} + #pragma mark - #pragma mark Memory management -(void) didReceiveMemoryWarning {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/ServerSetup.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,35 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 16/12/2010. + */ + + +#import <Foundation/Foundation.h> +#import "SDL_net.h" + +@interface ServerSetup : NSObject { + NSDictionary *systemSettings; + + TCPsocket sd; // External socket descriptor +} + +@property (nonatomic, retain) NSDictionary *systemSettings; + +-(BOOL) isNetworkReachable; + +@end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/ServerSetup.m Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,221 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 10/01/2010. + */ + + +#import "ServerSetup.h" +#import "PascalImports.h" +#import "CommodityFunctions.h" +#import <SystemConfiguration/SCNetworkReachability.h> +#import <netinet/in.h> + +#define BUFFER_SIZE 256 + +@implementation ServerSetup +@synthesize systemSettings; + +-(id) init { + if (self = [super init]) { + NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:SETTINGS_FILE()]; + self.systemSettings = dict; + [dict release]; + } + return self; +} + +-(void) dealloc { + + [super dealloc]; +} + +// reusing appirater method +-(BOOL) isNetworkReachable { + // 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; + + BOOL 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; +} + +-(int) sendToServer:(NSString *)command { + NSString *message = [[NSString alloc] initWithFormat:@"%@\n\n",command]; + int result = SDLNet_TCP_Send(sd, [message UTF8String], [message length]); + [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(sd, [message UTF8String], [message length]); + [message release]; + return result; +} + +-(void) serverProtocol { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + IPaddress ip; + BOOL clientQuit = NO; + char *buffer = (char *)malloc(sizeof(char)*BUFFER_SIZE); + int dim = BUFFER_SIZE; + uint8_t msgSize; + + if (SDLNet_Init() < 0) { + DLog(@"SDLNet_Init: %s", SDLNet_GetError()); + clientQuit = YES; + } + + // Resolving the host using NULL make network interface to listen + if (SDLNet_ResolveHost(&ip, "netserver.hedgewars.org", DEFAULT_NETGAME_PORT) < 0 && !clientQuit) { + DLog(@"SDLNet_ResolveHost: %s\n", SDLNet_GetError()); + clientQuit = YES; + } + + // Open a connection with the IP provided (listen on the host's port) + if (!(sd = SDLNet_TCP_Open(&ip)) && !clientQuit) { + DLog(@"SDLNet_TCP_Open: %s %\n", SDLNet_GetError(), DEFAULT_NETGAME_PORT); + clientQuit = YES; + } + + DLog(@"Found server on port %d", DEFAULT_NETGAME_PORT); + while (!clientQuit) { + int index = 0; + BOOL exitBufferLoop = NO; + memset(buffer, '\0', dim); + + while (exitBufferLoop != YES) { + msgSize = SDLNet_TCP_Recv(sd, &buffer[index], 2); + + // exit in case of error + if (msgSize <= 0) { + DLog(@"SDLNet_TCP_Recv: %s", SDLNet_GetError()); + clientQuit = YES; + break; + } + + // update index position and check for End-Of-Message + index += msgSize; + if (strncmp(&buffer[index-2], "\n\n", 2) == 0) { + exitBufferLoop = YES; + } + + // if message is too big allocate new space + if (index >= dim) { + dim += BUFFER_SIZE; + buffer = (char *)realloc(buffer, dim); + if (buffer == NULL) { + clientQuit = YES; + break; + } + } + } + + NSString *bufferedMessage = [[NSString alloc] initWithBytes:buffer length:index-2 encoding:NSASCIIStringEncoding]; + NSArray *listOfCommands = [bufferedMessage componentsSeparatedByString:@"\n"]; + [bufferedMessage release]; + NSString *command = [listOfCommands objectAtIndex:0]; + DLog(@"size = %d, %@", index-2, listOfCommands); + if ([command isEqualToString:@"PING"]) { + if ([listOfCommands count] > 1) + [self sendToServer:@"PONG" withArgument:[listOfCommands objectAtIndex:1]]; + else + [self sendToServer:@"PONG"]; + DLog(@"PONG"); + } + else if ([command isEqualToString:@"NICK"]) { + //what is this for? + } + else if ([command isEqualToString:@"PROTO"]) { + //what is this for? + } + else if ([command isEqualToString:@"ROOM"]) { + //TODO: stub + } + else if ([command isEqualToString:@"LOBBY:LEFT"]) { + //TODO: stub + } + else if ([command isEqualToString:@"LOBBY:JOINED"]) { + //TODO: stub + } + else if ([command isEqualToString:@"ASKPASSWORD"]) { + NSString *pwd = [self.systemSettings objectForKey:@"password"]; + [self sendToServer:@"PASSWORD" withArgument:pwd]; + } + else if ([command isEqualToString:@"CONNECTED"]) { + int netProto; + char *versionStr; + HW_versionInfo(&netProto, &versionStr); + NSString *nick = [self.systemSettings objectForKey:@"username"]; + [self sendToServer:@"NICK" withArgument:nick]; + [self sendToServer:@"PROTO" withArgument:[NSString stringWithFormat:@"%d",netProto]]; + } + else if ([command isEqualToString:@"SERVER_MESSAGE"]) { + DLog(@"%@", [listOfCommands objectAtIndex:1]); + } + else if ([command isEqualToString:@"WARNING"]) { + if ([listOfCommands count] > 1) + DLog(@"Server warning - %@", [listOfCommands objectAtIndex:1]); + else + DLog(@"Server warning - unknown"); + } + else if ([command isEqualToString:@"ERROR"]) { + DLog(@"Server error - %@", [listOfCommands objectAtIndex:1]); + } + else if ([command isEqualToString:@"BYE"]) { + //TODO: handle "Reconnected too fast" + DLog(@"Server disconnected, reason: %@", [listOfCommands objectAtIndex:1]); + clientQuit = YES; + } + else { + DLog(@"Unknown/Unsupported message received: %@", command); + } + } + DLog(@"Server closed connection, ending thread"); + + free(buffer); + SDLNet_TCP_Close(sd); + SDLNet_Quit(); + + [pool release]; +} + +@end
--- a/project_files/HedgewarsMobile/Classes/SingleTeamViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SingleTeamViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -20,6 +20,7 @@ #import "SingleTeamViewController.h" +#import <QuartzCore/QuartzCore.h> #import "HogHatViewController.h" #import "GravesViewController.h" #import "VoicesViewController.h" @@ -263,6 +264,7 @@ accessoryImage = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.png", FLAGS_DIRECTORY(),[teamDictionary objectForKey:@"flag"]]]; cell.imageView.image = [accessoryImage scaleToSize:CGSizeMake(27, 19)]; + cell.imageView.layer.borderWidth = 0.3; [accessoryImage release]; break; case 4: // level
--- a/project_files/HedgewarsMobile/Classes/SplitViewRootController.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SplitViewRootController.h Tue Jan 04 12:53:46 2011 +0100 @@ -25,8 +25,12 @@ @interface SplitViewRootController: UIViewController { MasterViewController *activeController; + UINavigationController *rightNavController; + UISplitViewController *splitViewRootController; } @property (nonatomic,retain) MasterViewController *activeController; +@property (nonatomic,retain) UINavigationController *rightNavController; +@property (nonatomic,retain) UISplitViewController *splitViewRootController; @end
--- a/project_files/HedgewarsMobile/Classes/SplitViewRootController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/SplitViewRootController.m Tue Jan 04 12:53:46 2011 +0100 @@ -24,7 +24,7 @@ #import "CommodityFunctions.h" @implementation SplitViewRootController -@synthesize activeController; +@synthesize activeController, rightNavController, splitViewRootController; -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return rotationManager(interfaceOrientation); @@ -49,7 +49,7 @@ self.activeController = rightController; [rightController release]; } - UINavigationController *rightNavController = [[UINavigationController alloc] initWithRootViewController:self.activeController]; + self.rightNavController = [[UINavigationController alloc] initWithRootViewController:self.activeController]; if (IS_IPAD()) { MasterViewController *leftController = [[MasterViewController alloc] initWithStyle:UITableViewStylePlain]; @@ -57,18 +57,18 @@ UINavigationController *leftNavController = [[UINavigationController alloc] initWithRootViewController:leftController]; [leftController release]; - UISplitViewController *splitViewRootController = [[UISplitViewController alloc] init]; - splitViewRootController.delegate = nil; - splitViewRootController.view.frame = CGRectMake(0, 0, rect.size.height, rect.size.width); - splitViewRootController.viewControllers = [NSArray arrayWithObjects: leftNavController, rightNavController, nil]; + self.splitViewRootController = [[UISplitViewController alloc] init]; + self.splitViewRootController.delegate = nil; + self.splitViewRootController.view.frame = CGRectMake(0, 0, rect.size.height, rect.size.width); + self.splitViewRootController.viewControllers = [NSArray arrayWithObjects: leftNavController, self.rightNavController, nil]; [leftNavController release]; - [rightNavController release]; + [self.rightNavController release]; // add view to main controller - [self.view addSubview:splitViewRootController.view]; + [self.view addSubview:self.splitViewRootController.view]; } else { - rightNavController.view.frame = CGRectMake(0, 0, rect.size.height, rect.size.width); - [self.view addSubview:rightNavController.view]; + self.rightNavController.view.frame = CGRectMake(0, 0, rect.size.height, rect.size.width); + [self.view addSubview:self.rightNavController.view]; } [super viewDidLoad]; @@ -76,12 +76,16 @@ -(void) viewDidUnload { self.activeController = nil; + self.rightNavController = nil; + self.splitViewRootController = nil; MSG_DIDUNLOAD(); [super viewDidUnload]; } -(void) dealloc { - [self.activeController release]; + [activeController release]; + [rightNavController release]; + [splitViewRootController release]; [super dealloc]; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,30 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 30/12/2010. + */ + + +#import <UIKit/UIKit.h> + +@interface StatsPageViewController : UITableViewController { + NSArray *statsArray; +} + +@property (nonatomic,retain) NSArray *statsArray; + +@end \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,137 @@ +/* + * Hedgewars-iOS, a Hedgewars port for iOS devices + * Copyright (c) 2009-2010 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * File created on 30/12/2010. + */ + + +#import "StatsPageViewController.h" +#import "CommodityFunctions.h" + +@implementation StatsPageViewController +@synthesize statsArray; + +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + return rotationManager(interfaceOrientation); +} + +-(void) viewDidLoad { + if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) + self.tableView.backgroundView = nil; + + NSString *imgName; + if (IS_IPAD()) + imgName = @"mediumBackground~ipad.png"; + else + imgName = @"smallerBackground~iphone.png"; + + if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) { + UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:imgName]; + UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage]; + [backgroundImage release]; + [self.tableView setBackgroundView:background]; + [background release]; + } else + self.view.backgroundColor = [UIColor blackColor]; + + self.tableView.separatorColor = UICOLOR_HW_YELLOW_BODER; + self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + + [super viewDidLoad]; +} + +#pragma mark - +#pragma mark Table view data source +-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { + return 3; +} + +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0 || section == 2) + return 1; + else + return [self.statsArray count] - 1; +} + +-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *CellIdentifier0 = @"Cell0"; + NSInteger section = [indexPath section]; + NSInteger row = [indexPath row]; + + UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier0]; + if (cell == nil) + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease]; + + cell.textLabel.textAlignment = UITextAlignmentCenter; + if (section == 0) { + cell.textLabel.text = [self.statsArray objectAtIndex:row]; + cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; + } else if (section == 1) { + cell.textLabel.text = [self.statsArray objectAtIndex:row + 1]; + cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; + } else { + cell.textLabel.text = NSLocalizedString(@"Done",@""); + cell.textLabel.textColor = [UIColor whiteColor]; + } + cell.backgroundColor = [UIColor blackColor]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + + return cell; +} + +-(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return 160; +} + +-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (section == 0) { + UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 160)]; + UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"smallerTitle.png"]; + UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; + [img release]; + imgView.center = CGPointMake(self.tableView.frame.size.height/2, 160/2); + [header addSubview:imgView]; + [imgView release]; + + return [header autorelease]; + } else + return nil; +} + +#pragma mark - +#pragma mark Table view delegate +-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + if ([indexPath section] == 2) + [self dismissModalViewControllerAnimated:YES]; +} + +#pragma mark - +#pragma mark Memory management +-(void) didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + self.statsArray = nil; +} + +-(void) dealloc { + [statsArray release]; + [super dealloc]; +} + + +@end +
--- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.h Tue Jan 04 12:53:46 2011 +0100 @@ -20,11 +20,14 @@ #import <UIKit/UIKit.h> - +#import "HoldTableViewCell.h" -@interface TeamConfigViewController : UITableViewController { +@interface TeamConfigViewController : UITableViewController <HoldTableViewCellDelegate> { + NSInteger selectedTeamsCount; + NSInteger allTeamsCount; + + NSMutableArray *listOfSelectedTeams; NSMutableArray *listOfTeams; - NSMutableArray *listOfSelectedTeams; NSArray *cachedContentsOfDir; }
--- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Tue Jan 04 12:53:46 2011 +0100 @@ -21,16 +21,11 @@ #import "TeamConfigViewController.h" #import "CommodityFunctions.h" -#import "HogButtonView.h" #import "SquareButtonView.h" @implementation TeamConfigViewController @synthesize listOfTeams, listOfSelectedTeams, cachedContentsOfDir; -#define NUMBERBUTTON_TAG 123456 -#define SQUAREBUTTON_TAG 654321 -#define LABEL_TAG 456123 - #pragma mark - #pragma mark View lifecycle -(void) viewDidLoad { @@ -43,15 +38,14 @@ if (IS_IPAD()) [self.tableView setBackgroundView:nil]; else { - UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:@"backgroundCenter.png"]; + UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:@"background~iphone.png"]; UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage]; [backgroundImage release]; [self.tableView setBackgroundView:background]; [background release]; } - } else { + } else self.view.backgroundColor = [UIColor blackColor]; - } self.tableView.separatorColor = UICOLOR_HW_YELLOW_BODER; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; @@ -79,8 +73,11 @@ NSMutableArray *emptyArray = [[NSMutableArray alloc] initWithObjects:nil]; self.listOfSelectedTeams = emptyArray; [emptyArray release]; - - cachedContentsOfDir = [[NSArray alloc] initWithArray:contentsOfDir copyItems:YES]; + + selectedTeamsCount = [self.listOfSelectedTeams count]; + allTeamsCount = [self.listOfTeams count]; + + self.cachedContentsOfDir = [[NSArray alloc] initWithArray:contentsOfDir copyItems:YES]; } [self.tableView reloadData]; } @@ -89,6 +86,49 @@ return rotationManager(interfaceOrientation); } +-(NSInteger) filterNumberOfHogs:(NSInteger) hogs { + NSInteger numberOfHogs; + if (hogs <= HW_getMaxNumberOfHogs() && hogs >= 1) + numberOfHogs = hogs; + else { + if (hogs > HW_getMaxNumberOfHogs()) + numberOfHogs = 1; + else + numberOfHogs = HW_getMaxNumberOfHogs(); + } + return numberOfHogs; +} + +-(UIImage *)drawHogsRepeated:(NSInteger) manyTimes { + UIImage *hogSprite = [[UIImage alloc] initWithContentsOfFile:HEDGEHOG_FILE()]; + CGFloat screenScale = getScreenScale(); + int w = hogSprite.size.width * screenScale; + int h = hogSprite.size.height * screenScale; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate(NULL, w * 3, h, 8, 4 * w * 3, colorSpace, kCGImageAlphaPremultipliedFirst); + + // draw the two images in the current context + for (int i = 0; i < manyTimes; i++) + CGContextDrawImage(context, CGRectMake(i*8*screenScale, 0, w, h), [hogSprite CGImage]); + [hogSprite release]; + + // Create bitmap image info from pixel data in current context + CGImageRef imageRef = CGBitmapContextCreateImage(context); + + // Create a new UIImage object + UIImage *resultImage; + if ([self respondsToSelector:@selector(imageWithCGImage:scale:orientation:)]) + resultImage = [UIImage imageWithCGImage:imageRef scale:screenScale orientation:UIImageOrientationUp]; + else + resultImage = [UIImage imageWithCGImage:imageRef]; + + // Release colorspace, context and bitmap information + CGColorSpaceRelease(colorSpace); + CGContextRelease(context); + CFRelease(imageRef); + + return resultImage; +} #pragma mark - #pragma mark Table view data source @@ -98,9 +138,9 @@ -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) - return [listOfSelectedTeams count] ; + return selectedTeamsCount; else - return [listOfTeams count]; + return allTeamsCount; } // Customize the appearance of table view cells. @@ -113,54 +153,38 @@ if (section == 0) { cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier0]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease]; - - UIButton *numberButton = [[HogButtonView alloc] initWithFrame:CGRectMake(12, 5, 88, 32)]; - numberButton.tag = NUMBERBUTTON_TAG; - [cell addSubview:numberButton]; - [numberButton release]; - - SquareButtonView *squareButton = [[SquareButtonView alloc] initWithFrame:CGRectMake(12+88+6, 5, 36, 36)]; - squareButton.tag = SQUAREBUTTON_TAG; - [cell addSubview:squareButton]; - [squareButton release]; + cell = [[[HoldTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease]; - NSInteger length; - if (IS_IPAD()) - length = 103; - else - length = 285; - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(12+88+6+36, 10, length, 25)]; - label.textAlignment = UITextAlignmentLeft; - label.minimumFontSize = 11; - label.adjustsFontSizeToFitWidth = YES; - label.baselineAdjustment = UIBaselineAdjustmentAlignCenters; - label.backgroundColor = [UIColor clearColor]; - label.font = [UIFont boldSystemFontOfSize:[UIFont labelFontSize]]; - label.textColor = UICOLOR_HW_YELLOW_TEXT; - label.tag = LABEL_TAG; - [cell.contentView addSubview:label]; - [label release]; + SquareButtonView *squareButton = [[SquareButtonView alloc] initWithFrame:CGRectMake(0, 0, 36, 36)]; + cell.accessoryView = squareButton; + [squareButton release]; } NSMutableDictionary *selectedRow = [listOfSelectedTeams objectAtIndex:[indexPath row]]; - - UILabel *cellLabel = (UILabel *)[cell viewWithTag:LABEL_TAG]; - cellLabel.text = [[selectedRow objectForKey:@"team"] stringByDeletingPathExtension]; + cell.textLabel.text = [[selectedRow objectForKey:@"team"] stringByDeletingPathExtension]; + cell.textLabel.backgroundColor = [UIColor clearColor]; - HogButtonView *numberButton = (HogButtonView *)[cell viewWithTag:NUMBERBUTTON_TAG]; - [numberButton drawManyHogs:[[selectedRow objectForKey:@"number"] intValue]]; - numberButton.ownerDictionary = selectedRow; + SquareButtonView *squareButton = (SquareButtonView *)cell.accessoryView; + [squareButton selectColor:[[selectedRow objectForKey:@"color"] intValue]]; + NSNumber *hogNumber = [selectedRow objectForKey:@"number"]; + [squareButton setTitle:[hogNumber stringValue] forState:UIControlStateNormal]; + squareButton.ownerDictionary = selectedRow; - SquareButtonView *squareButton = (SquareButtonView *)[cell viewWithTag:SQUAREBUTTON_TAG]; - [squareButton selectColor:[[selectedRow objectForKey:@"color"] intValue]]; - squareButton.ownerDictionary = selectedRow; + cell.imageView.image = [self drawHogsRepeated:[hogNumber intValue]]; + ((HoldTableViewCell *)cell).delegate = self; + } else { + cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier1]; + if (cell == nil) + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] autorelease]; + + cell.textLabel.text = [[[listOfTeams objectAtIndex:[indexPath row]] objectForKey:@"team"] stringByDeletingPathExtension]; + cell.textLabel.backgroundColor = [UIColor clearColor]; - NSString *teamPath = [NSString stringWithFormat:@"%@/%@",TEAMS_DIRECTORY(),[selectedRow objectForKey:@"team"]]; + NSString *teamPath = [NSString stringWithFormat:@"%@/%@.plist",TEAMS_DIRECTORY(),cell.textLabel.text]; NSDictionary *firstHog = [[[NSDictionary dictionaryWithContentsOfFile:teamPath] objectForKey:@"hedgehogs"] objectAtIndex:0]; - if ([[firstHog objectForKey:@"level"] intValue]> 0) { - NSString *filePath = [NSString stringWithFormat:@"%@/cyborg.png",HATS_DIRECTORY()]; - UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:filePath andCutAt:CGRectMake(0, 2, 32, 32)]; + if ([[firstHog objectForKey:@"level"] intValue] != 0) { + NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Settings/Images/robotBadge.png"]; + UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:filePath]; UIImageView *spriteView = [[UIImageView alloc] initWithImage:sprite]; [sprite release]; @@ -168,18 +192,12 @@ [spriteView release]; } else cell.accessoryView = nil; - } else { - cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier1]; - if (cell == nil) - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] autorelease]; + } - cell.textLabel.text = [[[listOfTeams objectAtIndex:[indexPath row]] objectForKey:@"team"] stringByDeletingPathExtension]; - cell.accessoryView = nil; - } - cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT; - cell.backgroundColor = [UIColor blackColor]; - + cell.backgroundColor = UICOLOR_HW_ALMOSTBLACK; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + return cell; } @@ -190,7 +208,7 @@ -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { CGRect frame = CGRectMake(0, 0, self.view.frame.size.width * 80/100, 30); NSString *text; - if (section == 0) + if (section == 0) text = NSLocalizedString(@"Playing Teams",@""); else text = NSLocalizedString(@"Available Teams",@""); @@ -203,22 +221,83 @@ return theView; } +-(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return IS_IPAD() ? 40 : 20; +} + +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section { + NSInteger height = IS_IPAD() ? 40 : 20; + UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, height)]; + footer.backgroundColor = [UIColor clearColor]; + + UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width*80/100, height)]; + label.center = CGPointMake(self.tableView.frame.size.width/2, height/2); + label.textAlignment = UITextAlignmentCenter; + label.font = [UIFont italicSystemFontOfSize:12]; + label.textColor = [UIColor whiteColor]; + label.numberOfLines = 2; + if (section == 0) + label.text = NSLocalizedString(@"Tap to add hogs or change color, touch and hold to remove a team.",@""); + else + label.text = NSLocalizedString(@"The robot badge indicates an AI-controlled team.",@""); + + label.backgroundColor = [UIColor clearColor]; + [footer addSubview:label]; + [label release]; + return [footer autorelease]; +} + + #pragma mark - #pragma mark Table view delegate -(void) tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger row = [indexPath row]; NSInteger section = [indexPath section]; - if (section == 0) { - [self.listOfTeams addObject:[self.listOfSelectedTeams objectAtIndex:row]]; - [self.listOfSelectedTeams removeObjectAtIndex:row]; - } else { + if (section == 1 && [self.listOfTeams count] > row) { [self.listOfSelectedTeams addObject:[self.listOfTeams objectAtIndex:row]]; [self.listOfTeams removeObjectAtIndex:row]; + + NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:selectedTeamsCount inSection:0]; + allTeamsCount--; + selectedTeamsCount++; + [aTableView beginUpdates]; + [aTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationRight]; + [aTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight]; + [aTableView endUpdates]; } - [aTableView reloadData]; + if (section == 0 && [self.listOfSelectedTeams count] > row) { + NSMutableDictionary *selectedRow = [self.listOfSelectedTeams objectAtIndex:row]; + UITableViewCell *cell = [aTableView cellForRowAtIndexPath:indexPath]; + SquareButtonView *squareButton = (SquareButtonView *)cell.accessoryView; + + NSInteger increaseNumber = [[selectedRow objectForKey:@"number"] intValue] + 1; + NSNumber *newNumber = [NSNumber numberWithInt:[self filterNumberOfHogs:increaseNumber]]; + [squareButton setTitle:[newNumber stringValue] forState:UIControlStateNormal]; + [selectedRow setObject:newNumber forKey:@"number"]; + + cell.imageView.image = [self drawHogsRepeated:[newNumber intValue]]; + } } +-(void) holdAction:(NSString *)content { + NSInteger row; + for (row = 0; row < [self.listOfSelectedTeams count]; row++) { + NSDictionary *dict = [self.listOfSelectedTeams objectAtIndex:row]; + if ([content isEqualToString:[[dict objectForKey:@"team"] stringByDeletingPathExtension]]) + break; + } + + [self.listOfTeams addObject:[self.listOfSelectedTeams objectAtIndex:row]]; + [self.listOfSelectedTeams removeObjectAtIndex:row]; + + [self.tableView beginUpdates]; + [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationLeft]; + [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:allTeamsCount inSection:1]] withRowAnimation:UITableViewRowAnimationLeft]; + allTeamsCount++; + selectedTeamsCount--; + [self.tableView endUpdates]; +} #pragma mark - #pragma mark Memory management
--- a/project_files/HedgewarsMobile/Classes/UIImageExtra.h Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.h Tue Jan 04 12:53:46 2011 +0100 @@ -23,10 +23,11 @@ @interface UIImage (extra) - + +CGFloat getScreenScale(void); + -(UIImage *)scaleToSize:(CGSize) size; -(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint; --(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint ofSize:(CGSize) resultingSize; -(id) initWithContentsOfFile:(NSString *)path andCutAt:(CGRect) rect; -(UIImage *)cutAt:(CGRect) rect; -(UIImage *)convertToGrayScale;
--- a/project_files/HedgewarsMobile/Classes/UIImageExtra.m Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Classes/UIImageExtra.m Tue Jan 04 12:53:46 2011 +0100 @@ -24,11 +24,21 @@ @implementation UIImage (extra) +CGFloat getScreenScale(void) { + if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) + return [UIScreen mainScreen].scale; + else + return 1.0f; +} + -(UIImage *)scaleToSize:(CGSize) size { DLog(@"warning - this is a very expensive operation, you should avoid using it"); // Create a bitmap graphics context; this will also set it as the current context - UIGraphicsBeginImageContext(size); + if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) + UIGraphicsBeginImageContextWithOptions(size, NO, getScreenScale()); + else + UIGraphicsBeginImageContext(size); // Draw the scaled image in the current context [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; @@ -44,17 +54,13 @@ } -(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint { - // create a contex of size of the background image - return [self mergeWith:secondImage atPoint:secondImagePoint ofSize:self.size]; -} - --(UIImage *)mergeWith:(UIImage *)secondImage atPoint:(CGPoint) secondImagePoint ofSize:(CGSize) resultingSize { if (secondImage == nil) { DLog(@"Warning, secondImage == nil"); return self; } - int w = resultingSize.width; - int h = resultingSize.height; + CGFloat screenScale = getScreenScale(); + int w = self.size.width * screenScale; + int h = self.size.height * screenScale; if (w == 0 || h == 0) { DLog(@"Can have 0 dimesions"); @@ -66,14 +72,18 @@ CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); // draw the two images in the current context - CGContextDrawImage(context, CGRectMake(0, 0, self.size.width, self.size.height), [self CGImage]); - CGContextDrawImage(context, CGRectMake(secondImagePoint.x, secondImagePoint.y, secondImage.size.width, secondImage.size.height), [secondImage CGImage]); + CGContextDrawImage(context, CGRectMake(0, 0, self.size.width*screenScale, self.size.height*screenScale), [self CGImage]); + CGContextDrawImage(context, CGRectMake(secondImagePoint.x*screenScale, secondImagePoint.y*screenScale, secondImage.size.width*screenScale, secondImage.size.height*screenScale), [secondImage CGImage]); // Create bitmap image info from pixel data in current context CGImageRef imageRef = CGBitmapContextCreateImage(context); // Create a new UIImage object - UIImage *resultImage = [UIImage imageWithCGImage:imageRef]; + UIImage *resultImage; + if ([self respondsToSelector:@selector(imageWithCGImage:scale:orientation:)]) + resultImage = [UIImage imageWithCGImage:imageRef scale:screenScale orientation:UIImageOrientationUp]; + else + resultImage = [UIImage imageWithCGImage:imageRef]; // Release colorspace, context and bitmap information CGColorSpaceRelease(colorSpace); @@ -193,8 +203,9 @@ -(UIImage *)makeRoundCornersOfSize:(CGSize) sizewh { CGFloat cornerWidth = sizewh.width; CGFloat cornerHeight = sizewh.height; - CGFloat w = self.size.width; - CGFloat h = self.size.height; + CGFloat screenScale = getScreenScale(); + CGFloat w = self.size.width * screenScale; + CGFloat h = self.size.height * screenScale; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); @@ -211,7 +222,12 @@ CGContextRelease(context); CGColorSpaceRelease(colorSpace); - UIImage *newImage = [UIImage imageWithCGImage:imageMasked]; + UIImage *newImage; + if ([self respondsToSelector:@selector(imageWithCGImage:scale:orientation:)]) + newImage = [UIImage imageWithCGImage:imageMasked scale:screenScale orientation:UIImageOrientationUp]; + else + newImage = [UIImage imageWithCGImage:imageMasked]; + CGImageRelease(imageMasked); return newImage; @@ -232,16 +248,23 @@ } +(UIImage *)whiteImage:(CGSize) ofSize { - UIGraphicsBeginImageContext(ofSize); - CGContextRef context = UIGraphicsGetCurrentContext(); - UIGraphicsPushContext(context); + CGFloat w = ofSize.width; + CGFloat h = ofSize.height; + DLog(@"w: %f, h: %f", w, h); + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); + + CGContextBeginPath(context); CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); CGContextFillRect(context,CGRectMake(0,0,ofSize.width,ofSize.height)); - UIGraphicsPopContext(); - UIImage *bkgImg = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); + CGImageRef image = CGBitmapContextCreateImage(context); + CGContextRelease(context); + CGColorSpaceRelease(colorSpace); + + UIImage *bkgImg = [UIImage imageWithCGImage:image]; + CGImageRelease(image); return bkgImg; }
--- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Tue Jan 04 12:53:46 2011 +0100 @@ -26,11 +26,35 @@ 28FD15000DC6FC520079059D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28FD14FF0DC6FC520079059D /* OpenGLES.framework */; }; 28FD15080DC6FC5B0079059D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28FD15070DC6FC5B0079059D /* QuartzCore.framework */; settings = {ATTRIBUTES = (Required, ); }; }; 61006F95128DE31F00EBA7F7 /* CreationChamber.m in Sources */ = {isa = PBXBuildFile; fileRef = 61006F94128DE31F00EBA7F7 /* CreationChamber.m */; }; + 6103D414129B417500911D8D /* plus@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D413129B417500911D8D /* plus@2x.png */; }; 610D5FB21270E2660033333A /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43411E290650040BA66 /* Icon-Small@2x.png */; }; 610D5FB31270E26C0033333A /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43611E290650040BA66 /* Icon@2x.png */; }; + 61188BF212A6FE530026C5DA /* ammoButton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D399129B350700911D8D /* ammoButton@2x.png */; }; + 61188BF312A6FE540026C5DA /* arrowDown@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D39A129B350700911D8D /* arrowDown@2x.png */; }; + 61188BF412A6FE560026C5DA /* arrowLeft@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D39B129B350700911D8D /* arrowLeft@2x.png */; }; + 61188BF512A6FE570026C5DA /* arrowRight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D39C129B350700911D8D /* arrowRight@2x.png */; }; + 61188BF612A6FE590026C5DA /* arrowUp@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D39D129B350700911D8D /* arrowUp@2x.png */; }; + 61188BF712A6FE5A0026C5DA /* backButton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FED31298CE6600D73365 /* backButton@2x.png */; }; + 61188BF812A6FE5C0026C5DA /* background@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FED61298CF9800D73365 /* background@2x~iphone.png */; }; + 61188BF912A6FE5D0026C5DA /* checkbox@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 615FEAD912A2A4C10098EE92 /* checkbox@2x.png */; }; + 61188BFA12A6FE5E0026C5DA /* cornerButton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D39E129B350700911D8D /* cornerButton@2x.png */; }; + 61188BFB12A6FE610026C5DA /* Default-ipad-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 6183D83C11E2BCE200A88903 /* Default-ipad-Landscape.png */; }; + 61188BFC12A6FE630026C5DA /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEA21298C7F900D73365 /* Default@2x.png */; }; + 61188BFD12A6FE730026C5DA /* fb@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D383129B346A00911D8D /* fb@2x.png */; }; + 61188BFE12A6FE7C0026C5DA /* irc@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D384129B347700911D8D /* irc@2x.png */; }; + 61188BFF12A6FE7E0026C5DA /* joyButtonAttack@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D392129B34E900911D8D /* joyButtonAttack@2x.png */; }; + 61188C0012A6FE810026C5DA /* joyButtonBackJump@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D393129B34E900911D8D /* joyButtonBackJump@2x.png */; }; + 61188C0112A6FE820026C5DA /* joyButtonForwardJump@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D394129B34E900911D8D /* joyButtonForwardJump@2x.png */; }; + 61188C0212A6FE840026C5DA /* localplayButton@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 615FEADE12A2A6640098EE92 /* localplayButton@2x~iphone.png */; }; + 61188C0312A6FE860026C5DA /* netplayButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040D11DF59D10068B24D /* netplayButton.png */; }; + 61188C0412A6FE880026C5DA /* savesButton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEC81298CE4800D73365 /* savesButton@2x.png */; }; + 61188C0512A6FE8F0026C5DA /* Data in Resources */ = {isa = PBXBuildFile; fileRef = 61798A5E114AE08600BA94A9 /* Data */; }; + 61188C0612A6FE950026C5DA /* smallerBackground@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEEC1298D25D00D73365 /* smallerBackground@2x~iphone.png */; }; + 61188C0712A6FE960026C5DA /* settingsButton@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FECA1298CE4E00D73365 /* settingsButton@2x.png */; }; + 61188C0812A6FE9A0026C5DA /* title@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 618899811299516000D55FD6 /* title@2x.png */; }; + 61188C0912A6FE9C0026C5DA /* tw@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6103D385129B348200911D8D /* tw@2x.png */; }; 611D9BFB12497E9800008271 /* SavedGamesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 611D9BF912497E9800008271 /* SavedGamesViewController.m */; }; 611D9BFC12497E9800008271 /* SavedGamesViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 611D9BFA12497E9800008271 /* SavedGamesViewController.xib */; }; - 611DA031124E2BC500008271 /* mediumBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 611DA030124E2BC500008271 /* mediumBackground~ipad.png */; }; 611DA1D0124E5C6300008271 /* plus.png in Resources */ = {isa = PBXBuildFile; fileRef = 611DA1CF124E5C6300008271 /* plus.png */; }; 611E03E711FA747C0077A41E /* libvorbis.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 611E037C11FA74590077A41E /* libvorbis.a */; }; 611E0E5111FA92170077A41E /* libfreetype.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 611E0E5011FA92130077A41E /* libfreetype.a */; }; @@ -52,12 +76,12 @@ 61370653117B1D50004EE44A /* Entitlements-Distribution.plist in Resources */ = {isa = PBXBuildFile; fileRef = 61370652117B1D50004EE44A /* Entitlements-Distribution.plist */; }; 61399013125D19C0003C2DC0 /* uMobile.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61399012125D19C0003C2DC0 /* uMobile.pas */; }; 6147DAD31253DCDE0010357E /* savesButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 6147DAD21253DCDE0010357E /* savesButton.png */; }; - 614AE65D127D090A0070BF5F /* smallerBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 614AE65A127D090A0070BF5F /* smallerBackground~ipad.png */; }; - 614AE65E127D090A0070BF5F /* smallerBackground~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 614AE65B127D090A0070BF5F /* smallerBackground~iphone.png */; }; 61536DF411CEAE7100D87A7E /* GameConfigViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165924A11CA9CB400D6E256 /* GameConfigViewController.xib */; }; 615AD96212073B4D00F2FF04 /* startGameButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 615AD96112073B4D00F2FF04 /* startGameButton.png */; }; 615AD9E9120764CA00F2FF04 /* backButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 615AD9E8120764CA00F2FF04 /* backButton.png */; }; 615AD9EB1207654E00F2FF04 /* helpButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 615AD9EA1207654E00F2FF04 /* helpButton.png */; }; + 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 */; }; 6163EE7E11CC2600001C0453 /* SingleWeaponViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6163EE7D11CC2600001C0453 /* SingleWeaponViewController.m */; }; 6165920D11CA9BA200D6E256 /* FlagsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 616591E111CA9BA200D6E256 /* FlagsViewController.m */; }; 6165920E11CA9BA200D6E256 /* FortsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 616591E311CA9BA200D6E256 /* FortsViewController.m */; }; @@ -83,13 +107,19 @@ 6165922211CA9BA200D6E256 /* WeaponSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165920B11CA9BA200D6E256 /* WeaponSettingsViewController.m */; }; 6165922E11CA9BD500D6E256 /* CGPointUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = 6165922311CA9BD500D6E256 /* CGPointUtils.c */; }; 6165922F11CA9BD500D6E256 /* CommodityFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165922611CA9BD500D6E256 /* CommodityFunctions.m */; }; - 6165923011CA9BD500D6E256 /* HogButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165922811CA9BD500D6E256 /* HogButtonView.m */; }; 6165923111CA9BD500D6E256 /* SquareButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165922B11CA9BD500D6E256 /* SquareButtonView.m */; }; 6165923211CA9BD500D6E256 /* UIImageExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165922D11CA9BD500D6E256 /* UIImageExtra.m */; }; 6165925311CA9CB400D6E256 /* MainMenuViewController-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165924B11CA9CB400D6E256 /* MainMenuViewController-iPad.xib */; }; 6165925511CA9CB400D6E256 /* MapConfigViewController-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165924D11CA9CB400D6E256 /* MapConfigViewController-iPad.xib */; }; 6165925811CA9CB400D6E256 /* OverlayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165925011CA9CB400D6E256 /* OverlayViewController.xib */; }; 6165929E11CA9E2F00D6E256 /* SDL_uikitappdelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6165929D11CA9E2F00D6E256 /* SDL_uikitappdelegate.m */; }; + 6172555A12B3DD4A0098D069 /* libLua.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6172555912B3DCEE0098D069 /* libLua.a */; }; + 6172FED91298CF9800D73365 /* background~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FED71298CF9800D73365 /* background~iphone.png */; }; + 6172FEEF1298D25D00D73365 /* mediumBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEEB1298D25D00D73365 /* mediumBackground~ipad.png */; }; + 6172FEF11298D25D00D73365 /* smallerBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEED1298D25D00D73365 /* smallerBackground~ipad.png */; }; + 6172FEF21298D25D00D73365 /* smallerBackground~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEEE1298D25D00D73365 /* smallerBackground~iphone.png */; }; + 6174F7C812CD62E300205D6F /* smallerTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 6174F7C612CD62E300205D6F /* smallerTitle.png */; }; + 6174F7C912CD62E300205D6F /* smallerTitle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */; }; 61798816114AA34C00BA94A9 /* hwengine.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987E7114AA34C00BA94A9 /* hwengine.pas */; }; 61798818114AA34C00BA94A9 /* hwLibrary.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987E9114AA34C00BA94A9 /* hwLibrary.pas */; }; 6179881B114AA34C00BA94A9 /* PascalExports.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987EC114AA34C00BA94A9 /* PascalExports.pas */; }; @@ -124,33 +154,39 @@ 617988DB114AAA4200BA94A9 /* libSDLiPhoneOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 617988DA114AAA3900BA94A9 /* libSDLiPhoneOS.a */; }; 61798935114AB25F00BA94A9 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61798934114AB25F00BA94A9 /* AudioToolbox.framework */; }; 61798996114AB3FF00BA94A9 /* libSDL_mixer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61798993114AB3FA00BA94A9 /* libSDL_mixer.a */; }; - 617989BE114AB47A00BA94A9 /* libSDL_net.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 617989BB114AB47500BA94A9 /* libSDL_net.a */; }; 61798A14114AB65C00BA94A9 /* libSDL_ttf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61798A13114AB65600BA94A9 /* libSDL_ttf.a */; }; - 61799289114AE08700BA94A9 /* Data in Resources */ = {isa = PBXBuildFile; fileRef = 61798A5E114AE08600BA94A9 /* Data */; }; - 61808A4B128C901B005D0E2F /* startButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61808A4A128C901B005D0E2F /* startButton.png */; }; 61808A5D128C930A005D0E2F /* backSound.wav in Resources */ = {isa = PBXBuildFile; fileRef = 611EE9D7122AA10A00DF6938 /* backSound.wav */; }; - 61808A6F128C94E1005D0E2F /* backgroundTop.png in Resources */ = {isa = PBXBuildFile; fileRef = 61808A6E128C94E1005D0E2F /* backgroundTop.png */; }; - 6183D83E11E2BCE200A88903 /* Default-ipad-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 6183D83C11E2BCE200A88903 /* Default-ipad-Landscape.png */; }; 61842B24122B619D0096E335 /* HelpPageInGameViewController-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 61842B23122B619D0096E335 /* HelpPageInGameViewController-iPad.xib */; }; 61842B3E122B65BD0096E335 /* helpabove.png in Resources */ = {isa = PBXBuildFile; fileRef = 61842B3D122B65BD0096E335 /* helpabove.png */; }; 61842B40122B66280096E335 /* helpleft.png in Resources */ = {isa = PBXBuildFile; fileRef = 61842B3F122B66280096E335 /* helpleft.png */; }; 6187AEBD120781B900B31A27 /* Settings in Resources */ = {isa = PBXBuildFile; fileRef = 6187AEA5120781B900B31A27 /* Settings */; }; + 61889985129995B500D55FD6 /* title~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 61889984129995B500D55FD6 /* title~ipad.png */; }; + 618E27BC12A2C32600C20EF0 /* libSDL_net.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 618E27BB12A2C30700C20EF0 /* libSDL_net.a */; }; 6199E81612463EA800DADF8C /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6199E81512463EA800DADF8C /* CFNetwork.framework */; }; 6199E81A12463EC400DADF8C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6199E81912463EC400DADF8C /* SystemConfiguration.framework */; }; 6199E839124647DE00DADF8C /* SupportViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6199E837124647DE00DADF8C /* SupportViewController.m */; }; 6199E86D12464A8E00DADF8C /* surprise.png in Resources */ = {isa = PBXBuildFile; fileRef = 6199E86C12464A8E00DADF8C /* surprise.png */; }; - 619C5ACF124F7DE200D041AE /* libLua.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 619C5ACE124F7DDF00D041AE /* libLua.a */; }; 619C5AF4124F7E3100D041AE /* LuaPas.pas in Sources */ = {isa = PBXBuildFile; fileRef = 619C5AF3124F7E3100D041AE /* LuaPas.pas */; }; 619C5BA2124FA59000D041AE /* MapPreviewButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 619C5BA1124FA59000D041AE /* MapPreviewButtonView.m */; }; 61A1188511683A8C00359010 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A117FE1168322700359010 /* CoreGraphics.framework */; settings = {ATTRIBUTES = (Required, ); }; }; - 61A118D311683CD100359010 /* HedgewarsTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 611FD9CB1155A28C00C2203D /* HedgewarsTitle.png */; }; - 61A670BE12747D8900B06CE7 /* borderBottom.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E911DF58550068B24D /* borderBottom.png */; }; + 61A4A39412A5CCC2004D81E6 /* uCommandHandlers.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38912A5CCC2004D81E6 /* uCommandHandlers.pas */; }; + 61A4A39512A5CCC2004D81E6 /* uCommands.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38A12A5CCC2004D81E6 /* uCommands.pas */; }; + 61A4A39612A5CCC2004D81E6 /* uDebug.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38B12A5CCC2004D81E6 /* uDebug.pas */; }; + 61A4A39712A5CCC2004D81E6 /* uGearsRender.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38C12A5CCC2004D81E6 /* uGearsRender.pas */; }; + 61A4A39812A5CCC2004D81E6 /* uRender.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38D12A5CCC2004D81E6 /* uRender.pas */; }; + 61A4A39912A5CCC2004D81E6 /* uRenderUtils.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38E12A5CCC2004D81E6 /* uRenderUtils.pas */; }; + 61A4A39A12A5CCC2004D81E6 /* uSinTable.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38F12A5CCC2004D81E6 /* uSinTable.pas */; }; + 61A4A39B12A5CCC2004D81E6 /* uTextures.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A39012A5CCC2004D81E6 /* uTextures.pas */; }; + 61A4A39C12A5CCC2004D81E6 /* uTypes.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A39112A5CCC2004D81E6 /* uTypes.pas */; }; + 61A4A39D12A5CCC2004D81E6 /* uUtils.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A39212A5CCC2004D81E6 /* uUtils.pas */; }; + 61A4A39E12A5CCC2004D81E6 /* uVariables.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A39312A5CCC2004D81E6 /* uVariables.pas */; }; + 61A4A3A212A5CD56004D81E6 /* uCaptions.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A3A112A5CD56004D81E6 /* uCaptions.pas */; }; 61A670C012747D9B00B06CE7 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 6183D83D11E2BCE200A88903 /* Default.png */; }; 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 */; }; - 61A670FB12747E0D00B06CE7 /* title_small.png in Resources */ = {isa = PBXBuildFile; fileRef = 619C09E911E8B8D600F1DF16 /* title_small.png */; }; - 61A6710612747E4000B06CE7 /* backgroundCenter.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F903E511DF58550068B24D /* backgroundCenter.png */; }; + 61AC067412B2E32D000B52A2 /* Appirater.m in Sources */ = {isa = PBXBuildFile; fileRef = 61AC067312B2E32D000B52A2 /* Appirater.m */; }; 61B3D71C11EA6F2700EC7420 /* uKeys.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987FE114AA34C00BA94A9 /* uKeys.pas */; }; + 61B7A33812CC21080086B604 /* StatsPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B7A33712CC21080086B604 /* StatsPageViewController.m */; }; 61C079E411F35A300072BF46 /* EditableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61C079E311F35A300072BF46 /* EditableCellView.m */; }; 61D205A1127CDD1100ABD83E /* ObjcExports.m in Sources */ = {isa = PBXBuildFile; fileRef = 61D205A0127CDD1100ABD83E /* ObjcExports.m */; }; 61D3D2A51290E03A003CE7C3 /* irc.png in Resources */ = {isa = PBXBuildFile; fileRef = 61D3D2A41290E03A003CE7C3 /* irc.png */; }; @@ -158,20 +194,22 @@ 61DF0EDC1284DF2300F3F10B /* HelpPageLobbyViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 61DF0EDB1284DF2300F3F10B /* HelpPageLobbyViewController-iPhone.xib */; }; 61DF0F211284F72A00F3F10B /* HelpPageInGameViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 61DF0F201284F72A00F3F10B /* HelpPageInGameViewController-iPhone.xib */; }; 61E1F4F811D004240016A5AA /* adler32.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61E1F4F711D004240016A5AA /* adler32.pas */; }; + 61E2E12E12BAAEE30051B659 /* ServerSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 61E2E12D12BAAEE30051B659 /* ServerSetup.m */; }; 61E2F7441283752C00E12521 /* fb.png in Resources */ = {isa = PBXBuildFile; fileRef = 61E2F7421283752C00E12521 /* fb.png */; }; 61E2F7451283752C00E12521 /* tw.png in Resources */ = {isa = PBXBuildFile; fileRef = 61E2F7431283752C00E12521 /* tw.png */; }; + 61E5D68D12AB006F00566F29 /* uLandPainted.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61E5D68C12AB006F00566F29 /* uLandPainted.pas */; }; 61EBA62A11DFF2BC0048B68A /* title.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBA62811DFF2BC0048B68A /* title.png */; }; - 61EBA62D11DFF3310048B68A /* backgroundAndTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EBA62C11DFF3310048B68A /* backgroundAndTitle.png */; }; 61EF920E11DF57AC003441C4 /* arrowDown.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920511DF57AC003441C4 /* arrowDown.png */; }; 61EF920F11DF57AC003441C4 /* arrowLeft.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920611DF57AC003441C4 /* arrowLeft.png */; }; 61EF921011DF57AC003441C4 /* arrowRight.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920711DF57AC003441C4 /* arrowRight.png */; }; 61EF921111DF57AC003441C4 /* arrowUp.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920811DF57AC003441C4 /* arrowUp.png */; }; - 61EF921211DF57AC003441C4 /* joyButton_attack.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920911DF57AC003441C4 /* joyButton_attack.png */; }; - 61EF921311DF57AC003441C4 /* joyButton_backjump.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920A11DF57AC003441C4 /* joyButton_backjump.png */; }; - 61EF921411DF57AC003441C4 /* joyButton_forwardjump.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920B11DF57AC003441C4 /* joyButton_forwardjump.png */; }; + 61EF921211DF57AC003441C4 /* joyButtonAttack.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920911DF57AC003441C4 /* joyButtonAttack.png */; }; + 61EF921311DF57AC003441C4 /* joyButtonBackJump.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920A11DF57AC003441C4 /* joyButtonBackJump.png */; }; + 61EF921411DF57AC003441C4 /* joyButtonForwardJump.png in Resources */ = {isa = PBXBuildFile; fileRef = 61EF920B11DF57AC003441C4 /* joyButtonForwardJump.png */; }; 61F2E7CE1205EDE0005734F7 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F2E7CC1205EDE0005734F7 /* AboutViewController.m */; }; 61F2E7CF1205EDE0005734F7 /* AboutViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 61F2E7CD1205EDE0005734F7 /* AboutViewController.xib */; }; 61F2E7EC12060E31005734F7 /* checkbox.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F2E7EB12060E31005734F7 /* checkbox.png */; }; + 61F544C712AF1748007FD913 /* HoldTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F544C612AF1748007FD913 /* HoldTableViewCell.m */; }; 61F7A43811E290650040BA66 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43111E290650040BA66 /* Icon-72.png */; }; 61F7A43911E290650040BA66 /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43211E290650040BA66 /* Icon-Small-50.png */; }; 61F7A43A11E290650040BA66 /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43311E290650040BA66 /* Icon-Small.png */; }; @@ -179,7 +217,6 @@ 61F7A43E11E290650040BA66 /* iTunesArtwork.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F7A43711E290650040BA66 /* iTunesArtwork.png */; }; 61F9040911DF58B00068B24D /* settingsButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040811DF58B00068B24D /* settingsButton.png */; }; 61F9040B11DF59370068B24D /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040A11DF59370068B24D /* background.png */; }; - 61F9040E11DF59D10068B24D /* localplayButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 61F9040C11DF59D10068B24D /* localplayButton.png */; }; 61F904D711DF7DA30068B24D /* WeaponCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61F904D611DF7DA30068B24D /* WeaponCellView.m */; }; 922F64900F10F53100DC6EC0 /* libfpc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 928301170F10CAFC00CC5A3C /* libfpc.a */; }; /* End PBXBuildFile section */ @@ -660,6 +697,27 @@ remoteGlobalIDString = BE1FA74107AF4C45004B6283; remoteInfo = "Static Library"; }; + 6172555412B3DCEE0098D069 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6172554E12B3DCEE0098D069 /* Lua.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1D6058910D05DD3D006BFB54; + remoteInfo = "Test Lua"; + }; + 6172555612B3DCEE0098D069 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6172554E12B3DCEE0098D069 /* Lua.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 506EE05E10304ED200A389B3; + remoteInfo = "cocos2d libraries"; + }; + 6172555812B3DCEE0098D069 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6172554E12B3DCEE0098D069 /* Lua.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = E14CF7C110ABC177005470B6; + remoteInfo = Lua; + }; 617988D9114AAA3900BA94A9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 617988D3114AAA3900BA94A9 /* SDLiPhoneOS.xcodeproj */; @@ -674,13 +732,6 @@ remoteGlobalIDString = BE1FA95407AF96B2004B6283; remoteInfo = "Static Library"; }; - 617989BA114AB47500BA94A9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 617989B3114AB47500BA94A9 /* SDL_net.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = BE48FF6F07AFA9A900BB41DA; - remoteInfo = "Static Library"; - }; 61798A12114AB65600BA94A9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 61798A0B114AB65600BA94A9 /* SDL_ttf.xcodeproj */; @@ -695,26 +746,12 @@ remoteGlobalIDString = 006E982211955059001DE610; remoteInfo = testsdl; }; - 619C5AC9124F7DDF00D041AE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 619C5AC0124F7DDF00D041AE /* Lua.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 1D6058910D05DD3D006BFB54; - remoteInfo = "Test Lua"; - }; - 619C5ACB124F7DDF00D041AE /* PBXContainerItemProxy */ = { + 618E27BA12A2C30700C20EF0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 619C5AC0124F7DDF00D041AE /* Lua.xcodeproj */; + containerPortal = 618E27B612A2C30700C20EF0 /* SDL_net.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 506EE05E10304ED200A389B3; - remoteInfo = "cocos2d libraries"; - }; - 619C5ACD124F7DDF00D041AE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 619C5AC0124F7DDF00D041AE /* Lua.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E14CF7C110ABC177005470B6; - remoteInfo = Lua; + remoteGlobalIDString = BE48FF6F07AFA9A900BB41DA; + remoteInfo = "Static Library"; }; 928301590F10E41300CC5A3C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -734,11 +771,23 @@ 32CA4F630368D1EE00C91783 /* Hedgewars_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Hedgewars_Prefix.pch; sourceTree = "<group>"; }; 61006F93128DE31F00EBA7F7 /* CreationChamber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CreationChamber.h; path = Classes/CreationChamber.h; sourceTree = "<group>"; }; 61006F94128DE31F00EBA7F7 /* CreationChamber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CreationChamber.m; path = Classes/CreationChamber.m; sourceTree = "<group>"; }; + 6103D383129B346A00911D8D /* fb@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fb@2x.png"; path = "Resources/Icons/fb@2x.png"; sourceTree = "<group>"; }; + 6103D384129B347700911D8D /* irc@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "irc@2x.png"; path = "Resources/Icons/irc@2x.png"; sourceTree = "<group>"; }; + 6103D385129B348200911D8D /* tw@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tw@2x.png"; path = "Resources/Icons/tw@2x.png"; sourceTree = "<group>"; }; + 6103D392129B34E900911D8D /* joyButtonAttack@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "joyButtonAttack@2x.png"; path = "Resources/Overlay/joyButtonAttack@2x.png"; sourceTree = "<group>"; }; + 6103D393129B34E900911D8D /* joyButtonBackJump@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "joyButtonBackJump@2x.png"; path = "Resources/Overlay/joyButtonBackJump@2x.png"; sourceTree = "<group>"; }; + 6103D394129B34E900911D8D /* joyButtonForwardJump@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "joyButtonForwardJump@2x.png"; path = "Resources/Overlay/joyButtonForwardJump@2x.png"; sourceTree = "<group>"; }; + 6103D399129B350700911D8D /* ammoButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ammoButton@2x.png"; path = "Resources/Overlay/ammoButton@2x.png"; sourceTree = "<group>"; }; + 6103D39A129B350700911D8D /* arrowDown@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "arrowDown@2x.png"; path = "Resources/Overlay/arrowDown@2x.png"; sourceTree = "<group>"; }; + 6103D39B129B350700911D8D /* arrowLeft@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "arrowLeft@2x.png"; path = "Resources/Overlay/arrowLeft@2x.png"; sourceTree = "<group>"; }; + 6103D39C129B350700911D8D /* arrowRight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "arrowRight@2x.png"; path = "Resources/Overlay/arrowRight@2x.png"; sourceTree = "<group>"; }; + 6103D39D129B350700911D8D /* arrowUp@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "arrowUp@2x.png"; path = "Resources/Overlay/arrowUp@2x.png"; sourceTree = "<group>"; }; + 6103D39E129B350700911D8D /* cornerButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cornerButton@2x.png"; path = "Resources/Overlay/cornerButton@2x.png"; sourceTree = "<group>"; }; + 6103D413129B417500911D8D /* plus@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "plus@2x.png"; path = "Resources/Icons/plus@2x.png"; sourceTree = "<group>"; }; 611D9BF812497E9800008271 /* SavedGamesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SavedGamesViewController.h; sourceTree = "<group>"; }; 611D9BF912497E9800008271 /* SavedGamesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SavedGamesViewController.m; sourceTree = "<group>"; }; 611D9BFA12497E9800008271 /* SavedGamesViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = SavedGamesViewController.xib; path = ../Resources/SavedGamesViewController.xib; sourceTree = "<group>"; }; - 611DA030124E2BC500008271 /* mediumBackground~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "mediumBackground~ipad.png"; path = "Resources/Overlay/mediumBackground~ipad.png"; sourceTree = "<group>"; }; - 611DA1CF124E5C6300008271 /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plus.png; path = Resources/Overlay/plus.png; sourceTree = "<group>"; }; + 611DA1CF124E5C6300008271 /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plus.png; path = Resources/Icons/plus.png; sourceTree = "<group>"; }; 611E02EC11FA74580077A41E /* cocos2d-iphone.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "cocos2d-iphone.xcodeproj"; path = "../../../Library/cocos2d/cocos2d-iphone.xcodeproj"; sourceTree = SOURCE_ROOT; }; 611E0E4B11FA92130077A41E /* freetype.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = freetype.xcodeproj; path = "../../../Library/freetype/Xcode-iPhoneOS/freetype.xcodeproj"; sourceTree = SOURCE_ROOT; }; 611E0EE511FB20610077A41E /* ammoButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ammoButton.png; path = Resources/Overlay/ammoButton.png; sourceTree = "<group>"; }; @@ -755,20 +804,20 @@ 611EEBC3122B355700DF6938 /* helpright.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = helpright.png; path = Resources/Overlay/helpright.png; sourceTree = "<group>"; }; 611EEC30122B54D700DF6938 /* helpplain.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = helpplain.png; path = Resources/Overlay/helpplain.png; sourceTree = "<group>"; }; 611F4D4A11B27A9900F9759A /* uScript.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uScript.pas; path = ../../hedgewars/uScript.pas; sourceTree = SOURCE_ROOT; }; - 611FD9CB1155A28C00C2203D /* HedgewarsTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = HedgewarsTitle.png; path = ../../QTfrontend/res/HedgewarsTitle.png; sourceTree = SOURCE_ROOT; }; 6127232E117DF752005B90CF /* SDL_image.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_image.xcodeproj; path = "../../../Library/SDL-1.3/SDL_image/Xcode_iPhone/SDL_image.xcodeproj"; sourceTree = SOURCE_ROOT; }; 61272338117DF778005B90CF /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; 6129B9F611EFB04D0017E305 /* denied.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = denied.png; path = Resources/denied.png; sourceTree = "<group>"; }; 61370652117B1D50004EE44A /* Entitlements-Distribution.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Entitlements-Distribution.plist"; sourceTree = "<group>"; }; 61399012125D19C0003C2DC0 /* uMobile.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uMobile.pas; path = ../../hedgewars/uMobile.pas; sourceTree = SOURCE_ROOT; }; - 6147DAD21253DCDE0010357E /* savesButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = savesButton.png; path = Resources/savesButton.png; sourceTree = "<group>"; }; - 614AE659127D090A0070BF5F /* smallerBackground@2x-iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground@2x-iphone.png"; path = "Resources/Overlay/smallerBackground@2x-iphone.png"; sourceTree = "<group>"; }; - 614AE65A127D090A0070BF5F /* smallerBackground~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~ipad.png"; path = "Resources/Overlay/smallerBackground~ipad.png"; sourceTree = "<group>"; }; - 614AE65B127D090A0070BF5F /* smallerBackground~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~iphone.png"; path = "Resources/Overlay/smallerBackground~iphone.png"; sourceTree = "<group>"; }; + 6147DAD21253DCDE0010357E /* savesButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = savesButton.png; path = Resources/Frontend/savesButton.png; sourceTree = "<group>"; }; 614E333D11DE9A93009DBA4E /* VGSHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = VGSHandlers.inc; path = ../../hedgewars/VGSHandlers.inc; sourceTree = SOURCE_ROOT; }; - 615AD96112073B4D00F2FF04 /* startGameButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = startGameButton.png; path = "Resources/Frontend-iPad/startGameButton.png"; sourceTree = "<group>"; }; - 615AD9E8120764CA00F2FF04 /* backButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backButton.png; path = "Resources/Frontend-iPad/backButton.png"; sourceTree = "<group>"; }; - 615AD9EA1207654E00F2FF04 /* helpButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = helpButton.png; path = "Resources/Frontend-iPad/helpButton.png"; sourceTree = "<group>"; }; + 615AD96112073B4D00F2FF04 /* startGameButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = startGameButton.png; path = Resources/Frontend/startGameButton.png; sourceTree = "<group>"; }; + 615AD9E8120764CA00F2FF04 /* backButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backButton.png; path = Resources/Frontend/backButton.png; sourceTree = "<group>"; }; + 615AD9EA1207654E00F2FF04 /* helpButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = helpButton.png; path = Resources/Frontend/helpButton.png; sourceTree = "<group>"; }; + 615FEAD912A2A4C10098EE92 /* checkbox@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "checkbox@2x.png"; path = "Resources/Icons/checkbox@2x.png"; sourceTree = "<group>"; }; + 615FEADE12A2A6640098EE92 /* localplayButton@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "localplayButton@2x~iphone.png"; path = "Resources/Frontend/localplayButton@2x~iphone.png"; sourceTree = "<group>"; }; + 615FEADF12A2A6640098EE92 /* localplayButton~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "localplayButton~ipad.png"; path = "Resources/Frontend/localplayButton~ipad.png"; sourceTree = "<group>"; }; + 615FEAE012A2A6640098EE92 /* localplayButton~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "localplayButton~iphone.png"; path = "Resources/Frontend/localplayButton~iphone.png"; sourceTree = "<group>"; }; 6163EE7C11CC2600001C0453 /* SingleWeaponViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SingleWeaponViewController.h; sourceTree = "<group>"; }; 6163EE7D11CC2600001C0453 /* SingleWeaponViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SingleWeaponViewController.m; sourceTree = "<group>"; }; 616591E011CA9BA200D6E256 /* FlagsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlagsViewController.h; sourceTree = "<group>"; }; @@ -819,8 +868,6 @@ 6165922411CA9BD500D6E256 /* CGPointUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CGPointUtils.h; path = Classes/CGPointUtils.h; sourceTree = "<group>"; }; 6165922511CA9BD500D6E256 /* CommodityFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommodityFunctions.h; path = Classes/CommodityFunctions.h; sourceTree = "<group>"; }; 6165922611CA9BD500D6E256 /* CommodityFunctions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommodityFunctions.m; path = Classes/CommodityFunctions.m; sourceTree = "<group>"; }; - 6165922711CA9BD500D6E256 /* HogButtonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HogButtonView.h; path = Classes/HogButtonView.h; sourceTree = "<group>"; }; - 6165922811CA9BD500D6E256 /* HogButtonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HogButtonView.m; path = Classes/HogButtonView.m; sourceTree = "<group>"; }; 6165922911CA9BD500D6E256 /* PascalImports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PascalImports.h; path = Classes/PascalImports.h; sourceTree = "<group>"; }; 6165922A11CA9BD500D6E256 /* SquareButtonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SquareButtonView.h; path = Classes/SquareButtonView.h; sourceTree = "<group>"; }; 6165922B11CA9BD500D6E256 /* SquareButtonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SquareButtonView.m; path = Classes/SquareButtonView.m; sourceTree = "<group>"; }; @@ -834,7 +881,19 @@ 6165925011CA9CB400D6E256 /* OverlayViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = OverlayViewController.xib; path = Resources/OverlayViewController.xib; sourceTree = SOURCE_ROOT; }; 6165929C11CA9E2F00D6E256 /* SDL_uikitappdelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_uikitappdelegate.h; path = Classes/SDL_uikitappdelegate.h; sourceTree = "<group>"; }; 6165929D11CA9E2F00D6E256 /* SDL_uikitappdelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDL_uikitappdelegate.m; path = Classes/SDL_uikitappdelegate.m; sourceTree = "<group>"; }; - 617987E1114AA34C00BA94A9 /* CCHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = CCHandlers.inc; path = ../../hedgewars/CCHandlers.inc; sourceTree = SOURCE_ROOT; }; + 6172554E12B3DCEE0098D069 /* Lua.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Lua.xcodeproj; path = ../../../Library/Lua/Lua.xcodeproj; sourceTree = SOURCE_ROOT; }; + 6172FEA21298C7F900D73365 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "Resources/Icons/Default@2x.png"; sourceTree = "<group>"; }; + 6172FEC81298CE4800D73365 /* savesButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "savesButton@2x.png"; path = "Resources/Frontend/savesButton@2x.png"; sourceTree = "<group>"; }; + 6172FECA1298CE4E00D73365 /* settingsButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settingsButton@2x.png"; path = "Resources/Frontend/settingsButton@2x.png"; sourceTree = "<group>"; }; + 6172FED31298CE6600D73365 /* backButton@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backButton@2x.png"; path = "Resources/Frontend/backButton@2x.png"; sourceTree = "<group>"; }; + 6172FED61298CF9800D73365 /* background@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "background@2x~iphone.png"; path = "Resources/Frontend/background@2x~iphone.png"; sourceTree = "<group>"; }; + 6172FED71298CF9800D73365 /* background~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "background~iphone.png"; path = "Resources/Frontend/background~iphone.png"; sourceTree = "<group>"; }; + 6172FEEB1298D25D00D73365 /* mediumBackground~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "mediumBackground~ipad.png"; path = "Resources/Frontend/mediumBackground~ipad.png"; sourceTree = "<group>"; }; + 6172FEEC1298D25D00D73365 /* smallerBackground@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground@2x~iphone.png"; path = "Resources/Frontend/smallerBackground@2x~iphone.png"; sourceTree = "<group>"; }; + 6172FEED1298D25D00D73365 /* smallerBackground~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~ipad.png"; path = "Resources/Frontend/smallerBackground~ipad.png"; sourceTree = "<group>"; }; + 6172FEEE1298D25D00D73365 /* smallerBackground~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~iphone.png"; path = "Resources/Frontend/smallerBackground~iphone.png"; sourceTree = "<group>"; }; + 6174F7C612CD62E300205D6F /* smallerTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = smallerTitle.png; path = Resources/Frontend/smallerTitle.png; sourceTree = "<group>"; }; + 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerTitle@2x.png"; path = "Resources/Frontend/smallerTitle@2x.png"; sourceTree = "<group>"; }; 617987E4114AA34C00BA94A9 /* GSHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = GSHandlers.inc; path = ../../hedgewars/GSHandlers.inc; sourceTree = SOURCE_ROOT; }; 617987E5114AA34C00BA94A9 /* HHHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = HHHandlers.inc; path = ../../hedgewars/HHHandlers.inc; sourceTree = SOURCE_ROOT; }; 617987E7114AA34C00BA94A9 /* hwengine.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = hwengine.pas; path = ../../hedgewars/hwengine.pas; sourceTree = SOURCE_ROOT; }; @@ -842,7 +901,6 @@ 617987EB114AA34C00BA94A9 /* options.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = options.inc; path = ../../hedgewars/options.inc; sourceTree = SOURCE_ROOT; }; 617987EC114AA34C00BA94A9 /* PascalExports.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = PascalExports.pas; path = ../../hedgewars/PascalExports.pas; sourceTree = SOURCE_ROOT; }; 617987ED114AA34C00BA94A9 /* SDLh.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = SDLh.pas; path = ../../hedgewars/SDLh.pas; sourceTree = SOURCE_ROOT; }; - 617987F0114AA34C00BA94A9 /* SinTable.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = SinTable.inc; path = ../../hedgewars/SinTable.inc; sourceTree = SOURCE_ROOT; }; 617987F1114AA34C00BA94A9 /* uAI.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uAI.pas; path = ../../hedgewars/uAI.pas; sourceTree = SOURCE_ROOT; }; 617987F2114AA34C00BA94A9 /* uAIActions.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uAIActions.pas; path = ../../hedgewars/uAIActions.pas; sourceTree = SOURCE_ROOT; }; 617987F3114AA34C00BA94A9 /* uAIAmmoTests.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uAIAmmoTests.pas; path = ../../hedgewars/uAIAmmoTests.pas; sourceTree = SOURCE_ROOT; }; @@ -875,31 +933,44 @@ 617988D3114AAA3900BA94A9 /* SDLiPhoneOS.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDLiPhoneOS.xcodeproj; path = "../../../Library/SDL-1.3/SDL/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj"; sourceTree = SOURCE_ROOT; }; 61798934114AB25F00BA94A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 6179898B114AB3FA00BA94A9 /* SDL_mixer.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_mixer.xcodeproj; path = "../../../Library/SDL-1.3/SDL_mixer/Xcode-iPhoneOS/SDL_mixer.xcodeproj"; sourceTree = SOURCE_ROOT; }; - 617989B3114AB47500BA94A9 /* SDL_net.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_net.xcodeproj; path = "../../../Library/SDL-1.3/SDL_net/Xcode-iPhoneOS/SDL_net.xcodeproj"; sourceTree = SOURCE_ROOT; }; 61798A0B114AB65600BA94A9 /* SDL_ttf.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_ttf.xcodeproj; path = "../../../Library/SDL-1.3/SDL_ttf/Xcode-iPhoneOS/SDL_ttf.xcodeproj"; sourceTree = SOURCE_ROOT; }; 61798A5E114AE08600BA94A9 /* Data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Data; path = ../../../trunk/project_files/HedgewarsMobile/Data; sourceTree = "<group>"; }; - 61808A4A128C901B005D0E2F /* startButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = startButton.png; path = "Resources/Frontend-iPhone/startButton.png"; sourceTree = "<group>"; }; - 61808A6E128C94E1005D0E2F /* backgroundTop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backgroundTop.png; path = "Resources/Frontend-iPhone/backgroundTop.png"; sourceTree = "<group>"; }; 6183D83C11E2BCE200A88903 /* Default-ipad-Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-ipad-Landscape.png"; path = "Resources/Icons/Default-ipad-Landscape.png"; sourceTree = "<group>"; }; 6183D83D11E2BCE200A88903 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = Resources/Icons/Default.png; sourceTree = "<group>"; }; 61842B23122B619D0096E335 /* HelpPageInGameViewController-iPad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "HelpPageInGameViewController-iPad.xib"; path = "../Resources/HelpPageInGameViewController-iPad.xib"; sourceTree = "<group>"; }; 61842B3D122B65BD0096E335 /* helpabove.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = helpabove.png; path = Resources/Overlay/helpabove.png; sourceTree = "<group>"; }; 61842B3F122B66280096E335 /* helpleft.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = helpleft.png; path = Resources/Overlay/helpleft.png; sourceTree = "<group>"; }; - 618736B8118CA28600123B23 /* GearDrawing.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = GearDrawing.inc; path = ../../hedgewars/GearDrawing.inc; sourceTree = SOURCE_ROOT; }; 6187AEA5120781B900B31A27 /* Settings */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Settings; path = Resources/Settings; sourceTree = "<group>"; }; + 618899811299516000D55FD6 /* title@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "title@2x.png"; path = "Resources/Frontend/title@2x.png"; sourceTree = "<group>"; }; + 61889984129995B500D55FD6 /* title~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "title~ipad.png"; path = "Resources/Frontend/title~ipad.png"; sourceTree = "<group>"; }; + 618E27B612A2C30700C20EF0 /* SDL_net.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_net.xcodeproj; path = "../../../Library/SDL-1.3/SDL_net/Xcode-iPhoneOS/SDL_net.xcodeproj"; sourceTree = SOURCE_ROOT; }; 6199E81512463EA800DADF8C /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 6199E81912463EC400DADF8C /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 6199E836124647DE00DADF8C /* SupportViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SupportViewController.h; sourceTree = "<group>"; }; 6199E837124647DE00DADF8C /* SupportViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SupportViewController.m; sourceTree = "<group>"; }; 6199E86C12464A8E00DADF8C /* surprise.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = surprise.png; path = Resources/surprise.png; sourceTree = "<group>"; }; - 619C09E911E8B8D600F1DF16 /* title_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = title_small.png; path = "Resources/Frontend-iPhone/title_small.png"; sourceTree = "<group>"; }; - 619C5AC0124F7DDF00D041AE /* Lua.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Lua.xcodeproj; path = ../../../Library/Lua/Lua.xcodeproj; sourceTree = SOURCE_ROOT; }; 619C5AF3124F7E3100D041AE /* LuaPas.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = LuaPas.pas; path = ../../hedgewars/LuaPas.pas; sourceTree = SOURCE_ROOT; }; 619C5BA0124FA59000D041AE /* MapPreviewButtonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MapPreviewButtonView.h; path = Classes/MapPreviewButtonView.h; sourceTree = "<group>"; }; 619C5BA1124FA59000D041AE /* MapPreviewButtonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MapPreviewButtonView.m; path = Classes/MapPreviewButtonView.m; sourceTree = "<group>"; }; 61A117FE1168322700359010 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 61C079E211F35A300072BF46 /* EditableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditableCellView.h; sourceTree = "<group>"; }; - 61C079E311F35A300072BF46 /* EditableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditableCellView.m; sourceTree = "<group>"; }; + 61A4A38912A5CCC2004D81E6 /* uCommandHandlers.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uCommandHandlers.pas; path = ../../hedgewars/uCommandHandlers.pas; sourceTree = SOURCE_ROOT; }; + 61A4A38A12A5CCC2004D81E6 /* uCommands.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uCommands.pas; path = ../../hedgewars/uCommands.pas; sourceTree = SOURCE_ROOT; }; + 61A4A38B12A5CCC2004D81E6 /* uDebug.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uDebug.pas; path = ../../hedgewars/uDebug.pas; sourceTree = SOURCE_ROOT; }; + 61A4A38C12A5CCC2004D81E6 /* uGearsRender.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uGearsRender.pas; path = ../../hedgewars/uGearsRender.pas; sourceTree = SOURCE_ROOT; }; + 61A4A38D12A5CCC2004D81E6 /* uRender.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uRender.pas; path = ../../hedgewars/uRender.pas; sourceTree = SOURCE_ROOT; }; + 61A4A38E12A5CCC2004D81E6 /* uRenderUtils.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uRenderUtils.pas; path = ../../hedgewars/uRenderUtils.pas; sourceTree = SOURCE_ROOT; }; + 61A4A38F12A5CCC2004D81E6 /* uSinTable.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uSinTable.pas; path = ../../hedgewars/uSinTable.pas; sourceTree = SOURCE_ROOT; }; + 61A4A39012A5CCC2004D81E6 /* uTextures.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uTextures.pas; path = ../../hedgewars/uTextures.pas; sourceTree = SOURCE_ROOT; }; + 61A4A39112A5CCC2004D81E6 /* uTypes.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uTypes.pas; path = ../../hedgewars/uTypes.pas; sourceTree = SOURCE_ROOT; }; + 61A4A39212A5CCC2004D81E6 /* uUtils.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uUtils.pas; path = ../../hedgewars/uUtils.pas; sourceTree = SOURCE_ROOT; }; + 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; }; + 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>"; }; + 61B7A33612CC21080086B604 /* StatsPageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatsPageViewController.h; sourceTree = "<group>"; }; + 61B7A33712CC21080086B604 /* StatsPageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatsPageViewController.m; sourceTree = "<group>"; }; + 61C079E211F35A300072BF46 /* EditableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EditableCellView.h; path = Classes/EditableCellView.h; sourceTree = "<group>"; }; + 61C079E311F35A300072BF46 /* EditableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EditableCellView.m; path = Classes/EditableCellView.m; sourceTree = "<group>"; }; 61D2059F127CDD1100ABD83E /* ObjcExports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjcExports.h; path = Classes/ObjcExports.h; sourceTree = "<group>"; }; 61D205A0127CDD1100ABD83E /* ObjcExports.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ObjcExports.m; path = Classes/ObjcExports.m; sourceTree = "<group>"; }; 61D3D2A41290E03A003CE7C3 /* irc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = irc.png; path = Resources/Icons/irc.png; sourceTree = "<group>"; }; @@ -908,21 +979,25 @@ 61DF0EDB1284DF2300F3F10B /* HelpPageLobbyViewController-iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "HelpPageLobbyViewController-iPhone.xib"; path = "../Resources/HelpPageLobbyViewController-iPhone.xib"; sourceTree = "<group>"; }; 61DF0F201284F72A00F3F10B /* HelpPageInGameViewController-iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "HelpPageInGameViewController-iPhone.xib"; path = "Resources/HelpPageInGameViewController-iPhone.xib"; sourceTree = SOURCE_ROOT; }; 61E1F4F711D004240016A5AA /* adler32.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = adler32.pas; path = ../../hedgewars/adler32.pas; sourceTree = SOURCE_ROOT; }; + 61E2E12C12BAAEE30051B659 /* ServerSetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerSetup.h; sourceTree = "<group>"; }; + 61E2E12D12BAAEE30051B659 /* ServerSetup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerSetup.m; sourceTree = "<group>"; }; 61E2F7421283752C00E12521 /* fb.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = fb.png; path = Resources/Icons/fb.png; sourceTree = "<group>"; }; 61E2F7431283752C00E12521 /* tw.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = tw.png; path = Resources/Icons/tw.png; sourceTree = "<group>"; }; - 61EBA62811DFF2BC0048B68A /* title.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = title.png; path = "Resources/Frontend-iPad/title.png"; sourceTree = "<group>"; }; - 61EBA62C11DFF3310048B68A /* backgroundAndTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backgroundAndTitle.png; path = "Resources/Frontend-iPad/backgroundAndTitle.png"; sourceTree = "<group>"; }; + 61E5D68C12AB006F00566F29 /* uLandPainted.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uLandPainted.pas; path = ../../hedgewars/uLandPainted.pas; sourceTree = SOURCE_ROOT; }; + 61EBA62811DFF2BC0048B68A /* title.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = title.png; path = Resources/Frontend/title.png; sourceTree = "<group>"; }; 61EF920511DF57AC003441C4 /* arrowDown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = arrowDown.png; path = Resources/Overlay/arrowDown.png; sourceTree = "<group>"; }; 61EF920611DF57AC003441C4 /* arrowLeft.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = arrowLeft.png; path = Resources/Overlay/arrowLeft.png; sourceTree = "<group>"; }; 61EF920711DF57AC003441C4 /* arrowRight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = arrowRight.png; path = Resources/Overlay/arrowRight.png; sourceTree = "<group>"; }; 61EF920811DF57AC003441C4 /* arrowUp.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = arrowUp.png; path = Resources/Overlay/arrowUp.png; sourceTree = "<group>"; }; - 61EF920911DF57AC003441C4 /* joyButton_attack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = joyButton_attack.png; path = Resources/Overlay/joyButton_attack.png; sourceTree = "<group>"; }; - 61EF920A11DF57AC003441C4 /* joyButton_backjump.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = joyButton_backjump.png; path = Resources/Overlay/joyButton_backjump.png; sourceTree = "<group>"; }; - 61EF920B11DF57AC003441C4 /* joyButton_forwardjump.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = joyButton_forwardjump.png; path = Resources/Overlay/joyButton_forwardjump.png; sourceTree = "<group>"; }; + 61EF920911DF57AC003441C4 /* joyButtonAttack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = joyButtonAttack.png; path = Resources/Overlay/joyButtonAttack.png; sourceTree = "<group>"; }; + 61EF920A11DF57AC003441C4 /* joyButtonBackJump.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = joyButtonBackJump.png; path = Resources/Overlay/joyButtonBackJump.png; sourceTree = "<group>"; }; + 61EF920B11DF57AC003441C4 /* joyButtonForwardJump.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = joyButtonForwardJump.png; path = Resources/Overlay/joyButtonForwardJump.png; sourceTree = "<group>"; }; 61F2E7CB1205EDE0005734F7 /* AboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutViewController.h; sourceTree = "<group>"; }; 61F2E7CC1205EDE0005734F7 /* AboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutViewController.m; sourceTree = "<group>"; }; 61F2E7CD1205EDE0005734F7 /* AboutViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = AboutViewController.xib; path = ../Resources/AboutViewController.xib; sourceTree = "<group>"; }; - 61F2E7EB12060E31005734F7 /* checkbox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = checkbox.png; path = Resources/checkbox.png; sourceTree = "<group>"; }; + 61F2E7EB12060E31005734F7 /* checkbox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = checkbox.png; path = Resources/Icons/checkbox.png; sourceTree = "<group>"; }; + 61F544C512AF1748007FD913 /* HoldTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HoldTableViewCell.h; path = Classes/HoldTableViewCell.h; sourceTree = "<group>"; }; + 61F544C612AF1748007FD913 /* HoldTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HoldTableViewCell.m; path = Classes/HoldTableViewCell.m; sourceTree = "<group>"; }; 61F7A43111E290650040BA66 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "Resources/Icons/Icon-72.png"; sourceTree = "<group>"; }; 61F7A43211E290650040BA66 /* Icon-Small-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small-50.png"; path = "Resources/Icons/Icon-Small-50.png"; sourceTree = "<group>"; }; 61F7A43311E290650040BA66 /* Icon-Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small.png"; path = "Resources/Icons/Icon-Small.png"; sourceTree = "<group>"; }; @@ -930,14 +1005,11 @@ 61F7A43511E290650040BA66 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = Resources/Icons/Icon.png; sourceTree = "<group>"; }; 61F7A43611E290650040BA66 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "Resources/Icons/Icon@2x.png"; sourceTree = "<group>"; }; 61F7A43711E290650040BA66 /* iTunesArtwork.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = iTunesArtwork.png; path = Resources/Icons/iTunesArtwork.png; sourceTree = "<group>"; }; - 61F903E511DF58550068B24D /* backgroundCenter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backgroundCenter.png; path = "Resources/Frontend-iPhone/backgroundCenter.png"; sourceTree = "<group>"; }; - 61F903E911DF58550068B24D /* borderBottom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = borderBottom.png; path = "Resources/Frontend-iPhone/borderBottom.png"; sourceTree = "<group>"; }; - 61F9040811DF58B00068B24D /* settingsButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settingsButton.png; path = Resources/settingsButton.png; sourceTree = "<group>"; }; - 61F9040A11DF59370068B24D /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background.png; path = "Resources/Frontend-iPad/background.png"; sourceTree = "<group>"; }; - 61F9040C11DF59D10068B24D /* localplayButton.png */ = {isa = PBXFileReference; explicitFileType = image.png; name = localplayButton.png; path = "Resources/Frontend-iPad/localplayButton.png"; sourceTree = "<group>"; }; - 61F9040D11DF59D10068B24D /* netplayButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = netplayButton.png; path = "Resources/Frontend-iPad/netplayButton.png"; sourceTree = "<group>"; }; - 61F904D511DF7DA30068B24D /* WeaponCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeaponCellView.h; sourceTree = "<group>"; }; - 61F904D611DF7DA30068B24D /* WeaponCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WeaponCellView.m; sourceTree = "<group>"; }; + 61F9040811DF58B00068B24D /* settingsButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settingsButton.png; path = Resources/Frontend/settingsButton.png; sourceTree = "<group>"; }; + 61F9040A11DF59370068B24D /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background.png; path = Resources/Frontend/background.png; sourceTree = "<group>"; }; + 61F9040D11DF59D10068B24D /* netplayButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = netplayButton.png; path = Resources/Frontend/netplayButton.png; sourceTree = "<group>"; }; + 61F904D511DF7DA30068B24D /* WeaponCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WeaponCellView.h; path = Classes/WeaponCellView.h; sourceTree = "<group>"; }; + 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; }; /* End PBXFileReference section */ @@ -947,15 +1019,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 618E27BC12A2C32600C20EF0 /* libSDL_net.a in Frameworks */, 61798A14114AB65C00BA94A9 /* libSDL_ttf.a in Frameworks */, - 617989BE114AB47A00BA94A9 /* libSDL_net.a in Frameworks */, 61272334117DF764005B90CF /* libSDL_image.a in Frameworks */, 61798996114AB3FF00BA94A9 /* libSDL_mixer.a in Frameworks */, 617988DB114AAA4200BA94A9 /* libSDLiPhoneOS.a in Frameworks */, + 6172555A12B3DD4A0098D069 /* libLua.a in Frameworks */, 922F64900F10F53100DC6EC0 /* libfpc.a in Frameworks */, 611E03E711FA747C0077A41E /* libvorbis.a in Frameworks */, 611E0E5111FA92170077A41E /* libfreetype.a in Frameworks */, - 619C5ACF124F7DE200D041AE /* libLua.a in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 61A1188511683A8C00359010 /* CoreGraphics.framework in Frameworks */, 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, @@ -984,6 +1056,8 @@ 6165924C11CA9CB400D6E256 /* MainMenuViewController-iPhone.xib */, 616591E611CA9BA200D6E256 /* GameSetup.h */, 616591E711CA9BA200D6E256 /* GameSetup.m */, + 61E2E12C12BAAEE30051B659 /* ServerSetup.h */, + 61E2E12D12BAAEE30051B659 /* ServerSetup.m */, ); path = Classes; sourceTree = "<group>"; @@ -1015,21 +1089,23 @@ 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( - 61DE91561258B76800B80214 /* Custom Buttons */, - 32CA4F630368D1EE00C91783 /* Hedgewars_Prefix.pch */, - 6165922911CA9BD500D6E256 /* PascalImports.h */, - 6165922411CA9BD500D6E256 /* CGPointUtils.h */, - 6165922311CA9BD500D6E256 /* CGPointUtils.c */, 6165929C11CA9E2F00D6E256 /* SDL_uikitappdelegate.h */, 6165929D11CA9E2F00D6E256 /* SDL_uikitappdelegate.m */, + 61AC067212B2E32D000B52A2 /* Appirater.h */, + 61AC067312B2E32D000B52A2 /* Appirater.m */, + 61DE91561258B76800B80214 /* Custom UIs */, + 32CA4F630368D1EE00C91783 /* Hedgewars_Prefix.pch */, + 6165922911CA9BD500D6E256 /* PascalImports.h */, + 61D2059F127CDD1100ABD83E /* ObjcExports.h */, + 61D205A0127CDD1100ABD83E /* ObjcExports.m */, 6165922511CA9BD500D6E256 /* CommodityFunctions.h */, 6165922611CA9BD500D6E256 /* CommodityFunctions.m */, + 61006F93128DE31F00EBA7F7 /* CreationChamber.h */, + 61006F94128DE31F00EBA7F7 /* CreationChamber.m */, + 6165922411CA9BD500D6E256 /* CGPointUtils.h */, + 6165922311CA9BD500D6E256 /* CGPointUtils.c */, 6165922C11CA9BD500D6E256 /* UIImageExtra.h */, 6165922D11CA9BD500D6E256 /* UIImageExtra.m */, - 61D2059F127CDD1100ABD83E /* ObjcExports.h */, - 61D205A0127CDD1100ABD83E /* ObjcExports.m */, - 61006F93128DE31F00EBA7F7 /* CreationChamber.h */, - 61006F94128DE31F00EBA7F7 /* CreationChamber.m */, ); name = "Other Sources"; sourceTree = "<group>"; @@ -1037,7 +1113,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - 6147DAD21253DCDE0010357E /* savesButton.png */, 6199E86C12464A8E00DADF8C /* surprise.png */, 611EEBC0122B34A800DF6938 /* helpingame.png */, 611EEC30122B54D700DF6938 /* helpplain.png */, @@ -1046,7 +1121,6 @@ 611EEBC3122B355700DF6938 /* helpright.png */, 61842B3F122B66280096E335 /* helpleft.png */, 6129B9F611EFB04D0017E305 /* denied.png */, - 61F2E7EB12060E31005734F7 /* checkbox.png */, 611EE973122A9C4100DF6938 /* clickSound.wav */, 611EE9D7122AA10A00DF6938 /* backSound.wav */, 611EE9D8122AA10A00DF6938 /* selSound.wav */, @@ -1055,9 +1129,7 @@ 6179936611501D1E00BA94A9 /* Overlay */, 61798A5E114AE08600BA94A9 /* Data */, 6187AEA5120781B900B31A27 /* Settings */, - 611FD9CB1155A28C00C2203D /* HedgewarsTitle.png */, 8D1107310486CEB800E47090 /* Info.plist */, - 61F9040811DF58B00068B24D /* settingsButton.png */, ); name = Resources; sourceTree = "<group>"; @@ -1065,13 +1137,13 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( - 619C5AC0124F7DDF00D041AE /* Lua.xcodeproj */, + 6172554E12B3DCEE0098D069 /* Lua.xcodeproj */, 611E02EC11FA74580077A41E /* cocos2d-iphone.xcodeproj */, 611E0E4B11FA92130077A41E /* freetype.xcodeproj */, 617988D3114AAA3900BA94A9 /* SDLiPhoneOS.xcodeproj */, 6127232E117DF752005B90CF /* SDL_image.xcodeproj */, - 617989B3114AB47500BA94A9 /* SDL_net.xcodeproj */, 6179898B114AB3FA00BA94A9 /* SDL_mixer.xcodeproj */, + 618E27B612A2C30700C20EF0 /* SDL_net.xcodeproj */, 61798A0B114AB65600BA94A9 /* SDL_ttf.xcodeproj */, 61798934114AB25F00BA94A9 /* AudioToolbox.framework */, 61A117FE1168322700359010 /* CoreGraphics.framework */, @@ -1089,6 +1161,8 @@ 611D9BF312497B7700008271 /* Other Controllers */ = { isa = PBXGroup; children = ( + 61B7A33612CC21080086B604 /* StatsPageViewController.h */, + 61B7A33712CC21080086B604 /* StatsPageViewController.m */, 61F2E7CB1205EDE0005734F7 /* AboutViewController.h */, 61F2E7CC1205EDE0005734F7 /* AboutViewController.m */, 61F2E7CD1205EDE0005734F7 /* AboutViewController.xib */, @@ -1244,10 +1318,6 @@ 6163EE7D11CC2600001C0453 /* SingleWeaponViewController.m */, 616591FE11CA9BA200D6E256 /* SingleSchemeViewController.h */, 616591FF11CA9BA200D6E256 /* SingleSchemeViewController.m */, - 61C079E211F35A300072BF46 /* EditableCellView.h */, - 61C079E311F35A300072BF46 /* EditableCellView.m */, - 61F904D511DF7DA30068B24D /* WeaponCellView.h */, - 61F904D611DF7DA30068B24D /* WeaponCellView.m */, ); name = "Second Level"; sourceTree = "<group>"; @@ -1291,17 +1361,24 @@ name = Overlay; sourceTree = "<group>"; }; + 6172554F12B3DCEE0098D069 /* Products */ = { + isa = PBXGroup; + children = ( + 6172555512B3DCEE0098D069 /* Lua.app */, + 6172555712B3DCEE0098D069 /* libcocos2d libraries.a */, + 6172555912B3DCEE0098D069 /* libLua.a */, + ); + name = Products; + sourceTree = "<group>"; + }; 61798892114AA56300BA94A9 /* inc */ = { isa = PBXGroup; children = ( 61798852114AA44900BA94A9 /* config.inc */, 617987EB114AA34C00BA94A9 /* options.inc */, - 618736B8118CA28600123B23 /* GearDrawing.inc */, - 617987E1114AA34C00BA94A9 /* CCHandlers.inc */, 617987E4114AA34C00BA94A9 /* GSHandlers.inc */, 617987E5114AA34C00BA94A9 /* HHHandlers.inc */, 614E333D11DE9A93009DBA4E /* VGSHandlers.inc */, - 617987F0114AA34C00BA94A9 /* SinTable.inc */, ); name = inc; sourceTree = "<group>"; @@ -1323,14 +1400,6 @@ name = Products; sourceTree = "<group>"; }; - 617989B4114AB47500BA94A9 /* Products */ = { - isa = PBXGroup; - children = ( - 617989BB114AB47500BA94A9 /* libSDL_net.a */, - ); - name = Products; - sourceTree = "<group>"; - }; 61798A0C114AB65600BA94A9 /* Products */ = { isa = PBXGroup; children = ( @@ -1342,55 +1411,69 @@ 6179936611501D1E00BA94A9 /* Overlay */ = { isa = PBXGroup; children = ( - 611DA1CF124E5C6300008271 /* plus.png */, - 611DA030124E2BC500008271 /* mediumBackground~ipad.png */, 611E0EE511FB20610077A41E /* ammoButton.png */, + 6103D399129B350700911D8D /* ammoButton@2x.png */, 611E0EE611FB20610077A41E /* cornerButton.png */, + 6103D39E129B350700911D8D /* cornerButton@2x.png */, 61EF920511DF57AC003441C4 /* arrowDown.png */, + 6103D39A129B350700911D8D /* arrowDown@2x.png */, 61EF920611DF57AC003441C4 /* arrowLeft.png */, + 6103D39B129B350700911D8D /* arrowLeft@2x.png */, 61EF920711DF57AC003441C4 /* arrowRight.png */, + 6103D39C129B350700911D8D /* arrowRight@2x.png */, 61EF920811DF57AC003441C4 /* arrowUp.png */, - 614AE659127D090A0070BF5F /* smallerBackground@2x-iphone.png */, - 614AE65A127D090A0070BF5F /* smallerBackground~ipad.png */, - 614AE65B127D090A0070BF5F /* smallerBackground~iphone.png */, - 61EF920911DF57AC003441C4 /* joyButton_attack.png */, - 61EF920A11DF57AC003441C4 /* joyButton_backjump.png */, - 61EF920B11DF57AC003441C4 /* joyButton_forwardjump.png */, + 6103D39D129B350700911D8D /* arrowUp@2x.png */, + 61EF920911DF57AC003441C4 /* joyButtonAttack.png */, + 6103D392129B34E900911D8D /* joyButtonAttack@2x.png */, + 61EF920A11DF57AC003441C4 /* joyButtonBackJump.png */, + 6103D393129B34E900911D8D /* joyButtonBackJump@2x.png */, + 61EF920B11DF57AC003441C4 /* joyButtonForwardJump.png */, + 6103D394129B34E900911D8D /* joyButtonForwardJump@2x.png */, ); name = Overlay; sourceTree = "<group>"; }; - 619C5AC1124F7DDF00D041AE /* Products */ = { + 618E27B712A2C30700C20EF0 /* Products */ = { isa = PBXGroup; children = ( - 619C5ACA124F7DDF00D041AE /* Lua.app */, - 619C5ACC124F7DDF00D041AE /* libcocos2d libraries.a */, - 619C5ACE124F7DDF00D041AE /* libLua.a */, + 618E27BB12A2C30700C20EF0 /* libSDL_net.a */, ); name = Products; sourceTree = "<group>"; }; - 61DE91561258B76800B80214 /* Custom Buttons */ = { + 61DE91561258B76800B80214 /* Custom UIs */ = { isa = PBXGroup; children = ( - 6165922711CA9BD500D6E256 /* HogButtonView.h */, - 6165922811CA9BD500D6E256 /* HogButtonView.m */, + 619C5BA0124FA59000D041AE /* MapPreviewButtonView.h */, + 619C5BA1124FA59000D041AE /* MapPreviewButtonView.m */, + 61F544C512AF1748007FD913 /* HoldTableViewCell.h */, + 61F544C612AF1748007FD913 /* HoldTableViewCell.m */, 6165922A11CA9BD500D6E256 /* SquareButtonView.h */, 6165922B11CA9BD500D6E256 /* SquareButtonView.m */, - 619C5BA0124FA59000D041AE /* MapPreviewButtonView.h */, - 619C5BA1124FA59000D041AE /* MapPreviewButtonView.m */, + 61C079E211F35A300072BF46 /* EditableCellView.h */, + 61C079E311F35A300072BF46 /* EditableCellView.m */, + 61F904D511DF7DA30068B24D /* WeaponCellView.h */, + 61F904D611DF7DA30068B24D /* WeaponCellView.m */, ); - name = "Custom Buttons"; + name = "Custom UIs"; sourceTree = "<group>"; }; 61F7A42811E2905C0040BA66 /* Icons */ = { isa = PBXGroup; children = ( + 611DA1CF124E5C6300008271 /* plus.png */, + 6103D413129B417500911D8D /* plus@2x.png */, + 61F2E7EB12060E31005734F7 /* checkbox.png */, + 615FEAD912A2A4C10098EE92 /* checkbox@2x.png */, 61D3D2A41290E03A003CE7C3 /* irc.png */, + 6103D384129B347700911D8D /* irc@2x.png */, 61E2F7421283752C00E12521 /* fb.png */, + 6103D383129B346A00911D8D /* fb@2x.png */, 61E2F7431283752C00E12521 /* tw.png */, + 6103D385129B348200911D8D /* tw@2x.png */, 6183D83C11E2BCE200A88903 /* Default-ipad-Landscape.png */, 6183D83D11E2BCE200A88903 /* Default.png */, + 6172FEA21298C7F900D73365 /* Default@2x.png */, 61F7A43111E290650040BA66 /* Icon-72.png */, 61F7A43211E290650040BA66 /* Icon-Small-50.png */, 61F7A43311E290650040BA66 /* Icon-Small.png */, @@ -1405,19 +1488,30 @@ 61F903FA11DF58680068B24D /* Frontend */ = { isa = PBXGroup; children = ( - 619C09E911E8B8D600F1DF16 /* title_small.png */, - 61808A6E128C94E1005D0E2F /* backgroundTop.png */, - 61F903E511DF58550068B24D /* backgroundCenter.png */, - 61F903E911DF58550068B24D /* borderBottom.png */, - 615AD96112073B4D00F2FF04 /* startGameButton.png */, + 6147DAD21253DCDE0010357E /* savesButton.png */, + 6172FEC81298CE4800D73365 /* savesButton@2x.png */, + 61F9040811DF58B00068B24D /* settingsButton.png */, + 6172FECA1298CE4E00D73365 /* settingsButton@2x.png */, 615AD9EA1207654E00F2FF04 /* helpButton.png */, 615AD9E8120764CA00F2FF04 /* backButton.png */, - 61808A4A128C901B005D0E2F /* startButton.png */, + 6172FED31298CE6600D73365 /* backButton@2x.png */, + 615AD96112073B4D00F2FF04 /* startGameButton.png */, + 615FEADE12A2A6640098EE92 /* localplayButton@2x~iphone.png */, + 615FEAE012A2A6640098EE92 /* localplayButton~iphone.png */, + 615FEADF12A2A6640098EE92 /* localplayButton~ipad.png */, + 61F9040D11DF59D10068B24D /* netplayButton.png */, 61EBA62811DFF2BC0048B68A /* title.png */, - 61F9040C11DF59D10068B24D /* localplayButton.png */, - 61F9040D11DF59D10068B24D /* netplayButton.png */, + 618899811299516000D55FD6 /* title@2x.png */, + 61889984129995B500D55FD6 /* title~ipad.png */, + 6174F7C612CD62E300205D6F /* smallerTitle.png */, + 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */, 61F9040A11DF59370068B24D /* background.png */, - 61EBA62C11DFF3310048B68A /* backgroundAndTitle.png */, + 6172FED61298CF9800D73365 /* background@2x~iphone.png */, + 6172FED71298CF9800D73365 /* background~iphone.png */, + 6172FEEB1298D25D00D73365 /* mediumBackground~ipad.png */, + 6172FEEC1298D25D00D73365 /* smallerBackground@2x~iphone.png */, + 6172FEEE1298D25D00D73365 /* smallerBackground~iphone.png */, + 6172FEED1298D25D00D73365 /* smallerBackground~ipad.png */, ); name = Frontend; sourceTree = "<group>"; @@ -1425,6 +1519,19 @@ 9283015C0F10E48900CC5A3C /* Pascal Sources */ = { isa = PBXGroup; children = ( + 61E5D68C12AB006F00566F29 /* uLandPainted.pas */, + 61A4A3A112A5CD56004D81E6 /* uCaptions.pas */, + 61A4A38912A5CCC2004D81E6 /* uCommandHandlers.pas */, + 61A4A38A12A5CCC2004D81E6 /* uCommands.pas */, + 61A4A38B12A5CCC2004D81E6 /* uDebug.pas */, + 61A4A38C12A5CCC2004D81E6 /* uGearsRender.pas */, + 61A4A38D12A5CCC2004D81E6 /* uRender.pas */, + 61A4A38E12A5CCC2004D81E6 /* uRenderUtils.pas */, + 61A4A38F12A5CCC2004D81E6 /* uSinTable.pas */, + 61A4A39012A5CCC2004D81E6 /* uTextures.pas */, + 61A4A39112A5CCC2004D81E6 /* uTypes.pas */, + 61A4A39212A5CCC2004D81E6 /* uUtils.pas */, + 61A4A39312A5CCC2004D81E6 /* uVariables.pas */, 61399012125D19C0003C2DC0 /* uMobile.pas */, 619C5AF3124F7E3100D041AE /* LuaPas.pas */, 61798892114AA56300BA94A9 /* inc */, @@ -1534,8 +1641,8 @@ ProjectRef = 611E0E4B11FA92130077A41E /* freetype.xcodeproj */; }, { - ProductGroup = 619C5AC1124F7DDF00D041AE /* Products */; - ProjectRef = 619C5AC0124F7DDF00D041AE /* Lua.xcodeproj */; + ProductGroup = 6172554F12B3DCEE0098D069 /* Products */; + ProjectRef = 6172554E12B3DCEE0098D069 /* Lua.xcodeproj */; }, { ProductGroup = 6127232F117DF752005B90CF /* Products */; @@ -1546,8 +1653,8 @@ ProjectRef = 6179898B114AB3FA00BA94A9 /* SDL_mixer.xcodeproj */; }, { - ProductGroup = 617989B4114AB47500BA94A9 /* Products */; - ProjectRef = 617989B3114AB47500BA94A9 /* SDL_net.xcodeproj */; + ProductGroup = 618E27B712A2C30700C20EF0 /* Products */; + ProjectRef = 618E27B612A2C30700C20EF0 /* SDL_net.xcodeproj */; }, { ProductGroup = 61798A0C114AB65600BA94A9 /* Products */; @@ -2030,6 +2137,27 @@ remoteRef = 61272332117DF752005B90CF /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 6172555512B3DCEE0098D069 /* Lua.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = Lua.app; + remoteRef = 6172555412B3DCEE0098D069 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6172555712B3DCEE0098D069 /* libcocos2d libraries.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libcocos2d libraries.a"; + remoteRef = 6172555612B3DCEE0098D069 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6172555912B3DCEE0098D069 /* libLua.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libLua.a; + remoteRef = 6172555812B3DCEE0098D069 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 617988DA114AAA3900BA94A9 /* libSDLiPhoneOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -2044,13 +2172,6 @@ remoteRef = 61798992114AB3FA00BA94A9 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 617989BB114AB47500BA94A9 /* libSDL_net.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSDL_net.a; - remoteRef = 617989BA114AB47500BA94A9 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 61798A13114AB65600BA94A9 /* libSDL_ttf.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -2065,25 +2186,11 @@ remoteRef = 6184608B11DA8BF3000E1314 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 619C5ACA124F7DDF00D041AE /* Lua.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = Lua.app; - remoteRef = 619C5AC9124F7DDF00D041AE /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 619C5ACC124F7DDF00D041AE /* libcocos2d libraries.a */ = { + 618E27BB12A2C30700C20EF0 /* libSDL_net.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = "libcocos2d libraries.a"; - remoteRef = 619C5ACB124F7DDF00D041AE /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 619C5ACE124F7DDF00D041AE /* libLua.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libLua.a; - remoteRef = 619C5ACD124F7DDF00D041AE /* PBXContainerItemProxy */; + path = libSDL_net.a; + remoteRef = 618E27BA12A2C30700C20EF0 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -2094,8 +2201,6 @@ buildActionMask = 2147483647; files = ( 61536DF411CEAE7100D87A7E /* GameConfigViewController.xib in Resources */, - 61A118D311683CD100359010 /* HedgewarsTitle.png in Resources */, - 61799289114AE08700BA94A9 /* Data in Resources */, 61370653117B1D50004EE44A /* Entitlements-Distribution.plist in Resources */, 611E12FF117BBBDA0044B62F /* Entitlements-Development.plist in Resources */, 6165925311CA9CB400D6E256 /* MainMenuViewController-iPad.xib in Resources */, @@ -2105,20 +2210,17 @@ 61EF920F11DF57AC003441C4 /* arrowLeft.png in Resources */, 61EF921011DF57AC003441C4 /* arrowRight.png in Resources */, 61EF921111DF57AC003441C4 /* arrowUp.png in Resources */, - 61EF921211DF57AC003441C4 /* joyButton_attack.png in Resources */, - 61EF921311DF57AC003441C4 /* joyButton_backjump.png in Resources */, - 61EF921411DF57AC003441C4 /* joyButton_forwardjump.png in Resources */, + 61EF921211DF57AC003441C4 /* joyButtonAttack.png in Resources */, + 61EF921311DF57AC003441C4 /* joyButtonBackJump.png in Resources */, + 61EF921411DF57AC003441C4 /* joyButtonForwardJump.png in Resources */, 61F9040911DF58B00068B24D /* settingsButton.png in Resources */, 61F9040B11DF59370068B24D /* background.png in Resources */, - 61F9040E11DF59D10068B24D /* localplayButton.png in Resources */, 61EBA62A11DFF2BC0048B68A /* title.png in Resources */, - 61EBA62D11DFF3310048B68A /* backgroundAndTitle.png in Resources */, 61F7A43811E290650040BA66 /* Icon-72.png in Resources */, 61F7A43911E290650040BA66 /* Icon-Small-50.png in Resources */, 61F7A43A11E290650040BA66 /* Icon-Small.png in Resources */, 61F7A43C11E290650040BA66 /* Icon.png in Resources */, 61F7A43E11E290650040BA66 /* iTunesArtwork.png in Resources */, - 6183D83E11E2BCE200A88903 /* Default-ipad-Landscape.png in Resources */, 6129B9F711EFB04D0017E305 /* denied.png in Resources */, 611E0EE711FB20610077A41E /* ammoButton.png in Resources */, 611E0EE811FB20610077A41E /* cornerButton.png in Resources */, @@ -2140,27 +2242,53 @@ 61842B40122B66280096E335 /* helpleft.png in Resources */, 6199E86D12464A8E00DADF8C /* surprise.png in Resources */, 611D9BFC12497E9800008271 /* SavedGamesViewController.xib in Resources */, - 611DA031124E2BC500008271 /* mediumBackground~ipad.png in Resources */, 611DA1D0124E5C6300008271 /* plus.png in Resources */, 6147DAD31253DCDE0010357E /* savesButton.png in Resources */, 610D5FB21270E2660033333A /* Icon-Small@2x.png in Resources */, 610D5FB31270E26C0033333A /* Icon@2x.png in Resources */, - 61A670BE12747D8900B06CE7 /* borderBottom.png in Resources */, 61A670C012747D9B00B06CE7 /* Default.png in Resources */, 61A670C112747DB900B06CE7 /* MainMenuViewController-iPhone.xib in Resources */, 61A670C212747DBD00B06CE7 /* MapConfigViewController-iPhone.xib in Resources */, - 61A670FB12747E0D00B06CE7 /* title_small.png in Resources */, - 61A6710612747E4000B06CE7 /* backgroundCenter.png in Resources */, - 614AE65D127D090A0070BF5F /* smallerBackground~ipad.png in Resources */, - 614AE65E127D090A0070BF5F /* smallerBackground~iphone.png in Resources */, 61E2F7441283752C00E12521 /* fb.png in Resources */, 61E2F7451283752C00E12521 /* tw.png in Resources */, 61DF0EDC1284DF2300F3F10B /* HelpPageLobbyViewController-iPhone.xib in Resources */, 61DF0F211284F72A00F3F10B /* HelpPageInGameViewController-iPhone.xib in Resources */, - 61808A4B128C901B005D0E2F /* startButton.png in Resources */, 61808A5D128C930A005D0E2F /* backSound.wav in Resources */, - 61808A6F128C94E1005D0E2F /* backgroundTop.png in Resources */, 61D3D2A51290E03A003CE7C3 /* irc.png in Resources */, + 6172FED91298CF9800D73365 /* background~iphone.png in Resources */, + 6172FEEF1298D25D00D73365 /* mediumBackground~ipad.png in Resources */, + 6172FEF11298D25D00D73365 /* smallerBackground~ipad.png in Resources */, + 6172FEF21298D25D00D73365 /* smallerBackground~iphone.png in Resources */, + 61889985129995B500D55FD6 /* title~ipad.png in Resources */, + 6103D414129B417500911D8D /* plus@2x.png in Resources */, + 615FEAE212A2A6640098EE92 /* localplayButton~ipad.png in Resources */, + 615FEAE312A2A6640098EE92 /* localplayButton~iphone.png in Resources */, + 61188BF212A6FE530026C5DA /* ammoButton@2x.png in Resources */, + 61188BF312A6FE540026C5DA /* arrowDown@2x.png in Resources */, + 61188BF412A6FE560026C5DA /* arrowLeft@2x.png in Resources */, + 61188BF512A6FE570026C5DA /* arrowRight@2x.png in Resources */, + 61188BF612A6FE590026C5DA /* arrowUp@2x.png in Resources */, + 61188BF712A6FE5A0026C5DA /* backButton@2x.png in Resources */, + 61188BF812A6FE5C0026C5DA /* background@2x~iphone.png in Resources */, + 61188BF912A6FE5D0026C5DA /* checkbox@2x.png in Resources */, + 61188BFA12A6FE5E0026C5DA /* cornerButton@2x.png in Resources */, + 61188BFB12A6FE610026C5DA /* Default-ipad-Landscape.png in Resources */, + 61188BFC12A6FE630026C5DA /* Default@2x.png in Resources */, + 61188BFD12A6FE730026C5DA /* fb@2x.png in Resources */, + 61188BFE12A6FE7C0026C5DA /* irc@2x.png in Resources */, + 61188BFF12A6FE7E0026C5DA /* joyButtonAttack@2x.png in Resources */, + 61188C0012A6FE810026C5DA /* joyButtonBackJump@2x.png in Resources */, + 61188C0112A6FE820026C5DA /* joyButtonForwardJump@2x.png in Resources */, + 61188C0212A6FE840026C5DA /* localplayButton@2x~iphone.png in Resources */, + 61188C0312A6FE860026C5DA /* netplayButton.png in Resources */, + 61188C0412A6FE880026C5DA /* savesButton@2x.png in Resources */, + 61188C0512A6FE8F0026C5DA /* Data in Resources */, + 61188C0612A6FE950026C5DA /* smallerBackground@2x~iphone.png in Resources */, + 61188C0712A6FE960026C5DA /* settingsButton@2x.png in Resources */, + 61188C0812A6FE9A0026C5DA /* title@2x.png in Resources */, + 61188C0912A6FE9C0026C5DA /* tw@2x.png in Resources */, + 6174F7C812CD62E300205D6F /* smallerTitle.png in Resources */, + 6174F7C912CD62E300205D6F /* smallerTitle@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2178,7 +2306,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\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 *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\n\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\n#the following ones must be removed\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace} ${PROJECT_DIR}/Data/Missions/Maps/\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n"; + shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\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 *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\n#the following ones must be removed\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace,CTF_Blizzard,Control} ${PROJECT_DIR}/Data/Missions/Maps/\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n"; showEnvVarsInLog = 0; }; 9283011B0F10CB2D00CC5A3C /* Build libfpc.a */ = { @@ -2275,7 +2403,6 @@ 6165922211CA9BA200D6E256 /* WeaponSettingsViewController.m in Sources */, 6165922E11CA9BD500D6E256 /* CGPointUtils.c in Sources */, 6165922F11CA9BD500D6E256 /* CommodityFunctions.m in Sources */, - 6165923011CA9BD500D6E256 /* HogButtonView.m in Sources */, 6165923111CA9BD500D6E256 /* SquareButtonView.m in Sources */, 6165923211CA9BD500D6E256 /* UIImageExtra.m in Sources */, 6165929E11CA9E2F00D6E256 /* SDL_uikitappdelegate.m in Sources */, @@ -2294,6 +2421,23 @@ 61399013125D19C0003C2DC0 /* uMobile.pas in Sources */, 61D205A1127CDD1100ABD83E /* ObjcExports.m in Sources */, 61006F95128DE31F00EBA7F7 /* CreationChamber.m in Sources */, + 61A4A39412A5CCC2004D81E6 /* uCommandHandlers.pas in Sources */, + 61A4A39512A5CCC2004D81E6 /* uCommands.pas in Sources */, + 61A4A39612A5CCC2004D81E6 /* uDebug.pas in Sources */, + 61A4A39712A5CCC2004D81E6 /* uGearsRender.pas in Sources */, + 61A4A39812A5CCC2004D81E6 /* uRender.pas in Sources */, + 61A4A39912A5CCC2004D81E6 /* uRenderUtils.pas in Sources */, + 61A4A39A12A5CCC2004D81E6 /* uSinTable.pas in Sources */, + 61A4A39B12A5CCC2004D81E6 /* uTextures.pas in Sources */, + 61A4A39C12A5CCC2004D81E6 /* uTypes.pas in Sources */, + 61A4A39D12A5CCC2004D81E6 /* uUtils.pas in Sources */, + 61A4A39E12A5CCC2004D81E6 /* uVariables.pas in Sources */, + 61A4A3A212A5CD56004D81E6 /* uCaptions.pas in Sources */, + 61E5D68D12AB006F00566F29 /* uLandPainted.pas in Sources */, + 61F544C712AF1748007FD913 /* HoldTableViewCell.m in Sources */, + 61AC067412B2E32D000B52A2 /* Appirater.m in Sources */, + 61E2E12E12BAAEE30051B659 /* ServerSetup.m in Sources */, + 61B7A33812CC21080086B604 /* StatsPageViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2362,8 +2506,8 @@ buildSettings = { APPLY_RULES_IN_COPY_FILES = YES; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Distribution: Vittorio Giovara"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Vittorio Giovara"; + CODE_SIGN_IDENTITY = "Don't Code Sign"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign"; FPC_COMMON_OPTIONS = "-dIPHONEOS -Cs2000000 -vwi -B -Sgix"; FPC_COMPILER_BINARY_DIR = /usr/local/lib/fpc/2.5.1; FPC_MAIN_FILE = "$(PROJECT_DIR)/../../hedgewars/hwLibrary.pas"; @@ -2389,13 +2533,14 @@ ); IPHONEOS_DEPLOYMENT_TARGET = 3.1; ONLY_ACTIVE_ARCH = NO; + OTHER_CODE_SIGN_FLAGS = ""; OTHER_LDFLAGS = ( "-lz", "-Wl,-no_order_inits", ); PREBINDING = NO; - PROVISIONING_PROFILE = "450C4020-346A-4F44-8DDE-E71300796C94"; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "450C4020-346A-4F44-8DDE-E71300796C94"; + PROVISIONING_PROFILE = ""; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -2699,7 +2844,7 @@ GCC_PREPROCESSOR_DEFINITIONS = DEBUG; GCC_STRICT_ALIASING = YES; GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = (
--- a/project_files/HedgewarsMobile/Info.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Info.plist Tue Jan 04 12:53:46 2011 +0100 @@ -28,11 +28,9 @@ <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> - <string>1.2</string> + <string>1.2.2</string> <key>LSRequiresIPhoneOS</key> <true/> - <key>UIApplicationExitsOnSuspend</key> - <true/> <key>UILaunchImageFile~ipad</key> <string>Default-ipad</string> <key>UIStatusBarHidden</key>
Binary file project_files/HedgewarsMobile/Resources/Frontend-iPad/backgroundAndTitle.png has changed
Binary file project_files/HedgewarsMobile/Resources/Frontend-iPhone/backgroundCenter.png has changed
Binary file project_files/HedgewarsMobile/Resources/Frontend/localplayButton@2x~iphone.png has changed
Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground@2x~iphone.png has changed
Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~iphone.png has changed
--- a/project_files/HedgewarsMobile/Resources/GameConfigViewController.xib Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/GameConfigViewController.xib Tue Jan 04 12:53:46 2011 +0100 @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> <data> - <int key="IBDocument.SystemTarget">1024</int> + <int key="IBDocument.SystemTarget">1056</int> <string key="IBDocument.SystemVersion">10H574</string> - <string key="IBDocument.InterfaceBuilderVersion">804</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> <string key="IBDocument.AppKitVersion">1038.35</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">123</string> + <string key="NS.object.0">132</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -50,7 +50,7 @@ <object class="IBUISegmentedControl" id="563596142"> <reference key="NSNextResponder" ref="836721772"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{87, 8}, {265, 30}}</string> + <string key="NSFrame">{{96, 8}, {269, 30}}</string> <reference key="NSSuperview" ref="836721772"/> <bool key="IBUIOpaque">NO</bool> <int key="IBUITag">12345</int> @@ -120,7 +120,6 @@ </object> <object class="IBUIBarButtonItem" id="530186890"> <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> - <float key="IBUIWidth">265</float> <reference key="IBUICustomView" ref="563596142"/> <reference key="IBUIToolbar" ref="836721772"/> </object> @@ -131,9 +130,9 @@ </object> <object class="IBUIBarButtonItem" id="919181414"> <int key="IBUITag">1</int> - <string key="IBUITitle">Start Game</string> + <string key="IBUITitle">Start</string> <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> - <float key="IBUIWidth">90</float> + <float key="IBUIWidth">68</float> <int key="IBUIStyle">2</int> <reference key="IBUIToolbar" ref="836721772"/> </object> @@ -535,6 +534,13 @@ <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> @@ -588,7 +594,7 @@ <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="1024" key="NS.object.0"/> + <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> @@ -597,6 +603,6 @@ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> <string key="IBDocument.LastKnownRelativeProjectPath">../Hedgewars.xcodeproj</string> <int key="IBDocument.defaultPropertyAccessControl">3</int> - <string key="IBCocoaTouchPluginVersion">123</string> + <string key="IBCocoaTouchPluginVersion">132</string> </data> </archive>
--- a/project_files/HedgewarsMobile/Resources/HelpPageInGameViewController-iPhone.xib Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/HelpPageInGameViewController-iPhone.xib Tue Jan 04 12:53:46 2011 +0100 @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> <data> - <int key="IBDocument.SystemTarget">1024</int> - <string key="IBDocument.SystemVersion">10F569</string> - <string key="IBDocument.InterfaceBuilderVersion">804</string> - <string key="IBDocument.AppKitVersion">1038.29</string> + <int key="IBDocument.SystemTarget">1056</int> + <string key="IBDocument.SystemVersion">10H574</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> + <string key="IBDocument.AppKitVersion">1038.35</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">123</string> + <string key="NS.object.0">132</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -42,42 +42,16 @@ <int key="NSvFlags">292</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUIScrollView" id="400316535"> + <object class="IBUIScrollView" id="480371523"> <reference key="NSNextResponder" ref="766721923"/> <int key="NSvFlags">274</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUILabel" id="827961215"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="806535969"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{13, 3}, {440, 30}}</string> - <reference key="NSSuperview" ref="400316535"/> - <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 various game elements.</string> - <object class="NSFont" key="IBUIFont"> - <string key="NSName">Helvetica-Oblique</string> - <double key="NSSize">16</double> - <int key="NSfFlags">16</int> - </object> - <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> - <object class="IBUILabel" id="337977618"> - <reference key="NSNextResponder" ref="400316535"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 311}, {150, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 283}, {150, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -89,16 +63,19 @@ <double key="NSSize">18</double> <int key="NSfFlags">16</int> </object> - <reference key="IBUITextColor" ref="283637272"/> + <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> </object> - <object class="IBUILabel" id="451019636"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="837055082"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 320}, {203, 85}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 292}, {203, 85}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -116,11 +93,11 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUINumberOfLines">0</int> </object> - <object class="IBUILabel" id="408507086"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="669645325"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 41}, {186, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 13}, {186, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -133,11 +110,11 @@ <int key="IBUIBaselineAdjustment">1</int> <float key="IBUIMinimumFontSize">10</float> </object> - <object class="IBUILabel" id="904797875"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="392421036"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 62}, {187, 43}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 34}, {187, 43}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -151,17 +128,17 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUINumberOfLines">0</int> </object> - <object class="IBUILabel" id="549219303"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="709427542"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{217, 336}, {243, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{217, 308}, {243, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <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">Pinch to return</string> + <string key="IBUIText">Touch interface</string> <reference key="IBUIFont" ref="583365693"/> <reference key="IBUITextColor" ref="283637272"/> <nil key="IBUIHighlightedColor"/> @@ -169,11 +146,11 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUITextAlignment">2</int> </object> - <object class="IBUILabel" id="430607879"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="748437184"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{231, 356}, {229, 87}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{231, 328}, {229, 87}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -188,11 +165,11 @@ <int key="IBUINumberOfLines">0</int> <int key="IBUITextAlignment">2</int> </object> - <object class="IBUILabel" id="56917735"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="941791832"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 113}, {186, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 85}, {186, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -205,11 +182,11 @@ <int key="IBUIBaselineAdjustment">1</int> <float key="IBUIMinimumFontSize">10</float> </object> - <object class="IBUILabel" id="147310378"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="26100154"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 129}, {191, 63}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 101}, {191, 63}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -223,11 +200,11 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUINumberOfLines">0</int> </object> - <object class="IBUILabel" id="323195165"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="413836006"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 200}, {203, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 172}, {203, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -240,11 +217,11 @@ <int key="IBUIBaselineAdjustment">1</int> <float key="IBUIMinimumFontSize">10</float> </object> - <object class="IBUILabel" id="1047547119"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="579557686"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 219}, {203, 85}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{20, 191}, {203, 85}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -258,11 +235,11 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUINumberOfLines">4</int> </object> - <object class="IBUILabel" id="160523547"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="740577465"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{274, 41}, {186, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{274, 13}, {186, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -276,11 +253,11 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUITextAlignment">2</int> </object> - <object class="IBUILabel" id="341620427"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="347724774"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{273, 63}, {187, 43}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{273, 35}, {187, 43}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -295,11 +272,11 @@ <int key="IBUINumberOfLines">0</int> <int key="IBUITextAlignment">2</int> </object> - <object class="IBUILabel" id="869619534"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="318624215"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{351, 110}, {109, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{351, 82}, {109, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -313,11 +290,11 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUITextAlignment">2</int> </object> - <object class="IBUILabel" id="16268121"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="145842014"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{246, 133}, {214, 84}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{246, 105}, {214, 84}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -332,11 +309,11 @@ <int key="IBUINumberOfLines">0</int> <int key="IBUITextAlignment">2</int> </object> - <object class="IBUILabel" id="577051094"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="415037922"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{325, 225}, {135, 22}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{325, 197}, {135, 22}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -350,11 +327,11 @@ <float key="IBUIMinimumFontSize">10</float> <int key="IBUITextAlignment">2</int> </object> - <object class="IBUILabel" id="420793299"> - <reference key="NSNextResponder" ref="400316535"/> + <object class="IBUILabel" id="499026341"> + <reference key="NSNextResponder" ref="480371523"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{249, 245}, {211, 85}}</string> - <reference key="NSSuperview" ref="400316535"/> + <string key="NSFrame">{{249, 217}, {211, 85}}</string> + <reference key="NSSuperview" ref="480371523"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> <int key="IBUIContentMode">7</int> @@ -370,13 +347,34 @@ <int key="IBUITextAlignment">2</int> </object> </object> - <string key="NSFrameSize">{480, 320}</string> + <string key="NSFrame">{{-5, 44}, {489, 332}}</string> <reference key="NSSuperview" ref="766721923"/> <bool key="IBUIClipsSubviews">YES</bool> <bool key="IBUIMultipleTouchEnabled">YES</bool> <int key="IBUITag">1</int> <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> </object> + <object class="IBUINavigationBar" id="126317414"> + <reference key="NSNextResponder" ref="766721923"/> + <int key="NSvFlags">290</int> + <string key="NSFrame">{{-1, 0}, {481, 44}}</string> + <reference key="NSSuperview" ref="766721923"/> + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> + <object class="NSArray" key="IBUIItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBUINavigationItem" id="477618874"> + <reference key="IBUINavigationBar" ref="126317414"/> + <string key="IBUITitle">Help page</string> + <object class="IBUIBarButtonItem" key="IBUILeftBarButtonItem" id="843591489"> + <string key="IBUITitle">Back</string> + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> + <int key="IBUIStyle">1</int> + <reference key="IBUINavigationItem" ref="477618874"/> + </object> + <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> + </object> + </object> + </object> </object> <string key="NSFrameSize">{480, 320}</string> <reference key="NSSuperview"/> @@ -403,12 +401,20 @@ <int key="connectionID">3</int> </object> <object class="IBConnectionRecord"> + <object class="IBCocoaTouchEventConnection" key="connection"> + <string key="label">dismiss</string> + <reference key="source" ref="843591489"/> + <reference key="destination" ref="841351856"/> + </object> + <int key="connectionID">141</int> + </object> + <object class="IBConnectionRecord"> <object class="IBCocoaTouchOutletConnection" key="connection"> <string key="label">scrollView</string> <reference key="source" ref="841351856"/> - <reference key="destination" ref="400316535"/> + <reference key="destination" ref="480371523"/> </object> - <int key="connectionID">115</int> + <int key="connectionID">142</int> </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> @@ -436,119 +442,137 @@ <reference key="object" ref="766721923"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="400316535"/> + <reference ref="126317414"/> + <reference ref="480371523"/> </object> <reference key="parent" ref="0"/> </object> <object class="IBObjectRecord"> - <int key="objectID">97</int> - <reference key="object" ref="400316535"/> + <int key="objectID">118</int> + <reference key="object" ref="126317414"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="477618874"/> + </object> + <reference key="parent" ref="766721923"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">121</int> + <reference key="object" ref="480371523"/> <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="420793299"/> - <reference ref="577051094"/> - <reference ref="16268121"/> - <reference ref="869619534"/> - <reference ref="341620427"/> - <reference ref="160523547"/> - <reference ref="430607879"/> - <reference ref="1047547119"/> - <reference ref="323195165"/> - <reference ref="451019636"/> - <reference ref="337977618"/> - <reference ref="147310378"/> - <reference ref="56917735"/> - <reference ref="408507086"/> - <reference ref="904797875"/> - <reference ref="827961215"/> - <reference ref="549219303"/> + <reference ref="709427542"/> + <reference ref="392421036"/> + <reference ref="669645325"/> + <reference ref="941791832"/> + <reference ref="26100154"/> + <reference ref="806535969"/> + <reference ref="837055082"/> + <reference ref="413836006"/> + <reference ref="579557686"/> + <reference ref="748437184"/> + <reference ref="740577465"/> + <reference ref="347724774"/> + <reference ref="318624215"/> + <reference ref="145842014"/> + <reference ref="415037922"/> + <reference ref="499026341"/> </object> <reference key="parent" ref="766721923"/> </object> <object class="IBObjectRecord"> - <int key="objectID">98</int> - <reference key="object" ref="420793299"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">122</int> + <reference key="object" ref="709427542"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">99</int> - <reference key="object" ref="577051094"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">124</int> + <reference key="object" ref="392421036"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">100</int> - <reference key="object" ref="16268121"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">125</int> + <reference key="object" ref="669645325"/> + <reference key="parent" ref="480371523"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">126</int> + <reference key="object" ref="941791832"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">101</int> - <reference key="object" ref="869619534"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">127</int> + <reference key="object" ref="26100154"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">102</int> - <reference key="object" ref="341620427"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">128</int> + <reference key="object" ref="806535969"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">103</int> - <reference key="object" ref="160523547"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">129</int> + <reference key="object" ref="837055082"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">104</int> - <reference key="object" ref="430607879"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">130</int> + <reference key="object" ref="413836006"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">105</int> - <reference key="object" ref="1047547119"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">131</int> + <reference key="object" ref="579557686"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">106</int> - <reference key="object" ref="323195165"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">132</int> + <reference key="object" ref="748437184"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">107</int> - <reference key="object" ref="451019636"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">133</int> + <reference key="object" ref="740577465"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">108</int> - <reference key="object" ref="337977618"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">134</int> + <reference key="object" ref="347724774"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">109</int> - <reference key="object" ref="147310378"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">135</int> + <reference key="object" ref="318624215"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">110</int> - <reference key="object" ref="56917735"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">136</int> + <reference key="object" ref="145842014"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">111</int> - <reference key="object" ref="408507086"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">137</int> + <reference key="object" ref="415037922"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">112</int> - <reference key="object" ref="904797875"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">138</int> + <reference key="object" ref="499026341"/> + <reference key="parent" ref="480371523"/> </object> <object class="IBObjectRecord"> - <int key="objectID">113</int> - <reference key="object" ref="827961215"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">119</int> + <reference key="object" ref="477618874"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="843591489"/> + </object> + <reference key="parent" ref="126317414"/> </object> <object class="IBObjectRecord"> - <int key="objectID">114</int> - <reference key="object" ref="549219303"/> - <reference key="parent" ref="400316535"/> + <int key="objectID">140</int> + <reference key="object" ref="843591489"/> + <reference key="parent" ref="477618874"/> </object> </object> </object> @@ -558,46 +582,48 @@ <bool key="EncodedWithXMLCoder">YES</bool> <string>-1.CustomClassName</string> <string>-2.CustomClassName</string> - <string>100.IBPluginDependency</string> - <string>100.IBViewBoundsToFrameTransform</string> - <string>101.IBPluginDependency</string> - <string>101.IBViewBoundsToFrameTransform</string> - <string>102.IBPluginDependency</string> - <string>102.IBViewBoundsToFrameTransform</string> - <string>103.IBPluginDependency</string> - <string>103.IBViewBoundsToFrameTransform</string> - <string>104.IBPluginDependency</string> - <string>104.IBViewBoundsToFrameTransform</string> - <string>105.IBPluginDependency</string> - <string>105.IBViewBoundsToFrameTransform</string> - <string>106.IBPluginDependency</string> - <string>106.IBViewBoundsToFrameTransform</string> - <string>107.IBPluginDependency</string> - <string>107.IBViewBoundsToFrameTransform</string> - <string>108.IBPluginDependency</string> - <string>108.IBViewBoundsToFrameTransform</string> - <string>109.IBPluginDependency</string> - <string>109.IBViewBoundsToFrameTransform</string> - <string>110.IBPluginDependency</string> - <string>110.IBViewBoundsToFrameTransform</string> - <string>111.IBPluginDependency</string> - <string>111.IBViewBoundsToFrameTransform</string> - <string>112.IBPluginDependency</string> - <string>112.IBViewBoundsToFrameTransform</string> - <string>113.IBPluginDependency</string> - <string>113.IBViewBoundsToFrameTransform</string> - <string>114.IBPluginDependency</string> - <string>114.IBViewBoundsToFrameTransform</string> + <string>118.IBPluginDependency</string> + <string>118.IBViewBoundsToFrameTransform</string> + <string>119.IBPluginDependency</string> + <string>121.IBEditorWindowLastContentRect</string> + <string>121.IBPluginDependency</string> + <string>121.IBViewBoundsToFrameTransform</string> + <string>122.IBPluginDependency</string> + <string>122.IBViewBoundsToFrameTransform</string> + <string>124.IBPluginDependency</string> + <string>124.IBViewBoundsToFrameTransform</string> + <string>125.IBPluginDependency</string> + <string>125.IBViewBoundsToFrameTransform</string> + <string>126.IBPluginDependency</string> + <string>126.IBViewBoundsToFrameTransform</string> + <string>127.IBPluginDependency</string> + <string>127.IBViewBoundsToFrameTransform</string> + <string>128.IBPluginDependency</string> + <string>128.IBViewBoundsToFrameTransform</string> + <string>129.IBPluginDependency</string> + <string>129.IBViewBoundsToFrameTransform</string> + <string>130.IBPluginDependency</string> + <string>130.IBViewBoundsToFrameTransform</string> + <string>131.IBPluginDependency</string> + <string>131.IBViewBoundsToFrameTransform</string> + <string>132.IBPluginDependency</string> + <string>132.IBViewBoundsToFrameTransform</string> + <string>133.IBPluginDependency</string> + <string>133.IBViewBoundsToFrameTransform</string> + <string>134.IBPluginDependency</string> + <string>134.IBViewBoundsToFrameTransform</string> + <string>135.IBPluginDependency</string> + <string>135.IBViewBoundsToFrameTransform</string> + <string>136.IBPluginDependency</string> + <string>136.IBViewBoundsToFrameTransform</string> + <string>137.IBPluginDependency</string> + <string>137.IBViewBoundsToFrameTransform</string> + <string>138.IBPluginDependency</string> + <string>138.IBViewBoundsToFrameTransform</string> + <string>140.IBPluginDependency</string> <string>2.IBEditorWindowLastContentRect</string> <string>2.IBPluginDependency</string> <string>2.IBViewBoundsToFrameTransform</string> - <string>97.IBEditorWindowLastContentRect</string> - <string>97.IBPluginDependency</string> - <string>97.IBViewBoundsToFrameTransform</string> - <string>98.IBPluginDependency</string> - <string>98.IBViewBoundsToFrameTransform</string> - <string>99.IBPluginDependency</string> - <string>99.IBViewBoundsToFrameTransform</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -605,11 +631,57 @@ <string>UIResponder</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDdgAAw1oAAA</bytes> + <bytes key="NSTransformStruct">AQAAAADAQAAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <string>{{589, 578}, {480, 320}}</string> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">AcCgAABCMAAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDZwAAw7aAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABCVAAAwx8AAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAwnQAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABCxgAAwtYAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDr4AAwwUAAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABCxgAAwyQAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw+SAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAxARAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw6aAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw8+AAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDZwAAw+EAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDiQAAwmwAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> @@ -617,69 +689,25 @@ </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDiQAAwmwAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDZwAAw+EAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw8+AAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw6aAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAxARAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw+SAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABCxgAAwyQAAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABDr4AAwwUAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABCxgAAwtYAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAwnQAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABCVAAAwx8AAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABDdgAAw1oAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABBUAAAwnQAAA</bytes> - </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDZwAAw7aAAA</bytes> - </object> - <string>{{606, 570}, {480, 320}}</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw4kAAA</bytes> - </object> - <string>{{589, 578}, {480, 320}}</string> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> - <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw58AAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABDooAAw3gAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> <bytes key="NSTransformStruct">P4AAAL+AAABDeQAAw6aAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <string>{{165, 514}, {480, 320}}</string> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDooAAw3gAAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw4kAAA</bytes> </object> </object> </object> @@ -699,7 +727,7 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">115</int> + <int key="maxID">142</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -843,6 +871,22 @@ </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">UILabel</string> <string key="superclassName">UIView</string> <object class="IBClassDescriptionSource" key="sourceIdentifier"> @@ -851,6 +895,19 @@ </object> </object> <object class="IBPartialClassDescription"> + <string key="className">UINavigationBar</string> + <string key="superclassName">UIView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="847596400"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">UINavigationItem</string> + <string key="superclassName">NSObject</string> + <reference key="sourceIdentifier" ref="847596400"/> + </object> + <object class="IBPartialClassDescription"> <string key="className">UIResponder</string> <string key="superclassName">NSObject</string> <reference key="sourceIdentifier" ref="786211723"/> @@ -883,6 +940,13 @@ <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> @@ -936,7 +1000,7 @@ <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="1024" key="NS.object.0"/> + <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> @@ -945,6 +1009,6 @@ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> <string key="IBDocument.LastKnownRelativeProjectPath">../Hedgewars.xcodeproj</string> <int key="IBDocument.defaultPropertyAccessControl">3</int> - <string key="IBCocoaTouchPluginVersion">123</string> + <string key="IBCocoaTouchPluginVersion">132</string> </data> </archive>
--- a/project_files/HedgewarsMobile/Resources/MainMenuViewController-iPad.xib Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/MainMenuViewController-iPad.xib Tue Jan 04 12:53:46 2011 +0100 @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10"> <data> - <int key="IBDocument.SystemTarget">1024</int> - <string key="IBDocument.SystemVersion">10F569</string> - <string key="IBDocument.InterfaceBuilderVersion">788</string> - <string key="IBDocument.AppKitVersion">1038.29</string> + <int key="IBDocument.SystemTarget">1056</int> + <string key="IBDocument.SystemVersion">10H574</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> + <string key="IBDocument.AppKitVersion">1038.35</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">117</string> + <string key="NS.object.0">132</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -51,7 +51,7 @@ <string key="targetRuntimeIdentifier">IBIPadFramework</string> <object class="NSCustomResource" key="IBUIImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">backgroundAndTitle.png</string> + <string key="NSResourceName">background.png</string> </object> </object> <object class="IBUIButton" id="867308721"> @@ -72,7 +72,6 @@ <double key="IBUITitleEdgeInsets.bottom">0.0</double> <double key="IBUITitleEdgeInsets.left">0.0</double> <double key="IBUITitleEdgeInsets.right">0.0</double> - <string key="IBUINormalTitle">Single Game</string> <object class="NSColor" key="IBUIHighlightedTitleColor" id="918890028"> <int key="NSColorSpace">3</int> <bytes key="NSWhite">MQA</bytes> @@ -85,15 +84,15 @@ <int key="NSColorSpace">3</int> <bytes key="NSWhite">MC41AA</bytes> </object> - <object class="NSCustomResource" key="IBUINormalBackgroundImage"> + <object class="NSCustomResource" key="IBUINormalImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">localplayButton.png</string> + <string key="NSResourceName">localplayButton~ipad.png</string> </object> </object> <object class="IBUIButton" id="95106947"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{788, 300}, {18, 19}}</string> + <string key="NSFrame">{{795, 317}, {18, 19}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <float key="IBUIAlpha">0.31690141558647156</float> @@ -114,7 +113,7 @@ <object class="IBUIButton" id="898948205"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{932, 686}, {72, 62}}</string> + <string key="NSFrame">{{940, 686}, {64, 64}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <int key="IBUITag">2</int> @@ -136,7 +135,7 @@ <object class="IBUIButton" id="894101036"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{20, 686}, {72, 62}}</string> + <string key="NSFrame">{{20, 686}, {64, 64}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <int key="IBUITag">4</int> @@ -155,6 +154,18 @@ <string key="NSResourceName">savesButton.png</string> </object> </object> + <object class="IBUIImageView" id="1019880682"> + <reference key="NSNextResponder" ref="191373211"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{242, 43}, {540, 300}}</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">title~ipad.png</string> + </object> + </object> </object> <string key="NSFrameSize">{1024, 768}</string> <reference key="NSSuperview"/> @@ -231,10 +242,11 @@ <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> <reference ref="976741091"/> + <reference ref="867308721"/> + <reference ref="95106947"/> <reference ref="898948205"/> - <reference ref="867308721"/> <reference ref="894101036"/> - <reference ref="95106947"/> + <reference ref="1019880682"/> </object> <reference key="parent" ref="0"/> </object> @@ -275,6 +287,11 @@ <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> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -288,8 +305,13 @@ <string>37.IBPluginDependency</string> <string>39.IBPluginDependency</string> <string>45.IBPluginDependency</string> + <string>45.IBViewBoundsToFrameTransform</string> <string>52.IBPluginDependency</string> + <string>52.IBViewBoundsToFrameTransform</string> <string>88.IBPluginDependency</string> + <string>88.IBViewBoundsToFrameTransform</string> + <string>90.IBPluginDependency</string> + <string>90.IBViewBoundsToFrameTransform</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -300,8 +322,21 @@ <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABERQAAw56AAA</bytes> + </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABEaQAAxDsAAA</bytes> + </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAxDsAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABDbQAAw6qAAA</bytes> + </object> </object> </object> <object class="NSMutableDictionary" key="unlocalizedProperties"> @@ -320,7 +355,7 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">89</int> + <int key="maxID">90</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -501,6 +536,13 @@ <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> @@ -554,7 +596,7 @@ <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="1024" key="NS.object.0"/> + <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> @@ -567,19 +609,21 @@ <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>backgroundAndTitle.png</string> - <string>localplayButton.png</string> + <string>background.png</string> + <string>localplayButton~ipad.png</string> <string>savesButton.png</string> <string>settingsButton.png</string> + <string>title~ipad.png</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>{1024, 768}</string> <string>{263, 244}</string> - <string>{61, 59}</string> - <string>{61, 59}</string> + <string>{64, 64}</string> + <string>{64, 64}</string> + <string>{540, 300}</string> </object> </object> - <string key="IBCocoaTouchPluginVersion">117</string> + <string key="IBCocoaTouchPluginVersion">132</string> </data> </archive>
--- a/project_files/HedgewarsMobile/Resources/MainMenuViewController-iPhone.xib Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/MainMenuViewController-iPhone.xib Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> <data> - <int key="IBDocument.SystemTarget">1024</int> + <int key="IBDocument.SystemTarget">1056</int> <string key="IBDocument.SystemVersion">10H574</string> - <string key="IBDocument.InterfaceBuilderVersion">804</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> <string key="IBDocument.AppKitVersion">1038.35</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">123</string> + <string key="NS.object.0">132</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="1"/> + <integer value="22"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -45,7 +45,7 @@ <object class="IBUIImageView" id="249993817"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">274</int> - <string key="NSFrameSize">{480, 300}</string> + <string key="NSFrameSize">{480, 320}</string> <reference key="NSSuperview" ref="191373211"/> <object class="NSColor" key="IBUIBackgroundColor"> <int key="NSColorSpace">3</int> @@ -56,25 +56,13 @@ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> <object class="NSCustomResource" key="IBUIImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">backgroundTop.png</string> - </object> - </object> - <object class="IBUIImageView" id="745649693"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">292</int> - <string key="NSFrame">{{0, 300}, {480, 20}}</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">borderBottom.png</string> + <string key="NSResourceName">background~iphone.png</string> </object> </object> <object class="IBUIImageView" id="171108356"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">293</int> - <string key="NSFrame">{{109, 35}, {262, 84}}</string> + <string key="NSFrame">{{105, 20}, {270, 150}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClearsContextBeforeDrawing">NO</bool> @@ -83,13 +71,13 @@ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> <object class="NSCustomResource" key="IBUIImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">title_small.png</string> + <string key="NSResourceName">title.png</string> </object> </object> <object class="IBUIButton" id="124270424"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">289</int> - <string key="NSFrame">{{208, 169}, {64, 64}}</string> + <string key="NSFrame">{{190, 200}, {100, 100}}</string> <reference key="NSSuperview" ref="191373211"/> <object class="NSColor" key="IBUIBackgroundColor"> <int key="NSColorSpace">1</int> @@ -119,13 +107,13 @@ </object> <object class="NSCustomResource" key="IBUINormalImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">startButton.png</string> + <string key="NSResourceName">localplayButton~iphone.png</string> </object> </object> <object class="IBUIButton" id="753723574"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">269</int> - <string key="NSFrame">{{355, 208}, {59, 52}}</string> + <string key="NSFrame">{{396, 236}, {64, 64}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClearsContextBeforeDrawing">NO</bool> @@ -148,7 +136,7 @@ <object class="IBUIButton" id="705508539"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">269</int> - <string key="NSFrame">{{66, 208}, {59, 52}}</string> + <string key="NSFrame">{{20, 236}, {64, 64}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClearsContextBeforeDrawing">NO</bool> @@ -265,12 +253,11 @@ <object class="NSMutableArray" key="children"> <bool key="EncodedWithXMLCoder">YES</bool> <reference ref="249993817"/> - <reference ref="745649693"/> + <reference ref="818907840"/> <reference ref="171108356"/> - <reference ref="818907840"/> <reference ref="705508539"/> + <reference ref="753723574"/> <reference ref="124270424"/> - <reference ref="753723574"/> </object> <reference key="parent" ref="0"/> </object> @@ -296,11 +283,6 @@ <reference key="parent" ref="191373211"/> </object> <object class="IBObjectRecord"> - <int key="objectID">45</int> - <reference key="object" ref="745649693"/> - <reference key="parent" ref="191373211"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">41</int> <reference key="object" ref="818907840"/> <reference key="parent" ref="191373211"/> @@ -342,7 +324,6 @@ <string>41.IBViewBoundsToFrameTransform</string> <string>43.IBPluginDependency</string> <string>43.IBViewBoundsToFrameTransform</string> - <string>45.IBPluginDependency</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -356,15 +337,15 @@ </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABC2gAAww8AAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABCygAAwzcAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDTAAAw20AAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABDPgAAw5UAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABDsYAAw4QAAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABDxgAAw5iAAA</bytes> </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> @@ -372,9 +353,8 @@ </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <object class="NSAffineTransform"> - <bytes key="NSTransformStruct">P4AAAL+AAABCjAAAw4QAAA</bytes> + <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw5iAAA</bytes> </object> - <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> </object> </object> <object class="NSMutableDictionary" key="unlocalizedProperties"> @@ -574,6 +554,13 @@ <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> @@ -627,7 +614,7 @@ <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="1024" key="NS.object.0"/> + <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> @@ -640,23 +627,21 @@ <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSArray" key="dict.sortedKeys"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>backgroundTop.png</string> - <string>borderBottom.png</string> + <string>background~iphone.png</string> + <string>localplayButton~iphone.png</string> <string>savesButton.png</string> <string>settingsButton.png</string> - <string>startButton.png</string> - <string>title_small.png</string> + <string>title.png</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> - <string>{480, 300}</string> - <string>{480, 20}</string> - <string>{61, 59}</string> - <string>{61, 59}</string> + <string>{480, 320}</string> + <string>{100, 100}</string> <string>{64, 64}</string> - <string>{262, 84}</string> + <string>{64, 64}</string> + <string>{270, 150}</string> </object> </object> - <string key="IBCocoaTouchPluginVersion">123</string> + <string key="IBCocoaTouchPluginVersion">132</string> </data> </archive>
--- a/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPad.xib Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPad.xib Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10"> <data> - <int key="IBDocument.SystemTarget">1024</int> - <string key="IBDocument.SystemVersion">10F569</string> - <string key="IBDocument.InterfaceBuilderVersion">788</string> - <string key="IBDocument.AppKitVersion">1038.29</string> + <int key="IBDocument.SystemTarget">1056</int> + <string key="IBDocument.SystemVersion">10H574</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> + <string key="IBDocument.AppKitVersion">1038.35</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">117</string> + <string key="NS.object.0">132</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> - <integer value="1"/> + <integer value="9"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -123,6 +123,7 @@ <string key="NSFrame">{{736, 26}, {256, 128}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> + <bool key="IBUIClipsSubviews">YES</bool> <string key="targetRuntimeIdentifier">IBIPadFramework</string> <int key="IBUIContentHorizontalAlignment">0</int> <int key="IBUIContentVerticalAlignment">0</int> @@ -950,6 +951,13 @@ <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> @@ -1003,7 +1011,7 @@ <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="1024" key="NS.object.0"/> + <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> @@ -1028,9 +1036,9 @@ <string>{1024, 768}</string> <string>{64, 64}</string> <string>{142, 64}</string> - <string>{273, 151}</string> + <string>{270, 150}</string> </object> </object> - <string key="IBCocoaTouchPluginVersion">117</string> + <string key="IBCocoaTouchPluginVersion">132</string> </data> </archive>
--- a/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPhone.xib Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/MapConfigViewController-iPhone.xib Tue Jan 04 12:53:46 2011 +0100 @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> <data> - <int key="IBDocument.SystemTarget">1024</int> + <int key="IBDocument.SystemTarget">1056</int> <string key="IBDocument.SystemVersion">10H574</string> - <string key="IBDocument.InterfaceBuilderVersion">804</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> <string key="IBDocument.AppKitVersion">1038.35</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">123</string> + <string key="NS.object.0">132</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -51,7 +51,7 @@ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> <object class="NSCustomResource" key="IBUIImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">backgroundCenter.png</string> + <string key="NSResourceName">background~iphone.png</string> </object> </object> <object class="IBUISegmentedControl" id="88728219"> @@ -166,7 +166,7 @@ <object class="IBUILabel" id="743202682"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">292</int> - <string key="NSFrame">{{88, 209}, {169, 29}}</string> + <string key="NSFrame">{{88, 210}, {169, 29}}</string> <reference key="NSSuperview" ref="191373211"/> <bool key="IBUIOpaque">NO</bool> <bool key="IBUIClipsSubviews">YES</bool> @@ -175,8 +175,8 @@ <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> <string key="IBUIText">Label</string> <object class="NSFont" key="IBUIFont"> - <string key="NSName">Helvetica</string> - <double key="NSSize">24</double> + <string key="NSName">Helvetica-Oblique</string> + <double key="NSSize">22</double> <int key="NSfFlags">16</int> </object> <object class="NSColor" key="IBUITextColor"> @@ -825,6 +825,13 @@ <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> @@ -878,7 +885,7 @@ <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="1024" key="NS.object.0"/> + <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> @@ -888,9 +895,9 @@ <string key="IBDocument.LastKnownRelativeProjectPath">../Hedgewars.xcodeproj</string> <int key="IBDocument.defaultPropertyAccessControl">3</int> <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> - <string key="NS.key.0">backgroundCenter.png</string> - <string key="NS.object.0">{480, 276}</string> + <string key="NS.key.0">background~iphone.png</string> + <string key="NS.object.0">{480, 320}</string> </object> - <string key="IBCocoaTouchPluginVersion">123</string> + <string key="IBCocoaTouchPluginVersion">132</string> </data> </archive>
Binary file project_files/HedgewarsMobile/Resources/Overlay/smallerBackground@2x-iphone.png has changed
Binary file project_files/HedgewarsMobile/Resources/Overlay/smallerBackground~iphone.png has changed
--- a/project_files/HedgewarsMobile/Resources/OverlayViewController.xib Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/OverlayViewController.xib Tue Jan 04 12:53:46 2011 +0100 @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10"> <data> - <int key="IBDocument.SystemTarget">1024</int> - <string key="IBDocument.SystemVersion">10F569</string> - <string key="IBDocument.InterfaceBuilderVersion">804</string> - <string key="IBDocument.AppKitVersion">1038.29</string> + <int key="IBDocument.SystemTarget">1056</int> + <string key="IBDocument.SystemVersion">10H574</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> + <string key="IBDocument.AppKitVersion">1038.35</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">123</string> + <string key="NS.object.0">132</string> </object> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -42,40 +42,6 @@ <int key="NSvFlags">274</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> - <object class="IBUIView" id="442546943"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">268</int> - <string key="NSFrame">{{0, 170}, {180, 150}}</string> - <reference key="NSSuperview" ref="191373211"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <object class="NSColorSpace" key="NSCustomColorSpace" id="692152543"> - <int key="NSID">2</int> - </object> - </object> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <float key="IBUIAlpha">0.0</float> - <bool key="IBUIUserInteractionEnabled">NO</bool> - <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> - </object> - <object class="IBUIView" id="358748789"> - <reference key="NSNextResponder" ref="191373211"/> - <int key="NSvFlags">265</int> - <string key="NSFrame">{{337, 187}, {143, 133}}</string> - <reference key="NSSuperview" ref="191373211"/> - <object class="NSColor" key="IBUIBackgroundColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - <reference key="NSCustomColorSpace" ref="692152543"/> - </object> - <bool key="IBUIOpaque">NO</bool> - <bool key="IBUIClearsContextBeforeDrawing">NO</bool> - <float key="IBUIAlpha">0.0</float> - <bool key="IBUIUserInteractionEnabled">NO</bool> - <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string> - </object> <object class="IBUIButton" id="584263820"> <reference key="NSNextResponder" ref="191373211"/> <int key="NSvFlags">268</int> @@ -154,7 +120,7 @@ <reference key="IBUINormalTitleShadowColor" ref="280149554"/> <object class="NSCustomResource" key="IBUINormalImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">joyButton_backjump.png</string> + <string key="NSResourceName">joyButtonBackJump.png</string> </object> </object> <object class="IBUIButton" id="132251648"> @@ -178,7 +144,7 @@ <reference key="IBUINormalTitleShadowColor" ref="280149554"/> <object class="NSCustomResource" key="IBUINormalImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">joyButton_forwardjump.png</string> + <string key="NSResourceName">joyButtonForwardJump.png</string> </object> </object> <object class="IBUIButton" id="752933969"> @@ -202,7 +168,7 @@ <reference key="IBUINormalTitleShadowColor" ref="280149554"/> <object class="NSCustomResource" key="IBUINormalImage"> <string key="NSClassName">NSImage</string> - <string key="NSResourceName">joyButton_attack.png</string> + <string key="NSResourceName">joyButtonAttack.png</string> </object> </object> <object class="IBUIButton" id="261686746"> @@ -628,8 +594,6 @@ <reference ref="123494776"/> <reference ref="132251648"/> <reference ref="752933969"/> - <reference ref="358748789"/> - <reference ref="442546943"/> <reference ref="50885250"/> <reference ref="309477778"/> </object> @@ -698,18 +662,6 @@ <reference key="object" ref="50885250"/> <reference key="parent" ref="191373211"/> </object> - <object class="IBObjectRecord"> - <int key="objectID">71</int> - <reference key="object" ref="442546943"/> - <reference key="parent" ref="191373211"/> - <string key="objectName">safezoneleft</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">72</int> - <reference key="object" ref="358748789"/> - <reference key="parent" ref="191373211"/> - <string key="objectName">safezoneright</string> - </object> </object> </object> <object class="NSMutableDictionary" key="flattenedProperties"> @@ -721,6 +673,7 @@ <string>1.IBEditorWindowLastContentRect</string> <string>1.IBPluginDependency</string> <string>12.IBPluginDependency</string> + <string>12.IBViewBoundsToFrameTransform</string> <string>17.IBPluginDependency</string> <string>22.IBPluginDependency</string> <string>4.IBPluginDependency</string> @@ -729,18 +682,17 @@ <string>53.IBPluginDependency</string> <string>58.IBPluginDependency</string> <string>67.IBPluginDependency</string> - <string>71.IBPluginDependency</string> - <string>72.IBPluginDependency</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> <string>OverlayViewController</string> <string>UIResponder</string> - <string>{{567, 304}, {480, 320}}</string> + <string>{{690, 375}, {480, 320}}</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 class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAABCkAAAw5SAAA</bytes> + </object> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> @@ -961,6 +913,13 @@ <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> @@ -1014,7 +973,7 @@ <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="1024" key="NS.object.0"/> + <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> @@ -1033,9 +992,9 @@ <string>arrowRight.png</string> <string>arrowUp.png</string> <string>cornerButton.png</string> - <string>joyButton_attack.png</string> - <string>joyButton_backjump.png</string> - <string>joyButton_forwardjump.png</string> + <string>joyButtonAttack.png</string> + <string>joyButtonBackJump.png</string> + <string>joyButtonForwardJump.png</string> </object> <object class="NSMutableArray" key="dict.values"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -1050,6 +1009,6 @@ <string>{64, 64}</string> </object> </object> - <string key="IBCocoaTouchPluginVersion">123</string> + <string key="IBCocoaTouchPluginVersion">132</string> </data> </archive>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Barrel Mayhem.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Barrel Mayhem.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>30</integer> - <integer>100</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>0</integer> <integer>35</integer> <integer>25</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Clean Slate.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Clean Slate.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>45</integer> - <integer>100</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>5</integer> <integer>35</integer> <integer>25</integer> @@ -42,6 +43,7 @@ <true/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Default.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Default.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>45</integer> - <integer>100</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>5</integer> <integer>35</integer> <integer>25</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Fort Mode.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Fort Mode.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>45</integer> - <integer>100</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>5</integer> <integer>35</integer> <integer>25</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/King Mode.plist Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>basic</key> + <array> + <integer>100</integer> + <integer>100</integer> + <integer>45</integer> + <integer>15</integer> + <integer>47</integer> + <integer>5</integer> + <integer>100</integer> + <integer>5</integer> + <integer>35</integer> + <integer>25</integer> + <integer>3</integer> + <integer>4</integer> + <integer>0</integer> + <integer>2</integer> + </array> + <key>gamemod</key> + <array> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <true/> + <true/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + <false/> + </array> +</dict> +</plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Minefield.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Minefield.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>50</integer> + <integer>150</integer> <integer>30</integer> - <integer>150</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>0</integer> <integer>35</integer> <integer>25</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Pro Mode.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Pro Mode.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>15</integer> - <integer>100</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>0</integer> <integer>35</integer> <integer>25</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Shoppa.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Shoppa.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>300</integer> - <integer>100</integer> <integer>50</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>1</integer> <integer>0</integer> <integer>35</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Thinking with Portals.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Thinking with Portals.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,11 +5,12 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>45</integer> - <integer>100</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>2</integer> <integer>25</integer> <integer>25</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Timeless.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Timeless.plist Tue Jan 04 12:53:46 2011 +0100 @@ -10,11 +10,12 @@ <integer>100</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>5</integer> <integer>35</integer> <integer>30</integer> + <integer>5</integer> <integer>3</integer> - <integer>5</integer> <integer>10</integer> <integer>2</integer> </array> @@ -42,6 +43,7 @@ <false/> <true/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/Schemes/Tunnel Hogs.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/Schemes/Tunnel Hogs.plist Tue Jan 04 12:53:46 2011 +0100 @@ -5,15 +5,16 @@ <key>basic</key> <array> <integer>100</integer> + <integer>100</integer> <integer>30</integer> - <integer>100</integer> <integer>15</integer> <integer>47</integer> <integer>5</integer> + <integer>100</integer> <integer>5</integer> <integer>35</integer> + <integer>3</integer> <integer>25</integer> - <integer>3</integer> <integer>10</integer> <integer>10</integer> <integer>10</integer> @@ -42,6 +43,7 @@ <false/> <false/> <false/> + <false/> </array> </dict> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/iFrontend/basicFlags_en.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/iFrontend/basicFlags_en.plist Tue Jan 04 12:53:46 2011 +0100 @@ -3,10 +3,6 @@ <plist version="1.0"> <array> <dict> - <key>checkOverMax</key> - <false/> - <key>command</key> - <string></string> <key>default</key> <integer>100</integer> <key>image</key> @@ -20,22 +16,8 @@ </dict> <dict> <key>checkOverMax</key> - <true/> - <key>command</key> - <string>e$turntime</string> - <key>default</key> - <integer>45</integer> - <key>image</key> - <string>Time</string> - <key>max</key> - <integer>100</integer> - <key>min</key> - <integer>1</integer> - <key>title</key> - <string>Turn Time</string> - </dict> - <dict> - <key>checkOverMax</key> + <false/> + <key>times1000</key> <false/> <key>command</key> <string>e$damagepct</string> @@ -53,6 +35,26 @@ <dict> <key>checkOverMax</key> <true/> + <key>times1000</key> + <true/> + <key>command</key> + <string>e$turntime</string> + <key>default</key> + <integer>45</integer> + <key>image</key> + <string>Time</string> + <key>max</key> + <integer>100</integer> + <key>min</key> + <integer>1</integer> + <key>title</key> + <string>Turn Time</string> + </dict> + <dict> + <key>checkOverMax</key> + <true/> + <key>times1000</key> + <false/> <key>command</key> <string>e$sd_turns</string> <key>default</key> @@ -69,6 +71,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$waterrise</string> <key>default</key> @@ -85,6 +89,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$healthdec</string> <key>default</key> @@ -101,6 +107,26 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> + <key>command</key> + <string>e$ropepct</string> + <key>default</key> + <integer>100</integer> + <key>image</key> + <string>Rope</string> + <key>max</key> + <integer>999</integer> + <key>min</key> + <integer>25</integer> + <key>title</key> + <string>Rope Length</string> + </dict> + <dict> + <key>checkOverMax</key> + <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$casefreq</string> <key>default</key> @@ -117,6 +143,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$healthprob</string> <key>default</key> @@ -133,6 +161,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$hcaseamount</string> <key>default</key> @@ -149,6 +179,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <true/> <key>command</key> <string>e$minestime</string> <key>default</key> @@ -165,6 +197,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$minesnum</string> <key>default</key> @@ -181,6 +215,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$minedudpct</string> <key>default</key> @@ -197,6 +233,8 @@ <dict> <key>checkOverMax</key> <false/> + <key>times1000</key> + <false/> <key>command</key> <string>e$explosives</string> <key>default</key>
--- a/project_files/HedgewarsMobile/Resources/Settings/iFrontend/gameFlags_en.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/iFrontend/gameFlags_en.plist Tue Jan 04 12:53:46 2011 +0100 @@ -172,11 +172,19 @@ </dict> <dict> <key>description</key> - <string>Wind will not affect weapons</string> + <string>You will not have to worry about wind any more</string> <key>image</key> <string>NoWind</string> <key>title</key> <string>Disable Wind</string> </dict> + <dict> + <key>description</key> + <string>Wind will affect almost everything</string> + <key>image</key> + <string>MoreWind</string> + <key>title</key> + <string>More Wind</string> + </dict> </array> </plist>
--- a/project_files/HedgewarsMobile/Resources/Settings/settings.plist Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/Resources/Settings/settings.plist Tue Jan 04 12:53:46 2011 +0100 @@ -14,5 +14,11 @@ <string></string> <key>menu</key> <false/> + <key>password_length</key> + <integer>0</integer> + <key>enhanced</key> + <true/> + <key>multitasking</key> + <true/> </dict> </plist>
--- a/project_files/HedgewarsMobile/SDL.patch Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/HedgewarsMobile/SDL.patch Tue Jan 04 12:53:46 2011 +0100 @@ -1,7 +1,22 @@ -diff -r c0021a587dc7 Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj ---- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Sun Oct 10 15:45:58 2010 -0700 -+++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Sat Oct 16 18:35:03 2010 +0200 -@@ -1549,15 +1549,19 @@ +diff -r d716dff4b13e Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj +--- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Thu Dec 02 11:56:23 2010 -0800 ++++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Thu Dec 02 22:38:57 2010 +0100 +@@ -1262,7 +1262,14 @@ + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLiPhoneOS" */; + compatibilityVersion = "Xcode 3.1"; ++ developmentRegion = English; + hasScannedForEncodings = 1; ++ knownRegions = ( ++ English, ++ Japanese, ++ French, ++ German, ++ ); + mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; + projectDirPath = ""; + projectRoot = ../..; +@@ -1549,15 +1556,19 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -18,11 +33,11 @@ ONLY_ACTIVE_ARCH = NO; PREBINDING = NO; - SDKROOT = iphoneos3.2; -+ SDKROOT = iphoneos4.0; ++ SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; -@@ -1566,14 +1570,19 @@ +@@ -1566,14 +1577,19 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -40,13 +55,13 @@ IPHONEOS_DEPLOYMENT_TARGET = 3.1; PREBINDING = NO; - SDKROOT = iphoneos3.2; -+ SDKROOT = iphoneos4.0; ++ SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; -diff -r c0021a587dc7 Xcode-iPhoneOS/SDL/testsdl-Info.plist ---- a/Xcode-iPhoneOS/SDL/testsdl-Info.plist Sun Oct 10 15:45:58 2010 -0700 -+++ b/Xcode-iPhoneOS/SDL/testsdl-Info.plist Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e Xcode-iPhoneOS/SDL/testsdl-Info.plist +--- a/Xcode-iPhoneOS/SDL/testsdl-Info.plist Thu Dec 02 11:56:23 2010 -0800 ++++ b/Xcode-iPhoneOS/SDL/testsdl-Info.plist Thu Dec 02 22:38:57 2010 +0100 @@ -16,7 +16,5 @@ <string>????</string> <key>CFBundleVersion</key> @@ -55,9 +70,9 @@ - <string>MainWindow</string> </dict> </plist> -diff -r c0021a587dc7 include/SDL_config_iphoneos.h ---- a/include/SDL_config_iphoneos.h Sun Oct 10 15:45:58 2010 -0700 -+++ b/include/SDL_config_iphoneos.h Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e include/SDL_config_iphoneos.h +--- a/include/SDL_config_iphoneos.h Thu Dec 02 11:56:23 2010 -0800 ++++ b/include/SDL_config_iphoneos.h Thu Dec 02 22:38:57 2010 +0100 @@ -98,6 +98,8 @@ #define HAVE_COS 1 #define HAVE_COSF 1 @@ -93,9 +108,9 @@ +#define SDL_VIEW_TAG 456987 + #endif /* _SDL_config_iphoneos_h */ -diff -r c0021a587dc7 src/SDL_fatal.c ---- a/src/SDL_fatal.c Sun Oct 10 15:45:58 2010 -0700 -+++ b/src/SDL_fatal.c Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e src/SDL_fatal.c +--- a/src/SDL_fatal.c Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/SDL_fatal.c Thu Dec 02 22:38:57 2010 +0100 @@ -38,9 +38,9 @@ static void SDL_Parachute(int sig) @@ -108,9 +123,9 @@ } static const int SDL_fatal_signals[] = { -diff -r c0021a587dc7 src/video/SDL_renderer_gles.c ---- a/src/video/SDL_renderer_gles.c Sun Oct 10 15:45:58 2010 -0700 -+++ b/src/video/SDL_renderer_gles.c Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e src/video/SDL_renderer_gles.c +--- a/src/video/SDL_renderer_gles.c Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/SDL_renderer_gles.c Thu Dec 02 22:38:57 2010 +0100 @@ -324,6 +324,9 @@ data->glDisable(GL_CULL_FACE); data->updateSize = SDL_TRUE; @@ -192,10 +207,10 @@ } data->glDisable(GL_TEXTURE_2D); -diff -r c0021a587dc7 src/video/SDL_video.c ---- a/src/video/SDL_video.c Sun Oct 10 15:45:58 2010 -0700 -+++ b/src/video/SDL_video.c Sat Oct 16 18:35:03 2010 +0200 -@@ -1416,9 +1416,9 @@ +diff -r d716dff4b13e src/video/SDL_video.c +--- a/src/video/SDL_video.c Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/SDL_video.c Thu Dec 02 22:38:57 2010 +0100 +@@ -1421,9 +1421,9 @@ SDL_MinimizeWindow(window); } @@ -207,9 +222,9 @@ if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) && _this->SetWindowGrab) { _this->SetWindowGrab(_this, window); -diff -r c0021a587dc7 src/video/uikit/SDL_uikitopengles.m ---- a/src/video/uikit/SDL_uikitopengles.m Sun Oct 10 15:45:58 2010 -0700 -+++ b/src/video/uikit/SDL_uikitopengles.m Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e src/video/uikit/SDL_uikitopengles.m +--- a/src/video/uikit/SDL_uikitopengles.m Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/uikit/SDL_uikitopengles.m Thu Dec 02 22:38:57 2010 +0100 @@ -114,8 +114,8 @@ bBits: _this->gl_config.blue_size \ aBits: _this->gl_config.alpha_size \ @@ -221,9 +236,39 @@ /* add the view to our window */ [uiwindow addSubview: view ]; -diff -r c0021a587dc7 src/video/uikit/SDL_uikitview.m ---- a/src/video/uikit/SDL_uikitview.m Sun Oct 10 15:45:58 2010 -0700 -+++ b/src/video/uikit/SDL_uikitview.m Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e src/video/uikit/SDL_uikitopenglview.m +--- a/src/video/uikit/SDL_uikitopenglview.m Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/uikit/SDL_uikitopenglview.m Thu Dec 02 22:38:57 2010 +0100 +@@ -117,6 +117,8 @@ + return NO; + } + /* end create buffers */ ++ if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) ++ self.contentScaleFactor = [UIScreen mainScreen].scale; + } + return self; + } +diff -r d716dff4b13e src/video/uikit/SDL_uikitview.h +--- a/src/video/uikit/SDL_uikitview.h Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/uikit/SDL_uikitview.h Thu Dec 02 22:38:57 2010 +0100 +@@ -23,11 +23,11 @@ + #include "SDL_stdinc.h" + #include "SDL_events.h" + +-#define IPHONE_TOUCH_EFFICIENT_DANGEROUS +-#define FIXED_MULTITOUCH ++#undef IPHONE_TOUCH_EFFICIENT_DANGEROUS ++#undef FIXED_MULTITOUCH + + #ifndef IPHONE_TOUCH_EFFICIENT_DANGEROUS +-#define MAX_SIMULTANEOUS_TOUCHES 5 ++#define MAX_SIMULTANEOUS_TOUCHES 0 + #endif + + /* *INDENT-OFF* */ +diff -r d716dff4b13e src/video/uikit/SDL_uikitview.m +--- a/src/video/uikit/SDL_uikitview.m Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/uikit/SDL_uikitview.m Thu Dec 02 22:38:57 2010 +0100 @@ -35,9 +35,6 @@ @implementation SDL_uikitview @@ -335,24 +380,24 @@ if (NULL == view) { SDL_SetError("Window has no view"); -diff -r c0021a587dc7 src/video/uikit/SDL_uikitwindow.m ---- a/src/video/uikit/SDL_uikitwindow.m Sun Oct 10 15:45:58 2010 -0700 -+++ b/src/video/uikit/SDL_uikitwindow.m Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e src/video/uikit/SDL_uikitwindow.m +--- a/src/video/uikit/SDL_uikitwindow.m Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/uikit/SDL_uikitwindow.m Thu Dec 02 22:38:57 2010 +0100 @@ -144,7 +144,10 @@ if (SDL_UIKit_supports_multiple_displays) { [uiwindow setScreen:uiscreen]; } - + -+ if ([[UIScreen screens] count] > 1) ++ if ([UIScreen respondsToSelector:@selector(screens)] && [[UIScreen screens] count] > 1) + uiwindow.screen = [[UIScreen screens] objectAtIndex:1]; + if (SetupWindowData(_this, window, uiwindow, SDL_TRUE) < 0) { [uiwindow release]; return -1; -diff -r c0021a587dc7 src/video/uikit/keyinfotable.h ---- a/src/video/uikit/keyinfotable.h Sun Oct 10 15:45:58 2010 -0700 -+++ b/src/video/uikit/keyinfotable.h Sat Oct 16 18:35:03 2010 +0200 +diff -r d716dff4b13e src/video/uikit/keyinfotable.h +--- a/src/video/uikit/keyinfotable.h Thu Dec 02 11:56:23 2010 -0800 ++++ b/src/video/uikit/keyinfotable.h Thu Dec 02 22:38:57 2010 +0100 @@ -54,7 +54,7 @@ /* 10 */ { SDL_SCANCODE_UNKNOWN, 0 }, /* 11 */ { SDL_SCANCODE_UNKNOWN, 0 },
--- a/project_files/hedgewars.pro Mon Dec 27 23:57:44 2010 +0100 +++ b/project_files/hedgewars.pro Tue Jan 04 12:53:46 2011 +0100 @@ -73,6 +73,8 @@ TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_hu.ts TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_it.ts TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_ja.ts +TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_ko.ts +TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_nl.ts TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_pl.ts TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_pt_BR.ts TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_pt_PT.ts
--- a/share/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,6 +1,19 @@ add_subdirectory(hedgewars) IF(APPLE) + #needed for CFBundleVersion and CFBundleShortVersionString + FIND_PROGRAM(HGCOMMAND hg) + IF (HGCOMMAND AND (EXISTS ${hedgewars_SOURCE_DIR}/.hg)) + exec_program(${HGCOMMAND} + ARGS identify -n ${hedgewars_SOURCE_DIR} + OUTPUT_VARIABLE version_suffix + ) + STRING(REGEX REPLACE "([0-9]+)(.*)" "\\1" version_suffix ${version_suffix}) + set (HEDGEWARS_REVISION ${version_suffix}) + ELSE () + set (HEDGEWARS_REVISION ${HEDGEWARS_VERSION}) + ENDIF () + configure_file(${hedgewars_SOURCE_DIR}/share/Info.plist.in ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/Info.plist"
--- a/share/Info.plist.in Mon Dec 27 23:57:44 2010 +0100 +++ b/share/Info.plist.in Tue Jan 04 12:53:46 2011 +0100 @@ -17,31 +17,35 @@ <key>CFBundleSignature</key> <string>Hedge</string> <key>CFBundleVersion</key> + <string>${HEDGEWARS_REVISION}</string> + <key>CFBundleShortVersionString</key> <string>${HEDGEWARS_VERSION}</string> <key>NSHumanReadableCopyright</key> - <string>GPL</string> + <string>© 2004-2010 Hedgewars Project</string> <key>NSAppleScriptEnabled</key> <false/> <key>LSRequiresNativeExecution</key> - <true/> + <true/> <key>LSMinimumSystemVersionByArchitecture</key> <dict> - <key>x86_64</key> - <string>10.6.0</string> - <key>i386</key> - <string>10.4.0</string> - <key>ppc</key> - <string>10.4.0</string> + <key>x86_64</key> + <string>10.6.0</string> + <key>i386</key> + <string>10.4.0</string> + <key>ppc</key> + <string>10.4.0</string> </dict> <key>LSArchitecturePriority</key> <array> - <string>x86_64</string> - <string>i386</string> - <string>ppc</string> + <string>x86_64</string> + <string>i386</string> + <string>ppc</string> </array> <key>LSMinimumSystemVersion</key> <string>${minimum_macosx}</string> <key>SUPublicDSAKeyFile</key> <string>dsa_pub.pem</string> + <key>LSApplicationCategoryType</key> + <string>public.app-category.strategy-games</string> </dict> </plist>
--- a/share/hedgewars/Data/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,3 +1,3 @@ -foreach(dir "Fonts" "Forts" "Graphics" "Locale" "Maps" "Music" "Sounds" "Themes" "Missions" "Names" "misc") +foreach(dir "Fonts" "Forts" "Graphics" "Locale" "Maps" "Music" "Sounds" "Themes" "Missions" "Names" "misc" "Scripts") add_subdirectory(${dir}) endforeach(dir)
--- a/share/hedgewars/Data/Graphics/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Graphics/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -3,6 +3,7 @@ add_subdirectory(Graves) add_subdirectory(Hats) add_subdirectory(Hedgehog) +add_subdirectory(SuddenDeath) file(GLOB BaseSprites *.png)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/Snow.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + version="1.1" + inkscape:version="0.48.0 r9654" + width="3" + height="3" + sodipodi:docname="Snow.svg" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Graphics/Snow.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <linearGradient + id="linearGradient3757"> + <stop + style="stop-color:#dce6f0;stop-opacity:1;" + offset="0" + id="stop3759" /> + <stop + id="stop3765" + offset="0.2429187" + style="stop-color:#dce6f0;stop-opacity:1;" /> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="1" + id="stop3761" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3757" + id="radialGradient3763" + cx="2.6450942" + cy="3.2419963" + fx="2.6450942" + fy="3.2419963" + r="2.6945455" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.95584669,0,0.10793976)" /> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1016" + inkscape:window-height="770" + id="namedview4" + showgrid="false" + inkscape:zoom="64" + inkscape:cx="1.8295265" + inkscape:cy="0.046304751" + inkscape:window-x="169" + inkscape:window-y="99" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:url(#radialGradient3763);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path2987" + sodipodi:cx="2.76" + sodipodi:cy="2.8036363" + sodipodi:rx="2.6945455" + sodipodi:ry="2.6945455" + d="m 5.4545455,2.8036363 a 2.6945455,2.6945455 0 1 1 -5.38909102,0 2.6945455,2.6945455 0 1 1 5.38909102,0 z" + transform="matrix(0.55668015,0,0,0.55668015,-0.03643721,-0.06072873)" /> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/SuddenDeath/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,5 @@ +file(GLOB Sprites *.png) + +install(FILES + ${Sprites} + DESTINATION ${SHAREPATH}Data/Graphics/SuddenDeath)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/missions.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + version="1.1" + inkscape:version="0.48.0 r9654" + width="32" + height="160" + sodipodi:docname="missions.svg" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Graphics/missions.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6" /> + <sodipodi:namedview + pagecolor="#000000" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="1" + inkscape:pageshadow="2" + inkscape:window-width="1035" + inkscape:window-height="801" + id="namedview4" + showgrid="false" + inkscape:zoom="1.4142135" + inkscape:cx="35.985891" + inkscape:cy="87.849309" + inkscape:window-x="274" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" /> + <image + width="32" + height="64" + xlink:href="data:image/png;base64,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 " + id="image10" /> + <image + id="image2995" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAgCAYAAACVU7GwAAAABHNCSVQICAgIfAhkiAAABJNJREFU WIXFmF1sFFUUgL87258t7baBtbTYPxpJSozNViEhxioPTRWk1AhY+Wk0SiCpv936gBp8UZ5MtPhC 06hRHgyRSHzAEo0xRmljhbS2ShpIoIqFNJFObFbL1m1nrw93Zmd2O/tbxJPc3Llnz7nzzTn3njs7 QkoJgL/UwzKkFWgGBoGvs3HUQ8YSXd5ySEw5BexwjMeALmA41wmXC9WZAATQBPTpvdF7c51UWwbQ KqDPGry6RVJcaIP5g1r7/wHVBZQANFZBT6vkQLN0/v727YYKAEeswRttEo8GPY9I7iiJ2TT4g9re 2wkVS1vLeknLegkCin1waEdctN7xB7WSpe63HmozcD+AR1NRAsADFMPTj0vqK2O2lag0/2dQ9cAu 4Kil6NgoaawCBFAI+MBTBkcOxq8tf1Db7w9qTZneSCQpng3ABtT23mC2MqdBcSH8+FqUNWVAPrAS KAdWAAuwrUtj+KLrPUfMNmb1esiIpILaiVov5emeprtFqtQJoBioMLHzAAmjI9D6csaJOAd06SFj 1A3qj2RAdX4IVKt0BWrggbsk3nygAFWxygEvChJgAcbPw8hPgvFJGJ8S/HI9NZgeMjYlQjUDZwHW rYamask9VdBUA4EaSanXZRoNVakqgFLUYrdEAjfNx/wTWFTq8SkYuya4cB3GplQfsY+/Qj1kRJzH TLN10dYo7V3lBuIx+wJUyooSgMBe/KUmUBgwILAWArUSJAxdkXT0a2BDeSD+7Bu0Lo5+I/AVQXer tAE8ZstDLex8VLpWmHBu4gF8Zh8GFuw2ehk6P9SYX4hZj+ghI+wG9QmwD+CtLwSlZfDsVqme2ALJ cwBasAJ3EaaPD7UZDNUmrsCeYxqhcMxSx1HP3ErCaaDNGvS/Itn1qLRhkgFkKL9eg+0vaEzfiKlu Ag/rIWPIUrjt2e2YCx7guV7Bl0PilgBN34Cd3XFAEmhzAiWDAngI+BnAiMIzbwrODgs1RY4yM6uA rk7HqbfqIePbRNtU1e0pYBIgsgi7XxdMXCQnsMgCdPRoXPotTt2ufxz9ys0+FdQ48ASq0jAfgemr AiLZgxXkkwj0pH48epq/3e3TnQOjqNIHQJ1XQgi1rbMEq1sTN7zAX+Y8OUAB1FoX1V5gFlVzsoSq roxzqLUqfC5Qlah6zWofeDVU+hazh0qIVH0q/3RQ9bFJ/Q6tIOvyUFURN6xNYpYRlJ26ldL2cNSs +X/gg1OCTXs0Dr0rnDUoTurujBvWu1spSfe/z47UKhPEPGJCcwqm/6RgZlbZXP5d8NHngo4tkhf3 SRrW2hNVV0gc4U0ZqYyhav2ABjNheO99wfEBwVx4qYMRhRNnBCfOCLZtlnR3Su6722VNpZB06Yu9 VBhR6PlU0PiSxrHPlgBdAnYDPziVA98JWg9otD+vMTEp8Np/Viv9Qa0o2U2TvaNbshf15pBMxoDD +snoAHPAPPi7tCbUiX8whd+I3hvdCMD+pdswHRTA98CDCbpzwGFSf2FZZ8L1JOingceA8+D+1SUT KFARa0ZFZhCYSGWcIOUmnPWpqA+I7VE3qH8BqQVoftFh258AAAAASUVORK5CYII= " + height="32" + width="37" + transform="translate(-2.849091,128)" /> + <g + id="g3012" + transform="translate(3.526751,56.553389)"> + <rect + transform="matrix(0.91428571,0,0,0.91428571,-6.7159462,22.125649)" + y="88.945457" + x="-40.261818" + height="35" + width="35" + id="rect2998" + style="opacity:0.25;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="opacity:0.25;color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3000" + width="35" + height="35" + x="-40.261818" + y="88.945457" + transform="matrix(0.91428571,0,0,0.91428571,-6.7159462,-9.8744506)" /> + <rect + style="opacity:0.25;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3002" + width="35" + height="35" + x="-40.261818" + y="88.945457" + transform="matrix(0.91428571,0,0,0.91428571,-6.7159462,-41.87455)" /> + <rect + transform="matrix(0.91428571,0,0,0.91428571,-6.7159462,-105.87475)" + y="88.945457" + x="-40.261818" + height="35" + width="35" + id="rect3004" + style="opacity:0.25;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + transform="matrix(0.91428571,0,0,0.91428571,-6.7159462,-73.933131)" + y="88.945457" + x="-40.261818" + height="35" + width="35" + id="rect3006" + style="opacity:0.25;color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <rect + style="opacity:0.25;color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3008" + width="35" + height="35" + x="-40.261818" + y="88.945457" + transform="matrix(0.91428571,0,0,0.91428571,-6.7159462,-137.87485)" /> + <rect + style="opacity:0.25;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="rect3010" + width="35" + height="35" + x="-40.261818" + y="88.945457" + transform="matrix(0.91428571,0,0,0.91428571,-6.7159462,-169.87495)" /> + </g> + <g + transform="translate(10.202908,47.269491)" + style="font-size:40px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffd200;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + id="text3032"> + <path + d="m 15.008966,57.838889 c -2.3e-5,2.466685 -0.538616,4.060811 -1.894194,5.467417 -1.054946,1.094657 -2.303221,1.89304 -3.417418,2.888389 -1.3887681,1.240633 -1.8022524,2.151037 -1.8022524,4.521446 0,1.718757 -6.5358094,1.427418 -6.5633568,0 -0.00582,-0.301783 -0.05,-0.583326 -0.05,-0.85 1e-7,-2.533323 0.6717945,-3.740325 1.8678617,-5.409835 0.4039444,-0.563839 1.8283618,-1.49799 3.6593592,-3.067417 1.2023381,-1.030576 2.3,-2.429147 2.3,-3.5625 0,-1.633311 -0.9833482,-2.45 -2.95,-2.45 -1.1000118,0 -2.8107328,0.297552 -4.15,0.85 -1.32754865,0.547614 -2.2951374,1.530825 -3.00000002,2.2625 -1.92487248,1.998093 -4.28738218,-3.008672 -3.04999998,-4.7 1.9555342,-2.672941 5.3333248,-3.8 9.6,-3.8 2.6999845,0 4.8973613,0.620316 6.6000003,1.85 1.897364,1.370318 2.849977,3.36669 2.85,6 m -8.3591072,20.8 c -0.5518911,0.552235 -1.3601607,0.947998 -2.1408931,0.95 -0.7898695,0.002 -1.616293,-0.387535 -2.170848,-0.95 -0.5966823,-0.605193 -0.9922789,-1.500131 -0.988987,-2.35 0.00323,-0.834533 0.4064749,-1.702393 0.988987,-2.3 0.5561006,-0.570511 1.3741506,-1.002113 2.170848,-1 0.7876395,0.0021 1.5872817,0.439737 2.1408931,1 0.5914971,0.598604 1.0376637,1.458463 1.041039,2.3 0.00344,0.856748 -0.4354103,1.743994 -1.041039,2.35 z" + style="font-size:50px;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffd200;fill-opacity:1;stroke:none;font-family:Blue Highway;-inkscape-font-specification:Blue Highway Bold" + id="path3037" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssssssssssssssaaaaaaaaa" /> + </g> + <path + style="font-size:50px;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ff9c00;fill-opacity:1;stroke:none;font-family:Blue Highway;-inkscape-font-specification:Blue Highway Bold" + d="M 15.75,33.1875 C 11.483325,33.1875 8.1117842,34.327059 6.15625,37 5.028237,38.541836 6.8909916,42.82865 8.6875,42.0625 8.0444122,40.856972 7.7704917,39.232528 8.375,38.40625 10.330534,35.733309 13.702075,34.625 17.96875,34.625 c 1.955092,0 3.631493,0.322395 5.0625,0.96875 C 22.823618,35.402875 22.61217,35.23379 22.375,35.0625 20.672361,33.832816 18.449984,33.1875 15.75,33.1875 z M 18.0625,38.5 c -0.36442,0 -0.787239,0.06124 -1.25,0.125 1.665883,0.119721 2.5,0.903015 2.5,2.40625 0,1.133353 -1.110162,2.531924 -2.3125,3.5625 -1.830997,1.569427 -3.252306,2.498661 -3.65625,3.0625 C 12.147683,49.32576 11.5,50.529177 11.5,53.0625 c 0,0.266674 0.02543,0.573217 0.03125,0.875 0.0106,0.549281 0.99272,0.899475 2.1875,1.0625 -0.01384,-0.169434 -0.03125,-0.342106 -0.03125,-0.5 0,-2.533323 0.678933,-3.73674 1.875,-5.40625 0.403944,-0.563839 1.825253,-1.524323 3.65625,-3.09375 1.202338,-1.030576 2,-2.804147 2,-3.9375 0,-1.633311 -1.189598,-3.5625 -3.15625,-3.5625 z m -3.34375,17.6875 c -0.796697,-0.0021 -1.631399,0.429489 -2.1875,1 -0.582512,0.597607 -0.96552,1.477967 -0.96875,2.3125 -0.0033,0.849869 0.372068,1.738557 0.96875,2.34375 0.437274,0.443511 1.063363,0.753702 1.6875,0.875 -0.490318,-0.578134 -0.867683,-1.273279 -0.90625,-2 -0.04423,-0.833366 0.417488,-1.683643 1,-2.28125 0.556101,-0.570512 1.35955,-0.99997 2.15625,-1 0.216333,-8e-6 0.441721,0.0441 0.65625,0.09375 -0.09179,-0.117261 -0.179304,-0.240579 -0.28125,-0.34375 -0.360664,-0.364997 -0.814342,-0.638112 -1.3125,-0.8125 -0.216821,-0.04117 -0.436191,-0.09985 -0.625,-0.15625 -0.04206,-0.0037 -0.08293,-0.02996 -0.125,-0.03125 -0.02023,-6.23e-4 -0.04228,5.4e-5 -0.0625,0 z" + id="path3062" + inkscape:connector-curvature="0" + transform="translate(0,64.05818)" /> + <g + id="g3029" + transform="translate(0.177849,64.05818)"> + <path + d="m 11.303256,19.777238 c -0.03334,0.33335 -0.211103,1.313662 -0.2,2.95 l 0.03499,5.156745 C 11.15092,29.751896 5.868348,29.631926 5.8554955,27.6982 l -0.033619,-5.058136 c -0.00821,-1.235092 -0.1724587,-2.214142 -0.2,-2.95 L 5.2166164,8.8621882 C 5.1452969,6.9566491 11.942601,6.8898624 11.828856,9.1826235 L 11.303252,19.777238 M 10.475624,36.052449 C 9.9512694,36.590344 9.1763118,36.97929 8.4251706,36.98741 7.571138,36.996642 6.668651,36.585565 6.0714109,35.975023 c -0.5908326,-0.603991 -0.9531814,-1.505086 -0.95,-2.35 0.00312,-0.829485 0.3773402,-1.699903 0.95,-2.3 0.5338724,-0.559451 1.3271485,-0.982489 2.1004527,-0.984961 0.8456366,-0.0027 1.7124043,0.457898 2.3037604,1.062387 0.584611,0.597594 0.996737,1.464011 1,2.3 0.0033,0.8513 -0.405757,1.740412 -1,2.35 z" + style="font-weight:bold;fill:#ffd200;fill-opacity:1;stroke:none;marker:none;-inkscape-font-specification:Blue Highway Bold" + id="path3005" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssssssssaaaaaaaaa" + transform="matrix(0.99836317,0.05719244,-0.05719244,0.99836317,8.584569,-6.7971157)" /> + <path + style="font-weight:bold;fill:#ff9c00;fill-opacity:1;stroke:none;marker:none;-inkscape-font-specification:Blue Highway Bold" + d="M 15.625,1.125 C 14.438815,1.2272908 13.482917,1.6288129 13.46875,2.34375 L 13.25,13.1875 c -0.01459,0.736229 0.09369,1.70396 0.03125,2.9375 l -0.25,5.0625 c -0.04178,0.825355 0.904644,1.349212 2,1.5625 l 0.25,-4.9375 C 15.343691,16.57896 15.235411,15.611229 15.25,14.875 L 15.46875,4.03125 C 15.492135,2.8511455 18.103432,2.5359468 20.03125,3 20.099847,1.6183348 17.571739,0.95712267 15.625,1.125 z m -0.4375,22.84375 c -0.77218,-0.04176 -1.591255,0.315748 -2.15625,0.84375 -0.606043,0.566363 -1.043195,1.422051 -1.09375,2.25 -0.0515,0.843349 0.288428,1.769456 0.84375,2.40625 0.390629,0.44794 0.917913,0.777885 1.5,0.96875 -0.340694,-0.613055 -0.563593,-1.3216 -0.53125,-2 0.0395,-0.82855 0.487707,-1.683637 1.09375,-2.25 0.564995,-0.528002 1.385861,-0.91088 2.15625,-0.84375 0.237058,0.02066 0.462552,0.06891 0.6875,0.15625 -0.08149,-0.120517 -0.156589,-0.236641 -0.25,-0.34375 -0.331037,-0.379581 -0.776742,-0.719615 -1.25,-0.9375 -0.126241,-0.05171 -0.264005,-0.09341 -0.375,-0.15625 -0.206086,-0.06414 -0.413898,-0.08233 -0.625,-0.09375 z" + transform="translate(-0.17784887,0)" + id="path3077" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.99836317,0.05719244,-0.05719244,0.99836317,8.584569,-6.7971157)" + sodipodi:nodetypes="sssssssssaaaaaaaaa" + inkscape:connector-curvature="0" + id="path3007" + style="font-weight:bold;color:#000000;fill:none;stroke:#120d02;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;-inkscape-font-specification:Blue Highway Bold" + d="m 11.303256,19.777238 c -0.03334,0.33335 -0.211103,1.313662 -0.2,2.95 l 0.03499,5.156745 C 11.15092,29.751896 5.868348,29.631926 5.8554955,27.6982 l -0.033619,-5.058136 c -0.00821,-1.235092 -0.1724587,-2.214142 -0.2,-2.95 L 5.2166164,8.8621882 C 5.1452969,6.9566491 11.942601,6.8898624 11.828856,9.1826235 L 11.303252,19.777238 M 10.475624,36.052449 C 9.9512694,36.590344 9.1763118,36.97929 8.4251706,36.98741 7.571138,36.996642 6.668651,36.585565 6.0714109,35.975023 c -0.5908326,-0.603991 -0.9531814,-1.505086 -0.95,-2.35 0.00312,-0.829485 0.3773402,-1.699903 0.95,-2.3 0.5338724,-0.559451 1.3271485,-0.982489 2.1004527,-0.984961 0.8456366,-0.0027 1.7124043,0.457898 2.3037604,1.062387 0.584611,0.597594 0.996737,1.464011 1,2.3 0.0033,0.8513 -0.405757,1.740412 -1,2.35 z" /> + </g> + <g + id="g3039" + style="font-size:40px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;color:#000000;fill:none;stroke:#120d02;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans" + transform="translate(10.202908,47.269491)"> + <path + sodipodi:nodetypes="ssssssssssssssssaaaaaaaaa" + inkscape:connector-curvature="0" + id="path3041" + style="font-size:50px;font-variant:normal;font-weight:bold;font-stretch:normal;color:#000000;fill:none;stroke:#120d02;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Blue Highway;-inkscape-font-specification:Blue Highway Bold" + d="m 15.008966,57.838889 c -2.3e-5,2.466685 -0.538616,4.060811 -1.894194,5.467417 -1.054946,1.094657 -2.303221,1.89304 -3.417418,2.888389 -1.3887681,1.240633 -1.8022524,2.151037 -1.8022524,4.521446 0,1.718757 -6.5358094,1.427418 -6.5633568,0 -0.00582,-0.301783 -0.05,-0.583326 -0.05,-0.85 1e-7,-2.533323 0.6717945,-3.740325 1.8678617,-5.409835 0.4039444,-0.563839 1.8283618,-1.49799 3.6593592,-3.067417 1.2023381,-1.030576 2.3,-2.429147 2.3,-3.5625 0,-1.633311 -0.9833482,-2.45 -2.95,-2.45 -1.1000118,0 -2.8107328,0.297552 -4.15,0.85 -1.32754865,0.547614 -2.2951374,1.530825 -3.00000002,2.2625 -1.92487248,1.998093 -4.28738218,-3.008672 -3.04999998,-4.7 1.9555342,-2.672941 5.3333248,-3.8 9.6,-3.8 2.6999845,0 4.8973613,0.620316 6.6000003,1.85 1.897364,1.370318 2.849977,3.36669 2.85,6 m -8.3591072,20.8 c -0.5518911,0.552235 -1.3601607,0.947998 -2.1408931,0.95 -0.7898695,0.002 -1.616293,-0.387535 -2.170848,-0.95 -0.5966823,-0.605193 -0.9922789,-1.500131 -0.988987,-2.35 0.00323,-0.834533 0.4064749,-1.702393 0.988987,-2.3 0.5561006,-0.570511 1.3741506,-1.002113 2.170848,-1 0.7876395,0.0021 1.5872817,0.439737 2.1408931,1 0.5914971,0.598604 1.0376637,1.458463 1.041039,2.3 0.00344,0.856748 -0.4354103,1.743994 -1.041039,2.35 z" /> + </g> +</svg>
--- a/share/hedgewars/Data/Locale/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,6 +1,7 @@ file(GLOB txttrans2 ??.txt) file(GLOB txttrans5 ?????.txt) file(GLOB tsfiles *.ts) +file(GLOB luafiles *.lua) QT4_ADD_TRANSLATION(QM ${tsfiles}) @@ -13,6 +14,7 @@ ${txttrans2} ${txttrans5} ${QM} + ${luafiles} DESTINATION ${SHAREPATH}Data/Locale )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/de.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,95 @@ +locale = { +-- [":("] = "", +-- ["!!!"] = "", +-- ["A game of luck"] = "", + ["Aiming Practice"] = "Zielübung", --Bazooka, Shotgun, SniperRifle + ["Bat balls at your enemies and|push them into the sea!"] = "Schlage Bälle auf deine Widersacher|und lass sie ins Meer fallen!", + ["Bat your opponents through the|baskets and out of the map!"] = "Schlage deine Widersacher durch|die Körbe und aus der Karte hinaus!", + ["Bazooka Training"] = "Bazooka-Training", +-- ["Best laps per team: "] = "", +-- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = "", +-- ["by mikade"] = "", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag +-- ["CAPTURE THE FLAG"] = "", +-- ["Codename: Teamwork"] = "", +-- ["Congratulations!"] = "", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulation! Du hast alle Ziele innerhalb der|verfügbaren Zeit ausgeschaltet.", --Bazooka, Shotgun, SniperRifle +-- ["CONTROL"] = "", +-- ["Control pillars to score points."] = "", +-- ["CONTROL v0.3"] = "", +-- ["CTF_BLIZZARD"] = "", +-- ["CUSTOM BUILD 0.2"] = "", +-- ["Cybernetic Empire"] = "", +-- ["DAMMIT, ROOKIE!"] = "", +-- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", +-- ["Dangerous Ducklings"] = "", +-- ["Eliminate all enemies"] = "", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Eliminiere alle Ziele bevor die Zeit ausläuft.|Du hast in dieser Mission unbegrenzte Munition.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate Poison before the time runs out"] = "", +-- ["Eliminate the Blue Team"] = "", +-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Enjoy the swim..."] = "", +-- ["Fastest lap: "] = "", +-- ["Feeble Resistance"] = "", +-- ["Flag captured!"] = "", +-- ["Flag respawned!"] = "", +-- ["Flag returned!"] = "", +-- ["Flags will be placed where each team ends their turn."] = "", +-- ["GAME OVER!"] = "", +-- ["Game Started!"] = "", +-- ["Get on over there and take him out!"] = "", +-- ["Goal:"] = "", +-- ["GO! GO! GO!"] = "", +-- ["Good birdy......"] = "", +-- ["Good luck out there!"] = "", + ["Hedgewars-Basketball"] = "Hedgewars-Basketball", + ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hmmm..."] = "", +-- ["Hooray!"] = "", + ["Hunter"] = "Jäger", --Bazooka, Shotgun, SniperRifle +-- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["- Jumping is disabled"] = "", +-- ["Listen up, maggot!!"] = "", +-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["NEW fastest lap: "] = "", +-- ["NO JUMPING"] = "", + ["Not So Friendly Match"] = "Kein-so-Freundschaftsspiel", -- Basketball, Knockball +-- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "Oh nein! Die Zeit ist um! Versuche es nochmal.", --Bazooka, Shotgun, SniperRifle +-- ["Operation Diver"] = "", +-- ["Opposing Team: "] = "", +-- ["Pathetic Hog #%d"] = "", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle +-- ["Poison"] = "", +-- ["Random Weapons"] = "", +-- [" - 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"] = "", +-- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["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 +-- ["See ya!"] = "", + ["Shotgun Team"] = "Entrenamiento con escopeta", + ["Shotgun Training"] = "Schrotflinten-Training", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s ist draußen und Team %d|erhält eine Strafe!| |Punktestand:", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "%s ist draußen und Team %d|erhält einen Punkt!| |Punktestand:", -- Basketball, Knockball + ["Sniper Training"] = "Scharfschützen-Training", + ["Sniperz"] = "Heckenschützen", +-- ["Spooky Tree"] = "", +-- ["Team %d: "] = "", +-- ["Team Scores:"] = "", +-- ["That was pointless."] = "", +-- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The flag will respawn next round."] = "", +-- ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "", +-- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["TrophyRace"] = "", +-- ["T_T"] = "", +-- ["Unit 3378"] = "", +-- ["Use your rope to get from start to finish as fast as you can!"] = "", +-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["You have SCORED!!"] = "", +-- ["You've failed. Try again."] = "", +-- ["You've reached the goal!| |Time:"] = "", +-- ["You've reached the goal!| |Time: "] = "", + ["'Zooka Team"] = "Die Knalltüten", + }
--- a/share/hedgewars/Data/Locale/de.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/de.txt Tue Jan 04 12:53:46 2011 +0100 @@ -50,6 +50,9 @@ 00:47=Haftmine 00:48=Hammer 00:49=Totenbeschwörung +00:50=Bohr-Luftangriff +00:51=Schlammball +00:52=Keine Waffe ausgewählt 01:00=Auf in die Schlacht!
--- a/share/hedgewars/Data/Locale/en.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/en.txt Tue Jan 04 12:53:46 2011 +0100 @@ -51,6 +51,8 @@ 00:48=Hammer 00:49=Resurrector 00:50=Drill Strike +00:51=Mudball +00:52=No weapon selected 01:00=Let's fight! 01:01=Round draw
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/es.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,96 @@ +locale = { + [":("] = ":(", + ["!!!"] = "!!!", + ["A game of luck"] = "Un juego de azar", + ["Aiming Practice"] = "Practica tu puntería", --Bazooka, Shotgun, SniperRifle + ["Bat balls at your enemies and|push them into the sea!"] = "¡Batea pelotas hacia tus enemigos|y hazlos caer al agua!", + ["Bat your opponents through the|baskets and out of the map!"] = "¡Batea a tus enemigos fuera del campo de juego|a través de las canastas laterales!", + ["Bazooka Training"] = "Entrenamiento con bazuca", + ["Best laps per team: "] = "Mejores tiempos por equipo: ", + ["Bloody Rookies"] = "Reclutas", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = "", + ["by mikade"] = "por mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag + ["CAPTURE THE FLAG"] = "Capturar la bandera", + ["Codename: Teamwork"] = "Nombre en clave: Trabajo en equipo", + ["Congratulations!"] = "¡Felicidades!", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "¡Felicidades! Has destruido todos los objectivos|dentro del tiempo establecido.", --Bazooka, Shotgun, SniperRifle + ["CONTROL"] = "DOMINACIÓN", + ["Control pillars to score points."] = "Controla los pilares para anotar puntos.", + ["CONTROL v0.3"] = "DOMINACIÓN v0.3", +-- ["CTF_BLIZZARD"] = "", + ["CUSTOM BUILD 0.2"] = "COMPILACIÓN 0.2", + ["Cybernetic Empire"] = "Imperio cibernético", + ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "¡MALDITA SEA, RECLUTA! ¡FUERA DE MI CABEZA!", + ["DAMMIT, ROOKIE!"] = "¡MALDITA SEA, RECLUTA!", + ["Dangerous Ducklings"] = "Patitos peligrosos", + ["Eliminate all enemies"] = "Elimina a todos los enemigos", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Destruye todos los objetivos antes de que se agote el tiempo.|La munición en esta misión es ilimitada.", --Bazooka, Shotgun, SniperRifle + ["Eliminate Poison before the time runs out"] = "Acaba con los Tóxicos antes de que se agote el tiempo", + ["Eliminate the Blue Team"] = "Elimina al Equipo azul", + ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Elimina a la Unidad 3378 |- Resustencia Fútil debe sobrevivir", + ["Enjoy the swim..."] = "Disfruta del baño...", + ["Fastest lap: "] = "Vuelta rápida: ", + ["Feeble Resistance"] = "Resistencia Fútil", + ["Flag captured!"] = "¡Bandera capturada!", + ["Flag respawned!"] = "¡Bandera restablecida!", + ["Flag returned!"] = "¡Bandera recuperada!", + ["Flags will be placed where each team ends their turn."] = "Las banderas serán colocadas donde los jugadores terminen su primer turno.", + ["GAME OVER!"] = "¡FIN DEL JUEGO!", + ["Game Started!"] = "¡El juego ha empezado!", + ["Get on over there and take him out!"] = "¡Ves allí y elimínalo!", +-- ["Goal:"] = "", + ["GO! GO! GO!"] = "¡VAMOS! ¡VAMOS! ¡VAMOS!", + ["Good birdy......"] = "Buen pajarito......", + ["Good luck out there!"] = "¡Buena suerte!", + ["Hedgewars-Basketball"] = "Hedgewars-Baloncesto", + ["Hedgewars-Knockball"] = "Hedgewars-Knockball", + ["Hmmm..."] = "Mmm...", + ["Hooray!"] = "¡Hurra!", + ["Hunter"] = "Artillero", --Bazooka, Shotgun, SniperRifle + ["Instructor"] = "Instructor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings + ["- Jumping is disabled"] = "- No se puede saltar", + ["Listen up, maggot!!"] = "¡Atento, escoria!", +-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION FAILED"] = "MISIÓN FALLIDA", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION SUCCESSFUL"] = "MISIÓN COMPLETADA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["NEW fastest lap: "] = "NUEVA vuelta rápida: ", + ["NO JUMPING"] = "PROHIBIDO SALTAR", + ["Not So Friendly Match"] = "Partido no-tan-amistoso", -- Basketball, Knockball + ["Oh no! Just try again!"] = "¡Oh, no! ¿Por qué no lo intentas de nuevo?", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "¡Oh, no, se te acabó el tiempo! ¿Por qué no lo intentas de nuevo?", --Bazooka, Shotgun, SniperRifle + ["Operation Diver"] = "Buzo", + ["Opposing Team: "] = "Equipo enemigo: ", + ["Pathetic Hog #%d"] = "Erizo patético #%d", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle + ["Poison"] = "Veneno", + ["Random Weapons"] = "Armas aleatorias", + [" - 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"] = "- Vuelve a tu base con la bandera enemiga para anotar un punto | - El equipo que anote 3 puntos gana | - Sólo se puede anotar si tu propia bandera está en tu base | - Los erizos resucitan cuando mueren", +-- ["RULES OF THE GAME [Press ESC to view]"] = "", + ["RULES OF THE GAME [Press ESC to view]"] = "REGLAS DEL JUEGO (Presiona ESC para leerlas)", +-- ["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 + ["See ya!"] = "¡Hasta otra!", + ["Shotgun Team"] = "Escopeteros", + ["Shotgun Training"] = "Entrenamiento con escopeta", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "¡%s cayó y Equipo %d|anotó una falta!| |Puntuación:", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "¡%s cayó y Equipo %d|anotó un tanto!| |Puntuación:", -- Basketball, Knockball + ["Sniper Training"] = "Entrenamiento con rifle francotirador", + ["Sniperz"] = "Francotiradores", + ["Spooky Tree"] = "Árbol tenebroso", + ["Team %d: "] = "Equipo %d", + ["Team Scores:"] = "Puntuaciones:", +-- ["That was pointless."] = "", + ["The enemy is hiding out on yonder ducky!"] = "¡El enemigo está escondido detrás del patito del fondo!", +-- ["The flag will respawn next round."] = "", + ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "¡Alguien ha saboteado tu arsenal, tendrás|que apañarte con la primera arma que encuentres!", + ["Toxic Team"] = "Tóxicos", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TrophyRace"] = "TrophyRace", + ["T_T"] = "T_T", + ["Unit 3378"] = "Unidad 3378", + ["Use your rope to get from start to finish as fast as you can!"] = "¡Usa tu cuerda para llegar a la salida lo más rápido que puedas!", + ["Victory for the "] = "La victoria es para", -- CTF_Blizzard, Capture_the_Flag + ["You have SCORED!!"] = "¡Has anotado!", + ["You've failed. Try again."] = "Has fracasado. Inténtalo de nuevo.", + ["You've reached the goal!| |Time: "] = "¡Has llegado a la meta!| |Tiempo: ", + ["You've reached the goal!| |Time:"] = "¡Has llegado a la meta!| |Tiempo:", + ["'Zooka Team"] = "Bazuqueros", + }
--- a/share/hedgewars/Data/Locale/es.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/es.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,5 +1,5 @@ ; Spanish locale -; Revision 3987 +; Revision 4632 00:00=Granada 00:01=Granada de frag. @@ -51,6 +51,8 @@ 00:47=Bomba lapa 00:48=Mazo 00:49=Resurrección +00:50=Bombardeo perforador aéreo +00:51=Bola de tierra 01:00=¡Luchad! 01:01=Empate @@ -430,6 +432,7 @@ 03:47=¡Pégalo en un buen sitio! 03:48=Pablo clavó un clavito 03:49=Hace exactamente lo que dice +03:50=Para los amantes de los topos ; Descripciones de armamento ( líneas delimitadas con | ) 04:00=Ataca a tus enemigos usando una sencilla granada.|Explotará una vez el temporizador llegue a cero.|1-5: ajustar temporizador.|Atacar: mantener presionado para lanzar más lejos.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/fr.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,94 @@ +locale = { +-- [":("] = "", +-- ["!!!"] = "", + ["A game of luck"] = "Un jeu de chance", + ["Aiming Practice"] = "Entrainement de tir", --Bazooka, Shotgun, SniperRifle + ["Bat balls at your enemies and|push them into the sea!"] = "Frappez vos ennemis à la batte|et envoyez-les à la mer !", + ["Bat your opponents through the|baskets and out of the map!"] = "Frappez vos ennemis à la batte|, marquez des paniers ou envoyez-les à la mer !", + ["Bazooka Training"] = "Entrainement au Bazooka", + ["Best laps per team: "] = "Meilleur temps par équipe", + ["Bloody Rookies"] = "Nouvelles recrues", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = "", + ["by mikade"] = "par mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag + ["CAPTURE THE FLAG"] = "Capturez le drapeau !", + ["Codename: Teamwork"] = "Nom de code : Travail d'équipe", + ["Congratulations!"] = "Félicitations !", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Félicitations ! Vous avez éliminé toutes les cibles|pendant le temps alloué.", --Bazooka, Shotgun, SniperRifle + ["CONTROL"] = "Domination", + ["Control pillars to score points."] = "Contrôlez les piliers pour marquer des points", + ["CONTROL v0.3"] = "Domination v0.3", +-- ["CTF_BLIZZARD"] = "", + ["CUSTOM BUILD 0.2"] = "Compilation 0.2", + ["Cybernetic Empire"] = "Empire cybernétique", + ["DAMMIT, ROOKIE!"] = "Et merde, recrue", + ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Et merde, recrue ! Dégage de me tête !", + ["Dangerous Ducklings"] = "Canetons dangereux", + ["Eliminate all enemies"] = "Éliminez tous les ennemis", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Éliminez toutes les cibles avant d'être à cours de temps.|Vos munitions sont illimitées pour cette mission.", --Bazooka, Shotgun, SniperRifle + ["Eliminate Poison before the time runs out"] = "Éliminez tout le Poison avant d'être à cours de temps.", + ["Eliminate the Blue Team"] = "Éliminez l'équipe bleue", + ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "Éliminez l'unité 3378|- Résistance Futile doit survivre", + ["Enjoy the swim..."] = "Profitez du bain ...", + ["Fastest lap: "] = "Meilleur tour : ", + ["Feeble Resistance"] = "Résistance Futile", + ["Flag captured!"] = "Drapeau capturé !", + ["Flag respawned!"] = "Drapeau réapparu", + ["Flag returned!"] = "Drapeau récupéré", + ["Flags will be placed where each team ends their turn."] = "Les Drapeaux seront placès là où chaque équipe terminera son tour.", + ["GAME OVER!"] = "Fin du jeu ! ", + ["Game Started!"] = "Début du jeu ! ", + ["Get on over there and take him out!"] = "Viens par ici et débarrasse-toi de lui ! ", +-- ["Goal:"] = "", +-- ["GO! GO! GO!"] = "", + ["Good birdy......"] = "Gentil oiseau ...", + ["Good luck out there!"] = "Bonne chance pour sortir d'ici", +-- ["Hedgewars-Basketball"] = "", +-- ["Hedgewars-Knockball"] = "", +-- ["Hmmm..."] = "", + ["Hooray!"] = "Hourra ! ", + ["Hunter"] = "Chasseur", --Bazooka, Shotgun, SniperRifle + ["Instructor"] = "Instructeur", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings + ["- Jumping is disabled"] = "Saut désactivé", + ["Listen up, maggot!!"] = "Écoutez, asticots", +-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION FAILED"] = "Mission échouée", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION SUCCESSFUL"] = "Mission réussie", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["NEW fastest lap: "] = "Nouveau meilleur temps", + ["NO JUMPING"] = "PAS DE SAUT", + ["Not So Friendly Match"] = "Match pas si amical", -- Basketball, Knockball + ["Oh no! Just try again!"] = "Eh non ! Essayez encore ! ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "Eh non ! Temps écoulé ! Essayez encore ! ", --Bazooka, Shotgun, SniperRifle +-- ["Operation Diver"] = "", + ["Opposing Team: "] = "Équipe opposée", + ["Pathetic Hog #%d"] = "Hérisson pathétique #%d", + ["points"] = "points", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle + ["Poison"] = "Poison", + ["Random Weapons"] = "Armes aléatoires", + [" - 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"] = "Ramenez le drapeau ennemi à votre base pour marquer | -La première équipe à 3 captures gagne | - Vous marquez uniquement si votre drapeau est dans votre base | - Les hérissons vont lâcher le drapeau s'ils sont tués ou noyés | - Les drapeaux lâchés peuvent être ramenés ou recapturés | - Les hérissons réapparaissent quand ils sont tués", + ["RULES OF THE GAME [Press ESC to view]"] = "RÈGLES DU JEU | [Appuyez Échap pour voir]", +-- ["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 + ["See ya!"] = "Bye bye", + ["Shotgun Team"] = "Équipe de choc", + ["Shotgun Training"] = "Entrainement au fusil", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s est dehors et l'équipe %d| reçoit une pénalité ! | |Score : ", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "%s est dehors et l'équipe %d| reçoit un point ! | |Score : ", -- Basketball, Knockball + ["Sniper Training"] = "Entrainement au fusil de sniper", +-- ["Sniperz"] = "", + ["Spooky Tree"] = "Arbre fantomatique", + ["Team %d: "] = "Équipe %d : ", + ["Team Scores:"] = "Score de l'équipe", + ["That was pointless."] = "C'était inutile.", + ["The enemy is hiding out on yonder ducky!"] = "L'ennemi se cache là-bas sur le canard !", + ["The flag will respawn next round."] = "Le drapeau va réapparaitre au prochain tour", + ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Il y a eu un mélange avec votre équipement et maintenant| vous devrez utiliser ce qui vous arrivera dans les mains !", + ["Toxic Team"] = "Équipe toxique", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["TrophyRace"] = "", +-- ["T_T"] = "", + ["Unit 3378"] = "Unité 3378", + ["Use your rope to get from start to finish as fast as you can!"] = "Utilisez votre Corde Ninja pour aller du début à la fin aussi vite que vous pouvez !", + ["Victory for the "] = "Victoire pour ", -- CTF_Blizzard, Capture_the_Flag + ["You have SCORED!!"] = "Vous avez marqué !", + ["You've failed. Try again."] = "Vous avez échoué. Essayez encore.", + ["You've reached the goal!| |Time: "] = "Vous avez atteins le but !| |Temps : ", +-- ["'Zooka Team"] = "", + }
--- a/share/hedgewars/Data/Locale/fr.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/fr.txt Tue Jan 04 12:53:46 2011 +0100 @@ -42,6 +42,16 @@ 00:39=Soucoupe Volante 00:40=Cocktail Molotov 00:41=Piaf +00:42=Fusil à portails +00:43=Attaque du Piano +00:44=Vieux Limburger +00:45=Fusil Sinus (bêta) +00:46=Lance-flammes +00:47=Mines adhésives +00:48=Marteau +00:49=Resurrecteur +00:50=Attaque perforante +00:51=Boule de terre 01:00=C'est parti ! 01:01=Round ex-aequo @@ -137,7 +147,7 @@ 02:01=%1 est parti visiter l'aquarium 02:01=%1 a trouvé la cité perdue d'Atlantide 02:01=%1 se propose pour le rôle principal de Bioshock 3 -02:01=Ta paggaie pour chiens aurait pû servir, %1 +02:01=Ta pagaie pour chiens aurait pû servir, %1 02:01=%1 aurait dû acheter un jet ski 02:01=%1 n'aime pas les sports aquatiques 02:01=%1 va faire des bulles pour toujours @@ -178,7 +188,7 @@ 02:02=Que la bataille du jour commence ! 02:02=Que la bataille de l'heure commence ! 02:02=Faites de votre mieux ! -02:02=Detruisez l'ennemi ! +02:02=Détruisez l'ennemi ! 02:02=Bonne chance ! 02:02=Amusez-vous bien ! 02:02=Combattez avec honneur ! @@ -265,7 +275,7 @@ 02:08=%1 est une vache ! 02:08=%1 attend la mort subite 02:08=%1 n'est pas du genre bagarreur -02:08=%1 réflechit au sens de la vie +02:08=%1 réfléchit au sens de la vie 02:08=%1 n'était pas un bon tireur de toutes manières 02:08=%1 ne voulait pas rejoindre l'armée au début 02:08=Arrête de perdre ton temps, %1 @@ -299,7 +309,7 @@ 02:09=%1 montre à l'ennemi de quoi il est capable 02:09=%1 ne peut pas être parfait tout le temps 02:09=Ne t'inquiète pas %1, personne p'est narfait -02:09=%1 a fait cela totallement intentionnellement +02:09=%1 a fait cela totalement intentionnellement 02:09=Je ne le dirais à personne, %1 02:09=C'est embarrassant ! 02:09=Je suis sûr que personne n'a vu cela %1 @@ -397,7 +407,15 @@ 04:38= Le fusil à lunettes peut être une de armes les plus dévastatrices|de tout votre arsenal, toutefois il est totalement inefficace|en combat rapproché. Les dommages qu'il cause augmentent suivant|la distance de la cible.|Attaque : Tirez (deux fois) 04:39=Volez vers d'autres secteurs de la carte en utilisant une soucoupe|volante. Ce moyen de transport pas facile à dompter est capable de vous|emporter vers presque tous les lieux du champ de bataille|Attaque : Activer|Haut/Gauche/Droite : appliquez la force dans une direction 04:40=Mettez le feu à un territoire en utilisant cette bouteille remplie|de liquide inflammable.|Attaque : maintenez pour tirer avec plus de force -04:41=Une arme naturelle qui peut suffire à dégommer même la soucoupe|volante. Le piaf peut transporter votre hérisson et|balancer de soeufs sur vos ennemis !|Attaque : Activez et larguez des oeufs|Haut/Gauche/Droite: voltigez vers une direction. +04:41=Une arme naturelle qui peut suffire à dégommer même la soucoupe|volante. Le piaf peut transporter votre hérisson et|balancer des œufs sur vos ennemis !|Attaque : Activez et larguez des œufs|Haut/Gauche/Droite: voltigez vers une direction. +04:42=Ce fusil à portails est capable de vous transporter instantanément,| ainsi que vos ennemis ou des armes entre deux points du terrain. |Utilisez-le intelligemment et votre campagne sera un ... GRAND SUCCÈS !|Attaque : Crée un portail|Modificateur : Change la couleur du portail +04:43=Faites de vos débuts musicaux un succès explosif !| Lâchez un piano depuis les cieux, mais attention ... quelqu'un doit|jouer dessus, et cela pourrait lui coûter sa vie !|Curseur : Choix de la cible|F1-F9 : Jouer du piano +04:44=Ce n'est pas juste un fromage, c'est une arme biologique !|Il ne provoquera de gros dommages une fois que le compteur|atteindra zéro mais il empoisonnera tous les malchanceux touchés par l'odeur !|1-5 : Lancez le minuteur de la grenade|Attaque : maintenez pour la lancer avec plus de force +04:45=Tous ces cours de physique ont finalement payé,|lancez une onde Sinus dévastatrice à vos ennemis.|Attention au recul ! (cette arme est incomplète)|Attaque : Activez +04:46=Recouvrez vos ennemis de sifflantes flammes liquides.|Hauts les cœurs !|Attaque : Activez|Haut/Bas : Continuez à viser|Droite/Gauche : Changer la puissance de tir +04:47=Doublez le fun avec deux mines, piquantes, furtives et collantes.|Provoquez une réaction en chaine ou défendez-vous ! (ou les deux)|Attaque : maintenez pour tirer avec plus de force (deux fois) +04:48=Pourquoi les taupes auraient tous le fun ?|Un bon coup de ce marteau enlèvera un tiers de la santé du hérisson et l'enverra dans le sol|Attaque : Activez +04:49=Ressuscite vos amis !Mais méfiez-vous, cela ressuscite également vos ennemis.|Attaque : Maintenez attaque pressée pour ressusciter lentement|Haut : Accélérer la résurrection ; Game goal strings 05:00=Modes de jeu
--- a/share/hedgewars/Data/Locale/hedgewars_ar.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>جديد</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -42,7 +46,7 @@ <translation>Edit schemes</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -69,7 +73,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>جديد</translation> + <translation type="obsolete">جديد</translation> </message> <message> <source>Error</source> @@ -183,6 +187,14 @@ <source>Large floating islands</source> <translation type="unfinished">جزر طائفة كبيرة</translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -313,6 +325,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">تحميل</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -706,20 +749,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>طريقة اسلحة جديدة</translation> + <translation type="obsolete">طريقة اسلحة جديدة</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>تغيير طريقة الاسلحة</translation> + <translation type="obsolete">تغيير طريقة الاسلحة</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>حذف طريقة الاسلحة</translation> + <translation type="obsolete">حذف طريقة الاسلحة</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -979,6 +1046,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -990,6 +1069,14 @@ <source>Delete</source> <translation>حذف</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">جديد</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1166,6 +1253,10 @@ <source>Default</source> <translation type="obsolete">التلقائي</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1187,7 +1278,7 @@ </message> <message> <source>Weapons</source> - <translation>اسلحة</translation> + <translation type="obsolete">اسلحة</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1217,6 +1308,10 @@ <source>Misc</source> <translation>متنوعة</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1385,7 +1480,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1435,7 +1534,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Can not delete default weapon set</translation> + <translation type="obsolete">Can not delete default weapon set</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1453,6 +1552,30 @@ <source>Can not overwrite default weapon set '%1'!</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">فرق</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1547,6 +1670,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1597,6 +1724,14 @@ <source>Delays</source> <translation>التأخير</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">جديد</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1703,6 +1838,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation type="unfinished">Нов отбор</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,7 +45,7 @@ <translation>Невалидна оръжейна схема</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -84,7 +88,7 @@ </message> <message> <source>new</source> - <translation>Нов отбор</translation> + <translation type="obsolete">Нов отбор</translation> </message> <message> <source>Please select record from the list above</source> @@ -182,6 +186,14 @@ <source>Large floating islands</source> <translation type="unfinished"></translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -294,6 +306,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Зареждане</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -676,19 +719,31 @@ <translation type="unfinished"></translation> </message> <message> - <source>New weapon scheme</source> + <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> <message> - <source>Edit weapon scheme</source> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> <translation type="unfinished"></translation> </message> <message> - <source>Delete weapon scheme</source> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> <translation type="unfinished"></translation> </message> <message> - <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> <translation type="unfinished"></translation> </message> </context> @@ -941,6 +996,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -952,6 +1019,14 @@ <source>Delete</source> <translation>Изтриване</translation> </message> + <message> + <source>New</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1124,6 +1199,10 @@ <source>Default</source> <translation type="obsolete">По подразбиране</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1165,7 +1244,7 @@ </message> <message> <source>Weapons</source> - <translation>Оръжия</translation> + <translation type="obsolete">Оръжия</translation> </message> <message> <source>Team Settings</source> @@ -1175,6 +1254,10 @@ <source>Misc</source> <translation type="unfinished"></translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1343,7 +1426,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1389,7 +1476,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Не могат да се изтрият оръжията по подразбиране</translation> + <translation type="obsolete">Не могат да се изтрият оръжията по подразбиране</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1411,6 +1498,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Отбори</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1505,6 +1616,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1555,6 +1670,14 @@ <source>Delays</source> <translation type="unfinished"></translation> </message> + <message> + <source>new</source> + <translation type="unfinished">Нов отбор</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1657,6 +1780,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation type="unfinished">nový</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -42,7 +46,7 @@ <translation type="unfinished"></translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -69,7 +73,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>nový</translation> + <translation type="obsolete">nový</translation> </message> <message> <source>Error</source> @@ -183,6 +187,14 @@ <source>Large floating islands</source> <translation type="unfinished"></translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -295,6 +307,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Nahrát</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -683,19 +726,31 @@ <translation type="unfinished"></translation> </message> <message> - <source>New weapon scheme</source> + <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> <message> - <source>Edit weapon scheme</source> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> <translation type="unfinished"></translation> </message> <message> - <source>Delete weapon scheme</source> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> <translation type="unfinished"></translation> </message> <message> - <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> <translation type="unfinished"></translation> </message> </context> @@ -950,6 +1005,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -961,6 +1028,14 @@ <source>Delete</source> <translation>Smazat</translation> </message> + <message> + <source>New</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1133,6 +1208,10 @@ <source>Default</source> <translation type="obsolete">Základní</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1154,7 +1233,7 @@ </message> <message> <source>Weapons</source> - <translation>Zbraně</translation> + <translation type="obsolete">Zbraně</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1184,6 +1263,10 @@ <source>Misc</source> <translation type="unfinished"></translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1352,7 +1435,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1402,7 +1489,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Nemohu smazat základní nastavení zbraní</translation> + <translation type="obsolete">Nemohu smazat základní nastavení zbraní</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1420,6 +1507,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Týmy</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1514,6 +1625,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1564,6 +1679,14 @@ <source>Delays</source> <translation type="unfinished"></translation> </message> + <message> + <source>new</source> + <translation type="unfinished">nový</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1666,6 +1789,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_de.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_de.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>Neu</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,7 +45,7 @@ <translation>Spielprofile bearbeiten</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -84,7 +88,7 @@ </message> <message> <source>new</source> - <translation>Neu</translation> + <translation type="obsolete">Neu</translation> </message> <message> <source>Please select record from the list above</source> @@ -186,6 +190,14 @@ <source>Large floating islands</source> <translation>Große schwebende Inseln</translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -321,6 +333,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Laden</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -732,20 +775,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Neue Waffenzusammenstellung</translation> + <translation type="obsolete">Neue Waffenzusammenstellung</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Waffenzusammenstellung bearbeiten</translation> + <translation type="obsolete">Waffenzusammenstellung bearbeiten</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Waffenzusammenstellung löschen</translation> + <translation type="obsolete">Waffenzusammenstellung löschen</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>Du kannst keine Teams bei der Team-Auswahl ändern. Gehe zum Hauptmenü zurück um Teams hinzuzufügen, zu editieren oder zu löschen.</translation> </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -1003,6 +1070,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation>Jeder igel hat sein eigenes Waffenarsenal. Es wird nicht mit dem Team geteilt.</translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1014,6 +1093,14 @@ <source>Delete</source> <translation>Löschen</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">Neu</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1190,6 +1277,10 @@ <source>Default</source> <translation type="obsolete">Standard</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1215,7 +1306,7 @@ </message> <message> <source>Weapons</source> - <translation>Waffen</translation> + <translation type="obsolete">Waffen</translation> </message> <message> <source>Net game</source> @@ -1241,6 +1332,10 @@ <source>Misc</source> <translation>Verschiedenes</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1415,7 +1510,11 @@ <translation>Schaden bei Sudden Death</translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1465,7 +1564,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Das Standard-Waffen-Set kann nicht gelöscht werden</translation> + <translation type="obsolete">Das Standard-Waffen-Set kann nicht gelöscht werden</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1483,6 +1582,30 @@ <source>File association failed.</source> <translation>Dateizuordnung fehlgeschlagen.</translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Teams</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1577,6 +1700,10 @@ <source>Associate file extensions</source> <translation>Ordne Dateitypen zu</translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1627,6 +1754,14 @@ <source>Delays</source> <translation>Verzögerungen</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">Neu</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1733,6 +1868,14 @@ <source>Per Hedgehog Ammo</source> <translation>Waffen pro Igel</translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_en.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>new</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,8 +45,8 @@ <translation>Edit schemes</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation>When this option is enabled selecting a game scheme will auto-select a weapon (and vice versa)</translation> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -68,7 +72,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>new</translation> + <translation type="obsolete">new</translation> </message> <message> <source>Error</source> @@ -182,6 +186,14 @@ <source>Large floating islands</source> <translation type="unfinished"></translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -315,6 +327,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Load</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -386,12 +429,14 @@ <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> <translation type="unfinished"> <numerusform></numerusform> + <numerusform></numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> <translation type="unfinished"> <numerusform></numerusform> + <numerusform></numerusform> </translation> </message> <message numerus="yes"> @@ -710,20 +755,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>New weapon scheme</translation> + <translation type="obsolete">New weapon scheme</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Edit weapon scheme</translation> + <translation type="obsolete">Edit weapon scheme</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Delete weapon scheme</translation> + <translation type="obsolete">Delete weapon scheme</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</translation> </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -981,6 +1050,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -992,6 +1073,14 @@ <source>Delete</source> <translation>Delete</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">New</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1168,6 +1257,10 @@ <source>Default</source> <translation type="obsolete">Default</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1189,7 +1282,7 @@ </message> <message> <source>Weapons</source> - <translation>Weapons</translation> + <translation type="obsolete">Weapons</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1219,6 +1312,10 @@ <source>Misc</source> <translation>Misc</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1387,7 +1484,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1437,7 +1538,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Can not delete default weapon set</translation> + <translation type="obsolete">Can not delete default weapon set</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1455,6 +1556,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Teams</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1549,6 +1674,10 @@ <source>Associate file extensions</source> <translation>Associate file extensions</translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1599,6 +1728,14 @@ <source>Delays</source> <translation>Delays</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">new</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1705,6 +1842,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_es.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_es.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>Nuevo</translation> </message> + <message> + <source>copy of</source> + <translation>Copia de</translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -42,7 +46,11 @@ </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation>Cuando esta opción esté activada escoger un modo de juego escogerá el set de armas correspondiente (y viceversa)</translation> + <translation type="obsolete">Cuando esta opción esté activada escoger un modo de juego escogerá el set de armas correspondiente (y viceversa)</translation> + </message> + <message> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>Cuando esta opción esté activada escoger un modo de juego escogerá el set de armas correspondiente</translation> </message> </context> <context> @@ -84,7 +92,7 @@ </message> <message> <source>new</source> - <translation>Nuevo</translation> + <translation type="obsolete">Nuevo</translation> </message> <message> <source>Please select record from the list above</source> @@ -186,6 +194,14 @@ <source>Large floating islands</source> <translation>Islas grandes</translation> </message> + <message> + <source>Seed</source> + <translation>Semilla</translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished">Establecer</translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -319,6 +335,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>Deshacer</translation> + </message> + <message> + <source>Clear</source> + <translation>Limpiar</translation> + </message> + <message> + <source>Load</source> + <translation>Cargar</translation> + </message> + <message> + <source>Save</source> + <translation>Guardar</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>Cargar mapa</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>Mapas dibujados a mano (*.hwmap);;Todos los ficheros (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>Guardar mapa</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -730,20 +777,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Nuevo set de armas</translation> + <translation type="obsolete">Nuevo set de armas</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Editar set de armas</translation> + <translation type="obsolete">Editar set de armas</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Borrar set de armas</translation> + <translation type="obsolete">Borrar set de armas</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>No es posible editar equipos desde la pantalla de elección de equipo. Vuelve al menú principal para añadir, editar o borrar equipos.</translation> </message> + <message> + <source>New scheme</source> + <translation>Nuevo modo de juego</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Editar modo de juego</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Eliminar modo de juego</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Nuevo set de armas</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Editar set de armas</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Eliminar set de armas</translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -1001,6 +1072,18 @@ <source>All (living) hedgehogs are fully restored at the end of turn</source> <translation>La salud de todos los erizos en pie es restaurada al final de cada turno</translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>No tendrás que volver a preocuparte del viento.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>El viento afectará a (casi) todo.</translation> + </message> + <message> + <source>Copy</source> + <translation>Copiar</translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1012,6 +1095,14 @@ <source>Delete</source> <translation>Borrar</translation> </message> + <message> + <source>New</source> + <translation>Nuevo</translation> + </message> + <message> + <source>Copy</source> + <translation>Copiar</translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1216,6 +1307,14 @@ <source>Crazy</source> <translation type="obsolete">Lunático</translation> </message> + <message> + <source>Normal</source> + <translation type="obsolete">Normal</translation> + </message> + <message> + <source>hand drawn map...</source> + <translation>Mapa dibujado a mano...</translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1241,7 +1340,7 @@ </message> <message> <source>Weapons</source> - <translation>Sets de armas</translation> + <translation type="obsolete">Sets de armas</translation> </message> <message> <source>Net game</source> @@ -1267,6 +1366,10 @@ <source>Misc</source> <translation>Otras opciones</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>Modos de juego y sets de armas</translation> + </message> </context> <context> <name>QLabel</name> @@ -1445,7 +1548,15 @@ </message> <message> <source>Bind schemes and weapons</source> - <translation>Enlazar modos y sets</translation> + <translation type="obsolete">Enlazar modos y sets</translation> + </message> + <message> + <source>% Rope Length</source> + <translation>% longitud de las cuerdas</translation> + </message> + <message> + <source>Gameplay</source> + <translation>Tipo de juego</translation> </message> </context> <context> @@ -1494,7 +1605,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>No se puede borrar el set de armas predefinido</translation> + <translation type="obsolete">No se puede borrar el set de armas predefinido</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1512,6 +1623,30 @@ <source>File association failed.</source> <translation>No se pudieron asociar los tipos de fichero.</translation> </message> + <message> + <source>Teams</source> + <translation>Equipos</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>¿De verdad quieres eliminar este equipo?</translation> + </message> + <message> + <source>Schemes</source> + <translation>Modos de juego</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>¡No se puede eliminar el modo de juego predefinido '%1'!</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>¿De verdad quieres eliminar este modo de juego?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>¡No se puede eliminar el set de armas predefinido '%1'!</translation> + </message> </context> <context> <name>QObject</name> @@ -1606,6 +1741,14 @@ <source>Associate file extensions</source> <translation>Asociar tipos de archivo</translation> </message> + <message> + <source>Set</source> + <translation type="obsolete">Establecer</translation> + </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1646,7 +1789,7 @@ </message> <message> <source>Probabilities</source> - <translation>Probabilidad</translation> + <translation>Probabilidades</translation> </message> <message> <source>Ammo in boxes</source> @@ -1656,6 +1799,14 @@ <source>Delays</source> <translation>Retraso</translation> </message> + <message> + <source>new</source> + <translation>Nuevo</translation> + </message> + <message> + <source>copy of</source> + <translation>Copia de</translation> + </message> </context> <context> <name>TCPBase</name> @@ -1762,6 +1913,14 @@ <source>Reset Health</source> <translation>Restaurar salud</translation> </message> + <message> + <source>Disable Wind</source> + <translation>Deshabilitar viento</translation> + </message> + <message> + <source>More Wind</source> + <translation>Más viento</translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_fi.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>uusi</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,7 +45,7 @@ <translation>Muokkaa kaavaa</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -68,7 +72,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>uusi</translation> + <translation type="obsolete">uusi</translation> </message> <message> <source>Error</source> @@ -182,6 +186,14 @@ <source>Large floating islands</source> <translation>Suuria kelluvia saaria</translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -315,6 +327,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished">Tyhjennä</translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Lataa</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -726,20 +769,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Uusi ase</translation> + <translation type="obsolete">Uusi ase</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Muokkaa asesuunnitelmaa</translation> + <translation type="obsolete">Muokkaa asesuunnitelmaa</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Poista asesuunnitelma</translation> + <translation type="obsolete">Poista asesuunnitelma</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>Et voi muokata joukkueita joukkuevalinnassa. Mene takaisin päävalikkoon lisätäksesi, muokataksesi tai poistaaksesi joukkueita.</translation> </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -997,6 +1064,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1008,6 +1087,14 @@ <source>Delete</source> <translation>Poista</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">Uusi</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1212,6 +1299,10 @@ <source>Crazy</source> <translation type="obsolete">Sekopäinen</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1233,7 +1324,7 @@ </message> <message> <source>Weapons</source> - <translation>Aseet</translation> + <translation type="obsolete">Aseet</translation> </message> <message> <source>Net game</source> @@ -1263,6 +1354,10 @@ <source>Misc</source> <translation>Muut</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1431,7 +1526,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1481,7 +1580,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Oletus-asesettiä ei voi poistaa</translation> + <translation type="obsolete">Oletus-asesettiä ei voi poistaa</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1499,6 +1598,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Joukkueet</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1593,6 +1716,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1643,6 +1770,14 @@ <source>Delays</source> <translation>Viipeet</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">uusi</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1749,6 +1884,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>Nouveau</translation> </message> + <message> + <source>copy of</source> + <translation>Copier à partir de ...</translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,19 +45,19 @@ <translation>Éditer les paramètres</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation type="unfinished"></translation> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>Quand cette option est active choisir des paramètres de jeu sélectionnera les armes</translation> </message> </context> <context> <name>HWChatWidget</name> <message> <source>%1 *** %2 has been removed from your ignore list</source> - <translation>%1 *** %2 a été enlevé de la liste des personnes ignorées</translation> + <translation>%1 *** %2 a été enlevé de votre liste de personnes ignorées</translation> </message> <message> <source>%1 *** %2 has been added to your ignore list</source> - <translation>%1 *** %2 a été ajouté dans la liste des personnes ignorées</translation> + <translation>%1 *** %2 a été ajouté dans votre liste de personnes ignorées</translation> </message> <message> <source>%1 *** %2 has been removed from your friends list</source> @@ -84,11 +88,11 @@ </message> <message> <source>new</source> - <translation>nouveau</translation> + <translation type="obsolete">nouveau</translation> </message> <message> <source>Please select record from the list above</source> - <translation>Veuillez sélectionner une partie dans la liste ci-dessus</translation> + <translation>Veuillez sélectionner une partie enregistrée dans la liste ci-dessus</translation> </message> <message> <source>DefaultTeam</source> @@ -97,12 +101,12 @@ <message> <source>Hedgewars Demo File</source> <comment>File Types</comment> - <translation type="unfinished"></translation> + <translation>Fichier de démonstration d'Hedgewars</translation> </message> <message> <source>Hedgewars Save File</source> <comment>File Types</comment> - <translation type="unfinished"></translation> + <translation>Fichier de sauvegarde d'Hedgewars</translation> </message> </context> <context> @@ -152,7 +156,7 @@ </message> <message> <source>Wacky</source> - <translation>Farpelu</translation> + <translation>Farfelu</translation> </message> <message> <source>Type</source> @@ -182,6 +186,14 @@ <source>Large floating islands</source> <translation>Grandes îles flottantes</translation> </message> + <message> + <source>Seed</source> + <translation>Graine</translation> + </message> + <message> + <source>Set</source> + <translation>Valider</translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -232,7 +244,7 @@ <translation type="obsolete">Votre pseudo %1 est enregistré sur Hedgewars.org Veuillez fournir votre mot de passe -ou choisir un nouveau pseudo:</translation> +ou choisir un nouveau pseudo :</translation> </message> <message> <source>%1 *** %2 has joined the room</source> @@ -255,7 +267,10 @@ registered on Hedgewars.org Please provide your password below or pick another nickname in game config:</source> - <translation type="unfinished"></translation> + <translation>Votre pseudo %1 est +enregistré sur Hedgewars.org +Veuillez fournir votre mot de passe +ou choisir un nouveau pseudo :</translation> </message> </context> <context> @@ -277,31 +292,31 @@ </message> <message> <source>Clear Accounts Cache</source> - <translation>Vider le cache de comptes</translation> + <translation>Vider le cache des comptes</translation> </message> <message> <source>Fetch data</source> - <translation type="unfinished"></translation> + <translation>Récupérer les données</translation> </message> <message> <source>Server message for latest version:</source> - <translation type="unfinished"></translation> + <translation>Message du serveur pour la dernière version : </translation> </message> <message> <source>Server message for previous versions:</source> - <translation type="unfinished"></translation> + <translation>Message du serveur pour la version précédente : </translation> </message> <message> <source>Latest version protocol number:</source> - <translation type="unfinished"></translation> + <translation>Numéro de la dernière version du protocole : </translation> </message> <message> <source>MOTD preview:</source> - <translation type="unfinished"></translation> + <translation>Prévisualisation du MOTD</translation> </message> <message> <source>Set data</source> - <translation type="unfinished"></translation> + <translation>Enregistrer les données</translation> </message> </context> <context> @@ -312,6 +327,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>Annuler</translation> + </message> + <message> + <source>Clear</source> + <translation>Effacer</translation> + </message> + <message> + <source>Load</source> + <translation>Charger</translation> + </message> + <message> + <source>Save</source> + <translation>Enregistrer</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>Charger une carte dessinée</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>Cartes dessinées (*.hwmap);;Tous les fichiers (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>Enregistrer une carte dessinée</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -344,59 +390,59 @@ </message> <message> <source>Details</source> - <translation type="unfinished"></translation> + <translation>Détails</translation> </message> <message> <source>Health graph</source> - <translation type="unfinished"></translation> + <translation>Courbes de santé-</translation> </message> <message> <source>Ranking</source> - <translation type="unfinished"></translation> + <translation>Rang</translation> </message> <message> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> - <translation type="unfinished"></translation> + <translation>Le prix du meilleur tir a été décerné à <b>%1</b> avec <b>%2</b> points.</translation> </message> <message numerus="yes"> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Le meilleur tueur est <b>%1</b> avec <b>%2</b> mort dans un tour.</numerusform> + <numerusform>Le meilleur tueur est <b>%1</b> avec <b>%2</b> morts dans un tour.</numerusform> </translation> </message> <message numerus="yes"> <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Un total de <b>%1</b> hérisson a été tué durant ce tour.</numerusform> + <numerusform>Un total de <b>%1</b> hérissons ont été tués durant ce tour.</numerusform> </translation> </message> <message numerus="yes"> <source>(%1 kill)</source> <translation type="unfinished"> - <numerusform></numerusform> + <numerusform>(%1 Tue)</numerusform> <numerusform></numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> point.</numerusform> + <numerusform><b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> points.</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> a tué <b>%2</b> de ses propres hérissons.</numerusform> <numerusform></numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> a eu peur et a passé son tour <b>%2</b> fois.</numerusform> <numerusform></numerusform> </translation> </message> @@ -414,247 +460,247 @@ <message> <source>Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Choisissez la même couleur qu'un ami pour jouer dans la même équipe. Chacun de vous continuera à contrôler son ou ses hérissons mais ils gagneront ou perdront ensembles.</translation> </message> <message> <source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Certaines armes peuvent occasionner seulement de faibles dommages mais être beaucoup plus dévastatrices dans la situation adéquate. Essayez le Révolver pour envoyer plusieurs hérissons à l'eau.</translation> </message> <message> <source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Si vous ne savez pas quoi faire et ne voulez pas gaspiller de munitions, passez un tour. Mais ne laissez pas trop filer le temps ou ce sera la Mort Subite !</translation> </message> <message> <source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Si vous voulez empêcher les autres d'utiliser votre pseudo sur le serveur officiel, créez un compte sur http://www.hedgewars.org/.</translation> </message> <message> <source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Assez du mode par défaut ? Essayez une des missions - elles offrent différents types de jeu suivant votre choix.</translation> </message> <message> <source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Par défaut le jeu enregistre la dernière partie jouée comme une démonstration. Sélectionnez « Jeu en local » puis « Démonstrations » en bas à droite pour les visionner ou les gérer.</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si vous avez des problèmes, demandez sur nos forums mais n'attendez pas de support 24h/24.</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si vous l'aimez, aidez-nous avec un petit don ou contribuez par votre travail !</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Partagez-le avec votre famille et vos amis comme vous le voulez !</translation> </message> <message> <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>De temps en temps il y aura des tournois officiels. Les évènements à venir seront annoncés sur http://www.hedgewars.org/ quelques jours à l'avance.</translation> </message> <message> <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars est disponible dans de nombreuses langues. Si la traduction dans votre langue est partielle ou obsolète, contactez-nous !</translation> </message> <message> <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars peux être exécuté sur de nombreux systèmes d'exploitation différents, incluant Microsoft Windows, Mac OS X et Linux. </translation> </message> <message> <source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Souvenez-vous que vous pouvez créer votre propres parties en local et en ligne. Vous n'est pas limités aux options de jeu par défaut.</translation> </message> <message> <source>While playing you should give yourself a short break at least once an hour.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous devriez faire une petite pause au moins une fois par heure.</translation> </message> <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Si votre carte graphique ne peut pas fournir d'accélération matérielle pour OpenGL, essayez le mode de faible qualité pour améliorer les performances.</translation> </message> <message> <source>We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Nous sommes ouverts aux suggestions et au critiques constructives. Si vous n'aimez pas quelque chose ou avez une grande idée, contactez-nous !</translation> </message> <message> <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Particulièrement quand vous jouez en ligne soyez polis et pensez que certains joueurs avec vous peuvent être mineurs.</translation> </message> <message> <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Les modes de jeu spéciaux comme « Vampirisme » ou « Karma » vous permettent de développer de nouvelles tactiques. Essayez-les en parties personnalisées !</translation> </message> <message> <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>La version Windows d'Hedgewars fonctionne avec Xfire. Pensez à ajouter Hedgewars dans la liste de jeu pour que vous amis vous voient jouer.</translation> </message> <message> <source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous ne devriez jamais installer Hedgewars sur des ordinateurs ne vous appartenant pas (école, université, travail, etc...). Demandez au responsable !</translation> </message> <message> <source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars peut être parfait pour des parties courtes pendant une pause. Assurez-vous juste de ne pas avoir mis trop de hérissons ou de ne pas utiliser une carte énorme. Réduire le temps ou la santé peuvent aider également.</translation> </message> <message> <source>No hedgehogs were harmed in making this game.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Aucun hérisson n'a été blessé durant la conception de ce jeu.</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si quelqu'un vous l'a vendu, vous devriez vous faire rembourser !</translation> </message> <message> <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Branchez une ou plusieurs manettes avant de lancer le jeu pour pouvoir contrôler vos équipes avec.</translation> </message> <message> <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Créer un compte sur %1 vous permet d'empêcher les autres d'utiliser votre pseudo favori sur le serveur officiel.</translation> </message> <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Si votre carte graphique ne peut pas fournir d'accélération matérielle pour OpenGL, essayez d'installer les drivers associés.</translation> </message> <message> <source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Il y a différents types de saut disponibles. Pressez [high jump] deux fois pour faire un très haut saut un peu en arrière.</translation> </message> <message> <source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Peur de tomber d'une falaise ? Maintenez [precise] pour tourner [left] ou [right] sans bouger.</translation> </message> <message> <source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Certaines armes demandent de la stratégie ou juste beaucoup d'entrainement, alors ne laissez pas tomber une arme si vous avez raté une fois un ennemi.</translation> </message> <message> <source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>La plupart des armes ne fonctionnent pas une fois qu'elles ont touché l'eau. L'Abeille Missile ou le Gâteau sont des exceptions.</translation> </message> <message> <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Le Old Limbuger cause seulement une petite explosion. En revanche le vent affecte le petit nuage empoisonné qui peut contaminer de nombreux hérissons à la fois.</translation> </message> <message> <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">L'attaque du Piano est la plus dévastatrice des attaques aériennes. Vous perdrez le hérisson qui la lance, donc il y a une contrepartie énorme.</translation> </message> <message> <source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>L'Abeille Missile peut être délicate à utiliser. Son rayon de courbure dépend de sa vitesse, alors essayer de ne pas l'utiliser à pleine puissance.</translation> </message> <message> <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Les Mines adhésives sont l'outil parfait pour créer de petites réactions en chaines envoyant les ennemis dans des situations délicates ... ou dans l'eau.</translation> </message> <message> <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Le Marteau est plus efficace utilisé sur des ponts ou des poutrelles. Les hérissons touchés vont passer à travers le sol.</translation> </message> <message> <source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Si vous êtes coincés derrière un hérisson ennemi, utilisez le Marteau pour vous libérer sans subir les dégâts d'une explosion.</translation> </message> <message> <source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>La distance maximale que le Gâteau peux parcourir dépend du terrain qu'il doit franchir. Utiliser [attack] pour le faire exploser avant.</translation> </message> <message> <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Le Lance-flammes est une arme mais peut aussi être utilisé pour creuser un tunnel.</translation> </message> <message> <source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Utilisez la grenade infernale pour empêcher temporairement des hérissons de traverser du terrain comme un tunnel ou une plate-forme.</translation> </message> <message> <source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous voulez savoir qui est derrière le jeu ? Cliquez sur le logo Hedgewars dans le menu principal pour voir les crédits.</translation> </message> <message> <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Soyez libre de dessiner vos propres tombes, chapeaux, drapeaux ou même cartes et thèmes ! Mais pour les utiliser en ligne vous devrez les partager quelque part.</translation> </message> <message> <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous voulez vraiment un chapeau spécifique ? Faites un don et recevez un chapeau exclusif de votre choix.</translation> </message> <message> <source>Keep your video card drivers up to date to avoid issues playing the game.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Conservez les pilotes de votre carte graphique à jour pour éviter les problèmes en jouant.</translation> </message> <message> <source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous pouvez trouver vos fichiers de configuration Hedgewars sous « Mes Documents\Hedgewars ». Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !</translation> </message> <message> <source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous pouvez associer les fichiers relatifs à Hedgewars (parties enregistrées ou démonstrations) au jeu pour les lancer depuis votre navigateur de fichiers ou internet.</translation> </message> <message> <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous aimez Hedgewars ? Devenez un fan sur %1 ou suivez-nous sur %2 !</translation> </message> <message> <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Envie d'économiser des Cordes Ninja ? Relâchez la Corde Ninja en l'air et tirez à nouveau. Du moment que vous ne touchez pas le sol, vous réutiliserez votre Corde Ninja sans gaspiller de munitions.</translation> </message> <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous pouvez trouver vos fichiers de configuration Hedgewars sous « Library/Application Support/Hedgewars » dans votre répertoire personnel. Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Vous pouvez trouver vos fichiers de configuration Hedgewars sous « .hedgewars » dans votre répertoire personnel. Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !</translation> </message> </context> <context> @@ -705,23 +751,35 @@ </message> <message> <source>Delete team</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>New weapon scheme</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Edit weapon scheme</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Delete weapon scheme</source> - <translation type="unfinished"></translation> + <translation>Supprimer une équipe</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> - <translation type="unfinished"></translation> + <translation>Vous ne pouvez pas modifier d'équipe depuis la sélection d'équipes. Retournez au manu principal pour ajouter, modifier ou supprimer des équipes.</translation> + </message> + <message> + <source>New scheme</source> + <translation>Nouveaux paramètres</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Modifier paramètres</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Supprimer paramètres</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Nouvel ensemble d'armes</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Modifier un ensemble d'armes</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Supprimer un ensemble d'armes</translation> </message> </context> <context> @@ -841,36 +899,36 @@ </message> <message> <source>Random Maze</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Labyrinthe aléatoire</translation> </message> <message> <source>State:</source> - <translation type="unfinished"></translation> + <translation>État : </translation> </message> <message> <source>Rules:</source> - <translation type="unfinished"></translation> + <translation>Règles : </translation> </message> <message> <source>Weapons:</source> - <translation type="unfinished"></translation> + <translation>Armes : </translation> </message> <message> <source>Search:</source> - <translation type="unfinished"></translation> + <translation>Recherche : </translation> </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Effacer</translation> </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Attention</translation> </message> <message> <source>The game you are trying to join has started. Do you still want to join the room?</source> - <translation type="unfinished"></translation> + <translation>Vous voulez rejoindre une partie qui a déjà commencée. Voulez-vous tout de même rejoindre la salle ?</translation> </message> </context> <context> @@ -937,47 +995,59 @@ </message> <message> <source>Order of play is random instead of in room order.</source> - <translation type="unfinished"></translation> + <translation>Ordre de jeu aléatoire plutôt que par ordre dans la salle.</translation> </message> <message> <source>Play with a King. If he dies, your side dies.</source> - <translation type="unfinished"></translation> + <translation>Jouez avec un Roi. S'il meurs, votre côté perds.</translation> </message> <message> <source>Take turns placing your hedgehogs before the start of play.</source> - <translation type="unfinished"></translation> + <translation>Placez vos hérissons chacun à votre tour avant de commencer à jouer.</translation> </message> <message> <source>Ammo is shared between all teams that share a colour.</source> - <translation type="unfinished"></translation> + <translation>Les munitions sont partagées parmi les équipes de même couleur.</translation> </message> <message> <source>Disable girders when generating random maps.</source> - <translation type="unfinished"></translation> + <translation>Désactiver les poutres en générant des cartes aléatoires.</translation> </message> <message> <source>Disable land objects when generating random maps.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Désactiver les objets de terrain en générant des cartes aléatoires.</translation> </message> <message> <source>AI respawns on death.</source> - <translation type="unfinished"></translation> + <translation>L'IA ressuscite à chaque mort.</translation> </message> <message> <source>All (living) hedgehogs are fully restored at the end of turn</source> - <translation type="unfinished"></translation> + <translation>Tous les hérissons (vivants) sont soignés complètement à la fin du tour.</translation> </message> <message> <source>Attacking does not end your turn.</source> - <translation type="unfinished"></translation> + <translation>Attaquer ne termine pas votre tour.</translation> </message> <message> <source>Weapons are reset to starting values each turn.</source> - <translation type="unfinished"></translation> + <translation>Les armes sont réinitialisées aux valeurs de départ à la fin de chaque tour.</translation> </message> <message> <source>Each hedgehog has its own ammo. It does not share with the team.</source> - <translation type="unfinished"></translation> + <translation>Chaque hérisson a ses propres munitions. Il ne les partage pas avec son équipe.</translation> + </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>Vous n'aurez plus jamais à vous soucier du vent.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>Le vent affectera quasiment tout.</translation> + </message> + <message> + <source>Copy</source> + <translation>Copier</translation> </message> </context> <context> @@ -990,6 +1060,14 @@ <source>Delete</source> <translation>Supprimer</translation> </message> + <message> + <source>New</source> + <translation>Nouveau</translation> + </message> + <message> + <source>Copy</source> + <translation>Copier</translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1015,7 +1093,7 @@ </message> <message> <source>Campaign Mode (...). IN DEVELOPMENT</source> - <translation type="unfinished"></translation> + <translation>Mode Campagne (...). EN DÉVELOPPEMENT</translation> </message> </context> <context> @@ -1046,23 +1124,23 @@ </message> <message> <source>Follow</source> - <translation type="unfinished"></translation> + <translation>Suivre</translation> </message> <message> <source>Ignore</source> - <translation type="unfinished"></translation> + <translation>Ignorer</translation> </message> <message> <source>Add friend</source> - <translation type="unfinished"></translation> + <translation>Ajouter un ami</translation> </message> <message> <source>Unignore</source> - <translation type="unfinished"></translation> + <translation>Ne plus ignorer</translation> </message> <message> <source>Remove friend</source> - <translation type="unfinished"></translation> + <translation>Retirer un ami</translation> </message> </context> <context> @@ -1105,19 +1183,19 @@ </message> <message> <source>Show ammo menu tooltips</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Montrer le menu d'aide des munitions.</translation> </message> <message> <source>Enable frontend sounds</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Activer les sons du menu principal</translation> </message> <message> <source>Enable frontend music</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Activer la musique du menu principal</translation> </message> <message> <source>Frontend effects</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Effets du menu principal</translation> </message> </context> <context> @@ -1136,19 +1214,19 @@ </message> <message> <source>(System default)</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Réglage du système</translation> </message> <message> <source>generated maze...</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Labyrinthe généré</translation> </message> <message> <source>Mission</source> - <translation type="unfinished"></translation> + <translation>Mission</translation> </message> <message> <source>Community</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Communauté</translation> </message> <message> <source>Any</source> @@ -1160,12 +1238,16 @@ </message> <message> <source>In progress</source> - <translation type="unfinished"></translation> + <translation type="unfinished">En cours</translation> </message> <message> <source>Default</source> <translation type="obsolete">Défaut</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished">Carte dessinée</translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1211,11 +1293,15 @@ </message> <message> <source>Team Settings</source> - <translation type="unfinished"></translation> + <translation>Réglages de l'équipe</translation> </message> <message> <source>Misc</source> - <translation type="unfinished"></translation> + <translation>Divers</translation> + </message> + <message> + <source>Schemes and Weapons</source> + <translation>Paramètres et Armes</translation> </message> </context> <context> @@ -1322,11 +1408,11 @@ </message> <message> <source>% Dud Mines</source> - <translation type="unfinished"></translation> + <translation>% de Mines défectueuses</translation> </message> <message> <source>Name</source> - <translation type="unfinished"></translation> + <translation>Nom</translation> </message> <message> <source>Type</source> @@ -1334,58 +1420,62 @@ </message> <message> <source>Grave</source> - <translation type="unfinished"></translation> + <translation>Tombe</translation> </message> <message> <source>Flag</source> - <translation type="unfinished"></translation> + <translation>Drapeau</translation> </message> <message> <source>Voice</source> - <translation type="unfinished"></translation> + <translation>Voix</translation> </message> <message> <source>Locale</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Langue</translation> </message> <message> <source>Restart game to apply</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Relancez le jeu pour appliquer</translation> </message> <message> <source>Explosives</source> - <translation type="unfinished"></translation> + <translation>Explosifs</translation> </message> <message> <source>Tip: </source> - <translation type="unfinished"></translation> + <translation>Conseil : </translation> </message> <message> <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> - <translation type="unfinished"></translation> + <translation>Cette version de développement est un travail en cours, il peut ne pas être compatible avec les autres versions du jeu. Certaines fonctionnalités peuvent être cassées ou incomplètes.</translation> </message> <message> <source>Quality</source> - <translation type="unfinished"></translation> + <translation>Qualité</translation> </message> <message> <source>% Health Crates</source> - <translation type="unfinished"></translation> + <translation>% Caisses de Santé</translation> </message> <message> <source>Health in Crates</source> - <translation type="unfinished"></translation> + <translation>Santé dans les Caisses</translation> </message> <message> <source>Sudden Death Water Rise</source> - <translation type="unfinished"></translation> + <translation>Montée de l'eau à la Mort Subite</translation> </message> <message> <source>Sudden Death Health Decrease</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bind schemes and weapons</source> + <translation>Perte de Santé à la Mort Subite</translation> + </message> + <message> + <source>% Rope Length</source> + <translation>% longueur de la Corde Ninja</translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1431,7 +1521,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Impossible de supprimer le set d'armes par défaut</translation> + <translation type="obsolete">Impossible de supprimer le set d'armes par défaut</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1443,15 +1533,39 @@ </message> <message> <source>Can not overwrite default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation>Impossible d'enregistrer sur le set d'armes par défaut.</translation> </message> <message> <source>All file associations have been set.</source> - <translation type="unfinished"></translation> + <translation>Toutes les associations d'extensions de fichiers ont été effectuées.</translation> </message> <message> <source>File association failed.</source> - <translation type="unfinished"></translation> + <translation>Les associations d'extensions de fichiers ont échoué.</translation> + </message> + <message> + <source>Teams</source> + <translation>Équipes</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>Voulez-vous vraiment effacer cette équipe ?</translation> + </message> + <message> + <source>Schemes</source> + <translation>Paramètres de jeu</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>Impossible d'effacer les paramètres de jeu par défaut.</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>Voulez-vous vraiment effacer ces paramètres de jeu ?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>Impossible d'effacer le set d'armes par défaut.</translation> </message> </context> <context> @@ -1541,11 +1655,15 @@ </message> <message> <source>Random Team</source> - <translation type="unfinished"></translation> + <translation>Équipes aléatoires</translation> </message> <message> <source>Associate file extensions</source> - <translation type="unfinished"></translation> + <translation>Associer les extensions de fichiers</translation> + </message> + <message> + <source>more</source> + <translation>plus</translation> </message> </context> <context> @@ -1591,11 +1709,19 @@ </message> <message> <source>Ammo in boxes</source> - <translation type="unfinished"></translation> + <translation>Munitions dans les caisses</translation> </message> <message> <source>Delays</source> - <translation type="unfinished"></translation> + <translation>Délais</translation> + </message> + <message> + <source>new</source> + <translation>Nouveau</translation> + </message> + <message> + <source>copy of</source> + <translation>Copie de</translation> </message> </context> <context> @@ -1657,51 +1783,59 @@ </message> <message> <source>Add Mines</source> - <translation type="obsolete">Ajouter des Mines</translation> + <translation>Ajouter des Mines</translation> </message> <message> <source>Random Order</source> - <translation type="unfinished"></translation> + <translation>Ordre aléatoire</translation> </message> <message> <source>King</source> - <translation type="unfinished"></translation> + <translation>Roi</translation> </message> <message> <source>Place Hedgehogs</source> - <translation type="unfinished"></translation> + <translation>Placer les hérissons</translation> </message> <message> <source>Clan Shares Ammo</source> - <translation type="unfinished"></translation> + <translation>Les Clans partagent les munitions</translation> </message> <message> <source>Disable Girders</source> - <translation type="unfinished"></translation> + <translation>Désactiver les poutres</translation> </message> <message> <source>Disable Land Objects</source> - <translation type="unfinished"></translation> + <translation>Désactiver les objets de terrain</translation> </message> <message> <source>AI Survival Mode</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Mode de survie de l'IA</translation> </message> <message> <source>Reset Health</source> - <translation type="unfinished"></translation> + <translation>Réinitialiser la Santé</translation> </message> <message> <source>Unlimited Attacks</source> - <translation type="unfinished"></translation> + <translation>Attaques illimitées</translation> </message> <message> <source>Reset Weapons</source> - <translation type="unfinished"></translation> + <translation>Réinitialiser les Armes</translation> </message> <message> <source>Per Hedgehog Ammo</source> - <translation type="unfinished"></translation> + <translation>Munitions par hérisson</translation> + </message> + <message> + <source>Disable Wind</source> + <translation>Désactiver le vent</translation> + </message> + <message> + <source>More Wind</source> + <translation>Davantage de vent</translation> </message> </context> <context> @@ -1972,7 +2106,7 @@ </message> <message> <source>Hat</source> - <translation type="unfinished">Bouton directionnel</translation> + <translation type="unfinished">Chapeau</translation> </message> <message> <source>(Left)</source> @@ -2272,7 +2406,7 @@ </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Effacer</translation> </message> </context> </TS>
--- a/share/hedgewars/Data/Locale/hedgewars_hu.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>új</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -40,7 +44,7 @@ <translation>Sémák szerkesztése</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -67,7 +71,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>új</translation> + <translation type="obsolete">új</translation> </message> <message> <source>Error</source> @@ -181,6 +185,14 @@ <source>Large floating islands</source> <translation>Nagy lebegő szigetek</translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -311,6 +323,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished">Törlés</translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Betöltés</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -700,20 +743,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Új fegyverséma</translation> + <translation type="obsolete">Új fegyverséma</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Fegyverséma szerkesztése</translation> + <translation type="obsolete">Fegyverséma szerkesztése</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Fegyverséma törlése</translation> + <translation type="obsolete">Fegyverséma törlése</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -968,6 +1035,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -979,6 +1058,14 @@ <source>Delete</source> <translation>Törlés</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">Új</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1155,6 +1242,10 @@ <source>Default</source> <translation type="obsolete">Default</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1176,7 +1267,7 @@ </message> <message> <source>Weapons</source> - <translation>Fegyverek</translation> + <translation type="obsolete">Fegyverek</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1206,6 +1297,10 @@ <source>Misc</source> <translation>Egyéb</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1380,7 +1475,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1430,7 +1529,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Az alap fegyverkeszléet nem törölhető</translation> + <translation type="obsolete">Az alap fegyverkeszléet nem törölhető</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1448,6 +1547,30 @@ <source>Can not overwrite default weapon set '%1'!</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Csapatok</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1542,6 +1665,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1592,6 +1719,14 @@ <source>Delays</source> <translation>Késleltetések</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">új</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1698,6 +1833,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_it.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_it.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>nuovo</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,7 +45,7 @@ <translation>Modifica schemi</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -84,7 +88,7 @@ </message> <message> <source>new</source> - <translation>nuovo</translation> + <translation type="obsolete">nuovo</translation> </message> <message> <source>Please select record from the list above</source> @@ -186,6 +190,14 @@ <source>Large floating islands</source> <translation type="unfinished"></translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -316,6 +328,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished">Cancella</translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Carica</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -713,20 +756,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Nuovo schema armi</translation> + <translation type="obsolete">Nuovo schema armi</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Modifica schema armi</translation> + <translation type="obsolete">Modifica schema armi</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Elimina schema armi</translation> + <translation type="obsolete">Elimina schema armi</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -983,6 +1050,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -994,6 +1073,14 @@ <source>Delete</source> <translation>Elimina</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">Nuovo</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1170,6 +1257,10 @@ <source>Default</source> <translation type="obsolete">Default</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1195,7 +1286,7 @@ </message> <message> <source>Weapons</source> - <translation>Armi</translation> + <translation type="obsolete">Armi</translation> </message> <message> <source>Net game</source> @@ -1221,6 +1312,10 @@ <source>Misc</source> <translation>Varie</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1395,7 +1490,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1445,7 +1544,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Non è possibile eliminare il set di armi predefinito</translation> + <translation type="obsolete">Non è possibile eliminare il set di armi predefinito</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1463,6 +1562,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Squadre</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1557,6 +1680,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1607,6 +1734,14 @@ <source>Delays</source> <translation>Ritardi</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">nuovo</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1713,6 +1848,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_ja.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation type="unfinished">作成</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -40,7 +44,7 @@ <translation type="unfinished"></translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -67,7 +71,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>作成</translation> + <translation type="obsolete">作成</translation> </message> <message> <source>Error</source> @@ -181,6 +185,14 @@ <source>Large floating islands</source> <translation type="unfinished"></translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -293,6 +305,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">ロード</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -669,19 +712,31 @@ <translation type="unfinished"></translation> </message> <message> - <source>New weapon scheme</source> + <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> <message> - <source>Edit weapon scheme</source> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> <translation type="unfinished"></translation> </message> <message> - <source>Delete weapon scheme</source> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> <translation type="unfinished"></translation> </message> <message> - <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> <translation type="unfinished"></translation> </message> </context> @@ -932,6 +987,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -943,6 +1010,14 @@ <source>Delete</source> <translation>削除</translation> </message> + <message> + <source>New</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1115,6 +1190,10 @@ <source>Default</source> <translation type="obsolete">デフォールト</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1136,7 +1215,7 @@ </message> <message> <source>Weapons</source> - <translation>兵器</translation> + <translation type="obsolete">兵器</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1166,6 +1245,10 @@ <source>Misc</source> <translation type="unfinished"></translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1334,7 +1417,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1384,7 +1471,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>デフォールトセットの削除は不可能</translation> + <translation type="obsolete">デフォールトセットの削除は不可能</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1402,6 +1489,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">チーム</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1496,6 +1607,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1546,6 +1661,14 @@ <source>Delays</source> <translation type="unfinished"></translation> </message> + <message> + <source>new</source> + <translation type="unfinished">作成</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1648,6 +1771,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,2326 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ko"> +<context> + <name>AmmoSchemeModel</name> + <message> + <source>new</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FreqSpinBox</name> + <message> + <source>Never</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <source>Every %1 turn</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> +</context> +<context> + <name>GameCFGWidget</name> + <message> + <source>Edit weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Illegal ammo scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWChatWidget</name> + <message> + <source>%1 *** %2 has been removed from your ignore list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has been added to your ignore list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has been removed from your friends list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has been added to your friends list</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWForm</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to start the server</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot save record to file %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select record from the list above</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>DefaultTeam</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars Demo File</source> + <comment>File Types</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars Save File</source> + <comment>File Types</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWGame</name> + <message> + <source>en.txt</source> + <translation type="unfinished">ko.txt</translation> + </message> + <message> + <source>Cannot open demofile %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWMapContainer</name> + <message> + <source>Map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Themes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Small</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Large</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cavern</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wacky</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Small tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Large tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Small floating islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium floating islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Large floating islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWNetServersModel</name> + <message> + <source>Title</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>IP</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Port</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWNewNet</name> + <message> + <source>The host was not found. Please check the host name and port settings.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connection refused</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Room destroyed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Quit reason: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>You got kicked</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Password</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has joined the room</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has left (%3)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your nickname %1 is +registered on Hedgewars.org +Please provide your password below +or pick another nickname in game config:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>KB</name> + <message> + <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageAdmin</name> + <message> + <source>Clear Accounts Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fetch data</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server message for latest version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server message for previous versions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Latest version protocol number:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>MOTD preview:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set data</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageConnecting</name> + <message> + <source>Connecting...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageEditTeam</name> + <message> + <source>General</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Advanced</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageGameStats</name> + <message> + <source>Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Health graph</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ranking</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>(%1 kill)</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> +</context> +<context> + <name>PageMain</name> + <message> + <source>Local Game (Play a game on a single computer)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Network Game (Play a game across a network)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>While playing you should give yourself a short break at least once an hour.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>No hedgehogs were harmed in making this game.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Keep your video card drivers up to date to avoid issues playing the game.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageMultiplayer</name> + <message> + <source>Start</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageNet</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select server from the list above</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageNetGame</name> + <message> + <source>Control</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageNetType</name> + <message> + <source>LAN game</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Official server</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageOptions</name> + <message> + <source>New team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PagePlayDemo</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rename dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enter new file name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot rename to</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot delete file</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select record from the list</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageRoomsList</name> + <message> + <source>Create</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Refresh</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Admin features</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Room Name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This game is in lobby. +You may join and start playing once the game starts.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This game is in progress. +You may join and spectate now but you'll have to wait for the game to end to start playing.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 is the host. He may adjust settings and start the game.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Games may be played on precreated or randomized maps.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Weapon Scheme defines available weapons and their ammunition count.</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <source>There are %1 clients connected to this room.</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>There are %1 teams participating in this room.</source> + <translation type="unfinished"> + <numerusform></numerusform> + </translation> + </message> + <message> + <source>Please enter room name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select room from the list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Maze</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>State:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rules:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The game you are trying to join has started. +Do you still want to join the room?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageScheme</name> + <message> + <source>Defend your fort and destroy the opponents, two team colours max!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Teams will start on opposite sides of the terrain, two team colours max!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Land can not be destroyed!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Add an indestructable border around the terrain</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Lower gravity</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Assisted aiming with laser sight</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All hogs have a personal forcefield</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gain 80% of the damage you do back in health</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Share your opponents pain, share their damage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your hogs are unable to move, put your artillery skills to the test</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Seconds</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Order of play is random instead of in room order.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Play with a King. If he dies, your side dies.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Take turns placing your hedgehogs before the start of play.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ammo is shared between all teams that share a colour.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable girders when generating random maps.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable land objects when generating random maps.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>AI respawns on death.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All (living) hedgehogs are fully restored at the end of turn</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Attacking does not end your turn.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons are reset to starting values each turn.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Each hedgehog has its own ammo. It does not share with the team.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageSelectWeapon</name> + <message> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageSinglePlayer</name> + <message> + <source>Simple Game (a quick game against the computer, settings are chosen for you)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Multiplayer (play a hotseat game against your friends, or AI teams)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Demos (Watch recorded demos)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load (Load a previously saved game)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Campaign Mode (...). IN DEVELOPMENT</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QAction</name> + <message> + <source>Kick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Restrict Joins</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Restrict Team Additions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ban</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Follow</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ignore</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Add friend</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unignore</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Remove friend</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QCheckBox</name> + <message> + <source>Check for updates at startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fullscreen</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Frontend fullscreen</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable sound</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable music</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Show FPS</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Alternative damage show</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Append date and time to record file name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Show ammo menu tooltips</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable frontend sounds</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable frontend music</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Frontend effects</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QComboBox</name> + <message> + <source>generated map...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Human</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Level</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(System default)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mission</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>generated maze...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Community</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Any</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>In lobby</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>In progress</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QGroupBox</name> + <message> + <source>Team Members</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fort</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Key binds</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Audio/Graphic options</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Net game</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Playing teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Game Modifiers</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Basic Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Team Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Misc</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QLabel</name> + <message> + <source>Mines Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mines</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Version</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This program is distributed under the GNU General Public License</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Developers:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Art:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sounds:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Translations:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Special thanks:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Host:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Port:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Net nick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Resolution</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>FPS limit</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server port:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Initial sound volume</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Damage Modifier</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Turn Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Initial Health</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sudden Death Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scheme Name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Crate Drops</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Game scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>% Dud Mines</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Grave</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Flag</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Voice</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Locale</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Restart game to apply</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Explosives</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tip: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Quality</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>% Health Crates</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Health in Crates</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sudden Death Water Rise</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sudden Death Health Decrease</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QLineEdit</name> + <message> + <source>unnamed</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QMainWindow</name> + <message> + <source>Hedgewars %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QMessageBox</name> + <message> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connection to server is lost</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failed to open data directory: +%1 +Please check your installation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this weapon set?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not overwrite default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All file associations have been set.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>File association failed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot create directory %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Nickname</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please enter your nickname</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QPushButton</name> + <message> + <source>default</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start server</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Update</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Specify</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Go!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Play demo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Setup</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ready</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Associate file extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QTableWidget</name> + <message> + <source>Room Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>C</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>T</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Owner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SelWeaponWidget</name> + <message> + <source>Weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Probabilities</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ammo in boxes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delays</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>new</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TCPBase</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to start the server: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to run engine: %1 (</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ToggleButtonWidget</name> + <message> + <source>Vampirism</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Karma</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Artillery</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fort Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Divide Teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Solid Land</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Add Border</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Low Gravity</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Laser Sight</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Invulnerable</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Order</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>King</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Place Hedgehogs</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clan Shares Ammo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable Girders</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable Land Objects</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>AI Survival Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset Health</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unlimited Attacks</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset Weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Per Hedgehog Ammo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds</name> + <message> + <source>up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>right</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>attack</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>precise aim</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>put</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>switch</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>find hedgehog</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>ammo menu</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 4</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 5</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 6</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 7</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 8</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 9</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 1 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 2 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 3 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 4 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 5 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>chat</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>chat history</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>confirmation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>volume down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>volume up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>change mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>capture</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>hedgehogs +info</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>quit</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>zoom in</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>zoom out</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>reset zoom</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>long jump</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>high jump</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 10</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds (categories)</name> + <message> + <source>Basic controls</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapon controls</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Camera and cursor controls</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Other</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds (descriptions)</name> + <message> + <source>Move your hogs and aim:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Traverse gaps and obstacles by jumping:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fire your selected weapon or trigger an utility item:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pick a weapon or a target location under the cursor:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Switch your currently active hog (if possible):</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pick a weapon or utility item:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set the timer on bombs and timed weapons:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Move the camera to the active hog:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Move the cursor or camera without using the mouse:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Modify the camera's zoom level:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Talk to your team or all participants:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pause, continue or leave your game:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Modify the game's volume while playing:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggle fullscreen mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Take a screenshot:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggle labels above hedgehogs:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds (keys)</name> + <message> + <source>Axis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Up)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Down)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hat</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Left)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Right)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Keyboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Left button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Middle button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Right button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Wheel up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Wheel down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Backspace</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Return</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Escape</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Space</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 0</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 4</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 5</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 6</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 7</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 8</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 9</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad .</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad /</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad *</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad -</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad +</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Insert</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Home</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>End</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Page up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Page down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Num lock</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Caps lock</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scroll lock</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right shift</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left shift</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right ctrl</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left ctrl</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right alt</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left alt</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right meta</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left meta</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>A button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>B button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>X button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Y button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>LB button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>RB button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Back button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Right)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Left)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Down)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Up)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Down)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Up)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Right)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Left)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>DPad</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/hedgewars_nl.ts Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,2345 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="nl"> +<context> + <name>AmmoSchemeModel</name> + <message> + <source>new</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>FreqSpinBox</name> + <message> + <source>Never</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <source>Every %1 turn</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> +</context> +<context> + <name>GameCFGWidget</name> + <message> + <source>Edit weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Illegal ammo scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWChatWidget</name> + <message> + <source>%1 *** %2 has been removed from your ignore list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has been added to your ignore list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has been removed from your friends list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has been added to your friends list</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWForm</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to start the server</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot save record to file %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select record from the list above</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>DefaultTeam</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars Demo File</source> + <comment>File Types</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars Save File</source> + <comment>File Types</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWGame</name> + <message> + <source>en.txt</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot open demofile %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWMapContainer</name> + <message> + <source>Map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Themes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Filter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Small</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Large</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cavern</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wacky</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Small tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Large tunnels</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Small floating islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium floating islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Large floating islands</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWNetServersModel</name> + <message> + <source>Title</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>IP</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Port</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HWNewNet</name> + <message> + <source>The host was not found. Please check the host name and port settings.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connection refused</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Room destroyed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Quit reason: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>You got kicked</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Password</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your nickname %1 is +registered on Hedgewars.org +Please provide your password +or pick another nickname:</source> + <translation type="obsolete">Your nickname %1 is +registered on Hedgewars.org +Please provide your password +or pick another nickname:</translation> + </message> + <message> + <source>%1 *** %2 has joined the room</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has joined</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has left (%3)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 *** %2 has left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your nickname %1 is +registered on Hedgewars.org +Please provide your password below +or pick another nickname in game config:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>KB</name> + <message> + <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageAdmin</name> + <message> + <source>Clear Accounts Cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fetch data</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server message for latest version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server message for previous versions:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Latest version protocol number:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>MOTD preview:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set data</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageConnecting</name> + <message> + <source>Connecting...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageEditTeam</name> + <message> + <source>General</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Advanced</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageGameStats</name> + <message> + <source>Details</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Health graph</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ranking</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>(%1 kill)</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> +</context> +<context> + <name>PageMain</name> + <message> + <source>Local Game (Play a game on a single computer)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Network Game (Play a game across a network)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>While playing you should give yourself a short break at least once an hour.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>No hedgehogs were harmed in making this game.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Keep your video card drivers up to date to avoid issues playing the game.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> + <comment>Tips</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageMultiplayer</name> + <message> + <source>Start</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageNet</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select server from the list above</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageNetGame</name> + <message> + <source>Control</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageNetType</name> + <message> + <source>LAN game</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Official server</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageOptions</name> + <message> + <source>New team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PagePlayDemo</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rename dialog</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enter new file name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot rename to</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot delete file</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select record from the list</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageRoomsList</name> + <message> + <source>Create</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Refresh</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Admin features</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Room Name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This game is in lobby. +You may join and start playing once the game starts.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This game is in progress. +You may join and spectate now but you'll have to wait for the game to end to start playing.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>%1 is the host. He may adjust settings and start the game.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Games may be played on precreated or randomized maps.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Weapon Scheme defines available weapons and their ammunition count.</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <source>There are %1 clients connected to this room.</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message numerus="yes"> + <source>There are %1 teams participating in this room.</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message> + <source>Please enter room name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please select room from the list</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Maze</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>State:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rules:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Search:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Warning</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The game you are trying to join has started. +Do you still want to join the room?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageScheme</name> + <message> + <source>Defend your fort and destroy the opponents, two team colours max!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Teams will start on opposite sides of the terrain, two team colours max!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Land can not be destroyed!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Add an indestructable border around the terrain</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Lower gravity</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Assisted aiming with laser sight</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All hogs have a personal forcefield</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gain 80% of the damage you do back in health</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Share your opponents pain, share their damage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Your hogs are unable to move, put your artillery skills to the test</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Seconds</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Order of play is random instead of in room order.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Play with a King. If he dies, your side dies.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Take turns placing your hedgehogs before the start of play.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ammo is shared between all teams that share a colour.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable girders when generating random maps.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable land objects when generating random maps.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>AI respawns on death.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All (living) hedgehogs are fully restored at the end of turn</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Attacking does not end your turn.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons are reset to starting values each turn.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Each hedgehog has its own ammo. It does not share with the team.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageSelectWeapon</name> + <message> + <source>Default</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PageSinglePlayer</name> + <message> + <source>Simple Game (a quick game against the computer, settings are chosen for you)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Multiplayer (play a hotseat game against your friends, or AI teams)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Demos (Watch recorded demos)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load (Load a previously saved game)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Campaign Mode (...). IN DEVELOPMENT</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QAction</name> + <message> + <source>Kick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Info</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Restrict Joins</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Restrict Team Additions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ban</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Follow</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ignore</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Add friend</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unignore</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Remove friend</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QCheckBox</name> + <message> + <source>Check for updates at startup</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fullscreen</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Frontend fullscreen</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable sound</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable music</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Show FPS</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Alternative damage show</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Append date and time to record file name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Show ammo menu tooltips</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable frontend sounds</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable frontend music</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Frontend effects</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QComboBox</name> + <message> + <source>generated map...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Human</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Level</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(System default)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mission</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>generated maze...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Community</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Any</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>In lobby</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>In progress</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QGroupBox</name> + <message> + <source>Team Members</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fort</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Key binds</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Audio/Graphic options</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Net game</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Playing teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Game Modifiers</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Basic Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Team Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Misc</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QLabel</name> + <message> + <source>Mines Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mines</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Version</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This program is distributed under the GNU General Public License</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Developers:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Art:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sounds:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Translations:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Special thanks:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Host:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Port:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Net nick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Resolution</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>FPS limit</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Server port:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Initial sound volume</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Damage Modifier</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Turn Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Initial Health</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sudden Death Timeout</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scheme Name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Crate Drops</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Game scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>% Dud Mines</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Type</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Grave</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Flag</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Voice</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Locale</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Restart game to apply</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Explosives</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tip: </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Quality</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>% Health Crates</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Health in Crates</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sudden Death Water Rise</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sudden Death Health Decrease</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QLineEdit</name> + <message> + <source>unnamed</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QMainWindow</name> + <message> + <source>Hedgewars %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QMessageBox</name> + <message> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connection to server is lost</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failed to open data directory: +%1 +Please check your installation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this weapon set?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not overwrite default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All file associations have been set.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>File association failed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot create directory %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Nickname</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Please enter your nickname</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QPushButton</name> + <message> + <source>default</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>OK</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start server</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Update</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Specify</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Go!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Play demo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rename</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Setup</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ready</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Team</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Associate file extensions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QTableWidget</name> + <message> + <source>Room Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>C</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>T</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Owner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rules</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapons</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>SelWeaponWidget</name> + <message> + <source>Weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Probabilities</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ammo in boxes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delays</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>new</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TCPBase</name> + <message> + <source>Error</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to start the server: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to run engine: %1 (</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ToggleButtonWidget</name> + <message> + <source>Vampirism</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Karma</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Artillery</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fort Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Divide Teams</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Solid Land</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Add Border</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Low Gravity</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Laser Sight</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Invulnerable</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Random Order</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>King</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Place Hedgehogs</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clan Shares Ammo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable Girders</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable Land Objects</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>AI Survival Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset Health</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unlimited Attacks</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset Weapons</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Per Hedgehog Ammo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds</name> + <message> + <source>up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>right</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>attack</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>precise aim</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>put</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>switch</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>find hedgehog</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>ammo menu</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 4</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 5</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 6</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 7</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 8</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 9</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 1 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 2 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 3 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 4 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>timer 5 sec</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>chat</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>chat history</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>confirmation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>volume down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>volume up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>change mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>capture</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>hedgehogs +info</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>quit</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>zoom in</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>zoom out</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>reset zoom</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>long jump</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>high jump</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>slot 10</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds (categories)</name> + <message> + <source>Basic controls</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Weapon controls</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Camera and cursor controls</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Other</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds (descriptions)</name> + <message> + <source>Move your hogs and aim:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Traverse gaps and obstacles by jumping:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fire your selected weapon or trigger an utility item:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pick a weapon or a target location under the cursor:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Switch your currently active hog (if possible):</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pick a weapon or utility item:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set the timer on bombs and timed weapons:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Move the camera to the active hog:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Move the cursor or camera without using the mouse:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Modify the camera's zoom level:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Talk to your team or all participants:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pause, continue or leave your game:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Modify the game's volume while playing:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggle fullscreen mode:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Take a screenshot:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggle labels above hedgehogs:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>binds (keys)</name> + <message> + <source>Axis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Up)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Down)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hat</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Left)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Right)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Keyboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Left button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Middle button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Right button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Wheel up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mouse: Wheel down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Backspace</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tab</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Return</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Escape</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Space</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 0</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 3</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 4</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 5</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 6</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 7</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 8</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad 9</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad .</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad /</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad *</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad -</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Numpad +</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Equals</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Insert</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Home</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>End</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Page up</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Page down</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Num lock</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Caps lock</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scroll lock</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right shift</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left shift</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right ctrl</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left ctrl</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right alt</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left alt</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right meta</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left meta</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>A button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>B button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>X button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Y button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>LB button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>RB button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Back button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start button</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Right)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Left)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Down)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left stick (Up)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Left trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right trigger</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Down)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Up)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Right)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Right stick (Left)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>DPad</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_pl.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,25 @@ <source>new</source> <translation>nowy</translation> </message> + <message> + <source>copy of</source> + <translation>kopia</translation> + </message> +</context> +<context> + <name>DrawMapWidget</name> + <message> + <source>File error</source> + <translation>Błąd pliku</translation> + </message> + <message> + <source>Cannot open file '%1' for writing</source> + <translation>Nie można otworzyć '%1' do zapisu</translation> + </message> + <message> + <source>Cannot read file '%1'</source> + <translation>Nie można odczytać pliku '%1'</translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -43,7 +62,11 @@ </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation>Kiedy ta opcja jest włączona, wybór ustawnień gry zmienia uzbrojenie na odpowiadające (i vice versa)</translation> + <translation type="obsolete">Kiedy ta opcja jest włączona, wybór ustawnień gry zmienia uzbrojenie na odpowiadające (i vice versa)</translation> + </message> + <message> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>Kiedy ta opcja jest włączona, wybór ustawień gry zmienia uzbrojenie na odpowiednie</translation> </message> </context> <context> @@ -85,7 +108,7 @@ </message> <message> <source>new</source> - <translation>nowy</translation> + <translation type="obsolete">nowy</translation> </message> <message> <source>Please select record from the list above</source> @@ -187,6 +210,14 @@ <source>Large floating islands</source> <translation>Duże wyspy</translation> </message> + <message> + <source>Seed</source> + <translation>Ziarno</translation> + </message> + <message> + <source>Set</source> + <translation>Ustaw</translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -245,7 +276,7 @@ </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2 dołączył </translation> + <translation>%1 *** %2 dołączył</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> @@ -320,6 +351,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>Cofnij</translation> + </message> + <message> + <source>Clear</source> + <translation>Wyczyść</translation> + </message> + <message> + <source>Load</source> + <translation>Wczytaj</translation> + </message> + <message> + <source>Save</source> + <translation>Zapisz</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>Załaduj mapę</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>Narysowane mapy (*.hwmap);;Wszystkie pliki (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>Zapisz mapę</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -439,12 +501,12 @@ <message> <source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source> <comment>Tips</comment> - <translation>Niektóre z broni zadają mało punktów obrażeń jednak użyte w odpowiednim momencie mogą pokazać swój pazur. Spróbuj użyć pistoletu do strącania swoich przeciwników do wody.</translation> + <translation>Niektóre z broni zadają mało punktów obrażeń jednak użyte w odpowiednim momencie mogą pokazać swój pazur. Na przykład spróbuj użyć pistoletu do strącania swoich przeciwników do wody.</translation> </message> <message> <source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source> <comment>Tips</comment> - <translation>Jeśli nie jesteś pewien co zrobić w danej turze i nie chcesz tracić amunicji możesz pominąć turę. Nie rób tak jdnak zbyt często gdyż nagła śmierć jest nieuchronna!</translation> + <translation>Jeśli nie jesteś pewien co zrobić w danej turze i nie chcesz tracić amunicji możesz pominąć turę. Nie rób tak jednak zbyt często gdyż nagła śmierć jest nieuchronna!</translation> </message> <message> <source>Want to save ropse? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> @@ -454,12 +516,12 @@ <message> <source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source> <comment>Tips</comment> - <translation>Jeśli chciałbyś zapobiec uzywania własnego nicka przez kogoś innego, zarejestruj go na http://www.hedgewars.org .</translation> + <translation>Jeśli chciałbyś zapobiec używania własnego nicka przez kogoś innego, zarejestruj go na http://www.hedgewars.org .</translation> </message> <message> <source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source> <comment>Tips</comment> - <translation>Znudzony domyślnymi ustawieniami gry? Spróbuj zagrać w którąś z misji. - oferulą one zmienione zasady gry w zależności od tej którą wybrałeś.</translation> + <translation>Znudzony domyślnymi ustawieniami gry? Spróbuj zagrać w którąś z misji. - oferują one zmienione zasady gry w zależności od tej którą wybrałeś.</translation> </message> <message> <source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source> @@ -474,7 +536,7 @@ <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source> <comment>Tips</comment> - <translation>Hedgewars jest darmową grą o otwartym kodzie, którą tworzymy w naszym wolnym czasie. Jeśli ją lubisz, wspomóż nas małą wpłatą lub stwórz własną czapka bądź mapę!</translation> + <translation>Hedgewars jest darmową grą o otwartym kodzie, którą tworzymy w naszym wolnym czasie. Jeśli ją lubisz, wspomóż nas małą wpłatą lub stwórz własną czapkę bądź mapę!</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source> @@ -484,17 +546,17 @@ <message> <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source> <comment>Tips</comment> - <translation>Od czasu do czasu będą organizowane mistrzostwa. Będą one ogłaszane na parę dni z wyprzedzeniem na http://www.hedgewars.org/ .</translation> + <translation>Od czasu do czasu będą organizowane mistrzostwa. Będą one ogłaszane z wyprzedzeniem na http://www.hedgewars.org/ .</translation> </message> <message> <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source> <comment>Tips</comment> - <translation>Hedgewars jest dostępne w wielu językach. Jeśli brakuje tłumaczenia w twoim języku bądź jest ono wybrakowane, nie krępuj się z nami skontaktować!</translation> + <translation>Hedgewars jest dostępne w wielu językach. Jeśli brakuje tłumaczenia w twoim języku bądź jest ono wybrakowane, nie bój się z nami skontaktować!</translation> </message> <message> <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source> <comment>Tips</comment> - <translation>Hedgewars może być uruchomione na różnych systemach operacyjnych takich jak Microsoft Wondows, MacOS X oraz Linux.</translation> + <translation>Hedgewars może być uruchomione na różnych systemach operacyjnych takich jak Microsoft Windows, MacOS X oraz Linux.</translation> </message> <message> <source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source> @@ -529,7 +591,7 @@ <message> <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> <comment>Tips</comment> - <translation>Bądź kulturalny grając w internecie oraz pamiętaj o tym, że w hedgewars mogą grać także młodsze osoby!</translation> + <translation>Bądź kulturalny grając w internecie oraz pamiętaj o tym, że w Hedgewars mogą grać także młodsze osoby!</translation> </message> <message> <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> @@ -539,22 +601,22 @@ <message> <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source> <comment>Tips</comment> - <translation>Wersja Hedgewars dla systemu Windows wspiera XFire. Upewnij się, że dodałeś Hedgewars do listy gier by twoi znajomi mogli zobaczyć Ciebie w czasie gry.</translation> + <translation>Wersja Hedgewars dla systemu Windows wspiera XFire. Upewnij się, że dodałeś Hedgewars do listy gier by Twoi znajomi mogli zobaczyć Ciebie w czasie gry.</translation> </message> <message> <source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source> <comment>Tips</comment> - <translation>Nie powinieneś instalowaś Hedgewars na komputerach których nie posiadasz (w szkole, na studiach, w pracy itp.).Zapytaj osoby odpowiedzialnej za te komputery!</translation> + <translation>Nie powinieneś instalować Hedgewars na komputerach których nie posiadasz (w szkole, na studiach, w pracy itp.). Zapytaj osoby odpowiedzialnej za te komputery!</translation> </message> <message> <source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source> <comment>Tips</comment> - <translation>Hedgewars jest idealny go gry w czasie przerw.Upewnij się, że nei dodałeś zbyt dużej ilości jeży, bądź zbyt dużej mapy. Pomóc może także zmniejszenie długości tury lub obniżenie ilości życia.</translation> + <translation>Hedgewars jest idealny do gry w czasie przerw.Upewnij się, że nie dałeś zbyt dużej ilości jeży, bądź zbyt dużej mapy. Pomóc może także zmniejszenie długości tury lub obniżenie ilości życia.</translation> </message> <message> <source>No hedgehogs were harmed in making this game.</source> <comment>Tips</comment> - <translation>Żadny jeż nie został ranny w czasie tworzenia tej gry.</translation> + <translation>Żaden jeż nie został ranny w czasie tworzenia tej gry.</translation> </message> <message> <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> @@ -569,12 +631,12 @@ <message> <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> <comment>Tips</comment> - <translation>Jeśli podłączysz jeden lub więcej gamepadów przed włączeniem gry, będziesz miał możliwość przypisania klawiszy by sterować nimi własne jeże.</translation> + <translation>Jeśli podłączysz jeden lub więcej gamepadów przed włączeniem gry, będziesz miał możliwość przypisania klawiszy by sterować swoimi jeżami.</translation> </message> <message> <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> - <translation>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</translation> + <translation>Stwórz konto na %1 by zapobiec używania twojego ulubionego nicku przez innych na oficjalnym serwerze.</translation> </message> <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> @@ -594,7 +656,7 @@ <message> <source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source> <comment>Tips</comment> - <translation>Niektóre z broni wymagają specjalnej strategii lub dużo treningu by je popranie używać. Nie poddawaj się gdy nie ychodzi ci za pierwszym razem.</translation> + <translation>Niektóre z broni wymagają specjalnej strategii lub dużo treningu by je popranie używać. Nie poddawaj się gdy nie wychodzi ci za pierwszym razem.</translation> </message> <message> <source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source> @@ -604,22 +666,22 @@ <message> <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> <comment>Tips</comment> - <translation>Cuchnący ser nie powoduje wielkiiego wybuchu. Jednakże pod wpływem wiatu chmura śmierdzącego gazu może bardzo daleko zawędrować i otruć wiele jeży naraz.</translation> + <translation>Cuchnący ser nie powoduje wielkiego wybuchu. Jednakże pod wpływem wiatu chmura śmierdzącego gazu może bardzo daleko zawędrować i otruć wiele jeży naraz.</translation> </message> <message> <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> <comment>Tips</comment> - <translation>Zrzut pianina jest najbardziej morderczym atakiem powietrznym. Pamiętaj, że traciśz jeża którym wykonujesz ten atak więc dobrze zaplanuj swój ruch.</translation> + <translation>Zrzut pianina jest najbardziej morderczym atakiem powietrznym. Pamiętaj, że tracisz jeża którym wykonujesz ten atak więc dobrze zaplanuj swój ruch.</translation> </message> <message> <source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source> <comment>Tips</comment> - <translation>Pszczoła potrafi być ciężka w użyciu. Jej promień skrętu zależy od prędkości lotu, więc nie próbuj używać pełnej mocy podczas strzału.</translation> + <translation>Pszczoła potrafi być ciężka w użyciu. Jej promień skrętu zależy od prędkości lotu, więc nie staraj się nie używać pełnej mocy podczas strzału.</translation> </message> <message> <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source> <comment>Tips</comment> - <translation>Miny samoprzylepne są idealnym narzędziem by tworzyć małe reakcje łańcuchowe bądź zmuszenia przeciwnika by popadł w tarapaty lub wpadł do wody.</translation> + <translation>Miny samoprzylepne są idealnym narzędziem by tworzyć małe reakcje łańcuchowe bądź do zmuszenia przeciwnika by popadł w tarapaty lub wpadł do wody.</translation> </message> <message> <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source> @@ -629,7 +691,7 @@ <message> <source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source> <comment>Tips</comment> - <translation>Jeśli utknąłeś za jeżem przeciwnika, użyj młotka by wbić go w ziemię. Unikniesz wtedy eksplozji która z pewnością zabrała by Tobie punkty życia.</translation> + <translation>Jeśli utknąłeś za jeżem przeciwnika, użyj młotka by wbić go w ziemię. Unikniesz wtedy eksplozji która z pewnością zabrałaby Tobie punkty życia.</translation> </message> <message> <source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source> @@ -639,7 +701,7 @@ <message> <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source> <comment>Tips</comment> - <translation>Miotacz ognia jest głównie bronią ale moe być użyty również jako narzędzie do kopania tuneli.</translation> + <translation>Miotacz ognia jest śmiercionośną bronią ale może być użyty również jako narzędzie do kopania tuneli.</translation> </message> <message> <source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> @@ -649,7 +711,7 @@ <message> <source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source> <comment>Tips</comment> - <translation>Chcesz wiedzieć kto tworzy tę grę. Kliknij logo w głównym menu by zobaczyć autorów.</translation> + <translation>Chcesz wiedzieć kto tworzy tę grę? Kliknij logo w głównym menu by zobaczyć autorów.</translation> </message> <message> <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> @@ -659,12 +721,12 @@ <message> <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> <comment>Tips</comment> - <translation>Możesz rysować własne nagrobki, czapki, flagi lub nawet mapy albo tematy! Miej na uwadze to by udostępnić je każdemu który będzie z tobą grał prze4z sieć.</translation> + <translation>Możesz rysować własne nagrobki, czapki, flagi lub nawet mapy albo tematy! Miej na uwadze to by udostępnić je każdemu który będzie grał z Tobą przez sieć.</translation> </message> <message> <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source> <comment>Tips</comment> - <translation>Bardzo chcesz nosić czapkę jaka ci się zamarzy. Wspomóż nas pieniężnie a my zrobimy specjalną czapkę tylko dla Ciebie!</translation> + <translation>Chcesz nosić wymarzoną czapkę? Wspomóż nas pieniężnie a my zrobimy specjalną czapkę tylko dla Ciebie!</translation> </message> <message> <source>Keep your video card drivers up to date to avoid issues playing the game.</source> @@ -694,7 +756,7 @@ <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation>Swoje zespoły i konfigurację gry znajdziesz w folderze "Biblioteka/Wsparcie aplikacji/Hedgewars" w towim katalogu domowym. Twórz regularnie kopie zapasowe, ale nie edytuj tych plików własnoręcznie.</translation> + <translation>Swoje zespoły i konfigurację gry znajdziesz w folderze "Library/Application Support/Hedgewars" w twoim katalogu domowym. Twórz regularnie kopie zapasowe, ale nie edytuj tych plików własnoręcznie.</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> @@ -717,7 +779,7 @@ </message> <message> <source>Please select server from the list above</source> - <translation>Wybierz serwer z listy powyżej</translation> + <translation>Wybierz serwer z powyższej listy</translation> </message> </context> <context> @@ -754,19 +816,43 @@ </message> <message> <source>New weapon scheme</source> - <translation>Nowy schemat uzbrojenia</translation> + <translation type="obsolete">Nowy schemat uzbrojenia</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Edytuj schemat uzbrojenia</translation> + <translation type="obsolete">Edytuj schemat uzbrojenia</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Usuń schemat uzbrojenia</translation> + <translation type="obsolete">Usuń schemat uzbrojenia</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> - <translation>Nie możesz edytować drużyn z menu wyboru drużyn. Wróć do głównego menu by dodawać, edytować i usuwać drużyny.</translation> + <translation>Nie możesz edytować drużyn z menu wyboru drużyn. By to uczynić, wróć do głównego menu.</translation> + </message> + <message> + <source>New scheme</source> + <translation>Nowy schemat</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Edytuj schemat</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Usuń schemat</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Nowy zestaw uzbrojenia</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Edytuj zestaw uzbrojenia</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Usuń zestaw uzbrojenia</translation> </message> </context> <context> @@ -852,15 +938,15 @@ </message> <message> <source>Games may be played on precreated or randomized maps.</source> - <translation>Gry mogą być rozgrywane na losowych lub uprzednio stworznych mapach.</translation> + <translation>Gry mogą być rozgrywane na losowych lub uprzednio stworzonych mapach.</translation> </message> <message> <source>The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism.</source> - <translation>Schemat określa ustawnienia i preferencje takie jak Czas trwania tury, Nagłą śmierć lub Wampiryzm.</translation> + <translation>Schemat określa ustawnienia i preferencje takie jak Czas trwania tury, Nagłą śmierć, Wampiryzm itp.</translation> </message> <message> <source>The Weapon Scheme defines available weapons and their ammunition count.</source> - <translation>Schemat uzbrojenia określa dostępną broń oraz ilość amunicji.</translation> + <translation>Zestaw uzbrojenia określa dostępną broń oraz ilość amunicji.</translation> </message> <message numerus="yes"> <source>There are %1 clients connected to this room.</source> @@ -1027,6 +1113,18 @@ <source>All (living) hedgehogs are fully restored at the end of turn</source> <translation>Wszystkie żyjące jeże mają pełne życie od następnej tury</translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>Wiatr nie jest już problemem.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>Wiatr ma wpływ na prawie każdą broń.</translation> + </message> + <message> + <source>Copy</source> + <translation>Kopiuj</translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1038,6 +1136,14 @@ <source>Delete</source> <translation>Usuń</translation> </message> + <message> + <source>New</source> + <translation>Nowy</translation> + </message> + <message> + <source>Copy</source> + <translation>Kopiuj</translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1242,6 +1348,14 @@ <source>Crazy</source> <translation type="obsolete">Crazy</translation> </message> + <message> + <source>Normal</source> + <translation type="obsolete">Normalna</translation> + </message> + <message> + <source>hand drawn map...</source> + <translation>Mapa rysowana ręcznie...</translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1267,7 +1381,7 @@ </message> <message> <source>Weapons</source> - <translation>Uzbrojenie</translation> + <translation type="obsolete">Uzbrojenie</translation> </message> <message> <source>Net game</source> @@ -1293,6 +1407,10 @@ <source>Misc</source> <translation>Różne</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>Schematy i uzbrojenie</translation> + </message> </context> <context> <name>QLabel</name> @@ -1474,7 +1592,15 @@ </message> <message> <source>Bind schemes and weapons</source> - <translation>Połącz ustawienia gry z uzbrojeniem</translation> + <translation type="obsolete">Połącz ustawienia gry z uzbrojeniem</translation> + </message> + <message> + <source>% Rope Length</source> + <translation>Długość liny w %</translation> + </message> + <message> + <source>Gameplay</source> + <translation>Rozgrywka</translation> </message> </context> <context> @@ -1523,11 +1649,11 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Nie można usunąć domyślnego zestawu uzbrojenia</translation> + <translation type="obsolete">Nie można usunąć domyślnego zestawu uzbrojenia</translation> </message> <message> <source>Really delete this weapon set?</source> - <translation>Czy naprawdę usunąć ten zestaw uzbrojenia?</translation> + <translation>Czy na pewno usunąć ten zestaw uzbrojenia?</translation> </message> <message> <source>Can not overwrite default weapon set '%1'!</source> @@ -1541,6 +1667,30 @@ <source>File association failed.</source> <translation>Powiązanie plików nie powiodło się.</translation> </message> + <message> + <source>Teams</source> + <translation>Drużyny</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>Na pewno usunąć tę drużynę?</translation> + </message> + <message> + <source>Schemes</source> + <translation>Schematy</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>Nie można usunąć domyśłnego schematu '%1'!</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>Na pewno usunąć ten schemat?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>Nie można usunąć domyśłnego zestawu usbrojenia '%1'!</translation> + </message> </context> <context> <name>QObject</name> @@ -1635,6 +1785,14 @@ <source>Associate file extensions</source> <translation>Powiąż typy plików z Hedgewars</translation> </message> + <message> + <source>Set</source> + <translation type="obsolete">Ustaw</translation> + </message> + <message> + <source>more</source> + <translation>Więcej</translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1685,6 +1843,14 @@ <source>Delays</source> <translation>Opóźnienie</translation> </message> + <message> + <source>new</source> + <translation>nowy</translation> + </message> + <message> + <source>copy of</source> + <translation>kopia</translation> + </message> </context> <context> <name>TCPBase</name> @@ -1791,6 +1957,14 @@ <source>Reset Health</source> <translation>Odnów życie</translation> </message> + <message> + <source>Disable Wind</source> + <translation>Wyłącz wiatr</translation> + </message> + <message> + <source>More Wind</source> + <translation>Więcej wiatru</translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>Novo</translation> </message> + <message> + <source>copy of</source> + <translation>cópia de</translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,8 +45,8 @@ <translation>Editar esquemas</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation type="unfinished"></translation> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>Quando esta opção está habilitada a seleção de um esquema de jogo implicará em auto seleção do esquema de armas</translation> </message> </context> <context> @@ -84,7 +88,7 @@ </message> <message> <source>new</source> - <translation>novo</translation> + <translation type="obsolete">novo</translation> </message> <message> <source>Please select record from the list above</source> @@ -182,6 +186,15 @@ <source>Large floating islands</source> <translation>Ilhas grandes</translation> </message> + <message> + <source>Seed</source> + <translatorcomment>checar</translatorcomment> + <translation type="unfinished">Semeie</translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished">Esquema</translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -307,6 +320,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>Desfazer</translation> + </message> + <message> + <source>Clear</source> + <translation>Limpar</translation> + </message> + <message> + <source>Load</source> + <translation>Carregar</translation> + </message> + <message> + <source>Save</source> + <translation>Salvar</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>Carregar mapa</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>Mapas Desenhados (*.hwmaps);; Todos os arquivos (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>Salvar Mapa</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -430,21 +474,21 @@ </message> <message numerus="yes"> <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> - <translation type="unfinished"> + <translation> <numerusform><b>%1</b> pensou que era bom atirar na sua própria equipe totalizando <b>%2</b> ponto.</numerusform> <numerusform><b>%1</b> pensou que era bom atirar na sua própria equipe totalizando <b>%2</b> pontos.</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> - <translation type="unfinished"> + <translation> <numerusform><b>%1</b> matou <b>%2</b> dos próprios ouriços.</p>.</numerusform> <numerusform><b>%1</b> matou <b>%2</b> dos próprios ouriços.</p>.</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> - <translation type="unfinished"> + <translation> <numerusform><b>%1</b> estava assustado e passou o turno <b>%2</b> vez.</p>.</numerusform> <numerusform><b>%1</b> estava assustado e passou o turno <b>%2</b> vezes.</p>.</numerusform> </translation> @@ -719,17 +763,17 @@ <message> <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> <comment>Tips</comment> - <translation type="unfinished">Quer economizar corda? Solte-a quando estiver no meio do ar e então atire de novo. Se você não tocar o solo, você reutilizará a corda e não desperdiçará o seu arsenal!</translation> + <translation>Quer economizar corda? Solte-a quando estiver no meio do ar e então atire de novo. Se você não tocar o solo, você reutilizará a corda e não desperdiçará-la do seu arsenal!</translation> </message> <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Você pode encontrar os arquivos de configuração do Hedgewars em "Library/Application Support/Hedgewars" no seu diretório base. Crie backups ou leve os arquivos com você, mas não os edite manualmente.</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Você pode encontrar os arquivos de configuração do Hedgewars em ".hedgewars/" no seu diretório base. Crie backups ou leve os arquivos com você, mas não os edite manualmente.</translation> </message> </context> <context> @@ -784,20 +828,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Novo esquema de armas</translation> + <translation type="obsolete">Novo esquema de armas</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Editar esquema de armas</translation> + <translation type="obsolete">Editar esquema de armas</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Apagar esquema de armas</translation> + <translation type="obsolete">Apagar esquema de armas</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>Você não pode editar as equipes a partir da seleção de equipes. Volte ao menu para adicionar, editar ou apagar equipes.</translation> </message> + <message> + <source>New scheme</source> + <translation>Novo Esquema</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Editar Esquema</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Apagar Esquema</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Novo esquema de armas</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Editar esquema de armas</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Apagar esquema de armas</translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -1055,6 +1123,18 @@ <source>All (living) hedgehogs are fully restored at the end of turn</source> <translation>Todos os ouriços vivos são completamente restaurados ao fim do turno</translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>Você não tem que se preocupar com o vento mais.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>Vento afetará quase tudo.</translation> + </message> + <message> + <source>Copy</source> + <translation>Copiar</translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1066,6 +1146,14 @@ <source>Delete</source> <translation>Excluir</translation> </message> + <message> + <source>New</source> + <translation>Novo</translation> + </message> + <message> + <source>Copy</source> + <translation>Copiar</translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1270,6 +1358,14 @@ <source>Crazy</source> <translation type="obsolete">Crazy</translation> </message> + <message> + <source>Normal</source> + <translation type="obsolete">Normal</translation> + </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished">mapa desenhado a mão...</translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1295,7 +1391,7 @@ </message> <message> <source>Weapons</source> - <translation>Armas</translation> + <translation type="obsolete">Armas</translation> </message> <message> <source>Net game</source> @@ -1321,6 +1417,10 @@ <source>Misc</source> <translation>Misc</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>Esquemas e Armas</translation> + </message> </context> <context> <name>QLabel</name> @@ -1499,8 +1599,12 @@ <translation type="unfinished">Morte Subita: redução de vida</translation> </message> <message> - <source>Bind schemes and weapons</source> - <translation type="unfinished"></translation> + <source>% Rope Length</source> + <translation type="unfinished">% Comprimento da Corda</translation> + </message> + <message> + <source>Gameplay</source> + <translation type="unfinished">Modo de Jogo</translation> </message> </context> <context> @@ -1551,7 +1655,7 @@ <message> <source>Can not delete default weapon set</source> <translatorcomment>Duvida:Esquema ou disposição?</translatorcomment> - <translation>Não foi possível excluir o esquema padrão de armas</translation> + <translation type="obsolete">Não foi possível excluir o esquema padrão de armas</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1569,6 +1673,30 @@ <source>File association failed.</source> <translation>Associação de arquivos falhou.</translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Equipes</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished">Realmente deseja apagar esta Equipe?</translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished">Esquemas</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished">Esquema padrão não pode ser apagado '%1'!</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished">Realmente deseja apagar este esquema de jogo?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished">Esquema de armas não pode ser apagado '%1'!</translation> + </message> </context> <context> <name>QObject</name> @@ -1663,6 +1791,15 @@ <source>Associate file extensions</source> <translation>Associar extensão de arquivos.</translation> </message> + <message> + <source>Set</source> + <translatorcomment>Esquema esta muito genérico</translatorcomment> + <translation type="obsolete">Esquema</translation> + </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1715,6 +1852,14 @@ <source>Delays</source> <translation>Atrasos</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">novo</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished">cópia de</translation> + </message> </context> <context> <name>TCPBase</name> @@ -1821,6 +1966,14 @@ <source>Reset Health</source> <translation>Restaurar Vida</translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished">Desativar Vento</translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished">Mais Vento</translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>novo</translation> </message> + <message> + <source>copy of</source> + <translation>copia de</translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -41,8 +45,8 @@ <translation>Editar armas</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation type="unfinished"></translation> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>Com esta opção activada o esquema de jogo irá automaticamente seleccionar uma arma</translation> </message> </context> <context> @@ -68,7 +72,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>novo</translation> + <translation type="obsolete">novo</translation> </message> <message> <source>Error</source> @@ -182,6 +186,14 @@ <source>Large floating islands</source> <translation>Ilhas flutuantes grandes</translation> </message> + <message> + <source>Seed</source> + <translation>Semente</translation> + </message> + <message> + <source>Set</source> + <translation>Definir</translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -315,6 +327,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>Anular</translation> + </message> + <message> + <source>Clear</source> + <translation>Limpar</translation> + </message> + <message> + <source>Load</source> + <translation>Carregar</translation> + </message> + <message> + <source>Save</source> + <translation>Gravar</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>Carregar mapa desenhado</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>Mapas Desenhados (*.hwmap);;Todos os ficheiros (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>Gravar mapa desenhado</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -382,10 +425,6 @@ <numerusform>(%1 mortos)</numerusform> </translation> </message> - <message> - <source>(%1 kills)</source> - <translation type="obsolete">(%1 mortos)</translation> - </message> <message numerus="yes"> <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> <translation> @@ -529,11 +568,6 @@ <translation>Nenhum ouriço foi mal tratado durante a produção deste jogo.</translation> </message> <message> - <source>Want to save ropse? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> - <comment>Tips</comment> - <translation type="obsolete">Precisas de poupar as cordas? Solta a corda enquanto no ar e dispara-a novamente. Enquanto não tocares no solo podes usar a mesma corda novamente sem desperdiar outras!</translation> - </message> - <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source> <comment>Tips</comment> <translation>O Hedgewars é Open Source e Freeware desenvolvido durante o tempo livre. Se alguem te vendeu o jogo, tente obter o reembolso!</translation> @@ -626,7 +660,7 @@ <message> <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> <comment>Tips</comment> - <translation>Gostas do Hedgewars? Torna-te fã no %1 ou segue-nos pelo %!</translation> + <translation>Gostas do Hedgewars? Torna-te fã no %1 ou segue-nos pelo %2!</translation> </message> <message> <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> @@ -649,11 +683,6 @@ <translation>Podes encontrar os ficheiros de configuração do Hedgewars em "Documentos\Hedgewars". Cria cópias de segurança ou leva os ficheiros contigo, apenas não os edites.</translation> </message> <message> - <source>You can find your Hedgewars configuration files under "Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> - <comment>Tips</comment> - <translation type="obsolete">Podes encontrar os ficheiros de configuração do Hedgewars na pasta "Hedgewars" dentro da tua "Pasta Pessoal". Cria cópias de segurança ou leva os ficheiros contigo, apenas não os edites.</translation> - </message> - <message> <source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source> <comment>Tips</comment> <translation>É possivel associar os ficheiros relacionados com o Hedgewars (partidas e demonstrações) directamente com o jogo para que seja possivel lançalos directamente do teu explorador de ficheiros ou internet favorito.</translation> @@ -666,12 +695,12 @@ <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Podes encontrar os ficheiros de configuração do Hedgewars em "Library/Application Support/Hedgewars" dentro da tua "Pasta Pessoal". Cria cópias de segurança ou leva os ficheiros contigo, mas não os edites manualmente.</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Podes encontrar os ficheiros de configuração do Hedgewars em ".hedgewars" dentro da tua "Pasta Pessoal". Cria cópias de segurança ou leva os ficheiros contigo, mas não os edites manualmente.</translation> </message> </context> <context> @@ -726,20 +755,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Novo esquema de armas</translation> + <translation type="obsolete">Novo esquema de armas</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Editar esquema de armas</translation> + <translation type="obsolete">Editar esquema de armas</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Apagar esquema de armas</translation> + <translation type="obsolete">Apagar esquema de armas</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>Não é possível editar equipas do menu de selecção de equipa. Volte ao menu principal se pretender adicionar, editar ou apagar equipas.</translation> </message> + <message> + <source>New scheme</source> + <translation>Novo esquema</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Editar esquema</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Apagar esquema</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Novo esquema de armas</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Editar esquema de armas</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Apagar esquema de armas</translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -997,6 +1050,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation>Cada ouriço tem as suas próprias armas. Não são partilhadas com a equipa.</translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>Não vais ter de te preocupar mais com o vento.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>O vento afecta quase tudo.</translation> + </message> + <message> + <source>Copy</source> + <translation>Copiar</translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1008,6 +1073,14 @@ <source>Delete</source> <translation>Eliminar</translation> </message> + <message> + <source>New</source> + <translation>Novo</translation> + </message> + <message> + <source>Copy</source> + <translation>Copiar</translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1184,6 +1257,10 @@ <source>Default</source> <translation type="obsolete">Predefinido</translation> </message> + <message> + <source>hand drawn map...</source> + <translation>mapa desenhado à mão...</translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1205,7 +1282,7 @@ </message> <message> <source>Weapons</source> - <translation>Armas</translation> + <translation type="obsolete">Armas</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1235,6 +1312,10 @@ <source>Misc</source> <translation>Diversos</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>Esquemas e Armamento</translation> + </message> </context> <context> <name>QLabel</name> @@ -1403,8 +1484,12 @@ <translation>Vida perdida durante Morte Súbita</translation> </message> <message> - <source>Bind schemes and weapons</source> - <translation type="unfinished"></translation> + <source>% Rope Length</source> + <translation>% Comprimento da Corda</translation> + </message> + <message> + <source>Gameplay</source> + <translation>Jogabilidade</translation> </message> </context> <context> @@ -1453,7 +1538,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Não é possível eliminar o esquema de armas predefinido</translation> + <translation type="obsolete">Não é possível eliminar o esquema de armas predefinido</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1471,6 +1556,30 @@ <source>File association failed.</source> <translation>Não foi possivel associar os ficheiros.</translation> </message> + <message> + <source>Teams</source> + <translation>Equipas</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>Deseja mesmo apagar esta equipa?</translation> + </message> + <message> + <source>Schemes</source> + <translation>Esquemas</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>Não é possível eliminar o esquema por omisão '%1'!</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>Deseja mesmo apagar este esquema de jogo?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>Não é possível eliminar o esquema de armas por omisão '%1'!</translation> + </message> </context> <context> <name>QObject</name> @@ -1565,6 +1674,10 @@ <source>Associate file extensions</source> <translation>Associar com as extensões dos ficheiros</translation> </message> + <message> + <source>more</source> + <translation>mais</translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1615,6 +1728,14 @@ <source>Delays</source> <translation>Atrasos</translation> </message> + <message> + <source>new</source> + <translation>novo</translation> + </message> + <message> + <source>copy of</source> + <translation>copia de</translation> + </message> </context> <context> <name>TCPBase</name> @@ -1721,6 +1842,14 @@ <source>Per Hedgehog Ammo</source> <translation>Armamento Por Ouriço</translation> </message> + <message> + <source>Disable Wind</source> + <translation>Desactivar Vento</translation> + </message> + <message> + <source>More Wind</source> + <translation>Mais Vento</translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>новый</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -43,7 +47,11 @@ </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation>При включении этой опции выбор настроек игры автоматически выберет схему оружия (и наоборот)</translation> + <translation type="obsolete">При включении этой опции выбор настроек игры автоматически выберет схему оружия (и наоборот)</translation> + </message> + <message> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -85,7 +93,7 @@ </message> <message> <source>new</source> - <translation>новый</translation> + <translation type="obsolete">новый</translation> </message> <message> <source>Please select record from the list above</source> @@ -183,6 +191,14 @@ <source>Large floating islands</source> <translation>Большие островки</translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -316,6 +332,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished">Очистить</translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Загрузить</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -721,20 +768,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Новая схема оружия</translation> + <translation type="obsolete">Новая схема оружия</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Редактировать схему оружия</translation> + <translation type="obsolete">Редактировать схему оружия</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Удалить схему оружия</translation> + <translation type="obsolete">Удалить схему оружия</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>Невозможно редактировать команды со страницы выбора команд. Вернитесь в главное меню для добавления, редактирования или удаления команд.</translation> </message> + <message> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -994,6 +1065,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation>У каждого ежа свой набор оружия, не являющийся общим для команды.</translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1005,6 +1088,14 @@ <source>Delete</source> <translation>Удалить</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">Новая</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1181,6 +1272,10 @@ <source>Default</source> <translation type="obsolete">По умолчанию</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1214,7 +1309,7 @@ </message> <message> <source>Weapons</source> - <translation>Оружие</translation> + <translation type="obsolete">Оружие</translation> </message> <message> <source>Game Modifiers</source> @@ -1232,6 +1327,10 @@ <source>Misc</source> <translation>Разное</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1407,7 +1506,15 @@ </message> <message> <source>Bind schemes and weapons</source> - <translation>Объединить настройки игры и оружия</translation> + <translation type="obsolete">Объединить настройки игры и оружия</translation> + </message> + <message> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -1452,7 +1559,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Невозможно удалить набор оружия по умолчанию</translation> + <translation type="obsolete">Невозможно удалить набор оружия по умолчанию</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1474,6 +1581,30 @@ <source>File association failed.</source> <translation>Сопоставление не удалось.</translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Команды</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1568,6 +1699,10 @@ <source>Associate file extensions</source> <translation>Сопоставить расширения файлов</translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1618,6 +1753,14 @@ <source>Delays</source> <translation>Задержки</translation> </message> + <message> + <source>new</source> + <translation type="unfinished">новый</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1724,6 +1867,14 @@ <source>Per Hedgehog Ammo</source> <translation>Индивидуальный набор оружия</translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>nový</translation> </message> + <message> + <source>copy of</source> + <translation>kópia z</translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -43,7 +47,11 @@ </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation>Ak je táto voľba vybraná, zvolením hernej schémy budú automaticky vybrané aj zbrane (a naopak)</translation> + <translation type="obsolete">Ak je táto voľba vybraná, zvolením hernej schémy budú automaticky vybrané aj zbrane (a naopak)</translation> + </message> + <message> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>Keď je vybraná táto voľba výberom hernej schémy vyberiete automaticky aj zbraň</translation> </message> </context> <context> @@ -85,7 +93,7 @@ </message> <message> <source>new</source> - <translation>nový</translation> + <translation type="obsolete">nový</translation> </message> <message> <source>Please select record from the list above</source> @@ -183,6 +191,14 @@ <source>Large floating islands</source> <translation>Veľké plávajúce ostrovčeky</translation> </message> + <message> + <source>Seed</source> + <translation>Zrno</translation> + </message> + <message> + <source>Set</source> + <translation>Nastaviť</translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -318,6 +334,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>Odvolať</translation> + </message> + <message> + <source>Clear</source> + <translation>Vyčistiť</translation> + </message> + <message> + <source>Load</source> + <translation>Načítať</translation> + </message> + <message> + <source>Save</source> + <translation>Uložiť</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>Načítať nakreslenú mapu</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>Nakreslené mapy (*.hwmap);;Všetky súbory (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>Uložiť nakreslenú mapu</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -432,7 +479,7 @@ <message> <source>Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.</source> <comment>Tips</comment> - <translation>Ak chcete hrať s priateľom ako team, jednoducho si zvoľte tú istú farbu. I naďalej budete ovládať svojich vlastných ježkov, ale víťazstvá či prehry budú spoločné.</translation> + <translation>Ak chcete hrať s priateľom ako tím, jednoducho si zvoľte tú istú farbu. I naďalej budete ovládať svojich vlastných ježkov, ale víťazstvá či prehry budú spoločné.</translation> </message> <message> <source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source> @@ -730,11 +777,11 @@ <name>PageOptions</name> <message> <source>New team</source> - <translation>Nový team</translation> + <translation>Nový tím</translation> </message> <message> <source>Edit team</source> - <translation>Upraviť team</translation> + <translation>Upraviť tím</translation> </message> <message> <source>Delete team</source> @@ -742,19 +789,43 @@ </message> <message> <source>New weapon scheme</source> - <translation>Nová schéma pre zbrane</translation> + <translation type="obsolete">Nová schéma pre zbrane</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Upraviť schému pre zbrane</translation> + <translation type="obsolete">Upraviť schému pre zbrane</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Vymazať schému pre zbrane</translation> + <translation type="obsolete">Vymazať schému pre zbrane</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> - <translation>Z výberu tímov nemôžete upravovať teamytímy. Vráťte sa do hlavného menu, odkiaľ môžete pridávať, upravovať alebo mazať tímy.</translation> + <translation>Z výberu tímov nemôžete upravovať tímy. Vráťte sa do hlavného menu, odkiaľ môžete pridávať, upravovať alebo mazať tímy.</translation> + </message> + <message> + <source>New scheme</source> + <translation>Nová schéma</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Upraviť schému</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Vymazať schému</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Nová sada zbraní</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Upraviť sadu zbraní</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Vymazať sadu zbraní</translation> </message> </context> <context> @@ -861,9 +932,9 @@ <message numerus="yes"> <source>There are %1 teams participating in this room.</source> <translation> - <numerusform>V tejto miestnosti je jeden hrajúci team.</numerusform> - <numerusform>V tejto miestnosti sú %1 hrajúce teamy.</numerusform> - <numerusform>V tejto miestnosti je %1 hrajúcich teamov.</numerusform> + <numerusform>V tejto miestnosti je jeden hrajúci tím.</numerusform> + <numerusform>V tejto miestnosti sú %1 hrajúce tímy.</numerusform> + <numerusform>V tejto miestnosti je %1 hrajúcich tímov.</numerusform> </translation> </message> <message> @@ -917,7 +988,7 @@ </message> <message> <source>Gain 80% of the damage you do back in health</source> - <translation>Pridať 80% škody, ktorú spôsobíte k vášmu zdraviu</translation> + <translation>K vášmu zdraviu sa priráta 80 % škody, ktorú spôsobíte</translation> </message> <message> <source>Share your opponents pain, share their damage</source> @@ -945,11 +1016,11 @@ </message> <message> <source>Defend your fort and destroy the opponents, two team colours max!</source> - <translation>Ubráňte pevnosť a znižte nepriateľov, maximálne dve teamové farby!</translation> + <translation>Ubráňte pevnosť a zničte nepriateľov, maximálne dve tímové farby!</translation> </message> <message> <source>Teams will start on opposite sides of the terrain, two team colours max!</source> - <translation>Teamy začnú na opačných stranách terénu, maximálne dve teamové farby!</translation> + <translation>Tímy začnú na opačných stranách terénu, maximálne dve tímové farby!</translation> </message> <message> <source>Land can not be destroyed!</source> @@ -1013,7 +1084,19 @@ </message> <message> <source>Each hedgehog has its own ammo. It does not share with the team.</source> - <translation>Každý ježko má vlastnú výzbroj. Nie je zdieľaná so zvyškom teamu.</translation> + <translation>Každý ježko má vlastnú výzbroj. Nie je zdieľaná so zvyškom tímu.</translation> + </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>Už sa viac nebudete musieť zaujímať o vietor.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>Vietor bude ovplyvňovať takmer všetko.</translation> + </message> + <message> + <source>Copy</source> + <translation>Kopírovať</translation> </message> </context> <context> @@ -1026,6 +1109,14 @@ <source>Delete</source> <translation>Vymazať</translation> </message> + <message> + <source>New</source> + <translation>Nová</translation> + </message> + <message> + <source>Copy</source> + <translation>Kopírovať</translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1035,7 +1126,7 @@ </message> <message> <source>Multiplayer (play a hotseat game against your friends, or AI teams)</source> - <translation>Multiplayer (hrať hru, pri ktorej sa striedate s hráčmi pri počítači alebo proti počítačovým teamom)</translation> + <translation>Multiplayer (hrať hru, pri ktorej sa striedate s hráčmi pri počítači alebo proti počítačovým tímom)</translation> </message> <message> <source>Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT</source> @@ -1070,7 +1161,7 @@ </message> <message> <source>Restrict Team Additions</source> - <translation>Obmedziť pripojenie k teamu</translation> + <translation>Obmedziť pripojenie k tímu</translation> </message> <message> <source>Info</source> @@ -1230,12 +1321,20 @@ <source>Crazy</source> <translation type="obsolete">Šialené</translation> </message> + <message> + <source>Normal</source> + <translation type="obsolete">Normálna</translation> + </message> + <message> + <source>hand drawn map...</source> + <translation>ručne kreslená mapa...</translation> + </message> </context> <context> <name>QGroupBox</name> <message> <source>Team Members</source> - <translation>Členovia teamu</translation> + <translation>Členovia tímu</translation> </message> <message> <source>Key binds</source> @@ -1247,7 +1346,7 @@ </message> <message> <source>Teams</source> - <translation>Teamy</translation> + <translation>Tímy</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1255,7 +1354,7 @@ </message> <message> <source>Weapons</source> - <translation>Zbrane</translation> + <translation type="obsolete">Zbrane</translation> </message> <message> <source>Net game</source> @@ -1263,7 +1362,7 @@ </message> <message> <source>Playing teams</source> - <translation>Hrajúce teamy</translation> + <translation>Hrajúce tímy</translation> </message> <message> <source>Game Modifiers</source> @@ -1281,6 +1380,10 @@ <source>Misc</source> <translation>Rozličné</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>Schémy a zbrane</translation> + </message> </context> <context> <name>QLabel</name> @@ -1378,7 +1481,7 @@ </message> <message> <source>Crate Drops</source> - <translation>Zhadzovanie krabíc</translation> + <translation>Padanie krabíc</translation> </message> <message> <source>Scheme Name:</source> @@ -1386,7 +1489,7 @@ </message> <message> <source>% Dud Mines</source> - <translation>% Falošné míny</translation> + <translation>% falošných mín</translation> </message> <message> <source>Name</source> @@ -1441,15 +1544,15 @@ </message> <message> <source>Bind schemes and weapons</source> - <translation>Prepojiť schémy a zbrane</translation> + <translation type="obsolete">Prepojiť schémy a zbrane</translation> </message> <message> <source>Sudden Death Water Rise</source> - <translation>Stúpanie vody pri rýchlej smrti</translation> + <translation>Stúpanie vody počas rýchlej smrti</translation> </message> <message> <source>Sudden Death Health Decrease</source> - <translation>Klesanie vody pri rýchlej smrti</translation> + <translation>Klesanie zdravia počas rýchlej smrti</translation> </message> <message> <source>% Health Crates</source> @@ -1459,6 +1562,14 @@ <source>Health in Crates</source> <translation>Zdravie v bedniach</translation> </message> + <message> + <source>% Rope Length</source> + <translation>% dĺžka lana</translation> + </message> + <message> + <source>Gameplay</source> + <translation>Hra</translation> + </message> </context> <context> <name>QLineEdit</name> @@ -1506,7 +1617,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Nie je možné vymazať východziu sadu zbraní</translation> + <translation type="obsolete">Nie je možné vymazať východziu sadu zbraní</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1524,6 +1635,30 @@ <source>File association failed.</source> <translation>Nastavenie súborových asociácii zlyhalo.</translation> </message> + <message> + <source>Teams</source> + <translation>Tímy</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>Naozaj vymazať tento tím?</translation> + </message> + <message> + <source>Schemes</source> + <translation>Schémy</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>Nie je možné vymazať východziu schému '%1'!</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>Naozaj chcete vymazať túto hernú schému?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>Nie je možné vymazať východziu sadu zbraní '%1'!</translation> + </message> </context> <context> <name>QObject</name> @@ -1618,6 +1753,14 @@ <source>Associate file extensions</source> <translation>Asociovať prípony súborov.</translation> </message> + <message> + <source>Set</source> + <translation type="obsolete">Nastaviť</translation> + </message> + <message> + <source>more</source> + <translation>viac</translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1668,6 +1811,14 @@ <source>Delays</source> <translation>Oneskorenie</translation> </message> + <message> + <source>new</source> + <translation>nový</translation> + </message> + <message> + <source>copy of</source> + <translation>kópia z</translation> + </message> </context> <context> <name>TCPBase</name> @@ -1704,7 +1855,7 @@ </message> <message> <source>Divide Teams</source> - <translation>Rozdeliť teamy</translation> + <translation>Rozdeliť tímy</translation> </message> <message> <source>Solid Land</source> @@ -1774,6 +1925,14 @@ <source>Per Hedgehog Ammo</source> <translation>Individuálne zbrane</translation> </message> + <message> + <source>Disable Wind</source> + <translation>Vypnúť vietor</translation> + </message> + <message> + <source>More Wind</source> + <translation>Viac vetra</translation> + </message> </context> <context> <name>binds</name> @@ -2003,7 +2162,7 @@ </message> <message> <source>Talk to your team or all participants:</source> - <translation>Umožní vám rozhovor s vašim teamom alebo všetkými účastníkmi hry:</translation> + <translation>Umožní vám rozhovor s vašim tímom alebo všetkými účastníkmi hry:</translation> </message> <message> <source>Pause, continue or leave your game:</source>
--- a/share/hedgewars/Data/Locale/hedgewars_sv.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>ny</translation> </message> + <message> + <source>copy of</source> + <translation>kopia av</translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -26,7 +30,7 @@ <name>GameCFGWidget</name> <message> <source>Edit weapons</source> - <translation>Redigera vapenscheman</translation> + <translation>Redigera vapenset</translation> </message> <message> <source>Error</source> @@ -41,8 +45,8 @@ <translation>Redigera spelscheman</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation type="unfinished"></translation> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>När det här valet är aktivt kommer vapnen att ändras när du ändrar spelschema</translation> </message> </context> <context> @@ -84,7 +88,7 @@ </message> <message> <source>new</source> - <translation>ny</translation> + <translation type="obsolete">ny</translation> </message> <message> <source>Please select record from the list above</source> @@ -182,6 +186,14 @@ <source>Large floating islands</source> <translation>Stora flytande öar</translation> </message> + <message> + <source>Seed</source> + <translation>Frö</translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished">Ange</translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -315,6 +327,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>Ångra</translation> + </message> + <message> + <source>Clear</source> + <translation>Rensa</translation> + </message> + <message> + <source>Load</source> + <translation>Läs in</translation> + </message> + <message> + <source>Save</source> + <translation>Spara</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>Läs in ritad karta</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>Ritade kartor (*.hwmap);;Alla filer (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>Spara ritad karta</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -666,12 +709,12 @@ <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Du kan hitta dina konfigurationsfiler under "Library/Application Support/Hedgewars" i din hem-mapp. Gör en säkerhetskopia eller ta med dig filerna, men redigera dem inte för hand.</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Du kan hitta dina konfigurationsfiler under ".hedgewars" i din hem-mapp. Gör en säkerhetskopia eller ta med dig filerna, men redigera dem inte för hand.</translation> </message> </context> <context> @@ -726,20 +769,44 @@ </message> <message> <source>New weapon scheme</source> - <translation>Nytt vapenschema</translation> + <translation type="obsolete">Nytt vapenschema</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Redigera vapenschema</translation> + <translation type="obsolete">Redigera vapenschema</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Ta bort vapenschema</translation> + <translation type="obsolete">Ta bort vapenschema</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation>Du kan inte redigera lag från ett spel. Gå tillbaka till huvudmenyn för att lägga till, redigera eller ta bort lag.</translation> </message> + <message> + <source>New scheme</source> + <translation>Nytt schema</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Redigera schema</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Ta bort schema</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Nytt vapenset</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Redigera vapenset</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Ta bort vapenset</translation> + </message> </context> <context> <name>PagePlayDemo</name> @@ -997,6 +1064,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation>Varje igelkott har sin egen ammunition. Laget delar inte med varandra.</translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>Nu behöver du inte oroa dig för vinden längre.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>Vind påverkar nästan allting.</translation> + </message> + <message> + <source>Copy</source> + <translation>Kopiera</translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -1008,6 +1087,14 @@ <source>Delete</source> <translation>Ta bort</translation> </message> + <message> + <source>New</source> + <translation>Ny</translation> + </message> + <message> + <source>Copy</source> + <translation>Kopiera</translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1212,6 +1299,14 @@ <source>Crazy</source> <translation type="obsolete">Galet</translation> </message> + <message> + <source>Normal</source> + <translation type="obsolete">Vanligt</translation> + </message> + <message> + <source>hand drawn map...</source> + <translation>handritad karta...</translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1237,7 +1332,7 @@ </message> <message> <source>Weapons</source> - <translation>Vapen</translation> + <translation type="obsolete">Vapen</translation> </message> <message> <source>Net game</source> @@ -1263,6 +1358,10 @@ <source>Misc</source> <translation>Diverse</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>Scheman och vapen</translation> + </message> </context> <context> <name>QLabel</name> @@ -1437,8 +1536,12 @@ <translation>Sudden Death livminskning</translation> </message> <message> - <source>Bind schemes and weapons</source> - <translation type="unfinished"></translation> + <source>% Rope Length</source> + <translation>% replängd</translation> + </message> + <message> + <source>Gameplay</source> + <translation>Speltyp</translation> </message> </context> <context> @@ -1487,7 +1590,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Kan inte ta bort ursprungliga vapenscheman</translation> + <translation type="obsolete">Kan inte ta bort ursprungliga vapenscheman</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1505,6 +1608,30 @@ <source>File association failed.</source> <translation>Filassociationer har misslyckats.</translation> </message> + <message> + <source>Teams</source> + <translation>Lag</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>Vill du verkligen ta bort detta lag?</translation> + </message> + <message> + <source>Schemes</source> + <translation>Scheman</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>Kan inte ta bort standardschema '%1'!</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>Vill du verkligen ta bort detta spelschema?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>Kan inte ta bort standardvapenset '%1'!</translation> + </message> </context> <context> <name>QObject</name> @@ -1599,6 +1726,14 @@ <source>Associate file extensions</source> <translation>Associera filextentioner</translation> </message> + <message> + <source>Set</source> + <translation type="obsolete">Ange</translation> + </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1649,6 +1784,14 @@ <source>Delays</source> <translation>Fördröjning</translation> </message> + <message> + <source>new</source> + <translation>ny</translation> + </message> + <message> + <source>copy of</source> + <translation>kopia av</translation> + </message> </context> <context> <name>TCPBase</name> @@ -1755,6 +1898,14 @@ <source>Per Hedgehog Ammo</source> <translation>Ammunition per igelkott</translation> </message> + <message> + <source>Disable Wind</source> + <translation>Avaktivera vind</translation> + </message> + <message> + <source>More Wind</source> + <translation>Mer vind</translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>yeni</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -40,7 +44,7 @@ <translation>Düzeni değiştir</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -67,7 +71,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>yeni</translation> + <translation type="obsolete">yeni</translation> </message> <message> <source>Error</source> @@ -181,6 +185,14 @@ <source>Large floating islands</source> <translation type="unfinished"></translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -301,6 +313,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Yükle</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -677,19 +720,31 @@ <translation type="unfinished"></translation> </message> <message> - <source>New weapon scheme</source> + <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> <message> - <source>Edit weapon scheme</source> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> <translation type="unfinished"></translation> </message> <message> - <source>Delete weapon scheme</source> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> <translation type="unfinished"></translation> </message> <message> - <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> <translation type="unfinished"></translation> </message> </context> @@ -944,6 +999,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -955,6 +1022,14 @@ <source>Delete</source> <translation>Sil</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">Yeni</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1127,6 +1202,10 @@ <source>Default</source> <translation type="obsolete">Öntanımlı</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1148,7 +1227,7 @@ </message> <message> <source>Weapons</source> - <translation>Silahlar</translation> + <translation type="obsolete">Silahlar</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1178,6 +1257,10 @@ <source>Misc</source> <translation type="unfinished"></translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1346,7 +1429,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1396,7 +1483,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Öntanımlı silah seti silinemez</translation> + <translation type="obsolete">Öntanımlı silah seti silinemez</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1414,6 +1501,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">Takımlar</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1508,6 +1619,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1558,6 +1673,14 @@ <source>Delays</source> <translation type="unfinished"></translation> </message> + <message> + <source>new</source> + <translation type="unfinished">yeni</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1664,6 +1787,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- a/share/hedgewars/Data/Locale/hedgewars_uk.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>нова</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -43,7 +47,11 @@ </message> <message> <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Коли ввімкнена ця опція при виборі схеми гри зброя буде вибрана автоматично (and viceversa)</translation> + </message> + <message> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>Коли ввімкнена ця опція при виборі схеми гри зброя буде вибрана автоматично</translation> </message> </context> <context> @@ -69,7 +77,7 @@ <name>HWForm</name> <message> <source>new</source> - <translation>нова</translation> + <translation type="obsolete">нова</translation> </message> <message> <source>Error</source> @@ -93,17 +101,17 @@ </message> <message> <source>DefaultTeam</source> - <translation type="unfinished"></translation> + <translation>Команда за замовчуванням</translation> </message> <message> <source>Hedgewars Demo File</source> <comment>File Types</comment> - <translation type="unfinished"></translation> + <translation>Демо Файл Hedgewars</translation> </message> <message> <source>Hedgewars Save File</source> <comment>File Types</comment> - <translation type="unfinished"></translation> + <translation>Файл Збереження Hedgewars</translation> </message> </context> <context> @@ -183,6 +191,14 @@ <source>Large floating islands</source> <translation>Великі плавучі острова</translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -256,7 +272,10 @@ registered on Hedgewars.org Please provide your password below or pick another nickname in game config:</source> - <translation type="unfinished"></translation> + <translation>Ваш нік %1 вже +зареєстрований на Hedgewars.org +Введіть ваш пароль нижче або +виберіть інший нік в налаштуваннях гри:</translation> </message> </context> <context> @@ -313,6 +332,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished">Очистити</translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">Завантажити</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -347,64 +397,64 @@ </message> <message> <source>Details</source> - <translation type="unfinished"></translation> + <translation>Деталі</translation> </message> <message> <source>Health graph</source> - <translation type="unfinished"></translation> + <translation>Графа здоров'я</translation> </message> <message> <source>Ranking</source> - <translation type="unfinished"></translation> + <translation>Позиції</translation> </message> <message> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> - <translation type="unfinished"></translation> + <translation>Нагороду за кращий постріл отримує <b>%1</b> з <b>%2</b> пунктами нанесених втрат.</translation> </message> <message numerus="yes"> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Кращим вбивцею є <b>%1</b> з <b>%2</b> вбивством за хід.</numerusform> + <numerusform>Кращим вбивцею є <b>%1</b> з <b>%2</b> вбивствами за хід.</numerusform> + <numerusform>Кращим вбивцею є <b>%1</b> з <b>%2</b> вбивствами за хід.</numerusform> </translation> </message> <message numerus="yes"> <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>Загалом протягом цього раунду було вбито <b>%1</b> їжака.</numerusform> + <numerusform>Загалом протягом цього раунду було вбито <b>%1</b> їжаки.</numerusform> + <numerusform>Загалом протягом цього раунду було вбито <b>%1</b> їжаків.</numerusform> </translation> </message> <message numerus="yes"> <source>(%1 kill)</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>(%1 вбивство)</numerusform> + <numerusform>(%1 вбивства)</numerusform> + <numerusform>(%1 вбивств)</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> обстріляв напарників на <b>%2</b> пункт нанесених втрат.</numerusform> + <numerusform><b>%1</b> обстріляв напарників на <b>%2</b> пункти нанесених втрат.</numerusform> + <numerusform><b>%1</b> обстріляв напарників на <b>%2</b> пунктів нанесених втрат.</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> вбив <b>%2</b> їжака зі своєї команди.</numerusform> + <numerusform><b>%1</b> вбив <b>%2</b> їжаків зі своєї команди.</numerusform> + <numerusform><b>%1</b> вбив <b>%2</b> їжаків зі своєї команди.</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> - <translation type="unfinished"> - <numerusform></numerusform> + <translation> + <numerusform><b>%1</b> злякався і пропустив хід <b>%2</b> разів.</numerusform> <numerusform></numerusform> <numerusform></numerusform> </translation> @@ -423,247 +473,247 @@ <message> <source>Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Виберіть той же колір що і в друга щоб грати в одній команді. Кожен з вас буде керувати власними їжаками але вони виграють чи програють разом.</translation> </message> <message> <source>Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Деяка зброя наносить мало шкоди, але вона може бути більш руйнівною в правильній ситуації. Спробуйте використати Пустельного Орла для скидання кількох їжаків у воду.</translation> </message> <message> <source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Якщо ви не знаєте що робити і не хочете витрачати боєприпаси, пропустіть один раунд. Але не марнуйте занадто багато часу, тому-що прийде Раптова Смерть!</translation> </message> <message> <source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Якщо ви хочете закріпити за собою нік на офіційному сервері, зареєструйте аккаунт на http://www.hedgewars.org/.</translation> </message> <message> <source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ви втомилися від гри за замовчуванням? Спробуйте одну з місій - вони пропонують різні види гри залежно від вашого вибору.</translation> </message> <message> <source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>За замовчуванням остання гра завжди буде записуватись в якості демо. Виберіть 'Локальну Гру' і натисніть кнопку 'Демонстрації' у нижньому правому куті щоб грати або керувати ними.</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars є відкритою та безплатною, ми створюємо її у вільний час. Якщо у вас є проблеми, запитайте на нашому форумі, але будь-ласка, не чекайте підтримки 24/7!</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars є відкритою та безплатною, ми створюємо її у вільний час. Якщо вона вам подобається, допоможіть нам невеликим внеском або вкладіть свою роботу!</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars є відкритою та безплатною, ми створюємо її у вільний час. Поділіться грою з родиною та друзями!</translation> </message> <message> <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Час від часу проводяться офіційні турніри. Майбутні події будуть оголошені на http://www.hedgewars.org/ за кілька днів перед проведенням.</translation> </message> <message> <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars доступна на багатьох мовах. Якщо переклад на вашу мову застарів чи відсутній, не соромтеся звертатися до нас!</translation> </message> <message> <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars може бути запущений на багатьох операційних системах, включаючи Microsoft Windows, Mac OS X і Linux.</translation> </message> <message> <source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Завжди пам'ятайте, ви можете створити свою власну гру в локальному та мережному/онлайн-режимах. Ви не обмежені опцією 'Проста Гра'.</translation> </message> <message> <source>While playing you should give yourself a short break at least once an hour.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Поки граєте гру зробіть коротку перерву хоча б раз на годину.</translation> </message> <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Якщо ваша відеокарта не може забезпечити апаратне прискорення OpenGL, спробуйте включити режим низької якості для підвищення продуктивності.</translation> </message> <message> <source>We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ми відкриті для пропозицій і конструктивного зворотнього зв'язку. Якщо вам не подобається щось або є відмінна ідея, дайте нам знати!</translation> </message> <message> <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Особливо під час гри онлайн будьте ввічливі і завжди пам'ятайте, з вами чи проти вас можуть грати неповнолітні!</translation> </message> <message> <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Спеціальні режими гри, такі як 'Вампіризм' чи 'Карма' дозволяють розробляти цілком нову тактику. Спробуйте їх в налаштованій грі!</translation> </message> <message> <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Windows-версія Hedgewars підтримує Xfire. Переконайтеся в тому, що ви додали Hedgwars до списку ігор, щоб ваші друзі могли бачити вас в грі.</translation> </message> <message> <source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ви не повинні встановлювати Hedgewars на комп'ютерах, які вам не належать (школа, університет, робота тощо). Будь ласка, звертайтесь до відповідальної особи!</translation> </message> <message> <source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars чудово підходить для короткої гри під час перерв. Переконайтеся, що ви не додали занадто багато їжаків і не взяли велику карту. Скорочення часу і здоров'я також підійде.</translation> </message> <message> <source>No hedgehogs were harmed in making this game.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Під час розробки гри не постраждав жодний їжак.</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Hedgewars є відкритою та безплатною, ми створюємо її у вільний час. Якщо хтось продав вам гру, ви повинні спробувати отримати відшкодування!</translation> </message> <message> <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Підключіть один або кілька геймпадів перед початком гри, щоб ваші команди могли ними користуватись.</translation> </message> <message> <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Створіть акаунт на %1 щоб запобігти використанню іншими особами вашого улюбленого ніку під час гри на офіційному сервері.</translation> </message> <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Якщо ваша відеокарта не може забезпечити апаратне прискорення OpenGL, спробуйте оновити відповідні драйвери.</translation> </message> <message> <source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>В грі існують три різних види стрибків. Натисніть [високий стрибок] двічі щоб зробити дуже високий стрибок назад.</translation> </message> <message> <source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Боїтесь падіння зі скелі? Утримуйте [точно] щоб повернутись [вліво] чи [вправо] без фактичного переміщення.</translation> </message> <message> <source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Деяка зброя вимагає спеціальних стратегій або просто багато тренувань, тому не відмовляйтесь від конкретного інструменту, якщо ви раз не знешкодили ворога.</translation> </message> <message> <source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Більшість зброї не буде працювати після торкання води. Бджола та Торт є виключеннями з цього правила.</translation> </message> <message> <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Старий лімбургський сир викликає лише невеликий вибух. Однак смердюча хмара, яку відносить вітер, може отруїти багато їжаків за раз.</translation> </message> <message> <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Напад піаніно є найбільш руйнівним повітряним ударом. Але ви втратите їжака, тому він має і негативну сторону.</translation> </message> <message> <source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Навідна Бджілка може бути складною у керуванні. Радіус повороту залежить від її швидкості, тому постарайтеся не стріляти на повну силу.</translation> </message> <message> <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Липкі Міни чудовий інструмент створення малих ланцюгових реакцій для закидання ворогів у складні ситуації ... або у воду.</translation> </message> <message> <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Молоток найбільш ефективний при використанні на мостах чи балках. Удар їжака просто провалить його крізь землю.</translation> </message> <message> <source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Якщо ви застрягли за ворожим їжаком, використайте Молоток, щоб звільнити себе без пошкоджень від вибуху.</translation> </message> <message> <source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Найбільший шлях ходьби Торта залежить від землі, по якій він повинен пройти. Використовуйте [атака] щоб підірвати його раніше.</translation> </message> <message> <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Вогнемет це зброя, але його можна також використати для риття тунелю.</translation> </message> <message> <source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Використайте Горючу Гранату щоб тимчасово утримати їжаків від проходження такої місцевості як тунелі або платформи.</translation> </message> <message> <source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Хочете знати хто робить гру? Натисніть на логотип Hedgewars в головному меню, щоб побачити список.</translation> </message> <message> <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Подобається Hedgewars? Станьте фанатом на %1 або слідуйте за нами на %2!</translation> </message> <message> <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ви можете самі намалювати надгробки, шапки, прапори та навіть мапи і теми! Але врахуйте, вам доведеться поділитися ними з кимось щоб використати їх в інтернет-грі.</translation> </message> <message> <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Хочете носити особливий капелюх? Внесіть пожертву і отримайте ексклюзивний капелюх на ваш вибір!</translation> </message> <message> <source>Keep your video card drivers up to date to avoid issues playing the game.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Використовуйте останні відео драйвери щоб уникнути проблем під час гри.</translation> </message> <message> <source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ви можете знайти файли конфігурації Hedgewars в "My Documents\Hedgewars". Ви можете створити резервні копії або взяти файли з собою, але не редагуйте їх.</translation> </message> <message> <source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ви можете зв'язати відповідні файли Hedgewars (файли збереження та демо-записи) з грою щоб запускати їх з вашої улюбленої теки чи інтернет-браузеру.</translation> </message> <message> <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Хочете заощадити мотузки? Випустіть мотузку в повітря а потім знову стріляйте. Поки ви не торкнулись грунту ви можете знову використовувати мотузку, не витрачаючи боєприпаси!</translation> </message> <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ви можете знайти файли конфігурації Hedgewars в "Library/Application Support/Hedgewars" в домашній теці. Ви можете створити резервні копії або взяти файли з собою, але не редагуйте їх.</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>Ви можете знайти файли конфігурації Hedgewars в ".hedgewars" в домашній теці. Ви можете створити резервні копії або взяти файли з собою, але не редагуйте їх.</translation> </message> </context> <context> @@ -718,19 +768,43 @@ </message> <message> <source>New weapon scheme</source> - <translation>Нова схема зброї</translation> + <translation type="obsolete">Нова схема зброї</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>Редагувати схему зброї</translation> + <translation type="obsolete">Редагувати схему зброї</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>Видалити схему зброї</translation> + <translation type="obsolete">Видалити схему зброї</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> - <translation type="unfinished"></translation> + <translation>Не можна редагувати команду з меню вибору. Перейдіть в головне меню щоб додати, редагувати чи видалити команду.</translation> + </message> + <message> + <source>New scheme</source> + <translation>Нова схема</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>Редагувати схему</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>Видалити схему</translation> + </message> + <message> + <source>New weapon set</source> + <translation>Новий набір зброї</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>Редагувати набір зброї</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>Видалити набір зброї</translation> </message> </context> <context> @@ -856,32 +930,33 @@ </message> <message> <source>State:</source> - <translation type="unfinished"></translation> + <translation>Стан:</translation> </message> <message> <source>Rules:</source> - <translation type="unfinished"></translation> + <translation>Правила:</translation> </message> <message> <source>Weapons:</source> - <translation type="unfinished"></translation> + <translation>Зброя:</translation> </message> <message> <source>Search:</source> - <translation type="unfinished"></translation> + <translation>Пошук:</translation> </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Очистити</translation> </message> <message> <source>Warning</source> - <translation type="unfinished"></translation> + <translation>Увага</translation> </message> <message> <source>The game you are trying to join has started. Do you still want to join the room?</source> - <translation type="unfinished"></translation> + <translation>Гра, до якої ви хочети при'єднатись вже почалась. +Ви все ще хочете ввійти в кімнату?</translation> </message> </context> <context> @@ -972,22 +1047,34 @@ </message> <message> <source>AI respawns on death.</source> - <translation type="unfinished"></translation> + <translation>AI відроджуються після смерті</translation> </message> <message> <source>All (living) hedgehogs are fully restored at the end of turn</source> - <translation type="unfinished"></translation> + <translation>Всі (живі) їжаки повністю відновлюються на кінці ходу</translation> </message> <message> <source>Attacking does not end your turn.</source> - <translation type="unfinished"></translation> + <translation>Атака не завершує ваш хід</translation> </message> <message> <source>Weapons are reset to starting values each turn.</source> - <translation type="unfinished"></translation> + <translation>Зброя скидається до початкової після кожного ходу.</translation> </message> <message> <source>Each hedgehog has its own ammo. It does not share with the team.</source> + <translation>Кожен їжак має свої боєприпаси. Він не ділить їх з командою.</translation> + </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>Більше не треба хвилюватись через вітер.</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>Вітер вплине майже на все.</translation> + </message> + <message> + <source>Copy</source> <translation type="unfinished"></translation> </message> </context> @@ -1001,6 +1088,14 @@ <source>Delete</source> <translation>Видалити</translation> </message> + <message> + <source>New</source> + <translation>Нова</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1026,7 +1121,7 @@ </message> <message> <source>Campaign Mode (...). IN DEVELOPMENT</source> - <translation type="unfinished"></translation> + <translation>Режим Кампанії (...). В РОЗРОБЦІ</translation> </message> </context> <context> @@ -1159,24 +1254,28 @@ </message> <message> <source>Community</source> - <translation type="unfinished"></translation> + <translation>Спільнота</translation> </message> <message> <source>Any</source> - <translation type="unfinished"></translation> + <translation>Усі</translation> </message> <message> <source>In lobby</source> - <translation type="unfinished"></translation> + <translation>В вестибюлі</translation> </message> <message> <source>In progress</source> - <translation type="unfinished"></translation> + <translation>В процесі</translation> </message> <message> <source>Default</source> <translation type="obsolete">За замовчуванням</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1198,7 +1297,7 @@ </message> <message> <source>Weapons</source> - <translation>Зброя</translation> + <translation type="obsolete">Зброя</translation> </message> <message> <source>Audio/Graphic options</source> @@ -1228,6 +1327,10 @@ <source>Misc</source> <translation>Різне</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>Схеми та Зброя</translation> + </message> </context> <context> <name>QLabel</name> @@ -1293,7 +1396,7 @@ </message> <message> <source>Server name:</source> - <translation>Назва серверу:</translation> + <translation>Назва сервера:</translation> </message> <message> <source>Server port:</source> @@ -1368,41 +1471,39 @@ <translation>Вибухівка</translation> </message> <message> - <source>This SVN build is 'work in progress' and may not be compatible with other versions of the game. -Some features might be broken or incomplete. Use at your own risk!</source> - <translation type="obsolete">Ця збірка SVN є проміжною і може бути несумісною з іншими версіями гри. -Деякі функції можуть бути зламані чи неповні. Використовуйте її на свій страх і ризик!</translation> - </message> - <message> <source>Tip: </source> - <translation type="unfinished"></translation> + <translation>Порада: </translation> </message> <message> <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> - <translation type="unfinished"></translation> + <translation>Ця розробницька збірка є проміжною і може бути несумісною з іншими версіями гри. Деякі функції можуть бути зламані чи неповні. Використовуйте її на свій страх і ризик!</translation> </message> <message> <source>Quality</source> - <translation type="unfinished"></translation> + <translation>Якість</translation> </message> <message> <source>% Health Crates</source> - <translation type="unfinished"></translation> + <translation>% Ящиків Здоров'я</translation> </message> <message> <source>Health in Crates</source> - <translation type="unfinished"></translation> + <translation>Здоров'я в Ящиках</translation> </message> <message> <source>Sudden Death Water Rise</source> - <translation type="unfinished"></translation> + <translation>Підйом Води Раптової Смерті</translation> </message> <message> <source>Sudden Death Health Decrease</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bind schemes and weapons</source> + <translation>Зменшення Здоров'я Раптової Смерті</translation> + </message> + <message> + <source>% Rope Length</source> + <translation>% Довжина Мотузки</translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1452,7 +1553,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>Неможливо видалити набір зброї за замовчуванням</translation> + <translation type="obsolete">Неможливо видалити набір зброї за замовчуванням</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1460,15 +1561,39 @@ </message> <message> <source>Can not overwrite default weapon set '%1'!</source> - <translation type="unfinished"></translation> + <translation>Не можу перезаписати стандартний набір зброї '%1'!</translation> </message> <message> <source>All file associations have been set.</source> - <translation type="unfinished"></translation> + <translation>Всі асоціації файлів були встановлені</translation> </message> <message> <source>File association failed.</source> - <translation type="unfinished"></translation> + <translation>Файлове асоціювання не вдалось</translation> + </message> + <message> + <source>Teams</source> + <translation>Команди</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>Справді видалити цю команду?</translation> + </message> + <message> + <source>Schemes</source> + <translation>Схеми</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>Не можу видалити стандартну схему '%1'!</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>Справді видалити цю схему гри?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>Не можу видалити стандартний набір зброї '%1'!</translation> </message> </context> <context> @@ -1562,6 +1687,10 @@ </message> <message> <source>Associate file extensions</source> + <translation>Асоціювати файлові розширення</translation> + </message> + <message> + <source>more</source> <translation type="unfinished"></translation> </message> </context> @@ -1573,11 +1702,11 @@ </message> <message> <source>C</source> - <translation>C</translation> + <translation>Кл</translation> </message> <message> <source>T</source> - <translation>T</translation> + <translation>Км</translation> </message> <message> <source>Owner</source> @@ -1614,6 +1743,14 @@ <source>Delays</source> <translation>Затримки</translation> </message> + <message> + <source>new</source> + <translation>нова</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1702,23 +1839,31 @@ </message> <message> <source>AI Survival Mode</source> - <translation type="unfinished"></translation> + <translation>Режим AI Виживання</translation> </message> <message> <source>Reset Health</source> - <translation type="unfinished"></translation> + <translation>Скинути Здоров'я</translation> </message> <message> <source>Unlimited Attacks</source> - <translation type="unfinished"></translation> + <translation>Необмежені Атаки</translation> </message> <message> <source>Reset Weapons</source> - <translation type="unfinished"></translation> + <translation>Скинути Зброю</translation> </message> <message> <source>Per Hedgehog Ammo</source> - <translation type="unfinished"></translation> + <translation>Боєприпаси на Їжака</translation> + </message> + <message> + <source>Disable Wind</source> + <translation>Вимкнути Вітер</translation> + </message> + <message> + <source>More Wind</source> + <translation>Більше Вітру</translation> </message> </context> <context> @@ -1745,7 +1890,7 @@ </message> <message> <source>precise aim</source> - <translation>precise aim</translation> + <translation>точна ціль</translation> </message> <message> <source>put</source> @@ -1883,7 +2028,7 @@ </message> <message> <source>slot 10</source> - <translation type="unfinished">слот 10</translation> + <translation>слот 10</translation> </message> </context> <context> @@ -2040,7 +2185,7 @@ </message> <message> <source>Clear</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Очистити</translation> </message> <message> <source>Return</source>
--- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Tue Jan 04 12:53:46 2011 +0100 @@ -5,7 +5,26 @@ <name>AmmoSchemeModel</name> <message> <source>new</source> - <translation>新</translation> + <translation>新建</translation> + </message> + <message> + <source>copy of</source> + <translation>备份</translation> + </message> +</context> +<context> + <name>DrawMapWidget</name> + <message> + <source>File error</source> + <translation>文件错误</translation> + </message> + <message> + <source>Cannot open file '%1' for writing</source> + <translation>无法打开文件 '%1' 写入</translation> + </message> + <message> + <source>Cannot read file '%1'</source> + <translation>无法读取文件 '%1'</translation> </message> </context> <context> @@ -40,8 +59,8 @@ <translation>修改武器</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> - <translation type="unfinished"></translation> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> + <translation>使用此项则游戏框架自动选择武器配备</translation> </message> </context> <context> @@ -83,7 +102,7 @@ </message> <message> <source>new</source> - <translation>新</translation> + <translation type="obsolete">新</translation> </message> <message> <source>Please select record from the list above</source> @@ -91,17 +110,17 @@ </message> <message> <source>DefaultTeam</source> - <translation>默认团队</translation> + <translation>默认队伍</translation> </message> <message> <source>Hedgewars Demo File</source> <comment>File Types</comment> - <translation>刺猬杀演示文件</translation> + <translation>刺猬大作战回放文件</translation> </message> <message> <source>Hedgewars Save File</source> <comment>File Types</comment> - <translation>刺猬杀存储文件</translation> + <translation>刺猬大作战存档文件</translation> </message> </context> <context> @@ -151,7 +170,7 @@ </message> <message> <source>Wacky</source> - <translation>曲折</translation> + <translation>险峻</translation> </message> <message> <source>Type</source> @@ -159,34 +178,42 @@ </message> <message> <source>Small tunnels</source> - <translation>小型洞窟</translation> + <translation>小型隧道</translation> </message> <message> <source>Medium tunnels</source> - <translation>中型洞窟</translation> + <translation>中型隧道</translation> </message> <message> <source>Large tunnels</source> - <translation>大型洞窟</translation> + <translation>大型隧道</translation> </message> <message> <source>Small floating islands</source> - <translation>小型浮动岛屿</translation> + <translation>小型漂浮岛屿</translation> </message> <message> <source>Medium floating islands</source> - <translation>重型浮动岛屿</translation> + <translation>中型漂浮岛屿</translation> </message> <message> <source>Large floating islands</source> - <translation>大型浮动岛屿</translation> + <translation>大型漂浮岛屿</translation> + </message> + <message> + <source>Seed</source> + <translation>作种</translation> + </message> + <message> + <source>Set</source> + <translation>设定</translation> </message> </context> <context> <name>HWNetServersModel</name> <message> <source>Title</source> - <translation>标题</translation> + <translation>名称</translation> </message> <message> <source>IP</source> @@ -201,7 +228,7 @@ <name>HWNewNet</name> <message> <source>The host was not found. Please check the host name and port settings.</source> - <translation>没有这个主机。请检查主机名和端口设置。</translation> + <translation>没找到主机。请检查主机名和端口设置。</translation> </message> <message> <source>Connection refused</source> @@ -209,7 +236,7 @@ </message> <message> <source>Quit reason: </source> - <translation>退出原因: </translation> + <translation>退出原因:</translation> </message> <message> <source>Room destroyed</source> @@ -235,19 +262,19 @@ </message> <message> <source>%1 *** %2 has joined the room</source> - <translation>%1 *** %2已经进入房间</translation> + <translation>%1 *** %2 进入这个房间了</translation> </message> <message> <source>%1 *** %2 has joined</source> - <translation>%1 *** %2已经进入</translation> + <translation>%1 *** %2 加入了</translation> </message> <message> <source>%1 *** %2 has left (%3)</source> - <translation>%1 *** %2已经离开(%3)</translation> + <translation>%1 *** %2 离开了(%3)</translation> </message> <message> <source>%1 *** %2 has left</source> - <translation>%1 *** %2已经离开</translation> + <translation>%1 *** %2 离开了</translation> </message> <message> <source>Your nickname %1 is @@ -264,7 +291,7 @@ <name>KB</name> <message> <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source> - <translation>SDL_ttf 返回错误-渲染文字失败,可能有关freetype2的bug。建议升级 freetype。</translation> + <translation>渲染文字时SDL_ttf 返回错误,可能有关freetype2的bug。建议升级 freetype。</translation> </message> </context> <context> @@ -287,11 +314,11 @@ </message> <message> <source>Server message for latest version:</source> - <translation>最新版本的服务器信息: </translation> + <translation>最新版本的服务器信息</translation> </message> <message> <source>Server message for previous versions:</source> - <translation>之前版本的服务器信息: </translation> + <translation>之前版本的服务器信息</translation> </message> <message> <source>Latest version protocol number:</source> @@ -314,6 +341,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation>取消</translation> + </message> + <message> + <source>Clear</source> + <translation>清除</translation> + </message> + <message> + <source>Load</source> + <translation>读取</translation> + </message> + <message> + <source>Save</source> + <translation>保存</translation> + </message> + <message> + <source>Load drawn map</source> + <translation>读取已经绘制的地图</translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation>绘制的地图 (*.hwmap);;全部文件 (*.*)</translation> + </message> + <message> + <source>Save drawn map</source> + <translation>保存绘制的地图</translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -348,54 +406,54 @@ </message> <message> <source>Health graph</source> - <translation>生命值图表</translation> + <translation>健康值图形</translation> </message> <message> <source>Ranking</source> - <translation>等级</translation> + <translation>排名</translation> </message> <message> <source>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</source> - <translation>最佳射手奖给与 <b>%1</b>:伤害 <b>%2</b>点。</p></translation> + <translation>最佳射手<b>%1</b>为同族制造了<b>%2</b>点创伤</translation> </message> <message numerus="yes"> <source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source> <translation> - <numerusform>最佳杀手是 <b>%1</b>单回合击杀 <b>%2</b> 只刺猬.</numerusform> + <numerusform>最佳杀手<b>%1</b> 完成了单回合<b>%2</b>次击杀</numerusform> </translation> </message> <message numerus="yes"> <source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source> <translation> - <numerusform>本轮总共有 <b>%1</b> 只刺猬被击杀.</p></numerusform> + <numerusform>总共<b>%1</b>只刺猬在本轮失去生命。</numerusform> </translation> </message> <message numerus="yes"> <source>(%1 kill)</source> - <translation type="unfinished"> - <numerusform>(%1 灭杀)</numerusform> + <translation> + <numerusform>(%1 击杀)</numerusform> </translation> </message> <message> <source>(%1 kills)</source> - <translation type="obsolete">(%1 灭杀)</translation> + <translation type="obsolete">(%1 击杀)</translation> </message> <message numerus="yes"> <source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source> - <translation type="unfinished"> - <numerusform><b>%1</b>另外,射击己方刺猬损失<b>%2</b>点血。</numerusform> + <translation> + <numerusform><b>%1</b>以为给自己的刺猬造成 <b>%2</b> 点创伤是小意思。</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source> - <translation type="unfinished"> - <numerusform><b>%1</b>个刺猬被<b>%2</b>己方的刺猬误伤.</numerusform> + <translation> + <numerusform><b>%1</b> 整垮了 <b>%2</b> 只自己的刺猬。</numerusform> </translation> </message> <message numerus="yes"> <source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source> - <translation type="unfinished"> - <numerusform><b>%1</b>被迫跳过<b>%2</b>回合。</numerusform> + <translation> + <numerusform><b>%1</b> 受惊了,共计 <b>%2</b> 次放弃。</numerusform> </translation> </message> </context> @@ -422,62 +480,62 @@ <message> <source>If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!</source> <comment>Tips</comment> - <translation>如果不确定该怎么做,不要浪费弹药,跳过此回合。但是注意突然死亡的时间!</translation> + <translation>加入不确定怎么做,不要浪费弹药,跳过此回合。但是注意突然时间!</translation> </message> <message> <source>Want to save ropse? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> <comment>Tips</comment> - <translation type="obsolete">想节省绳子数量?在半空释放然后再次射出。只要不触地即可继续使用同一根而不浪费!</translation> + <translation type="obsolete">保存绳子?在半空释放然后再次射出。只要不接触地面停止就可以继续使用同一根不会浪费!</translation> </message> <message> <source>If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.</source> <comment>Tips</comment> - <translation>如果您让自己的昵称不被别人使用,请到 http://www.hedgewars.org/. 注册一个帐号吧.</translation> + <translation>如果您确定好了一个昵称不想让别人使用,那么在 http://www.hedgewars.org/. 注册一个帐号吧</translation> </message> <message> <source>You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.</source> <comment>Tips</comment> - <translation>厌倦了默认的游戏?试试做任务吧——多种游戏模式让你无限选择.</translation> + <translation>厌倦了默认的玩法?试试任务——</translation> </message> <message> <source>By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.</source> <comment>Tips</comment> - <translation>默认时记录中最后的一次被称做Demo,选择单机游戏——然后选Demo——然后点击右下角开始回放或整理。</translation> + <translation>默认情况下游戏记录最后的游戏作为Demo,选择单机游戏——然后Demo——然后点击右下角开始回放或者整理。</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!</source> <comment>Tips</comment> - <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果您有问题,到论坛来吧,不过不要期待全天候支持!</translation> + <translation>刺猬大作战是一个开放源代码的免费软件,它充分利用了我们的业余时间。如果您有问题,到论坛来吧,不过7×24小时支持不可能!</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!</source> <comment>Tips</comment> - <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果您你喜欢它就来贡献你的力量吧!</translation> + <translation>刺猬大作战是一个开放源代码的免费软件,它充分利用了我们的业余时间。如果您喜欢它,我们接受您的捐赠/感谢!</translation> </message> <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!</source> <comment>Tips</comment> - <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果您你喜欢它,与别人分享吧!</translation> + <translation>刺猬大作战是一个开放源代码的免费软件,它充分利用了我们的业余时间。与他人分享它吧!</translation> </message> <message> <source>From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.</source> <comment>Tips</comment> - <translation>官方一直就有不断的对战,随时可以去 http://www.hedgewars.org/ 参加。</translation> + <translation>官方的竞赛一直存在。临近时去 http://www.hedgewars.org/ 即可看到。</translation> </message> <message> <source>Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!</source> <comment>Tips</comment> - <translation>Hedgewars 被翻译成多种语言,中文是“刺猬杀”——同样为翻译名。如果您觉得语言翻译有什么缺失/过时/遗漏或任何问题,请联系我们吧!</translation> + <translation>Hedgewars 被翻译成多种语言,中文是刺猬大作战——同样为翻译名。如果您的语言翻译有什么缺失/过时/遗漏或任何问题,来联系我们吧!</translation> </message> <message> <source>Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.</source> <comment>Tips</comment> - <translation>“刺猬杀”是一款跨平台游戏,可以运行的操作系统包括:GNU/Linux、Mac OS X、MicroSoft Windows、iOS等。</translation> + <translation>刺猬大作战可以运行的操作系统包括:GNU/Linux、Mac OS X、MicroSoft Windows。</translation> </message> <message> <source>Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.</source> <comment>Tips</comment> - <translation>您可以建立自己的网络游戏/局域网游戏。不仅限于 "简单游戏" 模式。</translation> + <translation>您可以建立自己的网络游戏/局域网游戏。不仅限于 "简单游戏" 选项。</translation> </message> <message> <source>Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server.</source> @@ -492,42 +550,42 @@ <message> <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.</source> <comment>Tips</comment> - <translation>假如你的显卡不能提供OpenGL硬件加速,试着用降低效果的方式运行。</translation> + <translation>假如你的显卡不能提供OpenGL硬件加速,试着用降低效果的方式运行</translation> </message> <message> <source>We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!</source> <comment>Tips</comment> - <translation>我们接受意见和建设性反馈。假如您有好点子或者不喜欢的东西,请告诉我们!</translation> + <translation>我们接受意见和建设性反馈。假如您有好电子或者不喜欢的东西,告诉我们!</translation> </message> <message> <source>Especially while playing online be polite and always remember there might be some minors playing with or against you as well!</source> <comment>Tips</comment> - <translation>特别是网络游戏,请注意礼节。记住:对方也和您一样是人!</translation> + <translation>特别是网络游戏,请有礼貌记住对方也和您一样是人!</translation> </message> <message> <source>Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!</source> <comment>Tips</comment> - <translation>特别游戏模式“吸血“、”因果报应“需要全新的战术。来"自定义游戏"里试试!</translation> + <translation>特别游戏模式“吸血“、”因果报应“需要全新的战术。现在自定义游戏里试试!</translation> </message> <message> <source>The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.</source> <comment>Tips</comment> - <translation>Windows版本的"刺猬杀"支持Xfire。添加它到游戏列表里让您的朋友看到。</translation> + <translation>Windows版本的刺猬大作战支持Xfire。添加它到游戏列表里让您的朋友看到。</translation> </message> <message> <source>You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!</source> <comment>Tips</comment> - <translation>您不应该在不属于您的计算机上安装“刺猬杀”——比如学校/工作场所!</translation> + <translation>您不应该在不属于您的计算机上安装刺猬大作战——比如学校/工作场所。</translation> </message> <message> <source>Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.</source> <comment>Tips</comment> - <translation>“刺猬杀”适合短时间休闲游戏,不需要将大量刺猬挤在一幅超大地图上。</translation> + <translation>刺猬大作战适合短时间休息,不需要太多刺猬挤在大地图上。</translation> </message> <message> <source>No hedgehogs were harmed in making this game.</source> <comment>Tips</comment> - <translation>制作这个游戏时不曾伤害任何刺猬。</translation> + <translation>制作这个游戏时不曾伤害任何刺猬</translation> </message> <message> <source>Connect one or more gamepads before launching the game to be able to assign their controls to your teams.</source> @@ -537,142 +595,152 @@ <message> <source>Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!</source> <comment>Tips</comment> - <translation>“刺猬杀”是一个开源的免费软件,它充分利用了我们的业余时间。如果有人想要将它卖给你,请你拒绝他!</translation> - </message> - <message> - <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> - <comment>Tips</comment> - <translation>游戏运行前连上游戏板,让你的团队充分控制刺猬.</translation> + <translation>刺猬大作战是开放源代码的免费软件,用我们的闲暇时间创造。如果有人卖给你,那么应该把钱拿回来!</translation> </message> <message> <source>Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.</source> <comment>Tips</comment> - <translation>在官方服务器 %1 建立自己的帐号,就可以在官方服务器使用你最喜欢的昵称了.</translation> - </message> - <message> - <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> - <comment>Tips</comment> - <translation>假如你的显卡不能提供OpenGL硬件加速,试着用降低效果的方式运行。</translation> + <translation>在 %1 建立一个帐号阻止其他人使用你喜欢的名称在官方服务器游戏。</translation> </message> <message> <source>There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.</source> <comment>Tips</comment> - <translation>三种跳跃模式,快速按两次 [长跳] 键可以跳到非常高/向后跳.</translation> + <translation>三种跳跃方式。点击[高跳]两次做出跳跃高度极限的后空翻。</translation> </message> <message> <source>Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.</source> <comment>Tips</comment> - <translation>害怕掉进深渊?一直按住[精确控制]建并按[左][右]不用移动.</translation> + <translation>害怕掉下悬崖?按住[精确]后再点击[左][右]就会只转身,不移动位置。</translation> </message> <message> <source>Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.</source> <comment>Tips</comment> - <translation>一些武器需要特别的技能与足够的训练,因此不要放弃练习,即便是失败。是曰:屡败屡战。</translation> + <translation>有些武器需要特殊策略或者仅仅是大量的练习,假如你一次失去准星,也不要放弃。</translation> </message> <message> <source>Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.</source> <comment>Tips</comment> - <translation>大多数武器在碰到水面的时候就失效了,除了“野蜂飞舞”和“蛋糕”。</translation> + <translation>多数武器不会在接触水之后生效。归巢的蜜蜂和蛋糕是例外。</translation> </message> <message> <source>The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.</source> <comment>Tips</comment> - <translation>毒奶酪只能造成不大的杀伤,不过能形成一片毒云并杀伤一片的刺猬.</translation> + <translation>老干酪发射器造成小规模爆炸,然后产生随风移动的有毒云雾——能一次毒害多个刺猬。</translation> </message> <message> <source>The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.</source> <comment>Tips</comment> - <translation>钢琴攻击能产生极大的空袭杀伤,同时你将失去这个刺猬,所以这招实在是个下下策.</translation> + <translation>钢琴攻击是最大威力的空袭。弹奏钢琴的刺猬会跟着钢琴返回天堂。</translation> </message> <message> <source>The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.</source> <comment>Tips</comment> - <translation>“野蜂飞舞”可以蓄力使用,它旋转时的精度依赖于其速度,所以没必要发全力.</translation> + <translation>归巢的蜜蜂有些技巧。它的回转半径和初速有关,最好不用全力发射。</translation> </message> <message> <source>Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.</source> <comment>Tips</comment> - <translation>近身地雷完美的构建了一个链子因此可以将敌人打入地下或者...水里.</translation> + <translation>黏着地雷是创造小范围连锁反应的绝佳武器。</translation> </message> <message> <source>The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.</source> <comment>Tips</comment> - <translation>大捶主要用在桥梁或者薄板,可以将敌人敲下去.</translation> + <translation>锤是桥梁上/分界处最佳武器之一,只是刚刚好把刺猬打陷——如果没底就没办法了。</translation> </message> <message> <source>If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.</source> <comment>Tips</comment> - <translation>如果你被敌人围困,可以用大锤来解围。</translation> + <translation>假如对方刺猬把你堵住了,一锤打下去让自己轻松些。</translation> </message> <message> <source>The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.</source> <comment>Tips</comment> - <translation>蛋糕最大行走距离取决于地形边缘,用[攻击]键尽早结束它。</translation> + <translation>蛋糕的最大行走距离取决于地表。也可按下[攻击键]激活起爆。</translation> </message> <message> <source>The Flame Thrower is a weapon but it can be used for tunnel digging as well.</source> <comment>Tips</comment> - <translation>[钻洞器]既可以当作武器,也可以用做为打洞器。</translation> + <translation>火焰喷射器是一种武器,也是一种开路机器。</translation> </message> <message> <source>Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.</source> <comment>Tips</comment> - <translation>可以用“飞碟”让刺猬暂时离开洞穴等地形环境.</translation> + <translation>燃烧瓶可以短时阻止刺猬通过特定区域(比如通道或平台)</translation> </message> <message> <source>Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.</source> <comment>Tips</comment> - <translation>想知道是谁贡献的这个游戏?请在主界面点击“Hedgewars”LOGO就可以看到“制作团队”.</translation> - </message> - <message> - <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> + <translation>想要知道谁是此游戏的幕后人员?点击主菜单的Hedgewars Logo就可以看到贡献者名单。</translation> + </message> + <message> + <source>Like hedgewars? Become a fan on %1 or join our group at %2. You could follow us on %3 as well!</source> + <comment>Tips</comment> + <translation type="obsolete">喜欢刺猬大作战(hedgewars)?那么加入我们 %1 或者 %2.。你可以在 %3 跟随我们!</translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source> + <comment>Tips</comment> + <translation>你可以在( 我的文档\Hedgewars)里找到设置文件。可以创建备份,但不要手动修改。</translation> + </message> + <message> + <source>You can find your Hedgewars configuration files under "Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation>喜欢刺猬杀? 来做我们的粉丝吧可以到%1或者%2!</translation> + <translation type="obsolete">你可以在家目录找到 .hedgewars。可以创建备份,但不要手动修改。</translation> + </message> + <message> + <source>Connect one or more gamepads before starting the game to be able to assign their controls to your teams.</source> + <comment>Tips</comment> + <translation>在游戏开始前连接游戏手柄才能用于操控</translation> + </message> + <message> + <source>If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.</source> + <comment>Tips</comment> + <translation>加入你的显卡不能使用OpenGL硬件加速,请升级相应驱动。</translation> + </message> + <message> + <source>Like Hedgewars? Become a fan on %1 or join our group at %2. You could follow us on %3 as well!</source> + <comment>Tips</comment> + <translation type="obsolete">喜欢刺猬大作战(Hedgewars)吗?加入 %2 ,成为 %1 粉丝,也可以在 %3 跟随我们!</translation> </message> <message> <source>Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.</source> <comment>Tips</comment> - <translation>你可以自由的构建自己的头像、帽子、旗帜甚至是地图和主题!但是请注意:你需要将这些在线分享出来。</translation> + <translation>欢迎你自己绘制墓碑,帽子(头饰),旗帜或者地图,主题!但是记住,如果要在网上使用,你的必须把它们分享出来。</translation> </message> <message> <source>Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!</source> <comment>Tips</comment> - <translation>喜欢一个很特别的帽子图案?贡献你的力量吧,你将得到一个属于自己的帽子图案!</translation> + <translation>非常想要一个帽子?捐赠的话就给你!</translation> </message> <message> <source>Keep your video card drivers up to date to avoid issues playing the game.</source> <comment>Tips</comment> - <translation>让你的显卡保持更新以便避免一些已知的游戏问题。</translation> - </message> - <message> - <source>You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.</source> - <comment>Tips</comment> - <translation>你可以在“我的文档\Hedgewars”文件夹下找到“刺猬杀”的配置文件,可以新建和备份但不要随便修改。</translation> - </message> - <message> - <source>You can find your Hedgewars configuration files under "Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> - <comment>Tips</comment> - <translation type="obsolete">你可以在你的主文件夹下下找到“Hedgewars”文件夹,里面又配置文件,你可以新建和备份这个文件,但请不要随便编辑它.</translation> + <translation>保持显卡驱动最新避免可能的麻烦。</translation> </message> <message> <source>You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.</source> <comment>Tips</comment> - <translation>你可以组织刺猬杀的相关文件(保存的游戏和演示还有录像),通过收藏夹或者浏览器.</translation> + <translation>你可以使用网络浏览器或已存在的文件关联刺猬大作战的相关文件(比如存档和回放)</translation> </message> <message> <source>Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>想要节省绳子?放开绳子之后再次发射,只要你不曾脱离绳子接触接触地面就可以继续使用同一根!</translation> + </message> + <message> + <source>Like Hedgewars? Become a fan on %1 or follow us on %2!</source> + <comment>Tips</comment> + <translation>喜欢刺猬大作战Hedgewars吗?来 %1 或者 %2 追随我们吧!</translation> </message> <message> <source>You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>在家目录的"Library/Application Support/Hedgewars"找到刺猬的配置文件。备份随你,但是不要手动编辑。</translation> </message> <message> <source>You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.</source> <comment>Tips</comment> - <translation type="unfinished"></translation> + <translation>在家目录的".hedgewars"找到刺猬的配置文件。备份随你,但是不要手动编辑。</translation> </message> </context> <context> @@ -727,19 +795,43 @@ </message> <message> <source>New weapon scheme</source> - <translation>新武器配置</translation> + <translation type="obsolete">新武器配置</translation> </message> <message> <source>Edit weapon scheme</source> - <translation>修改武器配置</translation> + <translation type="obsolete">修改武器配置</translation> </message> <message> <source>Delete weapon scheme</source> - <translation>删除武器配置</translation> + <translation type="obsolete">删除武器配置</translation> </message> <message> <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> - <translation>您不能在队伍选择界面修改队伍,请返回主页面添加/修改/删除队伍。</translation> + <translation>您不能在队伍选择界面修改队伍。请返回主页面进行添加、修改、删除队伍等操作。</translation> + </message> + <message> + <source>New scheme</source> + <translation>新框架</translation> + </message> + <message> + <source>Edit scheme</source> + <translation>修改框架</translation> + </message> + <message> + <source>Delete scheme</source> + <translation>删除框架</translation> + </message> + <message> + <source>New weapon set</source> + <translation>新武器配置</translation> + </message> + <message> + <source>Edit weapon set</source> + <translation>修改武器配置</translation> + </message> + <message> + <source>Delete weapon set</source> + <translation>删除武器配置</translation> </message> </context> <context> @@ -838,7 +930,7 @@ <message numerus="yes"> <source>There are %1 clients connected to this room.</source> <translation> - <numerusform>有 %1 个客户端连接到这个房间.</numerusform> + <numerusform>有 %1 个客户端连接到这个房间。</numerusform> </translation> </message> <message numerus="yes"> @@ -861,33 +953,33 @@ </message> <message> <source>State:</source> - <translation>状态: </translation> + <translation>游戏状态</translation> </message> <message> <source>Rules:</source> - <translation>规则: </translation> + <translation>规则</translation> </message> <message> <source>Weapons:</source> - <translation>武器: </translation> + <translation>武器</translation> </message> <message> <source>Search:</source> - <translation>搜索: </translation> + <translation>搜索</translation> </message> <message> <source>Clear</source> - <translation>清除:</translation> + <translation>清除</translation> </message> <message> <source>Warning</source> - <translation>警告:</translation> + <translation>警告</translation> </message> <message> <source>The game you are trying to join has started. Do you still want to join the room?</source> - <translation>游戏正在大厅中。 -你是否想去观战?</translation> + <translation>你要加入的游戏已经开始了。 +还要进入房间吗?</translation> </message> </context> <context> @@ -902,19 +994,19 @@ </message> <message> <source>Defend your fort and destroy the opponents, two team colours max!</source> - <translation>保卫你的城堡,破坏对手的,对战努力吧!</translation> + <translation>保卫你的城堡,破坏对手的,努力吧!</translation> </message> <message> <source>Teams will start on opposite sides of the terrain, two team colours max!</source> - <translation>队伍开始在对手的地盘,努力!</translation> + <translation>队伍开始在对手的地盘,努力!</translation> </message> <message> <source>Land can not be destroyed!</source> - <translation>地面无法破坏!</translation> + <translation>地面无法破坏!</translation> </message> <message> <source>Add an indestructable border around the terrain</source> - <translation>添加不可毁坏地形</translation> + <translation>添加不可毁坏地边界</translation> </message> <message> <source>Lower gravity</source> @@ -954,15 +1046,15 @@ </message> <message> <source>Order of play is random instead of in room order.</source> - <translation>随机出场顺序。</translation> + <translation>随机出场顺序</translation> </message> <message> <source>Play with a King. If he dies, your side dies.</source> - <translation>国王不能死!!否则自动输。</translation> + <translation>国王不能死!!</translation> </message> <message> <source>Take turns placing your hedgehogs before the start of play.</source> - <translation>在开局前手动放置刺猬。</translation> + <translation>在开局前手动放置刺猬</translation> </message> <message> <source>Ammo is shared between all teams that share a colour.</source> @@ -970,31 +1062,43 @@ </message> <message> <source>Disable girders when generating random maps.</source> - <translation>禁止随机生成地图使用梁。</translation> + <translation>禁止随机生成地图使用梁</translation> </message> <message> <source>Disable land objects when generating random maps.</source> - <translation>禁止随机生成地图使用地面物体。</translation> + <translation>禁止随机生成地图使用地面物体</translation> </message> <message> <source>AI respawns on death.</source> - <translation>AI死后重生。</translation> + <translation>AI 死亡再生</translation> + </message> + <message> + <source>Attacking does not end your turn.</source> + <translation>攻击不会结束当前回合</translation> + </message> + <message> + <source>Weapons are reset to starting values each turn.</source> + <translation>每回合开始武器自动重置到默认设定</translation> + </message> + <message> + <source>Each hedgehog has its own ammo. It does not share with the team.</source> + <translation>每个刺猬都有独立的弹药,非团队分享</translation> </message> <message> <source>All (living) hedgehogs are fully restored at the end of turn</source> - <translation>所有或者的刺猬结局的时候都会被保存</translation> - </message> - <message> - <source>Attacking does not end your turn.</source> - <translation>不会终结你的回合.</translation> - </message> - <message> - <source>Weapons are reset to starting values each turn.</source> - <translation>每轮武器的配置都会重置.</translation> - </message> - <message> - <source>Each hedgehog has its own ammo. It does not share with the team.</source> - <translation>每个刺猬都有其自己的武器. 并在奔队中不共享.</translation> + <translation>所有活着的刺猬回合结尾时彻底恢复健康。</translation> + </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation>不用担心风的影响了。</translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation>风无所不在。</translation> + </message> + <message> + <source>Copy</source> + <translation>备份</translation> </message> </context> <context> @@ -1007,12 +1111,20 @@ <source>Delete</source> <translation>删除</translation> </message> + <message> + <source>New</source> + <translation>新模式</translation> + </message> + <message> + <source>Copy</source> + <translation>备份</translation> + </message> </context> <context> <name>PageSinglePlayer</name> <message> <source>Simple Game (a quick game against the computer, settings are chosen for you)</source> - <translation>快速游戏 (对抗电脑,固定设置)</translation> + <translation>快速游戏 (使用预设对抗电脑)</translation> </message> <message> <source>Multiplayer (play a hotseat game against your friends, or AI teams)</source> @@ -1032,7 +1144,7 @@ </message> <message> <source>Campaign Mode (...). IN DEVELOPMENT</source> - <translation>对战模式(...)开发中</translation> + <translation>战役模式 ——开发中</translation> </message> </context> <context> @@ -1110,11 +1222,11 @@ </message> <message> <source>Frontend fullscreen</source> - <translation>界面全屏幕</translation> + <translation>前端界面全屏幕</translation> </message> <message> <source>Append date and time to record file name</source> - <translation>记录名称中包含具体时间日期</translation> + <translation>记录名称中包含具体时间和日期</translation> </message> <message> <source>Reduced quality</source> @@ -1126,15 +1238,15 @@ </message> <message> <source>Enable frontend sounds</source> - <translation>开启界面音效</translation> + <translation>开启前端界面音效</translation> </message> <message> <source>Enable frontend music</source> - <translation>开启界面音乐</translation> + <translation>开启前端界面音乐</translation> </message> <message> <source>Frontend effects</source> - <translation>界面效果</translation> + <translation>前端界面效果</translation> </message> </context> <context> @@ -1157,7 +1269,7 @@ </message> <message> <source>generated maze...</source> - <translation>生成的迷宫...</translation> + <translation>生成迷宫</translation> </message> <message> <source>Mission</source> @@ -1169,15 +1281,15 @@ </message> <message> <source>Any</source> - <translation>任何</translation> + <translation>任意</translation> </message> <message> <source>In lobby</source> - <translation>在线状态</translation> + <translation>大厅中</translation> </message> <message> <source>In progress</source> - <translation>使用中</translation> + <translation>进行中</translation> </message> <message> <source>Default</source> @@ -1185,31 +1297,35 @@ </message> <message> <source>Pro mode</source> - <translation type="obsolete">Pro 模式</translation> + <translation type="obsolete">高手模式</translation> </message> <message> <source>Shoppa</source> - <translation type="obsolete">绳索模式</translation> + <translation type="obsolete">绳子党</translation> </message> <message> <source>Basketball</source> - <translation type="obsolete">篮球模式</translation> + <translation type="obsolete">篮球</translation> </message> <message> <source>Minefield</source> - <translation type="obsolete">地雷模式</translation> + <translation type="obsolete">雷区</translation> </message> <message> <source>Barrel mayhem</source> - <translation type="obsolete">武器不共享</translation> + <translation type="obsolete">炼狱场</translation> </message> <message> <source>Tunnel hogs</source> - <translation type="obsolete">洞穴刺猬</translation> + <translation type="obsolete">刺猬洞</translation> </message> <message> <source>Crazy</source> - <translation type="obsolete">疯狂模式</translation> + <translation type="obsolete">疯狂刺猬</translation> + </message> + <message> + <source>hand drawn map...</source> + <translation>手绘地图</translation> </message> </context> <context> @@ -1240,11 +1356,11 @@ </message> <message> <source>Net game</source> - <translation>网络游戏</translation> + <translation>局域网络游戏</translation> </message> <message> <source>Weapons</source> - <translation>武器</translation> + <translation type="obsolete">武器</translation> </message> <message> <source>Game Modifiers</source> @@ -1262,6 +1378,10 @@ <source>Misc</source> <translation>杂项</translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation>游戏框架和武器配置</translation> + </message> </context> <context> <name>QLabel</name> @@ -1271,7 +1391,7 @@ </message> <message> <source>This program is distributed under the GNU General Public License</source> - <translation>这款程序遵守GPL协议的保护</translation> + <translation>This program is distributed under the GNU General Public License</translation> </message> <message> <source>Resolution</source> @@ -1287,7 +1407,7 @@ </message> <message> <source>Art:</source> - <translation>美化:</translation> + <translation>艺术:</translation> </message> <message> <source>Translations:</source> @@ -1331,7 +1451,7 @@ </message> <message> <source>Damage Modifier</source> - <translation>伤害修改</translation> + <translation>伤害修正值</translation> </message> <message> <source>Turn Time</source> @@ -1347,7 +1467,7 @@ </message> <message> <source>Scheme Name:</source> - <translation>设置名称: </translation> + <translation>设置名称:</translation> </message> <message> <source>Crate Drops</source> @@ -1367,7 +1487,7 @@ </message> <message> <source>% Dud Mines</source> - <translation>% 地雷哑弹</translation> + <translation>% 地雷故障</translation> </message> <message> <source>Name</source> @@ -1391,11 +1511,11 @@ </message> <message> <source>Locale</source> - <translation>本土化</translation> + <translation>Locale</translation> </message> <message> <source>Restart game to apply</source> - <translation>重新启动游戏应用</translation> + <translation>需要重新启动游戏方可应用</translation> </message> <message> <source>Explosives</source> @@ -1407,31 +1527,35 @@ </message> <message> <source>This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!</source> - <translation>开发版本,尚不能和其他版本兼容,仍有不足。请谨慎使用!!</translation> + <translation>当前运行的为开发版本,不同其他版本兼容。功能或许损坏、不完整。请自行承担风险!</translation> </message> <message> <source>Quality</source> - <translation>价值</translation> + <translation>图像质量</translation> + </message> + <message> + <source>Sudden Death Water Rise</source> + <translation>死亡模式水位上涨</translation> + </message> + <message> + <source>Sudden Death Health Decrease</source> + <translation>死亡模式健康降低</translation> + </message> + <message> + <source>% Rope Length</source> + <translation>% 绳长</translation> </message> <message> <source>% Health Crates</source> - <translation>% 健康包裹</translation> + <translation>% 生命箱</translation> </message> <message> <source>Health in Crates</source> - <translation>包裹里有血</translation> - </message> - <message> - <source>Sudden Death Water Rise</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Sudden Death Health Decrease</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Bind schemes and weapons</source> - <translation type="unfinished"></translation> + <translation>生命箱的值数</translation> + </message> + <message> + <source>Gameplay</source> + <translation>游戏</translation> </message> </context> <context> @@ -1445,7 +1569,7 @@ <name>QMainWindow</name> <message> <source>Hedgewars %1</source> - <translation>刺猬杀 %1</translation> + <translation>刺猬大作战 %1</translation> </message> </context> <context> @@ -1468,7 +1592,7 @@ </message> <message> <source>Connection to server is lost</source> - <translation>服务器连接丢失</translation> + <translation>与服务器的连接丢失</translation> </message> <message> <source>Weapons</source> @@ -1476,7 +1600,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>不能删除默认武器设定</translation> + <translation type="obsolete">不能删除默认武器设定</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1488,15 +1612,39 @@ </message> <message> <source>Can not overwrite default weapon set '%1'!</source> - <translation>不能覆盖默认的武器配置 '%1'!</translation> + <translation>不能覆盖默认的武器配置 '%1'</translation> </message> <message> <source>All file associations have been set.</source> - <translation>文件联合已经存储完毕. </translation> + <translation>所有相关文件已经设定。</translation> + </message> + <message> + <source>Teams</source> + <translation>队伍</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation>真的要删除队伍?</translation> + </message> + <message> + <source>Schemes</source> + <translation>游戏框架</translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation>无法删除默认游戏框架 '%1'!</translation> </message> <message> <source>File association failed.</source> - <translation>文件联合失败.</translation> + <translation>文件关联失败</translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation>真的删除此游戏框架?</translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation>无法删除武器配置%1'!</translation> </message> </context> <context> @@ -1538,7 +1686,7 @@ </message> <message> <source>Go!</source> - <translation>上场!!</translation> + <translation>上场!</translation> </message> <message> <source>Start</source> @@ -1590,7 +1738,11 @@ </message> <message> <source>Associate file extensions</source> - <translation>连接文件扩展</translation> + <translation>相关文件扩展</translation> + </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -1632,15 +1784,23 @@ </message> <message> <source>Probabilities</source> - <translation>几率</translation> + <translation>空中支援几率</translation> </message> <message> <source>Ammo in boxes</source> - <translation>弹药数</translation> + <translation>弹药箱</translation> </message> <message> <source>Delays</source> - <translation>延迟</translation> + <translation>延迟回合数</translation> + </message> + <message> + <source>new</source> + <translation>新</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -1730,11 +1890,7 @@ </message> <message> <source>AI Survival Mode</source> - <translation>AI 复活模式</translation> - </message> - <message> - <source>Reset Health</source> - <translation>重置健康值</translation> + <translation>AI生存模式</translation> </message> <message> <source>Unlimited Attacks</source> @@ -1742,11 +1898,23 @@ </message> <message> <source>Reset Weapons</source> - <translation>重置所有武器</translation> + <translation>重置武器</translation> </message> <message> <source>Per Hedgehog Ammo</source> - <translation>每个刺猬的武器</translation> + <translation>每个刺猬的弹药</translation> + </message> + <message> + <source>Reset Health</source> + <translation>重置生命值</translation> + </message> + <message> + <source>Disable Wind</source> + <translation>禁止风力作用</translation> + </message> + <message> + <source>More Wind</source> + <translation>让风来地更猛烈吧!</translation> </message> </context> <context> @@ -1870,7 +2038,7 @@ <message> <source>hedgehogs info</source> - <translation>刺猬杀 + <translation>刺猬大作战 信息</translation> </message> <message> @@ -1937,67 +2105,67 @@ <name>binds (descriptions)</name> <message> <source>Move your hogs and aim:</source> - <translation>移动您的刺猬同时瞄准: </translation> + <translation>移动您的刺猬同时瞄准:</translation> </message> <message> <source>Traverse gaps and obstacles by jumping:</source> - <translation>使用跳跃越过沟渠、障碍: </translation> + <translation>使用跳跃越过沟渠、障碍:</translation> </message> <message> <source>Fire your selected weapon or trigger an utility item:</source> - <translation>使用选择的武器开火、使用物品: </translation> + <translation>使用选择的武器开火、使用物品:</translation> </message> <message> <source>Pick a weapon or a target location under the cursor:</source> - <translation>选择一个武器、或者瞄准光标下的某点:</translation> + <translation>选取一个武器或者瞄准光标下的地点:</translation> </message> <message> <source>Switch your currently active hog (if possible):</source> - <translation>切换到您当前活动的刺猬(如果可用): </translation> + <translation>切换到您当前活动的刺猬(如果可用):</translation> </message> <message> <source>Pick a weapon or utility item:</source> - <translation>选择一个武器或物品: </translation> + <translation>选择一个武器或物品:</translation> </message> <message> <source>Set the timer on bombs and timed weapons:</source> - <translation>设置定时炸弹等武器起爆时间: </translation> + <translation>设置定时炸弹等武器起爆时间:</translation> </message> <message> <source>Move the camera to the active hog:</source> - <translation>移动镜头到选中的刺猬: </translation> + <translation>移动镜头到选中的刺猬:</translation> </message> <message> <source>Move the cursor or camera without using the mouse:</source> - <translation>不用鼠标移动光标或镜头: </translation> + <translation>不用鼠标移动光标或镜头:</translation> </message> <message> <source>Modify the camera's zoom level:</source> - <translation>调整镜头放大倍数: </translation> + <translation>调整镜头放大倍数:</translation> </message> <message> <source>Talk to your team or all participants:</source> - <translation>同队友或全部参与者对话: </translation> + <translation>同队友或全部参与者对话:</translation> </message> <message> <source>Pause, continue or leave your game:</source> - <translation>暂停、继续或离开游戏: </translation> + <translation>暂停、继续或离开游戏:</translation> </message> <message> <source>Modify the game's volume while playing:</source> - <translation>调整游戏时音量: </translation> + <translation>调整游戏时音量:</translation> </message> <message> <source>Toggle fullscreen mode:</source> - <translation>全屏模式: </translation> + <translation>全屏模式:</translation> </message> <message> <source>Take a screenshot:</source> - <translation>截图: </translation> + <translation>截图:</translation> </message> <message> <source>Toggle labels above hedgehogs:</source> - <translation>切换刺猬标签的显示方式: </translation> + <translation>切换刺猬头顶标签的显示方式:</translation> </message> </context> <context> @@ -2060,7 +2228,7 @@ </message> <message> <source>Tab</source> - <translation>Tab 键</translation> + <translation>Tab</translation> </message> <message> <source>Clear</source> @@ -2076,7 +2244,7 @@ </message> <message> <source>Escape</source> - <translation>退出键</translation> + <translation>ESC键(退出键)</translation> </message> <message> <source>Space</source> @@ -2084,7 +2252,7 @@ </message> <message> <source>Delete</source> - <translation>删除键</translation> + <translation>Del(删除键)</translation> </message> <message> <source>Numpad 0</source> @@ -2276,43 +2444,43 @@ </message> <message> <source>Left stick (Right)</source> - <translation>左摇杆(右)</translation> + <translation>右(左摇杆)</translation> </message> <message> <source>Left stick (Left)</source> - <translation>左摇杆(左)</translation> + <translation>左(左摇杆)</translation> </message> <message> <source>Left stick (Down)</source> - <translation>左摇杆(下)</translation> + <translation>下(左摇杆)</translation> </message> <message> <source>Left stick (Up)</source> - <translation>左摇杆(上)</translation> + <translation>上(左摇杆)</translation> </message> <message> <source>Left trigger</source> - <translation>左触发</translation> + <translation>左制动</translation> </message> <message> <source>Right trigger</source> - <translation>右触发</translation> + <translation>右制动</translation> </message> <message> <source>Right stick (Down)</source> - <translation>右摇杆(下)</translation> + <translation>下(右摇杆)</translation> </message> <message> <source>Right stick (Up)</source> - <translation>右摇杆(上)</translation> + <translation>上(右摇杆)</translation> </message> <message> <source>Right stick (Right)</source> - <translation>右摇杆(右)</translation> + <translation>右(右摇杆)</translation> </message> <message> <source>Right stick (Left)</source> - <translation>右摇杆(左)</translation> + <translation>左(右摇杆)</translation> </message> <message> <source>DPad</source>
--- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,10 @@ <source>new</source> <translation>新</translation> </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>FreqSpinBox</name> @@ -40,7 +44,7 @@ <translation type="unfinished">修改遊戲設置</translation> </message> <message> - <source>When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)</source> + <source>When this option is enabled selecting a game scheme will auto-select a weapon</source> <translation type="unfinished"></translation> </message> </context> @@ -83,7 +87,7 @@ </message> <message> <source>new</source> - <translation>新</translation> + <translation type="obsolete">新</translation> </message> <message> <source>Please select record from the list above</source> @@ -181,6 +185,14 @@ <source>Large floating islands</source> <translation type="unfinished"></translation> </message> + <message> + <source>Seed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Set</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HWNetServersModel</name> @@ -311,6 +323,37 @@ </message> </context> <context> + <name>PageDrawMap</name> + <message> + <source>Undo</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clear</source> + <translation type="unfinished">清除</translation> + </message> + <message> + <source>Load</source> + <translation type="unfinished">讀取</translation> + </message> + <message> + <source>Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Load drawn map</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Drawn Maps (*.hwmap);;All files (*.*)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save drawn map</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PageEditTeam</name> <message> <source>General</source> @@ -699,19 +742,31 @@ <translation type="unfinished"></translation> </message> <message> - <source>New weapon scheme</source> + <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> <translation type="unfinished"></translation> </message> <message> - <source>Edit weapon scheme</source> + <source>New scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit scheme</source> <translation type="unfinished"></translation> </message> <message> - <source>Delete weapon scheme</source> + <source>Delete scheme</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>New weapon set</source> <translation type="unfinished"></translation> </message> <message> - <source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source> + <source>Edit weapon set</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Delete weapon set</source> <translation type="unfinished"></translation> </message> </context> @@ -968,6 +1023,18 @@ <source>Each hedgehog has its own ammo. It does not share with the team.</source> <translation type="unfinished"></translation> </message> + <message> + <source>You will not have to worry about wind anymore.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wind will affect almost everything.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSelectWeapon</name> @@ -979,6 +1046,14 @@ <source>Delete</source> <translation>刪除</translation> </message> + <message> + <source>New</source> + <translation type="unfinished">新模式</translation> + </message> + <message> + <source>Copy</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PageSinglePlayer</name> @@ -1155,6 +1230,10 @@ <source>Default</source> <translation type="obsolete">默認</translation> </message> + <message> + <source>hand drawn map...</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QGroupBox</name> @@ -1188,7 +1267,7 @@ </message> <message> <source>Weapons</source> - <translation>武器</translation> + <translation type="obsolete">武器</translation> </message> <message> <source>Game Modifiers</source> @@ -1206,6 +1285,10 @@ <source>Misc</source> <translation type="unfinished"></translation> </message> + <message> + <source>Schemes and Weapons</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QLabel</name> @@ -1374,7 +1457,11 @@ <translation type="unfinished"></translation> </message> <message> - <source>Bind schemes and weapons</source> + <source>% Rope Length</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Gameplay</source> <translation type="unfinished"></translation> </message> </context> @@ -1412,7 +1499,7 @@ </message> <message> <source>Can not delete default weapon set</source> - <translation>不能刪除默認武器設定</translation> + <translation type="obsolete">不能刪除默認武器設定</translation> </message> <message> <source>Really delete this weapon set?</source> @@ -1442,6 +1529,30 @@ <source>File association failed.</source> <translation type="unfinished"></translation> </message> + <message> + <source>Teams</source> + <translation type="unfinished">隊伍</translation> + </message> + <message> + <source>Really delete this team?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Schemes</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default scheme '%1'!</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Really delete this game scheme?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Can not delete default weapon set '%1'!</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QObject</name> @@ -1536,6 +1647,10 @@ <source>Associate file extensions</source> <translation type="unfinished"></translation> </message> + <message> + <source>more</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QTableWidget</name> @@ -1586,6 +1701,14 @@ <source>Delays</source> <translation type="unfinished"></translation> </message> + <message> + <source>new</source> + <translation type="unfinished">新</translation> + </message> + <message> + <source>copy of</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TCPBase</name> @@ -1692,6 +1815,14 @@ <source>Per Hedgehog Ammo</source> <translation type="unfinished"></translation> </message> + <message> + <source>Disable Wind</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>More Wind</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>binds</name>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/ko.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,94 @@ +locale = { +-- [":("] = "", +-- ["!!!"] = "", +-- ["A game of luck"] = "", +-- ["Aiming Practice"] = "", --Bazooka, Shotgun, SniperRifle +-- ["Bat balls at your enemies and|push them into the sea!"] = "", +-- ["Bat your opponents through the|baskets and out of the map!"] = "", +-- ["Bazooka Training"] = "", +-- ["Best laps per team: "] = "", +-- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = "", +-- ["by mikade"] = "", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag +-- ["CAPTURE THE FLAG"] = "", +-- ["Codename: Teamwork"] = "", +-- ["Congratulations!"] = "", +-- ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "", --Bazooka, Shotgun, SniperRifle +-- ["CONTROL"] = "", +-- ["Control pillars to score points."] = "", +-- ["CONTROL v0.3"] = "", +-- ["CTF_BLIZZARD"] = "", +-- ["CUSTOM BUILD 0.2"] = "", +-- ["Cybernetic Empire"] = "", +-- ["DAMMIT, ROOKIE!"] = "", +-- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", +-- ["Dangerous Ducklings"] = "", +-- ["Eliminate all enemies"] = "", +-- ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate Poison before the time runs out"] = "", +-- ["Eliminate the Blue Team"] = "", +-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Enjoy the swim..."] = "", +-- ["Fastest lap: "] = "", +-- ["Feeble Resistance"] = "", +-- ["Flag captured!"] = "", +-- ["Flag respawned!"] = "", +-- ["Flag returned!"] = "", +-- ["Flags will be placed where each team ends their turn."] = "", +-- ["GAME OVER!"] = "", +-- ["Game Started!"] = "", +-- ["Get on over there and take him out!"] = "", +-- ["Goal:"] = "", +-- ["GO! GO! GO!"] = "", +-- ["Good birdy......"] = "", +-- ["Good luck out there!"] = "", +-- ["Hedgewars-Basketball"] = "", +-- ["Hedgewars-Knockball"] = "", +-- ["Hmmm..."] = "", +-- ["Hooray!"] = "", +-- ["Hunter"] = "", --Bazooka, Shotgun, SniperRifle +-- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["- Jumping is disabled"] = "", +-- ["Listen up, maggot!!"] = "", +-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["NEW fastest lap: "] = "", +-- ["NO JUMPING"] = "", +-- ["Not So Friendly Match"] = "", -- Basketball, Knockball +-- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no! Time's up! Just try again."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Operation Diver"] = "", +-- ["Opposing Team: "] = "", +-- ["Pathetic Hog #%d"] = "", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle +-- ["Poison"] = "", +-- ["Random Weapons"] = "", +-- [" - 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"] = "", +-- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["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 +-- ["See ya!"] = "", +-- ["Shotgun Team"] = "", +-- ["Shotgun Training"] = "", +-- ["%s is out and Team %d|scored a penalty!| |Score:"] = "", -- Basketball, Knockball +-- ["%s is out and Team %d|scored a point!| |Score:"] = "", -- Basketball, Knockball +-- ["Sniper Training"] = "", +-- ["Sniperz"] = "", +-- ["Spooky Tree"] = "", +-- ["Team %d: "] = "", +-- ["Team Scores:"] = "", +-- ["That was pointless."] = "", +-- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The flag will respawn next round."] = "", +-- ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "", +-- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["TrophyRace"] = "", +-- ["T_T"] = "", +-- ["Unit 3378"] = "", +-- ["Use your rope to get from start to finish as fast as you can!"] = "", +-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["You have SCORED!!"] = "", +-- ["You've failed. Try again."] = "", +-- ["You've reached the goal!| |Time: "] = "", +-- ["'Zooka Team"] = "", + }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/ko.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,233 @@ +; Korean locale + +00:00=수류탄 +00:01=산탄식 폭탄 +00:02=로켓탄 발사기 +00:03=살인벌 +00:04=엽총 +00:05=잭 해머 +00:06=통과 +00:07=밧줄 +00:08=지뢰 +00:09=권총 +00:10=다이너마이트 +00:11=야구 방망이 +00:12=올려치기 +00:13=초 +00:14=낙하산 +00:15=폭탄 공습 +00:16=지뢰 공습 +00:17=발염 장치 +00:18=벽건설 +00:19=텔레포트 +00:20=고슴도치 바꾸기 +00:21=박격포 +00:22=채찍 +00:23=가미가제 공격 +00:24=케이크 +00:25=유혹 +00:26=소박폭탄 +00:27=불지옥 수류탄 +00:28=드릴 발사기 +00:29=구체의 폭탄 발사기 +00:30=네이팜 공습 +00:31=원격조종비행기 +00:32=저중력 +00:33=손상 증가 +00:34=정복 불능 +00:35=시간연장 +00:36=레이저 조준기 +00:37=흡혈귀 +00:38=저격용 소총 +00:39=비행접시 +00:40=화염병 +00:41=못생긴 앵무새 +00:42=포털 건 +00:43=피아노 +00:44=악취가 나는 치즈 +00:45=사인 건 +00:46=화염 방사기 +00:47=접착지뢰 +00:48=망치 +00:49=소생시키기 + +01:00=시~작! +01:01=무승부 +01:02=%1 승리! +01:03=음량 %1% +01:04=정지 +01:05=그만둘까요? (Y/Esc)? +01:06=단판 결승! +01:07=%1 발 남는다 +01:08=연료 +01:09=동시에 발생하고 있다... +01:10=사용하면 회전 계속할 수 있다 +01:11=아직 사용할 수가 없다 +01:12=1 회전 후에 단판 결승 시작하겠다! +01:13=%1 회전 후에 단판 결승 시작하겠다! +01:14=%1 준비됐나요? + +; Event messages +; Hog (%1) died +02:00=%1 죽었다! + +; Hog (%1) drowned +02:01=%1 ! + +; Round starts +02:02=시~작! + +; Round ends (win; unused atm) +02:03=... + +; Round ends (draw; unused atm) +02:04=... + +; New health crate +02:05=구급상자! + +; New ammo crate +02:06=무기상자! + +; New utility crate +02:07=장치상자! + +; Hog (%1) skips his turn +02:08=%1 통과했다. + +; Hog (%1) hurts himself only +02:09=%1 피학대 성애자인 것 캍아... + +; Hog shot an home run (using the bat and another hog) +02:10=홈런! + +; Hog (%1) has to leave (team is gone) +02:11=%1 포기했다! + +; Weapon Categories +03:00=Timed Grenade +03:01=Timed Grenade +03:02=Ballistic Weapon +03:03=Guided Weapon +03:04=Gun (multiple shots) +03:05=Digging Tool +03:06=Action +03:07=Transport Utility +03:08=Proximity Bomb +03:09=Gun (multiple shots) +03:10=BOOM! +03:11=Bonk! +03:12=Martial Arts +03:13=UNUSED +03:14=Transport Utility +03:15=Airborne Attack +03:16=Airborne Attack +03:17=Digging Tool +03:18=Utility +03:19=Transport Utility +03:20=Action +03:21=Ballistic Weapon +03:22=Call me Indiana! +03:23=(Really) Martial Arts +03:24=The cake is NOT a lie! +03:25=Costume Kit +03:26=Juicy Grenade +03:27=Fiery Grenade +03:28=Ballistic Weapon +03:29=Ballistic Weapon +03:30=Airborne Attack +03:31=Remote Controlled Bomb +03:32=Temporary Effect +03:33=Temporary Effect +03:34=Temporary Effect +03:35=Temporary Effect +03:36=Temporary Effect +03:37=Temporary Effect +03:38=Gun (multiple shots) +03:39=Transport Utility +03:40=Incinerating Grenade +03:41=Huge fan of Squawks +03:42=I'm making a note here... +; the misspelled "Beethoven" is intentional (-> to beat) +03:43=Performing Beathoven's deadly sonata +03:44=Best before: 1923 +03:45=The power of science +03:46=Hot Hot Hot! +03:47=Stick these somewhere useful! +03:48=It's Hammer time! +03:49=Does what you guess + +; Weapon Descriptions (use | as line breaks) +04:00=Attack your enemies using a simple grenade.|It will explode once its timer reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power +04:01=Attack your enemies using a cluster bomb.|It will split into smaller bombs once its timer|reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power +04:02=Attack your enemies using a ballistic projectile|that might be influenced by wind.|Attack: Hold to shoot with more power +04:03=Launch an explosive bee that will lock on|the selected target. Don't shoot with full power|to improve its precision.|Cursor: Pick target|Attack: Hold to shoot with more power +04:04=Attack your enemy using a shotgun with two shots.|Thanks to its spread you don't need direct hits|to harm your opponents.|Attack: Shoot (multiple times) +04:05=Move underground! Use the pickhammer to drill|a hole into the ground and reach other areas.|Attack: Start or stop digging +04:06=Bored? No way to attack? Save your ammo?|No problem! Just skip your turn, coward!|Attack: Skip your turn without fighting +04:07=Bridge huge distances using timed shots with the|rope. Use your momentum to slide into other hogs|or drop grenades and other weapons on them.|Attack: Shoot or release the rope|Long Jump: Drop grenades or similar weapons +04:08=Keep your enemies away by dropping a mine in|narrow passages or right below their feet. Be|sure to retreat before you trigger it yourself!|Attack: Drop mine next to your feet +04:09=Not sure about your aiming? Use the Desert|Eagle to attack using up to four shots.|Attack: Shoot (multiple times) +04:10=Brute force is always an option. Drop this classic|explosive next to your enemies and retreat.|Attack: Drop dynamite next to your feet +04:11=Get rid of enemy hogs by batting them over|the map borders or into water. Or how about|knocking some mines to your friends?|Attack: Bat everything in front of you +04:12=Get close and personal to unleash the power of|this almost deadly martial arts technique.|Attack: Perform the Fire Punch +04:13=UNUSED +04:14=Fear of heights? Better grab a parachute.|It will unfold once|you fall too far and|save your hog from taking fall damage.|Attack: Unfold the parachute|Long Jump: Drop grenades or similar weapons +04:15=Call in an airplane to attack your enemies|using a bombing run.|Left/Right: Determine attack direction|Cursor: Select target region +04:16=Call in an airplane to drop several mines|in the target area.|Left/Right: Determine attack direction|Cursor: Select target region +04:17=Need shelter? Use the blow torch to dig|a tunnel into solid ground granting you|cover.|Attack: Start or stop digging +04:18=Need additional protection or want to pass|unpassable ground? Place some girders as you|like.|Left/Right: Select girder to place|Cursor: Place girder in a valid position +04:19=Used at the right moment teleportation can|be more powerful than almost all weapons as|it allows you to save hogs from dangerous|situations within seconds.|Cursor: Select target region +04:20=Allows you to play the current turn with|a different hog.|Attack: Enable switching hogs +04:21=Shoot a grenade-like projectile that will|release multiple bombs upon impact.|Attack: Shoot at full power +04:22=Not just for Indiana Jones! The whip is a|useful weapon in many situations. Especially|when you'd like to shove someone off a cliff.|Attack: Strike everything in front of you +04:23=If you have nothing to lose, this might be|quite handy. Sacrifice your hog by launching|him into a specific direction hurting everything|on his way and exploding at the end.|Attack: Launch the devastating and deadly attack +04:24=Happy Birthday! Launch this cake, let it walk right|next to your enemies and let them have an explosive|party. The cake is able to pass almost all terrain|but he might detonate earlier this way.|Attack: Start the cake or let it stop and explode +04:25=Use this disguise kit to get your enemies to jump|towards your hog (and into some gap or hole).|Attack: Use the kit and try to seduce another hog +04:26=Throw this juicy watermelon at your enemies. Once|the timer expires, it will split into several|explosive pieces.|1-5: Set watermelon's timer|Attack: Hold to shoot with more power +04:27=Let hellfire rain onto your opponents by using|this fiendish explosive. Don't get too close to|the explosion as smaller fires might last longer.|Attack: Hold to shoot with more power +04:28=Short time after launching this rocket, it will|start drilling through solid ground and explode|once its fuse is triggered or it resurfaces again.|Attack: Hold to shoot with more power +04:29=This is nothing for small kids! The ball gun fires|tons of small colored balls filled with explosives.|Attack: Shoot at full power|Up/Down: Continue aiming +04:30=Call in an airplane to launch a powerful napalm|strike. With proper aiming this attack can eradicate|huge parts of landscape including unlucky hogs|sitting there.|Left/Right: Determine attack direction|Cursor: Select target region +04:31=The RC plane is the ideal weapon to collect crates or|attack far away hogs. Either steer it into enemies or|drop some bombs first.|Attack: Launch the plane or drop bombs|Long Jump: Let the valkyries ride into battle|Up/Down: Steer the plane +04:32=Low gravity is more effective than any diet! Jump|higher and over greater distances or let your enemies|fly even further.|Attack: Activate +04:33=Sometimes you just need that little extra boost to|deal some more damage.|Attack: Activate +04:34=Can't touch me!|Attack: Activate +04:35=Sometimes time's running too fast. Grab some extra|seconds to finish your attack.|Attack: Activate +04:36=Well, sometimes you're just too bad in aiming. Get|some assistance using modern day technology.|Attack: Activate +04:37=Don't fear the daylight. It will just last one turn|but will enable you to absorb the damage you do to|other hogs.|Attack: Activate +04:38=The sniper rifle can be the most devastating weapon|in your whole arsenal, however it's very ineffective|at close quarters. The damage dealt increases with|the distance to its target.|Attack: Shoot (twice) +04:39=Fly to other parts of the map using the flying|saucer. This hard to master utility is able to|take you to almost any position on the battlefield.|Attack: Activate|Up/Left/Right: Apply force in one direction|Long Jump: Drop grenades or similar weapons +04:40=Set some ground on fire using this bottle filled|with (soon to be) burning liquid.|Attack: Hold to shoot with more power +04:41=The evidence nature might even top the flying|saucer. Birdy can carry your hog around and|drop eggs on your enemies!|Attack: Activate and drop eggs|Up/Left/Right: Flap in one direction +04:42=This portable portal device is capable|of instantly transporting you, your enemies,|or your weaponry between two points on the|terrain.|Use it wisely and your campaign will be a...|HUGE SUCCESS!|Attack: Shoot a portal|Switch: Cycle portal colours +04:43=Make your musical debut an explosive success!|Drop a piano from the heavens, but beware...|someone needs to play it, and that may cost you|your life!|Cursor: Select target region|F1-F9: Play the piano +04:44=This isn't just cheese, it's biological warfare!|It won't cause an huge amount of damage once|the timer reaches zero but it will definitely|poison anyone unlucky to touch the smell!|1-5: Set grenade's timer|Attack: Hold to throw with more power +04:45=All those physics classes have finally|paid off, launch a devastating Sine|wave at your foes.|Watch out, this weapon packs quite a kick. (This weapon is incomplete)|Attack: Shoot +04:46=Cover your foes with sizzling liquid flame.|Heartwarming!|Attack: Activate|Up/Down: Continue aiming|Left/Right: Modify spitting power +04:47=Double the fun with two spiky, sneaky, sticky mines.|Set up a chain reaction or defend yourself (or both!)|Attack: Hold to shoot with more power (twice) +04:48=Why should the moles get all the abuse?|Wacking a hog can be just as fun! A good|blow from this hammer will shave off one|third of a hog's health and plunge them|underground.|Attack: Activate +04:49=Resurrect your friends!|But beware that this also resurrects your foes.|Attack: Keep attack pressed to resurrect slowly|Up: Accelerate resurrection + +; Game goal strings +05:00=게임 수정 모드 +05:01=이 규칙은 제정할 것입니다. +05:02=성 공격 모드 +05:03=저중력 +05:04=정복 불능 +05:05=흡혈귀: Hogs will be healed for the damage dealt +05:06=카르마: Hogs will be damaged for the damage dealt +05:07=킹 모드: Don't let your king die!|킹을 배치함: Pick a protected starting point for your King +05:08=고슴도치를 배치하기 +05:09=움직이지 못함 +05:10=굳은 지반: Most weapons won't destroy terrain +05:11=공용탄약: All teams of the same color share their ammunition +05:12=지뢰 타임스위치: %1 초 +05:13=지뢰 타임스위치: 즉각적이다 +05:14=지뢰 타임스위치: 0 - 5 초 +05:15=손상 수정: %1% 손상 +05:16=회전 후에 건강을 재건함 +05:17=컴퓨터 고슴도치들이 자동 소새시킴 +05:18=무한한 탄약 +05:19=회전 후에 탄약을 재건함 +05:20=탄약 종목별기준
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/nl.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,510 @@ +; English locale + +00:00=Grenade +00:01=ClusterBomb +00:02=Bazooka +00:03=Homing Bee +00:04=Shotgun +00:05=PickHammer +00:06=Skip +00:07=Rope +00:08=Mine +00:09=Desert Eagle +00:10=Dynamite +00:11=Baseball Bat +00:12=Fire Punch +00:13=sec +00:14=Parachute +00:15=Air Attack +00:16=Mine Strike +00:17=Blow Torch +00:18=Construction +00:19=Teleportation +00:20=Switch Hedgehog +00:21=Mortar +00:22=Whip +00:23=Kamikaze +00:24=Cake +00:25=Seduction +00:26=Watermelon Bomb +00:27=Hellish hand-grenade +00:28=Drill Rocket +00:29=Ballgun +00:30=Napalm +00:31=RC Plane +00:32=Low Gravity +00:33=Extra Damage +00:34=Invulnerable +00:35=Extra Time +00:36=Laser Sight +00:37=Vampirism +00:38=Sniper Rifle +00:39=Flying Saucer +00:40=Molotov Cocktail +00:41=Birdy +00:42=Portable Portal Device +00:43=Piano Strike +00:44=Old Limburger +00:45=Sine Gun (beta) +00:46=Flamethrower +00:47=Sticky Mine +00:48=Hammer +00:49=Resurrector +00:50=Drill Strike + +01:00=Let's fight! +01:01=Round draw +01:02=%1 wins! +01:03=Volume %1% +01:04=Paused +01:05=Really quit (Y/Esc)? +01:06=Sudden Death! +01:07=%1 remaining +01:08=Fuel +01:09=Synchronizing... +01:10=Using this utility won't end your turn! +01:11=This weapon or utility is not yet available! +01:12=Last round till Sudden Death! +01:13=%1 rounds till Sudden Death! +01:14=Get ready, %1! + +; Event messages +; Hog (%1) died +02:00=%1 has kicked the bucket! +02:00=%1 has seen the light! +02:00=%1 never saw that coming! +02:00=%1 waves goodbye! +02:00=%1 has gone to a better place! +02:00=%1 meets his maker! +02:00=%1 can hang on no longer! +02:00=%1 has done his duty! +02:00=%1 makes the ultimate sacrifice! +02:00=%1 departs this mortal coil! +02:00=%1 makes like a tree and leaves! +02:00=%1 has timed out! +02:00=%1 says peace out! +02:00=%1 will be fondly remembered! +02:00=%1 has an aneurysm! +02:00=%1 leaves behind a wife and child +02:00=%1 has launched his last bazooka +02:00=%1 has tossed his last grenade +02:00=%1 has baked his last cake +02:00=%1 has swung on his last rope +02:00=%1 has called his last airstrike +02:00=%1 has pumped his last shotgun +02:00=%1 has thrown his last melon +02:00=%1 has drawn his last deagle +02:00=%1 took one shot too many +02:00=%1 could really have used a health crate +02:00=%1 has gone to play a better game +02:00=%1 has ragequit life +02:00=%1 fails +02:00=Poor poor %1... +02:00=%1 prefers wormux +02:00=%1 has been blocking shots with his face +02:00=%1 is a hero amongst me...err...hogs +02:00=%1 finds his place in Valhalla +02:00=%1 has left the building +02:00=%1 goes the way of the dinosaurs +02:00=%1 brings hedgehogs one step closer to extinction +02:00=%1 brings a tear to my eye +02:00=%1 is an ex-hog +02:00=%1 is pushing up the daisies +02:00=%1 has ceased to be +02:00=Say goodbye to %1 +02:00=No hope left for %1 +02:00=%1 faces the final curtain +02:00=Smoke 'em if you got 'em, %1 +02:00=%1 suffers a Spontaneous Massive Existence Failure +02:00=%1 has passed on +02:00=%1 is stone dead +02:00=%1 is no more +02:00=%1 has expired +02:00=Bereft of life, %1 rests in peace +02:00=%1 joins the choir invisible +02:00=Farewell %1, we hardly knew ye! +02:00=%1 had a low tolerance for being shot +02:00=%1 could have used an extra life +02:00=Is there a doctor in the house? + +; Hog (%1) drowned +02:01=%1 plays submarine! +02:01=%1 mimics the Titanic! +02:01=%1 swims like a stone! +02:01=%1 floats like a brick! +02:01=%1 checks out the deep end +02:01=%1 goes glug glug glug +02:01=%1 goes splash +02:01=%1 forgot his armbands +02:01=%1 really should have taken swimming lessons +02:01=%1 left his surfboard at home +02:01=%1 is washed up +02:01=%1 is one soggy hog +02:01=%1 forgot to bring his life jacket +02:01=%1 goes splish splash splish +02:01=%1 is sleeping with the fishes +02:01=%1 thinks the water physics suck in this game +02:01=%1 looks thirsty +02:01=The sea claims %1 +02:01=%1 is lost at sea +02:01=%1 should have brought his scuba gear +02:01=%1 gets a burial at sea +02:01=%1 has that sinking feeling +02:01=%1 is practicing his backstroke +02:01=%1 goes in search of the Titanic +02:01=%1 is not Jesus +02:01=%1 is finding Nemo +02:01=%1 springs a leak +02:01=You've gotta wonder how many hogs are down there +02:01=%1 makes the ocean slightly higher +02:01=%1 didn't enlist in the Navy +02:01=%1 is doing his impersonation of a dead fish +02:01=At least you didn't go down the toilet, %1 +02:01=Sonic couldn't swim and neither can %1 +02:01=%1 wants to play Ecco the dolphin +02:01=%1 has gone to visit Aquaria +02:01=%1 has found the lost city of Atlantis +02:01=%1 aims for the lead role in Bioshock 3 +02:01=Your doggy paddle could use a little work, %1 +02:01=%1 should have brought a jet ski +02:01=%1 doesn't like watersports +02:01=%1 is forever blowing bubbles +02:01=%1 is short of a raft +02:01=%1 thinks salt water is good for the skin +02:01=%1 gets salt water in his wounds +02:01=%1 has walked the plank +02:01=%1 has a bath +02:01=%1 is wet wet wet +02:01=%1 gets his quills wet +02:01=It's Davy Jones' locker for %1 + +; Round starts +02:02=Let's fight! +02:02=Armed and ready! +02:02=Let's get ready to rumble! +02:02=Let's get it on! +02:02=Let's get this party started +02:02=Last hog standing wins +02:02=Let's go! +02:02=Let's rock! +02:02=Let's jam! +02:02=It's beginning... +02:02=This is the start of something big +02:02=Welcome to Hedgewars +02:02=Welcome to the front lines +02:02=Crush your enemies! +02:02=May the best hog win +02:02=Victory or death +02:02=To the victor goes the spoils +02:02=Losing is not an option +02:02=Cry havoc! Let loose the hogs of war! +02:02=Hedgewars, brought to you by Hedgewars.org +02:02=GL HF +02:02=Just count yourself lucky you're not up against Tiyuri +02:02=Just count yourself lucky you're not up against unC0Rr +02:02=Just count yourself lucky you're not up against Nemo +02:02=Just count yourself lucky you're not up against Smaxx +02:02=Just count yourself lucky you're not up against Jessor +02:02=Give it your all! +02:02=The losers do the cleaning up! +02:02=Let the fight of the millenium begin +02:02=Let the fight of the century begin +02:02=Let the fight of the decade begin +02:02=Let the fight of the year begin +02:02=Let the fight of the month begin +02:02=Let the fight of the week begin +02:02=Let the fight of the day begin +02:02=Let the fight of the hour begin +02:02=Do your best! +02:02=Destroy the enemy! +02:02=Good luck +02:02=Have fun +02:02=Fight the good fight +02:02=Fight dirty +02:02=Fight with honour +02:02=Don't give up +02:02=Never surrender +02:02=Rock 'em and sock 'em! +02:02=Let the fragfest begin! +02:02=I hope you're ready for a tussle! +02:02=Go Go Go! +02:02=Hedgehogs advance! +02:02=Bring it to them! +02:02=Have no fear! +02:02=Be brave and conquer + +; Round ends (win; unused atm) +02:03=... + +; Round ends (draw; unused atm) +02:04=... + +; New health crate +02:05=Incoming aid! +02:05=Medic! +02:05=First aid from the skies! +02:05=A health pack for you +02:05=Good health... in box form! +02:05=The doctor calls +02:05=Fresh band-aids! +02:05=This will make you feel better +02:05=A Hi-Potion! Whoops wrong game +02:05=A pick-me-up! +02:05=Grab it +02:05=A healthy snack +02:05=A remedy to pain +02:05=Correct Dosage: as many as you can find! +02:05=Urgent delivery +02:05=Supplies! + +; New ammo crate +02:06=More weapons! +02:06=Reinforcements! +02:06=Lock and load! +02:06=I wonder what weapon is in there? +02:06=Supplies! +02:06=What could be inside? +02:06=Christmas comes early in Hedgewars +02:06=A present! +02:06=Special delivery! +02:06=It was a nightmare getting this through customs +02:06=Destructive toys from the heavens +02:06=Warning! Contents Volatile +02:06=Pick it up or blow it up, choice is yours +02:06=Goodies! +02:06=Mmmmm Ammo +02:06=A box of destructive power +02:06=Airmail! +02:06=Whatever's in that box, it ain't pizza +02:06=Get it! +02:06=Weapon drop incoming +02:06=Don't let the enemy grab that! +02:06=Shiny new toys! +02:06=A mysterious box! + +; New utility crate +02:07=Tooltime! +02:07=This could come in handy... +02:07=Utilities! +02:07=Utilise this box +02:07=Watch out below +02:07=More utilities! +02:07=Tools for you! +02:07=This should be good! +02:07=Use this wisely +02:07=Ooo this box is heavy +02:07=You might need this + +; Hog (%1) skips his turn +02:08=%1 is sooo boring... +02:08=%1 couldn't be bothered +02:08=%1 is one lazy hog +02:08=%1 is thoughtless +02:08=%1 gave up +02:08=You snooze you lose, %1 +02:08=%1 shamelessly skips +02:08=%1 is really lazy +02:08=%1 needs a little more motivation +02:08=%1 is a pacifist +02:08=%1 has a breather +02:08=%1 has a rest +02:08=%1 chills out +02:08=%1 has no faith in his own abilities +02:08=%1 decides to do nothing at all +02:08=%1 lets the enemy destroy itself +02:08=%1 would be terrible at parties +02:08=%1 hides out +02:08=%1 has decided to pass on this opportunity +02:08=%1 decides the best thing he can do is...nothing +02:08=%1 is a big wuss +02:08=Buck Buck Buck, %1 is a chicken +02:08=%1 is looking a little yellow +02:08=%1 is a coward! +02:08=%1 is waiting for sudden death +02:08=%1 is not the fighting type +02:08=%1 is reconsidering his purpose in life +02:08=%1 was never much of a good shot anyway +02:08=%1 didn't want to join the army in the first place +02:08=Stop wasting our time, %1 +02:08=I'm dissapointed in you, %1 +02:08=Come on, you can do better than that %1 +02:08=%1's will has broken +02:08=%1 apparently has better things to do +02:08=%1 is scared stiff +02:08=%1 has fallen asleep + +; Hog (%1) hurts himself only +02:09=%1 should practice aiming! +02:09=%1 seems to hate himself +02:09=%1 is standing on the wrong side! +02:09=%1 makes like an emo +02:09=%1 was holding his weapon the wrong way around +02:09=%1 is a little sadistic +02:09=%1 is a masochist +02:09=%1 has no instinct of self-preservation +02:09=%1 messed up +02:09=%1 screwed up +02:09=That was a poor shot, %1 +02:09=%1 is a little too careless with dangerous weapons +02:09=%1 should consider a change of career +02:09=Worst. Shot. Ever! +02:09=No no no %1, you shoot at the ENEMY! +02:09=%1 should only be destroying the enemy +02:09=%1 moves one step closer to suicide +02:09=%1 aids the enemy +02:09=That was stupid %1 +02:09=%1 lives by the mantra of "no pain, no gain" +02:09=%1 is confused +02:09=%1 hurt itself in its confusion +02:09=%1 has a knack for embarrassing himself +02:09=%1 is a klutz! +02:09=%1 is clumsy +02:09=%1 shows the enemy what he's capable of +02:09=%1 can't be expected to be perfect all the time +02:09=Don't worry %1, pobody's nerfect +02:09=%1 totally did that on purpose +02:09=I won't tell anyone if you don't, %1 +02:09=How embarrassing! +02:09=I'm sure nobody saw that %1 +02:09=%1 needs to review his field manual +02:09=%1's weapon clearly malfunctioned + +; Hog shot an home run (using the bat and another hog) +02:10=Home Run! +02:10=A bird, a plane, ... +02:10=That one is out! + +; Hog (%1) has to leave (team is gone) +02:11=%1 has to go to bed! +02:11=%1 seems too busy to play +02:11=Beam him up, Scotty! +02:11=%1 has to go + +; Weapon Categories +03:00=Timed Grenade +03:01=Timed Grenade +03:02=Ballistic Weapon +03:03=Guided Weapon +03:04=Gun (multiple shots) +03:05=Digging Tool +03:06=Action +03:07=Transport Utility +03:08=Proximity Bomb +03:09=Gun (multiple shots) +03:10=BOOM! +03:11=Bonk! +03:12=Martial Arts +03:13=UNUSED +03:14=Transport Utility +03:15=Airborne Attack +03:16=Airborne Attack +03:17=Digging Tool +03:18=Utility +03:19=Transport Utility +03:20=Action +03:21=Ballistic Weapon +03:22=Call me Indiana! +03:23=(Really) Martial Arts +03:24=The cake is NOT a lie! +03:25=Costume Kit +03:26=Juicy Grenade +03:27=Fiery Grenade +03:28=Ballistic Weapon +03:29=Ballistic Weapon +03:30=Airborne Attack +03:31=Remote Controlled Bomb +03:32=Temporary Effect +03:33=Temporary Effect +03:34=Temporary Effect +03:35=Temporary Effect +03:36=Temporary Effect +03:37=Temporary Effect +03:38=Gun (multiple shots) +03:39=Transport Utility +03:40=Incinerating Grenade +03:41=Huge fan of Squawks +03:42=I'm making a note here... +; the misspelled "Beethoven" is intentional (-> to beat) +03:43=Performing Beathoven's deadly sonata +03:44=Best before: 1923 +03:45=The power of science +03:46=Hot Hot Hot! +03:47=Stick these somewhere useful! +03:48=It's Hammer time! +03:49=Does what you guess +03:50=Moles fan + +; Weapon Descriptions (use | as line breaks) +04:00=Attack your enemies using a simple grenade.|It will explode once its timer reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power +04:01=Attack your enemies using a cluster bomb.|It will split into smaller bombs once its timer|reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power +04:02=Attack your enemies using a ballistic projectile|that might be influenced by wind.|Attack: Hold to shoot with more power +04:03=Launch an explosive bee that will lock on|the selected target. Don't shoot with full power|to improve its precision.|Cursor: Pick target|Attack: Hold to shoot with more power +04:04=Attack your enemy using a shotgun with two shots.|Thanks to its spread you don't need direct hits|to harm your opponents.|Attack: Shoot (multiple times) +04:05=Move underground! Use the pickhammer to drill|a hole into the ground and reach other areas.|Attack: Start or stop digging +04:06=Bored? No way to attack? Save your ammo?|No problem! Just skip your turn, coward!|Attack: Skip your turn without fighting +04:07=Bridge huge distances using timed shots with the|rope. Use your momentum to slide into other hogs|or drop grenades and other weapons on them.|Attack: Shoot or release the rope|Long Jump: Drop grenades or similar weapons +04:08=Keep your enemies away by dropping a mine in|narrow passages or right below their feet. Be|sure to retreat before you trigger it yourself!|Attack: Drop mine next to your feet +04:09=Not sure about your aiming? Use the Desert|Eagle to attack using up to four shots.|Attack: Shoot (multiple times) +04:10=Brute force is always an option. Drop this classic|explosive next to your enemies and retreat.|Attack: Drop dynamite next to your feet +04:11=Get rid of enemy hogs by batting them over|the map borders or into water. Or how about|knocking some mines to your friends?|Attack: Bat everything in front of you +04:12=Get close and personal to unleash the power of|this almost deadly martial arts technique.|Attack: Perform the Fire Punch +04:13=UNUSED +04:14=Fear of heights? Better grab a parachute.|It will unfold once|you fall too far and|save your hog from taking fall damage.|Attack: Unfold the parachute|Long Jump: Drop grenades or similar weapons +04:15=Call in an airplane to attack your enemies|using a bombing run.|Left/Right: Determine attack direction|Cursor: Select target region +04:16=Call in an airplane to drop several mines|in the target area.|Left/Right: Determine attack direction|Cursor: Select target region +04:17=Need shelter? Use the blow torch to dig|a tunnel into solid ground granting you|cover.|Attack: Start or stop digging +04:18=Need additional protection or want to pass|unpassable ground? Place some girders as you|like.|Left/Right: Select girder to place|Cursor: Place girder in a valid position +04:19=Used at the right moment teleportation can|be more powerful than almost all weapons as|it allows you to save hogs from dangerous|situations within seconds.|Cursor: Select target region +04:20=Allows you to play the current turn with|a different hog.|Attack: Enable switching hogs +04:21=Shoot a grenade-like projectile that will|release multiple bombs upon impact.|Attack: Shoot at full power +04:22=Not just for Indiana Jones! The whip is a|useful weapon in many situations. Especially|when you'd like to shove someone off a cliff.|Attack: Strike everything in front of you +04:23=If you have nothing to lose, this might be|quite handy. Sacrifice your hog by launching|him into a specific direction hurting everything|on his way and exploding at the end.|Attack: Launch the devastating and deadly attack +04:24=Happy Birthday! Launch this cake, let it walk right|next to your enemies and let them have an explosive|party. The cake is able to pass almost all terrain|but he might detonate earlier this way.|Attack: Start the cake or let it stop and explode +04:25=Use this disguise kit to get your enemies to jump|towards your hog (and into some gap or hole).|Attack: Use the kit and try to seduce another hog +04:26=Throw this juicy watermelon at your enemies. Once|the timer expires, it will split into several|explosive pieces.|1-5: Set watermelon's timer|Attack: Hold to shoot with more power +04:27=Let hellfire rain onto your opponents by using|this fiendish explosive. Don't get too close to|the explosion as smaller fires might last longer.|Attack: Hold to shoot with more power +04:28=Short time after launching this rocket, it will|start drilling through solid ground and explode|once its fuse is triggered or it resurfaces again.|Attack: Hold to shoot with more power +04:29=This is nothing for small kids! The ball gun fires|tons of small colored balls filled with explosives.|Attack: Shoot at full power|Up/Down: Continue aiming +04:30=Call in an airplane to launch a powerful napalm|strike. With proper aiming this attack can eradicate|huge parts of landscape including unlucky hogs|sitting there.|Left/Right: Determine attack direction|Cursor: Select target region +04:31=The RC plane is the ideal weapon to collect crates or|attack far away hogs. Either steer it into enemies or|drop some bombs first.|Attack: Launch the plane or drop bombs|Long Jump: Let the valkyries ride into battle|Up/Down: Steer the plane +04:32=Low gravity is more effective than any diet! Jump|higher and over greater distances or let your enemies|fly even further.|Attack: Activate +04:33=Sometimes you just need that little extra boost to|deal some more damage.|Attack: Activate +04:34=Can't touch me!|Attack: Activate +04:35=Sometimes time's running too fast. Grab some extra|seconds to finish your attack.|Attack: Activate +04:36=Well, sometimes you're just too bad in aiming. Get|some assistance using modern day technology.|Attack: Activate +04:37=Don't fear the daylight. It will just last one turn|but will enable you to absorb the damage you do to|other hogs.|Attack: Activate +04:38=The sniper rifle can be the most devastating weapon|in your whole arsenal, however it's very ineffective|at close quarters. The damage dealt increases with|the distance to its target.|Attack: Shoot (twice) +04:39=Fly to other parts of the map using the flying|saucer. This hard to master utility is able to|take you to almost any position on the battlefield.|Attack: Activate|Up/Left/Right: Apply force in one direction|Long Jump: Drop grenades or similar weapons +04:40=Set some ground on fire using this bottle filled|with (soon to be) burning liquid.|Attack: Hold to shoot with more power +04:41=The evidence nature might even top the flying|saucer. Birdy can carry your hog around and|drop eggs on your enemies!|Attack: Activate and drop eggs|Up/Left/Right: Flap in one direction +04:42=This portable portal device is capable|of instantly transporting you, your enemies,|or your weaponry between two points on the|terrain.|Use it wisely and your campaign will be a...|HUGE SUCCESS!|Attack: Shoot a portal|Switch: Cycle portal colours +04:43=Make your musical debut an explosive success!|Drop a piano from the heavens, but beware...|someone needs to play it, and that may cost you|your life!|Cursor: Select target region|F1-F9: Play the piano +04:44=This isn't just cheese, it's biological warfare!|It won't cause an huge amount of damage once|the timer reaches zero but it will definitely|poison anyone unlucky to touch the smell!|1-5: Set grenade's timer|Attack: Hold to throw with more power +04:45=All those physics classes have finally|paid off, launch a devastating Sine|wave at your foes.|Watch out, this weapon packs quite a kick. (This weapon is incomplete)|Attack: Shoot +04:46=Cover your foes with sizzling liquid flame.|Heartwarming!|Attack: Activate|Up/Down: Continue aiming|Left/Right: Modify spitting power +04:47=Double the fun with two spiky, sneaky, sticky mines.|Set up a chain reaction or defend yourself (or both!)|Attack: Hold to shoot with more power (twice) +04:48=Why should the moles get all the abuse?|Wacking a hog can be just as fun! A good|blow from this hammer will shave off one|third of a hog's health and plunge them|underground.|Attack: Activate +04:49=Resurrect your friends!|But beware that this also resurrects your foes.|Attack: Keep attack pressed to resurrect slowly|Up: Accelerate resurrection + +; Game goal strings +05:00=Game Modes +05:01=The following rules apply +05:02=Forts: Defend your fortress; vanquish your enemies! +05:03=Low Gravity: Watch your step +05:04=Invulnerability: Hogs are (almost) invulnerable +05:05=Vampirism: Hogs will be healed for the damage dealt +05:06=Karma: Hogs will be damaged for the damage dealt +05:07=Protect the King: Don't let your king die!|Place the King: Pick a protected starting point for your King +05:08=Place Hedgehogs: Place your hogs before the game starts +05:09=Artillery: Hogs can't walk to change position +05:10=Indestructible Terrain: Most weapons won't destroy terrain +05:11=Shared Ammo: All teams of the same color share their ammunition +05:12=Mine Timers: Mines will detonate after %1 second(s) +05:13=Mine Timers: Mines will detonate instantly +05:14=Mine Timers: Mines will detonate after 0 - 5 seconds +05:15=Damage Modifier: All weapons will do %1% damage +05:16=Health of all hogs is reset on end of turn +05:17=AI hogs respawn on death +05:18=Unlimited Attacks +05:19=Weapons are reset on end of turn +05:20=Weapons are not shared between hogs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/pl.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,94 @@ +locale = { + [":("] = ":(", + ["!!!"] = "!!!", + ["A game of luck"] = "Wszystko zależy od losu", + ["Aiming Practice"] = "Potrenuj celność", + ["Bat balls at your enemies and|push them into the sea!"] = "Uderzaj piłkami w swoich przeciwników|i strącaj ich do wody!", + ["Bat your opponents through the|baskets and out of the map!"] = "Uderzaj swoich przekiwników|wyrzucając przez kosz, poza mapę!", + ["Bazooka Training"] = "Trening bazooki", + ["Best laps per team: "] = "Najszybsze okrążenie drużyny: ", + ["Bloody Rookies"] = "Żółtodzioby", + ["Boom!"] = "BUM!", + ["by mikade"] = "Napisane przez mikade", + ["CAPTURE THE FLAG"] = "PRZECHWYĆ FLAGĘ", + ["Codename: Teamwork"] = "Kryptonim: Praca zespołowa", + ["Congratulations!"] = "Gratulacje", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulacje! Zniszczyłeś wszystkie cele przed upłynięciem czasu.", + ["CONTROL"] = "KONTROLA", + ["Control pillars to score points."] = "Kontroluj filary by zdobyć punkty", + ["CONTROL v0.3"] = "KONTROLA v0.3", + ["CTF_BLIZZARD"] = "Śnieżyca", + ["CUSTOM BUILD 0.2"] = "Wersja 0.2", + ["Cybernetic Empire"] = "Cybernetyczne Imperium", + ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Młody!!! Złaź z mojej głowy!!!", + ["DAMMIT, ROOKIE!"] = "Żółtodziobie!", + ["Dangerous Ducklings"] = "Niebezpieczne Kaczory", + ["Eliminate all enemies"] = "Wyeliminuj wszystkich przeciwników", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Zniszcz wszystkie cele zanim upłynie czas.|W tej misji masz nieskończoną ilość amunicji.", + ["Eliminate Poison before the time runs out"] = "Zabij Truciciela zanim skończy się czas", + ["Eliminate the Blue Team"] = "Zniszcz niebieską drużynę", + ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "Rozwal Jednostkę 3378 | Twoja drużyna musi przetrwać", + ["Enjoy the swim..."] = "Popływaj trochę...", + ["Fastest lap: "] = "Najszybsze okrążenie: ", + ["Feeble Resistance"] = "Ruch Oporu", + ["Flag captured!"] = "Flaga przechwycona!", + ["Flag respawned!"] = "Flaga przywrócona!", + ["Flag returned!"] = "Flaga odzyskana!", + ["Flags will be placed where each team ends their turn."] = "Flagi zostaną umieszczone tam, gdzie każda z drużyn zakończy swoją turę", + ["GAME OVER!"] = "KONIEC GRY!", + ["Game Started!"] = "Gra Rozpoczęta", + ["Get on over there and take him out!"] = "Dostań się tam i go wykończ!", + ["Goal:"] = "Cel:", + ["GO! GO! GO!"] = "RUCHY! RUCHY! RUCHY!", + ["Good birdy......"] = "Dooobry ptaszek...", + ["Good luck out there!"] = "Powodzenia!", + ["Hedgewars-Basketball"] = "Hedgewars-Koszykówka", + ["Hedgewars-Knockball"] = "Hedgewars-Knockball", + ["Hmmm..."] = "Hmmmm...", + ["Hooray!"] = "Hurraaa!", + ["Hunter"] = "Strzelec", + ["Instructor"] = "Instruktor", + ["- Jumping is disabled"] = "- Skakanie jest niemożliwe", + ["Listen up, maggot!!"] = "Słuchaj mnie, gnido!", + ["|- Mines Time:"] = "|- Czas detonacji min:", + ["MISSION FAILED"] = "MISJA ZAKOŃCZONA NIEPOWODZENIEM", + ["MISSION SUCCESSFUL"] = "MISJA POWIODŁA SIĘ", + ["NEW fastest lap: "] = "NOWE najszybsze okrążenie: ", + ["NO JUMPING"] = "BEZ SKAKANIA", + ["Not So Friendly Match"] = "Mecz Nie-Do-Końca Towarzyski", + ["Oh no! Just try again!"] = "Ojojoj! Spróbuj jeszcze raz!", + ["Oh no! Time's up! Just try again."] = "Ajajaj! Koniec czasu! Spróbuj jeszcze raz.", + ["Operation Diver"] = "Operacja Nurek", + ["Opposing Team: "] = "Przeciwna drużyna", + ["Pathetic Hog #%d"] = "Załosny Jeż #%d", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle + ["Poison"] = "Truciciel", + ["Random Weapons"] = "Losowe uzbrojenie", + [" - 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"] = " - Przynieś flagę wroga do swojej bazy by zdobyć punkt | - Pierwszy kto zrobi to 3 razy, wygrywa | - Punkt zdobywasz tylko gdy twoja flaga znajduje się w bazie | - Jeże upuszczą flagę gdy zostaną zabite bądź utopione | - Upuszczona flaga może być przywrócona lub przechwycona ponownie | - Jeże odradzają się po śmierci", + ["RULES OF THE GAME [Press ESC to view]"] = "ZASADY GRY [Naciśnij ESC by zobaczyć]", + ["sec"] = "sek", + ["See ya!"] = "Do zobaczenia!", + ["Shotgun Team"] = "Strzelcy", + ["Shotgun Training"] = "Trening strzelecki", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s utonął i drużyna %d|dostała punkt karny!| |Punktacja:", + ["%s is out and Team %d|scored a point!| |Score:"] = "%s utonął i drużyna %d|zdobyła punkt!| |Punktacja:", + ["Sniper Training"] = "Trening Snajperski", + ["Sniperz"] = "Snajperzy", + ["Spooky Tree"] = "Straszne drzewo", + ["Team %d: "] = "Drużyna %d: ", + ["Team Scores:"] = "Punktacja", + ["That was pointless."] = "To było bezcelowe", + ["The enemy is hiding out on yonder ducky!"] = "Na tamtej kaczce ukrywa się nasz przeciwnik!", + ["The flag will respawn next round."] = "Flaga pojawi się ponownie przy następnej rundzie.", + ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Ktoś grzebał Ci w plecaku |Musisz sobie poradzić z tym co masz pod ręką", + ["Toxic Team"] = "Toksyczny zespół", + ["TrophyRace"] = "TrophyRace", + ["T_T"] = "T_T", + ["Unit 3378"] = "Jednostka 3378", + ["Use your rope to get from start to finish as fast as you can!"] = "Użyj liny by jak najszybciej dotrzec od startu do mety", + ["Victory for the "] = "Zwycięstwo przypadło", + ["You have SCORED!!"] = "Zdobyłeś PUNKT", + ["You've failed. Try again."] = "Przegrałeś. Spróbuj jeszcze raz", + ["You've reached the goal!| |Time: "] = "Dotarłeś do celu!| |Czas: ", + ["'Zooka Team"] = "Bazookinierzy", + }
--- a/share/hedgewars/Data/Locale/pl.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/pl.txt Tue Jan 04 12:53:46 2011 +0100 @@ -42,7 +42,7 @@ 00:39=Latający Talerz 00:40=Koktajl Mołotowa 00:41=Ptaszek -00:42=Podręczne Urządzenie Teleportujące +00:42=Wyrzutnik portali 00:43=Zrzut pianina 00:44=Cuchnący ser 00:45=Sinusoidalna giwera @@ -50,6 +50,8 @@ 00:47=Mina samoprzylepna 00:48=Młotek 00:49=Wskrzeszacz +00:50=Wiertniczy nalot +00:51=Kula błotna 01:00=Walczmy! 01:01=Remis @@ -135,6 +137,12 @@ 02:00=%1 wydał ostatnie tchnienie 02:00=%1 przeszedł do historii 02:00=%1 ewakuował się z tego świata +02:00=%1, machamy na pożegnanie! +02:00=%1 zatruł się ołowiem +02:00=%1 się wykrwawił +02:00=%1 zginął za słuszną sprawę +02:00=%1 zostawił w domu kamizelkę kuloodporną + ; Hog (%1) drowned 02:01=%1 robi za łódź podwodną! @@ -161,7 +169,7 @@ 02:01=%1 czuje, że tonie 02:01=%1 ćwiczy pływanie na plecach 02:01=%1 szuka Titanica -02:01=%1 to z pewnością nie jest Jezus. +02:01=%1, do Jezusa ci jeszcze daleko 02:01=%1 postanowił odnaleźć Nemo! 02:01=%1 wyczuwa przeciek 02:01=Nie uwierzysz ile ich już utonęło! @@ -352,9 +360,10 @@ 02:08=%1 nie wierzy we własne możliwości. 02:08=%1 decyduje się nic nie robić 02:08=%1 pozwala przeciwnikowi zniszczyć się samemu. -02:08=%1 byłby marny w imprezowaniu -02:08=%1 ukrywa się -02:08=%1 skorzystał z okazji +02:08=%1 nie nadaje się na wodzireja... +02:08=%1 się ukrył +02:08=%1 minimalizuje szanse na pudło +02:08=%1 nie skorzystał z okazji 02:08=%1 uważa, że najlepszą rzeczą jaką może zrobić to... nic 02:08=%1 jest mięczakiem 02:08=Niuch, Niuch, %1 śmierdzi tchórzem @@ -415,7 +424,10 @@ 02:09=Nie można się spodziewać by %1 był cały czas perfekcyjny. 02:09=Nie martw się %1, Dikt nie jest noskonały... 02:09=%1 zrobił to celowo. -;02:09=Jeśli ty o tym nie powiesz, ja też dotrzymam tajemnicy %1 +02:09=%1, ta wpadka zostanie między nami +02:09=%1 zapomniał przeczyścić lufę +02:09=%1, te kulki to nie guma do żucia! +02:09=%1, granat po wyjęciu zawleczki przestaje być przyjacielem 02:09=ŻENUA!!! 02:09=Na pewno nikt tego nie zobaczył, %1 02:09=%1 powinien przejrzeć podręcznik walki na froncie... @@ -494,6 +506,7 @@ 03:47=Co Kropelka sklei, sklei... 03:48=Ała! Moja głowa... 03:49=Powrót z zaświatów +03:50=Krecia brygada ; Weapon Descriptions (use | as line breaks) 04:00=Atakuj przeciwników zwykłym granatem.|Wybuchnie kiedy zapalnik skończy odliczanie.|1-5: Ustawia zapalnik|Atak: Przytrzymaj by rzucić z większą siłą @@ -542,8 +555,8 @@ 04:43=Niech twój debiut będzie WYBUCHOWY!|Zrzuć pianino z nieba, ale uważaj!|Ktoś musi na nim grać więc prawdopodobnie będziesz|musiał poświęcić swojego jeża|Kursor: Wybierz cel|F1-F9: Graj na pianinie 04:44=To nie jest zwykły ser. To broń biologiczna!|Wybuch z pewnością nie będzie potężny, ale gdy|licznik dojdzie do zera, chmura gazu zatruje|każdego nieszczęśnika który będzie w pobliżu|1-5: Ustawia zapalnik|Atak: Przytrzymaj by rzucić z większą siłą 04:45=Wszystkie lekcje fizyki w końcu się opłaciły!|Wystrzel niszczącą sinusoidalną falę|która przechodzi przez teren i uderza|w twoich przeciwników|Uważaj! Ta broń ma kopa!|Atak: Strzelaj -04:46=Pokrywa twoich wrogów ognistą powłoką.|Czy koś zamawiał pieczonego jeża?|Atak: Aktywuj|Góra/Dół: Celowanie|Lewo/Prawo: Ustaw prędkość wystrzeliwania -04:47=Podwójna zabawa z podwójną ilością kleistych min.|Spróbuj wywołać reakcję łańcuchową lub chroń|samego siebie (lub obydwie rzeczy na raz!)|Atak: Przytrzymaj by rzucić z większą siłą (dwa razy) +04:46=Pokrywa twoich wrogów ognistą powłoką.|Czy ktoś zamawiał pieczonego jeża?|Atak: Aktywuj|Góra/Dół: Celowanie|Lewo/Prawo: Ustaw prędkość wystrzeliwania +04:47=Podwójna zabawa z podwójną ilością lepkich min.|Spróbuj wywołać reakcję łańcuchową lub chroń|samego siebie (albo zrób obydwie rzeczy na raz!)|Atak: Przytrzymaj by rzucić z większą siłą (dwa razy) 04:48=Czyż walenie jeży po głowach nie|jest zabawne? Dobre uderzenie|z młotka zabierze 1/3 życia|przeciwnika i wkopie go w podłoże|Atak: Uderz 04:49=Wskrześ swoich przyjaciół!|Jednakże uważaj byś nie pomógł swojemu wrogowi.|Atak: Przytrzymaj by powoli przywracać życie|Góra: Przyspiesz wskrzeszanie
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/pt_BR.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,95 @@ +locale = { +-- [":("] = "", +-- ["!!!"] = "", +-- ["A game of luck"] = "", + ["Aiming Practice"] = "Pratique a sua pontaria", --Bazooka, Shotgun, SniperRifle + ["Bat balls at your enemies and|push them into the sea!"] = "Rebata as bolas em direção ao seus|e derrube-os no mar!", + ["Bat your opponents through the|baskets and out of the map!"] = "Rebata seus oponentes para|fora do mapa através dos cestos!", + ["Bazooka Training"] = "Treino com a Bazuca", + ["Best laps per team: "] = "Melhor volta por equipe: ", +-- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = "", +-- ["by mikade"] = "", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag +-- ["CAPTURE THE FLAG"] = "", +-- ["Codename: Teamwork"] = "", +-- ["Congratulations!"] = "", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Parabéns! Você eliminou todos os alvos|dentro do tempo limite.", --Bazooka, Shotgun, SniperRifle +-- ["CONTROL"] = "", +-- ["Control pillars to score points."] = "", +-- ["CONTROL v0.3"] = "", +-- ["CTF_BLIZZARD"] = "", +-- ["CUSTOM BUILD 0.2"] = "", +-- ["Cybernetic Empire"] = "", +-- ["DAMMIT, ROOKIE!"] = "", +-- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", +-- ["Dangerous Ducklings"] = "", +-- ["Eliminate all enemies"] = "", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Destrua todos os alvos antes que o tempo acabe.|Você tem munição infinita para esta missão.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate Poison before the time runs out"] = "", +-- ["Eliminate the Blue Team"] = "", +-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Enjoy the swim..."] = "", + ["Fastest lap: "] = "Volta mais rápida: ", +-- ["Feeble Resistance"] = "", +-- ["Flag captured!"] = "", +-- ["Flag respawned!"] = "", +-- ["Flag returned!"] = "", +-- ["Flags will be placed where each team ends their turn."] = "", +-- ["GAME OVER!"] = "", +-- ["Game Started!"] = "", +-- ["Get on over there and take him out!"] = "", +-- ["Goal:"] = "", +-- ["GO! GO! GO!"] = "", +-- ["Good birdy......"] = "", +-- ["Good luck out there!"] = "", + ["Hedgewars-Basketball"] = "Hedgewars-Basketball", + ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hmmm..."] = "", +-- ["Hooray!"] = "", + ["Hunter"] = "Artilheiro", --Bazooka, Shotgun, SniperRifle +-- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["- Jumping is disabled"] = "", +-- ["Listen up, maggot!!"] = "", +-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["NEW fastest lap: "] = "NOVA volta mais rápida: ", +-- ["NO JUMPING"] = "", + ["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball +-- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "Oh não! O tempo acabou! Tente novamente.", --Bazooka, Shotgun, SniperRifle +-- ["Operation Diver"] = "", +-- ["Opposing Team: "] = "", +-- ["Pathetic Hog #%d"] = "", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle +-- ["Poison"] = "", +-- ["Random Weapons"] = "", +-- [" - 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"] = "", +-- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["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 +-- ["See ya!"] = "", + ["Shotgun Team"] = "Carabineiros", + ["Shotgun Training"] = "Treino com a Escopeta", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s está fora e a Equipe %d|sofreu uma penalidade!| |Pontuação:", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "%s está fora e a Equipe %d|marcou um ponto!| |Pontuação:", -- Basketball, Knockball + ["Sniper Training"] = "Treino com o Rifle Sniper", + ["Sniperz"] = "Franco-Atiradores", +-- ["Spooky Tree"] = "", + ["Team %d: "] = "Equipe %d: ", +-- ["Team Scores:"] = "", +-- ["That was pointless."] = "", +-- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The flag will respawn next round."] = "", +-- ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "", +-- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TrophyRace"] = "TrophyRace", +-- ["T_T"] = "", +-- ["Unit 3378"] = "", + ["Use your rope to get from start to finish as fast as you can!"] = "Use sua corda para ir do início ao fim o mais rápido que você puder!", +-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["You have SCORED!!"] = "", +-- ["You've failed. Try again."] = "", +-- ["You've reached the goal!| |Time:"] = "", + ["You've reached the goal!| |Time: "] = "Você alcançou o objetivo!| |Tempo: ", + ["'Zooka Team"] = "Bazuqueiros", + }
--- a/share/hedgewars/Data/Locale/pt_BR.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/pt_BR.txt Tue Jan 04 12:53:46 2011 +0100 @@ -50,6 +50,8 @@ 00:47=Mina Adesiva 00:48=Martelo 00:49=Ressucitador +00:50=Ataque Perfurador +00:51=Bola de Lama 01:00=Hora de lutar! 01:01=Partida empatou @@ -65,6 +67,7 @@ 01:11=Esta arma ou utilidade ainda não está disponível 01:12=Último round antes da Morte Súbita! 01:13=%1 rounds até a Morte Súbita +01:14=Se prepare, %1! ; Event messages ; Hog (%1) died @@ -87,6 +90,9 @@ 02:00=%1 foi embora para Passárgada 02:00=%1 foi comprar cigarros 02:00=%1 empacotou +02:00=%1 não aguentou o tranco +02:00=%1 será conhecido postumamente +02:00=%1 balbuceou palavras incompreensíveis ; Hog (%1) drowned 02:01=%1 bebeu água até não poder mais @@ -280,6 +286,8 @@ 03:47=Grudenta 03:48=Tanto bate até que fura! 03:49=Faz o que você imagina +03:50=Contra covardes +03:51=Devagar, e sempre.... ; Weapon Descriptions (use | as line breaks) 04:00=Ataque seus inimigos usando uma granada simples|Ela explodirá assim que o tempo passar|1-5: Escolha o tempo da granada|Ataque: Quanto mais tempo, mais forte o lançamento.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/pt_PT.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,95 @@ +locale = { +-- [":("] = "", +-- ["!!!"] = "", +-- ["A game of luck"] = "", + ["Aiming Practice"] = "Pratica a tua pontaria", --Bazooka, Shotgun, SniperRifle + ["Bat balls at your enemies and|push them into the sea!"] = "Bate bolas contra os teus|enimigos e empurra-os ao mar!", + ["Bat your opponents through the|baskets and out of the map!"] = "Bate os teus adversarios|fora do mapa acertando com eles no cesto!", + ["Bazooka Training"] = "Treino com Bazuca", + ["Best laps per team: "] = "Melhores voltas por equipa: ", +-- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = "", +-- ["by mikade"] = "", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag +-- ["CAPTURE THE FLAG"] = "", +-- ["Codename: Teamwork"] = "", +-- ["Congratulations!"] = "", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Parabéns! Eliminaste todos os alvos|dentro do tempo limite.", --Bazooka, Shotgun, SniperRifle +-- ["CONTROL"] = "", +-- ["Control pillars to score points."] = "", +-- ["CONTROL v0.3"] = "", +-- ["CTF_BLIZZARD"] = "", +-- ["CUSTOM BUILD 0.2"] = "", +-- ["Cybernetic Empire"] = "", +-- ["DAMMIT, ROOKIE!"] = "", +-- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", +-- ["Dangerous Ducklings"] = "", +-- ["Eliminate all enemies"] = "", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Destrói todos os alvos antes do tempo terminar.|Tens munições infinitas para esta missão.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate Poison before the time runs out"] = "", +-- ["Eliminate the Blue Team"] = "", +-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Enjoy the swim..."] = "", + ["Fastest lap: "] = "Volta mais rápida: ", +-- ["Feeble Resistance"] = "", +-- ["Flag captured!"] = "", +-- ["Flag respawned!"] = "", +-- ["Flag returned!"] = "", +-- ["Flags will be placed where each team ends their turn."] = "", +-- ["GAME OVER!"] = "", +-- ["Game Started!"] = "", +-- ["Get on over there and take him out!"] = "", +-- ["Goal:"] = "", +-- ["GO! GO! GO!"] = "", +-- ["Good birdy......"] = "", +-- ["Good luck out there!"] = "", + ["Hedgewars-Basketball"] = "Hedgewars-Basketball", + ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hmmm..."] = "", +-- ["Hooray!"] = "", + ["Hunter"] = "Comando", --Bazooka, Shotgun, SniperRifle +-- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["- Jumping is disabled"] = "", +-- ["Listen up, maggot!!"] = "", +-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["NEW fastest lap: "] = "NOVA volta recorde: ", +-- ["NO JUMPING"] = "", + ["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball +-- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "Oh não! Acabou o tempo! Tenta novamente.", --Bazooka, Shotgun, SniperRifle +-- ["Operation Diver"] = "", +-- ["Opposing Team: "] = "", +-- ["Pathetic Hog #%d"] = "", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle +-- ["Poison"] = "", +-- ["Random Weapons"] = "", +-- [" - 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"] = "", +-- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["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 +-- ["See ya!"] = "", + ["Shotgun Team"] = "Caçadores", + ["Shotgun Training"] = "Treino com Caçadeira", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s está fora e a equipa %d|perde um ponto!| |Pontuação:", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "%s está fora e a equipa %d|soma um ponto!| |Pontuação:", -- Basketball, Knockball + ["Sniper Training"] = "Treino com Sniper", +-- ["Sniperz"] = "", +-- ["Spooky Tree"] = "", + ["Team %d: "] = "Equipa %d: ", +-- ["Team Scores:"] = "", +-- ["That was pointless."] = "", +-- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The flag will respawn next round."] = "", +-- ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "", +-- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TrophyRace"] = "TrophyRace", +-- ["T_T"] = "", +-- ["Unit 3378"] = "", + ["Use your rope to get from start to finish as fast as you can!"] = "Utilizando a corda, percorre o percurso do inicio ao fim o mais rápido que conseguires!", +-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["You have SCORED!!"] = "", +-- ["You've failed. Try again."] = "", +-- ["You've reached the goal!| |Time:"] = "", + ["You've reached the goal!| |Time: "] = "Chegaste ao fim!| |Tempo: ", + ["'Zooka Team"] = "Bazuqueiros", + }
--- a/share/hedgewars/Data/Locale/pt_PT.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/pt_PT.txt Tue Jan 04 12:53:46 2011 +0100 @@ -50,6 +50,8 @@ 00:47=Mina Pegajosa 00:48=Martelo 00:49=Ressuscitador +00:50=Ataque Perfurador +00:51=Bola de Lama 01:00=Vamos lutar! 01:01=Ronda empatada @@ -431,6 +433,7 @@ 03:47=Cola-as onde achares mais útil! 03:48=Garantia vitalícia! 03:49=Funciona tal como anunciado +03:50=Coleccionador de toupeiras ; Weapon Descriptions (use | as line breaks) 04:00=Ataca os teus inimigos usando uma simples granada.|Explodirá quando o tempo chegar a zero.|1-5: Define o temporizador da granada|Ataque: Deixa premido para lançar com mais força
--- a/share/hedgewars/Data/Locale/ru.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/ru.txt Tue Jan 04 12:53:46 2011 +0100 @@ -210,7 +210,7 @@ 03:10=БУМ! 03:11=Поимел! 03:12=Боевые Исскуства -03:13=Неиспользуется +03:13=Не используется 03:14=Инструмент для перемещения 03:15=Атака с воздуха 03:16=Атака с воздуха @@ -252,9 +252,9 @@ 04:08=Держи своих врагов на расстоянии,|бросая мины в узкие проходы или|прямо им под ноги. Убедись, что отступил,|пока мина не сработала рядом с тобой!|Attack: Бросить мину рядом с собой 04:09=Не уверен, что хорошо прицелился?|Используй пистолет Desert Eagle|с возможностью сделать до четырех|выстрелов за ход.|Attack: Выстрелить (несколько раз) 04:10=Грубая сила всегда была в цене.|Брось эту классическую взрывчатку|возле своих врагов и убегай.|Attack: Бросить динамит рядом с собой -04:11=Избавься от вражеских ежей с помощью|подачи битой, отправив их за край карты|или в воду. Или как насчет отправить ударом|одну из мин на карте в подарок своим друзьям?|Attack: Нанести удар по всему, что стоит перед тобой -04:12=Стань лицом к лицу со своим врагом,|чтобы обрушить на него всю мошь|смертоносной техники боевых исскуств.|Attack: Исполнить Неистовый Удар -04:13=Неиспользуется +04:11=Избавься от вражеских ежей с помощью|подачи битой, отправив их за край карты|или в воду. Или как насчет того, чтобы отправить ударом|одну из мин на карте в подарок своим друзьям?|Attack: Нанести удар по всему, что стоит перед тобой +04:12=Стань лицом к лицу со своим врагом,|чтобы обрушить на него всю мощь|смертоносной техники боевых исскуств.|Attack: Исполнить Неистовый Удар +04:13=Не используется 04:14=Боишься высоты? Тогда возьми парашут.|Он раскроется, как только ты начнешь слишком|долго падать, и тем самым убережет ежа|от падения с большой высоты.|Attack: Раскрыть парашут|Long Jump: Сбросить гранаты или похожее вооружение 04:15=Вызови самолет, чтобы атаковать своих врагов|с помощью воздушной бомбардировки.|Left/Right: Определить направление атаки|Cursor: Выбрать бомбардируемую область 04:16=Вызови самолет, чтобы сбросить несколько мин|в заданной области.|Left/Right: Определить направление атаки|Cursor: Выбрать минируемую область
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/sk.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,95 @@ +locale = { + [":("] = ":(", + ["!!!"] = "!!!", + ["A game of luck"] = "Hra o šťastí", + ["Aiming Practice"] = "Tréning presnosti", --Bazooka, Shotgun, SniperRifle + ["Bat balls at your enemies and|push them into the sea!"] = "Loptami triafajte vašich nepriateľov|a zhoďte ich tak do mora!", + ["Bat your opponents through the|baskets and out of the map!"] = "Odpálkujte vašich súperov do koša|a von z mapy!", + ["Bazooka Training"] = "Tréning s bazukou", + ["Best laps per team: "] = "Najrýchlejšie kolá podľa tímov: ", + ["Bloody Rookies"] = "Mizerní zelenáči", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree + ["Boom!"] = "Bum!", + ["by mikade"] = "napísal mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag + ["CAPTURE THE FLAG"] = "ZMOCNITE SA VLAJKY", + ["Codename: Teamwork"] = "Kódové meno: Teamová práca", + ["Congratulations!"] = "Gratulujem!", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulujem! Zneškodnili ste všetky ciele|v stanovenom čase.", --Bazooka, Shotgun, SniperRifle + ["CONTROL"] = "OVLÁDNUTIE", + ["Control pillars to score points."] = "Ovládnite piliere, aby ste skórovali", + ["CONTROL v0.3"] = "OVLÁDNUTIE v0.3", + ["CTF_BLIZZARD"] = "CTF_METELICA", + ["CUSTOM BUILD 0.2"] = "VLASTNÉ ZOSTAVENIE 0.2", + ["Cybernetic Empire"] = "Kybertnetické impérium", + ["DAMMIT, ROOKIE!"] = "Prekliaty zelenáč!", + ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Do kelu s tebou, zelenáč! Okamžite mi zlez z hlavy!", + ["Dangerous Ducklings"] = "Nebezpečné kačiatka", + ["Eliminate all enemies"] = "Zneškodnite všetkých nepriateľov", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Zneškodnite všetky ciele pred vypršaním času.|Na túto misiu máte neobmedzené množstvo streliva.", --Bazooka, Shotgun, SniperRifle + ["Eliminate Poison before the time runs out"] = "Zneškodnite Poisona pred tým, ako vyprší čas", + ["Eliminate the Blue Team"] = "Zneškodnite modrý tím", + ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Zneškodnite Jednotku 3378|- Slabý odpor musí prežiť", + ["Enjoy the swim..."] = "Užite si plávanie...", + ["Fastest lap: "] = "Najrýchlejšie kolo: ", + ["Feeble Resistance"] = "Slabý odpor", + ["Flag captured!"] = "Získaná vlajka!", + ["Flag respawned!"] = "Vlajka obnovená!", + ["Flag returned!"] = "Vlajka vrátená!", + ["Flags will be placed where each team ends their turn."] = "Vlajky budu umiestnené po skončení tohto ťahu", + ["GAME OVER!"] = "KONIEC HRY!", + ["Game Started!"] = "Hra začala!", + ["Get on over there and take him out!"] = "Okamžite poď sem a dostaň ho!", + ["Goal:"] = "Cieľ:", + ["GO! GO! GO!"] = "POĎ! POĎ! POĎ!", + ["Good birdy......"] = "Dobrý vtáčik......", + ["Good luck out there!"] = "Veľa šťastia!", + ["Hedgewars-Basketball"] = "Hedgewars-Basketbal", + ["Hedgewars-Knockball"] = "Hedgewars-Knockball", + ["Hmmm..."] = "Hmm..", + ["Hooray!"] = "Hurá!", + ["Hunter"] = "Lovec", --Bazooka, Shotgun, SniperRifle + ["Instructor"] = "Inštruktor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings + ["- Jumping is disabled"] = "- Skákanie je vypnuté", + ["Listen up, maggot!!"] = "Počúvaj, ty biedny červ!", + ["|- Mines Time:"] = "|- Časovač pre míny:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION FAILED"] = "MISIA NEÚSPEŠNÁ", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION SUCCESSFUL"] = "MISIA ÚSPEŠNÁ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["NEW fastest lap: "] = "NOVÉ najrýchlejšie kolo: ", + ["NO JUMPING"] = "ŽIADNE SKÁKANIE", + ["Not So Friendly Match"] = "Nie tak celkom priateľský zápas", -- Basketball, Knockball + ["Oh no! Just try again!"] = "Áále nie! Tak to skúste znovu!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "Áále nie! Čas vypršal! Tak to skúste znovu.", --Bazooka, Shotgun, SniperRifle + ["Operation Diver"] = "Operácia Potápač", + ["Opposing Team: "] = "Nepriateľský tím", + ["Pathetic Hog #%d"] = "Žalostný ježko #%d", + ["points"] = "body", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle + ["Poison"] = "Poison", + ["Random Weapons"] = "Náhodné zbrane", + [" - 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"] = " - Skórujete prinesením nepriateľskej vlajky do vašej základne | - Prvý tím, ktorý dosiahne 3 body, vyhráva | - Skórujete len vtedy, keď je máte svoju vlajku v základni | - Spadnuté vlajky môžu byť vrátené na základňu alebo sa ich môže zmocniť súpere | - Ježkovia po smrti ožiujú", + ["RULES OF THE GAME [Press ESC to view]"] = "PRAVIDLÁ HRY [Stlačte Esc pre ich zobrazenie]", + ["sec"] = "sek", -- 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 + ["See ya!"] = "Tak zatiaľ!", + ["Shotgun Team"] = "Shotgun tím", + ["Shotgun Training"] = "Tréning s brokovnicou", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s je mimo hru a tím %d|dostal trestný bod!| |Skóre:", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "%s je mimo hru a tím %d|získal bod!| |Skóre:", -- Basketball, Knockball + ["Sniper Training"] = "Tréning pre ostreľovačov", + ["Sniperz"] = "Ostreľovači", + ["Spooky Tree"] = "Strašidelný strom", + ["Team %d: "] = "Tím %d: ", + ["Team Scores:"] = "Tím skóruje:", + ["That was pointless."] = "To bolo zbytočné.", + ["The enemy is hiding out on yonder ducky!"] = "Nepriateľ sa schováva na tamtej kačičke!", + ["The flag will respawn next round."] = "V ďalšom kole sa obnoví vlajka.", + ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Niekto rozhádzal vašu výbavu a teraz|musíte použiť len to, čo vám ostalo!", + ["Toxic Team"] = "Toxic tím", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TrophyRace"] = "Preteky o trofej", + ["T_T"] = "T_T", + ["Unit 3378"] = "Jednotka 3378", + ["Use your rope to get from start to finish as fast as you can!"] = "Použite lano na presun zo štartovnej pozície do cieľa tak rýchlo, ako to len viete!", + ["Victory for the "] = "Víťazstvo pre", -- CTF_Blizzard, Capture_the_Flag + ["You have SCORED!!"] = "SKÓROVALI ste!!", + ["You've failed. Try again."] = "Neuspeli ste. Skúste to znova.", + ["You've reached the goal!| |Time:"] = "Dosiahli ste cieľ!| |Čas:", + ["You've reached the goal!| |Time: "] = "Dosiahli ste cieľ!| |Čas: ", + ["'Zooka Team"] = "Bazuka tím", + }
--- a/share/hedgewars/Data/Locale/sk.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/sk.txt Tue Jan 04 12:53:46 2011 +0100 @@ -50,6 +50,8 @@ 00:47=Lepkavá mína 00:48=Kladivo 00:49=Oživovač +00:50=Útok raketovými vŕtačkami +00:51=Blatová guľa 01:00=Do boja! 01:01=Remíza @@ -93,6 +95,7 @@ 02:00=Škoda, že %1 nemá ešte jeden život 02:00=%1 odišiel za lepším 02:00=%1 už nespotrebováva pamäť tohto počítača +02:00=%1 odišiel a už sa nevrátil ; Ježko (%1) sa utopil 02:01=%1 sa hrá na ponorku! 02:01=%1 napodobnil Titanik! @@ -238,7 +241,7 @@ 03:41=Skalný fanúšik škriekania 03:42=Tu si urobím poznámku... 03:43=Zahrať Beathovenovu smrteľnú sonátu -03:44=Spotrebovať do: 1923 +03:44=Spotrebujte do: 1923 03:45=Sila vedy 03:46=Hot Hot Hot! 03:47=Prilepte ich niekam šikovne! @@ -253,14 +256,14 @@ 04:04=Zaútočte na vašich nepriateľov brokovnicou s dvoma|výstrelmi. Vďaka jej rozptylu nepotrebujete|zasiahnuť protivníkov priamym zásahom|Útok: Výstrel (viacnásobný)| 04:05=Rýchlo pod zem! Použite zbíjačku na vyvŕtanie|dieri v zemi a dosiahnutie ďalších miest.|Útok: Začatie alebo skončenie vŕtania| 04:06=Unudený? Útok nie je možný? Chcete ušetriť náboje?|Nie je problém! Stačí preskočiť ťah, zbabelec!|Útok: Ukončí ťah bez boja| -04:07=Zdolajte veľké vzdialenosti pomocou dobre|načasovaných výstrelov lana. Využite zotrvačnosť|na posúvanie ostatných ježkov alebo z výšky|zhadzujte bomby a iné zbrane|Útok: Vystrelenie alebo pustenie sa lana Dlhý|skok: Zhodenie granátov alebo podobných zbraní| +04:07=Zdolajte veľké vzdialenosti pomocou dobre|načasovaných výstrelov lana. Využite zotrvačnosť|na posúvanie ostatných ježkov alebo z výšky|zhadzujte bomby a iné zbrane|Útok: Vystrelenie alebo pustenie sa lana|Dlhý skok: Zhodenie granátov alebo podobných zbraní| 04:08=Udržujte nepriateľov v bezpečnej vzdialenosti|položením míny na rovinu alebo priamo pod nich.|Uistite sa, že ste v dostatočnej vzdialenosti, keď|sa aktivujú!|Útok: Položí mínu na vašu aktuálnu pozíciu| 04:09=Nie ste si istý svojou muškou? Použite Desert|Eagle, ktorý má až štyri výstrely.|Útok: Výstrel (viacnásobný)| 04:10=Útok hrubou silou sa dá použiť vždy. Umiestnite|túto klasickú trhavinu vedľa vášho nepriateľa a|vzdiaľte sa.|Útok: Položí mínu na vašu aktuálnu pozíciu| 04:11=Zbavte sa nepriateľských ježkov tak, že ich|odpálkujete mimo hranice mapy alebo do vody. Alebo|máte chuť svojim kamarátom poslať nejaké míny?|Útok: Odpálkuje čokoľvek, čo stojí pred vami| 04:12=Aby ste mohli použiť túto takmer smrtiacu techniku|bojového umenia musíte stáť blízko nepriateľa.|Útok: Vykoná Úder ohňa| 04:13=UNUSED| -04:14=Máte strach z výšok? Radšej si vezmite padák. Sám|sa otvorí, keď spadnete príliš hlboko a uchráni|vášho ježka pred zranením pádom.|Útok: Otvorenie padáku Dlhý skok: Zhodenie|granátov alebo podobných zbraní| +04:14=Máte strach z výšok? Radšej si vezmite padák. Sám|sa otvorí, keď spadnete príliš hlboko a uchráni|vášho ježka pred zranením pádom.|Útok: Otvorenie padáku|Dlhý skok: Zhodenie granátov alebo podobných zbraní| 04:15=Privolajte leteckú podporu a zdecimujte vašich|nepriateľov bombardovaním.|Vľavo/Vpravo: Určenie smeru útoku|Kurzor: Výber cieľa bombardovania| 04:16=Privolajte leteckú podporu, ktorá do cieľovej|oblasti vypustí niekoľko mín.|Vľavo/Vpravo: Určenie smeru útoku|Kurzor: Výber cieľa útoku| 04:17=Hľadáte úkryt? Použitie lampu na vyhĺbenie tunela|do zeme, ktorá vám poskytne ochranu.|Útok: Začatie alebo skončenie kopania| @@ -274,10 +277,10 @@ 04:25=Použite túto maskovaciu súpravu, aby ste prinútili|nepriateľských ježkov skočiť smerom k vášmu|ježkovi (do vody alebo priepasti).|Útok: Použije súpravu a skúsi zviesť iného ježka| 04:26=Hodí tento šťavnatý melón na vašich nepriateľov.|Po vypršaní časomiery sa rozpadne na niekoľko|vybuchujúcich kúskov.|1‐5: Nastaví časovač melóna|Útok: Držanie tlačidla zvyšuje silu hodu| 04:27=Zošlite pekelné plamene na vašich súperov vďaka|tejto nepriateľskej výbušnine. Nezostaňte príliš|blízko k explózii, pretože malé plamienky môžu|horieť dlhšie.|Útok: Držanie tlačidla zvyšuje silu hodu| -04:28=Chvíľku po vypustení tejto rakety sa začne|prevŕtavať do zeme a vybuchne vtedy, keď vyprší|jej časová poistka alebo sa objaví znova na|povrchu.|Útok: Držanie tlačidla zvyšuje silu výstrelu| +04:28=Chvíľku po vypustení sa táto raketa začne|prevŕtavať do zeme a vybuchne vtedy, keď vyprší|jej časová poistka alebo sa objaví znova na|povrchu.|Útok: Držanie tlačidla zvyšuje silu výstrelu| 04:29=Toto nie je nič pre malé deti! Loptičkový guľomet|vypáli množstvo malých farebných guličiek|naplnených výbušninami.|Útok: Výstrel v plnej sile|Hore/Dole: Mierenie počas pálenia guličiek| -04:30=Privolajte leteckú podporu, ktorá spustí silný|napalmový útok. S dobrým mierením dokáže tento|útok odstrániť veľké časti krajiny vrátane ježkov,|ktorý majú smolu v tom, že na nej stoja.|Vľavo/Vpravo: Určenie smeru útoku|Kurzor: Výber cieľovej oblasti| -04:31=Bezpilotný bombardér je ideálnou zbraňou na|pozbieranie krabíc alebo na zaútočenie ježkov,|ktorí sú príliš ďaleko. Buď ho navigujte priamo na|nepriateľov alebo najprv zhoďte zopár bômb.|Útok: Vypustenie lietadla alebo zhodenie bômb Dlhý|skok: Umožní vstup do boja valkýram|Hore/Dole: Navigovanie lietadla| +04:30=Privolajte leteckú podporu, ktorá vypustí silný|napalmový útok. S dobrým mierením dokáže tento|útok odstrániť veľké časti krajiny vrátane ježkov,|ktorý majú smolu v tom, že na nej stoja.|Vľavo/Vpravo: Určenie smeru útoku|Kurzor: Výber cieľovej oblasti| +04:31=Bezpilotný bombardér je ideálnou zbraňou na|pozbieranie krabíc alebo na zaútočenie na ježkov,|ktorí sú príliš ďaleko. Buď ho navigujte priamo na|nepriateľov alebo najprv zhoďte zopár bômb.|Útok: Vypustenie lietadla alebo zhodenie bômb|Dlhý skok: Umožní vstup do boja valkýram|Hore/Dole: Navigovanie lietadla| 04:32=Nízka gravitácia je účinnejšia ako ktorákoľvek|diéta! Skáčte vyššie a ďalej alebo nechajte vašich|nepriateľov letieť ešte ďalej.|Útok: Aktivácia| 04:33=Niekedy všetko čo potrebujete je len o trošku|väčšia sila, aby ste spôsobili ešte väčšiu škodu.|Útok: Aktivácia| 04:34=Nedotýkaj sa ma!|Útok: Aktivácia| @@ -285,7 +288,7 @@ 04:36=No, niekedy proste nemáte mušku. Zapnite si|podporu mierenia, ktorá podporuje najmodernejšie|technológie.|Útok: Aktivácia| 04:37=Nebojte sa denného svetla. Vydrží len jeden ťah,|ale umožní vám vstrebať škodu, ktorú spôsobíte|iným ježkom.|Útok: Aktivácia| 04:38=Ostreľovačka dokáže byť najdrvivejšou zbraňou v|celom vašom arzenále, je však veľmi neefektívna|pre blízke ciele. Škoda, ktorú spôsobí sa zvyšuje|so zvyšujúcou sa vzdialenosťou k cieľu.|Útok: Výstrel (dvakrát)| -04:39=Preleťte na iné miesta mapy v lietajúcom tanieri.|Táto komplikovane sa ovládajúca pomôcka je schopná|vás preniesť na takmer akúkoľvek pozíciu na mape.|Útok: Aktivácia|Hore/Vľavo/Vpravo: Použiť silu v jednom smere Dlhý|skok: Zhodiť granáty alebo iné zbrane| +04:39=Preleťte na iné miesta mapy v lietajúcom tanieri.|Táto komplikovane sa ovládajúca pomôcka je schopná|vás preniesť na takmer akúkoľvek pozíciu na mape.|Útok: Aktivácia|Hore/Vľavo/Vpravo: Použiť silu v jednom smere|Dlhý skok: Zhodiť granáty alebo iné zbrane| 04:40=Podpáľte kúsok zeme použitím tejto fľaše naplnenej|zápalnou tekutinou.|Útok: Držanie tlačidla zvyšuje silu hodu| 04:41=Dôkaz, že príroda môže dokonca predčiť lietajúci|tanier. Vtáčisko dokáže niesť vášho ježka a znášať|vajcia na vašich nepriateľov!|Útok: Aktivácia a zhadzovanie vajec|Hore/Vľavo/Vpravo: Mávanie krídiel v jednom smere| 04:42=Toto prenosné portálové zariadenie je schopné|okamžite preniesť vás, vašich nepriateľov alebo|zbrane medzi miestami na mape. Použite ho rozvážne|a vaše ťaženie bude... OBROVSKÝM ÚSPECHOM|Útok: Vystrelenie portálu|Prepnutie: Rotovanie portálových farieb|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/stub.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,94 @@ +locale = { +-- [":("] = "", +-- ["!!!"] = "", +-- ["A game of luck"] = "", +-- ["Aiming Practice"] = "", --Bazooka, Shotgun, SniperRifle +-- ["Bat balls at your enemies and|push them into the sea!"] = "", +-- ["Bat your opponents through the|baskets and out of the map!"] = "", +-- ["Bazooka Training"] = "", +-- ["Best laps per team: "] = "", +-- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = "", +-- ["by mikade"] = "", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag +-- ["CAPTURE THE FLAG"] = "", +-- ["Codename: Teamwork"] = "", +-- ["Congratulations!"] = "", +-- ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "", --Bazooka, Shotgun, SniperRifle +-- ["CONTROL"] = "", +-- ["Control pillars to score points."] = "", +-- ["CONTROL v0.3"] = "", +-- ["CTF_BLIZZARD"] = "", +-- ["CUSTOM BUILD 0.2"] = "", +-- ["Cybernetic Empire"] = "", +-- ["DAMMIT, ROOKIE!"] = "", +-- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", +-- ["Dangerous Ducklings"] = "", +-- ["Eliminate all enemies"] = "", +-- ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate Poison before the time runs out"] = "", +-- ["Eliminate the Blue Team"] = "", +-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Enjoy the swim..."] = "", +-- ["Fastest lap: "] = "", +-- ["Feeble Resistance"] = "", +-- ["Flag captured!"] = "", +-- ["Flag respawned!"] = "", +-- ["Flag returned!"] = "", +-- ["Flags will be placed where each team ends their turn."] = "", +-- ["GAME OVER!"] = "", +-- ["Game Started!"] = "", +-- ["Get on over there and take him out!"] = "", +-- ["Goal:"] = "", +-- ["GO! GO! GO!"] = "", +-- ["Good birdy......"] = "", +-- ["Good luck out there!"] = "", +-- ["Hedgewars-Basketball"] = "", +-- ["Hedgewars-Knockball"] = "", +-- ["Hmmm..."] = "", +-- ["Hooray!"] = "", +-- ["Hunter"] = "", --Bazooka, Shotgun, SniperRifle +-- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["- Jumping is disabled"] = "", +-- ["Listen up, maggot!!"] = "", +-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["NEW fastest lap: "] = "", +-- ["NO JUMPING"] = "", +-- ["Not So Friendly Match"] = "", -- Basketball, Knockball +-- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no! Time's up! Just try again."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Operation Diver"] = "", +-- ["Opposing Team: "] = "", +-- ["Pathetic Hog #%d"] = "", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle +-- ["Poison"] = "", +-- ["Random Weapons"] = "", +-- [" - 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"] = "", +-- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["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 +-- ["See ya!"] = "", +-- ["Shotgun Team"] = "", +-- ["Shotgun Training"] = "", +-- ["%s is out and Team %d|scored a penalty!| |Score:"] = "", -- Basketball, Knockball +-- ["%s is out and Team %d|scored a point!| |Score:"] = "", -- Basketball, Knockball +-- ["Sniper Training"] = "", +-- ["Sniperz"] = "", +-- ["Spooky Tree"] = "", +-- ["Team %d: "] = "", +-- ["Team Scores:"] = "", +-- ["That was pointless."] = "", +-- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The flag will respawn next round."] = "", +-- ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "", +-- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["TrophyRace"] = "", +-- ["T_T"] = "", +-- ["Unit 3378"] = "", +-- ["Use your rope to get from start to finish as fast as you can!"] = "", +-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["You have SCORED!!"] = "", +-- ["You've failed. Try again."] = "", +-- ["You've reached the goal!| |Time: "] = "", +-- ["'Zooka Team"] = "", + }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/sv.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,94 @@ +locale = { + [":("] = ":(", + ["!!!"] = "!!!", + ["A game of luck"] = "Ett lyckospel", + ["Aiming Practice"] = "Siktesövning", --Bazooka, Shotgun, SniperRifle + ["Bat balls at your enemies and|push them into the sea!"] = "Slå bollar mot dina fiender|och slå ner dem i havet", + ["Bat your opponents through the|baskets and out of the map!"] = "Slå ner dina motståndare i|korgarna och ut ur kartan!", + ["Bazooka Training"] = "Bazookaträning", + ["Best laps per team: "] = "Bästa varv per lag: ", + ["Bloody Rookies"] = "Blodiga gröngölingar", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree + ["Boom!"] = "Bom!", + ["by mikade"] = "av mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag + ["CAPTURE THE FLAG"] = "CAPTURE THE FLAG", + ["Codename: Teamwork"] = "Kodnamn: Lagarbete", + ["Congratulations!"] = "Grattis!", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Grattis! Du har förstört alla målen inom den|tillåtna tidsramen.", --Bazooka, Shotgun, SniperRifle + ["CONTROL"] = "KONTROLL", + ["Control pillars to score points."] = "Kontrollera pelare för att ta poäng", + ["CONTROL v0.3"] = "KONTROLL v0.3", + ["CTF_BLIZZARD"] = "CTF_BLIZZARD", + ["CUSTOM BUILD 0.2"] = "SPECIALVERSION 0.2", + ["Cybernetic Empire"] = "Robotriket", + ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "SATAN, GRÖNGÖLING! SLUTA TJATA!", + ["DAMMIT, ROOKIE!"] = "SATAN, GRÖNGÖLING!", + ["Dangerous Ducklings"] = "Farliga ankungar", + ["Eliminate all enemies"] = "Förgör alla fiender", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Förstör alla målen innan din tid tar slut.|Du har obegränsad ammunition för deta uppdrag", --Bazooka, Shotgun, SniperRifle + ["Eliminate Poison before the time runs out"] = "Förgör Gift innan tiden tar slut", + ["Eliminate the Blue Team"] = "Förgör det Blå laget", + ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Förgör Enhet 3378 |- Klent motstånd måste överleva", + ["Enjoy the swim..."] = "Ha en trevlig simtur...", + ["Fastest lap: "] = "Snabbast varv: ", + ["Feeble Resistance"] = "Klent motstånd", + ["Flag captured!"] = "Flagga tagen!", + ["Flag respawned!"] = "Flagga återställd!", + ["Flag returned!"] = "Flagga återvänd!", + ["Flags will be placed where each team ends their turn."] = "Flaggor kommer att placeras där varje lag avslutar sin tur.", + ["GAME OVER!"] = "SPELET ÄR SLUT!", + ["Game Started!"] = "Spel startat!", + ["Get on over there and take him out!"] = "Ta dig bort där och gör dig av med honom!", + ["Goal:"] = "Mål:", + ["GO! GO! GO!"] = "Kör! Kör! Kör!", + ["Good birdy......"] = "Fin fågel......", + ["Good luck out there!"] = "Lycka till där ute!", + ["Hedgewars-Basketball"] = "Hedgewars-Basket", + ["Hedgewars-Knockball"] = "Hedgewars-Knockball", + ["Hmmm..."] = "Hmmm...", + ["Hooray!"] = "Hurra!", + ["Hunter"] = "Jägare", --Bazooka, Shotgun, SniperRifle + ["Instructor"] = "Instruktör", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings + ["- Jumping is disabled"] = "- Hoppande är avaktiverat", + ["Listen up, maggot!!"] = "Hör här, ynkrygg!!", + ["|- Mines Time:"] = "|- Mintid:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION FAILED"] = "UPPDRAG MISSLYCKADES", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION SUCCESSFUL"] = "UPPDRAG SLUTFÖRT", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["NEW fastest lap: "] = "NYTT snabbast varv: ", + ["NO JUMPING"] = "INGET HOPPANDE", + ["Not So Friendly Match"] = "En inte så vänlig match", -- Basketball, Knockball + ["Oh no! Just try again!"] = "Å nej! Bara att försöka igen!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "Åh nej! Tiden är ute! Pröva igen.", --Bazooka, Shotgun, SniperRifle + ["Operation Diver"] = "Operationens dykare", + ["Opposing Team: "] = "Motståndarlag: ", + ["Pathetic Hog #%d"] = "Patetisk kott #%d", +-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle + ["Poison"] = "Gift", + ["Random Weapons"] = "Slumpade vapen", + [" - 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"] = " - Återvänd med fiendens flagga till din bas för att ta poäng | - Första laget till tre vinner | - Du kan bara ta poäng när din egen flagga är i basen | - Kottar tappar flaggan när de dödas eller drunknar | - Tappade flaggor kan tas tillbaka eller fångas | - Kottar kommer tillbaka när de dör", + ["RULES OF THE GAME [Press ESC to view]"] = "SPELREGLER [Tryck ESC för att se]", + ["sec"] = "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 + ["See ya!"] = "Ses!", + ["Shotgun Team"] = "Hagelgevärslaget", + ["Shotgun Training"] = "Hagelgevärsträning", + ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s är ute och lag %d|fick ett straff!| |Poängställning:", -- Basketball, Knockball + ["%s is out and Team %d|scored a point!| |Score:"] = "%s är ute och lag %d|fick ett poäng!| |Poängställning:", -- Basketball, Knockball + ["Sniper Training"] = "Prickskyttesträning", + ["Sniperz"] = "Prickskyttarna", + ["Spooky Tree"] = "Kusligt träd", + ["Team %d: "] = "Lag %d: ", + ["Team Scores:"] = "Lagresultat:", + ["That was pointless."] = "Det där var meningslöst.", + ["The enemy is hiding out on yonder ducky!"] = "Fienden gömmer sig på andra ankan!", + ["The flag will respawn next round."] = "Flaggan kommer tillbaka nästa runda.", + ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Det har uppstått ett missförstånd om din utrustning|och nu måste du använda vad du kan hitta!", + ["Toxic Team"] = "Förgiftade laget", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TrophyRace"] = "TrophyRace", + ["T_T"] = "T_T", + ["Unit 3378"] = "Enhet 3378", + ["Use your rope to get from start to finish as fast as you can!"] = "Använd ditt rep för att ta dig från start till mål så fort som möjligt!", + ["Victory for the "] = "Vinst för", -- CTF_Blizzard, Capture_the_Flag + ["You have SCORED!!"] = "Du har tagit poäng!", + ["You've failed. Try again."] = "Du har misslyckats. Försök igen.", + ["You've reached the goal!| |Time: "] = "Du har nått målet!| |Tid: ", + ["'Zooka Team"] = "Bazookalaget", + }
--- a/share/hedgewars/Data/Locale/uk.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/uk.txt Tue Jan 04 12:53:46 2011 +0100 @@ -3,7 +3,7 @@ 00:00=Граната 00:01=Кластерна бомба 00:02=Базука -00:03=Наводима Бджілка +00:03=Навідна Бджілка 00:04=Рушниця 00:05=Відбійний молоток 00:06=Пропустити хід @@ -42,10 +42,15 @@ 00:39=Літаюча тарілка 00:40=Коктейль Молотова 00:41=Пташечка -00:42=Portable Portal Device -00:43=Piano Strike -00:44=Gas grenade -00:45=Sine Gun +00:42=Портативний портал +00:43=Напад піаніно +00:44=Старий лімбургський сир +00:45=Синусна рушниця (beta) +00:46=Вогнемет +00:47=Липка міна +00:48=Молоток +00:49=Воскрешатор +00:50=Напад дрелі 01:00=Вперед до перемоги! 01:01=Нічия @@ -59,8 +64,9 @@ 01:09=Синхронізація... 01:10=Використання цього засобу не завершить хід! 01:11=Ця зброя чи засіб ще не доступний! -01:12=Last round till Sudden Death! -01:13=%1 rounds till Sudden Death! +01:12=Останній раунд до Раптової Смерті! +01:13=%1 раундів до Раптової Смерті! +01:14=Приготуйся, %1! ; Event messages ; Hog (%1) died @@ -262,15 +268,22 @@ 03:39=Пристрій для Переміщення 03:40=Спалююча Граната 03:41=Фанат Криків -03:42=I'm making a note here... +03:42=Я занотовую... ; the misspelled "Beethoven" is intentional (-> to beat) -03:43=Performing Beathoven's deadly sonata +03:43=Виконання смертельної сонати Бетховена +03:44=Кращий до: 1923 +03:45=Сила науки +03:46=Гаряче Гаряче Гаряче! +03:47=Приліпіть їх де треба! +03:48=Час молотка! +03:49=Робить те, що ви подумали +03:50=Кротячий фанат ; Weapon Descriptions (use | as line breaks) 04:00=Атакуй ворогів використовуючи просту гранату.|Вона вибухне як тільки її таймер доходить до нуля.|1-5: Вистав таймер гранати|Атака: Утримуй щоб метнути сильніше 04:01=Атакуй ворогів використовуючи кластерну|бомбу. Вона розділиться на менші бомби|коли таймер досягає нуля.|1-5: Вистав таймер гранати|Атака: Утримуй щоб метнути сильніше 04:02=Атакуй ворогів балістичним снарядом,|на політ якого впливає вітер.|Атака: Утримуй щоб стрельнути сильніше -04:03=Запусти вибухонебезпечну бджолу, яка|полетить до вибраної цілі. Не стріляй на|повну силу щоб поліпшити її точність.|Курсор: Вибери ціль|Атака: Утримуй щоб стрельнути сильніше +04:03=Запусти вибухо-небезпечну бджолу, яка|полетить до вибраної цілі. Не стріляй на|повну силу щоб поліпшити її точність.|Курсор: Вибери ціль|Атака: Утримуй щоб стрельнути сильніше 04:04=Атакуй ворогів використовуючи рушницю з двома|пострілами.Завдяки її розмаху тобі не потрібні точні|попадання щоб зашкодити супернику.|Атака: Стріляй (кілька разів) 04:05=Прямуй під землю! Візьми відбійний молоток,|просвердли в землі дірку та досягни інших областей.|Атака: Почни або заверши рити 04:06=Засмутився? Немає можливості атакувати? Хочеш зберегти|боєприпаси? Без проблем! Просто пропусти хід, боягузе!|Атака: Пропусти свою чергу без бою @@ -309,8 +322,14 @@ 04:39=Лети до іншої частини карти на літаючій тарілці.|Цей важко керований пристрій здатний перенести|тебе на практично будь-яку позицію поля бою.|Атака: Активувати|Вверх/Вліво/Вправо: Приклади зусилля в одному напрямку|Довгий Стрибок: Кинь гранати чи подібну зброю 04:40=Покрий землю вогнем, використавши цю плашечку|наповнену горючою (незабаром) рідиною.|Атака: Утримуй щоб стрельнути сильніше 04:41=Природа може переплюнути навіть літаючу|тарілку. Пташка може поносити їжака|навколо та скинути яйця на ворогів!|Атака: Активуй та скинь яйця|Вверх/Вліво/Вправо: Лети в одному напрямку -04:42=ВЕЛИЧЕЗНИЙ УСПІХ| | |(але текст відсутній!) -04:43=(текст відсутній) +04:42=Цей портативний портал здатний миттєво преренести|вас, ваших ворогів, чи ваше озброєння між двома|точками на місцевості.|Використовуйте його з розумом і ваша кампанія буде...|ДУЖЕ УСПІШНОЮ!|Атака: Вистріли портал|Переключити: Змінюй колір порталу +04:43=Проведи свій музичний дебют з величезним|успіхом! Скинь фортепіано з небес, але май|на увазі...хтось повинен на ньому грати,|і це може коштувати тобі життя!|Курсор: Вкажи цільовий регіон|F1-F9: Грай на піаніно +04:44=Це не просто сир, це біологічна зброя! Він не|нанесе багато шкоди, коли таймер досягне нуля,|але він точно отруїть всіх, хто відчув його запах!|1-5: Встановити таймер гранати|Атака: Утримуй щоб метнути сильніше +04:45=Всі ці класи фізики нарешті окупились, пусти|руйнівну Синусну хвилю на ворогів. Бережись,|ця зброя не іграшка. (Ця зброя не завершена)|Атака: Стріляй +04:46=Облий противників шипучим рідким вогнем.|Аж зігріває серце!|Атака: Активувати|Вверх/Вниз: Продовжуй цілитись|Вліво/Вправо: Змінюй силу пострілів +04:47=Подвійні веселощі з двома гострими, підлими,|липкими мінами. Налаштуй ланцюгову реакцію|або захищайся (або і те і те!)|Атака: Утримуй щоб кинути сильніше (двічі) +04:48=Чому всі образи повинні отримати кроти?|Зробити з їжака божевільного теж весело!|Удар цим молотком забере у їжака|третину здоров'я і заб'є його під землю.|Атака: Активуй +04:49=Воскреси своїх друзів! Але май на|увазі що це воскресить також і ворогів.|Атака: Утримуй атаку для повільного відновлення|Вверх: Пришвидш відновлення ; Game goal strings 05:00=Режими Гри @@ -329,3 +348,8 @@ 05:13=Мінні Таймери: Міни здетонують негайно 05:14=Мінні Таймери: Міни здетонують через 0 - 3 секунди 05:15=Модифікатор Шкоди: Будь-яка зброя наноситиме %1% шкоди +05:16=Здоров'я всіх їжаків скидається на кінці ходу +05:17=AI їжаки відроджуються після смерті +05:18=Необмежені Атаки +05:19=Зброя скидається на кінці ходу +05:20=Зброя не розподіляється між їжаками
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Locale/zh_CN.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,98 @@ +locale = { + ["!!!"] = "!!!", + ["A game of luck"] = "运气游戏", + ["Aiming Practice"] = "瞄准练习", --火箭筒、霰弹枪、狙击枪 + ["Bat balls at your enemies and|push them into the sea!"] = "发射棒球将敌人击打入水", + ["Bat your opponents through the|baskets and out of the map!"] = "把敌人击出场地——对准栏框", + ["Bazooka Training"] = "火箭筒训练", + ["Best laps per team: "] = "每一队最佳速度:", + ["Bloody Rookies"] = "雉儿飞", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Boom!"] = + ["by mikade"] = "mikade撰写", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag + ["CAPTURE THE FLAG"] = "抢旗子", + ["Codename: Teamwork"] = "代号:团队行动", + ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "恭喜!你在规定时限内清零全部目标。", --Bazooka, Shotgun, SniperRifle + ["Congratulations!"] = "恭喜", + ["Control pillars to score points."] = "控制支柱得分", + ["CONTROL v0.3"] = "控制 v0.3", + ["CONTROL"] = "控制", +-- ["CTF_BLIZZARD"] = + ["CUSTOM BUILD 0.2"] = "自定义建设 0.2", + ["Cybernetic Empire"] = "自动化帝国", + ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "新人,别让我看到", + ["DAMMIT, ROOKIE!"] = "新人", + ["Dangerous Ducklings"] = "危险的小鸭子", + ["Eliminate all enemies"] = "解决全部对手", + ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "时间限制内清除全部目标。弹药无限。", --Bazooka, Shotgun, SniperRifle + ["Eliminate Poison before the time runs out"] = "时间限制内清除毒素。", + ["Eliminate the Blue Team"] = "解决蓝色队伍", + ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- 打倒 3378 |-反抗者必须存活", + ["Enjoy the swim..."] = "游水愉快", + ["Fastest lap: "] = "最快记录:", + ["Feeble Resistance"] = "反抗者", + ["Flag captured!"] = "夺旗得分!", + ["Flag respawned!"] = "旗帜重生!", + ["Flag returned!"] = "旗帜归还!", + ["Flags will be placed where each team ends their turn."] = "旗帜会被放置在每个队伍回合结束时所在的地方。", + ["GAME OVER!"] = "结束了!", + ["Game Started!"] = "开始", + ["Get on over there and take him out!"] = "上去把它拉下来!", +-- ["Goal:"] = + ["GO! GO! GO!"] = "上!", + ["Good birdy......"] = "乖鸟儿", + ["Good luck out there!"] = "祝好运", + ["Hedgewars-Basketball"] = "刺猬大作战-篮球计划", + ["Hedgewars-Knockball"] = "刺猬大作战-击球计划", + ["Hmmm..."] = "呃...", + ["Hooray!"] = "呼!", + ["Hunter"] = "猎人", --Bazooka, Shotgun, SniperRifle + ["Instructor"] = "引导员", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings + ["- Jumping is disabled"] = "- 跳跃禁止", + ["Listen up, maggot!!"] = "听好,小子!!", +-- ["|- Mines Time:"] = + ["MISSION FAILED"] = "任务失败", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION SUCCESSFUL"] = "任务成功", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["NEW fastest lap: "] = "新记录", + ["NO JUMPING"] = "不准跳", + ["Not So Friendly Match"] = "非友善对抗", -- Basketball, Knockball + ["Oh no! Just try again!"] = "不!重新再来。", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["Oh no! Time's up! Just try again."] = "不!到点了,需要重新来。", --Bazooka, Shotgun, SniperRifle + ["Operation Diver"] = "水下行动", +-- ["Opposing Team: "] = + ["Opposing Team:"] = "对方队伍", + ["Pathetic Hog #1"] = "可怜刺猬一号", + ["Pathetic Hog #2"] = "可怜刺猬二号", +-- ["Pathetic Hog #%d"] = +-- ["points"] = +-- ["Poison"] = + ["Random Weapons"] = "随机武器", +-- [" - 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 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次夺旗队伍获胜| - 只有旗帜在己方基地才算| -带旗刺猬消逝则旗帜落下| -落下的旗帜使用方式不变| -损失的刺猬瞬间还原", + ["RULES OF THE GAME [Press ESC to view]"] = "游戏规则 [按下 ESC键 查看]", +-- ["sec"] = + ["See ya!"] = "再见!", + ["Shotgun Team"] = "霰弹枪队", + ["Shotgun Training"] = "霰弹枪训练", + ["%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 + ["Sniper Training"] = "狙击训练", + ["Sniperz"] = "狙击手", + ["Spooky Tree"] = "怪树", + ["Team %d: "] = "队伍 %d", + ["Team Scores:"] = "队伍得分:", +-- ["That was pointless."] = + ["The enemy is hiding out on yonder ducky!"] = "敌人藏在那边!", +-- ["The flag will respawn next round."] = + ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "现阶段装备混用,只能最大|程度地用好到手的玩具。", + ["Toxic Team"] = "腐坏的队伍", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TrophyRace"] = "竞速", + ["T_T"] = "T_T", + ["Unit 3378"] = "3378", + ["Use your rope to get from start to finish as fast as you can!"] = "抓起绳子飞向目的地,越快越好。", + ["Victory for the "] = "胜利属于", + ["You have SCORED!!"] = "得分", + ["You've failed. Try again."] = "失败了。再尝试吧。", + ["You've reached the goal!| |Time: "] = "目标达成| |时间:", + ["'Zooka Team"] = "火箭队", + [":("] = "囧", + }
--- a/share/hedgewars/Data/Locale/zh_CN.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Locale/zh_CN.txt Tue Jan 04 12:53:46 2011 +0100 @@ -1,54 +1,57 @@ -; Simplified Chinese locale, Translated by Tonghuix (tonghuix@gmail.com) 21 Oct 2010 +; Simplified Chinese locale -00:00=手榴蛋蛋 +00:00=手榴弹 00:01=集束炸弹 -00:02=反坦克火箭筒 +00:02=火箭筒 00:03=归巢的蜜蜂 00:04=霰弹枪 -00:05=鹤嘴锤 +00:05=大锤 00:06=跳过回合 00:07=绳索 00:08=地雷 00:09=沙漠之鹰 00:10=炸药 00:11=球棒 -00:12=喔嘻嘻呦拳 +00:12=升龙拳 00:13=秒 00:14=降落伞 00:15=空袭 00:16=地雷空袭 00:17=喷灯 -00:18=建设工具 +00:18=钢梁 00:19=传送 00:20=切换刺猬 00:21=迫击炮 00:22=鞭子 00:23=神风特工队 00:24=蛋糕 -00:25=色诱 +00:25=引诱 00:26=西瓜炸弹 00:27=地狱礼花 00:28=钻头火箭 00:29=弹珠炮 -00:30=汽油弹 +00:30=汽油弹空袭 00:31=遥控轰炸机 00:32=低重力 -00:33=额外伤害 +00:33=增强伤害 00:34=无敌 00:35=加时 00:36=激光瞄准 00:37=吸血 00:38=狙击枪 -00:39=飞盘 +00:39=UFO 00:40=燃烧瓶 00:41=鸟儿 -00:42=移动传送器 +00:42=传送器 00:43=飞来的钢琴 00:44=毒奶酪 00:45=正弦能量炮 00:46=火焰喷射器 00:47=固定地雷 00:48=大锤 +00:49=复苏 +00:50=电钻空袭 +00:51=土块 01:00=开战! 01:01=平局 @@ -56,285 +59,284 @@ 01:03=音量 %1% 01:04=暂停 01:05=确定要退出? (是Y/否Esc) -01:06=突然死亡模式! +01:06=死亡模式! 01:07=%1 剩余 01:08=燃料 01:09=同步中... 01:10=使用本工具不会结束回合! 01:11=您还不能用它! -01:12=突然死亡模式前最后一回合! +01:12=死亡模式前最后一回合! 01:13=%1 回合倒计时! 01:14=预备上, %1! ; Event messages ; Hog (%1) died ; 02:00=%1 has kicked the bucket! -02:00=%1踢到了春哥的腿! +02:00=%1 离去! ; 02:00=%1 has seen the light! -02:00=%1看到了小野妹子在向他招手! +02:00=%1 目睹圣光降临! ; 02:00=%1 never saw that coming! -02:00=阿西BUG!%1被人暗算了! +02:00=%1 无法瞑目 ; 02:00=%1 waves goodbye! -02:00=%1我嘞个去!哪个混蛋竟用这个绝招! +02:00=%1 向大家挥手道别。 ; 02:00=%1 has gone to a better place! -02:00=%1:你竟然敢背叛组织! +02:00=%1 去了极乐世界! ; 02:00=%1 meets his maker! -02:00=我嘞个去!这货不是%1!这货不是%1! +02:00=%1 去见造物主了! ; 02:00=%1 can hang on no longer! -02:00=真悲剧%1平田君(头顶内裤的哥们)! +02:00=%1 再也受不了了! ; 02:00=%1 has done his duty! -02:00=%1再也不会蛋疼了! +02:00=%1 完成了他的使命! ; 02:00=%1 makes the ultimate sacrifice! -02:00=%1:剩下的哥们,加嘞个油!! +02:00=%1 做了最大的牺牲! ; 02:00=%1 departs this mortal coil! -02:00=%1想玩“移形幻影”,失败了! +02:00=%1 摆脱了躯壳的束缚! ; 02:00=%1 makes like a tree and leaves! -02:00=%1啊~内裤!我这辈子值啦!~ +02:00=%1 叶落归根。 ; 02:00=%1 has timed out! -02:00=%1的人生杯具了 +02:00=%1 大限已至。 ; 02:00=%1 says peace out! -02:00=%1中了[喔嘻嘻呦拳]。。。这辈子值了! +02:00=%1 悄然离场了。 ; 02:00=%1 will be fondly remembered! -02:00=不嘞个是吧!%1竟然会死! +02:00=%1 永远活在我们心中! ; 02:00=%1 has an aneurysm! -02:00=湿父,让%1起死回生吧! +02:00=%1 不治而亡。 ; 02:00=%1 leaves behind a wife and child -02:00=%1 留下一家孤儿寡母。。。 +02:00=%1 留下一家孤儿寡母。 ; 02:00=%1 has launched his last bazooka -02:00=%1发射了最后一发火箭弹 +02:00=%1 发射了最后一发火箭弹 ; 02:00=%1 has tossed his last grenade -02:00=%1扔出了最后一枚手榴弹 +02:00=%1 扔出了最后一枚手榴弹 ; 02:00=%1 has baked his last cake -02:00=%1烘烤了最后一块蛋糕 +02:00=%1 烘烤了最后一块蛋糕 ; 02:00=%1 has swung on his last rope -02:00=%1甩出了最后一根绳索 +02:00=%1 最后一次甩出了绳索 ; 02:00=%1 has called his last airstrike -02:00=%1呼叫了最后一次空袭 +02:00=%1 最后一次呼叫空袭 ; 02:00=%1 has pumped his last shotgun -02:00=%1抽出了最后一把霰弹枪 +02:00=%1 最后一次抽出了霰弹枪 ; 02:00=%1 has thrown his last melon -02:00=%1扔出了最后一个西瓜炸弹 +02:00=%1 最后一次扔出了西瓜炸弹 ; 02:00=%1 has drawn his last deagle -02:00=%1拔出了最后一把沙鹰 +02:00=%1 最后一次拔出了沙鹰 ; 02:00=%1 took one shot too many -02:00=%1好像看到那谁家的小谁了~~ +02:00=%1 挨了太多枪了 ; 02:00=%1 could really have used a health crate -02:00=%1还没打倒“肉山大魔王”呢~ +02:00=%1 真该用下医疗包的 ; 02:00=%1 has gone to play a better game -02:00=徘句之神一屁股糊%1熊脸上了! +02:00=%1 去玩更有意思的游戏去了 ; 02:00=%1 has ragequit life -02:00=%1还没看到这个游戏的主线目标呢! +02:00=%1 拔网线了! ; 02:00=%1 fails -02:00=洒家,%1还会再来的! +02:00=%1 失败了 ; 02:00=Poor poor %1... -02:00=%1的人生简直就是一茶几(杯具+餐具) +02:00=可怜的 %1... ; 02:00=%1 prefers wormux -02:00=%1老湿,这游戏不给力啊! +02:00=%1 更喜欢 Wormux ; 02:00=%1 has been blocking shots with his face -02:00=%1杯具啊!菊花要爆啦! +02:00=%1 勇于面对,结果相当惨烈 ; 02:00=%1 is a hero amongst me...err..hogs -02:00=我嘞个去!竟然有人爆%1的菊花! +02:00=%1 是我的英雄! ; 02:00=%1 finds his place in Valhalla -02:00=好好干吧!要不然,过世的%1会很伤心的!~ +02:00=%1 在勇者纪念碑上找到了位置 ; 02:00=%1 has left the building -02:00=不要破坏团队合作!否则过世的%1会很伤心的!~ +02:00=%1 离开了这间屋子 ; 02:00=%1 goes the way of the dinosaurs -02:00=%1又开始蛋疼了! +02:00=%1 步上了恐龙的道路 ; 02:00=%1 brings hedgehogs one step closer to extinction -02:00=我嘞个擦!%1要让刺猬灭绝了 +02:00=%1 让刺猬物种灭绝更近了一步 ; 02:00=%1 brings a tear to my eye -02:00=我擦嘞!%1死的太突然那了! +02:00=%1 带走了我一滴眼泪 ; 02:00=%1 is an ex-hog -02:00=%1的必杀技是——变成食物——开玩笑,呵呵 +02:00=%1 生前是一只刺猬 ; 02:00=%1 is pushing up the daisies -02:00=%1诅咒害他那人蛋疼菊紧! +02:00=%1 被菊花簇拥 ; 02:00=%1 has ceased to be -02:00=%1:啊呀!这种插法,为湿多疼啊!~ +02:00=%1 被删除了 ; 02:00=Say goodbye to %1 -02:00=比任何人都想去天竺的八戒,已经魂归天际啦! +02:00=对 %1 说再见 ; 02:00=No hope left for %1 -02:00=坑爹呢!为什么残念的%1会死!~ +02:00=%1 没有希望了 ; 02:00=%1 faces the final curtain -02:00=%1:我杀了你们的朋友,现在搞我是吧! +02:00=%1 面容被落下的帷幕遮住了 ; 02:00=Smoke 'em if you got 'em, %1 -02:00=%1心目中的世界观根本就是个BUG啊! +02:00=%1 抓紧时间实现你最后的愿望吧 ; 02:00=%1 suffers a Spontaneous Massive Existence Failure -02:00=%1休斯顿,我们出问题了!(出自阿波罗13) +02:00=%1 遭遇了自发性大规模故障 ; 02:00=%1 has passed on -02:00=%1被天朝“墙”了! +02:00=%1 走了 ; 02:00=%1 is stone dead -02:00=%1被凤姐吻的不行了!~ +02:00=%1 永垂不朽 ; 02:00=%1 is no more -02:00=春哥需要你,%1! +02:00=%1 不在了 ; 02:00=%1 has expired -02:00=%1被光腚总菊河蟹了!~~ +02:00=%1 已故 ; 02:00=Bereft of life, %1 rests in peace -02:00=%1说,这位玩家的表情太猥琐了 +02:00=%1 安详地躺着 ; 02:00=%1 joins the choir invisible -02:00=%1用尽了全部的查克拉~ +02:00=%1 加入了隐形唱诗班 ; 02:00=Farewell %1, we hardly knew ye! -02:00=%1后悔没信春哥! +02:00=%1, 永别了,我们还没熟悉你呢! ; 02:00=%1 had a low tolerance for being shot -02:00=%1想说,他一直暗恋凤姐很久了!~ +02:00=%1 抗打击能力不足 ; 02:00=%1 could have used an extra life -02:00=下一局,%1一定会妥妥儿的!~噢嗬! +02:00=%1 本该用另一条命的 ; 02:00=Is there a doctor in the house? -02:00=擦!擦!玩儿蛋去! +02:00=有医生吗? ; Hog (%1) drowned ; 02:01=%1 plays submarine! -02:01=%1感觉自己内心清澈,心静如水~ +02:01=%1 以为自己是潜水艇! ; 02:01=%1 mimics the Titanic! -02:01=%1想看波~~波~~ +02:01=%1 学泰坦尼克去了! ; 02:01=%1 swims like a stone! -02:01=%1想在水下淫出一首好湿! +02:01=%1 石沉大海! ;02:01=%1 checks out the deep end -02:01=%1说凤姐在水下等她呢。。。 +02:01=%1 说要去检查深水区 ;02:01=%1 goes glug glug glug -02:01=%1 :菠萝菠萝蜜得隆东强~ -; 02:01=%1 goes splash -02:01=芭蕉桑~你快醒醒吧~ -; 02:01=%1 forgot his armbands -02:01=阿西BUG~!%1杯具了! +02:01=%1 :“咕噜咕噜咕噜……” +;02:01=%1 goes splash +02:01=%1 栽入水花里 +;02:01=%1 forgot his armbands +02:01=%1 忘记了戴臂章 ;02:01=%1 really should have taken swimming lessons -02:01=%1的遗言:信春哥得永生! +02:01=%1 真的该去学游泳的 ;02:01=%1 left his surfboard at home -02:01=不给力啊!老湿! +02:01=%1 把救生圈忘家了 ;02:01=%1 is washed up -02:01=%1庆幸自己没掉马桶里! +02:01=%1 冲走了 ;02:01=%1 is one soggy hog -02:01=%1生前是个拳湿~~ +02:01=%1 湿掉了 ;02:01=%1 forgot to bring his life jacket -02:01=我擦泪!下水前%1忘了脱内裤! +02:01=%1 忘记带救生衣了 ;02:01=%1 goes splish splash splish -02:01=我嘞个去!%1怎么穿着内裤就掉下去了~ +02:01=%1 实现了水上飘,身后一片水花荡漾 ;02:01=%1 is sleeping with the fishes -02:01=%1看到美人鱼在脱衣服~ +02:01=%1 将会和鱼睡在一起 ;02:01=%1 thinks the water physics suck in this game -02:01=%1认为这次元还真是个不毛之地啊! +02:01=%1 认为这游戏的设定糟糕透了 ;02:01=%1 looks thirsty -02:01=这次元怎么连根毛都没有~ +02:01=%1 好像很渴 ;02:01=the sea claims %1 -02:01=雅买歹~~(河蟹) +02:01=大海吞没了 %1 ;02:01=%1 is lost at sea -02:01=%1宁愿自我河蟹~~ +02:01=%1 在海上迷失了 ;02:01=%1 should have brought his scuba gear -02:01=水表示鸭梨很大~~ +02:01=%1 应该要带潜水工具的 ;02:01=%1 gets a burial at sea -02:01=%1,春哥要你 +02:01=%1 享受到了海葬待遇 ;02:01=%1 has that sinking feeling -02:01=%1曾哥在水下唱“狮子座” +02:01=%1 觉得自己在下沉 ;02:01=%1 is practicing his backstroke -02:01=%1的内裤是粉红色的哦! +02:01=%1 终于能实践自己的游泳理论了 ;02:01=%1 goes in search of the Titanic -02:01=水下竟然有神兽! +02:01=%1 去泰坦尼克号寻宝了 ;02:01=%1 is not Jesus -02:01=%1正在观看河蟹狂吃草泥马~ +02:01=很遗憾 %1 不是耶稣 ;02:01=%1 is finding Nemo -02:01=%1觉得陆地上房价太高了 +02:01=%1 正在寻找Nemo ;02:01=%1 springs a leak -02:01=%1表示鸭梨很大~ -;02:01=%1 has tha -02:01=%1想去看凤姐的内裤颜色~ +02:01=%1 钻入了一个水洼 ;02:01=You've gotta wonder how many hogs are down there -02:01=你会知道出师未捷身先死的八戒在下面等你呢 +02:01=你会知道海底还会有多少同伴的 ;02:01=%1 makes the ocean slightly higher 02:01=%1 让海平面高了那么一点, 就一点 ;02:01=%1 didn't enlist in the Navy -02:01=%1害怕城管来抓他~! +02:01=很明显 %1 没在海军服役过 ;02:01=%1 is doing his impersonation of a dead fish -02:01=菲律宾警察营救%1失败~ +02:01=%1 其实是在模仿死鱼啦 ;02:01=At least you didn't go down the toilet, %1 -02:01=%1撅着个腚飞起来啦~ +02:01=还好 %1 你不是掉进了厕所 ;02:01=Sonic couldn't swim and neither can %1 -02:01=海底有个如意按摩棒~~ +02:01=索尼克不能游泳, %1 也一样 ;02:01=%1 wants to play Ecco the dolphin -02:01=%1想当水下波霸~! +02:01=%1 想玩海底漫步 ;02:01=%1 has gone to visit Aquaria -02:01=%1被气得忿忿儿的! +02:01=%1 去水族馆报到了 ;02:01=%1 has found the lost city of Atlantis -02:01=%1被爆菊了,要到水下清洗一下! +02:01=%1 找到了传说中的亚特兰蒂斯城 ;02:01=%1 aims for the lead role in Bioshock 3 -02:01=%1华丽丽的掉下去啦~ +02:01=%1 的目的是为了在生化奇兵3中起带头作用 ;02:01=Your doggy paddle could use a little work, %1 -02:01=%1实在是太V5啦!连光腚总菊都拿他没辙! +02:01=狗爬式会有用的, %1 ;02:01=%1 should have brought a jet ski -02:01=%1还没来得及吐槽!阿西BUG! +02:01=%1 竟然没带摩托艇 ;02:01=%1 doesn't like watersports -02:01=%1的伪娘气质还没表现出来呢 +02:01=%1 不喜欢水上运动 ;02:01=%1 is forever blowing bubbles -02:01=%1落水时的体位亮了~ +02:01=%1 学会了绝技: 神风吹泡泡 ;02:01=%1 is short of a raft -02:01=%1被天朝屏蔽了~ +02:01=%1 腿太短了 ;02:01=%1 thinks salt water is good for the skin -02:01=%1认为天朝实在是个伟大的国度 +02:01=%1 认为盐水对皮肤有好处 ;02:01=%1 gets salt water in his wounds -02:01=%1大喊:不给力啊,你个白痴老湿! +02:01=%1 的伤口沾上了盐水 ;02:01=%1 has walked the plank -02:01=太不给力啦,老湿! +02:01=%1 错过了那块木板 ;02:01=%1 has a bath -02:01=这游戏不带感啊! +02:01=%1 洗澡去了 ;02:01=%1 is wet wet wet -02:01=亮点永远都在最后 +02:01=%1 全身是水 ;02:01=%1 gets his quills wet -02:01=%1把屁股弄湿了 +02:01=%1 把刚毛弄湿了 ;02:01=It's Davy Jones' locker for %1 -02:01=天朝正在水下等%1呢 +02:01=深海阎王正在等待 %1 ; Round starts ; 02:02=Let's fight! +02:02=开战! ; 02:02=Armed and ready! -02:02=开战! 02:02=准备! ;02:02=Let's get ready to rumble! 02:02=准备对轰! ;02:02=Let's get it on! -02:02=让我们取得胜利! +02:02=让我们得到胜利! ;02:02=Let's get this party started 02:02=这个Party要开始了 ;02:02=Last hog standing wins -02:02=胜利属于信春哥的人 +02:02=胜利属于最后一个生还者 ;02:02=Let's go! 02:02=出发吧! ;02:02=Let's rock! +02:02=起点 ;02:02=Let's jam! ;02:02=It's beginning... -02:02=开始了... +02:02=开始了 ;02:02=This is the start of something big 02:02=这是一个伟大的开始 ;02:02=Welcome to Hedgewars -02:02=欢迎来到“刺猬杀”! +02:02=欢迎来到刺猬大作战 ;02:02=Welcome to the front lines 02:02=欢迎来到前线 ;02:02=Crush your enemies! -02:02=目标:吃掉你的敌人! +02:02=目标:粉碎你的敌人! ;02:02=May the best hog win -02:02=胜利属于会打飞机的那只! +02:02=祝愿胜利属于最厉害的刺猬! ;02:02=Victory or death 02:02=胜利或死亡 ;02:02=To the victor goes the spoils 02:02=战利品只属于胜利者 ;02:02=Losing is not an option -02:02=加嘞个油!老湿不能输啊! +02:02=字典里面应该没有"输"这个字的 ;02:02=Cry havoc! Let loose the hogs of war! -02:02=哭吧! 这是刺猬的 +02:02=放声哭吧! 这是刺猬的战争! ;02:02=Hedgewars, brought to you by Hedgewars.org -02:02=欢迎来到刺猬大作战, 官方网站 Hedgewars.org +02:02=欢迎来到刺猬大作战, Hedgewars.org 为你呈现 02:02=GL HF ;02:02=Just count yourself lucky you're not up against Tiyuri -02:02=你看你多幸运你不是在对战 Tiyuri +02:02=你看你多幸运不是在对战 Tiyuri ;02:02=Just count yourself lucky you're not up against unC0Rr -02:02=你看你多幸运你不是在对战 unC0Rr +02:02=你看你多幸运不是在对战 unC0Rr ;02:02=Just count yourself lucky you're not up against Nemo -02:02=你看你多幸运你不是在对战 Nemo +02:02=你看你多幸运不是在对战 Nemo ;02:02=Just count yourself lucky you're not up against Smaxx -02:02=你看你多幸运你不是在对战 Smaxx +02:02=你看你多幸运不是在对战 Smaxx ;02:02=Just count yourself lucky you're not up against Jessor -02:02=你看你多幸运你不是在对战 Jessor +02:02=你看你多幸运不是在对战 Jessor ;02:02=Give it your all! 02:02=展现你的一切吧! ;02:02=The losers do the cleaning up! -02:02=输的要去吻凤姐! +02:02=输的要罚扫厕所! ;02:02=Let the fight of the millenium begin 02:02=宇宙之战开始了 ;02:02=Let the fight of the century begin @@ -350,7 +352,7 @@ ;02:02=Let the fight of the day begin 02:02=本日最强入围赛开始了 ;02:02=Let the fight of the hour begin -02:02=我们能狂玩一小时! +02:02=我们能战一小时! ;02:02=Do your best! 02:02=诸君努力! ;02:02=Destroy the enemy! @@ -358,30 +360,31 @@ ;02:02=Good luck 02:02=祝你好运 ;02:02=Have fun~ -02:02=玩儿蛋去~ +02:02=开心玩~ ;02:02=Fight the good fight -02:02=要赢! +02:02=漂亮的战斗 ;02:02=Fight dirty -02:02=不择手段也行! +02:02=不择手段 ;02:02=Fight with honour -02:02=请注意文明用语 +02:02=满载荣誉而战 ;02:02=Don't give up -02:02=出师未捷身先死的教练: 别放弃 +02:02=教练告诉你: 别放弃 ;02:02=Never surrender 02:02=永不屈服! ;02:02=Rock 'em and sock 'em! -02:02=刺猬杀!杀!杀! +02:02=蹂虐对手 ;02:02=Let the fragfest begin! 02:02=积分赛开始! ;02:02=I hope you're ready for a tussle! 02:02=你准备好恶战了么? -02:02=Go Go Go! +;02:02=Go Go Go! +02:02=上! ;02:02=Hedgehogs advance! -02:02=刺猬历险记! +02:02=刺猬向前冲! ;02:02=Bring it to them! 02:02=炸飞他们! ;02:02=Have no fear! -02:02=勇敢前进! +02:02=无所畏惧! ;02:02=Be brave and conquer 02:02=敢于征服! @@ -397,33 +400,33 @@ ;02:05=Medic! 02:05=急救包! ;02:05=First aid from the skies! -02:05=最NB的东西空运来了! +02:05=救援物资空运来了! ;02:05=A health pack for you 02:05=你的医疗包到了 ;02:05=Good health.. in box form! -02:05=凤姐的内裤就在那箱子里! +02:05=生命就在那箱子里! ;02:05=The doctor calls -02:05=人在江湖飘啊,谁能不挨刀啊!PIA~PIA~ +02:05=医生的紧急呼叫 ;02:05=Fresh band-aids! 02:05=新鲜创可贴! ;02:05=This will make you feel better -02:05=吃了这个感觉像在吻春哥... +02:05=吃了这个感觉会好些的... ;02:05=A Hi-Potion! Whoops wrong game -02:05=伟哥!呃。。。走错地方了 +02:05=兴奋剂!呃。。。走错地方了 ;02:05=A pick-me-up! 02:05=万金油! ;02:05=Grab it -02:05=就是它了! +02:05=捉住它 ;02:05=A healthy snack -02:05=春哥的吻如期而至~ +02:05=健康食品 ;02:05=A remedy to pain -02:05=这货不是药包!这货不是药包!貌似这货就是药包。。。 +02:05=止痛饼来了 ;02:05=Correct Dosage: as many as you can find! -02:05=凤姐诚心提醒:这东西很管用 +02:05=使用方法: 吃得越多越好 ;02:05=Urgent delivery -02:05=请小心使用 +02:05=紧急物资 ;02:05=Supplies! -02:05=里面没有TT +02:05=补给! ; New ammo crate ; 02:06=More weapons! @@ -431,79 +434,79 @@ ;02:06=Reinforcements! 02:06=增援! ;02:06=Lock and load! -02:06=凤姐的及时雨! +02:06=准备! ;02:06=I wonder what weapon is in there? -02:06=尿布湿... +02:06=我要的那个会在的吧... ;02:06=Supplies! -02:06=也许有伟哥哦! +02:06=补给! ;02:06=What could be inside? 02:06=里面会有啥呢? ;02:06=Christmas comes early in Hedgewars -02:06=刺猬杀特别派送~ +02:06=刺猬大作战每天都是圣诞节 ;02:06=A present! -02:06=今年过节不收礼! +02:06=礼物送到! ;02:06=Special delivery! -02:06=特快专递,收件人付费! +02:06=特快专递! ;02:06=It was a nightmare getting this through customs -02:06=“肉山大魔王”来了 +02:06=本局的噩梦来了 ;02:06=Destructive toys from the heavens -02:06=吃了这个可以找凤姐 +02:06=玩具从天堂掉下来了 ;02:06=Warning! Contents Volatile -02:06=警告! 小心喷鼻血~ +02:06=警告! 内含危险物品 ;02:06=Pick it up or blow it up, choice is yours -02:06=拿走或爆掉, 随你 +02:06=拿走或打爆, 随你 ;02:06=Goodies! -02:06=貌似没有凤姐的内裤! +02:06=好玩意儿! ;02:06=Mmmmm Ammo 02:06=弹药!!!! ;02:06=A box of destructive power -02:06=潘朵拉的宝盒 +02:06=潘朵拉之盒 ;02:06=Airmail! -02:06=航空邮件,收件人付费! +02:06=天降之物! ;02:06=Whatever's in that box, it ain't pizza -02:06=无论里面是啥, 那肯定不会是小野妹子 +02:06=无论里面是啥, 那肯定不会是软妹子 ;02:06=Get it! 02:06=拿走它! ;02:06=Weapon drop incoming 02:06=武器掉下来了! ;02:06=Don't let the enemy grab that! -02:06=别让平田君拿了! +02:06=别让敌人拿了! ;02:06=Shiny new toys! -02:06=把这玩意装备上! +02:06=新玩具! ;02:06=A mysterious box! -02:06=迷一般的玩意... +02:06=神秘的箱子! ; New utility crate ; 02:07=Tooltime! 02:07=工具箱! ;02:07=This could come in handy... -02:07=这货不是工具箱!貌似这货就是工具箱... +02:07=这可能派上用场 ;02:07=Utilities! 02:07=工具! ;02:07=Utilise this box 02:07=工具在这里! ;02:07=Watch out below -02:07=令人蛋疼的东西! +02:07=快看这里! ;02:07=More utilities! 02:07=更多选择更多欢笑, 尽在工具包 ;02:07=Tools for you! -02:07=爆菊用的, 送给你! +02:07=一堆工具, 送给你! ;02:07=This should be good! -02:07=菊花表示压力很大... +02:07=这看见起来蛮好... ;02:07=Use this wisely 02:07=使用这个才是明智的选择 ;02:07=Ooo this box is heavy -02:07=这东西让所有刺猬为之一震 +02:07=好重...好重... ;02:07=You might need this 02:07=会有用的 ; Hog (%1) skips his turn ; 02:08=%1 is sooo boring... -02:08=%1太无聊了... +02:08=%1 太无聊了... ;02:08=%1 couldn't be bothered -02:08=%1要去找凤姐! +02:08=%1 不想被打扰! ;02:08=%1 is one lazy hog -02:08=%1太懒了 +02:08=%1 太懒了 ;02:08=%1 is thoughtless 02:08=%1 太轻率了 ;02:08=%1 gave up @@ -571,163 +574,89 @@ ;02:08=%1 has fallen asleep 02:08=%1 睡着了 -; Hog (%1) skips his turn -; 02:08=%1 is sooo boring... -02:08=%1 太无聊了... -;02:08=%1 couldn't be bothered -02:08=%1要去找凤姐! -;02:08=%1 is one lazy hog -02:08=%1找春哥要签名去了! -;02:08=%1 is thoughtless -02:08=%1吻凤姐去 -;02:08=%1 gave up -02:08=%1阿西BUG! -;02:08=You snooze you lose, %1 -02:08=%1无可奈何! -;02:08=%1 shamelessly skips -02:08=%1无耻的跳过了本回合 -;02:08=%1 is really lazy -02:08=%1貌似长痔疮了! -;02:08=%1 needs a little more motivation -02:08=%1觉得自己需要伟哥 -;02:08=%1 is a pacifist -02:08=%1脱了去 -;02:08=%1 has a breather -02:08=%1正在吃饭呢 -;02:08=%1 has a rest -02:08=%1需要食物 -;02:08=%1 chills out -02:08=%1想要爱爱了 -;02:08=%1 has no faith in his own abilities -02:08=%1做啥都没信心了 -;02:08=%1 decides to do nothing at all -02:08=%1决定找凤姐一块玩 -;02:08=%1 lets the enemy destroy itself -02:08=%1认为凤姐会来杀敌的 -;02:08=%1 would be terrible at parties -02:08=%1撅着屁股摆体位 -;02:08=%1 hides out -02:08=%1会隐身术 -;02:08=%1 has decided to pass on this opportunity -02:08=%1已经决定放弃这个机会 -;02:08=%1 decides the best thing he can do is...nothing -02:08=%1决定他现在最应该做的是......去找凤姐 -;02:08=%1 is a big wuss -02:08=%1真是太蠢了! -;02:08=Buck Buck Buck, %1 is a chicken -02:08=%1找个内裤来玩玩 -;02:08=%1 is looking a little yellow -02:08=%1看来有点印堂发黑 -;02:08=%1 is a coward! -02:08=%1是圣德太子! -;02:08=%1 is waiting for sudden death -02:08=%1在等待突然死亡模式 -;02:08=%1 is not the fighting type -02:08=%1妥妥儿的 -;02:08=%1 is reconsidering his purpose in life -02:08=%1正在思考凤姐内裤的颜色 -;02:08=%1 was never much of a good shot anyway -02:08=%1从来就没玩好过 -;02:08=%1 didn't want to join the army in the first place -02:08=%1不想玩这游戏 -;02:08=Stop wasting our time, %1 -02:08=别浪费时间了! %1 -;02:08=I'm dissapointed in you, %1 -02:08=拳湿对你失望了,平田君 -;02:08=Come on, you can do better than that %1 -02:08=%1我嘞个去! -;02:08=%1's will has broken -02:08=%1正在打飞机 -;02:08=%1 apparently has better things to do -02:08=%1显然有更好的事情等着做 -;02:08=%1 is scared stiff -02:08=%1怕刺激 -;02:08=%1 has fallen asleep -02:08=%1睡着了 - ; Hog (%1) hurts himself only ; 02:09=%1 should practice aiming! -02:09=%1该练练瞄准了! +02:09=%1 该练练瞄准了! ; 02:09=%1 seems to hate himself. -02:09=%1似乎看自己很不爽。 +02:09=%1 似乎看自己很不爽。 ; 02:09=%1 is standing on the wrong side! -02:09=%1在表演狗吃屎! +02:09=%1 在表演乌龙! ; 02:09=%1 makes like an emo -02:09=%1以为自己是拳湿 +02:09=%1 以为自己无敌 ; 02:09=%1 was holding his weapon the wrong way around -02:09=%1好像把武器拿错方向了 +02:09=%1 好像把武器拿错方向了 ;02:09=%1 is a little sadistic -02:09=%1更喜欢凤姐来玩 +02:09=%1 有点施虐狂 ;02:09=%1 is a masochist -02:09=%1是更喜欢春哥来玩 +02:09=%1 是受虐狂 ;02:09=%1 has no instinct of self-preservation -02:09=%1根本不会自我保护 +02:09=%1 根本不会自我保护 ;02:09=%1 messed up -02:09=%1吐槽了 +02:09=%1 乱套了 ;02:09=%1 screwed up -02:09=%1体位搞错了 +02:09=%1 搞砸了 ;02:09=That was a poor shot, %1 -02:09=%1这一发真坑爹的! +02:09=%1 这一发真渣 ;02:09=%1 is a little too careless with dangerous weapons -02:09=%1太不小心用那些危险的玩意了 +02:09=%1 太不小心用那些危险的玩意了 ;02:09=%1 should consider a change of career -02:09=%1正在考虑玩凤姐 +02:09=%1 正在考虑转职 ;02:09=Worst. Shot. Ever! -02:09=值啦! 值啦! 太值啦! +02:09=更差! 最差! 非常差! ;02:09=No no no %1, you shoot at the ENEMY! -02:09=%1, 你要打敌人!不要打飞机! +02:09=No no no %1, 你要打敌人! ;02:09=%1 should only be destroying the enemy -02:09=%1应该消灭宿敌啊 +02:09=%1 应该消灭敌人才对 ;02:09=%1 moves one step closer to suicide -02:09=%1需要吃蘑菇了 +02:09=%1 正在走向自杀 ;02:09=%1 aids the enemy -02:09=%1感觉自己蛋疼 +02:09=%1 帮助敌人 ;02:09=That was stupid %1 -02:09=%1感觉自己菊紧 +02:09= %1 是笨蛋 ;02:09=%1 lives by the mantra of "no pain, no gain" -02:09=%1突然有点乳酸 +02:09=%1 贯彻“不付出,何收获“的原则 ;02:09=%1 is confused -02:09=%1貌似吃错药了 +02:09=%1 思维混乱了 ;02:09=%1 hurt itself in its confusion -02:09=%1吃错药而打错人 +02:09=%1 在混乱中攻击自己 ;02:09=%1 has a knack for embarrassing himself -02:09=%1感觉菊花鸭梨很大 +02:09=%1 正在为自己尴尬 ;02:09=%1 is a klutz! -02:09=%1要受不了啦 +02:09=%1 就是一个笨蛋! ;02:09=%1 is clumsy -02:09=%1实在是笨到水了 +02:09=%1 笨手笨脚的 ;02:09=%1 shows the enemy what he's capable of -02:09=%1真是太杯具了 +02:09=%1 展示了自己的能力 ;02:09=%1 can't be expected to be perfect all the time -02:09=%1感觉自己的人生就一茶几 +02:09=%1 不能每次都完美 ;02:09=Don't worry %1, pobody's nerfect -02:09=杯具啊! +02:09=不用担心 %1 , 人都不是完美的 ;02:09=%1 totally did that on purpose -02:09=爆菊啦! +02:09=%1 这么做真的是有目的 ;02:09=I won't tell anyone if you don't, %1 -02:09=脑仁疼啊! +02:09=我不会把 %1 的事情到处说的 ;02:09=How embarrassing! -02:09=内裤找不到啦,害羞! +02:09=何等的失态! ;02:09=I'm sure nobody saw that %1 -02:09=这游戏是谁发明的,画个圈圈诅咒他。。。 +02:09=保证,决没人看到 %1 做什么 ;02:09=%1 needs to review his field manual -02:09=%1不看说明书就上场 +02:09=%1 需要复习说明书 ;02:09=%1's weapon clearly malfunctioned -02:09=%1被谁爆菊了吧 +02:09=%1 的武器很明显坏了 ; Hog shot an home run (using the bat and another hog) ; 02:10=Home Run! 02:10=全垒打! ; 02:10=A bird, a plane, ... -02:10=看!灰机!来打灰机啊!... +02:10=一只鸟,一架飞机,... ; 02:10=That one is out! -02:10=太差劲了,出局! +02:10=那一位出界了! ; Hog (%1) has to leave (team is gone) -02:11=%1必须找凤姐上床了 -02:11=%1玩的过火了,找犀利哥替代一下 -02:11=发射!这位已经被射出去。。。 -02:11=%1必须颠菜了 +02:11=%1 必须上床了 +02:11=%1 玩的过火了,休息一下 +02:11=发射!这位已经被送出去 +02:11=%1 必须走了 ; Weapon Categories 03:00=定时手雷 @@ -743,11 +672,11 @@ 03:10=BOOM! 03:11=咚! 03:12=武术 -03:13=UNUSED +03:13=未使用 03:14=移动工具 03:15=空投打击 03:16=空投打击 -03:17=钻孔工具 +03:17=打洞工具 03:18=工具 03:19=移动工具 03:20=动作 @@ -755,7 +684,7 @@ 03:22=叫我主人! 03:23=武术 (真的!) 03:24=蛋糕不是谎言! -03:25=儿童不宜 +03:25=化妆的诱惑 03:26=果汁手雷 03:27=烫手手雷 03:28=弹道武器 @@ -772,10 +701,9 @@ 03:39=移动工具 03:40=燃烧弹 ;03:41=Huge fan of Squawks -03:41=强烈的震撼 +03:41=粉丝的呼喊 ;03:42=I'm making a note here... -03:42=我将名垂青湿... - +03:42=我将在此记录... ; the misspelled "Beethoven" is intentional (-> to beat) ;03:43=Performing Beathoven's deadly sonata 03:43=特殊的圣诞表演 @@ -789,7 +717,10 @@ 03:47= 呆在有利的地方! ;03:48=It's Hammer time! 03:48=大锤威武! - +;03:49=Does what you guess +03:49=尽情猜想 +;03:50=Moles fan +03:50=地道战 ; Weapon Descriptions (use | as line breaks) 04:00=使用简单的手榴弹攻击敌人.|定时器倒数到0就会爆炸.|1-5: 设定定时器|攻击键: 按住蓄力. @@ -810,9 +741,9 @@ 04:15=呼叫一架飞机轰炸你的敌人.|左/右方向键: 决定攻击方向|光标: 选定目标 04:16=呼叫一架飞机投下大量地雷.|左/右方向键: 决定攻击方向|光标: 选定目标 04:17=需要个安全的地方? 使用喷灯为你挖掘一条安全的隧道!|攻击键: 开始/停止挖掘 -04:18=钻洞器还不够?还要个更安全的地方?|建造若干条大梁挡住吧.|左/右方向键: 选择梁的方向|光标: 建造 +04:18=喷灯还不够?还要个更安全的地方?|建造若干条大梁挡住吧.|左/右方向键: 选择梁的方向|光标: 建造 04:19=适当的时候撤退是比所有的攻击|更安全的选择|光标: 选择传送目标 -04:20=可以让你更换当前使用的刺猬.|攻击键: 启动切换功能|TAB:切换刺猬 +04:20=可以让你更换当前使用的刺猬.|攻击键: 启动切换功能 04:21=用炮弹发射器发射一个手榴弹样|的东西. 在爆炸之后会裂开成小块|攻击键: 全力发射 04:22=这不只是女王才用的东西!|这鞭子能解决很多问题, 比如说那些|喜欢站在悬崖边上的小屁孩.|攻击键: 鞭打你面前的一切东西 04:23=自杀式炸弹袭击向来好用!|用你的一条命攻击直线上的一切东西并爆炸.|攻击键: 启动自杀性攻击 @@ -834,20 +765,21 @@ 04:39=驾驶飞碟可以飞到地图上的任何角落.|不过这个东西连发明者都认为很难用.|攻击键: 激活|上/左/右方向键: 向某方向飞|前跳:攻击敌人 04:40=把地面填满汽油然后....|攻击键: 按住蓄力. ;04:41=自然的力量要盖过飞盘。|带着刺猬的鸟竟然毫不犹豫的空中下蛋!|攻击键: 激活和放蛋|上/左/右方向键: 向某方向飞 -;04:42=这玩意可以,|or your weaponry between two points on the|terrain.|Use it wisely and your campaign will be a...|HUGE SUCCESS!|Attack: Shoot a portal|Switch: Cycle portal colours +;04:42=This portable portal device is capable|of instantly transporting you, your enemies,|or your weaponry between two points on the|terrain.|Use it wisely and your campaign will be a...|HUGE SUCCESS!|Attack: Shoot a portal|Switch: Cycle portal colours 04:42=移动传送装置|迅速传输自己或者敌人或者|你的武器,直接连接|地表的两个不同位置。|用的聪明那么。。。|攻击键: 发射一个传送点|切换键: 改变颜色 ;04:43=Make your musical debut an explosive success!|Drop a piano from the heavens, but beware...|someone needs to play it, and that may cost you|your life!|Cursor: Select target region|F1-F9: Play the piano 04:43=音乐细胞的迸发!|钢琴从天堂降落,带|着演奏者最终回归天堂|光标: 选择目标区域|F1-F9:演奏钢琴 -04:44=这货不是奶酪!貌似是生化武器!|爆炸只有一次,带来的毒害是深远的!|1-5: 设定定时器|攻击键: 按住蓄力 +04:44=这不是奶酪!而是生化武器!|爆炸只有一次,带来的毒害是深远的!|1-5: 设定定时器|攻击键: 按住蓄力 ;04:45=All those physics classes have finally |paid off, launch a devastating Sine |wave at your foes. |Watch out, this weapon packs quite a kick. (This weapon is incomplete)|Attack: Shoot 04:45=全部物理阶级最终|转化为正弦波动|留心,力是相对的|攻击键: 发射 ;04:46=Cover your foes with sizzling liquid flame.|Heartwarming!|Attack: Activate|Up/Down: Continue aiming|Left/Right: Modify spitting power 04:46= 用满腔的火焰虐待你的对手吧。|攻击键: 激活|上/下方向键: 改变攻击方向|左/右方向键: 调整喷射距离 ;04:47=Double the fun with two spiky, sneaky, sticky mines.|Set up a chain reaction or defend yourself (or both!)|Attack: Hold to shoot with more power (twice) -04:47=两次机会双重乐趣,隐蔽且固定的地雷。|利用脑力造成连锁反应!|攻击键: 按住蓄力(两发) +04:47=两次机会双重乐趣,隐蔽且黏着的地雷。|利用脑力造成连锁反应!|攻击键: 按住蓄力(两发) ;04:48=Why should the moles get all the abuse?|Wacking a hog can be just as fun! A good|blow from this hammer will shave off one|third of a hog's health and plunge them|underground.|Attack: Activate -04:48=痛扁刺猬:用力一锤|将使中者镶入地表,削减它生命值的1/3.|攻击键: 击打 - +04:48=痛扁刺猬:用力一锤|将使中者镶入地表,削减它健康的1/3.|攻击键: 打 +;04:49=Resurrect your friends!|But beware that this also resurrects your foes.|Attack: Keep attack pressed to resurrect slowly|Up: Accelerate resurrection +04:49=复苏|注意,一视同仁|使用: 按住使用键|上: 提高速率 ; Game goal strings ;05:01=The following rules apply @@ -859,7 +791,7 @@ ;05:04=Invulnerability: Hogs are (almost) invulnerable 05:04=无敌: 刺猬不受伤害 ;05:05=Vampirism: Hogs will be healed for the damage dealt -05:05=吸血: 敌人失去的就是我得到的 +05:05=吸血: 敌人失去的就是我的 ;05:06=Karma: Hogs will be damaged for the damage dealt 05:06=因果效应: 伤害有多少,自己都知道 ;05:07=Protect the King: Don't let your king die!|Place the King: Pick a protected starting point for your King @@ -880,3 +812,13 @@ 05:14=地雷定时器: 0-3 秒起爆 ;05:15=Damage Modifier: All weapons will do %1% damage 05:15=伤害修正: 武器伤害使用 %1% 修正值 +;05:16=Health of all hogs is reset on end of turn +05:16=所有活着的刺猬回合结尾时彻底恢复健康 +;05:17=AI hogs respawn on death +05:17=AI刺猬即时复活 +;05:18=Unlimited Attacks +05:18=无限攻击法则 +;05:19=Weapons are reset on end of turn +05:19=武器在回合结束时重置 +;05:20=Weapons are not shared between hogs +05:20=刺猬的武器无法分享
--- a/share/hedgewars/Data/Maps/Basketball/map.lua Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Maps/Basketball/map.lua Tue Jan 04 12:53:46 2011 +0100 @@ -1,100 +1,6 @@ -- Hedgewars - Basketball for 2+ Players -local caption = { - ["en"] = "Hedgewars-Basketball", - ["de"] = "Hedgewars-Basketball", - ["es"] = "Hedgewars-Baloncesto", - ["pl"] = "Hedgewars-Koszykówka", - ["pt_PT"] = "Hedgewars-Basketball", - ["sk"] = "Hedgewars-Basketbal", - ["sv"] = "Hedgewars-Basket", - ["pt_BR"] = "Hedgewars-Basketball" - } - -local subcaption = { - ["en"] = "Not So Friendly Match", - ["de"] = "Kein-so-Freundschaftsspiel", - ["es"] = "Partido no-tan-amistoso", - ["pl"] = "Mecz Nie-Do-Końca Towarzyski", - ["pt_PT"] = "Partida não muito amigável", - ["sk"] = "Nie tak celkom priateľský zápas", - ["sv"] = "En inte så vänlig match", - ["pt_BR"] = "Partida não muito amigável" - } - -local goal = { - ["en"] = "Bat your opponents through the|baskets and out of the map!", - ["de"] = "Schlage deine Widersacher durch|die Körbe und aus der Karte hinaus!", - ["es"] = "¡Batea a tus oponentes fuera del mapa a través de la canasta!", - ["pl"] = "Uderzaj swoich przekiwników|wyrzucając przez kosz, poza mapę!", - ["pt_PT"] = "Bate os teus adversarios|fora do mapa acertando com eles no cesto!", - ["sk"] = "Odpálkujte vašich súperov do koša|a von z mapy!", - ["sv"] = "Slå ner dina motståndare i|korgarna och ut ur kartan!", - ["pt_BR"] = "Rebata seus oponentes para|fora do mapa através dos cestos!" - } - -local scored = { - ["en"] = " scored a point!", - ["de"] = " erhält einen Punkt!", - ["es"] = " anotó un tanto!", - ["pl"] = " zdobyła punkt!", - ["pt_PT"] = " marca um cesto!", - ["sk"] = " skóruje!", - ["sv"] = " fick ett poäng", - ["pt_BR"] = " fez uma cesta" - } - -local failed = { - ["en"] = " scored a penalty!", - ["de"] = " erhält eine Strafe!", - ["es"] = " anotó una falta!", - ["pl"] = " zdobyła punkt karny!", - ["pt_PT"] = " perde um ponto!", - ["sk"] = " dostáva trestný bod!", - ["sv"] = " fick ett straff", - ["pt_BR"] = " sofre uma penalidade" - } - - local sscore = { - ["en"] = "Score", - ["de"] = "Punktestand", - ["es"] = "Puntuación", - ["pl"] = "Punktacja", - ["pt_PT"] = "Pontuação", - ["sk"] = "Skóre", - ["sv"] = "Poängställning", - ["pt_BR"] = "Pontuação" - } - -local team = { - ["en"] = "Team", - ["es"] = "Equipo", - ["pl"] = "Drużyna", - ["pt_PT"] = "Equipa", - ["sk"] = "Tím", - ["sv"] = "Lag", - ["pt_BR"] = "Equipe" - } - -local drowning = { - ["en"] = "is out and", - ["de"] = "ist draußen und", - ["es"] = "cayó y", - ["pl"] = "jest wyautowany i", - ["pt_PT"] = "está fora e", - ["sk"] = "je mimo hru a", - ["sv"] = "är ute och", - ["pt_BR"] = "está fora e" - } - -local function loc(text) - if text == nil then return "**missing**" - elseif text[L] == nil then return text["en"] - else return text[L] - end -end - ---------------------------------------------------------------- +loadfile(GetDataPath() .. "Scripts/Locale.lua")() local score = {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0} @@ -111,7 +17,7 @@ end function onGameStart() - ShowMission(loc(caption), loc(subcaption), loc(goal), -amBaseballBat, 0); + ShowMission(loc("Hedgewars-Basketball"), loc("Not So Friendly Match"), loc("Bat your opponents through the|baskets and out of the map!"), -amBaseballBat, 0) started = true end @@ -132,16 +38,18 @@ end if (GetGearType(gear) == gtHedgehog) and CurrentHedgehog ~= nil then local clan = GetHogClan(CurrentHedgehog) - local s = GetHogName(gear) .. " " .. loc(drowning) .. "|" .. loc(team) .. " " .. (clan + 1) .. " " - if GetHogClan(CurrentHedgehog) ~= GetHogClan(gear) then - score[clan] = score[clan] + 1 - s = s .. loc(scored) - else - score[clan] = score[clan] - 1 - s = s .. loc(failed) + local s + if clan ~= nil then + if GetHogClan(CurrentHedgehog) ~= GetHogClan(gear) then + score[clan] = score[clan] + 1 + s = string.format(loc("%s is out and Team %d|scored a point!| |Score:"), GetHogName(gear), clan + 1) + else + score[clan] = score[clan] - 1 + s = string.format(loc("%s is out and Team %d|scored a penalty!| |Score:"), GetHogName(gear), clan + 1) + end + s = s .. " " .. score[0] + for i = 1, ClansCount - 1 do s = s .. " - " .. score[i] end + ShowMission(loc("Hedgewars-Basketball"), loc("Not So Friendly Match"), s, -amBaseballBat, 0) end - s = s .. "| |" .. loc(sscore) .. ": " .. score[0] - for i = 1, ClansCount - 1 do s = s .. " - " .. score[i] end - ShowMission(loc(caption), loc(subcaption), s, -amBaseballBat, 0) end end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/Blizzard/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,7 @@ +install(FILES + map.png + map.cfg + mask.png + preview.png + DESTINATION ${SHAREPATH}Data/Maps/Blizzard) +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/Blizzard/map.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,1 @@ +Snow
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/Blizzard/map.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,1067 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Maps/CTF_Blizzard/invulnerable.png" + id="svg2" + version="1.1" + inkscape:version="0.48.0 r9654" + width="4096" + height="2048" + sodipodi:docname="map.svg" + style="display:inline"> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1280" + inkscape:window-height="948" + id="namedview4" + showgrid="false" + inkscape:zoom="0.125" + inkscape:cx="247.9341" + inkscape:cy="1117.0204" + inkscape:window-x="-4" + inkscape:window-y="-3" + inkscape:window-maximized="1" + inkscape:current-layer="layer3" /> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <pattern + patternTransform="matrix(0.87079992,0,0,0.87079992,-433.13705,2136.0975)" + id="pattern19088" + xlink:href="#pattern5305-6" + inkscape:collect="always" /> + <pattern + inkscape:collect="always" + xlink:href="#pattern7462-5-6" + id="pattern17546" + patternTransform="matrix(0.66764313,0,0,0.66764313,262.94016,2135.2024)" /> + <linearGradient + id="linearGradient4907" + inkscape:collect="always"> + <stop + id="stop4909" + offset="0" + style="stop-color:#ff67a4;stop-opacity:1;" /> + <stop + id="stop4911" + offset="1" + style="stop-color:#ff67a4;stop-opacity:0;" /> + </linearGradient> + <linearGradient + osb:paint="solid" + id="linearGradient3779"> + <stop + id="stop3781" + offset="0" + style="stop-color:#e2e4f8;stop-opacity:1;" /> + </linearGradient> + <pattern + id="pattern5305" + patternTransform="translate(-433.13705,2136.0975)" + height="479" + width="639" + patternUnits="userSpaceOnUse"> + <image + id="image5298" + xlink:href="data:image/png;base64,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 gg== " + height="480" + width="640" /> + </pattern> + <pattern + id="pattern5305-6" + patternTransform="translate(-433.13705,2136.0975)" + height="479" + width="639" + patternUnits="userSpaceOnUse"> + <image + id="image5298-9" + xlink:href="data:image/png;base64,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 gg== " + height="480" + width="640" /> + </pattern> + <pattern + id="pattern7238" + patternTransform="translate(262.65599,2130.4407)" + height="479" + width="639" + patternUnits="userSpaceOnUse"> + <image + id="image7235" + xlink:href="data:image/png;base64,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 sXC1AJWzEYgAAAAASUVORK5CYII= " + height="480" + width="640" /> + </pattern> + <pattern + patternTransform="matrix(0.66764313,0,0,0.66764313,262.65599,2130.4407)" + id="pattern7462-5-6" + xlink:href="#pattern7460-2-5" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.66764313,0,0,0.66764313,262.65599,2130.4407)" + id="pattern7460-2-5" + xlink:href="#pattern7458-5-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.66747717,0,0,0.66747717,262.65599,2130.4407)" + id="pattern7458-5-6" + xlink:href="#pattern7456-4-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.66747717,0,0,0.66747717,262.65599,2130.4407)" + id="pattern7456-4-9" + xlink:href="#pattern7454-7-3" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.67759252,0,0,0.67759252,262.65599,2130.4407)" + id="pattern7454-7-3" + xlink:href="#pattern7452-4-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.69270796,0,0,0.69270796,262.65599,2130.4407)" + id="pattern7452-4-7" + xlink:href="#pattern7450-4-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.6978596,0,0,0.6978596,262.65599,2130.4407)" + id="pattern7450-4-4" + xlink:href="#pattern7448-3-5" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.70304462,0,0,0.70304462,262.65599,2130.4407)" + id="pattern7448-3-5" + xlink:href="#pattern7446-0-2" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.70588973,0,0,0.70588973,262.65599,2130.4407)" + id="pattern7446-0-2" + xlink:href="#pattern7444-7-5" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.70851934,0,0,0.70851934,262.65599,2130.4407)" + id="pattern7444-7-5" + xlink:href="#pattern7442-8-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.71115681,0,0,0.71115681,262.65599,2130.4407)" + id="pattern7442-8-4" + xlink:href="#pattern7440-6-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72114007,0,0,0.72114007,262.65599,2130.4407)" + id="pattern7440-6-7" + xlink:href="#pattern7438-8-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72378336,0,0,0.72378336,262.65599,2130.4407)" + id="pattern7438-8-4" + xlink:href="#pattern7436-8-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.73408144,0,0,0.73408144,262.65599,2130.4407)" + id="pattern7436-8-4" + xlink:href="#pattern7434-4-3" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.73641408,0,0,0.73641408,262.65599,2130.4407)" + id="pattern7434-4-3" + xlink:href="#pattern7432-3-0" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72877421,0,0,0.72877421,262.65599,2130.4407)" + id="pattern7432-3-0" + xlink:href="#pattern7430-1-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.73142409,0,0,0.73142409,262.65599,2130.4407)" + id="pattern7430-1-7" + xlink:href="#pattern7428-4-8" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72877421,0,0,0.72877421,262.65599,2130.4407)" + id="pattern7428-4-8" + xlink:href="#pattern7426-9-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72349716,0,0,0.72349716,262.65599,2130.4407)" + id="pattern7426-9-6" + xlink:href="#pattern7424-2-8" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72087016,0,0,0.72087016,262.65599,2130.4407)" + id="pattern7424-2-8" + xlink:href="#pattern7422-0-8" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.71587659,0,0,0.71587659,262.65599,2130.4407)" + id="pattern7422-0-8" + xlink:href="#pattern7420-6-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.70588973,0,0,0.70588973,262.65599,2130.4407)" + id="pattern7420-6-4" + xlink:href="#pattern7418-8-3" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.69804888,0,0,0.69804888,262.65599,2130.4407)" + id="pattern7418-8-3" + xlink:href="#pattern7416-9-1" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.70304462,0,0,0.70304462,262.65599,2130.4407)" + id="pattern7416-9-1" + xlink:href="#pattern7414-2-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.70304462,0,0,0.70304462,262.65599,2130.4407)" + id="pattern7414-2-4" + xlink:href="#pattern7412-6-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72269723,0,0,0.72269723,262.65599,2130.4407)" + id="pattern7412-6-9" + xlink:href="#pattern7410-6-2" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.72513546,0,0,0.72513546,262.65599,2130.4407)" + id="pattern7410-6-2" + xlink:href="#pattern7408-4-0" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.73758088,0,0,0.73758088,262.65599,2130.4407)" + id="pattern7408-4-0" + xlink:href="#pattern7406-9-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.74013169,0,0,0.74013169,262.65599,2130.4407)" + id="pattern7406-9-6" + xlink:href="#pattern7404-5-8" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.76040865,0,0,0.76040865,262.65599,2130.4407)" + id="pattern7404-5-8" + xlink:href="#pattern7402-0-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.77342944,0,0,0.77342944,262.65599,2130.4407)" + id="pattern7402-0-9" + xlink:href="#pattern7400-4-2" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.77842314,0,0,0.77842314,262.65599,2130.4407)" + id="pattern7400-4-2" + xlink:href="#pattern7398-8-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.78104862,0,0,0.78104862,262.65599,2130.4407)" + id="pattern7398-8-6" + xlink:href="#pattern7396-7-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.78104862,0,0,0.78104862,262.65599,2130.4407)" + id="pattern7396-7-6" + xlink:href="#pattern7394-1-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.78604163,0,0,0.78604163,262.65599,2130.4407)" + id="pattern7394-1-4" + xlink:href="#pattern7392-7-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.80129529,0,0,0.80129529,262.65599,2130.4407)" + id="pattern7392-7-9" + xlink:href="#pattern7390-2-5" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.81922597,0,0,0.81922597,262.65599,2130.4407)" + id="pattern7390-2-5" + xlink:href="#pattern7388-7-0" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.8218884,0,0,0.8218884,262.65599,2130.4407)" + id="pattern7388-7-0" + xlink:href="#pattern7386-2-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.82224677,0,0,0.82224677,262.65599,2130.4407)" + id="pattern7386-2-4" + xlink:href="#pattern7384-2-8" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.82492976,0,0,0.82492976,262.65599,2130.4407)" + id="pattern7384-2-8" + xlink:href="#pattern7382-6-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.83572515,0,0,0.83572515,262.65599,2130.4407)" + id="pattern7382-6-7" + xlink:href="#pattern7380-1-1" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.83843955,0,0,0.83843955,262.65599,2130.4407)" + id="pattern7380-1-1" + xlink:href="#pattern7378-0-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.8438866,0,0,0.8438866,262.65599,2130.4407)" + id="pattern7378-0-7" + xlink:href="#pattern7376-6-2" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.85876061,0,0,0.85876061,262.65599,2130.4407)" + id="pattern7376-6-2" + xlink:href="#pattern7374-1-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.86217942,0,0,0.86217942,262.65599,2130.4407)" + id="pattern7374-1-7" + xlink:href="#pattern7372-5-2" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.86498423,0,0,0.86498423,262.65599,2130.4407)" + id="pattern7372-5-2" + xlink:href="#pattern7370-9-2" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.8706098,0,0,0.8706098,262.65599,2130.4407)" + id="pattern7370-9-2" + xlink:href="#pattern7368-4-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.88051713,0,0,0.88051713,262.65599,2130.4407)" + id="pattern7368-4-6" + xlink:href="#pattern7366-9-1" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.88615694,0,0,0.88615694,262.65599,2130.4407)" + id="pattern7366-9-1" + xlink:href="#pattern7364-0-0" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.88898452,0,0,0.88898452,262.65599,2130.4407)" + id="pattern7364-0-0" + xlink:href="#pattern7362-9-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.89181715,0,0,0.89181715,262.65599,2130.4407)" + id="pattern7362-9-6" + xlink:href="#pattern7360-1-1" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.9024417,0,0,0.9024417,262.65599,2130.4407)" + id="pattern7360-1-1" + xlink:href="#pattern7358-7-5" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.91444254,0,0,0.91444254,262.65599,2130.4407)" + id="pattern7358-7-5" + xlink:href="#pattern7356-7-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.92296437,0,0,0.92296437,262.65599,2130.4407)" + id="pattern7356-7-9" + xlink:href="#pattern7354-1-4" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.92659149,0,0,0.92659149,262.65599,2130.4407)" + id="pattern7354-1-4" + xlink:href="#pattern7352-1-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.92945745,0,0,0.92945745,262.65599,2130.4407)" + id="pattern7352-1-9" + xlink:href="#pattern7350-5-0" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.932328,0,0,0.932328,262.65599,2130.4407)" + id="pattern7350-5-0" + xlink:href="#pattern7348-9-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.93520311,0,0,0.93520311,262.65599,2130.4407)" + id="pattern7348-9-9" + xlink:href="#pattern7346-7-1" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.93808273,0,0,0.93808273,262.65599,2130.4407)" + id="pattern7346-7-1" + xlink:href="#pattern7344-7-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.9430131,0,0,0.9430131,262.65599,2130.4407)" + id="pattern7344-7-7" + xlink:href="#pattern7342-6-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.94794419,0,0,0.94794419,262.65599,2130.4407)" + id="pattern7342-6-7" + xlink:href="#pattern7340-7-1" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.95000176,0,0,0.95000176,262.65599,2130.4407)" + id="pattern7340-7-1" + xlink:href="#pattern7338-3-1" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.952068,0,0,0.952068,262.65599,2130.4407)" + id="pattern7338-3-1" + xlink:href="#pattern7336-6-5" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.95547347,0,0,0.95547347,262.65599,2130.4407)" + id="pattern7336-6-5" + xlink:href="#pattern7334-5-9" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.95969517,0,0,0.95969517,262.65599,2130.4407)" + id="pattern7334-5-9" + xlink:href="#pattern7332-6-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.96677012,0,0,0.96677012,262.65599,2130.4407)" + id="pattern7332-6-7" + xlink:href="#pattern7330-3-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.97525767,0,0,0.97525767,262.65599,2130.4407)" + id="pattern7330-3-7" + xlink:href="#pattern7328-9-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.96959467,0,0,0.96959467,262.65599,2130.4407)" + id="pattern7328-9-6" + xlink:href="#pattern7326-4-7" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.97242386,0,0,0.97242386,262.65599,2130.4407)" + id="pattern7326-4-7" + xlink:href="#pattern7324-8-3" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.97525767,0,0,0.97525767,262.65599,2130.4407)" + id="pattern7324-8-3" + xlink:href="#pattern7322-1-6" + inkscape:collect="always" /> + <pattern + patternTransform="matrix(0.98020509,0,0,0.98020509,262.65599,2130.4407)" + id="pattern7322-1-6" + xlink:href="#pattern7238-2-5" + inkscape:collect="always" /> + <pattern + id="pattern7238-2-5" + patternTransform="translate(262.65599,2130.4407)" + height="480" + width="640" + patternUnits="userSpaceOnUse"> + <image + id="image7235-9-6" + xlink:href="data:image/png;base64,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 sXC1AJWzEYgAAAAASUVORK5CYII= " + height="480" + width="640" /> + </pattern> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="1563.5236" + x2="361.33154" + y1="1750.3082" + x1="361.33154" + id="linearGradient4913" + xlink:href="#linearGradient4907" + inkscape:collect="always" /> + <linearGradient + y2="1563.5236" + x2="361.33154" + y1="1750.3082" + x1="361.33154" + gradientUnits="userSpaceOnUse" + id="linearGradient4917" + xlink:href="#linearGradient4907" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="1756.1295" + x2="359.73337" + y1="1743.3672" + x1="359.73337" + id="linearGradient4001-69" + xlink:href="#linearGradient3995-3" + inkscape:collect="always" /> + <linearGradient + id="linearGradient3995-3" + inkscape:collect="always"> + <stop + id="stop3997-7" + offset="0" + style="stop-color:#e55c93;stop-opacity:1;" /> + <stop + id="stop3999-4" + offset="1" + style="stop-color:#e55c93;stop-opacity:0.102" /> + </linearGradient> + <filter + id="filter4007-5" + inkscape:collect="always" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur4009-2" + stdDeviation="0.14945312" + inkscape:collect="always" /> + </filter> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="1741.8876" + x2="360.14432" + y1="1733.5043" + x1="360.14432" + id="linearGradient4001-6-5" + xlink:href="#linearGradient3995-5-4" + inkscape:collect="always" /> + <linearGradient + id="linearGradient3995-5-4" + inkscape:collect="always"> + <stop + id="stop3997-6-7" + offset="0" + style="stop-color:#e55c93;stop-opacity:1;" /> + <stop + id="stop3999-9-4" + offset="1" + style="stop-color:#e55c93;stop-opacity:0.102" /> + </linearGradient> + <filter + id="filter4007-3-4" + inkscape:collect="always" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur4009-7-3" + stdDeviation="0.14945312" + inkscape:collect="always" /> + </filter> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="1756.1295" + x2="359.73337" + y1="1743.3672" + x1="359.73337" + id="linearGradient3210" + xlink:href="#linearGradient3995-3" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="1741.8876" + x2="360.14432" + y1="1733.5043" + x1="360.14432" + id="linearGradient3222" + xlink:href="#linearGradient3995-5-4" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3995-3" + id="linearGradient3602" + gradientUnits="userSpaceOnUse" + x1="359.73337" + y1="1743.3672" + x2="359.73337" + y2="1756.1295" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3995-5-4" + id="linearGradient3604" + gradientUnits="userSpaceOnUse" + x1="360.14432" + y1="1733.5043" + x2="360.14432" + y2="1741.8876" /> + </defs> + <rect + id="rect5308" + y="2136.0974" + x="-433.13705" + height="480" + width="640" + style="fill:url(#pattern5305);stroke:none" /> + <g + style="display:none" + inkscape:label="Details" + id="layer5" + inkscape:groupmode="layer"> + <g + id="g4858"> + <path + style="color:#000000;fill:url(#linearGradient4913);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 332.34018,1560.8035 55.15433,0 -6.89429,188.0904 -41.36575,0 z" + id="rect4904" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + transform="matrix(0.83682151,0,0,0.83682151,58.819167,276.10012)" /> + <path + transform="matrix(0.40237381,0,0,0.66460253,215.18442,580.26581)" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4915" + d="m 332.34018,1560.8035 55.15433,0 -6.89429,188.0904 -41.36575,0 z" + style="color:#000000;fill:url(#linearGradient4917);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + </g> + <use + height="2048" + width="4096" + transform="translate(3375.4576,0)" + id="use4888" + xlink:href="#g4858" + y="0" + x="0" /> + <image + transform="translate(-260.8427,1722)" + width="100" + height="100" + xlink:href="data:image/png;base64,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 AAAAAElFTkSuQmCC " + id="image3244" /> + <image + transform="translate(-170.4457,1703.1005)" + width="46" + height="110" + xlink:href="data:image/png;base64,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 " + id="image3255" /> + </g> + <g + inkscape:label="Invulnerable" + id="layer3" + inkscape:groupmode="layer" + style="display:inline"> + <path + style="color:#000000;fill:url(#pattern17546);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 2045.2188,211.46875 c -12.6557,0.24458 -16.3185,2.34146 -24.0626,6.8125 -12.1415,7.00994 -18.246,16.18161 -31.875,19.46875 -14.5854,3.51782 -30.9605,-6.2921 -45,-1 -15.6732,5.90798 -21.7156,27.1484 -37,34 -9.1705,4.11096 -21.0232,-1.51849 -30,3 -4.4263,2.22796 -6.141,7.89132 -10,11 -7.7917,6.27686 -20.0728,6.93892 -26,15 -11.7367,15.96257 -18.7654,39.04442 -13,58 8.0275,26.3924 43.6686,34.76745 60,57 11.6496,15.85905 20.8711,34.00221 26,53 3.6584,13.55052 -0.6516,28.4477 3,42 4.5381,16.84129 19.0653,30.00765 23,47 2.3312,10.06696 -3.1385,21.1548 0,31 3.8486,12.07248 16.9478,19.37971 22,31 4.6136,10.61149 11.3334,23.27099 7,34 -2.8738,7.11548 -12.1466,9.54755 -19,13 -8.1905,4.12608 -19.401,2.63094 -26,9 -11.3134,10.91924 -9.0675,30.42438 -17,44 -7.407,12.67639 -17.4657,23.77325 -28,34 -12.1032,11.7501 -33.0517,15.62865 -40,31 -4.4021,9.73876 2.8036,21.34277 2,32 -0.9487,12.58261 -12.1547,25.08528 -8,37 7.0968,20.35171 33.3582,27.30312 50,41 7.6782,6.31941 16.9104,11.13843 23,19 10.5931,13.67517 10.8869,33.74402 22,47 7.0703,8.43348 16.2207,16.78284 27,19 6.3396,1.30393 12.5297,-3.84768 19,-4 22.0939,-0.52011 59.487,6.81052 73.0313,7 0.1773,0.002 0.3934,0 0.5625,0 13.5392,-0.18738 50.9654,-7.52019 73.0625,-7 6.4704,0.15232 12.6605,5.30393 19,4 10.7794,-2.21716 19.9298,-10.56652 27,-19 11.1131,-13.25598 11.407,-33.32483 22,-47 6.0897,-7.86157 15.3219,-12.68059 23,-19 16.6418,-13.69688 42.9033,-20.64829 50,-41 4.1547,-11.91472 -7.0512,-24.41739 -8,-37 -0.8036,-10.65723 6.4021,-22.26124 2,-32 -6.9482,-15.37135 -27.8967,-19.2499 -40,-31 -10.5342,-10.22675 -20.5929,-21.32361 -28,-34 -7.9325,-13.57562 -5.6866,-33.08076 -17,-44 -6.599,-6.36906 -17.8094,-4.87392 -26,-9 -6.8534,-3.45245 -16.1262,-5.88452 -19,-13 -4.3333,-10.72901 2.3864,-23.38851 7,-34 5.0522,-11.62029 18.1515,-18.92752 22,-31 3.1385,-9.8452 -2.3311,-20.93304 0,-31 3.9348,-16.99235 18.462,-30.15871 23,-47 3.6517,-13.5523 -0.6583,-28.44948 3,-42 5.129,-18.99779 14.3504,-37.14095 26,-53 16.3314,-22.23255 51.9725,-30.6076 60,-57 5.7655,-18.95558 -1.2632,-42.03743 -13,-58 -5.9271,-8.06108 -18.2082,-8.72314 -26,-15 -3.859,-3.10868 -5.5737,-8.77204 -10,-11 -8.9768,-4.51849 -20.8294,1.11096 -30,-3 -15.2843,-6.8516 -21.3267,-28.09202 -37,-34 -14.0394,-5.2921 -30.4145,4.51782 -45,1 -13.629,-3.28714 -19.7334,-12.45881 -31.875,-19.46875 -8.151,-4.70599 -11.8356,-6.75839 -26.1875,-6.8125 -0.1964,0 -0.37,-7.3e-4 -0.5625,0 -0.7165,0.003 -1.4287,-0.0128 -2.0937,0 z m 2,927.12505 c -11.8967,0.077 -21.9971,1.8677 -32.9376,5.1562 -9.1412,2.7477 -18.4747,5.3817 -28,6 -16.3532,1.0615 -33.1828,-8.2863 -49,-4 -54.9809,14.8994 -115.1322,46.7508 -140,98 -15.4495,31.8395 5.3681,70.6158 6,106 0.2859,16.0009 -10.2217,34.9206 -1,48 7.2889,10.338 24.973,5.8029 36,12 9.8971,5.5621 16.8214,15.3187 26,22 11.741,8.5463 25.6832,13.8995 37,23 14.1446,11.3745 30.4406,22.4985 38,39 3.2051,6.9964 5.3336,16.0639 2,23 -2.6031,5.4162 -11.4748,5.1333 -15,10 -3.6529,5.0432 -3.0887,12.0734 -5,18 -2.0715,6.4237 -2.9287,13.6166 -7,19 -5.4694,7.2323 -13.994,11.7423 -22,16 -10.3341,5.496 -23.0386,5.8542 -33,12 -7.0236,4.3334 -14.4982,9.5268 -18,17 -2.2673,4.8389 0.1021,10.7711 -1,16 -1.3918,6.6044 -1.5463,15.0233 -7,19 -25.4746,18.5761 -62.9733,3.6914 -94.5,4 -29.3395,0.2872 -58.6822,-0.8343 -88,-2 -14.6786,-0.5836 -32.6639,-11.8433 -44,-2.5 -39.0697,32.2017 -46.8297,107.2549 -20.5,150.5 8.279,13.5979 29.1498,14.5113 45,16 15.114,1.4195 29.8388,-6.2389 45,-7 12.3359,-0.6193 24.6751,1.193 37,2 17.3475,1.1359 34.6631,5.2848 52,4 11.9348,-0.8844 25.8107,-0.3333 35,-8 3.8986,-3.2526 4.2583,-9.2309 6,-14 2.7492,-7.5276 1.7472,-16.9478 7,-23 3.6168,-4.167 10.2102,-4.261 15,-7 5.6185,-3.2128 9.8489,-8.9869 16,-11 10.4593,-3.423 23.0418,3.6847 33,-1 10.0446,-4.7253 14.606,-16.7204 22,-25 9.5886,-10.737 16.3853,-25.0653 29,-32 8.5961,-4.7255 21.6351,1.4793 29,-5 3.404,-2.9947 0.7474,-9.8415 4,-13 7.1939,-6.9859 19.0953,-6.4342 29,-8 14.8307,-2.3446 24.4897,1.1562 38.625,1.1562 5.8758,0 12.8501,-2.2955 18.6876,-2.375 5.8382,0.079 12.8103,2.375 18.6874,2.375 14.1355,0 23.8257,-3.5008 38.6563,-1.1562 9.9047,1.5658 21.8061,1.0141 29,8 3.2526,3.1585 0.596,10.0053 4,13 7.3649,6.4793 20.404,0.2745 29,5 12.6147,6.9347 19.4115,21.263 29,32 7.394,8.2796 11.9554,20.2747 22,25 9.9582,4.6847 22.5408,-2.423 33,1 6.1511,2.0131 10.3816,7.7872 16,11 4.7898,2.739 11.3833,2.833 15,7 5.2529,6.0522 4.2508,15.4724 7,23 1.7417,4.7691 2.1015,10.7474 6,14 9.1894,7.6667 23.0652,7.1156 35,8 17.337,1.2848 34.6526,-2.8641 52,-4 12.3249,-0.807 24.6642,-2.6193 37,-2 15.1613,0.7611 29.8861,8.4195 45,7 15.8502,-1.4887 36.721,-2.4021 45,-16 26.3297,-43.2451 18.5697,-118.2983 -20.5,-150.5 -11.3361,-9.3433 -29.3213,1.9164 -44,2.5 -29.3177,1.1657 -58.6605,2.2872 -88,2 -31.5267,-0.3086 -69.0254,14.5761 -94.5,-4 -5.4536,-3.9767 -5.6082,-12.3956 -7,-19 -1.102,-5.2289 1.2674,-11.1611 -1,-16 -3.5017,-7.4732 -10.9763,-12.6666 -18,-17 -9.9614,-6.1458 -22.6659,-6.504 -33,-12 -8.0059,-4.2577 -16.5305,-8.7677 -22,-16 -4.0712,-5.3834 -4.9284,-12.5763 -7,-19 -1.9113,-5.9266 -1.3471,-12.9568 -5,-18 -3.5251,-4.8667 -12.3969,-4.5838 -15,-10 -3.3336,-6.9361 -1.2051,-16.0036 2,-23 7.5594,-16.5015 23.8555,-27.6255 38,-39 11.3168,-9.1005 25.2591,-14.4537 37,-23 9.1787,-6.6813 16.1029,-16.4379 26,-22 11.027,-6.1971 28.7112,-1.662 36,-12 9.2217,-13.0794 -1.2858,-31.9991 -1,-48 0.6319,-35.3842 21.4496,-74.1605 6,-106 -24.8678,-51.2492 -85.0191,-83.1006 -140,-98 -15.8172,-4.2863 -32.6468,5.0615 -49,4 -9.5252,-0.6183 -18.8588,-3.2523 -28,-6 -10.9405,-3.2885 -21.0408,-5.0793 -32.9375,-5.1562 -0.2638,0 -0.5156,0 -0.7812,0 z M 815.59375,1688.375 c -5.16026,0.098 -10.55395,1.607 -15.3125,3.375 -16.12903,5.9925 -27.95961,17.7189 -40.5,29.5 -16.52366,15.5232 -35.71956,30.1294 -47.5,49.5 -5.71312,9.3941 -6.28933,21.1389 -8,32 -3.84657,24.4218 -4.59961,49.2803 -5,74 -0.3079,19.0092 -3.34778,38.7559 2,57 3.95727,13.5003 8.16245,31.9315 21.53125,36.3125 20.4733,6.7091 40.83243,-14.5025 59.46875,-25.3125 10.49564,-6.088 17.49972,-18.1314 29,-22 11.68967,-3.9323 24.68125,0.5995 37,0 13.71532,-0.6675 28.58412,1.8653 41,-4 11.93465,-5.6379 16.75306,-21.0914 28,-28 16.43686,-10.0966 39.09256,-7.0883 55,-18 17.38709,-11.9266 29.84655,-30.5212 39.99995,-49 8.4136,-15.3124 26.4149,-35.3641 16.5,-49.75 -9.751,-14.1483 -34.33322,-2.9987 -51.49995,-2.25 -12.76371,0.5566 -25.89291,0.9207 -38,5 -10.18698,3.4323 -22.25034,17.5 -33,17.5 -15.53764,0 -25.7512,-0.5 -41,-0.5 -6.54895,0 -10.97071,-12.6321 -12.5,-19 -3.66421,-15.2576 -10.66677,-29.7427 -9,-44 1.63596,-13.9937 -5.23525,-31.7482 -17,-39.5 -3.29694,-2.1724 -7.17396,-2.9509 -11.1875,-2.875 z m 2464.00005,0 c -4.0136,-0.076 -7.8594,0.7026 -11.1563,2.875 -11.7648,7.7518 -18.636,25.5063 -17,39.5 1.6668,14.2573 -5.3358,28.7424 -9,44 -1.5293,6.3679 -5.9511,19 -12.5,19 -15.2488,0 -25.4624,0.5 -41,0.5 -10.7497,0 -22.813,-14.0677 -33,-17.5 -12.1071,-4.0793 -25.2363,-4.4434 -38,-5 -17.1667,-0.7487 -41.7489,-11.8983 -51.5,2.25 -9.9148,14.3859 8.0864,34.4376 16.5,49.75 10.1534,18.4788 22.6129,37.0734 40,49 15.9074,10.9117 38.5631,7.9034 55,18 11.2469,6.9086 16.0653,22.3621 28,28 12.4159,5.8653 27.2847,3.3325 41,4 12.3187,0.5995 25.3103,-3.9323 37,0 11.5003,3.8686 18.5044,15.912 29,22 18.6363,10.81 38.9954,32.0216 59.4687,25.3125 13.3689,-4.381 17.574,-22.8122 21.5313,-36.3125 5.3478,-18.2441 2.3079,-37.9908 2,-57 -0.4004,-24.7197 -1.1534,-49.5782 -5,-74 -1.7107,-10.8611 -2.2869,-22.6059 -8,-32 -11.7804,-19.3706 -30.9763,-33.9768 -47.5,-49.5 -12.5404,-11.7811 -24.371,-23.5075 -40.5,-29.5 -4.7586,-1.768 -10.1835,-3.2774 -15.3437,-3.375 z m -1232.4063,186.875 0,0.031 c -9.8918,0.3821 -17.1486,7.2924 -24.9063,8.4688 -8.9043,1.3503 -17.9978,-1.2677 -27,-1 -10.3769,0.3086 -23.1966,-3.8473 -31,3 -3.3427,2.9332 -4.3227,8.7541 -3,13 3.0879,9.9117 16.9861,12.5377 23,21 5.8823,8.277 5.5384,20.1668 12,28 7.1776,8.7009 21.5405,9.7536 28,19 3.9356,5.6333 -0.1934,15.5 5,20 4.0089,3.4736 12.9922,2.7773 18.3126,2.6875 5.3194,0.089 14.3332,0.7875 18.3437,-2.6875 5.1934,-4.5 1.0645,-14.3667 5,-20 6.4596,-9.2464 20.8225,-10.2991 28,-19 6.4616,-7.8332 6.1177,-19.723 12,-28 6.014,-8.4623 19.9121,-11.0883 23,-21 1.3228,-4.2459 0.3428,-10.0668 -3,-13 -7.8033,-6.8473 -20.623,-2.6914 -31,-3 -9.0022,-0.2677 -18.0956,2.3503 -27,1 -7.754,-1.1759 -15.0216,-8.0807 -24.9063,-8.4688 l 0,-0.031 c -0.1483,0 -0.2903,0.028 -0.4374,0.031 -0.1391,0 -0.2662,-0.031 -0.4063,-0.031 z" + id="path7475" + inkscape:connector-curvature="0" /> + <g + style="display:inline" + id="g15284" + transform="matrix(1,0,0,-1,-48.648572,3784.4895)"> + <path + style="fill:#565656;fill-opacity:1;stroke:none" + d="m -45,1897.75 c -5.335577,0 -6.846648,0.5746 -10.25,1 l -16,2 c -4.174832,0.5219 -8.292704,-1.757 -12.5,-1.75 -7.484265,0.012 -14.7552,2.73 -22.22552,3.1868 -3.27467,0.2003 -6.609,0.3681 -9.84034,-0.1994 -5.09142,-0.8941 -9.54001,-4.4775 -14.68414,-4.9874 -11.48479,-1.1385 -20.74473,0.754 -32.55936,0.754 l -0.0732,-7.254 c 12.21001,0 20.66904,-2.353 32.13258,-2.5 10.58344,-0.1357 20.91601,3.9172 31.5,4 10.564293,0.083 20.969116,-2.6564 31.5,-3.5 8.121574,-0.6506 14.026701,2 23,2 z" + id="path15282" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssssssccssscc" /> + <path + sodipodi:nodetypes="csssccssssssc" + inkscape:connector-curvature="0" + id="path15276" + d="m -163.13258,1890.5 c 12.21001,0 20.66904,-2.353 32.13258,-2.5 10.58344,-0.1357 20.91601,3.9172 31.5,4 10.564293,0.083 20.969116,-2.6564 31.5,-3.5 8.121574,-0.6506 14.026701,2 23,2 m 0,7.25 c -5.335577,0 -6.846648,0.5746 -10.25,1 l -16,2 c -4.174832,0.5219 -8.292704,-1.757 -12.5,-1.75 -7.484265,0.012 -14.7552,2.73 -22.22552,3.1868 -3.27467,0.2003 -6.609,0.3681 -9.84034,-0.1994 -5.09142,-0.8941 -9.54001,-4.4775 -14.68414,-4.9874 -11.48479,-1.1385 -20.74473,0.754 -32.55936,0.754" + style="fill:none;stroke:#4a4a4a;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + style="display:inline" + id="g3501"> + <path + sodipodi:nodetypes="ccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscscccsccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscsccccccccsccscscc" + inkscape:connector-curvature="0" + style="fill:#565656;fill-opacity:1;stroke:none" + d="m 1937.6482,243.74735 c 4.0316,-3.5067 4.8748,-3.09588 8.2369,-3.79698 l 14.0659,1.19968 c 4.0952,0.99047 8.2527,-0.34721 12.4195,0.27872 7.4123,1.113 18.0773,3.45332 25.1419,0.95218 3.0969,-1.09634 7.3702,-3.33608 9.7107,-5.64178 3.6879,-3.63289 4.9764,-9.62327 8.8888,-13.01342 8.735,-7.56893 17.3175,-9.21656 29.1389,-9.70454 l -0.2259,-7.25016 c -12.217,0.50432 -24.2395,2.80977 -33.699,9.31675 -8.7334,6.00743 -13.0332,16.38964 -23.3833,18.67338 -10.3308,2.27984 -19.7101,-4.64175 -30.1817,-6.14527 -8.0759,-1.15954 -18.0901,3.76406 -24.8704,9.66157 l 4.7577,5.46987 m -95.0894,58.62437 c 3.0563,-4.38266 4.0655,-3.81769 7.236,-5.13801 l 15.5322,-4.6842 c 3.9234,-1.5354 7.1506,-7.58498 9.5648,-11.03846 4.2942,-6.14357 8.6365,-3.31805 16.085,-2.48312 3.2651,0.36606 7.5584,0.78102 10.7383,-0.0431 5.0105,-1.29842 10.1878,-7.67025 13.7571,-11.41976 7.9687,-8.37123 13.196,-16.00166 22.1233,-23.76658 l -4.705,-5.521 c -9.226,8.02477 -14.1226,14.76025 -22.9144,22.14392 -8.1169,6.81681 -14.6607,7.82808 -25.2483,8.31757 -10.5679,0.48893 -17.5877,10.78789 -27.6211,14.14319 -7.7379,2.58766 -15.354,7.97218 -20.4941,15.34288 l 5.9462,4.14666 m 28.2624,92.97936 c -4.3299,-3.13115 -5.4005,-4.41359 -7.9924,-6.66759 l -11.7792,-10.67489 c -3.0319,-2.92569 -7.0852,-3.3094 -9.9552,-6.39411 -5.1056,-5.48702 -5.4554,-10.79773 -6.7385,-18.18216 -0.5623,-3.23703 -0.5962,-5.23581 -1.3077,-8.44329 -1.121,-5.05384 -4.3436,-8.78542 -3.7412,-13.92672 1.3447,-11.4785 6.4454,-18.92358 13.2131,-28.62815 l -5.9075,-4.20909 c -6.9942,10.02934 -13.394,19.24265 -15.9899,30.42579 -2.3965,10.32457 1.8957,23.96548 5.9424,33.76245 4.0394,9.77861 11.8086,20.34628 19.7401,27.34794 6.1169,5.39979 12.9858,6.19849 20.2678,11.46442 l 4.2482,-5.8746 m 47.5996,105.23818 c -0.3561,-5.33143 0.396,-6.62875 0.8801,-10.02937 l 1.7022,-16.68965 c 0.052,-4.21286 -3.4441,-8.66184 -4.6939,-12.68578 -2.2237,-7.15796 -2.7009,-15.62475 -5.5316,-22.56508 -1.2408,-3.04237 -2.8391,-6.52983 -4.9286,-9.06538 -3.2921,-3.99513 -8.7876,-6.23566 -12.1249,-10.19343 -7.4509,-8.83607 -13.2534,-17.03639 -22.8411,-23.96975 l -4.31,5.83487 c 9.9087,7.16538 13.0701,13.27153 19.4493,22.8179 5.8896,8.81345 13.9933,15.02617 18.2123,24.75048 4.2115,9.70607 4.9683,18.80846 4.8324,29.3874 -0.1048,8.15865 1.5215,13.92464 2.1204,22.89096 l 7.2334,-0.48317 m 38.5956,105.87307 c -3.5235,-4.01723 -4.182,-5.486 -6.1333,-8.31268 l -5.5199,-12.78954 c -0.6666,-4.16008 -2.3622,-6.25875 -1.8642,-10.44268 0.8853,-7.44276 4.1102,-17.37828 2.1848,-24.62197 -0.8439,-3.17535 -2.6022,-7.41392 -4.6292,-9.99961 -3.1936,-4.07413 -8.8202,-6.27023 -11.962,-10.38493 -7.0144,-9.18643 -9.8744,-17.44331 -10.6629,-29.24875 l -7.2423,0.41028 c 0.815,12.20051 4.0761,23.29917 9.9858,33.1432 5.456,9.08825 15.1535,14.33851 16.2845,24.87574 1.1293,10.51759 -6.0461,23.71835 -2.4411,33.66486 2.7803,7.6709 10.6236,11.73054 16.5495,18.48666 l 5.4503,-4.78058 m -38.7724,84.96538 c 1.4047,-5.15545 2.3244,-5.73915 4.3338,-8.52473 l 10.3739,-6.83213 c 4.1171,-0.89326 7.0138,-3.41894 11.1396,-4.27357 7.3391,-1.52072 16.7825,-3.06709 23.3216,-6.72888 2.8666,-1.60512 8.3515,-8.16104 8.7534,-11.42153 0.6333,-5.13733 -3.0715,-12.09993 -4.9004,-16.94269 -4.0832,-10.81192 -6.3959,-21.29395 -14.1981,-30.18934 l -5.5017,4.72808 c 8.0633,9.19309 8.0426,16.1876 10.8789,27.31244 2.6186,10.27075 3.803,16.36384 -5.8255,20.79696 -9.6105,4.42519 -21.7868,2.70644 -31.5621,6.75269 -7.5389,3.12053 -11.4457,14.74655 -13.808,23.41692 l 6.9946,1.90578 m -73.5532,88.40743 c 3.4197,-4.10528 4.6314,-3.98757 7.6629,-5.60202 l 14.46,-6.2726 c 3.8919,-1.61421 6.7897,-5.83361 10.1718,-8.34654 6.0162,-4.47057 13.3547,-8.64182 18.7687,-13.82537 2.3733,-2.27221 4.9076,-5.09967 6.5109,-7.96737 2.5262,-4.5184 2.4731,-10.64975 4.8093,-15.26962 5.2157,-10.31437 8.0438,-19.6363 11.1542,-31.05209 l -6.9792,-1.97758 c -3.2145,11.79782 -5.2096,18.1685 -11.4984,27.77466 -5.8059,8.86867 -8.5203,18.60004 -15.8467,26.26077 -7.3125,7.64673 -16.3071,10.92517 -25.9327,15.31738 -7.4235,3.38733 -13.0994,9.41646 -18.8507,16.32067 l 5.5699,4.63971 m 18.7252,98.15419 c -4.6237,-2.67878 -5.4928,-3.86987 -8.1146,-6.08873 l -10.4172,-10.83204 c -2.5102,-3.38385 -5.8613,-3.96122 -7.3701,-7.89472 -2.6844,-6.99706 1.7039,-10.74689 4.9166,-17.51894 1.4083,-2.96856 2.9961,-6.39324 3.4876,-9.64165 0.7744,-5.11829 -1.8515,-11.90404 -3.1713,-16.90969 -2.9469,-11.17562 -5.6725,-20.11913 1.8999,-29.20951 l -5.526,-4.6986 c -7.8258,9.39459 -7.0132,23.48167 -5.3389,34.84 1.5458,10.48629 -0.4079,18.0179 -3.1377,28.25905 -2.7243,10.22218 0.7627,26.26835 8.0829,33.90709 5.6454,5.89111 13.2784,7.55579 21.0544,12.06091 l 3.6344,-6.27317 m 74.1574,87.89397 c -3.9585,-3.58926 -4.1864,-5.03328 -6.1079,-7.88026 l -5.6065,-13.56886 c -1.1309,-4.05868 -4.381,-6.87122 -5.7231,-10.86535 -2.388,-7.10492 -2.9788,-16.5425 -6.8046,-22.98766 -1.677,-2.82532 -5.0642,-6.82345 -7.8781,-8.51932 -4.4338,-2.67212 -10.6348,-2.63178 -15.1173,-5.22179 -10.0076,-5.78239 -16.6161,-12.88579 -26.8544,-18.81742 l -3.6998,6.23987 c 10.5809,6.13014 15.6706,12.65332 24.8473,19.55367 8.4722,6.37058 18.417,8.36554 23.34,17.75162 4.9142,9.36845 4.2548,20.97244 8.0107,30.86255 2.8967,7.62741 10.0667,12.78726 16.724,18.82363 l 4.8697,-5.37068 m 112.3155,13.23436 c -5.3386,0.21896 -6.4074,-0.6331 -9.7487,-1.42927 l -15.5748,-3.92004 c -4.0784,-1.05892 -8.4864,0.65291 -12.6672,0.12802 -7.4372,-0.93327 -14.6089,-4.50737 -22.0286,-5.57035 -3.2525,-0.46602 -6.9295,-0.79768 -10.1826,-0.33768 -5.1258,0.72473 -10.535,5.22393 -15.1944,7.48035 -10.4027,5.03778 -18.0968,-1.59135 -26.8622,-9.53909 l -4.9267,5.32439 c 9.0587,8.2137 23.338,16.44445 34.2548,12.89129 10.0787,-3.28039 17.9182,-6.10502 28.4692,-5.08577 10.5313,1.01701 20.4302,5.07487 30.7789,7.27707 7.9811,1.69837 15.0009,0.39253 23.9794,0.0243 l -0.2971,-7.2432 m 111.0124,-16.47035 c -3.6953,3.85924 -4.9907,4.10799 -7.9318,5.88215 l -13.3038,4.57864 c -4.1854,0.47933 -5.5684,1.47664 -9.5208,0.016 -7.0309,-2.59787 -16.3571,-5.02757 -23.851,-4.87529 -3.285,0.0667 -6.7898,0.2281 -9.9495,1.12874 -4.9785,1.419 -9.0722,5.5296 -14.1224,6.66866 -11.2751,2.54316 -20.4385,2.5796 -32.26,3.06445 l 0.224,7.25021 c 12.2171,-0.50108 21.233,-0.0566 32.6449,-1.3214 10.5358,-1.16771 20.0199,-6.55564 30.6109,-6.98941 10.5714,-0.4333 22.9398,8.79718 33.0751,5.76624 7.8166,-2.3375 13.4058,-9.66504 19.6204,-16.15545 l -5.236,-5.01353 m 74.9643,-87.04588 c -4.56,2.78564 -6.155,2.9359 -9.3175,4.2765 l -15.0741,7.21062 c -3.6578,2.09136 -5.4308,6.46532 -8.8578,8.91675 -6.096,4.36115 -15.1961,7.82876 -20.017,13.56759 -2.1134,2.51563 -4.6213,6.75358 -5.4281,9.93828 -1.2713,5.0179 0.5389,10.93719 -0.6271,15.98117 -2.6033,11.26122 -7.4124,18.55368 -15.5948,27.09923 l 5.1881,5.06926 c 8.4564,-8.83154 14.8993,-17.97082 18.7617,-28.78315 3.5658,-9.98224 2.4262,-20.20087 9.8259,-27.7901 7.3856,-7.57535 17.417,-10.60523 26.5626,-15.92387 7.0532,-4.10181 10.6886,-8.69067 18.3575,-13.37553 l -3.7794,-6.18675 m 11.6329,-98.96256 c 3.9683,3.57818 3.668,4.47977 4.7889,7.72606 l -1.2516,13.00393 c -1.3281,3.99872 -0.2529,8.75648 -0.727,12.94287 -0.8427,7.44713 -0.2389,17.35104 2.126,24.46364 1.0366,3.11788 1.8136,5.13367 3.0673,8.1705 1.9753,4.78495 5.2454,7.18187 3.5511,12.07296 -3.7827,10.91989 -13.0299,14.37266 -23.1271,20.54095 l 3.7189,6.22839 c 10.4352,-6.37472 22.429,-12.18386 27.3698,-22.54616 4.5615,-9.56674 -3.5826,-24.40464 -7.4809,-34.26125 -3.8914,-9.83814 2.0941,-18.57797 4.1606,-28.95338 1.5937,-8.00168 -4.6675,-18.75475 -11.3413,-24.77248 l -4.8547,5.38397 m -71.9052,-89.55657 c 1.8255,5.02199 1.3905,6.36263 1.7254,9.78119 l 2.2039,16.58556 c 0.9043,4.11484 5.4053,7.76088 7.662,11.31921 4.0147,6.32958 6.9431,14.22058 11.5151,20.15992 2.0041,2.6036 4.4767,5.39952 7.1387,7.32535 4.1942,3.03447 10.2177,4.09408 14.759,6.57865 10.139,5.54697 18.057,9.83734 26.844,17.76055 l 4.9118,-5.33784 c -9.0811,-8.18836 -16.8701,-12.9749 -26.2665,-19.57126 -8.6751,-6.08991 -17.1026,-10.12322 -23.8595,-18.29023 -6.7446,-8.15158 -9.8266,-16.47128 -12.0379,-26.81731 -1.7054,-7.97901 -4.7124,-13.52456 -7.7824,-21.97047 l -6.8136,2.47668 m -34.1621,-84.20185 c -3.6027,3.94647 -5.1879,4.92821 -7.5903,7.38285 l -9.4706,14.16961 c -2.1637,3.61541 -1.834,9.14486 -2.7159,13.26463 -1.5682,7.32867 -0.7348,21.78205 5.0251,26.57634 2.5249,2.10166 6.8851,4.41668 10.0754,5.20221 5.0268,1.23779 10.9603,0.0863 16.1073,0.64052 11.4912,1.23725 18.6602,5.77787 22.7023,16.89812 l 6.8424,-2.40913 c -4.1774,-11.49239 -16.007,-20.70469 -27.2145,-23.19583 -10.3471,-2.29987 -20.9326,0.39632 -25.8682,-8.98307 -4.9267,-9.36178 2.5426,-16.72147 7.5679,-26.03193 3.8756,-7.18036 3.8345,-11.98926 9.8935,-18.62638 l -5.3544,-4.88794 m 35.539,-106.9007 c -0.025,5.3435 -0.7902,6.35464 -1.7718,9.64586 l -6.8621,13.08088 c -2.3578,3.49177 -2.4028,7.72465 -4.6236,11.30552 -3.9501,6.37018 -10.7648,12.31131 -13.7867,19.17039 -1.3247,3.00671 -2.8017,8.55731 -2.3282,11.80808 0.7459,5.12204 5.1594,9.98204 6.2661,15.03919 2.4709,11.29059 -4.4086,18.0552 -12.3862,26.79391 l 5.3079,4.9448 c 8.2445,-9.03116 16.869,-20.57013 16.0992,-32.02556 -0.7108,-10.57596 -5.4924,-19.1168 -0.9552,-28.69599 4.5285,-9.56152 13.8108,-16.72326 18.9101,-25.99257 3.9327,-7.14863 3.3387,-16.05433 3.3803,-25.04096 l -7.2498,-0.0335 m 51.4055,-103.37848 c -4.4076,3.02109 -6.1193,3.499 -9.0826,5.23598 l -13.8754,9.96994 c -3.1194,2.83213 -4.0515,8.09531 -6.3687,11.61454 -4.1217,6.26053 -10.543,11.79906 -14.1971,18.34346 -1.6018,2.86876 -3.2647,6.15429 -4.0072,9.35484 -1.1699,5.04288 0.6195,10.88429 -0.4301,15.95374 -2.3433,11.31807 -3.3932,21.00043 -3.448,32.83261 l 7.2534,0.1069 c 0.057,-12.22814 1.0716,-18.86337 4.6355,-29.7778 3.2903,-10.07648 3.1285,-20.3187 8.0768,-29.69299 4.9388,-9.35701 11.9359,-15.82428 19.7755,-22.92868 6.0459,-5.47901 8.3541,-9.95172 15.7668,-15.03255 l -4.0989,-5.97999 m 21.5864,-93.44945 c 3.9355,3.61395 3.3446,5.12452 4.7946,8.23807 l 4.7281,14.5479 c 1.0196,4.08794 3.9867,6.57418 4.7088,10.72538 1.2851,7.3844 -1.2892,12.86534 -3.1722,20.12005 -0.8255,3.18014 -1.4572,4.41333 -2.4141,7.55588 -1.5078,4.95149 -0.5999,9.57727 -3.9143,13.5539 -7.3997,8.8783 -16.4992,11.97387 -26.2591,18.6635 l 4.0407,6.02475 c 10.0864,-6.9135 19.8874,-9.97524 28.1735,-17.92238 7.6498,-7.33701 10.5846,-22.1212 11.3493,-32.69338 0.7629,-10.55253 0.7537,-23.33593 -2.2593,-33.47728 -2.3238,-7.82116 -8.2541,-14.59797 -14.8728,-20.67586 l -4.9032,5.33947 m -95.9316,-58.02326 c 4.489,2.89767 4.5312,4.24427 6.5928,6.9912 l 8.3086,13.40093 c 2.1824,3.60425 7.3792,5.90689 10.6821,8.52282 5.8757,4.65306 16.2193,8.98926 23.7145,9.03114 3.2855,0.0184 5.0575,-0.17505 8.3427,-0.20742 5.1762,-0.0509 7.7079,-1.32372 11.0711,2.61218 7.5086,8.78724 18.4487,9.62334 27.1631,17.62575 l 4.9599,-5.29283 c -9.006,-8.27021 -17.8894,-7.83704 -24.5352,-17.19886 -6.1355,-8.64307 -23.2023,-7.33518 -33.8007,-7.47147 -10.5786,-0.13569 -14.1273,-8.97043 -20.0033,-17.76891 -4.5316,-6.78553 -11.0146,-11.46172 -18.5642,-16.335 l -3.9314,6.09047 m -108.8117,-27.11214 c 5.3433,0 6.5767,0.54514 9.9316,1.28156 l 12.9181,5.96709 c 3.4469,2.42277 7.5219,2.31846 10.8961,4.84217 6.0026,4.48899 11.1614,12.56154 17.8693,15.90358 2.9404,1.46506 8.1534,3.24255 11.4317,3.0277 5.1653,-0.33845 10.6803,-4.42874 15.6691,-5.81212 11.1379,-3.08862 20.0919,-4.55061 30.032,1.86574 l 3.9952,-6.05406 c -10.2727,-6.63108 -23.7362,-6.58301 -35.0729,-4.76457 -10.4664,1.67885 -18.3141,5.12841 -27.3103,-0.47676 -8.9797,-5.59445 -15.7563,-15.6684 -24.9105,-20.97288 -7.0598,-4.09089 -16.4631,-2.05693 -25.4494,-2.05693 l 0,7.24948 m -112.387,935.67091 c 5.0792,-1.4673 6.104,-1.3851 9.5018,-1.2956 l 14.4775,2.8873 c 3.9888,1.2145 8.2622,-0.1236 12.3516,0.6878 7.2746,1.443 16.1674,4.6729 23.5623,4.1132 3.2416,-0.2452 7.2565,-0.8526 10.2314,-2.1659 4.6872,-2.0694 8.1386,-6.8536 12.8996,-8.7444 10.6295,-4.2214 19.6504,-3.7327 31.3536,-4.0232 l -0.1075,-7.2531 c -12.0948,0.3001 -22.28,-0.4928 -33.2424,2.4869 -10.1208,2.7508 -18.1448,9.6527 -28.6175,10.2117 -10.4533,0.5582 -19.5372,-5.6845 -29.7608,-7.9366 -7.8846,-1.7369 -16.1196,1.5993 -24.6617,4.0671 l 2.0121,6.9648 m -101.5562,53.6387 c 3.8416,-3.6323 5.3406,-3.9422 8.2007,-5.779 l 13.5635,-7.7412 c 3.683,-1.9549 5.6524,-5.9109 9.1808,-8.1314 6.2765,-3.9504 13.5813,-4.7634 20.3774,-7.7327 2.9792,-1.3016 5.7763,-2.4311 8.4448,-4.2896 4.2045,-2.9282 6.6157,-7.911 11.1693,-10.2579 10.1663,-5.24 19.3041,-6.4336 30.5511,-9.6829 l -1.9436,-6.9888 c -11.6233,3.358 -20.8341,4.0825 -31.4532,8.1191 -9.8037,3.7267 -17.9759,11.9745 -27.1662,17.0281 -9.1731,5.0444 -19.8279,8.4563 -28.8458,13.7741 -6.9548,4.1011 -10.5989,10.3057 -17.0597,16.4145 l 4.9809,5.2677 m -32.3768,102.2435 c -1.0929,-5.173 -0.7923,-6.7215 -1.0253,-10.1126 l -0.2657,-15.5123 c 0.1341,-4.1674 -2.3661,-7.5166 -2.1715,-11.6809 0.3456,-7.4077 3.6397,-12.2611 6.9753,-18.885 1.4623,-2.9036 2.7375,-5.0581 3.8256,-8.1224 1.7145,-4.8281 0.8708,-10.1534 3.3228,-14.6509 5.4743,-10.0414 13.1591,-15.1834 21.6656,-23.2266 l -4.9309,-5.3205 c -8.7912,8.3123 -16.8326,13.8053 -23.7157,22.8423 -6.3547,8.3432 -8.7239,20.8014 -11.7347,30.8468 -3.0048,10.0267 -5.4716,22.2501 -5.0705,32.7115 0.3092,8.068 4.1935,13.9095 6.0317,22.6093 l 7.0933,-1.4987 m 25.1101,97.8229 c -5.2441,-0.673 -6.3225,-1.2144 -9.4865,-2.4551 l -8.6103,-7.8738 c -1.5267,-3.8792 -3.7444,-5.0441 -3.6234,-9.2112 0.2149,-7.4128 4.8287,-13.3976 6.5613,-20.6087 0.7596,-3.1611 1.5995,-7.3753 1.1617,-10.5974 -0.6898,-5.0769 -4.7143,-10.0023 -5.8343,-15.0011 -2.5008,-11.1604 -2.8395,-20.5509 -5.2596,-32.0054 l -7.1123,1.4285 c 2.5011,11.8379 2.1558,19.8746 3.3779,31.1689 1.1283,10.4272 4.3811,19.154 2.3775,29.4489 -1.9995,10.2758 -5.7686,26.0413 -0.072,34.8218 4.3929,6.7716 16.7784,6.9438 25.5978,8.0755 l 0.9227,-7.1909 m 97.7017,64.5791 c -4.0111,-3.4445 -4.8858,-4.84 -7.2282,-7.3032 l -11.2983,-11.4598 c -2.9529,-2.9437 -8.2022,-3.5495 -11.7789,-5.6914 -6.3626,-3.8098 -11.3101,-9.4129 -17.3805,-13.6732 -2.661,-1.8675 -4.5456,-3.2432 -7.3843,-4.8294 -4.4727,-2.4993 -9.721,-2.7257 -13.7497,-5.8897 -8.9945,-7.064 -17.1973,-14.2371 -28.8093,-15.7272 l -0.9952,7.1857 c 12.0006,1.5399 15.0952,6.8353 23.2579,14.7362 7.536,7.2943 18.8022,11.4484 27.9753,16.5325 9.1563,5.0743 16.19,11.8498 23.8526,18.9834 5.9094,5.5016 12.0696,6.8433 18.8154,12.6362 l 4.7232,-5.5001 m -8.7894,101.16 c 3.7068,-3.7694 5.5731,-5.6998 7.2762,-8.6413 l 6.6412,-14.9744 c 1.6697,-3.8204 -0.4998,-8.6106 0.7281,-12.5943 2.1838,-7.0867 12.5591,-4.6832 17.8255,-9.903 2.3086,-2.2882 4.8659,-10.5167 4.3382,-13.725 -0.8313,-5.0551 -5.7736,-10.389 -8.2223,-14.8878 -5.4672,-10.0441 -10.8581,-18.7628 -19.7398,-26.39 l -4.7809,5.456 c 9.1789,7.8824 11.7613,13.4477 16.0358,23.9714 3.9463,9.7157 10.0599,17.0783 0.4618,21.3034 -9.5801,4.2175 -15.5138,16.6136 -19.3075,26.3706 -2.9258,7.5249 -0.191,12.5921 -6.4251,18.9315 l 5.1688,5.0829 m -75.6203,74.2473 c 3.3082,-4.1235 4.114,-7.1115 5.123,-10.3573 l 3.4614,-16.7048 c 0.2408,-4.1628 -1.6452,-5.6902 0.709,-9.1304 4.1874,-6.1198 10.5584,-6.6966 17.2082,-9.978 2.915,-1.4383 4.5907,-1.8953 7.4838,-3.38 4.5586,-2.3391 7.765,-6.819 12.5049,-8.7617 10.5822,-4.3373 20.8739,-7.5339 29.082,-15.8805 l -5.1208,-5.1375 c -8.4828,8.626 -15.1249,9.1519 -26.0536,12.2512 -10.0897,2.8614 -19.9026,9.7097 -28.5711,15.613 -8.6523,5.8927 -18.9383,17.8541 -19.2774,28.3171 -0.2616,8.0693 3.36,11.6778 -2.2037,18.6126 l 5.6543,4.5363 m -116.0788,6.8971 c 5.2871,0.01 6.7837,0.5831 10.1556,1.0127 l 15.4948,2.2652 c 4.0945,0.7873 8.0968,-1.1246 12.2353,-0.6207 7.362,0.8959 14.1789,4.5853 21.475,5.9169 3.1982,0.5838 6.8768,1.0639 10.1082,0.701 5.0915,-0.5718 10.0164,-4.054 15.0746,-4.8641 11.2928,-1.8088 24.1676,-2.1183 31.493,-11.249 l -5.612,-4.5954 c -7.5706,9.4363 -14.5703,6.307 -25.9181,6.8313 -10.4766,0.4841 -19.8626,3.5723 -30.2729,2.2961 -10.391,-1.2734 -20.8271,-5.6633 -31.2306,-6.8336 -8.0233,-0.9025 -14.1022,1.9008 -22.9939,1.8898 l -0.01,7.2498 m -113.6108,-4.3862 c 4.0246,-3.4285 4.6024,-2.501 7.9984,-2.6347 l 13.7295,3.6902 c 3.888,1.5058 8.5081,0.5311 12.5918,1.3689 7.2646,1.49 15.052,4.1855 22.4339,4.9018 3.2359,0.3141 6.532,0.5977 9.752,0.1429 5.0734,-0.7164 9.6047,-4.1429 14.7169,-4.4736 11.4134,-0.7384 20.6085,1.3801 32.3157,1.3946 l 0.082,-7.2537 c -12.099,-0.015 -20.2391,-2.5723 -31.5864,-3.1179 -10.4761,-0.5036 -20.8507,3.1874 -31.3351,2.9021 -10.4648,-0.2845 -19.2143,-5.1897 -29.1358,-8.5293 -7.6517,-2.5755 -19.4952,0.3241 -26.2637,6.09 l 4.7012,5.5187 m -32.9977,105.1121 c -0.8015,-5.2257 -0.1166,-6.596 0.052,-9.9908 l 1.9286,-15.3882 c 0.6627,-4.1165 -1.2492,-7.8523 -0.6485,-11.9777 1.0681,-7.3387 4.946,-13.0705 7.5344,-20.0202 1.1347,-3.0465 2.1191,-5.5697 2.7711,-8.7553 1.0275,-5.0194 -0.7421,-10.1425 1.3174,-14.8326 4.5979,-10.4713 11.0781,-16.5056 19.9899,-24.0972 l -4.6486,-5.5688 c -9.21,7.8457 -17.2294,14.9926 -22.9367,24.8141 -5.269,9.0676 -5.4045,21.6181 -7.9759,31.7856 -2.5662,10.1487 -6.5561,21.0528 -7.7552,31.4527 -0.9247,8.0206 1.8576,14.889 3.2056,23.6775 l 7.1657,-1.0991 m 78.3671,53.6319 c -5.1516,1.1885 -6.5353,0.9371 -9.9323,1.0553 l -14.7269,-1.778 c -4.073,-0.8933 -8.1983,0.9805 -12.3325,0.4426 -7.3543,-0.9565 -11.6749,-4.1287 -17.6805,-8.4793 -2.6325,-1.9072 -3.1701,-2.4401 -5.5552,-4.6498 -3.7578,-3.4818 -8.1389,-4.9289 -10.6038,-9.4197 -5.5032,-10.0261 -5.7461,-19.1605 -7.5209,-30.7318 l -7.1807,1.028 c 1.8342,11.9586 1.9142,22.2615 6.2263,32.7715 3.9811,9.7031 15.7001,19.0993 25.5637,22.6634 9.8455,3.557 20.8682,7.0833 31.1847,8.8659 7.9562,1.3747 15.524,-2.7052 24.1879,-4.7041 l -1.6298,-7.064 m 116.7081,1.3033 c -5.2777,0.3123 -6.6828,-0.1499 -10.0628,-0.5085 l -15.1663,-2.7997 c -4.0585,-0.9562 -8.2804,0.821 -12.4165,0.2975 -7.3577,-0.9307 -14.477,-4.3819 -21.8194,-5.4278 -3.2185,-0.4586 -6.4553,-0.8912 -9.6941,-0.5999 -5.1032,0.4588 -9.9689,3.5495 -15.0725,3.9902 -11.3944,0.9841 -20.9995,1.0929 -32.4067,3.7247 l 1.56,7.0842 c 11.789,-2.7198 18.8734,-2.1179 30.2293,-1.8169 10.4841,0.2778 20.4947,-2.5071 30.9517,-1.7048 10.4376,0.8005 20.4515,5.3443 30.796,6.9515 7.9779,1.2395 14.6535,-1.4283 23.5295,-1.9534 l -0.4282,-7.2371 m 83.7372,-63.6185 c -5.2758,-0.3403 -8.0786,-0.2939 -11.3875,0.4805 l -14.9334,8.1224 c -3.6148,2.0771 -5.3507,4.2613 -9.2776,5.6599 -6.9852,2.4883 -14.7057,12.8164 -16.3989,20.037 -0.7422,3.1652 -1.3175,5.3354 -1.7686,8.5553 -0.711,5.0734 3.0514,10.175 -0.337,14.0141 -7.5651,8.5712 -17.8754,6.0497 -29.562,6.7411 l 0.356,7.2453 c 12.0777,-0.7146 25.5514,0.2483 34.5372,-6.7008 8.296,-6.4157 5.261,-23.9953 7.9722,-34.1261 2.7059,-10.1119 16.0928,-7.797 24.6523,-13.8242 6.6012,-4.6482 6.8079,-9.5425 15.6806,-8.9702 l 0.4667,-7.2343 m 90.1728,-58.9518 c -5.286,-0.109 -7.3907,-0.9011 -10.7865,-0.7561 l -16.6134,7.309 c -3.398,2.4156 -4.8689,7.8375 -7.3728,11.1708 -4.4539,5.9298 -10.6001,9.8258 -15.7438,15.168 -2.2547,2.3418 -4.7102,5.6263 -6.0364,8.5955 -2.0898,4.6783 -1.0738,10.146 -4.486,13.9658 -7.6179,8.5281 -17.3792,4.2531 -29.0613,3.4995 l -0.5393,7.2336 c 12.0731,0.7789 26.8452,3.8009 35.3161,-3.7656 7.8206,-6.9856 10.2123,-19.6973 16.7414,-27.9052 6.5166,-8.1928 12.9512,-14.8908 21.5716,-20.8288 6.6482,-4.5795 7.9711,-6.6215 16.861,-6.4382 l 0.1494,-7.2483 m 104.4918,-25.367 c -5.2834,-0.189 -7.3408,0.1687 -10.737,0.3042 l -14.7638,-1.1986 c -4.0854,-0.8334 -8.291,0.895 -12.4462,0.557 -7.3915,-0.6009 -15.7713,-3.0439 -23.1686,-2.5169 -3.2427,0.231 -6.6993,0.2988 -9.7794,1.3406 -4.8531,1.6414 -9.6381,6.2505 -13.7392,9.3198 -9.1562,6.8524 -8.0802,17.7997 -19.785,17.5584 l -0.222,7.2508 c 12.0965,0.2494 15.0059,-10.8217 24.5252,-17.0199 8.7885,-5.7224 16.1618,-8.0709 26.5936,-9.1516 10.4123,-1.0789 20.1407,3.7927 30.5303,5.0805 8.0126,0.9931 13.8475,-4.5973 22.733,-4.2795 l 0.2591,-7.2448 m 104.2931,25.3481 c -5.2851,0.1444 -5.8641,-0.1846 -8.9555,-1.5967 l -2.686,-10.7448 c -0.6209,-4.1214 -9.4501,-7.953 -13.3475,-9.4312 -6.9332,-2.629 -14.831,-5.3678 -22.1024,-6.826 -3.1874,-0.6392 -7.3279,-1.1004 -10.5396,-0.5913 -5.0604,0.802 -9.7961,5.0117 -14.8138,6.0436 -11.2025,2.304 -20.0765,-1.7847 -31.7756,-2.2031 l -0.3318,7.2462 c 12.0906,0.4324 21.2272,4.9829 32.5411,3.9597 10.4452,-0.9446 19.5567,-4.5938 29.9929,-3.5504 10.4168,1.0411 18.8072,0.1028 18.786,10.5714 -0.016,8.0736 14.5418,14.6126 23.4302,14.3697 l -0.198,-7.2471 m 90.1884,58.9205 c -5.2757,0.3403 -6.9445,0.1494 -10.3433,0.1203 l -12.604,-2.9979 c -3.4644,-2.3197 -6.1362,-2.2599 -8.7151,-5.5354 -4.5879,-5.8265 -6.2697,-14.002 -10.7532,-19.9096 -1.9654,-2.5896 -3.4696,-4.8788 -5.8174,-7.1288 -3.6994,-3.5452 -9.2206,-5.1641 -12.8831,-8.7458 -8.177,-7.9962 -17.2971,-15.049 -28.9999,-14.7293 l 0.1256,7.2531 c 12.0944,-0.3304 14.4772,4.0673 21.6549,12.8724 6.6266,8.1292 15.9128,13.3837 22.0828,21.8641 6.1588,8.4644 12.144,22.9828 21.936,26.6831 7.5517,2.8538 15.9108,-1.9396 24.7834,-2.5119 l -0.4667,-7.2343 m 83.7374,63.7149 c -5.2777,-0.3123 -6.6017,-0.8833 -9.9106,-1.6614 l -13.6211,-5.146 c -3.6194,-2.0686 -5.9676,-0.4886 -7.4466,-4.3862 -2.6314,-6.9332 -1.2513,-13.7605 -2.047,-21.1341 -0.3488,-3.2323 -2.0092,-9.026 -4.135,-11.4865 -3.3493,-3.877 -12.4973,-4.3109 -17.5085,-5.3724 -11.1879,-2.3699 -17.152,-14.6539 -28.8569,-14.5398 l 0.2551,7.2458 c 12.073,-0.7789 14.4732,11.448 25.0504,15.5866 9.7651,3.8209 14.1537,6.407 16.2547,16.6825 2.0974,10.2562 7.5476,25.9068 17.1645,30.0405 7.4166,3.1879 15.4969,0.8829 24.3729,1.408 l 0.4281,-7.237 m 116.6896,-1.174 c -5.1516,-1.1885 -6.4514,-2.1798 -9.639,-3.3599 l -16.3204,-4.3 c -4.121,-0.6333 -8.6285,1.719 -12.7883,1.9973 -7.3997,0.4954 -14.8344,-1.5438 -22.2496,-1.4085 -3.2505,0.059 -6.795,0.1889 -9.9131,1.1121 -4.913,1.4545 -8.9105,5.5774 -13.9055,6.7149 -11.1517,2.5396 -20.1144,1.1098 -31.801,0.4184 l -0.5008,7.2367 c 12.0776,0.7145 21.6351,2.5983 32.9252,1.3368 10.4233,-1.1646 19.9564,-6.2576 30.4041,-7.1768 10.4282,-0.9179 20.0401,0.4955 30.378,2.1416 7.9728,1.2695 13.1167,0.3527 21.7806,2.3515 l 1.6298,-7.0641 m 77.682,-54.4857 c -0.5991,5.2528 -1.5646,6.3971 -2.6254,9.6263 l -6.0059,14.2005 c -1.7962,3.7627 -1.1376,7.7396 -2.9669,11.4859 -3.2538,6.6643 -7.0607,8.5421 -13.9814,11.2072 -3.0338,1.1682 -4.8257,1.6688 -7.8165,2.9447 -4.7126,2.0102 -7.9805,6.1371 -12.999,7.1654 -11.2043,2.2959 -19.8081,0.4999 -31.2153,-2.1318 l -1.7014,7.0516 c 11.789,2.7199 22.0292,5.0985 33.3439,4.0835 10.4461,-0.9371 22.5927,-7.0167 30.7424,-13.6165 8.1343,-6.5879 15.1526,-17.7553 19.2344,-27.3953 3.1479,-7.4344 2.1865,-14.966 3.1939,-23.8001 l -7.2028,-0.8214 m -33.6683,-104.9403 c 4.0246,3.4284 4.4189,4.6826 6.3822,7.4574 l 7.5823,13.2008 c 1.8144,3.7542 5.3806,5.7939 7.248,9.521 3.3221,6.63 2.848,13.4036 4.2775,20.6807 0.6266,3.19 1.2124,5.8815 2.3433,8.9302 1.7819,4.8038 5.9564,8.3526 7.0051,13.3668 2.3413,11.1945 0.1605,20.0795 -1.1659,31.7108 l 7.1986,0.8939 c 1.3708,-12.0206 4.0294,-21.7582 2.9685,-33.0685 -0.9795,-10.4419 -6.8815,-20.9224 -10.4116,-30.798 -3.5239,-9.8571 -5.85,-21.6568 -11.061,-30.7369 -4.0188,-7.0027 -10.8972,-10.9111 -17.6658,-16.677 l -4.7012,5.5188 m -113.7973,4.8937 c 5.2871,-0.01 6.8417,0.5373 10.2217,0.8971 l 15.8906,1.6914 c 4.1463,0.4414 8.2381,-2.0274 12.4049,-2.1668 7.4121,-0.2482 14.708,2.2152 22.1219,2.4119 3.25,0.086 6.5579,0.1381 9.738,-0.5415 5.0107,-1.0706 9.7273,-5.6989 14.5256,-7.4931 10.7128,-4.0057 19.925,-7.3284 28.8368,0.2633 l 4.759,-5.4748 c -9.21,-7.8457 -24.3935,-6.3741 -35.4141,-3.6166 -10.1745,2.5458 -18.737,6.4567 -29.2156,6.9075 -10.459,0.4503 -20.7648,-1.8343 -31.2145,-2.4749 -8.0589,-0.494 -13.7716,2.3356 -22.6633,2.3466 l 0.01,7.2499 m -115.8455,-7.6305 c 3.0871,4.2916 5.7149,5.8115 8.539,7.7022 l 15.5877,7.1801 c 3.9728,1.2651 9.1857,-0.6231 13.3546,-0.6339 7.4162,-0.02 15.3617,2.0236 22.7661,1.5991 3.2458,-0.186 6.6212,-0.464 9.7227,-1.4414 4.887,-1.54 8.7202,-5.6662 13.7432,-6.6718 11.2145,-2.2453 20.3524,-0.085 32.0597,-0.1 l 0.063,-7.254 c -12.0991,0.015 -21.1905,-2.6153 -32.5097,-1.6514 -10.4501,0.8899 -20.1657,6.5991 -30.5959,7.6977 -10.4108,1.0969 -19.2524,-0.9295 -29.2134,-4.1486 -7.6821,-2.4827 -12.4408,0.7061 -17.6327,-6.5115 l -5.8848,4.2332 m -75.6201,-74.0717 c 3.7069,3.7693 5.1762,5.4049 7.791,7.5764 l 13.5401,9.828 c 3.5911,2.1184 8.9145,1.3942 12.9357,2.4948 7.1534,1.9574 11.693,5.8062 17.7116,10.1399 2.6383,1.8997 4.4828,3.2937 7.2973,4.9224 4.4346,2.5663 9.2281,2.266 11.6144,6.7965 5.3278,10.1147 -2.1514,22.7542 4.6844,32.2571 l 5.9304,-4.1766 c -7.0645,-9.821 1.1499,-19.3644 -1.8996,-30.3035 -2.8154,-10.0993 -18.5756,-17.3818 -28.2392,-21.4559 -9.6457,-4.0662 -18.755,-7.3724 -27.5255,-13.0891 -6.7639,-4.4087 -12.4377,-3.7337 -18.6718,-10.073 l -5.1688,5.083 m -7.6492,-101.1121 c -4.0111,3.4445 -5.6043,4.286 -8.2731,6.3911 l -11.9973,12.0397 c -2.5921,3.266 -2.7328,9.123 -3.8918,13.1276 -2.0612,7.1237 -2.2367,23.0519 3.905,27.206 2.6923,1.821 5.8747,2.8063 8.9191,3.9472 4.7968,1.7977 6.4831,2.1457 7.8088,7.0938 2.9598,11.047 2.9167,22.9111 11.1248,31.2577 l 5.2224,-5.0341 c -8.4828,-8.6259 -5.698,-15.9532 -7.3858,-27.1869 -1.5583,-10.3712 -19.8208,-11.9128 -23.1127,-21.8676 -3.2861,-9.9362 2.9628,-16.44 9.47,-24.6396 5.0185,-6.3237 6.1881,-11.0418 12.9339,-16.8347 l -4.7233,-5.5002 m 97.8838,-64.1696 c -5.2441,0.6729 -7.31,0.3567 -10.6655,0.8983 l -16.1536,7.251 c -3.4602,2.326 -5.0198,7.0157 -8.0307,9.8992 -5.3557,5.1297 -11.9518,6.591 -18.4999,10.0726 -2.8704,1.5261 -5.6544,2.7884 -8.1636,4.8567 -3.9536,3.259 -6.1593,8.5748 -10.184,11.7442 -8.9855,7.076 -17.2523,11.7701 -26.134,19.3973 l 4.6708,5.5504 c 9.179,-7.8824 16.2234,-11.1111 25.882,-17.0917 8.917,-5.5215 16.0874,-13.3777 24.7887,-19.2331 8.6849,-5.8448 17.2786,-11.9922 25.9666,-17.833 6.7003,-4.5046 8.6266,-7.1893 17.446,-8.321 l -0.9228,-7.1909 m 24.4969,-98.4877 c -1.093,5.1729 -1.9619,6.5236 -3.0713,9.7366 l -5.0392,15.4497 c -1.1422,4.01 0.4026,8.708 0.1163,12.8671 -0.5088,7.3986 -2.515,16.1608 -1.4913,23.5063 0.4487,3.2199 0.9057,6.4364 2.0733,9.4713 1.8397,4.7819 5.8565,7.7712 5.5368,12.8834 -0.7137,11.4136 -10.938,13.07 -22.55,14.5601 l 0.8513,7.2041 c 12.0006,-1.54 28.5207,-8.6372 30.4994,-19.8225 1.8268,-10.3265 -6.0353,-22.0603 -7.568,-32.4352 -1.5302,-10.3556 2.4209,-19.2396 5.1527,-29.346 2.1068,-7.7943 0.7452,-13.8764 2.5833,-22.5762 l -7.0933,-1.4987 m -33.0588,-101.9497 c 3.9529,3.5109 4.3976,4.96 6.4695,7.6546 l 8.6506,12.8759 c 2.1803,3.554 6.1495,5.043 8.3522,8.5824 3.9188,6.2959 4.7579,12.6952 6.8216,19.8186 0.9046,3.1226 1.1511,5.3109 2.3052,8.3507 1.8185,4.7897 5.4127,8.0668 5.7618,13.1776 0.7796,11.4102 -2.8709,19.9635 -5.2911,31.418 l 7.0823,1.5706 c 2.5012,-11.8379 6.6837,-20.8614 7.1883,-32.2101 0.4658,-10.4774 -5.2377,-22.7412 -10.0948,-32.0361 -4.8484,-9.2774 -8.7139,-20.1771 -14.5826,-28.8462 -4.5261,-6.6857 -11.2007,-9.8716 -17.8486,-15.7764 l -4.8144,5.4204 m -101.7861,-53.385 c 5.0792,1.4674 6.2791,2.4265 9.3664,3.8489 l 14.0959,7.0253 c 3.6914,1.9391 8.1421,1.2918 11.9881,2.9011 6.8416,2.8623 11.8266,8.2828 18.2061,12.0651 2.7964,1.6581 5.3368,3.2457 8.4009,4.3347 4.8278,1.7159 10.2715,0.7373 14.7957,3.1402 10.1008,5.3648 16.1233,12.25 24.8761,20.0244 l 4.8713,-5.3751 c -9.0457,-8.0346 -14.9732,-15.4403 -24.3435,-21.863 -8.6509,-5.9296 -20.2794,-7.7249 -29.7459,-12.2399 -9.4491,-4.5063 -18.293,-11.1403 -27.7701,-15.5889 -7.3089,-3.4308 -14.1867,-2.7698 -22.7288,-5.2377 l -2.0122,6.9649 m -114.4177,-8.329 c 5.2872,0 6.4709,0.6664 9.7826,1.4322 l 14.6283,4.4082 c 3.8815,1.5227 8.2346,0.4037 12.235,1.5775 7.1163,2.0877 14.6036,6.7964 21.934,7.9188 3.2134,0.492 7.8832,0.7517 11.0152,-0.1221 4.9349,-1.3767 9.161,-5.8719 14.0492,-7.4048 10.9132,-3.4225 19.4556,-2.7464 30.7026,0.5029 l 2.0829,-6.9486 c -11.6233,-3.358 -22.9721,-4.6272 -34.1254,-2.4677 -10.297,1.9937 -18.542,7.207 -28.8787,5.4339 -10.3176,-1.7695 -19.3519,-8.0567 -29.3666,-11.1067 -7.7235,-2.3522 -15.1673,-0.4735 -24.0591,-0.4735 l 0,7.2499 m -1321.36054,615.762 c 3.45838,-3.913 4.8668,-4.4209 7.50391,-6.5 l 12.56859,-9.1174 c 3.3837,-2.3496 4.84481,-6.7304 7.91537,-9.4746 5.46184,-4.8818 12.56301,-7.8207 18.2174,-12.4789 2.47868,-2.0419 4.65105,-3.8414 6.72842,-6.2926 3.27322,-3.8621 4.22459,-9.1978 8.11747,-12.4312 8.69119,-7.2188 17.19762,-9.085 28.74431,-9.682 l -0.30294,-7.2468 c -11.93311,0.617 -23.23114,3.252 -32.83862,9.0487 -8.86987,5.3516 -14.52159,16.3549 -22.03438,23.488 -7.49856,7.1201 -17.08434,11.7754 -25.18992,18.1981 -6.25115,4.9533 -9.04553,11.1069 -14.86177,17.6877 l 5.43216,4.801 m -23.78115,108.6189 c 0.11514,-5.2211 0.71294,-6.6437 1.25804,-9.9574 l 2.68675,-15.4955 c 0.7254,-4.0551 -1.24816,-8.043 -0.87752,-12.1443 0.65887,-7.2957 4.11332,-13.7885 5.5932,-20.9633 0.64877,-3.1452 1.27248,-6.3568 1.15345,-9.5678 -0.18746,-5.0594 -3.16517,-9.6655 -2.48957,-14.6808 1.50826,-11.1972 8.75441,-17.0889 16.41233,-25.7534 l -5.38771,-4.8574 c -7.91419,8.9545 -16.47325,17.0298 -19.59203,27.8084 -2.87934,9.9512 0.0105,21.6821 -1.07476,31.9847 -1.08295,10.2834 -4.77337,20.4865 -6.1309,30.7389 -1.04695,7.9068 1.39419,13.9473 1.20054,22.728 l 7.24818,0.1599 m 24.26733,102.8182 c -5.11554,-1.0449 -4.98698,-1.8915 -7.28548,-4.3391 l -6.04666,-12.2304 c -1.17153,-3.949 -4.36723,-6.4161 -5.53839,-10.364 -2.0838,-7.0227 -1.28569,-13.5519 -1.68743,-20.8666 -0.17604,-3.2064 -0.17545,-5.7689 -0.80437,-8.92 -0.99087,-4.965 -4.5027,-9.0968 -4.77294,-14.1504 -0.60345,-11.2825 1.61539,-20.3148 1.87035,-31.876 l -7.25059,-0.2315 c -0.26349,11.948 -2.90672,19.9906 -3.58633,31.1914 -0.62742,10.3408 3.2287,21.6007 5.43349,31.7222 2.20104,10.1026 2.75645,22.0377 6.64069,31.6211 2.99558,7.3909 12.97389,13.7877 21.57713,15.5449 l 1.45053,-7.1016 m 100.15587,-49.6212 c -5.21405,-0.2924 -7.26635,-0.6971 -10.62389,-0.6738 l -17.02464,5.3927 c -3.56277,2.0672 -5.35111,7.0107 -8.33405,9.8498 -5.30596,5.0507 -12.29149,6.1519 -18.6579,9.7766 -2.79079,1.5889 -5.67855,3.4672 -7.95737,5.7326 -3.59064,3.5694 -4.97116,9.0043 -9.00482,12.0602 -9.00549,6.8226 -17.15479,9.8072 -28.48218,7.4935 l -1.52153,7.0912 c 11.70647,2.3912 24.61316,-0.9314 34.26994,-6.6456 8.91538,-5.2755 14.73194,-15.0959 23.53696,-20.5534 8.78846,-5.4477 16.88827,-11.6079 25.87783,-16.718 6.93289,-3.941 8.74682,-6.0592 17.51573,-5.5674 l 0.40592,-7.2384 m 101.1363,-35.2735 c -4.99376,1.5266 -7.01984,1.9341 -10.16624,3.1073 l -14.29112,10.0264 c -2.95123,2.8739 -3.38473,7.5279 -6.05128,10.6657 -4.7431,5.5821 -9.64485,5.7746 -16.82262,7.2356 -3.14644,0.6403 -5.0652,0.5126 -8.18091,1.2979 -4.90925,1.2374 -8.8448,4.6174 -13.8836,5.0878 -11.24963,1.0504 -20.1232,-1.4997 -31.66873,-2.1472 l -0.4777,7.2384 c 11.93191,0.6691 20.36784,3.6697 31.58661,3.9046 10.35746,0.2168 22.35428,-3.362 31.77098,-7.6793 9.39902,-4.3097 17.89712,-12.9502 25.21032,-20.2619 5.64005,-5.6389 6.69503,-8.9754 15.09347,-11.5427 l -2.11918,-6.9326 m 85.36229,-65.925 c -2.7285,4.4528 -3.9342,5.5721 -5.9461,8.2608 l -9.64046,12.0095 c -2.72646,3.088 -2.92136,7.4754 -5.49883,10.6869 -4.58466,5.7132 -10.64332,8.5042 -16.45927,12.9583 -2.54951,1.9525 -4.74378,3.3795 -6.97558,5.6909 -3.51656,3.6418 -4.96096,7.7643 -9.57109,9.8503 -10.29255,4.6572 -20.14583,3.0634 -31.20358,6.4436 l 2.05182,6.9573 c 11.4278,-3.4933 20.35383,-1.7368 31.19749,-4.6202 10.01115,-2.662 18.83633,-13.6549 26.02464,-21.1143 7.17468,-7.4458 16.06906,-14.5714 22.37956,-22.7648 4.8667,-6.3189 5.2342,-13.0817 9.8231,-20.5704 l -6.1817,-3.7879 m -47.43648,-42.641 c 5.21167,-0.3336 6.67273,0.228 10.0199,0.4999 l 16.3612,-0.079 c 4.11301,-0.2305 7.46762,-3.305 11.54798,-3.8592 7.2584,-0.9862 11.0804,0 17.0963,4.1815 2.637,1.8323 1.7718,1.0854 3.4921,3.799 2.7107,4.2757 5.6823,6.0141 4.6791,10.974 -2.2397,11.0735 -9.6841,17.2021 -15.726,27.062 l 6.1476,3.8511 c 6.2441,-10.1899 14.5682,-17.1088 18.0295,-27.782 3.1955,-9.8537 -8.0992,-27.2755 -18.2698,-29.237 -10.1517,-1.9576 -22.06516,-1.5021 -32.35404,-0.4558 -7.93494,0.8069 -12.72214,3.2497 -21.48706,3.8109 l 0.46322,7.235 m -110.11543,13.9158 c 2.58857,4.535 6.07161,7.855 9.36939,8.4786 l 15.80277,2.212 c 4.0795,0.5719 8.13809,-1.6577 12.25569,-1.6008 7.3247,0.1009 17.58975,3.226 24.40586,0.5414 2.98791,-1.1768 6.81685,-3.4776 9.10187,-5.7368 3.60041,-3.5595 4.8301,-9.1474 8.94131,-12.0976 9.17865,-6.5867 18.62699,-4.9652 30.16726,-5.704 l -0.39196,-7.2436 c -11.92646,0.7635 -24.03327,-0.5607 -33.83424,4.9012 -9.0485,5.0425 -13.36047,16.4096 -23.52637,18.3952 -10.14691,1.9823 -19.85382,-2.7729 -30.15004,-3.7428 -7.94059,-0.748 -11.49253,5.6305 -15.84595,-1.9963 l -6.29559,3.5935 m -39.87492,-97.8732 c 5.22157,0.044 5.39026,0.8617 8.21254,2.6797 l 7.93394,10.6119 c 1.75293,3.7278 5.05004,5.2631 6.28648,9.1906 2.1999,6.9863 -0.89034,12.9483 -1.42406,20.2537 -0.23401,3.2023 -0.079,7.6736 0.97022,10.7105 1.65306,4.7851 6.53004,8.7026 8.42566,13.3948 4.23227,10.4758 3.69924,20.93 9.43114,30.9718 l 6.33458,-3.5333 c -5.92371,-10.3779 -3.99526,-18.6671 -6.98741,-29.4818 -2.76244,-9.9845 -7.70205,-17.8776 -7.54973,-28.2359 0.15168,-10.3389 -1.64597,-24.4129 -7.39245,-33.0108 -4.43177,-6.6308 -15.69238,-11.2471 -24.46217,-10.7937 l 0.22126,7.2425 m 2424.18443,97.8993 c 2.5886,-4.535 3.6214,-6.3609 5.0475,-9.4009 l 6.1774,-14.5253 c 1.7005,-3.7521 0.7996,-8.4172 1.8489,-12.3992 1.8662,-7.0837 5.7419,-15.8138 5.4891,-23.1351 -0.1107,-3.2094 0.2359,-4.8585 0.073,-8.0672 -0.2558,-5.0558 -2.5793,-9.0308 -0.968,-13.8275 3.5974,-10.7089 10.5564,-16.4418 22.1186,-16.5395 l 0.01,-7.2534 c -11.9491,0.101 -25.3656,9.4767 -30.1253,19.6368 -4.3943,9.38 -0.5048,22.5367 -0.9597,32.885 -0.4537,10.3292 -6.3645,18.5629 -10.1237,28.1974 -2.8991,7.4302 -0.5309,13.2085 -4.8843,20.8353 l 6.2956,3.5936 m -110.1305,-13.9438 c 5.2117,0.3337 6.4604,1.0611 9.7135,1.8937 l 14.0616,4.9944 c 3.738,1.7307 6.8524,1.2679 10.2357,3.6153 6.0186,4.1753 11.7699,12.1371 18.6095,14.76 2.9982,1.1498 8.5636,1.4391 11.7192,0.8333 4.9721,-0.9545 9.2825,-4.5903 14.3109,-5.1613 11.2263,-1.2747 25.7161,3.1144 31.448,-6.9274 l -6.2635,-3.6578 c -5.9238,10.3778 -13.5832,1.591 -24.8044,1.5802 -10.3596,-0.01 -19.513,6.5705 -28.4451,1.3238 -8.9157,-5.2365 -16.6855,-15.439 -26.3893,-19.0145 -7.4837,-2.7574 -14.968,-0.9136 -23.7329,-1.4748 l -0.4632,7.2351 m -47.3909,42.6685 c -2.7286,-4.4528 -3.1203,-5.9658 -4.5144,-9.0209 l -5.6609,-13.9831 c -1.174,-3.9485 -4.3927,-5.5957 -4.6619,-9.7041 -0.4795,-7.3083 2.3043,-8.1189 9.337,-10.1646 3.0828,-0.8967 3.9078,-0.465 7.0755,-1.0033 4.9912,-0.848 8.9298,-3.6643 13.9716,-3.2272 11.2564,0.9757 20.2319,3.6953 31.7722,4.4341 l 0.5349,-7.2345 c -11.9264,-0.7635 -19.1531,-3.716 -30.1496,-5.9507 -10.1522,-2.0633 -25.6341,0.092 -33.2078,7.1591 -7.5593,7.0542 -8.3089,24.3728 -4.2735,33.8941 3.1121,7.343 9.0064,11.1004 13.5953,18.5891 l 6.1816,-3.788 m 85.3754,65.9082 c -4.9938,-1.5265 -6.5896,-2.4468 -9.7746,-3.5111 l -14.7428,-5.0459 c -3.8529,-1.4575 -7.6721,-0.1072 -11.4532,-1.738 -6.7264,-2.9007 -9.4125,-8.6599 -14.412,-14.0144 -2.1916,-2.3472 -3.9439,-4.4408 -6.4933,-6.3965 -4.0169,-3.0815 -9.146,-3.9225 -12.4868,-7.7238 -7.4586,-8.4867 -9.93,-17.5595 -15.9719,-27.4194 l -6.2224,3.7289 c 6.2441,10.1899 8.1853,19.3053 14.5857,28.522 5.909,8.5092 16.3937,14.6744 24.5518,21.0582 8.1432,6.3716 18.4503,13.7344 28.3808,16.621 7.6586,2.2262 13.5211,0.2843 21.9195,2.8516 l 2.1192,-6.9326 m 101.1376,35.263 c -5.214,0.2924 -6.8444,0.028 -10.2014,-0.062 l -15.1472,-1.538 c -4.0724,-0.6185 -8.2196,1.8584 -12.3373,1.8214 -7.3249,-0.065 -12.5647,-2.7024 -19.3823,-5.3835 -2.9885,-1.1754 -3.5548,-1.6965 -6.3906,-3.2073 -4.468,-2.3805 -8.8905,-2.7202 -12.3405,-6.4226 -7.7026,-8.2661 -14.2108,-17.0734 -25.2686,-20.4535 l -2.1888,6.9154 c 11.4278,3.4933 13.3265,9.5623 19.9924,18.589 6.1543,8.3336 19.4522,14.4658 29.7046,15.9474 10.2333,1.4785 20.8172,3.4271 31.101,4.5145 7.931,0.8386 14.0957,-2.9904 22.8647,-3.4821 l -0.406,-7.2384 m 100.1554,49.6169 c -5.1156,1.0449 -5.7055,0 -8.9364,-0.9187 l -12.4734,-6.736 c -3.3261,-2.4298 -7.5715,-2.2923 -10.9548,-4.6399 -6.0187,-4.1757 -10.4698,-10.9371 -16.4774,-15.1293 -2.6334,-1.8378 -4.6397,-3.1072 -7.4718,-4.6249 -4.4621,-2.3914 -9.5679,-2.6552 -13.6324,-5.6697 -9.0745,-6.7301 -18.5923,-12.5539 -30.1378,-11.9064 l 0.3346,7.2464 c 11.9319,-0.6692 15.1864,3.3155 23.3796,10.9816 7.5643,7.0776 18.7817,10.2576 27.3452,16.0876 8.5478,5.8188 15.9513,14.9899 24.9648,20.0598 6.9514,3.91 16.9071,4.1083 25.5103,2.3511 l -1.4505,-7.1016 m 24.2371,-102.8424 c 0.1151,5.2211 -0.4267,6.7124 -0.7786,10.0521 l -1.3966,15.8336 c -0.3273,4.1064 2.1212,7.9543 2.2331,12.0707 0.1996,7.3226 -2.6186,13.3254 -4.2309,20.4713 -0.7068,3.1325 -1.4132,5.4236 -1.7426,8.6199 -0.5192,5.0363 1.8463,10.1097 0.6465,15.026 -2.6787,10.9762 -7.5712,18.4368 -18.8986,20.7505 l 1.3811,7.1199 c 11.7065,-2.3911 21.9542,-13.8777 25.8377,-24.4053 3.5853,-9.7193 2.8921,-21.702 3.6356,-32.0346 0.7419,-10.3135 2.8749,-21.0462 3.2206,-31.3824 0.2666,-7.9714 -2.4655,-13.5008 -2.6591,-22.2816 l -7.2482,0.1599 m -23.8005,-108.6114 c 3.4583,3.913 3.7673,5.325 5.4595,8.2255 l 5.663,13.1199 c 0.9178,4.0155 3.869,6.497 4.5718,10.5545 1.2507,7.2175 -0.608,14.5482 -0.033,21.8515 0.2522,3.2014 0.4025,6.2663 1.3228,9.3449 1.4501,4.8508 5.3506,8.6839 6.1986,13.6731 1.8935,11.1388 0.3568,20.2092 0.6118,31.7704 l 7.2538,-0.088 c -0.2635,-11.9481 1.7563,-20.5957 1.1468,-31.8004 -0.5627,-10.3444 -5.8013,-20.3618 -7.3393,-30.6065 -1.5354,-10.2256 -0.023,-22.8398 -3.8019,-32.465 -2.9147,-7.4232 -9.8059,-11.7999 -15.6222,-18.3807 l -5.4321,4.8011 m -89.8779,-65.9617 c 5.2146,0.2694 5.9346,1.1048 9.0109,2.4513 l 12.7218,7.3375 c 3.2955,2.4713 7.4217,2.3299 10.6858,4.8405 5.8067,4.4658 8.9522,10.9895 13.9828,16.3152 2.2052,2.3346 4.5202,4.7282 7.2333,6.45 4.2747,2.7129 9.9614,2.9892 14.0415,5.9832 9.1094,6.6843 14.4934,13.8684 22.1513,22.533 l 5.4826,-4.7501 c -7.9142,-8.9545 -13.0092,-16.5128 -21.2421,-24.1377 -7.6007,-7.0395 -17.6047,-11.0833 -25.4047,-17.9008 -7.7858,-6.8046 -15.1696,-16.1342 -23.9564,-21.5869 -6.7765,-4.2053 -15.8336,-4.8548 -24.6151,-4.7806 l -0.092,7.2454 m -1303.7191,218.4261 c -4.5144,-2.8532 -5.1281,-3.7921 -7.3862,-6.3768 l -1.8172,-10.3833 c 1.5007,-3.934 0.1423,-4.8713 4.1589,-6.135 7.1448,-2.2484 13.2577,2.5045 20.7133,3.2299 3.2682,0.318 6.4061,0.4054 9.6692,0.041 5.1416,-0.5742 9.9056,-3.3158 15.0573,-3.7937 11.5017,-1.0672 19.3541,-7.3958 31.158,-8.0962 l -4.9363,-5.3309 c -7.5,1.3463 -14.1931,4.6489 -25.6655,4.4308 -10.5917,-0.2014 -20.6603,2.9146 -31.2227,2.098 -10.5429,-0.8147 -30.6619,4.9419 -31.4553,15.4848 -0.612,8.1308 10.2609,16.1615 17.8531,20.96 l 3.8734,-6.1285 m 72.3481,77.5556 c -5.3388,-0.125 -6.639,-0.2871 -9.9929,-1.0191 l -6.0636,-6.0043 c 0.021,-4.2104 -1.7838,-9.3984 -3.4934,-13.246 -3.0417,-6.8442 -11.6667,-13.7928 -18.2113,-17.4372 -2.8689,-1.5977 -4.1987,-2.3501 -7.0375,-3.9999 -4.473,-2.5996 -8.1061,-3.0334 -10.2568,-7.739 -4.8017,-10.5058 -7.2324,-21.7564 -17.2285,-28.0743 l -3.9375,6.0927 c 10.3307,6.5293 9.2126,13.1709 12.4163,24.1892 2.9578,10.1723 17.9001,16.9415 27.4487,21.5289 9.531,4.5785 6.5647,14.4064 9.142,24.6601 1.9877,7.9077 18.0661,8.0865 27.0449,8.2967 l 0.1696,-7.2478 m 72.0989,-78.0074 c -4.5144,2.8532 -6.6646,3.5655 -9.3978,5.6422 l -10.1294,15.0067 c -1.6855,3.8591 -0.4635,8.0139 -2.1821,11.8578 -3.0567,6.8381 -9.3366,6.2601 -16.2762,9.0808 -3.042,1.2364 -7.2093,3.0749 -9.5344,5.3927 -3.6636,3.6518 -5.6011,12.1618 -5.4053,17.3319 0.4371,11.5427 -7.2784,13.9697 -19.1003,13.693 l -0.243,7.2501 c 12.2176,0.286 27.451,-8.4529 28.2957,-19.8961 0.7798,-10.5648 7.1975,-12.2948 16.3812,-17.5744 9.1665,-5.27 16.3888,-16.7769 20.6847,-26.4386 3.3131,-7.4513 3.1881,-10.4191 10.7803,-15.2176 l -3.8734,-6.1285 m -73.1853,-31.1037 c 5.3232,0.3825 5.793,1.2111 8.7916,2.8822 l 15.0088,8.3116 c 3.9986,1.3172 9.6721,-0.9954 13.8673,-1.3612 7.4626,-0.651 14.8682,1.9284 22.3585,1.8415 3.2834,-0.038 6.4965,-0.1422 9.6939,-0.8887 5.0379,-1.176 8.1523,-4.8008 12.4598,-1.9363 9.6171,6.3952 1.0614,15.8941 -8.9348,22.2121 l 3.8136,6.171 c 10.3307,-6.5294 19.9922,-27.6549 11.2053,-35.0315 -8.1123,-6.8103 -24.6093,-0.4743 -35.2023,-0.4416 -10.5733,0.033 -19.4305,0.9884 -29.1115,-3.262 -7.4661,-3.278 -16.8448,-7.7683 -28.5949,-3.7867 l 4.6447,5.2896" + id="path18272" /> + <path + sodipodi:nodetypes="cscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscsccscscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccsccsccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccsccscsccscsccscsccscsccscsccscsccscsccscsccscscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccsccscsccscsccscsccscsccscsccscsccscsccscsccscscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccscccccccsccscsccscsccscssscscccccccsssccccscccccccscccccccsc" + inkscape:connector-curvature="0" + id="path18274" + d="m 2045.0249,206.77105 c -12.217,0.50432 -24.2395,2.80976 -33.699,9.31674 -8.7333,6.00742 -13.0332,16.38965 -23.3833,18.67339 -10.3308,2.27984 -19.7101,-4.64175 -30.1817,-6.14527 -8.0759,-1.15954 -18.0901,3.76405 -24.8704,9.66156 m 0,1e-5 c -9.226,8.02478 -14.1226,14.76026 -22.9144,22.14393 -8.1169,6.81681 -14.6607,7.82809 -25.2483,8.31758 -10.5679,0.48893 -17.5877,10.78789 -27.6211,14.14319 -7.7379,2.58765 -15.354,7.97217 -20.4941,15.34286 m 0,2e-5 c -6.9942,10.02934 -13.394,19.24265 -15.9899,30.42579 -2.3965,10.32457 1.8957,23.96548 5.9424,33.76245 4.0394,9.77861 11.8085,20.34629 19.7401,27.34795 6.1169,5.39979 12.9858,6.19849 20.2678,11.46442 m 0,1e-5 c 9.9086,7.16538 13.0701,13.27152 19.4493,22.81789 5.8896,8.81346 13.9933,15.02617 18.2123,24.75048 4.2115,9.70607 4.9683,18.80846 4.8324,29.3874 -0.1048,8.15865 1.5215,13.92464 2.1204,22.89096 m 0,2e-5 c 0.8149,12.20051 4.0761,23.29917 9.9858,33.1432 5.456,9.08826 15.1535,14.33851 16.2845,24.87574 1.1293,10.51759 -6.0461,23.71835 -2.4411,33.66486 2.7803,7.6709 10.6236,11.73054 16.5494,18.48666 m 10e-5,2e-5 c 8.0633,9.19308 8.0426,16.18759 10.8789,27.31243 2.6186,10.27075 3.803,16.36385 -5.8255,20.79697 -9.6105,4.42519 -21.7868,2.70644 -31.5621,6.75269 -7.5388,3.12053 -11.4456,14.74654 -13.808,23.41691 m 0,2e-5 c -3.2145,11.79782 -5.2096,18.16851 -11.4984,27.77467 -5.8059,8.86866 -8.5202,18.60003 -15.8466,26.26077 -7.3125,7.64672 -16.3072,10.92517 -25.9328,15.31738 -7.4234,3.38733 -13.0994,9.41645 -18.8506,16.32066 m -1e-4,2e-5 c -7.8258,9.39459 -7.0132,23.48167 -5.3389,34.84 1.5458,10.48629 -0.4079,18.0179 -3.1377,28.25905 -2.7243,10.22218 0.7627,26.26836 8.0828,33.90709 5.6455,5.89111 13.2785,7.5558 21.0545,12.06092 m 0,1e-5 c 10.5809,6.13014 15.6707,12.65332 24.8474,19.55367 8.4722,6.37058 18.417,8.36553 23.34,17.75161 4.9142,9.36845 4.2547,20.97244 8.0107,30.86255 2.8967,7.62741 10.0667,12.78727 16.724,18.82363 m 0,2e-5 c 9.0587,8.2137 23.3379,16.44447 34.2548,12.8913 10.0787,-3.28039 17.9182,-6.10503 28.4692,-5.08577 10.5313,1.01701 20.4302,5.07487 30.7789,7.27707 7.9811,1.69837 15.0009,0.39253 23.9794,0.0243 m 0,0 c 12.2171,-0.50107 21.233,-0.0566 32.6449,-1.3214 10.5357,-1.16771 20.0198,-6.55564 30.6109,-6.98941 10.5714,-0.4333 22.9397,8.79719 33.0751,5.76625 7.8165,-2.3375 13.4058,-9.66503 19.6204,-16.15545 m 0,-1e-5 c 8.4563,-8.83153 14.8993,-17.97081 18.7616,-28.78315 3.5658,-9.98223 2.4263,-20.20086 9.826,-27.79009 7.3856,-7.57535 17.417,-10.60524 26.5626,-15.92388 7.0531,-4.10181 10.6886,-8.69067 18.3575,-13.37553 m 0,-1e-5 c 10.4352,-6.37472 22.429,-12.18386 27.3698,-22.54615 4.5615,-9.56674 -3.5826,-24.40464 -7.4809,-34.26125 -3.8914,-9.83814 2.0941,-18.57797 4.1606,-28.95338 1.5937,-8.00168 -4.6675,-18.75475 -11.3413,-24.77249 m 0,-10e-6 c -9.0811,-8.18836 -16.8701,-12.9749 -26.2665,-19.57126 -8.6751,-6.08991 -17.1026,-10.12322 -23.8595,-18.29022 -6.7446,-8.15158 -9.8266,-16.47128 -12.0379,-26.81731 -1.7054,-7.97901 -4.7124,-13.52456 -7.7824,-21.97047 m 0,-2e-5 c -4.1774,-11.49239 -16.007,-20.7047 -27.2145,-23.19585 -10.3471,-2.29987 -20.9326,0.39634 -25.8681,-8.98305 -4.9267,-9.36178 2.5425,-16.72147 7.5678,-26.03193 3.8756,-7.18036 3.8345,-11.98927 9.8935,-18.62639 m 0,-10e-6 c 8.2445,-9.03116 16.869,-20.57012 16.0992,-32.02555 -0.7108,-10.57596 -5.4924,-19.1168 -0.9552,-28.69599 4.5285,-9.56152 13.8108,-16.72326 18.9101,-25.99257 3.9327,-7.14863 3.3387,-16.05433 3.3803,-25.04096 m 0,-2e-5 c 0.057,-12.22814 1.0716,-18.86337 4.6355,-29.7778 3.2903,-10.07649 3.1285,-20.3187 8.0768,-29.69299 4.9388,-9.35702 11.9359,-15.82429 19.7754,-22.92868 6.046,-5.47901 8.3542,-9.95173 15.7669,-15.03256 m 0,-1e-5 c 10.0864,-6.9135 19.8874,-9.97523 28.1734,-17.92237 7.6499,-7.33702 10.5847,-22.1212 11.3494,-32.69338 0.7629,-10.55253 0.7538,-23.33593 -2.2593,-33.47728 -2.3238,-7.82116 -8.2541,-14.59798 -14.8728,-20.67587 m 0,-1e-5 c -9.006,-8.27022 -17.8894,-7.83704 -24.5352,-17.19886 -6.1355,-8.64307 -23.2023,-7.3352 -33.8006,-7.47149 -10.5787,-0.13569 -14.1274,-8.97041 -20.0033,-17.7689 -4.5317,-6.78552 -11.0147,-11.46172 -18.5643,-16.33499 m 0,-2e-5 c -10.2727,-6.63108 -23.7361,-6.58302 -35.0729,-4.76458 -10.4663,1.67884 -18.3141,5.12842 -27.3103,-0.47675 -8.9797,-5.59445 -15.7563,-15.6684 -24.9105,-20.97288 -7.0598,-4.09089 -16.4631,-2.05694 -25.4494,-2.05694 m -107.5706,36.98041 c 4.0316,-3.5067 4.8748,-3.09588 8.2369,-3.79698 l 14.0659,1.19968 c 4.0952,0.99047 8.2527,-0.34721 12.4195,0.27872 7.4123,1.113 18.0773,3.45332 25.1419,0.95218 3.0969,-1.09634 7.3702,-3.33608 9.7107,-5.64178 3.6879,-3.63289 4.9764,-9.62327 8.8888,-13.01342 8.735,-7.56893 17.3175,-9.21656 29.1389,-9.70454 m -202.692,88.35051 c 3.0563,-4.38266 4.0655,-3.81769 7.236,-5.13801 l 15.5322,-4.6842 c 3.9234,-1.5354 7.1506,-7.58498 9.5648,-11.03846 4.2942,-6.14357 8.6365,-3.31805 16.085,-2.48312 3.2651,0.36606 7.5584,0.78102 10.7383,-0.0431 5.0105,-1.29842 10.1878,-7.67025 13.7571,-11.41976 7.9687,-8.37123 13.196,-16.00166 22.1233,-23.76658 m -66.7743,151.55258 c -4.3299,-3.13115 -5.4005,-4.41359 -7.9924,-6.66759 l -11.7792,-10.67489 c -3.0319,-2.92569 -7.0852,-3.3094 -9.9552,-6.39411 -5.1056,-5.48702 -5.4554,-10.79773 -6.7385,-18.18216 -0.5623,-3.23703 -0.5962,-5.23581 -1.3077,-8.44329 -1.121,-5.05384 -4.3436,-8.78542 -3.7412,-13.92672 1.3447,-11.4785 6.4454,-18.92358 13.2131,-28.62815 m 75.9007,198.15509 c -0.3561,-5.33143 0.396,-6.62875 0.8801,-10.02937 l 1.7022,-16.68965 c 0.052,-4.21286 -3.4441,-8.66184 -4.6939,-12.68578 -2.2237,-7.15796 -2.7009,-15.62475 -5.5316,-22.56508 -1.2408,-3.04237 -2.8391,-6.52983 -4.9286,-9.06538 -3.2921,-3.99513 -8.7876,-6.23566 -12.1249,-10.19343 -7.4509,-8.83607 -13.2534,-17.03639 -22.8411,-23.96975 m 86.1334,211.07151 c -3.5235,-4.01723 -4.182,-5.486 -6.1333,-8.31268 l -5.5199,-12.78954 c -0.6666,-4.16008 -2.3622,-6.25875 -1.8642,-10.44268 0.8853,-7.44276 4.1102,-17.37828 2.1848,-24.62197 -0.8439,-3.17535 -2.6022,-7.41392 -4.6292,-9.99961 -3.1936,-4.07413 -8.8202,-6.27023 -11.962,-10.38493 -7.0144,-9.18643 -9.8744,-17.44331 -10.6629,-29.24875 m -0.1857,190.76554 c 1.4047,-5.15545 2.3244,-5.73915 4.3338,-8.52473 l 10.3739,-6.83213 c 4.1171,-0.89326 7.0138,-3.41894 11.1396,-4.27357 7.3391,-1.52072 16.7825,-3.06709 23.3216,-6.72888 2.8666,-1.60512 8.3515,-8.16104 8.7534,-11.42153 0.6333,-5.13733 -3.0715,-12.09993 -4.9004,-16.94269 -4.0832,-10.81192 -6.3959,-21.29395 -14.1981,-30.18934 m -112.377,173.3203 c 3.4197,-4.10528 4.6314,-3.98757 7.6629,-5.60202 l 14.46,-6.2726 c 3.8919,-1.61421 6.7897,-5.83361 10.1718,-8.34654 6.0162,-4.47057 13.3547,-8.64182 18.7687,-13.82537 2.3733,-2.27221 4.9076,-5.09967 6.5109,-7.96737 2.5262,-4.5184 2.4731,-10.64975 4.8093,-15.26962 5.2157,-10.31437 8.0438,-19.6363 11.1542,-31.05209 m -54.8126,186.4898 c -4.6237,-2.67878 -5.4928,-3.86987 -8.1146,-6.08873 l -10.4172,-10.83204 c -2.5102,-3.38385 -5.8613,-3.96122 -7.3701,-7.89472 -2.6844,-6.99706 1.7039,-10.74689 4.9166,-17.51894 1.4083,-2.96856 2.9961,-6.39324 3.4876,-9.64165 0.7744,-5.11829 -1.8515,-11.90404 -3.1713,-16.90969 -2.9469,-11.17562 -5.6725,-20.11913 1.8999,-29.20951 m 92.9265,185.98925 c -3.9585,-3.58926 -4.1864,-5.03328 -6.1079,-7.88026 l -5.6065,-13.56886 c -1.1309,-4.05868 -4.381,-6.87122 -5.7231,-10.86535 -2.388,-7.10492 -2.9788,-16.5425 -6.8046,-22.98766 -1.677,-2.82532 -5.0642,-6.82345 -7.8781,-8.51932 -4.4338,-2.67212 -10.6348,-2.63178 -15.1173,-5.22179 -10.0076,-5.78239 -16.6161,-12.88579 -26.8544,-18.81742 m 186.4074,101.09502 c -5.3386,0.21896 -6.4074,-0.6331 -9.7487,-1.42927 l -15.5748,-3.92004 c -4.0784,-1.05892 -8.4864,0.65291 -12.6672,0.12802 -7.4372,-0.93327 -14.6089,-4.50737 -22.0286,-5.57035 -3.2525,-0.46602 -6.9295,-0.79768 -10.1826,-0.33768 -5.1258,0.72473 -10.535,5.22393 -15.1944,7.48035 -10.4027,5.03778 -18.0968,-1.59135 -26.8622,-9.53909 m 223.2709,-3.28229 c -3.6953,3.85924 -4.9907,4.10799 -7.9318,5.88215 l -13.3038,4.57864 c -4.1854,0.47933 -5.5684,1.47664 -9.5208,0.016 -7.0309,-2.59787 -16.3571,-5.02757 -23.851,-4.87529 -3.285,0.0667 -6.7898,0.2281 -9.9495,1.12874 -4.9785,1.419 -9.0722,5.5296 -14.1224,6.66866 -11.2751,2.54316 -20.4385,2.5796 -32.26,3.06445 m 185.9036,-103.50922 c -4.56,2.78564 -6.155,2.9359 -9.3175,4.2765 l -15.0741,7.21062 c -3.6578,2.09136 -5.4308,6.46532 -8.8578,8.91675 -6.096,4.36115 -15.1961,7.82876 -20.017,13.56759 -2.1134,2.51563 -4.6213,6.75358 -5.4281,9.93828 -1.2713,5.0179 0.5389,10.93719 -0.6271,15.98117 -2.6033,11.26122 -7.4124,18.55368 -15.5948,27.09923 m 86.5493,-185.9527 c 3.9683,3.57818 3.668,4.47977 4.7889,7.72606 l -1.2516,13.00393 c -1.3281,3.99872 -0.2529,8.75648 -0.727,12.94287 -0.8427,7.44713 -0.2389,17.35104 2.126,24.46364 1.0366,3.11788 1.8136,5.13367 3.0673,8.1705 1.9753,4.78495 5.2454,7.18187 3.5511,12.07296 -3.7827,10.91989 -13.0299,14.37266 -23.1271,20.54095 m -60.3328,-188.4775 c 1.8255,5.02199 1.3905,6.36263 1.7254,9.78119 l 2.2039,16.58556 c 0.9043,4.11484 5.4053,7.76088 7.662,11.31921 4.0147,6.32958 6.9431,14.22058 11.5151,20.15992 2.0041,2.6036 4.4767,5.39952 7.1387,7.32535 4.1942,3.03447 10.2177,4.09408 14.759,6.57865 10.139,5.54697 18.057,9.83734 26.844,17.76055 M 2141.4312,602.88045 c -3.6027,3.94647 -5.1879,4.92821 -7.5903,7.38285 l -9.4706,14.16961 c -2.1637,3.61541 -1.834,9.14486 -2.7159,13.26463 -1.5682,7.32867 -0.7348,21.78205 5.0251,26.57634 2.5249,2.10166 6.8851,4.41668 10.0754,5.20221 5.0268,1.23779 10.9603,0.0863 16.1073,0.64052 11.4912,1.23725 18.6602,5.77787 22.7023,16.89812 m 1.4057,-191.03498 c -0.025,5.3435 -0.7902,6.35464 -1.7718,9.64586 l -6.8621,13.08088 c -2.3578,3.49177 -2.4028,7.72465 -4.6236,11.30552 -3.9501,6.37018 -10.7648,12.31131 -13.7867,19.17039 -1.3247,3.00671 -2.8017,8.55731 -2.3282,11.80808 0.7459,5.12204 5.1594,9.98204 6.2661,15.03919 2.4709,11.29059 -4.4086,18.0552 -12.3862,26.79391 m 86.898,-210.22231 c -4.4076,3.02109 -6.1193,3.499 -9.0826,5.23598 l -13.8754,9.96994 c -3.1194,2.83213 -4.0515,8.09531 -6.3687,11.61454 -4.1217,6.26053 -10.543,11.79906 -14.1971,18.34346 -1.6018,2.86876 -3.2647,6.15429 -4.0072,9.35484 -1.1699,5.04288 0.6195,10.88429 -0.4301,15.95374 -2.3433,11.31807 -3.3932,21.00043 -3.448,32.83261 m 72.9955,-196.75456 c 3.9355,3.61395 3.3446,5.12452 4.7946,8.23807 l 4.7281,14.5479 c 1.0196,4.08794 3.9867,6.57418 4.7088,10.72538 1.2851,7.3844 -1.2892,12.86534 -3.1722,20.12005 -0.8255,3.18014 -1.4572,4.41333 -2.4141,7.55588 -1.5078,4.95149 -0.5999,9.57727 -3.9143,13.5539 -7.3997,8.8783 -16.4992,11.97387 -26.2591,18.6635 m -74.4034,-151.42794 c 4.489,2.89767 4.5312,4.24427 6.5928,6.9912 l 8.3086,13.40093 c 2.1824,3.60425 7.3792,5.90689 10.6821,8.52282 5.8757,4.65306 16.2193,8.98926 23.7145,9.03114 3.2855,0.0184 5.0575,-0.17505 8.3427,-0.20742 5.1762,-0.0509 7.7079,-1.32372 11.0711,2.61218 7.5086,8.78724 18.4487,9.62334 27.1631,17.62575 m -204.6866,-85.08874 c 5.3433,0 6.5767,0.54514 9.9316,1.28156 l 12.9181,5.96709 c 3.4469,2.42277 7.5219,2.31846 10.8961,4.84217 6.0026,4.48899 11.1614,12.56154 17.8693,15.90358 2.9404,1.46506 8.1534,3.24255 11.4317,3.0277 5.1653,-0.33845 10.6803,-4.42874 15.6691,-5.81212 11.1379,-3.08862 20.0919,-4.55061 30.032,1.86574 m -106.8646,892.80126 c -12.0948,0.3001 -22.28,-0.4928 -33.2424,2.4869 -10.1207,2.7508 -18.1448,9.6527 -28.6175,10.2117 -10.4533,0.5582 -19.5372,-5.6845 -29.7608,-7.9366 -7.8846,-1.7369 -16.1196,1.5993 -24.6617,4.0671 m 0,0 c -11.6234,3.358 -20.8342,4.0825 -31.4532,8.1191 -9.8038,3.7267 -17.976,11.9745 -27.1663,17.028 -9.1731,5.0445 -19.8278,8.4564 -28.8458,13.7742 -6.9548,4.1011 -10.5989,10.3056 -17.0597,16.4145 m 0,0 c -8.7911,8.3123 -16.8325,13.8053 -23.7157,22.8423 -6.3547,8.3432 -8.7239,20.8014 -11.7346,30.8467 -3.0048,10.0268 -5.4717,22.2501 -5.0706,32.7116 0.3092,8.068 4.1935,13.9095 6.0317,22.6093 m 0,0 c 2.5011,11.8379 2.1558,19.8746 3.3779,31.1689 1.1283,10.4272 4.3811,19.154 2.3775,29.4489 -1.9995,10.2758 -5.7687,26.0412 -0.072,34.8218 4.3929,6.7716 16.7784,6.9438 25.5978,8.0755 m 0,0 c 12.0006,1.5399 15.0952,6.8353 23.2578,14.7362 7.536,7.2942 18.8022,11.4484 27.9754,16.5325 9.1563,5.0743 16.19,11.8497 23.8525,18.9834 5.9095,5.5016 12.0697,6.8433 18.8154,12.6362 m 10e-5,0 c 9.1789,7.8825 11.7612,13.4478 16.0358,23.9715 3.9463,9.7157 10.0599,17.0783 0.4618,21.3033 -9.5801,4.2176 -15.5137,16.6136 -19.3075,26.3707 -2.9258,7.5248 -0.191,12.5921 -6.4251,18.9315 m 0,0 c -8.4828,8.6259 -15.1248,9.1519 -26.0536,12.2512 -10.0897,2.8614 -19.9026,9.7096 -28.5711,15.613 -8.6522,5.8927 -18.9383,17.8541 -19.2774,28.3171 -0.2616,8.0693 3.36,11.6777 -2.2037,18.6126 m 0,0 c -7.5706,9.4363 -14.5703,6.307 -25.9181,6.8313 -10.4766,0.4841 -19.8626,3.5723 -30.2729,2.2961 -10.391,-1.2734 -20.827,-5.6633 -31.2306,-6.8336 -8.0233,-0.9025 -14.1021,1.9008 -22.9939,1.8898 m 0,0 c -12.099,-0.015 -20.2391,-2.5723 -31.5863,-3.1179 -10.4762,-0.5036 -20.8508,3.1874 -31.3352,2.9021 -10.4648,-0.2845 -19.2142,-5.1897 -29.1358,-8.5293 -7.6517,-2.5755 -19.4951,0.324 -26.2637,6.0899 m 0,1e-4 c -9.21,7.8456 -17.2294,14.9926 -22.9367,24.8141 -5.269,9.0676 -5.4045,21.6181 -7.9759,31.7856 -2.5662,10.1487 -6.5561,21.0528 -7.7552,31.4527 -0.9247,8.0206 1.8576,14.889 3.2056,23.6775 m 0,0 c 1.8342,11.9587 1.9142,22.2616 6.2263,32.7716 3.9811,9.7031 15.7001,19.0993 25.5637,22.6634 9.8454,3.557 20.8681,7.0833 31.1846,8.8659 7.9563,1.3747 15.5241,-2.7052 24.188,-4.704 m 0,-10e-5 c 11.7889,-2.7198 18.8734,-2.1179 30.2293,-1.8169 10.484,0.2778 20.4947,-2.5071 30.9517,-1.7048 10.4375,0.8005 20.4514,5.3443 30.796,6.9515 7.9779,1.2395 14.6535,-1.4283 23.5295,-1.9534 m 0,0 c 12.0776,-0.7146 25.5514,0.2483 34.5372,-6.7008 8.296,-6.4157 5.261,-23.9953 7.9722,-34.126 2.7058,-10.112 16.0928,-7.7971 24.6523,-13.8243 6.6012,-4.6482 6.8079,-9.5425 15.6806,-8.9702 m 0,0 c 12.073,0.7789 26.8452,3.8009 35.3161,-3.7656 7.8206,-6.9856 10.2123,-19.6973 16.7413,-27.9052 6.5167,-8.1928 12.9512,-14.8908 21.5716,-20.8288 6.6482,-4.5794 7.9712,-6.6215 16.861,-6.4382 m 10e-5,0 c 12.0964,0.2494 15.0058,-10.8217 24.5252,-17.0199 8.7885,-5.7224 16.1618,-8.0709 26.5936,-9.1515 10.4123,-1.079 20.1407,3.7926 30.5303,5.0804 8.0126,0.9931 13.8475,-4.5973 22.733,-4.2795 m 0,0 c 12.0906,0.4324 21.2272,4.9829 32.5411,3.9597 10.4452,-0.9446 19.5566,-4.5938 29.9928,-3.5504 10.4169,1.0411 18.8073,0.1028 18.7861,10.5714 -0.016,8.0736 14.5418,14.6126 23.4302,14.3697 m 0,0 c 12.0944,-0.3304 14.4772,4.0673 21.6549,12.8724 6.6266,8.1291 15.9128,13.3837 22.0828,21.8641 6.1588,8.4644 12.144,22.9827 21.936,26.6831 7.5517,2.8538 15.9108,-1.9396 24.7834,-2.5119 m 0,0 c 12.0731,-0.7789 14.4733,11.448 25.0504,15.5866 9.7651,3.8209 14.1538,6.407 16.2548,16.6825 2.0974,10.2562 7.5476,25.9068 17.1645,30.0405 7.4166,3.1879 15.4969,0.8829 24.3729,1.408 m 0,0 c 12.0776,0.7145 21.6351,2.5983 32.9252,1.3368 10.4233,-1.1646 19.9564,-6.2576 30.4041,-7.1768 10.4281,-0.9179 20.0401,0.4955 30.378,2.1416 7.9728,1.2695 13.1167,0.3527 21.7806,2.3515 m 0,0 c 11.789,2.7199 22.0292,5.0985 33.3439,4.0835 10.446,-0.9371 22.5927,-7.0167 30.7424,-13.6165 8.1342,-6.5879 15.1526,-17.7553 19.2344,-27.3952 3.1479,-7.4345 2.1865,-14.9661 3.1939,-23.8002 m 0,0 c 1.3708,-12.0207 4.0294,-21.7583 2.9685,-33.0685 -0.9795,-10.4419 -6.8815,-20.9225 -10.4116,-30.7981 -3.5239,-9.8571 -5.8499,-21.6568 -11.0609,-30.7369 -4.0188,-7.0026 -10.8973,-10.911 -17.6659,-16.6769 m 0,-10e-5 c -9.21,-7.8456 -24.3935,-6.3742 -35.4141,-3.6166 -10.1744,2.5458 -18.737,6.4567 -29.2155,6.9075 -10.459,0.4503 -20.7649,-1.8343 -31.2146,-2.4749 -8.0589,-0.494 -13.7716,2.3356 -22.6633,2.3466 m 0,0 c -12.099,0.015 -21.1905,-2.6153 -32.5097,-1.6514 -10.4501,0.8899 -20.1656,6.5991 -30.5959,7.6977 -10.4108,1.0969 -19.2524,-0.9295 -29.2134,-4.1486 -7.6821,-2.4827 -12.4408,0.7061 -17.6327,-6.5115 m 0,0 c -7.0645,-9.8209 1.1499,-19.3644 -1.8996,-30.3035 -2.8154,-10.0993 -18.5756,-17.3818 -28.2392,-21.4559 -9.6457,-4.0662 -18.755,-7.3724 -27.5254,-13.0891 -6.7639,-4.4087 -12.4378,-3.7337 -18.6719,-10.073 m 0,0 c -8.4829,-8.626 -5.6981,-15.9533 -7.3859,-27.187 -1.5583,-10.3712 -19.8208,-11.9128 -23.1127,-21.8676 -3.2861,-9.9362 2.9628,-16.44 9.47,-24.6396 5.0185,-6.3236 6.1881,-11.0418 12.9339,-16.8347 m 0,0 c 9.1789,-7.8825 16.2234,-11.1112 25.8819,-17.0918 8.917,-5.5215 16.0875,-13.3777 24.7888,-19.2331 8.6849,-5.8448 17.2786,-11.9922 25.9666,-17.833 6.7003,-4.5046 8.6265,-7.1893 17.446,-8.321 m 0,0 c 12.0006,-1.54 28.5207,-8.6372 30.4994,-19.8225 1.8268,-10.3265 -6.0353,-22.0603 -7.568,-32.4352 -1.5301,-10.3555 2.4209,-19.2396 5.1527,-29.346 2.1068,-7.7942 0.7452,-13.8764 2.5833,-22.5762 m 0,0 c 2.5012,-11.8379 6.6837,-20.8613 7.1883,-32.2101 0.4658,-10.4774 -5.2377,-22.7411 -10.0948,-32.0361 -4.8484,-9.2774 -8.7139,-20.177 -14.5826,-28.8462 -4.5261,-6.6857 -11.2007,-9.8716 -17.8485,-15.7764 m -10e-5,0 c -9.0457,-8.0346 -14.9731,-15.4403 -24.3435,-21.863 -8.6509,-5.9296 -20.2793,-7.7249 -29.7459,-12.2399 -9.4491,-4.5063 -18.293,-11.1403 -27.7701,-15.5889 -7.3089,-3.4308 -14.1867,-2.7698 -22.7288,-5.2377 m 0,0 c -11.6234,-3.358 -22.9721,-4.6272 -34.1254,-2.4677 -10.297,1.9937 -18.5421,7.207 -28.8788,5.4339 -10.3175,-1.7695 -19.3519,-8.0567 -29.3666,-11.1067 -7.7235,-2.3522 -15.1673,-0.4735 -24.0591,-0.4735 m -114.387,15.7956 c 5.0792,-1.4673 6.104,-1.3851 9.5018,-1.2956 l 14.4775,2.8873 c 3.9888,1.2145 8.2622,-0.1236 12.3516,0.6878 7.2746,1.443 16.1674,4.6729 23.5623,4.1132 3.2416,-0.2452 7.2565,-0.8526 10.2314,-2.1659 4.6872,-2.0694 8.1386,-6.8536 12.8996,-8.7444 10.6295,-4.2214 19.6504,-3.7327 31.3536,-4.0232 m -215.934,62.1795 c 3.8416,-3.6323 5.3406,-3.9422 8.2007,-5.779 l 13.5635,-7.7412 c 3.683,-1.9549 5.6524,-5.9109 9.1808,-8.1314 6.2765,-3.9504 13.5813,-4.7634 20.3774,-7.7327 2.9792,-1.3016 5.7763,-2.4311 8.4448,-4.2896 4.2045,-2.9282 6.6157,-7.911 11.1693,-10.2579 10.1663,-5.24 19.3041,-6.4336 30.5511,-9.6829 m -133.8644,155.8582 c -1.0929,-5.173 -0.7923,-6.7215 -1.0253,-10.1126 l -0.2657,-15.5123 c 0.1341,-4.1674 -2.3661,-7.5166 -2.1715,-11.6809 0.3456,-7.4077 3.6397,-12.2611 6.9753,-18.885 1.4623,-2.9036 2.7375,-5.0581 3.8256,-8.1224 1.7145,-4.8281 0.8708,-10.1534 3.3228,-14.6509 5.4743,-10.0414 13.1591,-15.1834 21.6656,-23.2266 m -7.2167,200.0136 c -5.2441,-0.673 -6.3225,-1.2144 -9.4865,-2.4551 l -8.6103,-7.8738 c -1.5267,-3.8792 -3.7444,-5.0441 -3.6234,-9.2112 0.2149,-7.4128 4.8287,-13.3976 6.5613,-20.6087 0.7596,-3.1611 1.5995,-7.3753 1.1617,-10.5974 -0.6898,-5.0769 -4.7143,-10.0023 -5.8343,-15.0011 -2.5008,-11.1604 -2.8395,-20.5509 -5.2596,-32.0054 m 122.7928,162.3318 c -4.0111,-3.4445 -4.8858,-4.84 -7.2282,-7.3032 l -11.2983,-11.4598 c -2.9529,-2.9437 -8.2022,-3.5495 -11.7789,-5.6914 -6.3626,-3.8098 -11.3101,-9.4129 -17.3805,-13.6732 -2.661,-1.8675 -4.5456,-3.2432 -7.3843,-4.8294 -4.4727,-2.4993 -9.721,-2.7257 -13.7497,-5.8897 -8.9945,-7.064 -17.1973,-14.2371 -28.8093,-15.7272 m 88.8398,165.7339 c 3.7068,-3.7694 5.5731,-5.6998 7.2762,-8.6413 l 6.6412,-14.9744 c 1.6697,-3.8204 -0.4998,-8.6106 0.7281,-12.5943 2.1838,-7.0867 12.5591,-4.6832 17.8255,-9.903 2.3086,-2.2882 4.8659,-10.5167 4.3382,-13.725 -0.8313,-5.0551 -5.7736,-10.389 -8.2223,-14.8878 -5.4672,-10.0441 -10.8581,-18.7628 -19.7398,-26.39 m -84.4674,175.3631 c 3.3082,-4.1235 4.114,-7.1115 5.123,-10.3573 l 3.4614,-16.7048 c 0.2408,-4.1628 -1.6452,-5.6902 0.709,-9.1304 4.1874,-6.1198 10.5584,-6.6966 17.2082,-9.978 2.915,-1.4383 4.5907,-1.8953 7.4838,-3.38 4.5586,-2.3391 7.765,-6.819 12.5049,-8.7617 10.5822,-4.3373 20.8739,-7.5339 29.082,-15.8805 m -191.6511,81.0898 c 5.2871,0.01 6.7837,0.5831 10.1556,1.0127 l 15.4948,2.2652 c 4.0945,0.7873 8.0968,-1.1246 12.2353,-0.6207 7.362,0.8959 14.1789,4.5853 21.475,5.9169 3.1982,0.5838 6.8768,1.0639 10.1082,0.701 5.0915,-0.5718 10.0164,-4.054 15.0746,-4.8641 11.2928,-1.8088 24.1676,-2.1183 31.493,-11.249 m -229.6473,2.4518 c 4.0246,-3.4285 4.6024,-2.501 7.9984,-2.6347 l 13.7295,3.6902 c 3.888,1.5058 8.5081,0.5311 12.5918,1.3689 7.2646,1.49 15.052,4.1855 22.4339,4.9018 3.2359,0.3141 6.532,0.5977 9.752,0.1429 5.0734,-0.7164 9.6047,-4.1429 14.7169,-4.4736 11.4134,-0.7384 20.6085,1.3801 32.3157,1.3946 m -146.5359,100.722 c -0.8015,-5.2257 -0.1166,-6.596 0.052,-9.9908 l 1.9286,-15.3882 c 0.6627,-4.1165 -1.2492,-7.8523 -0.6485,-11.9777 1.0681,-7.3387 4.946,-13.0705 7.5344,-20.0202 1.1347,-3.0465 2.1191,-5.5697 2.7711,-8.7553 1.0275,-5.0194 -0.7421,-10.1425 1.3174,-14.8326 4.5979,-10.4713 11.0781,-16.5056 19.9899,-24.0972 m 45.422,158.6939 c -5.1516,1.1885 -6.5353,0.9371 -9.9323,1.0553 l -14.7269,-1.778 c -4.073,-0.8933 -8.1983,0.9805 -12.3325,0.4426 -7.3543,-0.9565 -11.6749,-4.1287 -17.6805,-8.4793 -2.6325,-1.9072 -3.1701,-2.4401 -5.5552,-4.6498 -3.7578,-3.4818 -8.1389,-4.9289 -10.6038,-9.4197 -5.5032,-10.0261 -5.7461,-19.1605 -7.5209,-30.7318 m 195.0602,54.864 c -5.2777,0.3123 -6.6828,-0.1499 -10.0628,-0.5085 l -15.1663,-2.7997 c -4.0585,-0.9562 -8.2804,0.821 -12.4165,0.2975 -7.3577,-0.9307 -14.477,-4.3819 -21.8194,-5.4278 -3.2185,-0.4586 -6.4553,-0.8912 -9.6941,-0.5999 -5.1032,0.4588 -9.9689,3.5495 -15.0725,3.9902 -11.3944,0.9841 -20.9995,1.0929 -32.4067,3.7247 m 200.3755,-62.295 c -5.2758,-0.3403 -8.0786,-0.2939 -11.3875,0.4805 l -14.9334,8.1224 c -3.6148,2.0771 -5.3507,4.2613 -9.2776,5.6599 -6.9852,2.4883 -14.7057,12.8164 -16.3989,20.037 -0.7422,3.1652 -1.3175,5.3354 -1.7686,8.5553 -0.711,5.0734 3.0514,10.175 -0.337,14.0141 -7.5651,8.5712 -17.8754,6.0497 -29.562,6.7411 m 173.8378,-122.5621 c -5.286,-0.109 -7.3907,-0.9011 -10.7865,-0.7561 l -16.6134,7.309 c -3.398,2.4156 -4.8689,7.8375 -7.3728,11.1708 -4.4539,5.9298 -10.6001,9.8258 -15.7438,15.168 -2.2547,2.3418 -4.7102,5.6263 -6.0364,8.5955 -2.0898,4.6783 -1.0738,10.146 -4.486,13.9658 -7.6179,8.5281 -17.3792,4.2531 -29.0613,3.4995 m 194.592,-84.3195 c -5.2834,-0.189 -7.3408,0.1687 -10.737,0.3042 l -14.7638,-1.1986 c -4.0854,-0.8334 -8.291,0.895 -12.4462,0.557 -7.3915,-0.6009 -15.7713,-3.0439 -23.1686,-2.5169 -3.2427,0.231 -6.6993,0.2988 -9.7794,1.3406 -4.8531,1.6414 -9.6381,6.2505 -13.7392,9.3198 -9.1562,6.8524 -8.0802,17.7997 -19.785,17.5584 m 208.7123,-0.016 c -5.2851,0.1444 -5.8641,-0.1846 -8.9555,-1.5967 l -2.686,-10.7448 c -0.6209,-4.1214 -9.4501,-7.953 -13.3475,-9.4312 -6.9332,-2.629 -14.831,-5.3678 -22.1024,-6.826 -3.1874,-0.6392 -7.3279,-1.1004 -10.5396,-0.5913 -5.0604,0.802 -9.7961,5.0117 -14.8138,6.0436 -11.2025,2.304 -20.0765,-1.7847 -31.7756,-2.2031 m 194.4088,84.27 c -5.2757,0.3403 -6.9445,0.1494 -10.3433,0.1203 l -12.604,-2.9979 c -3.4644,-2.3197 -6.1362,-2.2599 -8.7151,-5.5354 -4.5879,-5.8265 -6.2697,-14.002 -10.7532,-19.9096 -1.9654,-2.5896 -3.4696,-4.8788 -5.8174,-7.1288 -3.6994,-3.5452 -9.2206,-5.1641 -12.8831,-8.7458 -8.177,-7.9962 -17.2971,-15.049 -28.9999,-14.7293 m 173.8534,122.6414 c -5.2777,-0.3123 -6.6017,-0.8833 -9.9106,-1.6614 l -13.6211,-5.146 c -3.6194,-2.0686 -5.9676,-0.4886 -7.4466,-4.3862 -2.6314,-6.9332 -1.2513,-13.7605 -2.047,-21.1341 -0.3488,-3.2323 -2.0092,-9.026 -4.135,-11.4865 -3.3493,-3.877 -12.4973,-4.3109 -17.5085,-5.3724 -11.1879,-2.3699 -17.152,-14.6539 -28.8569,-14.5398 m 200.2153,62.5524 c -5.1516,-1.1885 -6.4514,-2.1798 -9.639,-3.3599 l -16.3204,-4.3 c -4.121,-0.6333 -8.6285,1.719 -12.7883,1.9973 -7.3997,0.4954 -14.8344,-1.5438 -22.2496,-1.4085 -3.2505,0.059 -6.795,0.1889 -9.9131,1.1121 -4.913,1.4545 -8.9105,5.5774 -13.9055,6.7149 -11.1517,2.5396 -20.1144,1.1098 -31.801,0.4184 m 194.2989,-55.66 c -0.5991,5.2528 -1.5646,6.3971 -2.6254,9.6263 l -6.0059,14.2005 c -1.7962,3.7627 -1.1376,7.7396 -2.9669,11.4859 -3.2538,6.6643 -7.0607,8.5421 -13.9814,11.2072 -3.0338,1.1682 -4.8257,1.6688 -7.8165,2.9447 -4.7126,2.0102 -7.9805,6.1371 -12.999,7.1654 -11.2043,2.2959 -19.8081,0.4999 -31.2153,-2.1318 m 43.9421,-159.4385 c 4.0246,3.4284 4.4189,4.6826 6.3822,7.4574 l 7.5823,13.2008 c 1.8144,3.7542 5.3806,5.7939 7.248,9.521 3.3221,6.63 2.848,13.4036 4.2775,20.6807 0.6266,3.19 1.2124,5.8815 2.3433,8.9302 1.7819,4.8038 5.9564,8.3526 7.0051,13.3668 2.3413,11.1945 0.1605,20.0795 -1.1659,31.7108 m -147.4698,-99.974 c 5.2871,-0.01 6.8417,0.5373 10.2217,0.8971 l 15.8906,1.6914 c 4.1463,0.4414 8.2381,-2.0274 12.4049,-2.1668 7.4121,-0.2482 14.708,2.2152 22.1219,2.4119 3.25,0.086 6.5579,0.1381 9.738,-0.5415 5.0107,-1.0706 9.7273,-5.6989 14.5256,-7.4931 10.7128,-4.0057 19.925,-7.3284 28.8368,0.2633 m -229.585,-2.6928 c 3.0871,4.2916 5.7149,5.8115 8.539,7.7022 l 15.5877,7.1801 c 3.9728,1.2651 9.1857,-0.6231 13.3546,-0.6339 7.4162,-0.02 15.3617,2.0236 22.7661,1.5991 3.2458,-0.186 6.6212,-0.464 9.7227,-1.4414 4.887,-1.54 8.7202,-5.6662 13.7432,-6.6718 11.2145,-2.2453 20.3524,-0.085 32.0597,-0.1 m -191.3931,-81.7063 c 3.7069,3.7693 5.1762,5.4049 7.791,7.5764 l 13.5401,9.828 c 3.5911,2.1184 8.9145,1.3942 12.9357,2.4948 7.1534,1.9574 11.693,5.8062 17.7116,10.1399 2.6383,1.8997 4.4828,3.2937 7.2973,4.9224 4.4346,2.5663 9.2281,2.266 11.6144,6.7965 5.3278,10.1147 -2.1514,22.7542 4.6844,32.2571 m -83.2237,-175.1272 c -4.0111,3.4445 -5.6043,4.286 -8.2731,6.3911 l -11.9973,12.0397 c -2.5921,3.266 -2.7328,9.123 -3.8918,13.1276 -2.0612,7.1237 -2.2367,23.0519 3.905,27.206 2.6923,1.821 5.8747,2.8063 8.9191,3.9472 4.7968,1.7977 6.4831,2.1457 7.8088,7.0938 2.9598,11.047 2.9167,22.9111 11.1248,31.2577 m 90.2883,-165.2327 c -5.2441,0.6729 -7.31,0.3567 -10.6655,0.8983 l -16.1536,7.251 c -3.4602,2.326 -5.0198,7.0157 -8.0307,9.8992 -5.3557,5.1297 -11.9518,6.591 -18.4999,10.0726 -2.8704,1.5261 -5.6544,2.7884 -8.1636,4.8567 -3.9536,3.259 -6.1593,8.5748 -10.184,11.7442 -8.9855,7.076 -17.2523,11.7701 -26.134,19.3973 m 122.3282,-162.607 c -1.093,5.1729 -1.9619,6.5236 -3.0713,9.7366 l -5.0392,15.4497 c -1.1422,4.01 0.4026,8.708 0.1163,12.8671 -0.5088,7.3986 -2.515,16.1608 -1.4913,23.5063 0.4487,3.2199 0.9057,6.4364 2.0733,9.4713 1.8397,4.7819 5.8565,7.7712 5.5368,12.8834 -0.7137,11.4136 -10.938,13.07 -22.55,14.5601 m -8.6334,-200.4242 c 3.9529,3.5109 4.3976,4.96 6.4695,7.6546 l 8.6506,12.8759 c 2.1803,3.554 6.1495,5.043 8.3522,8.5824 3.9188,6.2959 4.7579,12.6952 6.8216,19.8186 0.9046,3.1226 1.1511,5.3109 2.3052,8.3507 1.8185,4.7897 5.4127,8.0668 5.7618,13.1776 0.7796,11.4102 -2.8709,19.9635 -5.2911,31.418 m -134.8559,-155.2628 c 5.0792,1.4674 6.2791,2.4265 9.3664,3.8489 l 14.0959,7.0253 c 3.6914,1.9391 8.1421,1.2918 11.9881,2.9011 6.8416,2.8623 11.8266,8.2828 18.2061,12.0651 2.7964,1.6581 5.3368,3.2457 8.4009,4.3347 4.8278,1.7159 10.2715,0.7373 14.7957,3.1402 10.1008,5.3648 16.1233,12.25 24.8761,20.0244 m -216.1469,-61.6687 c 5.2872,0 6.4709,0.6664 9.7826,1.4322 l 14.6283,4.4082 c 3.8815,1.5227 8.2346,0.4037 12.235,1.5775 7.1163,2.0877 14.6036,6.7964 21.934,7.9188 3.2134,0.492 7.8832,0.7517 11.0152,-0.1221 4.9349,-1.3767 9.161,-5.8719 14.0492,-7.4048 10.9132,-3.4225 19.4556,-2.7464 30.7026,0.5029 M 815.35101,1683.6799 c -11.93311,0.617 -23.23114,3.252 -32.83862,9.0487 -8.86987,5.3516 -14.52159,16.3549 -22.03438,23.488 -7.49857,7.1201 -17.08434,11.7754 -25.18993,18.1981 -6.25115,4.9533 -9.04552,11.1069 -14.86177,17.6876 m -10e-6,10e-5 c -7.9142,8.9545 -16.47326,17.0298 -19.59205,27.8084 -2.87933,9.9512 0.0106,21.6821 -1.07476,31.9846 -1.08295,10.2835 -4.77337,20.4866 -6.1309,30.739 -1.04695,7.9068 1.39419,13.9472 1.20054,22.728 m 0,0 c -0.26349,11.9481 -2.90672,19.9907 -3.58633,31.1914 -0.62742,10.3409 3.2287,21.6008 5.43349,31.7223 2.20104,10.1026 2.75644,22.0377 6.64068,31.6211 2.99558,7.3909 12.97388,13.7877 21.57712,15.5449 m 2e-5,0 c 11.70647,2.3911 24.61317,-0.9314 34.26994,-6.6456 8.91538,-5.2755 14.73194,-15.0959 23.53697,-20.5534 8.78845,-5.4476 16.88827,-11.6079 25.87783,-16.718 6.93288,-3.941 8.74681,-6.0592 17.51572,-5.5675 m 2e-5,10e-5 c 11.93191,0.6691 20.36784,3.6697 31.58661,3.9046 10.35746,0.2168 22.35429,-3.362 31.77098,-7.6793 9.39902,-4.3097 17.89712,-12.9502 25.21032,-20.2619 5.64006,-5.6389 6.69503,-8.9754 15.09347,-11.5427 m 2e-5,0 c 11.4278,-3.4933 20.35383,-1.7368 31.19749,-4.6202 10.01115,-2.662 18.83634,-13.6549 26.02465,-21.1143 7.17468,-7.4457 16.06907,-14.5714 22.37957,-22.7648 4.8667,-6.3189 5.2342,-13.0817 9.823,-20.5704 m 10e-5,0 c 6.2441,-10.1899 14.5682,-17.1088 18.0295,-27.782 3.1955,-9.8537 -8.0992,-27.2755 -18.2697,-29.237 -10.1518,-1.9576 -22.06524,-1.5021 -32.35412,-0.4558 -7.93494,0.8069 -12.72214,3.2497 -21.48706,3.8109 m -2e-5,0 c -11.92646,0.7635 -24.03327,-0.5607 -33.83424,4.9012 -9.0485,5.0425 -13.36047,16.4096 -23.52637,18.3952 -10.14691,1.9823 -19.85382,-2.7729 -30.15004,-3.7428 -7.9406,-0.748 -11.49254,5.6305 -15.84596,-1.9963 m -10e-6,0 c -5.92371,-10.3779 -3.99527,-18.6671 -6.98741,-29.4818 -2.76244,-9.9844 -7.70206,-17.8776 -7.54974,-28.2358 0.15168,-10.339 -1.64595,-24.413 -7.39244,-33.0109 -4.43177,-6.6308 -15.39818,-10.7259 -24.17974,-10.8 m -89.77499,73.2298 c 3.45838,-3.913 4.8668,-4.4209 7.50391,-6.5 l 12.56859,-9.1174 c 3.3837,-2.3496 4.84481,-6.7304 7.91537,-9.4746 5.46184,-4.8818 12.56301,-7.8207 18.2174,-12.4789 2.47868,-2.0419 4.65105,-3.8414 6.72842,-6.2926 3.27322,-3.8621 4.22459,-9.1978 8.11747,-12.4312 8.69119,-7.2188 17.19762,-9.085 28.74431,-9.682 m -113.57662,174.5956 c 0.11514,-5.2211 0.71294,-6.6437 1.25804,-9.9574 l 2.68675,-15.4955 c 0.7254,-4.0551 -1.24816,-8.043 -0.87752,-12.1443 0.65887,-7.2957 4.11332,-13.7885 5.5932,-20.9633 0.64877,-3.1452 1.27248,-6.3568 1.15345,-9.5678 -0.18746,-5.0594 -3.16517,-9.6655 -2.48957,-14.6808 1.50826,-11.1972 8.75441,-17.0889 16.41233,-25.7534 m 0.53065,211.3807 c -5.11554,-1.0449 -4.98698,-1.8915 -7.28548,-4.3391 l -6.04666,-12.2304 c -1.17153,-3.949 -4.36723,-6.4161 -5.53839,-10.364 -2.0838,-7.0227 -1.28569,-13.5519 -1.68743,-20.8666 -0.17604,-3.2064 -0.17545,-5.7689 -0.80437,-8.92 -0.99087,-4.965 -4.5027,-9.0968 -4.77294,-14.1504 -0.60345,-11.2825 1.61539,-20.3148 1.87035,-31.876 m 124.42079,53.1253 c -5.21405,-0.2924 -7.26635,-0.6971 -10.62389,-0.6738 l -17.02464,5.3927 c -3.56277,2.0672 -5.35111,7.0107 -8.33405,9.8498 -5.30596,5.0507 -12.29149,6.1519 -18.6579,9.7766 -2.79079,1.5889 -5.67855,3.4672 -7.95737,5.7326 -3.59064,3.5694 -4.97116,9.0043 -9.00482,12.0602 -9.00549,6.8226 -17.15479,9.8072 -28.48218,7.4935 m 201.22115,-84.9051 c -4.99376,1.5266 -7.01984,1.9341 -10.16624,3.1073 l -14.29112,10.0264 c -2.95123,2.8739 -3.38473,7.5279 -6.05128,10.6657 -4.7431,5.5821 -9.64485,5.7746 -16.82262,7.2356 -3.14644,0.6403 -5.0652,0.5126 -8.18091,1.2979 -4.90925,1.2374 -8.8448,4.6174 -13.8836,5.0878 -11.24963,1.0504 -20.1232,-1.4997 -31.66873,-2.1472 m 186.42679,-101.1985 c -2.7285,4.4528 -3.9342,5.5721 -5.9461,8.2608 l -9.64046,12.0095 c -2.72646,3.088 -2.92136,7.4754 -5.49883,10.6869 -4.58466,5.7132 -10.64332,8.5042 -16.45927,12.9583 -2.54951,1.9525 -4.74378,3.3795 -6.97558,5.6909 -3.51656,3.6418 -4.96096,7.7643 -9.57109,9.8503 -10.29255,4.6572 -20.14583,3.0634 -31.20358,6.4436 m 37.85843,-108.5413 c 5.21167,-0.3336 6.67273,0.228 10.0199,0.4999 l 16.3612,-0.079 c 4.11301,-0.2305 7.46762,-3.305 11.54798,-3.8592 7.2584,-0.9862 11.0804,0 17.0963,4.1815 2.637,1.8323 1.7718,1.0854 3.4921,3.799 2.7107,4.2757 5.6823,6.0141 4.6791,10.974 -2.2397,11.0735 -9.6841,17.2021 -15.726,27.062 m -157.58601,-28.662 c 2.58857,4.535 6.07161,7.855 9.36939,8.4786 l 15.80277,2.212 c 4.0795,0.5719 8.13809,-1.6577 12.25569,-1.6008 7.3247,0.1009 17.58975,3.226 24.40586,0.5414 2.98791,-1.1768 6.81685,-3.4776 9.10187,-5.7368 3.60041,-3.5595 4.8301,-9.1474 8.94131,-12.0976 9.17865,-6.5867 18.62699,-4.9652 30.16726,-5.704 m -149.91907,-83.966 c 5.22157,0.044 5.39026,0.8617 8.21254,2.6797 l 7.93394,10.6119 c 1.75293,3.7278 5.05004,5.2631 6.28648,9.1906 2.1999,6.9863 -0.89034,12.9483 -1.42406,20.2537 -0.23401,3.2023 -0.079,7.6736 0.97022,10.7105 1.65306,4.7851 6.53004,8.7026 8.42566,13.3948 4.23227,10.4758 3.69924,20.93 9.43114,30.9718 M 3279.5541,1683.6736 c -11.9491,0.101 -25.3655,9.4767 -30.1253,19.6367 -4.3942,9.3801 -0.5048,22.5367 -0.9597,32.8851 -0.4537,10.3292 -6.3645,18.5629 -10.1237,28.1973 -2.8991,7.4303 -0.5309,13.2086 -4.8843,20.8354 m 0,0 c -5.9237,10.3778 -13.5832,1.591 -24.8043,1.5802 -10.3597,-0.01 -19.5131,6.5705 -28.4452,1.3239 -8.9156,-5.2366 -16.6855,-15.4391 -26.3893,-19.0145 -7.4837,-2.7575 -14.968,-0.9137 -23.7329,-1.4749 m 0,0 c -11.9265,-0.7635 -19.1532,-3.716 -30.1497,-5.9507 -10.1522,-2.0632 -25.6341,0.092 -33.2078,7.159 -7.5593,7.0543 -8.3089,24.3729 -4.2736,33.8942 3.1122,7.343 9.0065,11.1004 13.5954,18.589 m 0,10e-5 c 6.2441,10.1899 8.1852,19.3053 14.5857,28.522 5.909,8.5091 16.3937,14.6744 24.5518,21.0582 8.1432,6.3716 18.4502,13.7344 28.3808,16.621 7.6586,2.2262 13.5211,0.2843 21.9195,2.8516 m 0,0 c 11.4279,3.4933 13.3265,9.5623 19.9925,18.589 6.1543,8.3336 19.4522,14.4658 29.7045,15.9474 10.2334,1.4785 20.8173,3.4271 31.1011,4.5145 7.931,0.8386 14.0957,-2.9904 22.8646,-3.4821 m 1e-4,0 c 11.9319,-0.6692 15.1863,3.3155 23.3796,10.9816 7.5643,7.0776 18.7817,10.2576 27.3452,16.0876 8.5478,5.8188 15.9513,14.9899 24.9648,20.0598 6.9514,3.91 16.9071,4.1083 25.5103,2.3511 m 0,0 c 11.7065,-2.3911 21.9542,-13.8777 25.8377,-24.4053 3.5853,-9.7193 2.8921,-21.702 3.6356,-32.0346 0.7419,-10.3134 2.8749,-21.0462 3.2206,-31.3824 0.2666,-7.9714 -2.4655,-13.5008 -2.6591,-22.2816 m 0,0 c -0.2635,-11.9481 1.7563,-20.5957 1.1468,-31.8004 -0.5627,-10.3444 -5.8013,-20.3618 -7.3393,-30.6065 -1.5354,-10.2256 -0.023,-22.8398 -3.8019,-32.465 -2.9147,-7.4231 -9.8059,-11.7999 -15.6222,-18.3806 m 0,-10e-5 c -7.9142,-8.9545 -13.0092,-16.5128 -21.242,-24.1377 -7.6008,-7.0395 -17.6047,-11.0833 -25.4048,-17.9008 -7.7858,-6.8046 -15.1696,-16.1342 -23.9564,-21.5869 -6.7765,-4.2053 -15.563,-4.3212 -24.3328,-4.7743 m -40.0797,105.1418 c 2.5886,-4.535 3.6214,-6.3609 5.0475,-9.4009 l 6.1774,-14.5253 c 1.7005,-3.7521 0.7996,-8.4172 1.8489,-12.3992 1.8662,-7.0837 5.7419,-15.8138 5.4891,-23.1351 -0.1107,-3.2094 0.2359,-4.8585 0.073,-8.0672 -0.2558,-5.0558 -2.5793,-9.0308 -0.968,-13.8275 3.5974,-10.7089 10.5564,-16.4418 22.1186,-16.5395 m -149.9175,83.9509 c 5.2117,0.3337 6.4604,1.0611 9.7135,1.8937 l 14.0616,4.9944 c 3.738,1.7307 6.8524,1.2679 10.2357,3.6153 6.0186,4.1753 11.7699,12.1371 18.6095,14.76 2.9982,1.1498 8.5636,1.4391 11.7192,0.8333 4.9721,-0.9545 9.2825,-4.5903 14.3109,-5.1613 11.2263,-1.2747 25.7161,3.1144 31.448,-6.9274 m -157.4893,28.6605 c -2.7286,-4.4528 -3.1203,-5.9658 -4.5144,-9.0209 l -5.6609,-13.9831 c -1.174,-3.9485 -4.3927,-5.5957 -4.6619,-9.7041 -0.4795,-7.3083 2.3043,-8.1189 9.337,-10.1646 3.0828,-0.8967 3.9078,-0.465 7.0755,-1.0033 4.9912,-0.848 8.9298,-3.6643 13.9716,-3.2272 11.2564,0.9757 20.2319,3.6953 31.7722,4.4341 m 38.0563,108.5773 c -4.9938,-1.5265 -6.5896,-2.4468 -9.7746,-3.5111 l -14.7428,-5.0459 c -3.8529,-1.4575 -7.6721,-0.1072 -11.4532,-1.738 -6.7264,-2.9007 -9.4125,-8.6599 -14.412,-14.0144 -2.1916,-2.3472 -3.9439,-4.4408 -6.4933,-6.3965 -4.0169,-3.0815 -9.146,-3.9225 -12.4868,-7.7238 -7.4586,-8.4867 -9.93,-17.5595 -15.9719,-27.4194 m 186.4722,101.1121 c -5.214,0.2924 -6.8444,0.028 -10.2014,-0.062 l -15.1472,-1.538 c -4.0724,-0.6185 -8.2196,1.8584 -12.3373,1.8214 -7.3249,-0.065 -12.5647,-2.7024 -19.3823,-5.3835 -2.9885,-1.1754 -3.5548,-1.6965 -6.3906,-3.2073 -4.468,-2.3805 -8.8905,-2.7202 -12.3405,-6.4226 -7.7026,-8.2661 -14.2108,-17.0734 -25.2686,-20.4535 m 201.2233,84.8627 c -5.1156,1.0449 -5.7055,0 -8.9364,-0.9187 l -12.4734,-6.736 c -3.3261,-2.4298 -7.5715,-2.2923 -10.9548,-4.6399 -6.0187,-4.1757 -10.4698,-10.9371 -16.4774,-15.1293 -2.6334,-1.8378 -4.6397,-3.1072 -7.4718,-4.6249 -4.4621,-2.3914 -9.5679,-2.6552 -13.6324,-5.6697 -9.0745,-6.7301 -18.5923,-12.5539 -30.1378,-11.9064 m 124.3211,-53.2175 c 0.1151,5.2211 -0.4267,6.7124 -0.7786,10.0521 l -1.3966,15.8336 c -0.3273,4.1064 2.1212,7.9543 2.2331,12.0707 0.1996,7.3226 -2.6186,13.3254 -4.2309,20.4713 -0.7068,3.1325 -1.4132,5.4236 -1.7426,8.6199 -0.5192,5.0363 1.8463,10.1097 0.6465,15.026 -2.6787,10.9762 -7.5712,18.4368 -18.8986,20.7505 m 0.3672,-211.4355 c 3.4583,3.913 3.7673,5.325 5.4595,8.2255 l 5.663,13.1199 c 0.9178,4.0155 3.869,6.497 4.5718,10.5545 1.2507,7.2175 -0.608,14.5482 -0.033,21.8515 0.2522,3.2014 0.4025,6.2663 1.3228,9.3449 1.4501,4.8508 5.3506,8.6839 6.1986,13.6731 1.8935,11.1388 0.3568,20.2092 0.6118,31.7704 M 3279.4624,1690.919 c 5.2146,0.2694 5.9346,1.1048 9.0109,2.4513 l 12.7218,7.3375 c 3.2955,2.4713 7.4217,2.3299 10.6858,4.8405 5.8067,4.4658 8.9522,10.9895 13.9828,16.3152 2.2052,2.3346 4.5202,4.7282 7.2333,6.45 4.2747,2.7129 9.9614,2.9892 14.0415,5.9832 9.1094,6.6843 14.4934,13.8684 22.1513,22.533 m -1397.4199,158.6439 c 10.3307,6.5293 9.2126,13.1709 12.4163,24.1891 2.9578,10.1724 17.9001,16.9416 27.4487,21.529 9.5309,4.5785 6.5647,14.4064 9.142,24.6601 1.9877,7.9077 18.066,8.0865 27.0449,8.2967 m 0,0 c 12.2176,0.286 27.451,-8.4528 28.2957,-19.8961 0.7798,-10.5648 7.1975,-12.2948 16.3812,-17.5744 9.1665,-5.27 16.3888,-16.7768 20.6847,-26.4386 3.3131,-7.4512 3.1881,-10.4191 10.7803,-15.2176 m 0,0 c 10.3307,-6.5294 19.9922,-27.6549 11.2053,-35.0315 -8.1123,-6.8103 -24.6092,-0.4743 -35.2023,-0.4416 -10.5733,0.033 -19.4305,0.9884 -29.1114,-3.262 -7.4661,-3.278 -14.5135,-4.6041 -23.4756,-5.5015 -4.3273,-0.4333 -19.3125,6.3637 -30.7849,6.1456 -10.5916,-0.2014 -20.6602,2.9146 -31.2227,2.098 -10.5429,-0.8147 -30.6619,4.9419 -31.4553,15.4848 -0.612,8.1308 10.2609,16.1615 17.8531,20.96 m 3.8734,-6.1285 c -4.5144,-2.8532 -5.1281,-3.7921 -7.3862,-6.3768 l -1.8172,-10.3833 c 1.5007,-3.934 0.1423,-4.8713 4.1589,-6.135 7.1448,-2.2484 13.2577,2.5045 20.7133,3.2299 3.2682,0.318 6.4061,0.4054 9.6692,0.041 5.1416,-0.5742 9.9056,-3.3158 15.0573,-3.7937 11.5017,-1.0672 19.3345,-7.8677 31.0122,-8.1169 5.1889,-0.1107 5.6428,1.1986 8.6458,2.8616 l 15.0088,8.3116 c 3.9986,1.3172 9.6721,-0.9954 13.8673,-1.3612 7.4626,-0.651 14.8682,1.9284 22.3585,1.8415 3.2834,-0.038 6.4965,-0.1422 9.6939,-0.8887 5.0379,-1.176 8.1523,-4.8008 12.4598,-1.9363 9.6171,6.3952 1.0614,15.8941 -8.9348,22.2121 m -72.1587,78.0499 c -5.3388,-0.125 -6.639,-0.2871 -9.9929,-1.0191 l -6.0636,-6.0043 c 0.021,-4.2104 -1.7838,-9.3984 -3.4934,-13.246 -3.0417,-6.8442 -11.6667,-13.7928 -18.2113,-17.4372 -2.8689,-1.5977 -4.1987,-2.3501 -7.0375,-3.9999 -4.473,-2.5996 -8.1061,-3.0334 -10.2568,-7.739 -4.8017,-10.5058 -7.2324,-21.7564 -17.2285,-28.0743 m 144.3829,-0.4876 c -4.5144,2.8532 -6.6646,3.5655 -9.3978,5.6422 l -10.1294,15.0067 c -1.6855,3.8591 -0.4635,8.0139 -2.1821,11.8578 -3.0567,6.8381 -9.3366,6.2601 -16.2762,9.0808 -3.042,1.2364 -7.2093,3.0749 -9.5344,5.3927 -3.6636,3.6518 -5.6011,12.1618 -5.4053,17.3319 0.4371,11.5427 -7.2784,13.9697 -19.1003,13.693" + style="fill:none;stroke:#4a4a4a;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(0.23123661,-4.0861313)" + style="display:inline" + id="g4770"> + <path + style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 344.58282,1733.3374 30.84585,0 c 3.74334,3.7433 8,12.6824 8,20.8601 l -46.84585,0 c 0,-8.0026 4.90131,-17.7614 8,-20.8601 z" + id="path4926" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + transform="matrix(0.91251132,0,0,0.91251132,31.496428,154.55991)" /> + <path + style="fill:#cccccc;fill-opacity:1;stroke:none" + d="m 367.5,1736.4375 c 1.01053,2.6257 1.2625,4.95 1.625,7 L 377,1743.25 c -0.69689,-1.7518 -1.35488,-3.4745 -4,-6.6875 z" + id="path3212" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#999999;fill-opacity:1;stroke:none" + d="m 363.0625,1736.375 0.5625,6.8125 -20.25,0.375 c 0.71068,-2.6234 2.07661,-4.81 3.25,-7.125 z" + id="path3208" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#808080;fill-opacity:1;stroke:none" + d="m 345.0625,1743.9375 c 0.41891,-2.0293 1.29076,-4.5763 2.875,-7.9375 l 11.9375,0.4375 c 0.0571,2.0042 -0.0479,2.8732 0.3125,7 z" + id="path3206" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#666666;fill-opacity:1;stroke:none" + d="m 349.375,1743.5 c 0.12738,-3.2048 0.84076,-5.5305 1.625,-7.75 l 4.125,0 c -0.29946,2.4688 -0.61186,4.8859 -0.75,8 z" + id="path3204" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#ececec;fill-opacity:1;stroke:none" + d="m 371.5,1736.4375 c 1.57809,2.5302 2.6925,4.7822 3.4375,6.8125 l -2.625,0.063 c -0.24342,-2.8605 -0.90339,-4.992 -1.8125,-6.6875 z" + id="path3210" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 345.9375,1736.25 c -2.82759,2.8276 -7.3125,11.7288 -7.3125,19.0312 l 1.25,0 c 0.12482,-6.8143 4.25326,-14.972 6.875,-17.5937 l 26.5,0 c 3.16824,3.1682 6.76873,10.6544 6.875,17.5937 l 1.25,0 c 0,-7.4622 -3.86541,-15.6154 -7.28125,-19.0312 l -28.15625,0 z" + id="path4945" + inkscape:connector-curvature="0" + transform="translate(0,0.25)" /> + <path + transform="matrix(0.91251132,0,0,0.91251132,31.496428,154.55991)" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4938" + d="m 344.58282,1733.3374 30.84585,0 c 3.74334,3.7433 8,12.6824 8,20.8601 l -46.84585,0 c 0,-8.0026 4.90131,-17.7614 8,-20.8601 z" + style="color:#000000;fill:none;stroke:#4d4d4d;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 339.71875,1743.25 c -1.75867,3.9781 -3.125,8.6908 -3.125,12.9375 l 46.84375,0 c 0,-4.4101 -1.24097,-9.0189 -2.96875,-12.9375 l -40.75,0 z" + id="rect4657" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 343.5,1743.25 c -1.29027,3.6972 -2.35837,8.0093 -3.15625,12.9375 l 24.28125,0 c 0.002,-5.5313 -0.0832,-9.6481 -0.1875,-12.9375 l -20.9375,0 z" + id="path4959" + inkscape:connector-curvature="0" + transform="translate(-0.5,0)" /> + <path + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 345.375,1743.25 c -1.32403,3.5532 -2.33328,7.8973 -3.0625,12.9375 l 19.9375,0 c 0.0222,-5.8679 -0.0184,-9.7729 -0.125,-12.9375 l -16.75,0 z" + id="path4954" + inkscape:connector-curvature="0" + transform="translate(-0.625,0)" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 348.03125,1743.25 c -1.31321,2.9895 -2.21386,8.4113 -2.78125,12.9375 l 10.09375,0 c 0.0221,-5.3187 -0.0763,-9.729 -0.15625,-12.9375 l -7.15625,0 z" + id="path4964" /> + <path + inkscape:connector-curvature="0" + style="fill:#cccccc;stroke:none" + d="m 369.34375,1743.25 c 0.51771,4.1991 0.75879,8.5783 0.65625,12.9375 l 11.125,0 c -0.47188,-4.4255 -1.81522,-8.8943 -3.53125,-12.9375 l -8.25,0 z" + id="path3189" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 339.71875,1743.25 c -1.75867,3.9781 -3.125,8.6908 -3.125,12.9375 l 46.84375,0 c 0,-4.4101 -1.24097,-9.0189 -2.96875,-12.9375 l -1.59375,0 c 1.5031,3.4738 2.5625,7.5243 2.5625,11.4062 l -42.09375,0 c 0,-3.7402 1.18387,-7.8772 2.71875,-11.4062 l -2.34375,0 z" + id="path3199" /> + <path + style="color:#000000;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 339.71875,1743.25 c -1.75867,3.9781 -3.125,8.6908 -3.125,12.9375 l 1.28125,0 c 0.10536,-3.7897 1.31982,-7.951 2.875,-11.4687 l 37.6875,0 c 1.53069,3.4716 2.62644,7.5481 2.71875,11.4687 l 2.28125,0 c 0,-4.4101 -1.24097,-9.0189 -2.96875,-12.9375 l -40.75,0 z" + id="path4930" + inkscape:connector-curvature="0" + transform="translate(0,0.375)" /> + <path + inkscape:connector-curvature="0" + style="fill:#ececec;stroke:none" + d="m 370.9375,1743.25 c 0.6135,4.1466 0.8529,8.5737 0.65625,12.9375 l 7.28125,0 c -0.21065,-4.4248 -1.73853,-9.0333 -3.5625,-12.9375 l -4.375,0 z" + id="path4950" /> + <path + inkscape:connector-curvature="0" + id="path4928" + d="m 339.71875,1743.25 c -1.75867,3.9781 -3.125,8.6908 -3.125,12.9375 l 46.84375,0 c 0,-4.4101 -1.24097,-9.0189 -2.96875,-12.9375 l -40.75,0 z" + style="color:#000000;fill:none;stroke:#4d4d4d;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + inkscape:connector-curvature="0" + id="path3214" + d="m 339.71875,1743.25 c -1.75867,3.9781 -3.125,8.6908 -3.125,12.9375 l 46.84375,0 c 0,-4.4101 -1.24097,-9.0189 -2.96875,-12.9375 l -40.75,0 z" + style="opacity:0.25;color:#000000;fill:url(#linearGradient3602);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4007-5);enable-background:accumulate" /> + <path + transform="matrix(0.91251132,0,0,0.91251132,31.496428,154.55991)" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4013" + d="m 344.58282,1733.3374 30.84585,0 c 3.74334,3.7433 8,12.6824 8,20.8601 l -46.84585,0 c 0,-8.0026 4.90131,-17.7614 8,-20.8601 z" + style="opacity:0.25;color:#000000;fill:url(#linearGradient3604);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.19175363;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4007-3-4);enable-background:accumulate" /> + </g> + <use + style="display:inline" + height="2048" + width="4096" + transform="translate(3375.3203,1.210106e-5)" + id="use4831" + xlink:href="#g4770" + y="0" + x="0" /> + </g> + <g + style="display:none" + inkscape:label="Land" + id="layer2" + inkscape:groupmode="layer"> + <path + id="path3008" + d="m 1579.4688,71.21875 c -21.1848,0.136909 -47.8753,16.132704 -68.75,9.40625 -7.359,-2.371287 -8.6707,-4.931364 -15.875,-2.125 -10.2546,3.99453 -9.9286,6.296387 -18.6563,13 -16.8898,12.97278 -31.8615,1.55049 -53.1563,1.84375 -19.0787,0.26274 -29.5022,2.391856 -49.5,4.96875 -19.9979,2.57689 -24.0047,14.47249 -42.4062,9.1875 -10.6933,-3.07115 -15.8856,-18.076937 -26.875,-19.8125 -19.142,-3.023121 -41.754,4.408609 -55.1562,18.40625 -11.8671,12.39424 -5.4543,34.71083 -14.1563,49.5 -2.7047,4.59664 -6.4253,9.17719 -11.3125,11.3125 -11.2396,4.91076 -27.3498,-6.4728 -36.75,1.40625 -8.5036,7.12746 -9.0543,21.61028 -7.0938,32.53125 2.4723,13.77191 18.2079,22.06718 22.625,35.34375 6.1178,18.38829 9.8659,39.45227 4.25,58 -3.115,10.28843 -3.4097,13.27956 -9.7812,21.9375 -7.8284,10.6377 -25.3086,19.59258 -22.6562,32.53125 0.8931,4.35662 7.119,5.67333 11.3437,7.0625 17.5164,5.7598 3.9068,22.33815 19.125,32.75 10.789,7.38152 31.3852,4.3449 43,10.34375 14.8732,7.68178 34.6377,-16.23142 49.4687,-8.46875 6.9134,3.61851 7.7462,13.72057 9.9063,21.21875 5.2605,18.26028 0.6261,38.6828 7.0625,56.5625 2.0818,5.78306 7.5114,9.90189 9.9062,15.5625 3.965,9.37199 5.2547,19.67883 7.0938,29.6875 1.9761,10.7541 -2.178,23.66354 4.2188,32.53125 9.4975,13.16627 29.8077,13.06116 43.8437,21.21875 7.9136,4.59928 19.7164,6.88392 22.625,15.5625 2.3685,7.06721 -7.5257,13.74835 -7.0625,21.1875 0.7468,11.99527 5.3948,26.12332 15.5625,32.53125 13.1608,8.29423 33.3167,8.00369 46.6563,0 6.8717,-4.12311 5.2759,-15.94795 11.3124,-21.21875 10.224,-8.92697 33.3479,-1.44434 38.1876,-14.125 3.2333,-8.47161 -7.2337,-16.81077 -12.7188,-24.03125 -7.4633,-9.8245 -23.0375,-13.7429 -26.875,-25.46875 -3.2786,-10.01807 1.4384,-21.46476 5.6562,-31.125 3.7727,-8.64039 16.6191,-13.20339 16.9688,-22.625 0.5189,-13.98243 -15.2861,-23.43082 -22.625,-35.34375 -7.76,-12.59649 -21.2074,-23.46066 -22.625,-38.1875 -0.6715,-6.97569 2.6912,-14.335 7.0625,-19.8125 7.6677,-9.60817 24.6382,-9.33935 31.125,-19.78125 9.2576,-14.90218 8.1297,-34.97539 5.6563,-52.34375 -1.222,-8.5801 -1.8476,-20.84253 -9.9063,-24.03125 -10.5929,-4.19145 -20.4594,10.15335 -31.125,14.15625 -13.8233,5.18803 -27.933,9.79851 -42.4063,12.71875 -13.0126,2.62555 -29.3778,12.72693 -39.5937,4.25 -13.8284,-11.47453 7.5595,-40.20655 -4.25,-53.75 -10.1484,-11.63847 -30.4587,-5.47196 -45.25,-9.90625 -6.2894,-1.8855 -15.9076,-0.99058 -18.4063,-7.0625 -3.9342,-9.56087 7.3954,-19.43718 12.75,-28.28125 8.6939,-14.35948 15.0995,-34.49878 31.0938,-39.59375 12.6486,-4.02919 25.409,7.71633 38.1875,11.3125 7.0445,1.9825 13.9253,6.25651 21.2187,5.65625 21.6576,-1.78241 43.268,-12.32241 59.4063,-26.875 4.8636,-4.3857 3.741,-14.76003 9.9063,-16.96875 12.7775,-4.57762 24.7962,11.73042 38.1562,14.125 25.0565,4.49103 56.4704,-15.86835 76.375,0 13.2339,10.5503 8.0706,32.88872 11.3125,49.5 3.3846,17.34263 13.7133,35.46053 8.5,52.34375 -3.8368,12.42538 -20.0976,17.18269 -26.875,28.28125 -5.2059,8.52505 -6.8461,18.77266 -9.9063,28.28125 -5.1181,15.90331 -13.3454,31.40533 -14.125,48.09375 -0.9187,19.67063 9.9083,38.32681 11.3126,57.96875 0.6731,9.41584 -2.3566,18.88623 -1.4376,28.28125 0.9461,9.67209 2.0072,20.00048 7.0938,28.28125 4.8976,7.97304 17.3008,9.89454 21.1875,18.40625 8.8114,19.29662 -12.8763,46.76672 0,63.625 16.3125,21.35709 53.9501,8.79701 77.7813,21.21875 13.0595,6.80716 19.8989,23.93058 33.9687,28.28125 19.0009,5.87546 41.6742,3.4123 59.375,-5.65625 8.9197,-4.5698 20.2255,-12.61131 19.8125,-22.625 -0.8655,-20.9848 -33.8277,-26.21873 -45.25,-43.84375 -9.0024,-13.89092 -15.8653,-30.14012 -16.9688,-46.65625 -1.0292,-15.40731 14.4717,-30.53961 9.875,-45.28125 -2.8792,-9.23394 -16.4772,-11.33325 -21.1874,-19.78125 -5.8528,-10.4971 -0.217,-25.51834 -7.0938,-35.375 -9.8072,-14.05686 -35.1242,-12.08754 -43.8438,-26.84375 -10.3233,-17.47017 0.7143,-40.829 -2.8124,-60.8125 -1.3734,-7.78192 -7.3448,-14.72786 -7.0626,-22.625 0.5065,-14.17231 8.113,-27.53866 15.5313,-39.625 5.9388,-9.67576 19.5626,-14.51418 22.6563,-25.4375 4.4349,-15.6595 -5.9659,-32.01684 -8.5,-48.09375 -2.6677,-16.9245 6.1231,-39.9658 -7.0626,-50.90625 -15.2543,-12.65683 -43.0551,14.04776 -59.4062,2.84375 -8.608,-5.89834 -7.8929,-19.47984 -9.9062,-29.71875 -2.7347,-13.90721 7.6924,-32.891262 -2.8126,-42.40625 -5.4183,-4.907738 -11.8759,-6.639386 -18.9374,-6.59375 z m 936.3124,0 c -7.0615,-0.04564 -13.5191,1.686012 -18.9374,6.59375 -10.505,9.514988 -0.078,28.49904 -2.8126,42.40625 -2.0133,10.23891 -1.2982,23.82041 -9.9062,29.71875 -16.3511,11.20401 -44.1519,-15.50058 -59.4062,-2.84375 -13.1857,10.94045 -4.3949,33.98175 -7.0626,50.90625 -2.5341,16.07691 -12.935,32.43425 -8.5,48.09375 3.0937,10.92332 16.6863,15.76174 22.625,25.4375 7.4184,12.08634 15.0561,25.45269 15.5626,39.625 0.2822,7.89714 -5.6891,14.84308 -7.0626,22.625 -3.5266,19.9835 7.4796,43.34233 -2.8437,60.8125 -8.7196,14.75621 -34.0365,12.78689 -43.8437,26.84375 -6.8769,9.85666 -1.2097,24.8779 -7.0626,35.375 -4.7102,8.448 -18.3395,10.54731 -21.2187,19.78125 -4.5966,14.74164 10.9356,29.87394 9.9063,45.28125 -1.1034,16.51613 -7.9664,32.76533 -16.9688,46.65625 -11.4223,17.62502 -44.3845,22.85895 -45.25,43.84375 -0.413,10.01369 10.8928,18.0552 19.8125,22.625 17.7008,9.06855 40.3741,11.53171 59.375,5.65625 14.0698,-4.35067 20.878,-21.47409 33.9375,-28.28125 23.8311,-12.42174 61.4688,0.13834 77.7812,-21.21875 12.8763,-16.85828 -8.8113,-44.32838 0,-63.625 3.8868,-8.51171 16.3212,-10.43321 21.2188,-18.40625 5.0866,-8.28077 6.1164,-18.60916 7.0625,-28.28125 0.919,-9.39502 -2.0795,-18.86541 -1.4063,-28.28125 1.4044,-19.64194 12.2314,-38.29812 11.3126,-57.96875 -0.7795,-16.68842 -9.0069,-32.19044 -14.125,-48.09375 -3.0602,-9.50859 -4.7004,-19.7562 -9.9063,-28.28125 -6.7774,-11.09856 -23.0382,-15.85587 -26.875,-28.28125 -5.2133,-16.88322 5.1154,-35.00112 8.5,-52.34375 3.2419,-16.61128 -1.9214,-38.9497 11.3125,-49.5 19.9046,-15.86835 51.2872,4.49103 76.3438,0 13.36,-2.39458 25.4098,-18.70262 38.1874,-14.125 6.1653,2.20872 5.0427,12.58305 9.9063,16.96875 16.1383,14.55259 37.7488,25.09259 59.4063,26.875 7.2935,0.60026 14.1742,-3.67375 21.2187,-5.65625 12.7785,-3.59617 25.5077,-15.34169 38.1563,-11.3125 15.9942,5.09497 22.431,25.23427 31.125,39.59375 5.3545,8.84407 16.653,18.72038 12.7187,28.28125 -2.4986,6.07192 -12.0856,5.177 -18.375,7.0625 -14.7913,4.43429 -35.1016,-1.73222 -45.25,9.90625 -11.8095,13.54345 9.5784,42.27547 -4.25,53.75 -10.2159,8.47693 -26.5811,-1.62445 -39.5937,-4.25 -14.4733,-2.92024 -28.6142,-7.53072 -42.4376,-12.71875 -10.6655,-4.0029 -20.5008,-18.3477 -31.0937,-14.15625 -8.0587,3.18872 -8.6843,15.45115 -9.9063,24.03125 -2.4734,17.36836 -3.6013,37.44157 5.6563,52.34375 6.4868,10.4419 23.4573,10.17308 31.125,19.78125 4.3713,5.4775 7.734,12.83681 7.0625,19.8125 -1.4176,14.72684 -14.865,25.59101 -22.625,38.1875 -7.3389,11.91293 -23.1439,21.36132 -22.625,35.34375 0.3497,9.42161 13.1961,13.98461 16.9688,22.625 4.2178,9.66024 8.9348,21.10693 5.6562,31.125 -3.8375,11.72585 -19.4117,15.64425 -26.875,25.46875 -5.4851,7.22048 -15.9521,15.55964 -12.7188,24.03125 4.8397,12.68066 27.9636,5.19803 38.1876,14.125 6.0366,5.2708 4.4407,17.09564 11.3124,21.21875 13.3396,8.00369 33.4955,8.29423 46.6563,0 10.1677,-6.40793 14.8157,-20.53598 15.5625,-32.53125 0.4632,-7.43915 -9.4622,-14.12029 -7.0938,-21.1875 2.9087,-8.67858 14.7427,-10.96322 22.6563,-15.5625 14.036,-8.15759 34.3149,-8.05248 43.8125,-21.21875 6.3968,-8.86771 2.2739,-21.77715 4.25,-32.53125 1.8391,-10.00867 3.1287,-20.31551 7.0938,-29.6875 2.3948,-5.66061 7.7932,-9.77944 9.875,-15.5625 6.4364,-17.8797 1.8332,-38.30222 7.0937,-56.5625 2.1601,-7.49818 2.9616,-17.60024 9.875,-21.21875 14.8311,-7.76267 34.6268,16.15053 49.5,8.46875 11.6148,-5.99885 32.1797,-2.96223 42.9687,-10.34375 15.2182,-10.41185 1.6399,-26.9902 19.1563,-32.75 4.2247,-1.38917 10.4194,-2.70588 11.3125,-7.0625 2.6524,-12.93867 -14.7966,-21.89355 -22.625,-32.53125 -6.3715,-8.65794 -6.6662,-11.64907 -9.7812,-21.9375 -5.6159,-18.54773 -1.899,-39.61171 4.2187,-58 4.4171,-13.27657 20.184,-21.57184 22.6563,-35.34375 1.9605,-10.92097 1.4098,-25.40379 -7.0938,-32.53125 -9.4002,-7.87905 -25.5104,3.50451 -36.75,-1.40625 -4.8872,-2.13531 -8.6078,-6.71586 -11.3125,-11.3125 -8.702,-14.78917 -2.2892,-37.10576 -14.1563,-49.5 C 2832.7539,92.096109 2810.142,84.664379 2791,87.6875 c -10.9894,1.735563 -16.1817,16.74135 -26.875,19.8125 -18.4015,5.28499 -22.4083,-6.61061 -42.4062,-9.1875 -19.9979,-2.576894 -30.4213,-4.70601 -49.5,-4.96875 -21.2948,-0.29326 -36.2665,11.12903 -53.1563,-1.84375 -8.7277,-6.703613 -8.4017,-9.00547 -18.6563,-13 -7.2043,-2.806364 -8.516,-0.246287 -15.875,2.125 -20.8747,6.726454 -47.5652,-9.269341 -68.75,-9.40625 z M 453.65625,110.5 c -9.28656,0.17868 -19.31137,7.79161 -29.0625,8.3125 -10.39884,0.55549 -20.77616,-4.25505 -31.09375,-2.84375 -14.48625,1.98151 -26.72993,12.5211 -41.03125,15.5625 -24.47705,5.20543 -61.75783,-17.02249 -74.9375,4.25 -1.89081,3.05184 4.42373,6.322 4.21875,9.90625 -0.651,11.38315 -9.10625,21.43032 -16.96875,29.6875 -18.12564,19.0355 -61.77347,16.5755 -66.46875,42.4375 -1.68415,9.27645 9.80104,16.50023 16.96875,22.625 6.89369,5.89061 19.03814,5.17037 24.0625,12.71875 5.77019,8.66887 5.5225,21.07013 2.8125,31.125 -4.6633,17.30216 -23.82074,27.4665 -31.09375,43.84375 -5.29189,11.9162 -12.88597,25.90893 -8.5,38.1875 8.47004,23.71199 40.57094,29.94604 59.40625,46.65625 8.97655,7.96377 14.35095,20.87655 25.4375,25.46875 26.13126,10.82393 62.70259,17.56087 84.875,0 12.90748,-10.22292 5.70724,-32.61175 11.3125,-48.09375 5.3826,-14.867 9.74326,-31.56031 21.21875,-42.4375 8.58065,-8.13328 21.15563,-10.79589 32.5,-14.125 16.95483,-4.97555 35.11925,-12.44193 52.34375,-8.5 11.21842,2.5674 18.88469,13.16802 28.28125,19.8125 9.93305,7.02385 27.0558,9.34128 29.6875,21.21875 2.69418,12.15946 -12.5241,21.50554 -18.375,32.5 -3.96159,7.44425 -9.06152,14.49824 -11.3125,22.625 -1.64067,5.92334 -5.22637,13.59122 -1.40625,18.40625 15.41471,19.42931 49.20563,6.47771 73.53125,11.3125 21.41883,4.25706 47.68127,0.63982 63.625,15.5625 6.85757,6.41841 5.39844,17.97794 8.5,26.84375 4.33626,12.39521 4.34726,28.05037 14.15625,36.78125 14.17702,12.61881 36.66073,9.76388 55.125,14.15625 19.25057,4.57942 38.26257,14.12927 58,12.71875 8.03487,-0.57421 18.13601,-1.81137 22.625,-8.5 17.60864,-26.237 6.07552,-64.42761 -2.8125,-94.75 -3.86586,-13.18878 -19.32503,-21.73115 -21.21875,-35.34375 -2.48953,-17.89544 4.83837,-36.81401 14.125,-52.3125 5.65647,-9.4401 14.06351,-18.05937 24.0625,-22.65625 24.12262,-11.09001 52.94532,-12.49824 79.1875,-8.46875 27.9605,4.29334 49.76766,30.00542 77.78125,33.9375 7.06438,0.99158 16.70086,2.70814 21.21875,-2.8125 4.4882,-5.48436 -3.332,-14.3899 -1.4375,-21.21875 7.0615,-25.45411 36.4615,-40.1629 45.2812,-65.0625 6.4704,-18.26716 10.3397,-39.58153 4.2188,-57.96875 -4.5382,-13.63267 -14.4555,-28.6205 -28.2812,-32.53125 -31.8496,-9.00896 -61.89711,25.65771 -94.75005,29.6875 -31.40496,3.85218 -67.46572,10.36496 -94.75,-5.65625 -17.36587,-10.19716 -14.3232,-42.30262 -32.53125,-50.90625 -10.7319,-5.07102 -24.31189,-0.1303 -35.34375,4.25 -12.53085,4.97549 -20.82001,17.35109 -32.53125,24.03125 -11.55994,6.59385 -23.54657,16.96052 -36.78125,15.5625 -11.44478,-1.20894 -18.77878,-13.32038 -28.28125,-19.8125 -8.42046,-5.75289 -17.02838,-11.19929 -25.4375,-16.96875 -8.08857,-5.54953 -14.26854,-16.4206 -24.0625,-16.96875 -10.7432,-0.60128 -17.71334,13.53836 -28.28125,15.5625 -11.1982,2.14486 -22.54227,-4.63584 -33.9375,-4.25 -17.2785,0.58504 -34.37311,14.96038 -50.90625,9.90625 -11.47577,-3.50811 -18.16514,-15.94734 -25.46875,-25.46875 -8.61217,-11.22732 -8.29667,-30.91487 -21.1875,-36.75 -2.05294,-0.92928 -4.16945,-1.29123 -6.3125,-1.25 z m 3186.87495,0 c -1.7747,0.0798 -3.5392,0.4756 -5.25,1.25 -12.8908,5.83513 -12.6065,25.52268 -21.2187,36.75 -7.3036,9.52141 -13.9617,21.96064 -25.4375,25.46875 -16.5331,5.05413 -33.6277,-9.32121 -50.9062,-9.90625 -11.3953,-0.38584 -22.7394,6.39486 -33.9376,4.25 -10.5679,-2.02414 -17.5693,-16.16378 -28.3124,-15.5625 -9.794,0.54815 -15.9427,11.41922 -24.0313,16.96875 -8.4091,5.76946 -17.0483,11.21586 -25.4687,16.96875 -9.5025,6.49212 -16.8365,18.60356 -28.2813,19.8125 -13.2347,1.39802 -25.1901,-8.96865 -36.75,-15.5625 -11.7112,-6.68016 -20.0004,-19.05576 -32.5313,-24.03125 -11.0318,-4.3803 -24.6118,-9.32102 -35.3437,-4.25 -18.208,8.60363 -15.1654,40.70909 -32.5313,50.90625 -27.2842,16.02121 -63.345,9.50843 -94.75,5.65625 -32.8529,-4.02979 -62.9004,-38.69646 -94.75,-29.6875 -13.8257,3.91075 -23.7743,18.89858 -28.3124,32.53125 -6.1209,18.38722 -2.2204,39.70159 4.25,57.96875 8.8197,24.8996 38.1884,39.60839 45.25,65.0625 1.8944,6.82885 -5.8945,15.73439 -1.4063,21.21875 4.5179,5.52064 14.1544,3.80408 21.2187,2.8125 28.0136,-3.93208 49.8208,-29.64416 77.7813,-33.9375 26.2422,-4.02949 55.0649,-2.62126 79.1875,8.46875 9.999,4.59688 18.406,13.21615 24.0625,22.65625 9.2866,15.49849 16.6145,34.41706 14.125,52.3125 -1.8937,13.6126 -17.3529,22.15497 -21.2187,35.34375 -8.8881,30.32239 -20.4212,68.513 -2.8126,94.75 4.489,6.68863 14.5902,7.92579 22.625,8.5 19.7375,1.41052 38.7182,-8.13933 57.9688,-12.71875 18.4643,-4.39237 40.9792,-1.53744 55.1562,-14.15625 9.809,-8.73088 9.82,-24.38604 14.1563,-36.78125 3.1016,-8.86581 1.6112,-20.42534 8.4687,-26.84375 15.9438,-14.92268 42.2375,-11.30544 63.6563,-15.5625 24.3256,-4.83479 58.1165,8.11681 73.5313,-11.3125 3.8201,-4.81503 0.2344,-12.48291 -1.4063,-18.40625 -2.251,-8.12676 -7.3509,-15.18075 -11.3125,-22.625 -5.8509,-10.99446 -21.1004,-20.34054 -18.4062,-32.5 2.6316,-11.87747 19.7856,-14.1949 29.7187,-21.21875 9.3966,-6.64448 17.0628,-17.2451 28.2813,-19.8125 17.2244,-3.94193 35.3576,3.52445 52.3124,8.5 11.3444,3.32911 23.9507,5.99172 32.5313,14.125 11.4755,10.87719 15.8362,27.5705 21.2187,42.4375 5.6053,15.482 -1.5949,37.87083 11.3126,48.09375 22.1724,17.56087 58.7124,10.82393 84.8437,0 11.0865,-4.5922 16.4922,-17.50498 25.4687,-25.46875 18.8354,-16.71021 50.9363,-22.94426 59.4063,-46.65625 4.386,-12.27857 -3.2081,-26.2713 -8.5,-38.1875 -7.273,-16.37725 -26.4617,-26.54159 -31.125,-43.84375 -2.71,-10.05487 -2.9264,-22.45613 2.8437,-31.125 5.0244,-7.54838 17.1376,-6.82814 24.0313,-12.71875 7.1677,-6.12477 18.6529,-13.34855 16.9687,-22.625 -4.6952,-25.862 -48.3431,-23.402 -66.4687,-42.4375 -7.8625,-8.25718 -16.3178,-18.30435 -16.9687,-29.6875 -0.205,-3.58425 6.1408,-6.85441 4.25,-9.90625 -13.1797,-21.27249 -50.4605,0.95543 -74.9376,-4.25 -14.3013,-3.0414 -26.545,-13.58099 -41.0312,-15.5625 -10.3176,-1.4113 -20.6949,3.39924 -31.0938,2.84375 -10.1261,-0.54093 -20.5411,-8.74324 -30.125,-8.3125 z M 995.78125,596.34375 c -5.8369,-0.13621 -11.38515,1.07524 -15.40625,4.71875 -2.47014,2.23819 0.48942,7.16444 -1.40625,9.90625 -6.11922,8.85059 -23.64348,5.82204 -28.28125,15.53125 -5.77916,12.09872 0.55594,27.90141 7.0625,39.625 12.6336,22.76334 52.1139,26.95248 58,52.3125 2.8698,12.36428 -14.4489,22.65417 -14.1562,35.34375 0.2626,11.38897 9.6492,20.66246 14.1562,31.125 5.4374,12.62236 19.7899,25.11012 15.5625,38.1875 -2.7358,8.46322 -18.4629,6.28113 -22.6563,14.125 -14.67524,27.4504 -1.3167,62.49608 2.8438,93.34375 2.1395,15.86331 4.5279,32.1895 11.3125,46.6875 6.7136,14.34632 21.5165,23.8652 28.2813,38.1875 5.8106,12.3023 14.3054,26.7191 9.9062,39.5937 -6.4036,18.7409 -29.9658,26.1383 -46.6875,36.75 -11.5701,7.3424 -23.06046,17.7945 -36.75,18.4063 -14.16722,0.6331 -25.97446,-11.6095 -39.59375,-15.5625 -26.2812,-7.6281 -53.51372,-19.2864 -80.625,-15.5625 -10.44287,1.4344 -18.64475,9.8844 -28.28125,14.1563 -16.64635,7.3793 -35.93885,9.4114 -50.90625,19.7812 -9.87914,6.8445 -16.74625,17.3161 -24.03125,26.875 -5.51074,7.2309 -9.89653,15.2698 -14.78125,22.9375 -5.71427,8.9699 -15.92156,16.4194 -17,27 -1.15516,11.3333 8.45064,21.175 12,32 4.20838,12.8349 1.82434,29.0878 11,39 11.82046,12.7693 32.13137,22.2693 49,18 14.65238,-3.7084 14.95869,-32.5156 30,-34 17.51542,-1.7286 24.40522,31.551 42,32 23.01424,0.5873 38.86035,-24.8242 57,-39 9.48801,-7.4147 15.04263,-22.5783 27,-24 11.25406,-1.3381 19.52389,11.6762 30,16 20.27525,8.3682 42.45545,11.3166 63.00005,19 6.8474,2.5608 13.6884,5.3109 20,9 6.7918,3.9698 11.4786,11.6938 19,14 15.9472,4.8898 33.6645,1.3722 50,-2 18.1876,-3.7546 33.4301,-20.2176 52,-20 18.3834,0.2154 33.3109,15.9901 51,21 13.9724,3.9573 28.5651,8.5879 43,7 14.2743,-1.5703 27.7433,-8.5169 40,-16 17.3429,-10.5883 28.3535,-29.9257 46,-40 11.9003,-6.7939 25.3614,-11.6712 39,-13 13.0445,-1.2709 26.9175,-0.079 39,5 7.4387,3.1267 10.9311,15.0704 19,15 4.7373,-0.041 6.3119,-9.6837 11,-9 12.3504,1.8013 12.6611,21.7134 21,31 4.6601,5.1898 9.3043,11.4419 15.9687,13.5 10.8685,3.3564 22.5628,-3.6027 33.9375,-3.5313 18.2723,0.1149 41.3879,-6.4155 54.4375,6.375 8.6653,8.4934 1.7824,24.3464 4.9375,36.0626 3.7105,13.7782 12.6538,25.7933 16.2812,39.5937 3.8647,14.7029 2.174,30.4519 5.6563,45.25 2.1174,8.9978 5.0216,17.9046 9.1875,26.1563 3.2115,6.3611 8.9682,11.2535 12.0312,17.6874 2.1156,4.4438 1.2953,10.2204 4.25,14.1563 5.7308,7.6335 15.9978,10.3762 24.0313,15.5313 10.3458,6.6388 19.0354,17.4237 31.0937,19.8124 14.5589,2.8841 29.9531,-2.5537 43.8438,-7.7812 9.7986,-3.6875 17.5806,-11.4308 26.875,-16.25 10.963,-5.6844 24.3972,-7.0339 33.9375,-14.875 13.0827,-10.7526 14.2589,-33.3836 29,-41.7188 12.7588,-7.2143 25.6007,-15.203 39.875,-18.5312 10.4621,-2.4394 21.7066,1.4635 32.2187,-0.75 11.543,-2.4306 23.8941,-5.6685 32.6876,-13.5312 10.0689,-9.0033 19.3167,-21.9639 19.5624,-35.4688 0.2123,-11.6635 -9.7278,-21.2592 -15.75,-31.25 -6.0205,-9.9879 -19.6502,-16.8846 -20.25,-28.5312 -0.5109,-9.9227 7.0207,-19.5803 14.6563,-25.9376 12.9264,-10.7623 33.5427,-7.3355 47.6875,-16.4374 9.6356,-6.2003 20.0922,-14.0581 23.6875,-24.9376 3.2616,-9.8695 0.1491,-21.3459 -3.7813,-30.9687 -3.1207,-7.6407 -11.9714,-11.9722 -15.0624,-19.625 -5.5283,-13.6867 -3.3334,-29.3333 -5,-44 -0.7537,-6.6323 5.3007,-14.8951 1,-20 -7.1393,-8.4741 -21.9201,-4.1023 -33,-4 -16.8286,0.1554 -33.1736,7.2993 -50,7 -5.7534,-0.1024 -11.6734,-5.1767 -17,-3 -10.6176,4.3388 -10.2432,21.97 -20,28 -5.4542,3.3709 -12.7935,4.6094 -19,3 -9.4238,-2.4437 -15.3334,-12 -23,-18 -18.8198,-14.7285 -48.0646,-12.2066 -66,-28 -10.4264,-9.1811 -12.4185,-25.0749 -21,-36 -8.0091,-10.1964 -24.4257,-14.5367 -28,-27 -3.0311,-10.5689 10.3625,-21.26189 8,-32 -3.3113,-15.04928 -15.782,-28.07983 -29,-36 -10.7673,-6.45164 -24.7247,-4.37895 -37,-7 -14.0742,-3.0051 -32.7318,1.00956 -42,-10 -3.4415,-4.08803 -2.6386,-10.91368 -1,-16 1.4527,-4.50934 8.3463,-6.30775 9,-11 1.5036,-10.79429 -5.3099,-22.27733 -13,-30 -18.7472,-18.82642 -48.7921,-21.05159 -73,-32 -22.4683,-10.16163 -42.6205,-28.01598 -67.0626,-31.28125 -13.7502,-1.83692 -27.1497,7.84629 -41,7.0625 -11.7663,-0.66585 -22.7911,-13.70233 -33.9374,-9.875 -9.8995,3.39923 -14.3295,15.79719 -18.4063,25.4375 -3.1696,7.49507 -0.358,16.86769 -4.2187,24.03125 -5.5373,10.27426 -18.1803,14.94659 -25.4688,24.0625 -9.239,11.55549 -10.8564,29.22151 -22.625,38.1875 -21.3771,16.28629 -50.9071,21.1875 -77.7812,21.1875 -21.4994,0 -46.4258,-2.381 -62.2188,-16.96875 -9.201,-8.49883 -9.0474,-23.37799 -12.75,-35.34375 -10.5115,-33.96989 -13.2803,-70.37941 -26.8438,-103.25 -7.4939,-18.16149 -18.2255,-34.9718 -29.7187,-50.90625 -9.1835,-12.73219 -25.8461,-20.54826 -31.0937,-35.34375 -3.9427,-11.11605 0.5527,-23.58014 1.4062,-35.34375 0.6517,-8.98256 8.3302,-19.757 2.8125,-26.875 -7.883,-10.16928 -26.3604,-0.51667 -38.1563,-5.65625 -13.836,-6.02852 -21.0282,-23.59615 -35.375,-28.28125 -5.1582,-1.68448 -11.288,-3.17629 -17.12495,-3.3125 z m 2103.65625,0 c -5.8369,0.13621 -11.9356,1.62802 -17.0937,3.3125 -14.3468,4.6851 -21.539,22.25273 -35.375,28.28125 -11.7958,5.13958 -30.3046,-4.51303 -38.1876,5.65625 -5.5176,7.118 2.1921,17.89244 2.8438,26.875 0.8535,11.76361 5.3488,24.2277 1.4062,35.34375 -5.2476,14.79549 -21.9414,22.61156 -31.125,35.34375 -11.4931,15.93445 -22.1935,32.74476 -29.6874,50.90625 -13.5636,32.87059 -16.3636,69.28011 -26.875,103.25 -3.7027,11.96576 -3.5178,26.84492 -12.7188,35.34375 -15.793,14.58775 -40.7194,16.96875 -62.2188,16.96875 -26.8742,0 -56.4041,-4.90121 -77.7812,-21.1875 -11.7686,-8.96599 -13.386,-26.63201 -22.625,-38.1875 -7.2885,-9.11591 -19.9315,-13.78824 -25.4688,-24.0625 -3.8607,-7.16356 -1.0803,-16.53618 -4.25,-24.03125 -4.0767,-9.64031 -8.4755,-22.03827 -18.375,-25.4375 -11.1463,-3.82733 -22.1711,9.20915 -33.9374,9.875 -13.8504,0.78379 -27.2497,-8.89942 -41,-7.0625 -24.4421,3.26527 -44.5943,21.11962 -67.0626,31.28125 -24.2078,10.94841 -54.2528,13.17358 -73,32 -7.69,7.72267 -14.5036,19.20571 -13,30 0.6537,4.69225 7.5474,6.49066 9,11 1.6387,5.08632 2.4415,11.91197 -1,16 -9.2682,11.00956 -27.9258,6.9949 -42,10 -12.2753,2.62105 -26.2327,0.54836 -37,7 -13.2179,7.92017 -25.6887,20.95072 -29,36 -2.3625,10.73811 11.0312,21.4311 8,32 -3.5743,12.4633 -19.9908,16.8036 -28,27 -8.5814,10.9251 -10.5736,26.8189 -21,36 -17.9353,15.7934 -47.1802,13.2715 -66,28 -7.6666,6 -13.5762,15.5563 -23,18 -6.2064,1.6094 -13.5457,0.3709 -19,-3 -9.7568,-6.03 -9.3824,-23.6612 -20,-28 -5.3265,-2.1767 -11.2466,2.8976 -17,3 -16.8264,0.2993 -33.1714,-6.8446 -50,-7 -11.0799,-0.1023 -25.8607,-4.4741 -33,4 -4.3006,5.1049 1.7538,13.3677 1,20 -1.6666,14.6667 0.5283,30.3133 -5,44 -3.091,7.6528 -11.9417,11.9843 -15.0624,19.625 -3.9305,9.6228 -7.0429,21.0992 -3.7813,30.9687 3.5953,10.8795 14.0206,18.7373 23.6563,24.9376 14.1448,9.1019 34.7923,5.6751 47.7187,16.4374 7.6356,6.3573 15.1673,16.0149 14.6563,25.9376 -0.5998,11.6466 -14.2296,18.5433 -20.25,28.5312 -6.0223,9.9908 -15.9936,19.5865 -15.7813,31.25 0.2458,13.5049 9.5248,26.4655 19.5937,35.4688 8.7936,7.8627 21.1446,11.1006 32.6876,13.5312 10.5121,2.2135 21.7566,-1.6894 32.2187,0.75 14.2743,3.3282 27.1162,11.3169 39.875,18.5312 14.7411,8.3352 15.8861,30.9662 28.9687,41.7188 9.5403,7.8411 23.0058,9.1906 33.9688,14.875 9.2944,4.8192 17.0451,12.5625 26.8438,16.25 13.8906,5.2275 29.2848,10.6653 43.8437,7.7812 12.0584,-2.3887 20.7792,-13.1736 31.125,-19.8124 8.0335,-5.1551 18.3005,-7.8978 24.0313,-15.5313 2.9547,-3.9359 2.1345,-9.7125 4.25,-14.1563 3.063,-6.4339 8.8197,-11.3263 12.0312,-17.6874 4.1659,-8.2517 7.0701,-17.1585 9.1875,-26.1563 3.4823,-14.7981 1.7916,-30.5471 5.6563,-45.25 3.6273,-13.8004 12.5394,-25.8155 16.25,-39.5937 3.155,-11.7162 -3.6966,-27.5692 4.9687,-36.0626 13.0496,-12.7905 36.1652,-6.2601 54.4375,-6.375 11.3747,-0.071 23.069,6.8877 33.9375,3.5313 6.6644,-2.0581 11.3086,-8.3102 15.9687,-13.5 8.3389,-9.2866 8.6496,-29.1987 21,-31 4.6881,-0.6837 6.2627,8.959 11,9 8.0689,0.07 11.5613,-11.8733 19,-15 12.0825,-5.079 25.9554,-6.2709 39,-5 13.6387,1.3288 27.0997,6.2061 39,13 17.6465,10.0743 28.6571,29.4117 46,40 12.2567,7.4831 25.7257,14.4297 40,16 14.435,1.5879 29.0276,-3.0427 43,-7 17.6891,-5.0099 32.6166,-20.7846 51,-21 18.5699,-0.2176 33.8124,16.2454 52,20 16.3356,3.3722 34.0528,6.8898 50,2 7.5214,-2.3062 12.2081,-10.0302 19,-14 6.3115,-3.6891 13.1526,-6.4392 20,-9 20.5445,-7.6834 42.7248,-10.6318 63,-19 10.4762,-4.3238 18.746,-17.3381 30,-16 11.9574,1.4217 17.512,16.5853 27,24 18.1397,14.1758 33.9858,39.5873 57,39 17.5948,-0.449 24.4846,-33.7286 42,-32 15.0414,1.4844 15.3477,30.2916 30,34 16.8687,4.2693 37.1796,-5.2307 49,-18 9.1757,-9.9122 6.7917,-26.1651 11,-39 3.5494,-10.825 13.1552,-20.6667 12,-32 -1.0784,-10.5806 -11.2857,-18.0301 -17,-27 -4.8847,-7.6677 -9.2705,-15.7066 -14.7812,-22.9375 -7.285,-9.5589 -14.1521,-20.0305 -24.0312,-26.875 -14.9674,-10.3698 -34.26,-12.4019 -50.9063,-19.7812 -9.6365,-4.2719 -17.8384,-12.7219 -28.2813,-14.1563 -27.1112,-3.7239 -54.3437,7.9344 -80.625,15.5625 -13.6192,3.953 -25.4265,16.1956 -39.5937,15.5625 -13.6895,-0.6118 -25.2112,-11.0639 -36.7813,-18.4063 -16.7217,-10.6117 -40.2526,-18.0091 -46.6562,-36.75 -4.3992,-12.8746 4.0956,-27.2914 9.9062,-39.5937 6.7648,-14.3223 21.5677,-23.84118 28.2813,-38.1875 6.7846,-14.498 9.173,-30.82419 11.3125,-46.6875 4.1605,-30.84767 17.4878,-65.89335 2.8125,-93.34375 -4.1934,-7.84387 -19.8892,-5.66178 -22.625,-14.125 -4.2274,-13.07738 10.1251,-25.56514 15.5625,-38.1875 4.507,-10.46254 13.8935,-19.73603 14.1562,-31.125 0.2927,-12.68958 -17.026,-22.97947 -14.1562,-35.34375 5.8861,-25.36002 45.3664,-29.54916 58,-52.3125 6.5066,-11.72359 12.8417,-27.52628 7.0625,-39.625 -4.6378,-9.70921 -22.162,-6.68066 -28.2813,-15.53125 -1.8956,-2.74181 1.0327,-7.66806 -1.4374,-9.90625 -4.0211,-3.64351 -9.5694,-4.85496 -15.4063,-4.71875 z m -2700.15625,69.9375 c -19.71096,0.32842 -41.93887,6.70733 -60.9375,7.53125 -20.81843,0.90284 -45.43854,-4.64675 -62,8 -20.66408,15.77961 -24.02642,46.69553 -30,72 -4.45244,18.86084 3.60614,40.1758 -4,58 -3.88984,9.11545 -10.93651,17.99059 -20,22 -28.04511,12.40631 -65.22054,-14.9434 -92,0 -32.150954,17.94078 -35.700461,64.70348 -58,94 -7.714227,10.13474 -21.344528,16.14467 -26,28 -5.117249,13.03126 -4.208951,28.64767 0,42 2.446514,7.7612 13.956562,11.8624 14,20 0.08192,15.3476 -21.896682,23.2109 -26,38 -3.035263,10.9397 -0.814973,23.0016 2,34 3.475253,13.5782 17.830763,23.9852 18,38 0.158562,13.1309 -17.167024,22.9201 -16,36 2.00478,22.4693 24.895432,37.6381 38,56 11.618263,16.2793 31.93103,28.4183 36,48 2.9279,14.0904 -3.57183,29.1241 -10,42 -15.860768,31.7699 -58.911444,47.6738 -68,82 -2.945597,11.1251 -2.449581,26.1866 6,34 15.24449,14.0967 41.252654,6.8116 62,6 22.99931,-0.8997 54.40651,6.574 68,-12 5.95814,-8.1412 -4.84829,-19.9472 -4,-30 1.70213,-20.1713 3.29134,-44.092 18,-58 11.98349,-11.3312 35.72559,-0.9846 48,-12 10.04654,-9.0161 13.85223,-24.5018 14,-38 0.24695,-22.5572 -21.40456,-41.4493 -22,-64 -0.25621,-9.7034 1.21431,-21.0591 8,-28 14.15113,-14.4749 38.57892,-12.2904 58,-18 11.9487,-3.5128 24.7891,-15.4247 36,-10 12.37149,5.9862 14.82139,24.3069 16,38 0.76275,8.8617 -4.99354,17.1627 -6,26 -2.41401,21.1963 -6.18206,43.582 0,64 4.87588,16.1039 12.07454,36.5694 28,42 49.46399,16.8672 78.26383,48.1258 116,34 18.53194,-6.9371 24.60446,-38.2616 26,-58 3.67428,-51.969 -11.63657,-71.8011 7,-106 13.12581,-24.0865 46.36532,-17.159 58,-42 10.92326,-23.3221 -7.63442,-73.4957 -27,-106 -6.03681,-10.1325 -21.99545,-12.9061 -26,-24 -3.4253,-9.4892 -2.38775,-22.1914 4,-30 12.94867,-15.8289 37.83074,-16.62019 58,-20 13.80748,-2.31375 30.36757,7.79016 42,0 10.18379,-6.82001 6.49548,-24.30957 14,-34 10.2048,-13.17725 32.0849,-15.33272 40,-30 5.07555,-9.40537 4.77637,-21.67944 2,-32 -4.37099,-16.24825 -20.40399,-26.98628 -28,-42 -3.5227,-6.96272 -1.81336,-17.24454 -8,-22 -23.87899,-18.35497 -60.07333,-4.60803 -90,-8 -19.39221,-2.19797 -40.36522,0.36083 -58,-8 -23.01739,-10.91278 -45.19119,-28.93361 -56,-52 -10.48182,-22.36859 13.57504,-56.64084 -4,-74 -9.25704,-9.14333 -21.57606,-11.75596 -35.0625,-11.53125 z m 3293.56255,0 c -12.2703,0.2145 -23.3926,3.09125 -31.9376,11.53125 -17.575,17.35916 6.4819,51.63141 -4,74 -10.8088,23.06639 -32.9826,41.08722 -56,52 -17.6347,8.36083 -38.6077,5.80203 -58,8 -29.9266,3.39197 -66.121,-10.35497 -90,8 -6.1866,4.75546 -4.4772,15.03728 -8,22 -7.596,15.01372 -23.629,25.75175 -28,42 -2.7763,10.32056 -3.0755,22.59463 2,32 7.9152,14.66728 29.7953,16.82275 40,30 7.5046,9.69043 3.8163,27.17999 14,34 11.6325,7.79016 28.1926,-2.31375 42,0 20.1693,3.37981 45.0514,4.1711 58,20 6.3878,7.8086 7.4254,20.5108 4,30 -4.0045,11.0939 -19.9631,13.8675 -26,24 -19.3655,32.5043 -37.9232,82.6779 -27,106 11.6347,24.841 44.8742,17.9135 58,42 18.6366,34.1989 3.3258,54.031 7,106 1.3956,19.7384 7.4681,51.0629 26,58 37.7362,14.1258 66.5361,-17.1328 116,-34 15.9255,-5.4306 23.1242,-25.8961 28,-42 6.1821,-20.418 2.4141,-42.8037 0,-64 -1.0064,-8.8373 -6.7627,-17.1383 -6,-26 1.1787,-13.6931 3.6286,-32.0138 16,-38 11.211,-5.4247 24.0514,6.4872 36,10 19.4211,5.7096 43.8489,3.5251 58,18 6.7857,6.9409 8.2563,18.2966 8,28 -0.5954,22.5507 -22.2469,41.4428 -22,64 0.1478,13.4982 3.9535,28.9839 14,38 12.2745,11.0154 36.0166,0.6688 48,12 14.7087,13.908 16.2979,37.8287 18,58 0.8483,10.0528 -9.9581,21.8588 -4,30 13.5935,18.574 45.0007,11.1003 68,12 20.7474,0.8116 46.7556,8.0967 62,-6 8.4496,-7.8134 8.9456,-22.8749 6,-34 -9.0885,-34.3262 -52.1392,-50.2301 -68,-82 -6.4281,-12.8759 -12.9278,-27.9096 -10,-42 4.069,-19.5817 24.3818,-31.7207 36,-48 13.1046,-18.3619 35.9953,-33.5307 38,-56 1.1671,-13.0799 -16.1585,-22.8691 -16,-36 0.1693,-14.0148 14.5248,-24.4218 18,-38 2.815,-10.9984 5.0353,-23.0603 2,-34 -4.1033,-14.7891 -26.0819,-22.6524 -26,-38 0.044,-8.1376 11.5535,-12.2388 14,-20 4.209,-13.35233 5.1173,-28.96874 0,-42 -4.6554,-11.85533 -18.2857,-17.86526 -26,-28 -22.2995,-29.29652 -25.849,-76.05922 -58,-94 -26.7794,-14.9434 -63.9548,12.40631 -92,0 -9.0634,-4.00941 -16.1101,-12.88455 -20,-22 -7.6061,-17.8242 0.4525,-39.13916 -4,-58 -5.9735,-25.30447 -9.3359,-56.22039 -30,-72 -16.5614,-12.64675 -41.1815,-7.09716 -62,-8 -19.9985,-0.86729 -43.6121,-7.88875 -64.0624,-7.53125 z M 1131.25,1411.375 c -12.171,0.3363 -24.8619,3.4457 -36.9062,4.4375 -9.0676,0.7467 -18.4249,0.9595 -27,4 -17.8885,6.3426 -30.6296,24.2301 -49,29 -12.2645,3.1845 -25.92204,2.8311 -38.00005,-1 -14.89281,-4.7239 -24.52537,-20.1182 -39,-26 -13.50672,-5.4885 -30.0496,-14.6965 -43,-8 -8.47877,4.3842 -5.30171,19.1997 -12,26 -6.48665,6.5854 -18.08602,5.8647 -25,12 -6.50158,5.7693 -11.98849,13.5437 -14,22 -3.87613,16.2951 -4.97382,36.5435 5,50 2.58032,3.4813 7.66809,5.1112 12,5 8.49557,-0.218 15.21721,-7.5867 23,-11 9.86345,-4.3258 19.29639,-10.803 30,-12 14.75911,-1.6505 29.18663,5.9419 44,7 21.94661,1.5677 46.58275,-11.3479 66.00005,-1 7.017,3.7395 8.4206,13.4998 13,20 5.0681,7.1943 13.4315,12.5829 16,21 3.3134,10.8587 0.2445,22.8712 -2,34 -2.3762,11.7813 -4.8274,24.3565 -12,34 -6.4061,8.613 -19.2834,10.6269 -26,19 -3.6427,4.5409 -7.3307,10.188 -7,16 0.6787,11.9297 13.7924,19.8163 18,31 6.1002,16.2142 10.4447,33.682 10,51 -0.3177,12.3652 -2.2539,25.6323 -9,36 -15.6736,24.0879 -43.13753,38.5867 -68.00005,53 -65.44099,37.9375 -142.44953,51.9601 -210,86 -11.48653,5.7883 -28.41242,7.9834 -33,20 -4.47529,11.7225 7.64392,23.9095 11,36 2.20558,7.9458 7.5222,15.8955 6,24 -1.80969,9.6352 -12.63814,15.2202 -17,24 -2.95501,5.948 -6.93378,12.4243 -6,19 0.84487,5.9496 4.7018,12.1645 10,15 l 476.00005,0 c 4.2253,-2.5237 4.1867,-8.9617 7,-13 4.3197,-6.2009 8.4774,-13.1831 15,-17 8.2382,-4.8209 18.9598,-2.9365 28,-6 6.6371,-2.2492 12.1628,-7.4625 19,-9 5.8538,-1.3163 12.4985,2.3947 18,0 12.1102,-5.2714 17.9581,-19.3725 27,-29 5.9725,-6.3593 18.0251,-10.2759 18,-19 -0.032,-11.0805 -19.238,-13.5777 -23,-24 -1.5886,-4.4006 2.0721,-9.4459 1,-14 -1.952,-8.2913 -13.4997,-13.4967 -13,-22 0.5161,-8.7851 8.9748,-15.6998 16,-21 13.144,-9.9168 29.7974,-20.9309 46,-18 12.7755,2.311 16.0814,24.7092 29,26 13.0835,1.3073 21.2411,-16.8217 34,-20 22.339,-5.5648 45.9945,3.8636 69,3 14.0888,-0.5289 29.0114,0.4839 42,-5 8.297,-3.5031 14.7506,-10.5149 21,-17 6.939,-7.2007 9.7723,-18.3162 18,-24 10.8496,-7.495 25.2819,-7.5154 38,-11 19.2596,-5.2769 42.9848,-1.8347 58,-15 25.4119,-22.2813 44.3885,-76.1524 38,-94 -6.3886,-17.8476 -26.4572,-37.6173 -48,-48 -21.5429,-10.3827 -40.3272,-13.6329 -55,-11 -10.2972,1.8477 -18.6765,9.6626 -27,16 -9.9411,7.5689 -15.3586,21.4627 -27,26 -13.3585,5.2065 -29.1013,-4.5186 -43,-1 -7.8158,1.9786 -14.3321,7.4681 -21,12 -17.6525,11.9977 -29.4903,34.0918 -50,40 -11.2838,3.2505 -25.1384,2.3746 -35,-4 -13.6829,-8.8445 -16.2774,-28.2392 -25,-42 -9.8994,-15.6171 -16.3506,-34.718 -31,-46 -6.4312,-4.9528 -16.2453,-3.4986 -23,-8 -14.144,-9.4255 -19.4196,-29.265 -34,-38 -10.8886,-6.5232 -25.8872,-2.8667 -37,-9 -13.4149,-7.4039 -25.6664,-18.5466 -33,-32 -4.0676,-7.4617 -0.9901,-17.5072 -5,-25 -5.116,-9.5594 -17.8841,-13.4406 -23,-23 -4.812,-8.9914 -5.4299,-19.8179 -6,-30 -0.6548,-11.6911 7.5402,-24.2066 3,-35 -2.8464,-6.7666 -11.6508,-8.9726 -17,-14 -4.9838,-4.684 -7.704,-12.3283 -14,-15 -6.675,-2.8325 -13.7912,-3.6393 -21.0938,-3.4375 z m 1829.125,0 c -6.0275,0.1318 -11.9063,1.0771 -17.4688,3.4375 -6.2959,2.6717 -9.0162,10.316 -14,15 -5.3491,5.0274 -14.1535,7.2334 -17,14 -4.5402,10.7934 3.6548,23.3089 3,35 -0.5701,10.1821 -1.188,21.0086 -6,30 -5.1159,9.5594 -17.884,13.4406 -23,23 -4.0099,7.4928 -0.9324,17.5383 -5,25 -7.3336,13.4534 -19.585,24.5961 -33,32 -11.1127,6.1333 -26.1114,2.4768 -37,9 -14.5803,8.735 -19.856,28.5745 -34,38 -6.7547,4.5014 -16.5688,3.0472 -23,8 -14.6493,11.282 -21.1006,30.3829 -31,46 -8.7226,13.7608 -11.3171,33.1555 -25,42 -9.8616,6.3746 -23.7161,7.2505 -35,4 -20.5096,-5.9082 -32.3474,-28.0023 -50,-40 -6.6679,-4.5319 -13.1842,-10.0214 -21,-12 -13.8987,-3.5186 -29.6415,6.2065 -43,1 -11.6414,-4.5373 -17.0589,-18.4311 -27,-26 -8.3235,-6.3374 -16.7028,-14.1523 -27,-16 -14.6727,-2.6329 -33.457,0.6173 -55,11 -21.5428,10.3827 -41.6113,30.1524 -48,48 -6.3885,17.8476 12.5881,71.7187 38,94 15.0152,13.1653 38.7405,9.7231 58,15 12.7181,3.4846 27.1505,3.505 38,11 8.2278,5.6838 11.0611,16.7993 18,24 6.2495,6.4851 12.7031,13.4969 21,17 12.9887,5.4839 27.9112,4.4711 42,5 23.0056,0.8636 46.661,-8.5648 69,-3 12.7589,3.1783 20.9165,21.3073 34,20 12.9186,-1.2908 16.2245,-23.689 29,-26 16.2026,-2.9309 32.856,8.0832 46,18 7.0252,5.3002 15.484,12.2149 16,21 0.4997,8.5033 -11.048,13.7087 -13,22 -1.072,4.5541 2.5886,9.5994 1,14 -3.762,10.4223 -22.9679,12.9195 -23,24 -0.025,8.7241 12.0276,12.6407 18,19 9.042,9.6275 14.8898,23.7286 27,29 5.5015,2.3947 12.1463,-1.3163 18,0 6.8372,1.5375 12.3629,6.7508 19,9 9.0403,3.0635 19.7618,1.1791 28,6 6.5226,3.8169 10.6803,10.7991 15,17 2.8133,4.0383 2.7747,10.4763 7,13 l 476,0 c 5.2983,-2.8355 9.1552,-9.0504 10,-15 0.9338,-6.5757 -3.0449,-13.052 -6,-19 -4.3618,-8.7798 -15.1903,-14.3648 -17,-24 -1.5221,-8.1045 3.7945,-16.0542 6,-24 3.3561,-12.0905 15.4753,-24.2775 11,-36 -4.5875,-12.0166 -21.5134,-14.2117 -33,-20 -67.5504,-34.0399 -144.559,-48.0625 -210,-86 -24.8625,-14.4133 -52.3263,-28.9121 -68,-53 -6.746,-10.3677 -8.6823,-23.6348 -9,-36 -0.4447,-17.318 3.8999,-34.7858 10,-51 4.2077,-11.1837 17.3214,-19.0703 18,-31 0.3307,-5.812 -3.3573,-11.4591 -7,-16 -6.7166,-8.3731 -19.5938,-10.387 -26,-19 -7.1725,-9.6435 -9.6237,-22.2187 -12,-34 -2.2445,-11.1288 -5.3134,-23.1413 -2,-34 2.5685,-8.4171 10.9319,-13.8057 16,-21 4.5794,-6.5002 5.9831,-16.2605 13,-20 19.4174,-10.3479 44.0534,2.5677 66,1 14.8134,-1.0581 29.2409,-8.6505 44,-7 10.7037,1.197 20.1366,7.6742 30,12 7.7828,3.4133 14.5045,10.782 23,11 4.332,0.1112 9.4197,-1.5187 12,-5 9.9739,-13.4565 8.8762,-33.7049 5,-50 -2.0115,-8.4563 -7.4984,-16.2307 -14,-22 -6.9139,-6.1353 -18.5133,-5.4146 -25,-12 -6.6982,-6.8003 -3.5212,-21.6158 -12,-26 -12.9503,-6.6965 -29.4932,2.5115 -43,8 -14.4746,5.8818 -24.1071,21.2761 -39,26 -12.078,3.8311 -25.7355,4.1845 -38,1 -18.3703,-4.7699 -31.1115,-22.6574 -49,-29 -8.5751,-3.0405 -17.9324,-3.2533 -27,-4 -13.2488,-1.091 -27.2706,-4.7275 -40.5312,-4.4375 z M 299.8125,1694.0625 c -14.02089,-0.313 -29.90893,13.5602 -37.46875,25.75 -17.92732,28.9069 9.48388,70.359 -3,102 -6.84766,17.3557 -30.20095,24.6252 -37,42 -10.20635,26.0821 6.28389,57.2452 -2,84 -12.11411,39.1255 -86.74477,103 -67,103 l 381,-2 c 20.10159,0 -26.36026,-119.5758 -64,-165 -13.27852,-16.0247 -42.89588,-14.8061 -53,-33 -12.13777,-21.8558 2.96595,-50.1766 0,-75 -1.34282,-11.2387 9.31005,-28.9405 -8,-33 -10.9437,-2.5665 -13.66073,16 -23,16 -15.65607,0 -35.22431,-0.4504 -50,0 -9.19116,0.2802 -15.53995,-10.9586 -20,-19 -7.26107,-13.0915 4.54738,-37.6298 -9,-44 -2.40377,-1.1303 -4.93479,-1.692 -7.53125,-1.75 z m 3495.625,0 c -2.5965,0.058 -5.1275,0.6197 -7.5313,1.75 -13.5473,6.3702 -1.7389,30.9085 -9,44 -4.46,8.0414 -10.8088,19.2802 -20,19 -14.7756,-0.4504 -34.3439,0 -50,0 -9.3392,0 -12.0562,-18.5665 -23,-16 -17.31,4.0595 -6.6571,21.7613 -8,33 -2.9659,24.8234 12.1378,53.1442 0,75 -10.1041,18.1939 -39.7214,16.9753 -53,33 -37.6397,45.4242 -84.1015,165 -64,165 l 381,2 c 19.7448,0 -54.8858,-63.8745 -67,-103 -8.2838,-26.7548 8.2064,-57.9179 -2,-84 -6.799,-17.3748 -30.1523,-24.6443 -37,-42 -12.4838,-31.641 14.9274,-73.0931 -3,-102 -7.5598,-12.1898 -23.4478,-26.063 -37.4687,-25.75 z" + style="fill:url(#pattern19088);fill-opacity:1;stroke:none;display:inline" + inkscape:connector-curvature="0" /> + <image + transform="translate(-256,2012)" + width="128" + height="32" + xlink:href="data:image/png;base64,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 xvk/rAORkTzdU/EAAAAASUVORK5CYII= " + id="image4484" /> + <g + transform="matrix(0.68289896,0,0,0.68289896,-61.878494,640.19077)" + id="g4495"> + <g + transform="matrix(1,0,0,0.94994478,57.985122,100.49713)" + id="g6999"> + <path + sodipodi:type="arc" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7001" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" /> + <path + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path7003" + style="color:#000000;fill:#e9eaf9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7005" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(0.8814678,0,0,0.8814678,-27.473181,237.51581)" /> + <path + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path7007" + style="color:#000000;fill:none;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + <g + id="g6983"> + <path + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path4487" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#e9eaf9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path6975" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" /> + <path + transform="matrix(0.8814678,0,0,0.8814678,-27.473181,237.51581)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path6979" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:none;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path6981" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" /> + </g> + <g + transform="matrix(1.2280677,0,0,1,84.708519,0.18304356)" + id="g6989"> + <path + sodipodi:type="arc" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path6991" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" /> + <path + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path6993" + style="color:#000000;fill:#e9eaf9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path6995" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(0.8814678,0,0,0.8814678,-27.473181,237.51581)" /> + <path + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path6997" + style="color:#000000;fill:none;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + <g + id="g7009" + transform="matrix(1.1793568,0,0,0.98967521,132.00301,21.255174)"> + <path + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path7011" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#e9eaf9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7013" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" /> + <path + transform="matrix(0.8814678,0,0,0.8814678,-27.473181,237.51581)" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + sodipodi:ry="11.375" + sodipodi:rx="16.125" + sodipodi:cy="2020.375" + sodipodi:cx="-242.125" + id="path7015" + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.7210362;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:none;stroke:#8d97d5;stroke-width:2.7210362;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path7017" + sodipodi:cx="-242.125" + sodipodi:cy="2020.375" + sodipodi:rx="16.125" + sodipodi:ry="11.375" + d="m -226,2020.375 a 16.125,11.375 0 1 1 -32.25,0 16.125,11.375 0 1 1 32.25,0 z" + transform="matrix(1.0763146,0,0,1.0763146,19.704124,-153.2193)" /> + </g> + </g> + <rect + transform="translate(-16.970563,16.970563)" + id="rect7241" + y="2130.4407" + x="262.65598" + height="480" + width="640" + style="fill:url(#pattern7238);stroke:none" /> + <g + transform="translate(99.99751,-24.095822)" + id="g4036" + style="display:inline"> + <path + style="fill:none;stroke:#8d97d5;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m -182.84776,1980.5749 c -5.19303,0 -8.57943,-2.6728 -13.02082,-2.932 -6.74315,-0.3936 -13.40203,2.357 -20.15254,2.1213 -4.06637,-0.142 -7.96441,-2.4392 -12.02082,-2.1213 -3.97564,0.3116 -7.32833,4.0289 -11.31371,3.8891 -4.22201,-0.1481 -7.47316,-4.443 -11.66726,-4.9498 -6.44837,-0.7792 -13.88355,3.1186 -19.23463,3.1186 m 87.47048,9.9629 c -5.57646,0 -11.77601,1.1934 -17.67767,1.0607 -4.50195,-0.1012 -8.93335,-1.5271 -13.43503,-1.4143 -3.8158,0.096 -7.51113,1.4364 -11.31371,1.7678 -6.22363,0.5424 -12.49625,0.6069 -18.73833,0.3536 -8.80534,-0.3573 -19.04402,-2.6389 -26.30574,-2.6389" + id="path3262" + inkscape:connector-curvature="0" + sodipodi:nodetypes="caaaaaccaaaac" /> + <path + sodipodi:nodetypes="caaaaccaaaaacc" + inkscape:connector-curvature="0" + id="path11844" + d="m -182.78706,1989.6637 c -5.57646,0 -11.77601,1.1934 -17.67767,1.0607 -4.50195,-0.1012 -8.93335,-1.5271 -13.43503,-1.4143 -3.8158,0.096 -7.51113,1.4364 -11.31371,1.7678 -6.22363,0.5424 -12.49625,0.6069 -18.73833,0.3536 -8.80534,-0.3573 -19.04402,-2.6389 -26.30574,-2.6389 l 0,-9.0918 c 5.35108,0 12.78626,-3.8978 19.23463,-3.1186 4.1941,0.5068 7.44525,4.8017 11.66726,4.9498 3.98538,0.1398 7.33807,-3.5775 11.31371,-3.8891 4.05641,-0.3179 7.95445,1.9793 12.02082,2.1213 6.75051,0.2357 13.40939,-2.5149 20.15254,-2.1213 4.44139,0.2592 7.82779,2.932 13.02082,2.932 z" + style="fill:#e9eaf9;fill-opacity:1;stroke:none" /> + </g> + <use + height="2048" + width="4096" + transform="translate(-87.371882,-0.88388351)" + id="use11842" + xlink:href="#g4036" + y="0" + x="0" /> + <g + id="g9230" + style="display:inline"> + <path + style="fill:none;stroke:#8d97d5;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 1496.272,81.352984 c 4.8267,-1.745818 5.0075,1.875518 8.9789,3.764539 6.0296,2.868073 15.4716,1.164971 22.1421,0.87822 4.0182,-0.172713 8.8933,1.173951 12.7345,-0.0189 3.7647,-1.169126 6.2344,-5.713888 10.069,-6.627853 4.0622,-0.968232 8.2446,2.36304 12.3817,1.790658 6.3608,-0.880028 11.721,-5.726338 17.0079,-5.879832 m -164.644,21.512935 c 5.1253,-0.282994 7.8572,2.179434 12.2135,2.779162 6.6141,0.910607 12.8985,-0.565007 19.416,0.885307 3.9261,0.87366 8.5606,3.70374 12.568,3.36037 3.9275,-0.33657 8.1703,-4.926125 11.7727,-6.525427 3.8162,-1.69426 9.7977,-0.688235 13.2552,-3.031223 5.3157,-3.602309 7.3717,-10.246707 12.3453,-12.045659 m -166.8887,28.147629 c 4.8788,1.5927 10.2234,4.65835 14.602,4.25177 6.6479,-0.61722 12.61,-7.45376 18.9462,-9.55759 3.8167,-1.26729 7.0551,0.24683 10.9762,-0.64919 3.843,-0.87822 6.5714,-4.957891 10.494,-5.348023 4.1556,-0.413297 7.8932,3.432973 12.0697,3.395143 6.4213,-0.0582 12.9368,-4.494613 18.2181,-4.78622 m -158.5028,6.05041 c 3.9696,-3.25447 7.5894,-2.14557 11.6143,-3.917893 6.1108,-2.690774 10.1713,-6.796657 16.7749,-7.778372 3.9779,-0.591346 7.0302,1.411257 11.0422,1.125655 3.9322,-0.279944 6.6885,-4.09515 10.3473,-2.63019 3.8761,1.551941 2.2014,6.387732 4.6952,9.73776 3.8341,5.15062 13.3671,9.27772 18.3945,10.91889 m -116.579,59.93088 c 5.102,0.55891 12.1812,2.12179 16.0376,0.009 5.855,-3.20824 9.8664,-13.21601 12.3335,-19.41993 1.4862,-3.73711 4.6284,-8.14383 4.817,-12.16164 0.1848,-3.93782 -3.2043,-7.72774 -2.61,-11.62466 0.6295,-4.1283 5.0886,-5.58387 6.8322,-9.37891 2.6808,-5.83482 2.7178,-10.74274 6.8081,-14.09626 m -61.7863,114.93904 c -3.3837,-3.86017 -3.2701,-7.54793 -5.5565,-11.30411 -3.4712,-5.70287 -6.621,-8.79039 -6.72,-15.46629 -0.06,-4.02143 2.1548,-6.11513 2.8573,-10.07489 0.6886,-3.88091 -2.1582,-7.26484 0.4001,-10.26336 2.7102,-3.17655 4.3747,0.18931 8.5448,0.41503 6.4113,0.34704 12.63,-1.28634 17.8873,-0.71042 m -5.7396,132.57723 c 1.7766,-4.81535 5.2609,-7.74763 6.5899,-11.93981 2.0179,-6.36476 -0.048,-14.75893 -0.095,-21.43536 -0.028,-4.02175 1.8305,-8.66444 0.9057,-12.57887 -0.9063,-3.83648 -5.2859,-6.69825 -6.0901,-10.55727 -0.8519,-4.08816 2.2855,-8.64654 1.4997,-12.74861 -1.2083,-6.30687 -10.2997,-12.46666 -13.7864,-16.44432 m 2.9275,148.40249 c -0.8239,-5.06654 -2.9828,-12.89336 -6.6783,-15.27505 -5.6107,-3.61607 -13.9471,1.07547 -14.1527,-5.5961 -0.1239,-4.01882 2.8395,-3.614 4.9631,-7.02976 2.0813,-3.34776 1.2892,-7.53629 4.2696,-10.11639 3.1573,-2.73329 8.9514,-2.08965 12.1055,-4.82685 4.8496,-4.2084 6.5105,-14.53339 8.3411,-19.4953 m 56.5835,89.86885 c -4.7658,1.9071 -6.5081,0.0311 -10.8679,-0.54358 -6.6194,-0.87252 -12.4533,-1.9193 -19.0351,-3.04185 -3.9648,-0.67623 -7.5317,-3.3652 -11.5492,-3.5586 -3.9375,-0.18952 -7.3342,3.07176 -11.0414,1.73223 -3.9273,-1.41906 -2.7852,-5.49842 -5.3303,-8.8087 -3.9131,-5.08951 -5.8866,-8.16923 -6.7355,-13.38997 m 113.6714,72.65213 c -0.1713,-5.13043 2.4052,-8.78717 2.352,-13.1847 -0.081,-6.67655 -4.4606,-13.4956 -5.772,-20.04259 -0.79,-3.94377 0.1449,-9.77701 -1.9755,-13.194 -2.0782,-3.34894 -9.3833,-5.26992 -13.1869,-6.30375 -4.0294,-1.09521 -9.9445,-4.5159 -14.0449,-3.72244 -6.3043,1.21993 -11.8429,8.60688 -16.7537,10.57202 m 70.9449,128.20443 c 0.091,-5.13239 2.0398,-9.51959 1.5346,-13.88841 -0.767,-6.63298 -4.6027,-13.18077 -6.4012,-19.61022 -1.0834,-3.87297 -1.1398,-10.09124 -3.7603,-13.14231 -2.5684,-2.99031 -7.7638,-2.8953 -9.3482,-6.50418 -1.6786,-3.82316 2.1338,-7.2476 1.8645,-11.41517 -0.4141,-6.40756 -4.4011,-12.45132 -4.5777,-17.73789 m 77.6412,129.77506 c -4.6267,-2.22221 -6.3155,-5.64013 -10.0269,-7.99925 -5.6348,-3.58181 -14.0563,-3.31828 -20.3544,-5.5352 -3.7939,-1.33544 -6.1443,-4.34335 -9.9394,-5.67452 -3.7196,-1.30463 -7.7002,0.79221 -10.6757,-1.7928 -3.1522,-2.7385 -0.3258,-5.6945 -1.1215,-9.79432 -1.2235,-6.30342 -4.0562,-11.31664 -3.9621,-16.60524 m 84.9271,115.38022 c -4.9488,-1.36286 -5.2499,-4.33892 -8.4966,-7.30511 -4.9291,-4.50347 -8.862,-6.62613 -10.8201,-13.00898 -1.1794,-3.84491 0.5287,-7.06978 -0.2698,-11.01182 -0.7827,-3.86355 -4.1166,-5.51111 -2.06,-8.87386 2.1787,-3.56242 8.9449,-6.19766 10.1347,-10.20038 1.8293,-6.15412 -12.1354,-16.05076 -16.9029,-18.3406 m 98.0904,37.38579 c -5.0961,0.61532 -9.0576,-1.7478 -13.4271,-1.2532 -6.634,0.75086 -14.7591,10.72201 -16.8905,17.04953 -1.2839,3.81156 -3.049,4.9741 -5.3069,8.30201 -2.2129,3.26166 -1.746,6.12503 -5.5117,7.29022 -3.9893,1.23437 -7.0055,-2.41744 -11.1802,-2.52582 -6.4185,-0.16664 -11.9699,3.06979 -17.0694,1.66546 m 42.3899,-85.98535 c 1.2506,4.97821 2.7198,11.22119 5.781,14.37863 4.6476,4.79383 12.6685,5.72603 17.5346,10.29671 2.9312,2.7533 3.1217,7.00628 6.0052,9.81057 2.8262,2.74843 7.6827,2.56581 9.7739,5.90682 2.2154,3.53939 -0.9064,3.60726 -2.6932,7.38101 -2.7471,5.80207 -4.1995,6.1744 -9.4508,6.80845 m -15.5811,-128.36601 c 3.4749,3.77822 3.2515,7.20213 5.3986,11.04007 3.2599,5.82699 8.1048,7.74592 4.2421,13.19133 -2.3268,3.28019 -6.189,3.27291 -8.9578,6.19052 -2.7137,2.85953 -3.2778,8.70125 -4.9604,12.26611 -1.7825,3.77653 -7.105,5.46956 -8.9618,9.21032 -2.8549,5.75137 -0.2812,16.9105 1.0074,22.04022 M 1452.089,399.23505 c -3.9824,3.23811 -8.9263,6.39284 -10.9968,10.27259 -3.1436,5.89042 -1.0185,16.93163 1.0796,23.27001 1.2638,3.81812 1.778,9.24391 4.2525,12.41475 2.4251,3.10769 7.7757,3.74758 10.1127,6.92219 2.4757,3.3631 0.8603,8.25944 2.8303,11.94217 3.0289,5.66214 11.0988,9.58148 14.6795,13.47468 m 11.0001,-144.03428 c 0.6509,5.0917 -1.5564,8.32802 -1.5755,12.72582 -0.029,6.67697 2.6755,12.44154 1.5816,19.02773 -0.6589,3.96739 -3.6374,6.05282 -4.7036,9.93107 -1.045,3.80104 1.4326,7.49167 -1.3056,10.3265 -2.9008,3.00314 -6.7083,0.0186 -10.7215,1.17443 -6.1703,1.77701 -12.6346,8.49971 -16.7382,11.83637 m -25.4345,-65.54954 c 4.923,-1.4539 9.1904,-0.0541 13.4075,-1.302 6.4026,-1.89462 12.7517,-7.09898 18.2618,-10.86979 3.3192,-2.27144 7.1454,-2.52696 10.4296,-4.84825 3.2187,-2.2751 3.2176,-6.78723 7.098,-6.10089 4.1107,0.72709 1.1565,3.70754 2.447,7.6796 1.9841,6.10698 5.7081,10.7736 6.3788,16.02026 M 1358.309,316.50944 c -1.0137,5.03218 -4.3441,9.85108 -4.0048,14.23472 0.5152,6.65548 12.0047,15.0261 18.6238,15.89532 3.9872,0.52363 9.947,1.75678 13.7257,0.37886 3.7035,-1.35051 5.9082,-6.09384 9.701,-7.16714 4.0181,-1.13704 7.7997,2.25405 11.9588,1.87158 6.3945,-0.58805 12.9528,-6.40016 18.0257,-7.89831 m -117.5949,-56.13183 c 5.0753,0.76954 8.0688,4.67673 12.4018,5.42767 6.5784,1.14017 13.638,-1.7131 20.2751,-0.98708 3.998,0.43736 5.7525,2.78304 9.5832,4.0079 3.7545,1.20043 7.1286,-1.08884 9.1221,2.3113 2.1119,3.60202 -2.0527,5.4029 -2.7718,9.51688 -1.1056,6.32518 1.1538,13.12337 0.1093,18.3087 m -28.432,-111.95735 c -3.8053,3.44472 -8.4295,5.43042 -11.0592,8.95514 -3.9926,5.35137 -4.7168,13.15399 -8.0245,18.95406 -1.9926,3.49383 -5.3755,4.9615 -7.5114,8.36979 -2.0933,3.34044 -1.2585,8.23702 -3.5457,11.44739 -2.423,3.40099 -8.8557,7.1487 -9.6546,11.24733 -1.2283,6.30158 14.0876,14.46053 19.3174,15.25349 m 103.1773,-65.69763 c -5.0286,1.02912 -7.9408,-1.02512 -12.337,-1.10003 -6.6745,-0.11381 -11.3303,-0.70262 -17.6178,-2.94666 -3.7875,-1.35178 -5.8076,-4.51046 -9.5415,-6.00599 -3.6596,-1.46571 -8.3347,0.25003 -11.8962,-1.43924 -3.773,-1.78958 -7.0374,-7.4019 -11.103,-8.35707 -6.2507,-1.46855 -16.8248,7.08164 -20.7459,10.63119 m 154.0974,-31.88994 c -4.7982,-1.82286 -12.4982,-4.65725 -16.4919,-2.81947 -6.0634,2.79016 -4.1025,15.16542 -9.2965,19.36073 -3.1287,2.52715 -6.999,2.86521 -10.1222,5.39952 -3.0611,2.48386 -3.5994,7.27623 -7.0727,9.14014 -3.6795,1.97458 -8.0476,-0.65214 -12.048,0.54768 -6.1506,1.8447 -10.7595,7.55039 -15.9412,8.61083 m 152.3378,-33.19601 c -5.1326,0.0518 -9.4314,-2.02307 -13.801,-1.52616 -6.6342,0.75437 -12.5599,4.99386 -19.1773,5.88211 -3.9862,0.53505 -7.4113,-1.12814 -11.4007,-0.61631 -3.91,0.50167 -6.6563,4.21962 -10.5325,3.50504 -4.1062,-0.757 -4.1166,-5.50382 -7.4413,-8.03169 -5.1116,-3.88657 -13.7017,-5.1738 -18.646,-7.05215 m 118.8716,77.96898 c -1.4495,-4.92416 0.1691,-8.15222 -0.2785,-12.52667 -0.6797,-6.64153 -3.522,-12.32889 -3.518,-19.0059 0,-4.02209 1.9902,-8.73386 1.0515,-12.64456 -0.9201,-3.83283 -5.5133,-7.25115 -7.2809,-10.77392 -1.8726,-3.73193 -2.5551,-10.76913 -5.7885,-13.41248 -4.9714,-4.06411 -16.7184,-2.69422 -22.0072,-2.64088 m 13.4356,146.69471 c 2.0048,-4.72541 5.34,-4.6246 8.5853,-7.59146 4.9273,-4.50441 8.5841,-9.60873 13.6988,-13.89968 3.0811,-2.58477 8.8778,-6.6681 9.8883,-10.56068 0.9903,-3.81507 -2.0046,-9.08132 -1.9037,-13.02181 0.1068,-4.17446 3.7101,-8.71172 3.3518,-12.87274 -0.5508,-6.39752 -6.8856,-12.85915 -8.3791,-17.93318 m -45.6725,157.18693 c -0.8386,-5.06391 1.7218,-7.49757 2.3046,-11.85621 0.8851,-6.61752 -0.5458,-12.38276 1.7677,-18.64568 1.3937,-3.77264 4.7691,-6.41123 5.8982,-10.27186 1.1066,-3.78377 -1.1983,-8.22137 0.3098,-11.86347 1.5977,-3.85835 6.7609,-5.96221 8.3648,-9.8187 2.4659,-5.92928 0.5015,-13.58563 2.5672,-18.45486 m -10.791,166.00528 c -0.7274,-5.08128 1.4179,-8.10622 1.5612,-12.50152 0.2175,-6.67318 -1.2138,-12.79185 -0.5703,-19.43763 0.3877,-4.00328 2.3395,-9.08664 1.4193,-13.00192 -0.902,-3.83732 -5.3514,-6.74221 -6.2449,-10.58145 -0.9464,-4.06719 2.2926,-8.40098 1.6222,-12.52356 -1.0306,-6.3384 -6.4725,-11.91401 -7.3367,-17.13204 m 33.7391,160.80507 c 1.0008,-5.03445 4.4445,-7.56041 5.6963,-11.77628 1.9007,-6.40074 0.4402,-15.02121 -0.2524,-21.66083 -0.4172,-3.99958 -1.5642,-11.88537 -4.6886,-14.41816 -3.0622,-2.48234 -8.934,-1.65078 -12.2236,-3.82275 -3.4849,-2.30093 -2.0005,-5.74142 -3.8565,-9.48237 -2.8536,-5.75165 -7.2419,-9.29509 -7.9914,-14.53102 m 79.7359,112.57179 c -5.1045,-0.54003 -8.3954,-3.44833 -12.7592,-3.99454 -6.6255,-0.82936 -13.0116,1.5873 -19.5511,0.24045 -3.9393,-0.81134 -5.8717,-3.62631 -9.685,-4.90407 -3.7374,-1.25229 -7.4747,0.85057 -10.2175,-1.98042 -2.9056,-2.99908 -0.1373,-5.90998 -0.8321,-10.02819 -1.0681,-6.33169 -3.5605,-10.79667 -2.5292,-15.98434 m 129.8857,73.75239 c -5.1321,-0.0871 -7.2745,-3.08157 -11.5053,-4.28065 -6.4235,-1.82057 -11.4944,-0.96328 -16.357,-5.53768 -2.9291,-2.75554 -3.3521,-6.91267 -6.2658,-9.68567 -2.8557,-2.71777 -8.0285,-2.78514 -10.819,-5.56887 -2.9563,-2.94902 -4.8515,-9.11023 -8.4985,-11.14479 -5.6073,-3.1281 -15.4545,-1.19003 -20.7143,-1.7465 m 126.7628,-0.34333 c 3.3363,3.90005 1.1503,5.61847 1.1795,10.01591 0.044,6.67642 -0.4124,9.16326 -5.8609,13.02205 -3.2821,2.32444 -7.1597,1.97066 -10.5257,4.17185 -3.299,2.15738 -4.3647,6.43653 -8.1124,7.65787 -3.9702,1.29387 -7.7156,-2.31219 -11.875,-1.93594 -6.395,0.57846 -12.0453,4.59265 -17.3336,4.50288 m -2.9018,-101.93641 c 1.2466,4.97937 0.1281,9.68281 1.6281,13.81692 2.2773,6.27664 8.0624,11.59037 11.4261,17.35807 2.0263,3.47435 3.7478,8.9985 6.9468,11.43632 3.1353,2.38926 8.6707,1.68878 11.9358,3.89743 3.459,2.33978 3.977,7.69228 7.2479,10.28946 5.0291,3.99312 12.1042,4.20737 15.5421,8.22612 m -63.9838,-139.31569 c 3.9575,3.26777 5.7263,7.17021 9.2127,9.85069 5.2932,4.06968 8.2758,4.8825 7.131,11.45994 -0.6896,3.96211 -3.8018,5.77016 -5.029,9.60067 -1.2027,3.75425 0.8987,8.22811 -0.6764,11.84164 -1.6687,3.82809 -7.0873,7.23782 -7.9489,11.32418 -1.3247,6.28273 4.4206,15.23738 5.7051,20.36831 M 1661.261,403.09399 c 4.1249,3.05435 7.0372,7.24806 11.0337,9.08332 6.0678,2.78645 13.0021,1.8951 18.7478,5.29563 3.4611,2.04843 3.2006,4.37591 5.6483,7.56679 2.399,3.12732 6.0605,3.49192 6.2791,7.42756 0.2316,4.16932 -4.1491,7.60414 -4.3898,11.77375 -0.37,6.41072 7.0061,16.54328 11.084,19.91051 m -63.5796,-144.9771 c 1.5479,4.89381 0.9773,8.64256 2.1298,12.88643 1.7498,6.44328 4.018,10.82985 3.2134,17.45806 -0.4847,3.9927 -3.1764,7.48329 -3.2927,11.50391 -0.1139,3.94055 3.2941,7.75831 2.9473,11.68479 -0.3675,4.15962 -4.4352,8.91697 -4.0774,13.07792 0.5501,6.39741 9.4373,14.8278 13.6878,17.97511 m 22.7057,-159.95523 c -0.9915,5.03603 -4.199,4.32938 -7.5116,7.22157 -5.0294,4.39101 -8.9968,10.21928 -13.486,15.16154 -2.7041,2.97711 -6.846,5.93857 -8.5707,9.57225 -1.6903,3.56133 -0.1622,8.49917 -1.9195,12.02774 -1.8615,3.73807 -7.3158,5.87153 -8.9451,9.71698 -2.5051,5.91232 0.6726,16.83256 2.2676,21.87531 m 28.9448,-159.43343 c 0.9428,5.04549 -1.9123,7.63099 -2.34,12.00797 -0.6494,6.64536 1.2126,13.63715 1.2839,20.31285 0.043,4.0213 -1.4743,9.11598 -0.2444,12.94541 1.2053,3.75318 5.9822,6.19113 7.0571,9.98376 1.1387,4.01782 -1.9968,7.88503 -1.5198,12.03415 0.7334,6.37922 5.1596,11.15688 4.1378,16.34618 M 1602.224,142.98518 c 1.7693,4.81754 4.7624,11.6162 8.5974,13.76782 5.8225,3.26676 16.7526,-0.68495 23.2388,-2.26914 3.9072,-0.95426 8.4376,-0.16663 12.1414,-1.73553 3.6299,-1.5377 5.3775,-5.91474 9.2739,-6.51015 4.1279,-0.63077 4.7453,3.23527 8.4486,5.16552 5.6938,2.96772 8.4121,3.44622 9.3836,8.64527 m -93.8623,-85.661337 c 5.1306,0.135035 6.1493,2.642855 10.0029,4.761135 5.8508,3.216145 9.4417,3.300027 9.7273,9.970273 0.172,4.018023 -2.7039,6.642378 -2.9539,10.656796 -0.245,3.934493 2.9302,7.843893 2.4398,11.754963 -0.5196,4.1433 -4.1381,8.54064 -4.0255,12.71578 0.1731,6.41922 4.9239,14.0194 6.747,18.98357 M 1493.1245,72.827436 c 5.1831,-1.874721 15.0598,-0.326058 20.6307,1.407295 4.2496,1.322222 6.5722,2.681088 11.0138,2.390797 3.7648,-0.246449 6.3261,-2.191714 9.9629,-3.196838 5.9522,-1.645075 11.2567,-3.51488 17.2856,-4.850979 8.5046,-1.884771 20.1302,-2.196825 27.3048,-2.405124 m -164.9412,21.528804 c 5.5038,-0.303889 12.8783,-1.599267 18.6486,-0.734123 4.4019,0.659928 8.8278,3.000027 13.2235,3.701752 3.726,0.594429 6.537,-0.132516 10.3048,-0.334447 6.1667,-0.330499 7.8739,-0.580083 13.1987,-3.706343 7.5113,-4.410046 16.9146,-10.540442 23.6641,-12.981722 M 1332.387,101.68605 c 5.2391,1.7103 7.3976,1.10644 12.9207,-0.77319 4.2132,-1.433862 8.305,-2.091305 12.3546,-3.938596 3.4325,-1.566192 7.8869,-4.388245 11.5249,-5.389336 5.9543,-1.638475 12.5092,-2.408366 18.6598,-2.961355 8.6762,-0.780085 19.415,0.343292 26.5821,-0.05244 m -163.8102,8.137883 c 4.2627,-3.494764 10.6142,-8.493445 16.031,-10.661347 4.1322,-1.65376 10.0146,-2.12875 14.3692,-3.048864 3.6911,-0.780305 7.969,-2.723344 11.7049,-3.25356 6.1144,-0.867799 17.9553,0.800144 22.7675,4.669671 6.7884,5.458505 9.8029,15.871884 16.6252,18.099054 m -118.4699,59.53196 c 5.4788,0.60017 6.338,-0.078 10.6824,-3.9732 3.314,-2.97135 5.5171,-3.75029 7.1108,-7.90605 1.3505,-3.52274 0.4987,-6.06161 0.7717,-9.82488 0.4467,-6.1593 0.5629,-12.62821 1.9628,-18.64221 1.9748,-8.4836 11.4459,-19.76605 16.9967,-24.316966 M 1188.3539,225.3883 c -3.6335,-4.14519 -9.8038,-9.28 -12.3637,-14.5233 -1.9528,-3.99973 -2.0084,-11.07777 -2.513,-15.50018 -0.4282,-3.74856 -1.5883,-8.85109 -1.4168,-12.62017 0.2806,-6.1688 5.881,-17.61777 10.9476,-21.14425 7.1472,-4.97461 23.4094,0.52977 30.544,1.31132 m -15.2761,138.52449 c 1.9077,-5.17089 2.2388,-10.07678 3.23,-15.82658 0.7561,-4.3861 2.4318,-7.74764 2.3205,-12.19724 -0.095,-3.77165 -1.7439,-6.58306 -2.5183,-10.27599 -1.2674,-6.04417 -2.5128,-10.94835 -3.8908,-16.968 -1.9439,-8.49157 -3.6768,-15.95639 -8.4084,-21.3543 m 0.8035,143.92753 c -0.8847,-5.44063 -1.462,-4.69207 -6.9876,-6.56649 -4.2152,-1.42983 -12.8172,-7.85114 -13.9977,-12.14181 -1.001,-3.63684 -0.3395,-12.41552 1.3168,-15.80555 2.7108,-5.54841 8.9264,-11.34904 13.6177,-15.36495 6.6178,-5.66503 12.8471,-10.39156 15.3314,-17.12514 m 68.5444,101.43109 c -5.1176,2.04791 -16.4518,4.83183 -21.7922,2.48203 -4.0739,-1.79246 -6.4804,-4.13429 -10.8908,-4.73545 -3.7385,-0.50918 -7.3625,0.5223 -11.1328,0.37412 -6.1709,-0.24252 -14.8759,-1.71972 -20.3253,-4.62345 -7.6872,-4.0961 -11.672,-20.97937 -12.8241,-28.06421 m 113.5633,71.55622 c -0.184,-5.50923 -1.5516,-11.11116 -2.0133,-16.92788 -0.3521,-4.43716 0.1564,-8.02457 -1.078,-12.30096 -1.0468,-3.62475 -2.8007,-6.2439 -4.4138,-9.65477 -2.6401,-5.58252 -0.2442,-5.03764 -6.4141,-4.81597 -8.7036,0.31272 -16.3383,3.23479 -23.0025,5.9016 m 58.479,119.66182 c 0.098,-5.51134 -2.093,-10.15053 -3.0445,-15.90744 -0.7259,-4.39153 -0.065,-8.57087 -1.316,-12.84238 -1.061,-3.62061 -2.6046,-5.02026 -4.8354,-8.06325 -3.6511,-4.98041 -9.0967,-11.32424 -10.6313,-17.30573 -2.1648,-8.43774 -0.6199,-20.59993 -0.8595,-27.77411 m 82.8473,137.68936 c -4.9683,-2.38628 -10.7902,-4.02062 -16.0509,-6.54373 -4.0131,-1.92467 -7.0314,-4.24487 -11.3094,-5.47431 -3.6264,-1.04175 -7.9566,-0.9098 -11.5837,-1.94959 -5.9363,-1.70181 -15.276,-7.02567 -18.8406,-12.06729 -5.0284,-7.11191 -3.6328,-22.56909 -3.505,-29.74602 m 91.6621,124.32015 c -5.3142,-1.46348 -14.8027,-5.37825 -18.5434,-9.85632 -2.8536,-3.41598 -4.8646,-9.79972 -6.6306,-13.88522 -1.4973,-3.46288 -4.0386,-8.03237 -4.9651,-11.69004 -1.5164,-5.98645 1.2736,-17.29981 4.6522,-22.469 4.766,-7.29189 1.9613,-8.31632 -4.5085,-11.42376 m 103.1753,38.20706 c -5.4725,0.66075 -9.9291,1.5124 -15.4275,3.46378 -4.1944,1.4886 -4.8528,0.28513 -6.3505,4.4763 -1.2692,3.55275 -0.8528,8.10151 -2.1298,11.65125 -2.09,5.80981 -14.1385,12.46693 -20.1967,13.66345 -8.546,1.68787 -21.9239,-1.07154 -28.8441,-2.97729 m 53.6032,-97.02273 c 1.3429,5.34578 4.2997,5.79637 8.8682,9.42613 3.485,2.76886 6.5106,6.16934 10.079,8.82976 3.0249,2.25478 7.2648,4.97971 9.9393,7.64149 4.3774,4.3565 10.4523,10.92173 12.4664,16.75874 2.8413,8.23393 -14.9857,22.36389 -22.112,23.22433 m -10.022,-143.58869 c 3.7315,4.05718 10.0749,9.58902 12.4415,14.92222 1.8054,4.06831 1.5806,13.82551 -0.029,17.97468 -1.364,3.51714 -4.7428,9.0817 -7.3161,11.84157 -4.2115,4.51703 -6.1021,6.42808 -8.6336,12.06058 -3.571,7.94544 -8.2753,14.16008 -6.5266,21.1214 m -13.4473,-142.45937 c -4.2764,3.47719 -4.3042,6.55895 -6.131,12.10031 -1.3936,4.22711 -2.4118,5.31886 -1.1233,9.57925 1.0926,3.61117 3.452,4.75667 5.6607,7.81566 3.6149,5.00659 7.3788,8.8559 10.9137,13.91917 4.9864,7.14246 8.6905,16.43091 13.5497,21.71421 m 13.3159,-139.09155 c 0.6989,5.46764 2.6795,12.12541 2.699,17.96047 0.015,4.45115 -1.503,9.72935 -1.9647,14.15625 -0.3911,3.75247 0.029,8.80072 -0.8156,12.47816 -1.3831,6.01881 -7.1049,16.04494 -12.3063,19.37287 -7.3373,4.69453 -18.7787,4.79137 -24.3476,9.3194 m -33.8014,-81.30235 c 5.2866,-1.56124 10.3358,-4.59172 15.8674,-6.44907 4.2197,-1.41687 7.6006,-0.99672 11.2046,-3.60899 3.0546,-2.21459 5.187,-5.72551 8.1306,-8.08609 4.8176,-3.86353 20.3348,-6.95207 25.3645,-3.37172 7.0952,5.05057 8.1953,22.5215 9.1055,29.64152 m -125.9594,-14.14994 c -1.0886,5.40373 -1.1917,8.15555 0.6931,13.67732 1.4378,4.21214 0.2412,4.12407 4.5957,5.0427 3.6911,0.77828 4.556,-1.1205 8.1436,-2.28889 5.8717,-1.9123 11.2633,-4.29376 17.2735,-5.71121 8.4784,-1.99951 18.9435,-1.82714 25.8277,-3.86021 m -113.7167,-56.40748 c 5.45,0.82635 10.9895,1.28101 16.7991,1.82544 4.4317,0.41529 8.5368,1.87937 12.9876,1.93612 3.7727,0.0477 9.1748,-0.63022 12.877,0.0981 6.0592,1.19196 16.95,10.66833 18.4712,16.6529 2.146,8.44208 -3.3883,21.82644 -4.8058,28.86323 M 1335.1754,211.0179 c -4.0863,3.69906 -5.3984,7.90719 -8.3782,12.92416 -2.2731,3.8271 -5.4546,6.87084 -7.4213,10.86408 -1.6668,3.38501 -2.5134,7.75135 -4.2603,11.09567 -2.8592,5.4736 -6.805,9.43298 -9.861,14.79789 -4.3109,7.56797 -2.4348,7.78315 4.6622,8.85924 m 103.6953,-47.81723 c -5.4,1.10511 -13.8917,3.71284 -19.624,2.62545 -4.3728,-0.82947 -9.1392,-4.44748 -13.3536,-5.87999 -3.5723,-1.21389 -7.9232,-1.11212 -11.5024,-2.30655 -5.858,-1.95492 -10.3696,-5.06381 -16.1812,-7.14894 -8.1981,-2.94135 -13.0389,-3.47647 -18.3601,1.34048 m 144.8251,-30.11274 c -5.1526,-1.95745 -4.466,-4.38475 -7.3908,0.6619 -2.2311,3.84974 -4.1315,8.64793 -6.748,12.24813 -2.2175,3.0519 -5.703,7.24708 -8.5206,9.75674 -4.6115,4.10752 -10.8411,8.08821 -16.4035,10.76995 -7.8466,3.78298 -19.8837,5.75316 -26.9155,7.19224 m 150.6667,-33.01546 c -5.5117,0.0556 -10.2517,2.02885 -15.9964,3.05247 -4.3822,0.78088 -8.9866,0.25671 -13.3316,1.22386 -3.6828,0.82017 -7.5903,2.76662 -11.287,3.52334 -6.0503,1.23853 -15.8105,0.93923 -21.5886,-1.23845 -8.1509,-3.07191 -15.4657,-12.43994 -22.1754,-14.98896 m 113.3985,72.09444 c -1.5564,-5.28774 -4.6842,-12.09817 -5.1844,-17.91152 -0.3815,-4.43459 0.8894,-9.37461 0.6222,-13.81791 -0.2268,-3.7663 -1.6987,-6.87453 -2.4251,-10.57709 -1.1888,-6.05994 -0.7589,-8.16153 -4.5804,-13.01083 -5.3908,-6.84061 -10.2834,-9.29272 -17.4606,-9.22033 m 4.9539,134.1099 c 2.1528,-5.07431 6.9621,-13.09291 11.5282,-16.72578 3.4831,-2.77128 8.0154,-4.2028 11.3748,-7.1229 2.8473,-2.47548 2.839,-3.90416 4.2198,-7.41524 2.2599,-5.74654 1.8784,-7.77894 1.4162,-13.93688 -0.652,-8.68665 -1.6021,-17.73164 -3.629,-24.61738 m -45.9071,156.16387 c -0.9006,-5.43781 -2.1505,-13.47234 -1.2885,-19.24304 0.6575,-4.40206 3.3088,-9.53991 4.5952,-13.80098 1.09,-3.61197 1.0719,-7.70168 2.0527,-11.34536 1.6051,-5.96356 3.7679,-11.60708 6.013,-17.35967 3.167,-8.11487 7.6233,-17.64862 10.4266,-24.25645 m -11.4099,170.90316 c -0.781,-5.45645 -2.8718,-12.73317 -2.4672,-18.55422 0.3087,-4.44046 2.4602,-8.96417 2.7629,-13.40499 0.2562,-3.76425 -1.1411,-6.1989 -1.8462,-9.90539 -1.1539,-6.06635 -2.6715,-10.78438 -4.0376,-16.80653 -1.9273,-8.49509 -2.769,-19.28769 -3.9417,-26.36885 m 33.7825,157.60654 c 1.0747,-5.40618 1.5173,-11.54005 2.7696,-17.23898 0.9552,-4.34731 2.7826,-7.02272 2.3511,-11.45235 -0.3661,-3.75471 -1.4969,-3.89138 -3.8782,-6.81774 -3.8974,-4.78953 -8.2977,-5.02043 -13.1812,-8.79948 -6.8888,-5.33087 -10.4346,-21.27599 -11.4517,-28.38144 m 87.839,120.32764 c -5.4814,-0.57991 -11.4406,0.23146 -17.2531,-0.28307 -4.4339,-0.39248 -9.1028,-2.23504 -13.5255,-2.7381 -3.7489,-0.42603 -8.9148,-0.20755 -12.5659,-1.15864 -5.9757,-1.55662 -15.3396,-7.63256 -18.756,-12.77623 -4.8193,-7.25587 -2.8933,-23.47181 -1.4938,-30.51178 m 138.7081,84.61265 c -5.511,-0.0936 -13.431,-0.0584 -19.0142,-1.75223 -4.2591,-1.29209 -10.0467,-5.7461 -13.4673,-8.59359 -2.8997,-2.41335 -6.9317,-4.61767 -9.6879,-7.19486 -4.511,-4.21804 -7.1166,-7.77627 -12.0762,-11.45512 -6.9962,-5.18953 -13.6386,-8.26007 -20.7765,-9.01524 m 134.5855,-15.33689 c 3.5827,4.18801 8.3638,16.33601 6.6839,21.92325 -1.2815,4.26211 -7.2968,10.20998 -10.6352,13.15381 -2.8294,2.49559 -6.0887,6.44115 -9.2281,8.5339 -5.1382,3.42517 -12.5921,6.75655 -18.623,8.08232 -8.5076,1.87019 -20.5697,0.90558 -27.7462,0.78375 m 6.0541,-113.2914 c 1.3387,5.34703 4.2539,9.53192 6.5946,14.87699 1.7856,4.07736 2.3163,8.03445 4.6986,11.79457 2.0196,3.18703 4.1578,4.13795 7.0681,6.53912 4.7634,3.92997 8.6855,6.10117 13.8152,9.53932 7.2363,4.84999 15.9907,13.17686 20.6562,18.63053 M 1716.0063,456.4707 c 4.2497,3.50906 11.1995,5.53709 15.2907,9.69721 3.1209,3.17344 4.9867,12.78686 5.0011,17.23746 0.013,3.77251 -0.1898,9.683 -1.2068,13.31658 -1.6646,5.94703 -4.2078,11.09164 -6.2662,16.91375 -2.9037,8.21291 -3.0878,15.15477 -1.3447,22.11773 m -60.8598,-139.99844 c 4.4295,3.27987 9.1027,3.64703 14.5374,5.77189 4.1457,1.62088 8.3806,4.612 12.4141,6.49434 3.4192,1.59521 9.2662,4.04429 12.0062,6.63751 4.4845,4.24429 7.545,15.62524 7.5647,21.80021 0.028,8.71067 -3.2252,16.11381 2.3088,20.68333 m -60.7207,-140.76569 c 1.6622,5.25515 6.4965,11.29996 7.2505,17.08589 0.5751,4.41367 -0.7772,10.14912 -0.9002,14.59849 -0.1038,3.77147 0.7874,7.85821 0.7116,11.63084 -0.1241,6.17459 -0.8179,11.1905 -0.8233,17.36572 -0.01,8.71103 -0.6354,15.12637 5.1326,19.39744 m 26.2243,-150.95273 c -1.0648,5.40786 -6.4602,14.57969 -10.989,18.25923 -3.4548,2.80688 -7.4765,3.91319 -10.4336,7.23945 -2.5062,2.81974 -2.4478,5.61574 -4.0356,9.03869 -2.5989,5.60231 -5.0479,10.19727 -7.6591,15.79324 -3.6835,7.89393 -7.4732,13.96312 -5.3086,20.80642 m 29.1994,-158.42014 c 1.0125,5.41803 2.0438,13.1027 1.5679,18.91853 -0.3629,4.43649 -2.1224,8.42756 -2.0305,12.87763 0.078,3.77205 1.488,5.81121 2.6733,9.39335 1.9401,5.86284 3.837,11.18444 5.4359,17.14913 2.2554,8.41405 2.1119,21.73402 0.7253,28.7762 m -80.739,-105.53769 c 1.9,5.17324 2.2504,4.91514 8.0164,5.80863 4.3985,0.68155 6.567,1.41058 10.8551,0.21663 3.6346,-1.01242 6.2369,-3.43331 9.6983,-4.93573 5.6652,-2.45898 14.0517,-5.15517 20.2222,-4.94633 8.7044,0.29458 21.4006,15.38424 22.719,22.43964 M 1579.6245,65.302117 c 5.5094,0.145006 15.6094,1.426017 20.3374,4.844936 3.6066,2.608024 7.7814,11.449421 8.4783,15.84527 0.591,3.726042 1.6772,9.139825 1.4758,12.907744 -0.3295,6.166903 -1.5916,10.726933 -1.4696,16.900703 0.172,8.70898 -1.005,17.55908 1.4691,24.29574 m 883.1525,2.77429 c 1.7692,-4.81744 4.8706,-8.53237 5.7086,-12.84954 1.2724,-6.55455 -0.2729,-14.27857 -0.6331,-20.94521 -0.2169,-4.01585 1.341,-8.3506 0.4615,-12.275384 -0.8619,-3.846632 -4.7147,-6.106539 -4.0582,-9.992889 0.6955,-4.117101 4.2511,-2.190218 7.8433,-4.3201 5.5229,-3.274662 8.2108,-7.088848 13.4975,-7.22799 m -94.7928,84.566063 c 0.9428,-5.04538 3.3107,-4.57489 6.7397,-7.32644 5.2062,-4.1775 7.2694,-5.84564 13.7159,-4.10837 3.8833,1.04651 6.4464,4.34213 10.351,5.3078 3.8269,0.94642 8.2665,-1.37834 12.053,-0.28261 4.0112,1.16079 8.3712,6.26199 12.5448,6.41147 6.4169,0.22983 15.5453,-11.63517 17.3684,-16.59922 m -82.0403,100.45376 c -0.9916,-5.03592 1.9204,-6.98377 2.8208,-11.28831 1.3672,-6.53536 0.7881,-12.57438 3.0584,-18.85339 1.3676,-3.78234 4.9888,-7.54081 5.4101,-11.54047 0.4129,-3.92002 -2.8491,-8.29404 -2.7277,-12.23383 0.1286,-4.17371 4.1557,-7.78526 4.4027,-11.95453 0.3796,-6.41021 -3.8201,-12.56741 -2.8486,-17.76634 m 27.2579,159.0173 c 1.5479,-4.89371 4.084,-10.39148 3.5464,-14.75584 -0.8162,-6.62622 -6.137,-13.32455 -8.8567,-19.42226 -1.6382,-3.67314 -1.7161,-8.40255 -3.9937,-11.71769 -2.2322,-3.24912 -7.4452,-4.64621 -10.0324,-7.61956 -2.7407,-3.14989 -2.8317,-8.59514 -5.7053,-11.6261 -4.4181,-4.66005 -10.441,-5.15979 -11.4628,-10.34897 m 21.3569,159.45107 c 4.1248,-3.05429 9.3371,-6.64195 11.1853,-10.63189 2.806,-6.05771 0.6646,-15.39734 0.5538,-22.07289 -0.067,-4.02121 1.734,-8.32316 0.9884,-12.27567 -0.7307,-3.8738 -4.7934,-6.65756 -4.8604,-10.59869 -0.071,-4.17514 4.187,-6.54431 5.147,-10.60885 1.476,-6.24917 1.3538,-12.40924 2.9487,-17.45189 m -64.946,144.05834 c 3.9597,-3.26499 8.8585,-8.33502 9.8255,-12.62441 1.4683,-6.51236 -1.7811,-13.69449 -0.594,-20.26393 0.715,-3.95729 3.1105,-3.93211 5.5309,-7.1435 2.3722,-3.14746 1.8783,-6.88821 5.4669,-8.51888 3.8017,-1.7275 8.1249,1.40285 12.1894,0.44274 6.2493,-1.47616 12.7861,-8.42515 17.0364,-11.5724 m -58.7621,133.8989 c 1.2465,-4.97927 4.6781,-8.52688 5.3229,-12.8769 0.9791,-6.6044 -3.7299,-15.04464 -5.9633,-21.3367 -1.3453,-3.79021 -0.7833,-8.05253 -2.4995,-11.69002 -1.6821,-3.56506 -5.9815,-4.81309 -5.9309,-8.75407 0.054,-4.17497 3.5132,-3.27312 6.558,-6.13118 4.6814,-4.39423 8.2493,-9.35286 12.3295,-12.71722 m -65.1837,138.03832 c 3.3363,-3.89997 7.0257,-3.12153 10.7853,-5.40316 5.7081,-3.46404 9.9171,-8.81931 15.5948,-12.3321 3.4201,-2.11602 8.7514,-3.26268 11.3849,-6.3024 2.581,-2.97921 2.1243,-8.84472 4.2676,-12.15301 2.2705,-3.50471 7.8788,-4.70567 10.0872,-8.25056 3.3954,-5.45021 2.796,-14.68971 4.0805,-19.82053 m -3.8525,102.68849 c -5.132,0.0871 -7.7229,-2.70477 -12.0491,-3.49334 -6.5683,-1.19732 -12.484,0.0997 -18.6696,-2.41269 -3.726,-1.51345 -5.5174,-5.00777 -9.1882,-6.65102 -3.5976,-1.61051 -7.7659,0.10851 -10.5541,-2.67734 -2.9537,-2.95125 -0.6153,-6.2295 -1.7239,-10.25577 -1.7043,-6.19034 -2.9756,-8.30421 0.4622,-12.32287 m 126.0245,0.72327 c -5.1044,0.54002 -9.7149,-1.32905 -14.0031,-0.35497 -6.5106,1.47884 -13.0828,8.28514 -18.1289,12.65651 -3.0396,2.63322 -7.4297,4.32371 -9.8937,7.50283 -2.415,3.11583 -1.8039,7.84223 -4.857,10.33477 -3.2344,2.64053 -6.3746,-0.36612 -10.5037,0.25865 -6.3485,0.96058 -11.5821,5.72729 -16.8703,5.81706 m 130.8368,-72.97565 c 1.0008,5.03435 -1.0588,7.33567 -1.6444,11.69356 -0.8893,6.61637 0.028,10.4279 -5.3065,14.44322 -3.2131,2.41873 -6.3108,1.25077 -9.9799,2.8976 -3.5961,1.61406 -5.2155,5.65701 -9.1364,6.06281 -4.1536,0.42989 -7.465,-3.56677 -11.635,-3.80092 -6.4113,-0.36 -13.6504,4.03256 -18.9101,4.58902 m 80.7623,-111.48626 c -0.7206,5.08214 -3.9639,6.66785 -5.7909,10.6679 -2.7738,6.07305 -3.9923,9.5567 -9.813,12.82755 -3.5063,1.97028 -10.152,3.90681 -12.1378,7.40396 -1.9462,3.42753 0.019,9.91193 -0.4031,13.83058 -0.4469,4.15132 -4.3459,8.84583 -4.0458,13.01139 0.4613,6.40448 6.1404,12.7836 7.1717,17.97116 m 35.4594,-160.81344 c -0.8386,5.0638 -4.1473,7.28572 -5.5629,11.44934 -2.1493,6.32141 -1.5913,13.45959 -3.3376,19.90382 -1.052,3.88187 -4.2629,7.9497 -4.347,11.97057 -0.082,3.9408 3.5929,8.03414 3.8155,11.9696 0.2359,4.16913 -3.592,7.6841 -3.756,11.85723 -0.2521,6.41614 2.633,12.53142 1.8905,17.76823 m -9.0468,-166.23469 c 2.0047,4.72531 0.1812,8.30908 1.1174,12.60597 1.4214,6.52378 6.0227,12.39744 8.1344,18.73152 1.2721,3.81553 0.5058,8.1712 2.1825,11.82725 1.6433,3.58324 6.2843,5.26702 7.2453,9.08989 1.0181,4.04985 -2.4817,7.65364 -2.2704,11.8246 0.3249,6.4128 3.9468,11.81676 3.0826,17.03467 m -43.9841,-156.7963 c -1.4494,4.92405 -5.0684,7.36747 -6.543,11.51047 -2.2389,6.2901 -0.9912,14.76565 -1.0192,21.44201 -0.017,4.02171 -0.7482,11.04782 1.5288,14.36278 2.2318,3.24895 8.2405,4.41781 11.1892,7.03374 3.1236,2.77125 3.1317,8.06113 6.08,11.01934 4.533,4.5482 10.3627,5.73107 12.4284,10.60019 m 14.0923,-146.25261 c -5.1326,-0.0518 -10.5752,-1.87197 -14.7849,-0.60031 -6.3915,1.93063 -12.9115,11.38865 -15.622,17.48975 -1.6328,3.67516 -4.8937,8.36735 -5.0009,12.38787 -0.1051,3.94047 3.4545,7.79441 3.178,11.72663 -0.2928,4.16569 -4.5382,6.75088 -5.4911,10.81701 -1.4652,6.25161 0.6364,13.08484 -0.8571,18.15876 m 119.8295,-76.91365 c -4.716,2.02624 -9.3247,1.92244 -13.1869,4.02585 -5.8637,3.19344 -8.6862,8.3115 -15.3524,8.67372 -4.0157,0.21817 -6.7892,-2.10976 -10.8089,-2.25011 -3.9397,-0.13753 -7.4761,3.06885 -11.3149,2.17308 -4.0667,-0.94896 -6.3542,-5.79342 -10.3176,-7.11051 -6.0938,-2.02501 -14.9133,0.6019 -20.202,0.54853 m 152.1549,34.90675 c -5.0286,-1.0291 -6.7331,-4.44078 -10.7264,-6.28261 -6.0628,-2.79641 -12.479,-2.85575 -18.124,-6.42093 -3.4004,-2.14761 -4.7901,-5.97627 -8.1965,-8.11477 -3.3386,-2.0959 -8.0342,-0.54625 -10.3189,-3.75776 -2.4203,-3.40219 1.7544,-8.24139 0.536,-12.23544 -1.8733,-6.14079 -19.5727,-7.07046 -24.4323,-4.98255 m 153.9896,33.20315 c -3.8068,-3.44291 -7.8184,-8.60065 -12.0654,-9.73933 -6.4479,-1.72887 -15.9721,3.62498 -22.0882,6.30233 -3.6843,1.61277 -7.8538,1.27922 -11.4037,3.16991 -3.4793,1.85308 -5.0946,6.08534 -8.8393,7.31606 -3.9671,1.30379 -7.8344,-1.61245 -11.9694,-1.02619 -6.3575,0.90137 -10.9459,2.7843 -16.1275,1.72388 m 103.0232,65.70119 c 5.0749,-0.77089 13.8404,-1.3139 16.2582,-4.98577 3.6709,-5.57478 -2.7897,-18.05356 -6.4469,-23.63958 -2.203,-3.36491 -2.681,-7.38624 -5.1095,-10.59221 -2.3801,-3.14211 -6.9644,-3.92439 -8.6719,-7.47731 -1.8088,-3.76388 0.4507,-8.81025 -1.1461,-12.66951 -2.455,-5.93355 -10.8601,-11.14377 -14.7828,-14.69146 m -29.7996,112.77897 c -1.0137,-5.03207 0.8611,-8.49912 0.4905,-12.88078 -0.5627,-6.65247 -4.6033,-10.64407 0.1453,-15.33545 2.8605,-2.82598 5.1562,-1.35623 8.9184,-2.77791 3.6873,-1.39339 5.4985,-5.16964 9.4402,-5.17998 4.1759,-0.011 7.5442,4.16016 11.7058,4.51274 6.3984,0.54209 13.8409,-5.39422 19.0703,-6.18857 m -117.4773,54.45838 c 4.9233,1.45243 7.6554,4.9874 11.8579,6.28326 6.3804,1.96752 13.1757,0.61336 19.4319,2.94589 3.7685,1.40509 7.2834,4.98384 11.2614,5.57607 3.8988,0.5804 9.0984,-2.55279 12.9626,-3.32719 4.0936,-0.82038 12.5818,-2.05915 14.9002,-5.53254 3.5644,-5.34028 -0.7939,-17.4825 -1.8385,-22.66772 m -127.5684,17.09324 c 0.6508,-5.09158 3.593,-7.58106 4.7823,-11.8148 1.8058,-6.42788 0.068,-10.51851 6.7223,-9.99605 4.0084,0.31474 3.8823,3.60283 7.307,5.71186 3.3566,2.06701 8.2222,1.12797 11.389,3.47504 3.3549,2.48642 5.4606,7.96881 9.1877,9.8535 5.7304,2.89769 14.2265,1.7242 19.2997,3.22083 m -25.8403,65.32985 c -3.9823,-3.23803 -7.0546,-7.25999 -11.0161,-9.16956 -6.0145,-2.89928 -12.0795,-1.36926 -15.6093,-7.03511 -2.1263,-3.41301 -0.9102,-6.7039 -2.4502,-10.41948 -1.5094,-3.64159 -5.4745,-5.41792 -5.8437,-9.34217 -0.3912,-4.15724 3.8319,-6.90847 4.4466,-11.03947 0.9451,-6.35137 -2.1863,-13.35755 -1.5156,-18.60409 m 9.5256,143.34446 c 3.4749,-3.77814 8.072,-4.87018 10.9252,-8.21631 4.3318,-5.08022 5.6753,-12.18973 10.0039,-17.2734 2.6075,-3.06229 7.3112,-5.35735 9.0906,-8.96413 1.7439,-3.53497 0.3884,-8.89151 1.5676,-12.6526 1.2492,-3.9844 5.69,-9.17624 5.3997,-13.34225 -0.4465,-6.40518 -9.8229,-14.58957 -13.9264,-17.92616 m -11.7445,152.12778 c 1.2505,-4.9781 3.3627,-10.50197 2.6707,-14.84468 -1.0506,-6.59334 -6.1881,-13.63468 -9.5349,-19.41132 -2.0161,-3.47974 -4.2628,-8.55113 -7.4567,-10.99594 -3.1303,-2.39611 -7.6585,-1.2129 -9.0466,-4.9015 -1.4705,-3.9076 3.1695,-4.04248 5.2088,-7.68686 3.1353,-5.60318 3.8647,-11.38364 7.4453,-15.27676 m -16.4404,128.68124 c -5.096,-0.61531 -5.4902,-2.47296 -8.7867,-5.38331 -5.0049,-4.4187 -4.7051,-5.21696 -0.511,-10.41155 2.5265,-3.12911 6.8107,-4.26155 9.1502,-7.5334 2.2928,-3.20672 1.3145,-7.82369 4.4982,-10.14754 3.3728,-2.46182 8.5416,-0.53132 12.2168,-2.51535 5.6506,-3.05041 10.1308,-14.17229 11.4194,-19.3019 m 41.6907,86.69786 c -4.9488,1.36282 -7.6231,-1.07391 -12.0179,-1.2178 -6.6725,-0.21854 -11.6713,1.65981 -17.7079,-1.19258 -3.6363,-1.71825 -2.9953,-2.70344 -4.9667,-6.20824 -1.9322,-3.43501 -5.7637,-5.09457 -7.0524,-8.81937 -1.3652,-3.94594 -3.0946,-11.75295 -6.6557,-13.93379 -5.4752,-3.353 -15.8615,-0.25957 -21.1126,-0.89361 m 98.3318,-35.68015 c -4.6281,2.21904 -11.2697,3.72635 -13.8473,7.28868 -3.9135,5.40848 3.4558,17.11287 6.2471,23.17724 1.6814,3.65305 -1.5705,4.85692 -1.8961,8.86573 -0.319,3.92899 2.6361,7.31314 1.0356,10.91508 -1.6955,3.8158 -6.1667,3.4177 -9.1673,6.32261 -4.6135,4.46626 -6.2655,9.11329 -11.3649,10.51759 m 86.0967,-114.48943 c 0.085,5.13239 -2.267,7.84076 -2.9783,12.18013 -1.0802,6.58824 -0.2631,10.34613 -5.7965,14.08163 -3.3332,2.25017 -6.7915,1.13459 -10.419,2.87158 -3.5553,1.70242 -5.3021,6.00687 -9.1011,7.05808 -4.0247,1.11363 -8.8088,-1.85265 -12.8529,-0.81007 -6.2177,1.60296 -11.5108,8.92055 -16.2798,11.20713 m 78.9751,-128.95487 c -0.2151,5.12855 -2.9703,8.03022 -3.6635,12.3729 -1.0525,6.59328 1.2462,12.03505 -2.4688,17.58238 -2.2378,3.34159 -6.9434,5.0044 -8.7448,8.60035 -1.7655,3.52437 0.3502,9.27636 -0.7961,13.04764 -1.2144,3.9952 -6.0875,6.52302 -7.3543,10.50269 -1.9477,6.11868 0.517,14.9264 0.605,20.21499 m 71.4103,-127.52104 c -4.7662,-1.90568 -6.5552,-5.93573 -10.4759,-7.92765 -5.9525,-3.02432 -16.9083,-2.82237 -23.1523,-0.45981 -3.7612,1.42315 -10.3671,6.64962 -11.4512,10.52264 -1.0624,3.79591 1.8318,8.56697 0.702,12.3432 -1.1969,4.00044 -6.2458,6.78209 -7.3351,10.81383 -1.6749,6.19874 2.0332,14.55622 1.8525,19.84253 m 115.4028,-72.48739 c -0.8302,5.0654 -3.0081,6.85489 -4.8975,10.82527 -2.8687,6.02801 -4.0955,8.57056 -10.6041,10.05493 -3.9207,0.89414 -7.5231,-1.05902 -11.4597,-0.23452 -3.8583,0.80811 -6.761,4.79 -10.6717,5.2833 -4.143,0.52258 -9.8625,-2.51546 -13.8173,-1.17407 -6.0805,2.06235 -8.801,3.77209 -13.7123,1.80841 m 57.1775,-89.29926 c 1.7765,4.81524 1.6946,9.99573 4.0142,13.73176 3.5216,5.67228 11.3379,8.92961 16.0101,13.69944 2.8143,2.87327 2.8518,6.01112 5.1908,9.28284 2.2924,3.20655 6.2058,3.23888 5.1228,7.02799 -1.1473,4.01409 -5.051,-0.88632 -9.1576,-0.12605 -6.3139,1.1689 -13.1925,13.69982 -14.048,18.91938 m 4.4276,-147.72273 c -3.3867,3.85741 -8.3534,5.76812 -10.6565,9.51434 -3.4967,5.68769 -2.9043,14.50324 -4.5462,20.9749 -0.9891,3.89838 -4.0975,7.79695 -4.2537,11.81597 -0.1532,3.939 3.21,7.92963 3.0744,11.86894 -0.1436,4.17319 -4.2233,8.37514 -4.1116,12.54979 0.1716,6.41847 6.2624,13.74786 8.093,18.70966 m -4.9753,-133.78319 c 5.1019,-0.55889 8.8448,1.1279 13.2259,0.74912 6.6518,-0.57502 9.568,-2.70416 12.9477,3.05335 2.0359,3.46822 0.237,5.91982 1.0853,9.85112 0.8313,3.85301 4.5926,6.23709 4.106,10.14867 -0.5154,4.14384 -4.5828,4.84552 -6.7755,8.39979 -3.3713,5.46464 -4.3411,11.55096 -7.8308,15.52576 m -60.4923,-115.03116 c 3.9695,3.25439 3.4034,6.0813 5.3702,10.01406 2.9861,5.97095 5.6478,9.93464 6.1851,16.58979 0.3236,4.00893 -1.61,8.40223 -0.6561,12.30944 0.9349,3.8294 5.5149,6.94098 6.8889,10.63528 1.4556,3.91364 0.624,10.03077 2.9828,13.47656 3.6266,5.29784 17.7411,5.72945 22.9983,5.15354 m -116.944,-61.64178 c 4.8787,-1.59266 10.5468,-3.38325 13.7275,-6.42022 4.8292,-4.610826 5.223,-11.132792 11.8127,-12.198115 3.9694,-0.64171 6.7196,1.587301 10.7404,1.482453 3.9407,-0.10279 7.0837,-3.575753 10.8782,-2.509591 4.0199,1.129464 5.1201,5.69059 8.7336,7.783982 5.5557,3.218561 12.5916,2.609051 16.6819,5.962491 M 2680.424,96.779161 c 5.1252,0.282989 8.0117,3.172234 12.3486,3.901459 6.5846,1.10721 13.297,-0.709183 19.8777,0.41983 3.9641,0.68011 7.1985,3.32946 11.1999,3.7369 3.9217,0.39929 7.3076,-2.29987 10.8771,-0.62774 3.7813,1.77141 5.1879,7.55109 8.9064,9.45124 5.7171,2.92146 17.2878,-0.8629 22.3151,-2.50404 M 2599.0891,81.393156 c 4.8266,1.74578 4.9995,4.906134 8.1285,7.996121 4.7505,4.691431 12.7033,8.114437 18.9369,10.503949 3.7549,1.439414 9.2088,4.316074 13.2049,3.860504 3.9166,-0.44653 7.361,-4.893027 11.2597,-5.47499 4.1302,-0.616518 7.673,2.92988 11.8493,2.91136 6.421,-0.0285 12.5663,-3.833107 17.8475,-3.541505 M 2515.7492,74.387899 c 5.1306,0.148956 7.2719,3.142433 11.4964,4.3643 6.4138,1.85517 13.1896,0.910791 19.5588,2.914285 3.8367,1.206882 7.4893,4.600382 11.4901,5.012278 3.9211,0.403664 8.1526,-2.57049 12.0831,-2.273593 4.1639,0.314524 8.9218,4.309867 13.0794,3.918302 6.3922,-0.602023 10.3049,-7.927741 15.2784,-6.128828 M 2484.5176,139.7945 c 1.8999,-5.17314 0.9961,-10.20976 1.8735,-15.97854 0.6692,-4.40058 2.9413,-7.37878 2.4323,-11.80045 -0.4319,-3.74796 -2.2677,-6.88025 -3.1251,-10.55473 -1.4035,-6.013988 -1.8108,-16.87713 0.9299,-22.408905 3.8662,-7.803359 21.846,-12.6903 29.0202,-12.879124 m -103.4979,92.042669 c 1.0125,-5.41791 6.8073,-16.52013 12.0464,-19.08742 3.9965,-1.95843 12.8393,-1.20903 17.2321,-0.49218 3.7235,0.60725 8.3952,0.5595 12.066,1.43307 6.008,1.42976 10.6619,3.32556 16.7047,4.59541 8.5242,1.79129 12.6614,2.16694 15.1354,-4.56956 m -82.4128,105.40196 c -1.0648,-5.40774 -1.6882,-14.44141 -0.1947,-20.08182 1.1392,-4.30267 3.9929,-8.53543 5.2499,-12.80547 1.0652,-3.61956 0.8285,-6.95292 1.3688,-10.68712 0.8843,-6.11172 1.023,-10.21014 1.0342,-16.38531 0.016,-8.71096 1.3079,-20.10632 2.6262,-27.16157 m 27.5114,158.00373 c 1.6621,-5.25504 -0.2845,-8.09702 -1.5015,-13.80329 -0.9284,-4.35289 -0.9088,-7.74358 -2.8564,-11.74594 -1.6513,-3.3924 -4.3429,-5.44128 -6.5069,-8.5323 -3.5418,-5.05904 -5.3581,-8.33505 -9.8018,-12.62289 -6.2685,-6.0486 -14.688,-17.30428 -16.0746,-24.34629 m 24.8203,150.4272 c 4.4294,-3.2798 4.1308,-5.69699 5.4644,-11.37713 1.0173,-4.33297 2.6507,-7.0332 2.3072,-11.47088 -0.2916,-3.76154 -1.9139,-6.9445 -2.646,-10.6461 -1.1982,-6.05837 -2.045,-13.02304 -1.8296,-19.19392 0.3039,-8.7049 7.2909,-19.58263 9.4553,-26.42579 m -62.1056,139.82712 c 4.252,-3.50607 2.7086,-5.77263 3.2074,-11.58618 0.3805,-4.43475 1.7921,-8.87981 2.0789,-13.32144 0.2427,-3.76493 1.0749,-10.67006 2.8412,-14.00366 2.8909,-5.45606 12.3548,-11.44883 18.15,-13.58075 8.175,-3.00738 17.8272,-3.25031 23.5951,-7.5213 m -62.1832,139.05566 c 1.3386,-5.34692 1.3725,-9.7639 1.3385,-15.59811 -0.026,-4.4505 0.4857,-6.91115 -1.2547,-11.00787 -1.4756,-3.4724 -4.1463,-6.24014 -5.8819,-9.59056 -2.8408,-5.48357 -5.2469,-16.19243 -3.8524,-22.2068 1.9671,-8.48412 16.9781,-15.40141 22.5151,-19.96704 m -66.345,139.18994 c 3.5826,-4.18792 9.3043,-9.83972 14.272,-12.90057 3.7894,-2.33492 8.4313,-3.37869 12.1432,-5.83518 3.1462,-2.08254 4.4971,-4.5912 7.0761,-7.34528 4.2209,-4.50756 5.9159,-7.85338 9.1739,-13.09919 4.5959,-7.39997 9.917,-14.46499 11.6602,-21.4278 m 5.1808,113.98199 c -5.5109,0.0936 -12.9201,0.78507 -18.6505,-0.31297 -4.3714,-0.83759 -9.3731,-3.57218 -13.5907,-4.99408 -3.5751,-1.2049 -8.4101,-1.69546 -11.8672,-3.20659 -5.6581,-2.47323 -13.4224,-7.60764 -17.1675,-12.516 -5.2831,-6.92393 -2.2338,-26.32461 2.4315,-31.77816 m 133.9479,15.6639 c -5.4813,0.5799 -9.5455,2.27575 -14.9966,4.3555 -4.1582,1.58652 -6.9343,1.36297 -10.1155,4.47576 -2.6963,2.63881 -3.8286,5.83656 -6.0891,8.85787 -3.6996,4.94493 -9.52,11.31343 -14.9217,14.30499 -7.6199,4.22004 -21.819,4.15706 -28.9954,4.27888 m 139.5846,-83.89612 c 1.0746,5.40605 3.0976,14.20548 1.7869,19.89116 -0.9998,4.33719 -6.5643,10.64434 -9.6936,13.8095 -2.6522,2.6832 -7.0631,6.88913 -10.3912,8.66594 -5.4471,2.90807 -13.8356,4.50401 -19.9942,4.95756 -8.6876,0.63981 -19.1281,-1.3224 -26.2659,-0.56725 m 88.8127,-119.31062 c -0.7738,5.45738 -2.0086,14.23467 -5.0334,19.2237 -2.3075,3.80579 -9.0784,7.70395 -12.8196,10.1157 -3.1709,2.04463 -4.3882,3.76684 -6.7503,6.70896 -3.8659,4.81532 -2.6992,5.67488 -2.7013,11.84964 0,8.71038 0.7961,17.78572 2.1955,24.82554 m 35.5185,-157.6152 c -0.9005,5.43769 -1.4567,12.28828 -3.1336,17.87706 -1.2792,4.26329 -3.9061,8.05628 -4.9588,12.38101 -0.8919,3.66591 -0.2061,6.82178 -0.4467,10.58711 -0.3937,6.16266 0,10.30694 0.4434,16.46602 0.6318,8.68825 -2.1685,20.35153 -3.1761,27.45818 m -9.7051,-171.11564 c 2.1527,5.0742 5.1553,11.40446 6.5975,17.05856 1.1002,4.3131 0.8605,8.45246 2.5217,12.58206 1.4085,3.50028 3.9337,6.40796 5.5804,9.80306 2.695,5.55671 5.1411,12.23223 6.4247,18.27242 1.8107,8.52055 0.166,21.40684 -1.0067,28.48785 m -44.2176,-155.77293 c -1.5564,5.28763 -2.2695,11.16514 -3.816,16.79141 -1.1796,4.29188 -3.0512,7.03715 -2.9824,11.48758 0.059,3.77237 1.5543,5.09574 3.0962,8.53889 2.5238,5.63535 5.097,6.09947 9.8059,10.09448 6.6426,5.63551 14.3912,16.38913 17.1945,22.99681 m 5.6912,-133.6138 c -5.5115,-0.0556 -8.1638,1.22502 -13.2914,4.00922 -3.9115,2.12389 -5.7091,1.65757 -7.4993,5.73227 -1.5171,3.45403 -0.6556,5.69929 -0.9139,9.46326 -0.4228,6.16043 -0.2207,11.53637 -0.7624,17.68786 -0.7641,8.67754 -5.3312,19.68047 -7.358,26.56606 m 114.751,-71.15439 c -5.0642,2.17586 -8.858,6.44457 -13.9638,9.26895 -3.8948,2.15455 -10.584,3.54772 -14.9687,4.31026 -3.7167,0.64673 -8.8081,2.14188 -12.5813,2.15764 -6.1755,0.0258 -13.1987,-1.14365 -19.1967,-2.61282 -8.4609,-2.07246 -17.0296,-6.22686 -24.2068,-6.29929 m 150.4833,34.73167 c -5.3998,-1.10508 -12.9177,-2.34612 -18.2072,-4.80903 -4.035,-1.87875 -7.9771,-5.36392 -11.8776,-7.50821 -3.3063,-1.81725 -7.7624,-2.99193 -10.9756,-4.96983 -5.259,-3.2372 -13.4962,-10.3111 -15.4751,-16.16017 -2.7914,-8.25092 -2.7797,-11.74289 -9.3743,-8.90947 m 144.3492,31.63078 c -4.0879,-3.69711 -5.5445,-4.20082 -11.376,-4.0187 -4.4485,0.13896 -6.8586,-0.26473 -10.8984,1.60373 -3.4242,1.58414 -5.8807,4.51158 -9.1397,6.4132 -5.334,3.11236 -11.8361,5.17806 -17.6949,7.12847 -8.2647,2.75134 -22.124,0.18494 -29.1557,-1.25411 m 103.4216,47.81816 c 5.4497,-0.82781 6.0539,1.79707 6.704,-4.00009 0.4958,-4.42224 0.3668,-4.91261 -2.1749,-8.56655 -2.1547,-3.097 -5.3363,-4.89684 -7.8419,-7.71814 -4.1007,-4.61758 -7.4257,-11.2512 -10.0966,-16.81894 -3.7677,-7.85407 -5.84,-16.41861 -11.1632,-21.23303 m -32.5996,107.89011 c -1.0885,-5.40362 -4.0009,-12.17992 -4.1681,-18.01217 -0.1276,-4.449 2.5241,-12.30949 4.8139,-16.12585 1.9406,-3.23511 7.3234,-8.74955 10.6759,-10.48012 5.487,-2.83242 14.5583,-3.49262 20.7334,-3.47449 8.7108,0.0255 18.1514,0.47846 25.248,-0.59952 m -113.5979,54.71278 c 5.2868,1.55966 11.0227,1.9384 16.6959,3.30291 4.3277,1.04086 8.7788,3.67933 13.0491,4.93459 3.6198,1.06364 7.2014,0.93238 10.9118,1.61757 6.0728,1.12145 6.5862,3.12728 11.9383,0.0504 7.5498,-4.34036 5.9712,-9.0615 4.5537,-16.09814 m -127.6785,14.20499 c 0.6989,-5.46752 0.4101,-13.55872 2.681,-18.9325 1.7322,-4.09928 10.7616,-10.50135 15.1508,-11.2322 3.7204,-0.61987 11.6176,0.75888 15.0166,2.39607 5.5631,2.67956 9.6654,6.88671 15.0325,9.94043 7.5709,4.3077 15.5177,8.62033 22.4023,10.65134 m -34.0995,81.13882 c -4.2764,-3.47712 -9.2547,-3.54471 -14.5707,-5.94933 -4.0553,-1.83429 -9.4652,-6.5121 -12.5245,-9.74427 -2.5935,-2.73945 -6.4954,-7.57342 -8.0867,-10.99463 -2.6045,-5.59944 -4.3031,-14.10334 -4.3137,-20.27832 -0.015,-8.7107 3.2658,-19.7651 4.1759,-26.88496 m 11.8135,138.38878 c 3.7315,-4.05709 6.1688,-8.53311 9.451,-13.35712 2.5038,-3.67991 6.7491,-6.75099 9.4241,-10.30877 2.2671,-3.01596 3.1888,-6.18519 4.9832,-9.50432 2.9367,-5.43237 4.5802,-7.70499 5.581,-13.79804 1.4118,-8.5951 0.1851,-13.71688 -5.3836,-18.24482 M 2623.0911,548.489 c 1.3429,-5.34566 -0.7186,-8.11629 -2.2894,-13.73578 -1.1984,-4.2867 -1.1386,-8.04471 -3.1509,-12.01427 -1.7062,-3.36459 -3.9402,-3.22001 -6.9566,-5.48701 -4.9369,-3.71036 -12.877,-14.17295 -12.6312,-20.34211 0.3466,-8.70247 11.5926,-20.25337 16.4518,-25.53656 m -10.7786,143.866 c -5.4723,-0.66074 -17.8164,-4.47844 -20.5397,-9.63819 -2.0775,-3.93599 0.8777,-15.22864 3.2771,-18.97712 2.0335,-3.17758 3.9085,-7.3498 6.1385,-10.39366 3.6498,-4.98186 9.1988,-10.80156 14.3788,-14.16236 7.3071,-4.74091 15.1963,-6.40556 16.945,-13.36673 m 52.9786,97.65896 c -5.3141,1.46344 -13.74,3.63779 -19.5334,2.94847 -4.4194,-0.5258 -9.8796,-3.06463 -14.1182,-4.42333 -3.593,-1.15132 -10.758,-3.60949 -13.3657,-6.33574 -4.2681,-4.46201 -4.3154,-11.99807 -7.6393,-17.20147 -4.6888,-7.34014 -11.2912,-6.1132 -18.4173,-6.97362 m 103.4048,-36.53758 c -4.9698,2.38289 -6.6111,1.42151 -7.2303,7.22165 -0.4723,4.42451 0.7825,4.87061 3.072,8.68761 1.941,3.23526 4.5021,10.5721 4.3784,14.34319 -0.2026,6.1721 -2.5654,15.1212 -5.7132,20.43299 -4.4404,7.49304 -18.149,15.09232 -25.0691,16.99803 m 92.7692,-123.46572 c 0.092,5.51134 1.5204,13.39965 0.092,19.05697 -1.0894,4.31556 -7.0638,10.79467 -10.4522,13.68045 -2.8719,2.44639 -6.8573,6.15566 -10.1596,7.98018 -5.405,2.98617 -12.2573,4.87846 -18.2179,6.49217 -8.4083,2.27638 -17.3744,4.68409 -23.8462,7.7871 m 84.1296,-136.87693 c -0.1884,5.50897 0.6009,12.41259 -0.3352,18.17174 -0.714,4.39324 -3.6095,10.1439 -5.4366,14.20207 -1.5484,3.44004 -3.5728,7.79718 -5.5154,11.03169 -3.1793,5.29388 -3.3236,8.62788 -4.9286,14.59074 -2.2641,8.41148 -6.3206,16.7214 -6.2011,23.89832 m 59.0014,-118.90846 c -5.1181,-2.04639 -10.7598,-3.82387 -16.1948,-5.94686 -4.146,-1.61945 -4.8023,-3.95213 -9.041,-2.59471 -3.5927,1.15098 -1.7745,1.60004 -3.1973,5.09391 -2.3288,5.71836 -2.478,10.25185 -4.1504,16.19621 -2.3592,8.38536 -4.6263,17.06176 -4.8716,24.23559 m 115.2948,-71.38727 c -0.8915,5.43939 -1.2865,15.70642 -5.1243,20.09979 -2.9275,3.35141 -10.4083,6.4821 -14.6092,7.95299 -3.5607,1.24715 -8.0409,3.34655 -11.727,4.15258 -6.0329,1.31922 -11.2753,1.47075 -17.307,2.79013 -8.5086,1.8612 -22.0839,1.26364 -28.7488,-1.40118 m 69.0578,-100.94281 c 1.9077,5.17078 4.6415,7.91242 8.4508,12.33178 2.9059,3.37119 4.8268,6.95448 8.1285,9.9397 2.799,2.53012 7.216,5.00012 9.7108,7.83072 4.0832,4.63281 4.6028,23.73077 -0.5578,27.1187 -7.2797,4.77917 -16.9724,2.90347 -18.1334,9.98671 m 2.3254,-143.24193 c -3.6367,4.14222 -5.3196,7.5345 -7.4345,12.9722 -1.6133,4.14804 -3.9027,7.34548 -4.8525,11.69408 -0.8048,3.68613 -0.1008,6.98346 -0.3428,10.74888 -0.3961,6.16282 -0.6748,10.8113 -0.6388,16.98599 0.051,8.71029 0.043,17.2012 2.5272,23.93464 m -14.5531,-139.6636 c 5.4786,-0.60016 12.1778,-3.78456 18.0086,-3.57627 4.4479,0.15885 12.8783,5.67851 15.7326,9.09344 2.4197,2.89439 6.2876,8.58205 7.3258,12.20916 1.6994,5.93644 1.834,14.98164 0.6008,21.0323 -1.7397,8.53532 -12.2921,18.60043 -17.0279,23.99447 M 2844.6252,96.704257 c 4.2625,3.494683 11.4626,10.221613 13.3657,15.737123 1.4518,4.20738 1.0866,10.33975 1.7131,14.74663 0.5314,3.7354 2.193,7.14749 2.9942,10.8347 1.3113,6.0348 1.6755,9.03995 4.7042,14.42103 4.2724,7.59077 7.1519,11.25055 14.2863,10.46901 M 2762.8576,101.6878 c 5.239,-1.710256 6.0693,-5.960883 10.1903,-10.091125 3.1437,-3.150683 9.4053,-6.871639 13.5533,-8.483911 3.5159,-1.366989 9.1277,-3.058175 12.8835,-3.419806 6.1472,-0.591877 14.724,0.550383 20.5566,2.576944 8.2276,2.858736 18.4809,10.557158 24.0317,15.107964 m -163.2079,-9.676682 c 5.5037,0.303884 12.2192,-0.380404 17.9857,0.511415 4.3989,0.680278 8.5779,2.661594 13.0026,3.146955 3.7505,0.411028 7.6311,-0.451619 11.398,-0.234393 6.1653,0.355529 14.304,3.112894 19.7705,5.985183 7.7112,4.051756 13.2838,7.632496 20.106,5.405376 M 2602.1237,72.826796 c 5.183,1.87468 12.7833,5.809291 17.0924,9.743527 3.287,3.001123 4.252,6.054382 8.4065,7.6503 3.5218,1.352406 5.0184,0.452039 8.7789,0.144583 6.1548,-0.50321 10.7312,-1.756497 16.8398,-2.661117 8.617,-1.27611 20.4089,0.471121 27.5758,0.866841 M 2515.953,65.301925 c 5.5094,0.159954 13.2496,0.150977 18.8542,1.77392 4.2754,1.237999 8.1979,3.755268 12.5171,4.831093 3.6613,0.911539 7.219,0.506621 10.9584,1.010875 6.1201,0.825303 10.1696,1.685629 16.3442,1.633911 8.7101,-0.07297 20.4512,-3.347084 27.2006,-0.905856 M 371.33375,127.65112 c 4.64463,-2.26773 8.46375,-1.23746 12.65583,-2.66339 6.36466,-2.16486 10.26391,-5.84732 16.94745,-5.12471 4.02602,0.4353 7.10021,3.64625 11.13713,3.96659 3.95655,0.31394 8.23115,-2.84778 12.19942,-2.79774 4.20389,0.053 9.59742,2.73121 13.68455,1.7425 6.2839,-1.52012 10.55393,-8.00331 15.87438,-8.2355 m -167.34978,17.15676 c 4.60706,-2.34183 6.83115,0.60091 11.2546,0.795 6.71592,0.29474 12.51219,-1.14811 19.08341,0.27116 3.95837,0.85496 7.48595,3.86349 11.52282,4.18636 3.95648,0.31642 8.09221,-2.79347 12.04984,-2.49412 4.1926,0.31712 8.69301,4.42742 12.89133,4.20384 6.45486,-0.34376 13.59224,-7.85801 18.37823,-10.19477 m -132.30495,64.40978 c 4.85928,-1.76121 9.49101,-0.59221 13.59011,-2.26684 6.22349,-2.54244 11.71323,-9.6076 16.4637,-14.36469 2.86161,-2.86555 7.58842,-4.8609 9.6935,-8.32051 2.06314,-3.39074 0.97661,-8.89288 2.61918,-12.50557 1.74009,-3.82719 7.20515,-11.66571 5.60392,-15.5523 -2.46186,-5.97557 -5.25078,-4.94774 -0.50351,-7.36085 m -64.98039,108.15446 c -4.74386,-2.05056 -4.70575,-6.27267 -7.98413,-9.24938 -4.97736,-4.51946 -11.19896,-4.55303 -11.70949,-11.25485 -0.30751,-4.03705 2.77915,-3.88693 4.71238,-7.44515 1.89471,-3.48738 0.94799,-7.02503 4.29462,-9.15798 3.54535,-2.2596 7.7752,0.65978 11.82453,-0.47379 6.2258,-1.74285 11.60945,-7.54538 16.61662,-9.36019 m -14.16833,119.79979 c 3.52304,-3.78198 7.898,-4.53549 11.01447,-7.68115 4.73165,-4.77586 7.24779,-13.62391 9.398,-19.99295 1.29526,-3.83658 4.29142,-8.54278 4.19342,-12.59121 -0.0961,-3.96782 -4.05404,-8.1916 -4.91439,-12.06574 -0.91144,-4.10416 0.50151,-11.33615 -2.01393,-14.70498 -3.86745,-5.17953 -15.97332,-4.48773 -20.86155,-6.6007 m -1.49291,143.77378 c -4.20714,-3.00228 -4.16936,-6.38566 -6.80633,-9.94238 -4.00354,-5.40004 -8.56066,-7.57472 -8.68869,-14.29592 -0.0771,-4.04872 2.78217,-5.93686 3.57814,-9.90741 0.78009,-3.89149 -1.65471,-7.7313 0.10279,-11.29 1.86185,-3.76999 7.01728,-4.86996 9.2564,-8.42894 3.44261,-5.47188 4.20273,-11.73533 7.83299,-15.6324 m 62.62296,121.36866 c -4.72296,-2.09846 -4.28704,-5.61922 -7.13535,-9.00928 -4.32441,-5.14702 -9.85463,-8.99533 -14.32715,-14.01405 -2.69413,-3.0232 -5.11625,-7.82264 -8.61571,-9.8609 -3.4298,-1.99766 -8.57754,-0.80266 -11.9846,-2.83869 -3.60936,-2.15692 -4.3593,-7.46645 -7.76476,-9.93311 -5.23584,-3.79246 -13.17862,-3.79831 -17.51379,-6.89197 m 147.75828,53.90148 c -4.14772,3.0828 -7.40583,1.58466 -11.63931,2.88166 -6.42752,1.96911 -11.00824,5.28399 -17.72945,5.42534 -4.04872,0.0851 -7.08795,-2.34765 -11.13705,-2.42249 -3.96848,-0.0733 -7.45762,3.17902 -11.33234,2.31982 -4.10479,-0.91022 -5.92946,-5.76134 -9.82243,-7.35053 -5.98538,-2.44338 -13.55029,-1.09642 -18.50518,-3.04904 m 105.07283,-78.0769 c -2.65774,4.43249 -6.67591,6.92132 -8.61712,10.90121 -2.94731,6.04245 -2.51469,13.62939 -4.95268,19.89463 -1.46861,3.77404 -4.92291,8.34063 -4.96953,12.38999 -0.0457,3.96873 3.53295,7.73955 3.22829,11.69689 -0.32275,4.1923 -4.55688,6.46687 -5.73303,10.50395 -1.80832,6.20694 -0.0619,10.97137 -4.33586,14.148 M 473.90254,321.27844 c -5.15247,0.40184 -9.5795,-1.32749 -13.93736,-0.54221 -6.61635,1.19219 -12.50125,5.9962 -18.99097,7.75112 -3.90928,1.05712 -8.17902,-0.0929 -11.97456,1.31956 -3.71995,1.38437 -6.11527,5.89765 -9.86188,7.20763 -3.96906,1.38777 -9.8707,-0.67108 -13.60986,1.25157 -5.7489,2.95604 -9.53173,13.27025 -12.27036,17.83765 m 157.15753,8.37235 c -1.3268,-4.99395 -4.64791,-11.41937 -8.30854,-13.90985 -5.55773,-3.78125 -13.43836,-3.53522 -19.16928,-7.04875 -3.45217,-2.1165 -4.25993,-5.93731 -7.52777,-8.32916 -3.20279,-2.34421 -8.07562,-1.86265 -11.04752,-4.49347 -3.14835,-2.78704 -4.92708,-8.98035 -8.6181,-10.99454 -5.67489,-3.09678 -16.53978,0.28797 -21.84906,0.70205 m 46.84508,119.40346 c -3.63612,-3.67287 -0.59497,-4.01881 0.58681,-8.28604 1.7943,-6.47871 0.95055,-12.41339 4.31498,-18.23363 2.02668,-3.50599 5.97864,-5.61428 7.68591,-9.28641 1.67325,-3.59902 0.0135,-7.9573 2.64258,-10.93074 2.78518,-3.14998 8.53526,-2.8844 11.48482,-5.88114 4.5349,-4.60744 5.18733,-17.73184 3.82015,-22.87778 m 52.1909,85.45757 c -5.14281,-0.51405 -7.79224,-3.55924 -12.10157,-4.57679 -6.54263,-1.54497 -14.50182,0.8362 -21.22413,0.92239 -4.04939,0.0519 -8.03623,-2.05751 -12.05365,-1.54568 -3.93742,0.50167 -6.98551,4.3382 -10.95131,4.18172 -4.20127,-0.16578 -6.48195,-4.61919 -10.53858,-5.72553 -6.23701,-1.70098 -11.44649,-0.005 -15.19328,-3.78993 m 145.32037,58.38712 c -1.22411,-5.02136 0.13746,-8.31185 -0.28811,-12.71947 -0.64606,-6.69189 -4.90924,-15.65762 -9.50227,-20.56565 -2.76673,-2.95651 -6.16231,-7.92711 -9.92731,-9.41829 -3.69004,-1.46145 -8.96749,0.68139 -12.79776,-0.35898 -4.05769,-1.10214 -7.01038,-5.93377 -11.0958,-6.92942 -6.28128,-1.53081 -14.20022,1.80449 -19.49955,1.2748 m 122.83344,91.3806 c -5.09566,-0.8643 -8.36824,-3.84116 -12.73625,-4.56861 -6.63172,-1.10452 -13.0198,1.03779 -19.47381,-0.84195 -3.88776,-1.13233 -5.51984,-4.17526 -9.22831,-5.80193 -3.63464,-1.59424 -7.42487,0.10373 -9.74215,-3.1183 -2.45487,-3.41332 0.68051,-7.08469 -0.1468,-11.20726 -1.27198,-6.33841 -6.27047,-12.09967 -7.53183,-17.27386 m 140.22649,51.35584 c -3.86506,3.43088 -6.40704,0.81476 -10.79978,1.37219 -6.66931,0.84626 -11.69435,3.90858 -18.32131,2.77983 -3.99195,-0.67996 -6.80255,-3.47738 -10.79529,-4.15469 -3.91324,-0.6638 -7.9223,2.01892 -11.67594,0.72907 -3.97652,-1.36644 -5.7889,-6.50416 -9.6332,-8.2081 -5.91057,-2.61979 -14.68534,-1.02326 -19.93609,-1.91387 m 83.49059,-71.03414 c 1.37742,4.98176 -0.37443,8.73744 0.3914,13.09879 1.16266,6.62164 5.20173,12.05763 5.76722,18.75669 0.34063,4.03538 -1.63864,7.66904 -1.15866,11.69026 0.47045,3.94115 4.04879,6.84941 3.52103,10.78309 -0.5591,4.16723 -5.20665,5.761 -6.84423,9.63367 -2.51775,5.95417 -0.55808,12.23818 -4.54077,15.77348 M 788.92213,386.83798 c -1.77031,4.85579 -5.27173,8.19543 -6.3273,12.49552 -1.6027,6.52861 0.61295,15.36752 1.92782,21.95968 0.79204,3.97098 1.56552,10.26323 4.20361,13.33561 2.58559,3.01119 7.85833,3.44645 10.2901,6.58339 2.57615,3.32319 0.53653,7.29304 1.93816,11.25733 2.15499,6.09506 6.91039,10.97062 8.32974,16.104 m 44.59157,-136.54913 c -5.08092,0.94683 -9.33107,-0.83785 -13.66328,0.0774 -6.5774,1.38957 -12.96073,6.62207 -18.96281,9.64964 -3.61555,1.82373 -9.12366,3.08821 -11.86556,6.06848 -2.68728,2.92094 -2.61936,8.41177 -5.13504,11.48168 -2.66505,3.25219 -8.25607,4.28707 -10.7107,7.70127 -3.77397,5.24929 -3.59261,14.47536 -5.4168,19.47894 m 151.86012,-40.41842 c -4.45273,-2.62437 -6.37594,-6.72959 -10.20185,-8.95858 -5.80867,-3.38424 -14.16607,-3.57814 -20.66672,-5.29079 -3.91586,-1.03168 -7.99959,-3.70609 -12.04724,-3.83734 -3.96706,-0.12861 -7.89207,3.29051 -11.85429,3.05808 -4.19747,-0.24623 -7.75731,-4.61276 -11.94857,-4.95151 -6.444,-0.52083 -14.25244,4.09514 -19.48799,5.07079 m 146.5199,21.43124 c 1.21,5.02445 1.0451,5.80508 -0.60137,9.91387 -2.49976,6.23816 -4.90482,4.39265 -11.53298,3.27055 -3.99267,-0.67595 -6.75954,-3.38245 -10.74632,-4.09298 -3.90741,-0.69636 -7.64216,1.82118 -11.19282,0.0474 -3.76149,-1.87909 -4.41766,-7.0697 -7.83692,-9.5172 -5.25706,-3.763 -13.31872,-4.16163 -17.90696,-6.86588 m 104.87917,-66.55221 c -1.6698,4.89145 -5.2,5.67399 -7.8616,9.21281 -4.0409,5.37277 -5.6874,11.4821 -10.428,16.24909 -2.8556,2.87153 -7.1747,4.15078 -9.689,7.32569 -2.4642,3.11171 -2.0757,8.25573 -4.6453,11.28075 -2.7221,3.20464 -8.4321,3.89203 -11.0186,7.20719 -3.97687,5.09702 -3.53007,17.48946 -2.28317,22.66682 m 36.49717,-152.41359 c 3.5765,3.73044 2.922,7.31638 5.0192,11.21603 3.184,5.92069 7.6514,9.60293 9.0205,16.1848 0.8247,3.96479 -1.1398,7.21294 -0.5981,11.22603 0.5309,3.93318 4.1016,6.7856 3.6393,10.72749 -0.4897,4.17594 -5.2221,6.29838 -6.5134,10.30014 -1.9853,6.15265 -0.2261,13.43687 -1.9467,18.47719 m -84.72769,-66.30752 c 4.64953,-2.25719 8.93929,-1.58473 12.96952,-3.41925 6.11893,-2.78521 10.45466,-8.22435 16.69508,-10.72517 3.75911,-1.50642 7.49765,-0.48273 11.29099,-1.90026 3.7179,-1.38934 5.5638,-5.56971 9.5299,-5.72221 4.2016,-0.16156 5.876,4.13723 9.8432,5.53083 6.0995,2.14265 11.4202,1.12914 15.1055,4.97312 m -161.96845,26.00065 c 5.16308,0.23887 8.82592,2.76865 13.25131,2.91971 6.71886,0.2294 13.61505,-3.20146 20.31388,-3.77039 4.03524,-0.34269 8.20592,1.49055 12.1711,0.66651 3.88622,-0.80766 6.72827,-4.91576 10.68099,-5.27684 4.1874,-0.38252 8.98403,2.86135 13.12474,2.12989 6.36628,-1.1246 12.52858,-8.26801 17.31962,-10.5939 M 810.0179,174.8489 c 2.49587,4.5257 0.9199,8.17446 2.17715,12.42038 1.90876,6.44639 6.79904,12.42965 9.88329,18.40284 1.85788,3.59814 4.30852,10.03035 7.82365,12.04107 3.44515,1.97066 8.99744,0.55059 12.63875,2.1295 3.85751,1.67265 6.35165,6.99803 10.3152,8.40211 6.09391,2.15875 15.01025,-0.74111 20.33046,-0.49496 M 740.78254,190.48385 c 4.13243,-3.10407 8.61653,-3.57349 12.08087,-6.33158 5.25978,-4.18743 7.50228,-10.16387 13.69565,-12.77853 3.73077,-1.575 7.61328,-0.52372 11.36114,-2.05812 3.67323,-1.50388 5.34667,-5.9724 9.30486,-6.26016 4.19321,-0.30484 5.54214,3.62922 9.44499,5.1936 6.00057,2.4052 9.98149,2.3056 12.55332,6.96903 m -146.57885,10.87582 c 4.30116,2.86614 4.93529,6.383 8.01166,9.56797 4.67067,4.83564 11.73776,8.45129 17.51479,11.88913 3.47995,2.0709 9.89191,5.72231 13.89311,5.09865 3.92153,-0.61128 7.60742,-5.42142 11.27862,-6.92925 3.88917,-1.59735 9.25626,0.3036 13.06774,-1.47257 5.86009,-2.73083 10.59053,-9.83032 14.84873,-13.02886 m -148.47068,-19.9583 c 5.03733,-1.15314 10.70383,-2.34599 14.25115,-4.99637 5.38577,-4.0239 6.40074,-10.32015 13.07074,-9.48726 4.01787,0.50174 3.60083,3.42248 6.82785,5.86918 3.16279,2.39797 7.8945,1.99396 10.67791,4.82351 2.94868,2.99755 3.64232,8.54563 6.83237,11.28531 4.90467,4.21222 13.22896,5.07937 17.66103,8.03274 m -155.73888,-9.60623 c 4.98991,1.344 10.30928,3.80776 14.70869,3.30608 6.67943,-0.76162 12.99402,-6.24881 19.39859,-8.29324 3.85799,-1.2315 7.64646,-0.0409 11.50161,-1.27974 3.77838,-1.21421 5.67615,-4.91076 9.62227,-4.48945 4.18042,0.44632 5.89248,5.53551 9.82549,7.02353 6.04694,2.28782 16.30667,-0.13446 21.49731,-1.3227 m -139.2228,-58.4571 c 5.16815,0.0242 4.2407,2.51511 7.01713,5.96383 4.21527,5.23606 7.54774,8.67 9.56486,15.08312 1.21505,3.86314 0.72642,9.23005 2.9262,12.63018 2.15601,3.33241 7.76129,4.33438 9.95231,7.64403 2.32111,3.50615 0.96736,9.0003 3.22311,12.54898 3.46818,5.45604 14.55783,9.08574 19.69961,10.47064 M 367.29182,119.51039 c 4.98757,-2.43517 10.98758,-6.83748 16.64185,-8.43207 4.31323,-1.21643 10.83714,-0.88609 15.31863,-0.89209 3.79869,-0.005 8.5546,-0.45875 12.3369,-0.10043 6.19044,0.58644 9.24994,1.85638 15.34683,0.63944 8.60052,-1.71669 19.27997,-4.95355 26.50012,-5.26865 m -171.1252,18.16525 c 4.94722,-2.51474 14.55311,-4.55724 20.40247,-4.00664 4.46205,0.41999 9.28622,2.69749 13.71605,3.37823 3.75497,0.57664 7.6253,-0.0877 11.40835,0.26253 6.19166,0.57327 10.98737,1.14832 17.20022,1.38801 8.7641,0.33808 16.1411,-1.1797 22.63597,-4.35081 m -131.46976,64.05563 c 5.21807,-1.89126 9.68988,-4.86509 14.95182,-7.47835 4.01395,-1.99349 6.86,-2.23156 9.83032,-5.58785 2.51748,-2.84518 3.62835,-5.95862 5.67708,-9.158 3.35313,-5.23638 5.14876,-7.91827 6.97411,-13.86088 2.57491,-8.38289 2.62572,-20.59071 9.06804,-23.86543 M 218.2942,249.02226 c -5.09412,-2.20197 -11.88964,-6.58618 -16.28159,-10.48837 -3.35032,-2.97668 -7.51057,-10.12412 -8.78856,-14.41907 -1.08364,-3.64046 -0.8609,-12.12359 0.56553,-15.64442 2.33463,-5.7625 10.81819,-13.06392 16.39977,-15.80312 7.8736,-3.86405 19.5167,-5.03674 26.31172,-7.49954 m -17.76184,122.1965 c 3.78316,-4.06122 6.80835,-8.65723 10.43031,-13.28269 2.76292,-3.52844 5.56887,-4.99099 6.97192,-9.24722 1.18892,-3.60787 0.26334,-6.00939 0.29407,-9.80827 0.0503,-6.21758 0.15134,-8.86965 -1.97418,-14.71162 -2.99838,-8.24094 -9.18796,-9.22425 -15.82156,-12.09168 m -3.11608,142.86234 c -4.51777,-3.22396 -11.78544,-8.28288 -14.88334,-13.27422 -2.36319,-3.80751 -3.8832,-10.82291 -4.67512,-15.23392 -0.67164,-3.73888 -1.38222,-9.8874 -0.86079,-13.65021 0.85341,-6.15853 3.90657,-13.38906 6.69055,-18.94874 3.92718,-7.84273 12.65514,-16.73147 17.58161,-22.02002 m 65.87404,135.99261 c -5.16359,-2.03487 -12.90737,-7.66739 -16.53317,-12.29056 -2.76589,-3.52666 -4.10431,-7.89392 -7.14906,-11.18267 -2.58114,-2.78741 -5.28658,-3.30724 -8.52947,-5.28634 -5.30759,-3.23917 -9.91254,-5.70699 -15.23227,-8.926 -7.50424,-4.54085 -15.89392,-11.6907 -21.777,-15.88897 m 158.50868,53.75853 c -4.45397,3.31043 -11.84,8.1169 -17.55241,9.48949 -4.35758,1.04708 -10.17555,0.60831 -14.64255,0.97212 -3.78638,0.30876 -8.27595,1.696 -12.07448,1.76329 -6.21702,0.11012 -13.65069,-0.88423 -19.64759,-2.52596 -8.45949,-2.31586 -18.32724,-8.04352 -25.05132,-10.69333 m 116.23133,-81.91355 c -2.85397,4.75977 -3.77718,9.8037 -5.91014,15.27822 -1.62706,4.17613 -4.40601,7.78327 -5.77695,12.05035 -1.16169,3.61708 -0.78227,6.22233 -0.98188,10.01579 -0.32668,6.2087 -0.25554,11.70227 -0.76702,17.899 -0.7215,8.74137 -8.54654,22.65468 -14.34654,26.96555 M 474.66938,330.33397 c -5.5329,0.43152 -10.18826,2.83678 -15.89712,4.22579 -4.35487,1.0596 -8.71897,0.99865 -12.96718,2.42693 -3.60082,1.21103 -6.86639,3.6124 -10.41527,4.96859 -5.80839,2.21966 -10.65448,3.36063 -16.37221,5.80309 -8.06566,3.44545 -14.2468,6.82215 -17.96327,13.02036 m 140.59477,6.08884 c -1.42477,-5.36269 -4.39583,-4.31322 -9.65621,-6.92929 -4.01277,-1.99559 -7.62771,-5.06736 -11.67443,-6.99354 -3.43033,-1.63237 -8.45086,-3.51939 -11.53599,-5.73626 -5.04939,-3.62832 -8.51713,-7.50374 -13.62221,-11.05227 -7.20146,-5.00568 -13.3536,-7.25253 -20.5586,-6.6906 m 39.72228,116.77702 c -3.9046,-3.94405 -6.2938,-16.95725 -4.39451,-22.5173 1.4488,-4.24137 4.38132,-8.74384 6.21329,-12.83383 1.5525,-3.46701 2.53043,-7.58374 4.10179,-11.0425 2.57182,-5.6609 6.92085,-12.1613 11.17809,-16.6932 6.00544,-6.3929 12.92349,-9.5285 11.06814,-16.51184 m 60.1315,92.17298 c -5.52253,-0.55201 -11.92478,-0.50643 -17.73187,-1.39798 -4.42981,-0.68007 -7.86268,-2.01143 -12.34004,-1.81115 -3.79518,0.17014 -7.24255,1.73169 -11.00703,2.24387 -6.16127,0.83827 -13.10003,1.18604 -19.29756,0.68412 -8.74249,-0.70802 -22.2182,-7.77 -27.3028,-12.90598 m 142.96556,54.20235 c -1.31448,-5.39211 -4.28672,-11.56054 -5.10614,-17.37838 -0.62511,-4.43801 0.77322,-6.89443 -1.88157,-10.50489 -2.25062,-3.06014 -4.17413,-2.29184 -7.64765,-3.83003 -5.68506,-2.51753 -9.45841,-3.35844 -15.50913,-4.78855 -8.53539,-2.01736 -17.86364,-4.66129 -25.05514,-5.38012 m 122.27742,91.30481 c -5.47191,-0.92811 -11.51633,-0.1967 -17.32911,-1.05072 -4.43415,-0.65143 -9.03506,-2.73199 -13.44939,-3.50589 -3.74184,-0.65561 -9.18261,-1.019 -12.73959,-2.35314 -5.82165,-2.18356 -14.57848,-9.67988 -17.24182,-15.29822 -3.75704,-7.92545 -3.75987,-20.3995 -5.47161,-27.42117 m 155.13722,55.95894 c -4.15044,3.6842 -13.62443,7.63846 -19.47366,8.18882 -4.46195,0.41986 -10.1394,-0.85632 -14.61345,-1.11429 -3.7924,-0.21827 -8.45547,0.3691 -12.22337,-0.1166 -6.16686,-0.79495 -12.86131,-2.77743 -18.70474,-4.90294 -8.24301,-2.99832 -16.61926,-8.03497 -23.74482,-9.24357 m 93.75485,-82.47777 c 1.47913,5.34959 4.39398,11.42973 5.45962,17.20758 0.81293,4.40749 0.37596,9.3594 1.1196,13.77921 0.63073,3.74635 2.37983,7.72471 2.9704,11.47767 0.96657,6.14241 0.76723,14.43297 -0.61353,20.4952 -1.94775,8.55163 -9.10438,21.2577 -14.50912,26.0553 m -15.8324,-165.03924 c -1.90102,5.21432 -1.72797,10.18383 -2.63349,15.9885 -0.69072,4.42796 -1.95389,7.31173 -1.29975,11.74555 0.55486,3.75822 2.3164,4.08004 4.66201,7.06802 3.83903,4.89037 8.03683,8.96967 11.5263,14.11568 4.92241,7.25918 6.38463,20.37239 8.31077,27.33867 m 37.55294,-125.20289 c -5.45606,1.01675 -10.38584,3.34407 -16.01812,5.01541 -4.29644,1.27497 -8.12967,1.21796 -12.10419,3.28867 -3.36879,1.75557 -4.39217,4.01247 -7.04298,6.73384 -4.33854,4.45402 -6.99437,7.63324 -10.64759,12.66459 -5.15338,7.09743 -10.64873,14.15546 -13.12426,20.9456 m 138.75603,-35.67194 c -4.7815,-2.81815 -9.94613,-4.49601 -15.28656,-6.94535 -4.07384,-1.8684 -6.67213,-4.50999 -11.06677,-5.3888 -3.72515,-0.74453 -6.89195,0.14053 -10.69002,0.0507 -6.21625,-0.14707 -11.76351,-0.41772 -17.96851,-0.81609 -8.75303,-0.56194 -17.86166,-2.05692 -24.9666,-0.73291 m 153.67532,10.30736 c 1.2994,5.39543 2.4898,19.84437 -2.3375,23.19171 -3.6825,2.55347 -13.03326,2.16514 -17.50724,1.90688 -3.79235,-0.21852 -8.42975,0.40645 -12.19976,-0.0613 -6.17034,-0.76562 -13.88985,-3.79013 -19.33308,-6.79494 -7.67847,-4.2387 -15.65047,-11.79782 -21.87698,-15.46764 m 118.11626,-71.50555 c -1.7931,5.2526 -4.7827,13.08292 -8.4339,17.68603 -2.7852,3.51139 -7.0774,6.47556 -10.0407,9.83804 -2.5116,2.85043 -4.0316,6.46428 -6.3641,9.46325 -3.8175,4.90836 -7.3778,8.69589 -11.1592,13.6316 -5.3343,6.96252 -11.4027,11.28992 -9.7106,18.3159 m 34.1771,-156.61761 c 3.8405,4.00588 9.6676,9.89978 12.1779,15.21153 1.915,4.05194 2.73,9.75062 4.0423,14.03601 1.1128,3.63236 3.1629,8.04595 3.9012,11.7723 1.2083,6.09888 0.7747,14.18323 -0.2257,20.31985 -1.4113,8.65659 -6.8537,19.22169 -9.1887,26.06168 m -97.35525,-77.39416 c 4.99283,-2.42386 9.67489,-6.34875 14.93136,-8.97367 4.00977,-2.00239 8.84481,-2.84117 12.8534,-4.84594 3.39767,-1.69966 7.02412,-4.5621 10.51085,-6.07048 5.70668,-2.46875 14.63934,-4.14683 20.84204,-3.71533 8.7498,0.60867 21.8808,8.98447 26.8819,14.20096 m -168.17065,23.20996 c 5.54429,0.25652 11.04753,-1.11676 16.91958,-1.31296 4.47936,-0.14969 8.70335,0.85448 13.14956,0.28947 3.76874,-0.4793 7.14994,-2.29002 10.86793,-3.07134 6.0852,-1.27877 11.6614,-1.757 17.79643,-2.76539 8.65432,-1.4225 17.2963,-3.0053 23.79801,-6.16168 m -138.23154,-34.3687 c 2.68016,4.85985 6.25848,11.17339 8.10716,16.75048 1.41025,4.25436 1.3184,8.24618 3.44872,12.18925 1.80609,3.34213 3.62013,3.8482 6.62387,6.17291 4.91617,3.80481 8.23529,4.30664 14.02467,6.57413 8.16675,3.19861 16.23552,6.23994 23.45535,6.57398 m -138.33062,-35.4144 c 4.43755,-3.33325 7.85154,-8.19163 12.37642,-11.93913 3.45168,-2.85872 8.84733,-5.30631 12.75465,-7.5004 3.31181,-1.86013 7.07768,-4.70455 10.53101,-6.28796 5.65201,-2.59156 14.43454,-4.98412 20.64572,-4.70006 8.76177,0.40069 22.1102,11.67329 25.60033,18.00183 m -149.54996,7.6693 c 4.61873,3.07776 11.14713,6.61117 15.30466,10.7628 3.1715,3.16696 4.43735,6.70993 8.29417,8.99132 3.2694,1.93347 3.9478,1.25142 7.73929,1.01546 6.20547,-0.38619 8.44381,-1.82099 14.09866,-4.4058 7.97696,-3.64624 16.94957,-6.57031 22.72819,-10.91091 M 590.70189,162.41639 c 5.40927,-1.23828 6.85157,-5.4891 11.46076,-9.13271 3.516,-2.77948 11.35032,-5.65023 15.81122,-6.0717 3.78121,-0.35763 11.86614,1.24958 15.12145,3.20724 5.32792,3.20408 9.21222,8.3406 14.06781,12.22317 6.84952,5.47692 13.9734,12.57174 19.98797,16.57964 M 508.67565,168.39146 c 5.35835,1.44323 8.34745,-0.34955 14.06663,-1.69273 4.36273,-1.02464 8.32439,-1.1084 12.49224,-2.75677 3.53269,-1.39758 7.3065,-4.25738 10.91273,-5.45119 5.90226,-1.9539 15.7726,-2.66922 21.78498,-1.08559 8.48133,2.23392 15.92001,7.47267 22.96401,5.86017 M 453.68398,104.58084 c 5.54975,0.026 17.15034,5.801 20.20559,10.81906 2.33065,3.82789 3.09069,9.95711 4.69037,14.14381 1.35631,3.54868 3.44025,5.9397 5.37185,9.21061 3.16144,5.35347 6.41927,8.95628 9.88708,14.11725 4.89184,7.28026 7.63258,14.48146 14.61027,16.36086 m 3079.51466,8.19574 c 4.99,-1.34403 11.1757,-1.94028 14.5803,-4.77099 5.1691,-4.29769 7.6014,-12.34387 11.6939,-17.67791 2.4653,-3.21311 7.3297,-5.89224 8.7866,-9.67049 1.4278,-3.70303 -0.7798,-8.68571 0.6776,-12.37763 1.5439,-3.91113 6.1724,-4.70291 8.572,-8.15596 3.6894,-5.30902 3.3181,-9.77063 8.6208,-10.24989 m -139.5595,56.42987 c 4.9468,1.49548 10.4711,3.6487 14.8651,3.10071 6.6712,-0.83191 12.1029,-5.7141 18.8207,-5.95651 4.0466,-0.146 6.1496,2.64512 10.1512,3.26536 3.922,0.60786 7.6817,-1.91313 11.3579,-0.41629 3.8944,1.58572 5.7588,6.89993 9.5966,8.61824 5.9006,2.64187 16.8638,0.10599 22.0057,-1.27894 m -156.3279,8.32223 c 4.3029,-2.86377 8.5954,-2.50792 12.4169,-4.74516 5.802,-3.39664 10.4991,-9.52262 15.5356,-13.97603 3.0339,-2.68262 6.5216,-3.47806 9.5973,-6.11196 3.0144,-2.58148 2.7354,-6.90764 6.7026,-6.82362 4.2028,0.089 3.1366,4.77706 6.1198,7.74057 4.5865,4.55635 13.7505,7.53948 18.8478,9.08047 m -147.3206,18.13628 c 4.1325,3.10413 5.9624,6.99641 9.5574,9.58211 5.458,3.9258 13.0852,5.75047 19.2604,8.40662 3.7198,1.60003 9.1988,5.23719 13.2266,4.81774 3.9475,-0.41112 8.219,-5.44472 11.6547,-7.43066 3.6398,-2.10385 9.2996,-1.47873 12.6974,-3.95601 5.2241,-3.80877 7.7043,-11.00829 12.1381,-13.95922 m -147.4686,-11.68459 c 2.4959,-4.52579 5.1266,-4.06421 8.9129,-6.35987 5.7487,-3.48533 8.5759,-5.65823 15.1691,-4.34607 3.9716,0.79045 6.2213,3.85121 10.1308,4.90799 3.8316,1.03571 8.0179,-1.58282 11.4585,0.39496 3.6449,2.0952 3.1671,7.13639 6.094,10.15562 4.5,4.64202 12.3372,6.93534 16.5955,10.13395 m -132.1257,36.3507 c 5.1632,-0.23889 9.2827,2.12619 13.6907,1.7037 6.6923,-0.64138 13.7279,-5.17163 19.9662,-7.6771 3.7578,-1.50924 9.7259,-1.93736 12.6523,-4.73666 2.8681,-2.74359 2.8604,-9.10102 4.9246,-12.49097 2.1867,-3.59124 7.4077,-5.50498 9.3463,-9.23653 2.9806,-5.73721 1.3491,-13.6612 3.921,-18.32473 m -150.9418,35.56084 c 4.6496,2.25725 6.9336,6.40757 10.9643,8.24102 6.1196,2.78371 14.3889,2.28479 21.0247,3.36514 3.9973,0.65081 7.5962,3.4421 11.6427,3.60898 3.9659,0.16353 7.7536,-3.05286 11.6859,-2.51291 4.1658,0.57201 7.0844,5.15755 11.2038,6.00243 6.3335,1.29899 14.4418,-2.55183 19.7671,-2.62376 m -162.2039,-26.79575 c 3.5792,-3.72794 6.607,-2.67257 10.708,-4.34239 6.2263,-2.53515 9.8619,-5.47409 16.5027,-4.4315 4.0003,0.62805 6.2992,3.3695 10.2306,4.34151 3.8531,0.95262 7.9501,-1.42517 11.5216,0.30643 3.7836,1.83442 4.5243,7.01782 7.9793,9.41487 5.3121,3.68543 13.746,3.8599 18.5371,6.18584 m -83.9469,67.07608 c -1.8538,-4.82434 -0.066,-8.40708 -0.9202,-12.75203 -1.297,-6.59674 -5.0615,-11.81769 -5.3789,-18.53292 -0.1911,-4.04511 2.1763,-7.24097 2.0806,-11.28941 -0.094,-3.96782 -3.2083,-7.08752 -2.1299,-10.90732 1.1424,-4.0466 6.203,-4.87296 8.379,-8.47107 3.3455,-5.53203 3.3374,-12.10783 7.0256,-15.94923 m 35.4012,151.98142 c 1.4126,-4.97183 3.0214,-11.66616 1.5129,-15.82911 -2.2902,-6.32042 -8.9865,-11.81739 -13.1364,-17.10641 -2.4999,-3.18601 -3.5072,-7.80964 -6.4863,-10.55323 -2.9198,-2.68895 -7.9106,-2.60825 -10.5036,-5.61337 -2.747,-3.18354 -1.3811,-8.2803 -3.6252,-11.83629 -3.4502,-5.46729 -9.4711,-8.42695 -11.3813,-13.39812 m 105.0846,66.26975 c -4.4528,2.62443 -8.7068,2.02812 -12.6496,4.04363 -5.9863,3.06 -9.9075,8.54475 -16.1877,10.94416 -3.783,1.44534 -7.4769,0.28025 -11.3034,1.60601 -3.7504,1.29939 -5.9107,5.13395 -9.8608,5.51995 -4.1847,0.40893 -4.8678,-3.17145 -8.5635,-5.17671 -5.682,-3.08305 -3.5311,-3.45012 -2.0755,-8.57326 m 146.8662,-21.73239 c -5.081,-0.94685 -8.5874,-4.04579 -12.9767,-4.63047 -6.6641,-0.88778 -13.9814,1.63542 -20.7032,1.75912 -4.0491,0.0745 -8.4096,-1.90331 -12.387,-1.14018 -3.8981,0.74797 -7.0355,4.8796 -10.935,5.61868 -4.1311,0.78297 -9.118,-2.00635 -13.1858,-0.94105 -6.2543,1.63789 -11.8414,9.21451 -16.4298,11.91882 m 150.9656,43.08524 c -1.5874,-4.9187 -0.7502,-9.55025 -2.4287,-13.64792 -2.5483,-6.22133 -8.7007,-11.48436 -12.5861,-16.97077 -2.3405,-3.30491 -4.1431,-8.47451 -7.4091,-10.86897 -3.2011,-2.34675 -8.7712,-1.64322 -12.1805,-3.67516 -3.6118,-2.1526 -5.5239,-7.32982 -9.257,-9.26494 -5.7395,-2.97522 -15.0315,-1.11491 -20.2672,-2.09058 m 42.2983,137.98495 c 1.3774,-4.98187 4.8999,-7.42799 6.3806,-11.60134 2.2482,-6.33619 2.6664,-11.32448 7.1485,-16.33555 2.6999,-3.01855 7.4889,-5.06875 9.429,-8.62314 1.9014,-3.48363 0.6586,-9.34312 1.4672,-13.22848 0.8566,-4.11606 5.2234,-8.31329 5.401,-12.5142 0.2731,-6.45885 -5.5099,-14.30644 -7.1456,-19.37485 m -19.4654,161.69007 c -4.0345,-3.23018 -1.9055,-6.73122 -3.5631,-10.8369 -2.5166,-6.23349 -5.8502,-10.46859 -6.274,-17.17796 -0.2552,-4.04159 2.1146,-7.27142 1.9593,-11.31829 -0.1522,-3.9663 -3.5236,-7.23038 -2.8257,-11.13774 0.7393,-4.13936 5.5057,-6.30141 6.8515,-10.28526 2.0692,-6.12513 0.044,-13.8317 1.4631,-18.96519 m 84.0942,70.48559 c -5.0958,0.86408 -9.4137,-0.82709 -13.7411,0.11264 -6.57,1.42668 -12.1887,6.25212 -18.6842,7.98642 -3.9127,1.04469 -7.8039,-0.16231 -11.6796,1.01228 -3.7986,1.15123 -6.0104,5.41913 -9.9747,5.60786 -4.1997,0.19994 -6.7018,-4.02889 -10.8203,-4.87775 -6.3322,-1.30511 -12.0547,2.07827 -16.212,-1.25022 m 140.1659,-52.14294 c -1.4073,4.97333 -4.5866,7.77444 -5.8958,12.00448 -1.9877,6.42224 -0.4336,12.14443 -4.9872,17.08971 -2.7431,2.97892 -5.6441,2.15398 -9.1493,4.18213 -3.4354,1.98779 -4.6457,6.20581 -8.5248,7.04453 -4.1095,0.88852 -7.5762,-3.05296 -11.7812,-3.04294 -6.465,0.0154 -13.5513,4.51156 -18.8022,5.40194 m 123.0588,-89.57223 c -5.143,0.51384 -8.6815,-1.87662 -13.1082,-1.76086 -6.7209,0.17568 -13.7566,3.75619 -20.3108,5.25281 -3.9481,0.90151 -9.6937,0.53002 -13.0752,2.75814 -3.3141,2.18379 -5.1426,7.73221 -7.7021,10.76523 -2.7116,3.2131 -8.2735,6.6359 -9.5794,10.63301 -2.0077,6.14549 0.4829,13.82324 -0.9672,18.94793 m 147.0843,-57.05446 c -3.4709,3.8295 -6.39,2.06473 -10.6087,3.408 -6.4052,2.03935 -10.8844,4.57265 -17.6039,4.36526 -4.0477,-0.12495 -7.5993,-2.63694 -11.6473,-2.51268 -3.9674,0.12182 -7.5345,3.59158 -11.4977,3.37435 -4.1985,-0.23013 -8.1035,-4.61786 -12.3068,-4.73881 -6.4624,-0.18597 -13.4043,5.15686 -18.7038,5.68635 m 52.484,-85.46836 c -1.7419,4.86487 -2.9969,12.25704 -1.2202,16.31281 2.6973,6.15772 10.6318,10.17543 14.7235,15.50984 2.4648,3.21335 1.9145,7.17951 4.1754,10.53927 2.216,3.29284 7.1338,4.29069 8.8739,7.85798 1.8434,3.7791 -1.4462,7.68541 -0.7322,11.82931 1.0978,6.37121 7.0334,9.2589 3.4568,13.20495 m 47.9499,-117.2112 c -5.1265,-0.65658 -9.6942,-3.09261 -14.1113,-2.78242 -6.7064,0.47087 -14.2004,7.46314 -19.5349,11.55479 -3.2134,2.46472 -7.5862,3.46334 -10.4395,6.33721 -2.7964,2.81668 -2.5805,7.48144 -6.1817,9.15011 -3.8151,1.76774 -8.5666,-0.91371 -12.5611,0.39945 -6.1415,2.01896 -13.4061,11.93353 -15.201,16.94646 m 157.3561,-5.57564 c -2.6578,-4.43259 -3.2477,-9.75974 -6.2196,-13.04233 -4.5121,-4.98384 -13.8572,-7.05227 -20.1342,-9.45902 -3.7811,-1.4498 -7.0828,-4.82706 -11.0528,-5.62752 -3.891,-0.78449 -8.0611,1.84033 -11.8102,0.53728 -3.9718,-1.38043 -5.8779,-6.45945 -9.7385,-8.12643 -5.9355,-2.56297 -14.9179,-0.49464 -20.2004,-1.1712 m 104.3318,116.92033 c -4.1477,-3.08296 -2.9338,-5.13241 -4.1712,-9.38368 -1.8787,-6.45452 -4.4136,-11.18135 -4.4576,-17.90416 -0.026,-4.04968 2.1159,-8.66163 1.2382,-12.61478 -0.8603,-3.87443 -5.6051,-6.95518 -6.7811,-10.74613 -1.2458,-4.01604 1.7324,-8.57501 0.7815,-12.67115 -1.4622,-6.29778 -8.2666,-12.54137 -11.0053,-17.10886 m 104.9143,78.13005 c -4.7231,2.09836 -8.3807,0.53996 -12.6753,1.61866 -6.5204,1.63768 -11.6733,5.82739 -18.3224,6.81874 -4.0053,0.59715 -7.5574,-1.27076 -11.5628,-0.67261 -3.9257,0.58626 -6.7505,4.34271 -10.7031,3.98064 -4.1872,-0.38357 -6.125,-4.98582 -10.0971,-6.36522 -6.1072,-2.12082 -12.3143,-0.5701 -16.5882,-3.74689 m 147.6852,-53.60329 c -4.1098,3.13424 -7.9637,2.23223 -11.9558,4.14827 -6.0611,2.90898 -10.7018,8.41702 -16.6098,11.62537 -3.5588,1.93263 -8.6301,2.28304 -11.6911,4.93471 -3.0001,2.59889 -3.6144,7.98954 -6.4574,10.75892 -3.0119,2.93382 -8.3824,3.14934 -11.357,6.12165 -4.5735,4.56988 -5.0979,11.39557 -9.9648,13.5578 m 62.0239,-121.47981 c 3.5254,3.77992 3.3202,7.59811 5.7007,11.33195 3.6142,5.66895 7.9094,9.53013 10.2625,15.82754 1.4174,3.79344 0.5162,7.23719 1.7269,11.10146 1.1865,3.78731 5.3588,5.63417 4.8153,9.56565 -0.5757,4.16491 -5.2759,4.21801 -7.7681,7.60425 -3.8316,5.20628 -4.9723,10.94097 -9.2073,14.17059 m -0.4516,-142.15149 c -4.7431,2.05275 -9.1606,0.22004 -13.324,1.72709 -6.321,2.28803 -11.3127,13.66115 -12.8406,20.20744 -0.9203,3.94335 -3.4442,9.26055 -2.7477,13.24993 0.6827,3.90995 4.9314,7.42044 6.1365,11.20188 1.2767,4.00595 -0.3938,10.1553 1.7009,13.80111 3.2205,5.60538 11.6834,9.01963 15.3161,12.9146 m -13.5272,-120.83465 c 4.8593,1.76125 7.1976,5.38119 11.2835,7.08822 6.2035,2.59177 12.4381,2.07372 17.839,6.07584 3.2534,2.41081 2.832,5.05246 5.1299,8.38689 2.2522,3.26802 6.3319,3.44086 5.4475,7.30934 -0.937,4.09818 -5.799,2.36707 -9.1094,4.9598 -5.0896,3.98629 -6.7089,10.97119 -11.5962,13.08642 m -65.8924,-108.08358 c 4.7246,2.09492 4.9048,0.72172 3.9485,5.04324 -1.4518,6.56114 -2.0236,14.5261 0.322,20.82574 1.4129,3.79479 2.3348,9.39954 5.052,12.40255 2.6632,2.9432 7.9612,3.30719 10.5617,6.30582 2.7548,3.17666 3.6383,9.44512 6.9913,11.98248 5.1551,3.90117 14.6606,3.60357 19.6679,5.41843 m -131.5403,-66.11176 c 4.6447,2.26778 7.0872,6.38312 11.1549,8.13262 6.1756,2.65625 15.3847,1.03408 22.1019,0.75708 4.0463,-0.16684 8.5815,1.46313 12.5182,0.51243 3.8583,-0.9318 6.5827,-5.2758 10.5116,-5.83917 4.1622,-0.59683 7.6136,3.07166 11.8181,3.14416 6.4642,0.11148 11.6143,-3.9578 16.4827,-1.79913 m -167.0086,-18.47767 c 5.1674,-0.0894 6.2224,3.54239 10.2393,5.40589 6.0986,2.82933 14.594,3.36682 21.305,3.75435 4.0426,0.23346 9.1433,1.66943 13.0567,0.62682 3.8356,-1.02187 6.223,-5.29679 10.1892,-5.44521 4.2016,-0.15724 5.6972,4.47001 9.6322,5.95121 6.0499,2.27732 12.7749,1.69878 17.561,4.03558 m -137.0877,40.67375 c 5.3585,-1.44327 6.845,-3.99122 10.8251,-8.31294 3.0362,-3.29674 6.3631,-5.48593 8.8724,-9.19975 2.1268,-3.14821 3.0502,-6.2921 4.6953,-9.71651 2.6925,-5.60469 3.568,-10.63673 6.0509,-16.3374 3.5023,-8.04161 16.895,-18.97896 24.0911,-19.62935 m -136.1696,56.76581 c 5.3121,1.6059 8.3564,-0.778 14.114,-1.94745 4.3922,-0.89212 9.4799,-0.80598 13.9096,-1.48643 3.7547,-0.57716 9.4613,-1.5836 13.2429,-1.21815 6.1891,0.59813 13.3136,3.26507 19.0596,5.64172 8.1054,3.3526 14.5574,8.16086 21.5352,6.28142 m -159.0497,9.5669 c 4.6206,-3.07522 9.0897,-7.48465 14.0502,-10.6336 3.7839,-2.40213 7.7328,-3.07121 10.9951,-6.14451 2.7649,-2.60534 4.3554,-6.35273 6.9593,-9.11915 4.2618,-4.52777 18.7881,-9.26889 24.5062,-6.8284 8.0662,3.44265 13.5082,14.63012 20.4256,16.72133 m -144.5411,19.53465 c 4.4376,3.33333 10.0587,5.03242 14.9734,8.25228 3.7491,2.45618 6.1087,5.68021 10.2362,7.42639 3.4987,1.47979 5.2189,0.94758 9.0176,0.90483 6.2173,-0.07 6.8032,-0.72662 11.8075,-4.41659 7.0592,-5.20526 16.0357,-10.96749 22.0526,-14.97207 m -150.4186,-8.4519 c 2.6802,-4.85996 9.4492,-13.77729 14.9897,-15.73152 4.2263,-1.49076 11.7611,-0.75866 16.2273,-0.38877 3.7858,0.31315 8.8976,0.18769 12.6031,1.02672 6.0646,1.37323 14.1853,4.3258 19.1636,8.05068 7.0226,5.25445 13.0457,14.65571 18.8244,18.9964 m -137.8724,34.53784 c 5.5495,-0.075 10.4599,-1.93076 16.2571,-2.88601 4.4223,-0.72872 7.9544,-0.29456 12.084,-2.03606 3.5002,-1.47653 5.231,-3.73221 8.2763,-6.00349 4.9842,-3.71737 5.2385,-5.71257 7.8589,-11.35098 3.6964,-7.9538 8.8605,-17.46549 12.3507,-23.79417 m -139.0663,31.74885 c 4.993,2.42392 10.3173,3.70363 15.8224,5.75655 4.1993,1.56599 7.0485,3.75607 11.495,4.31549 3.7691,0.4738 7.4625,-0.4825 11.2589,-0.33441 6.2136,0.24239 12.2227,0.90058 18.3783,1.78044 8.6832,1.24114 18.0697,3.77235 25.2964,3.67475 m -168.6781,-23.95551 c 3.8435,-4.00319 11.2323,-10.26915 16.8812,-11.88329 4.3092,-1.23134 11.0468,-0.39554 15.5282,-0.32604 3.7986,0.0585 9.1434,-0.32938 12.8729,0.39446 6.1039,1.1847 13.3092,3.97281 18.753,6.97743 7.6793,4.23843 15.5096,11.22729 22.0114,14.38373 m -96.3787,78.57064 c -1.9906,-5.18056 -5.0867,-11.68169 -6.259,-17.43899 -0.8943,-4.39181 -0.4374,-9.81722 -0.9181,-14.27318 -0.4078,-3.77701 -2.0248,-8.30822 -2.1478,-12.10516 -0.2014,-6.2144 1.0737,-14.68406 3.3946,-20.45236 3.274,-8.13702 11.8855,-18.03103 16.8906,-23.24403 m 33.1996,155.85135 c 1.5169,-5.33892 -1.053,-6.74503 -3.5147,-12.0795 -1.878,-4.06927 -2.5706,-7.32481 -5.4364,-10.77087 -2.4295,-2.92078 -5.6489,-4.50259 -8.4223,-7.09926 -4.5392,-4.24993 -9.0262,-8.72668 -12.9323,-13.56452 -5.5102,-6.82447 -10.4489,-18.38973 -13.0412,-25.1359 m 118.2373,70.80818 c -4.7816,2.81821 -9.5033,6.97984 -14.6353,9.84057 -3.9148,2.18227 -9.0479,3.26163 -13.0773,5.22419 -3.4154,1.6639 -7.1749,4.49748 -10.6982,5.91862 -5.7665,2.32596 -14.3984,3.82574 -20.6078,3.50796 -8.7593,-0.44827 -17.0093,-19.45901 -15.0339,-26.4114 m 154.0059,-10.30218 c -5.4562,-1.01677 -10.8014,-0.45991 -16.6652,-0.82836 -4.4731,-0.28104 -8.4802,-1.7471 -12.9569,-1.52965 -3.7945,0.1847 -6.8286,1.69251 -10.5533,2.44107 -6.0962,1.22517 -10.8342,1.61452 -16.8343,3.2452 -8.4641,2.3003 -17.1593,4.47365 -23.386,8.14355 m 137.7189,38.10162 c -1.7046,-5.28188 -4.9841,-9.46563 -7.5566,-14.74796 -1.9625,-4.02949 -2.5615,-7.80882 -5.2535,-11.39229 -2.282,-3.03727 -4.8671,-3.98324 -7.8658,-6.31591 -4.9079,-3.81784 -8.053,-5.7773 -13.6271,-8.5327 -7.8632,-3.88686 -15.7556,-8.11684 -22.8607,-9.44088 m 35.1876,126.68371 c 1.4792,-5.3497 1.9562,-12.3494 4.1818,-17.78656 1.6977,-4.14762 6.6567,-8.76026 9.4382,-12.27479 2.3574,-2.97929 3.4978,-6.243 5.4627,-9.49444 3.2158,-5.32159 4.1487,-7.0278 4.7471,-13.21683 0.8441,-8.7305 1.195,-16.87076 -1.0247,-23.74887 m -16.4464,166.02987 c -4.3324,-3.46868 -9.9039,-11.75708 -11.6885,-17.35444 -1.3614,-4.2698 -1.257,-10.30816 -1.8082,-14.75596 -0.4677,-3.77009 -1.9815,-8.06801 -2.2774,-11.85565 -0.4842,-6.19918 0.3527,-13.69643 1.6606,-19.7751 1.8451,-8.57484 6.6682,-18.56864 8.5944,-25.53508 m 94.4362,81.8588 c -5.4721,0.92789 -10.3654,3.43403 -16.0218,5.02358 -4.3148,1.21259 -8.9258,1.22512 -13.1786,2.63989 -3.6048,1.1996 -7.0617,3.65806 -10.6508,4.90402 -5.8743,2.03925 -13.8932,3.58169 -20.1083,3.39283 -8.7672,-0.26639 -22.7715,-4.70587 -28.4132,-9.22282 m 154.6092,-56.82315 c -1.5112,5.34054 -1.413,11.7972 -3.1632,17.40585 -1.3351,4.27844 -5.1129,9.66711 -7.5899,13.40211 -2.0993,3.16616 -6.0933,8.26444 -9.1683,10.49518 -5.0328,3.65104 -13.9325,6.52323 -20.1062,7.26378 -8.7087,1.04467 -19.2288,-0.54837 -26.3545,0.65994 m 122.5026,-89.49832 c -5.5227,0.55178 -11.5731,2.23071 -17.4324,2.66819 -4.4696,0.33374 -8.273,-0.5796 -12.6101,0.55101 -3.6761,0.95872 -5.6878,2.99506 -9.0266,4.80742 -5.4647,2.96627 -6.9426,2.69714 -9.6549,8.29204 -3.8261,7.89241 -6.2668,16.76113 -8.2347,23.71563 m 145.1107,-53.47127 c -3.7272,4.11225 -12.1675,9.80723 -17.8994,11.0956 -4.3725,0.98282 -10.4561,0.0237 -14.936,0.15538 -3.7973,0.11198 -7.8354,1.35699 -11.6318,1.50586 -6.2135,0.24365 -11.9158,-0.21806 -18.1319,-0.35038 -8.7688,-0.18665 -18.4479,-0.55477 -25.6395,0.16378 m 60.1547,-91.50857 c -1.8705,5.22407 0.5848,5.51418 3.8243,10.41511 2.4711,3.73855 4.1902,7.31504 7.1271,10.70065 2.4898,2.86953 6.3202,6.05299 8.4688,9.1861 3.5166,5.12792 7.3021,11.18223 9.5124,16.99402 3.1179,8.19836 3.3596,25.70248 -1.4941,31.05749 m 40.1194,-114.29443 c -5.505,-0.70506 -9.2772,0.58947 -15.0036,1.90337 -4.3682,1.0023 -6.496,1.16619 -9.9727,3.99457 -2.9468,2.39776 -4.4144,5.65566 -7.01,8.43011 -4.2483,4.5409 -11.2995,9.43777 -17.0315,11.84776 -8.0857,3.39965 -16.9241,2.66886 -19.3599,9.47169 m 141.0358,-3.91433 c -2.8541,-4.75987 -5.8627,-7.20745 -10.4322,-10.89955 -3.4857,-2.8164 -5.2704,-5.13521 -9.4868,-6.65498 -3.5741,-1.28787 -6.9671,-0.88937 -10.6979,-1.60763 -6.1061,-1.17556 -12.2646,-2.9705 -18.1266,-5.04422 -8.2691,-2.92525 -16.6353,-7.47262 -23.804,-8.39076 m 100.1142,115.23238 c -4.454,-3.31059 -11.6439,-11.88898 -12.6753,-17.67302 -0.7868,-4.41223 0.2686,-9.96558 -0.03,-14.43756 -0.2539,-3.79061 -1.669,-7.0753 -2.3396,-10.81473 -1.0974,-6.12026 -2.7983,-10.15851 -4.6078,-16.10738 -2.5526,-8.39174 -3.45,-17.85212 -7.1665,-24.05047 m 116.456,81.73564 c -5.0719,2.2533 -11.2173,5.55334 -16.8605,7.18867 -4.3047,1.2475 -9.6836,1.04284 -14.0686,1.96938 -3.7167,0.78575 -7.7007,2.78131 -11.4355,3.47809 -6.1127,1.14042 -14.1973,1.33054 -20.3243,0.27181 -8.6429,-1.49347 -20.6278,-7.94836 -26.4279,-12.25945 m 158.6674,-53.70898 c -4.4133,3.36566 -9.9736,7.8859 -15.1756,10.61709 -3.9683,2.08346 -8.5352,2.97148 -12.4055,5.23181 -3.2804,1.91628 -5.209,4.56581 -8.1311,6.99389 -4.7825,3.97401 -7.856,6.72132 -12.0141,11.34447 -5.8656,6.52163 -15.5733,15.14297 -22.178,18.07723 m 64.9383,-136.03084 c 3.7857,4.05901 9.725,9.1969 12.5541,14.34617 2.1582,3.928 2.7758,9.26908 4.7199,13.30743 1.6482,3.4229 4.4566,6.98813 5.9592,10.47745 2.4593,5.71093 3.4616,17.19682 1.2969,23.02514 -3.0536,8.22168 -14.3453,17.53475 -20.0923,21.91753 m -2.2998,-141.06449 c -5.0932,2.20432 -9.6809,3.46758 -14.5134,6.80848 -3.6864,2.54856 -4.5211,2.5638 -5.5416,6.92744 -0.8647,3.69889 0.3543,5.89605 0.7223,9.6772 0.6025,6.18856 1.2329,9.12822 3.6605,14.85232 3.4245,8.07465 7.9674,15.03377 12.8972,20.31946 m -17.1358,-123.19885 c 5.2182,1.8913 11.5786,2.77422 17.022,4.98527 4.1525,1.68662 8.5571,5.31418 12.4451,7.54302 3.2959,1.88892 8.9503,5.00005 11.437,7.87206 4.0699,4.70058 6.2241,20.63872 2.692,25.75564 -4.9824,7.21815 -17.3988,14.78813 -24.0312,17.65862 m -65.8747,-124.75863 c 5.0735,2.2496 13.1934,18.07931 9.408,22.57286 -2.8875,3.42782 -2.1589,2.1583 -0.6112,6.36383 1.3123,3.56466 3.5255,4.50536 6.0093,7.3802 4.0651,4.7052 6.6988,8.20019 11.2897,12.39236 6.4761,5.91364 13.122,10.59086 19.9172,13.05372 m -130.705,-65.758 c 4.9877,2.43523 9.6562,3.65691 15.3275,5.1892 4.3263,1.16886 6.8888,2.77798 11.3611,2.48491 3.7908,-0.24879 6.5691,-1.97634 10.2542,-2.90052 6.0313,-1.51261 12.0041,-2.71997 18.1638,-3.56855 8.6891,-1.19706 22.6256,0.65679 29.2324,3.58623 m -170.9111,-19.25247 c 5.549,-0.096 14.1621,1.71583 19.559,4.03862 4.117,1.77186 6.132,4.37629 10.6079,4.60546 3.794,0.19387 5.9383,-1.60705 9.6238,-2.5289 6.032,-1.50879 14.2406,-3.44032 20.3959,-2.56706 8.6828,1.23185 19.5083,8.52468 26.0033,11.69585 M 954.45081,651.47419 c -1.76994,-4.84187 0.34378,-7.66065 0.16008,-12.07356 -0.27884,-6.69992 -3.50157,-10.64474 2.30294,-14.00059 3.49653,-2.02148 6.9058,-0.19476 10.69749,-1.58768 3.71619,-1.36521 6.85325,-6.04189 10.04827,-8.37833 3.38473,-2.47516 8.05533,-7.45468 8.84818,-11.57193 1.219,-6.33023 3.7624,-3.7519 9.06731,-3.481 m 19.97132,109.0538 c -2.5287,-4.49242 -4.0746,-9.63533 -7.2319,-12.72355 -4.7936,-4.68875 -13.02519,-6.25118 -18.70696,-9.81279 -3.42258,-2.14546 -5.48684,-5.96868 -9.08429,-7.806 -3.52584,-1.80071 -8.02968,-0.34519 -11.02969,-2.92826 -3.17813,-2.73644 -1.645,-7.11813 -3.70957,-10.76918 -3.17424,-5.61344 -8.66776,-9.17519 -10.49157,-14.16442 m 65.60038,136.80918 c -2.464,-4.52806 -1.4664,-9.0423 -3.4386,-12.99397 -2.9944,-5.99965 -8.9903,-9.41468 -10.9067,-15.83956 -1.1544,-3.87022 0.6782,-4.6485 1.6135,-8.57778 0.9166,-3.85104 -1.0358,-7.29675 1.3133,-10.48349 2.4884,-3.37595 8.4924,-4.29302 10.8123,-7.78734 3.5667,-5.37247 -1.3433,-18.66991 -3.949,-23.29905 m -10.7597,149.45556 c 0.6041,-5.11969 3.8088,-7.04808 5.3632,-11.18198 2.36,-6.27628 1.3977,-10.39565 7.8528,-12.21098 3.8884,-1.0935 10.8168,-0.76196 13.701,-3.58884 2.8267,-2.77061 1.9789,-11.14673 1.7075,-15.09578 -0.2874,-4.18352 1.8998,-10.28018 0.2988,-14.15684 -2.4615,-5.96031 -10.2729,-9.93891 -12.8119,-14.60478 m -5.0932,155.81145 c -0.8634,-5.08261 1.4086,-8.72449 1.0384,-13.12578 -0.5621,-6.68227 -4.5195,-12.97868 -5.5737,-19.60117 -0.6349,-3.98926 0.8886,-8.21279 -0.1855,-12.10695 -1.0528,-3.81663 -5.2784,-6.34418 -5.8018,-10.26843 -0.5546,-4.15725 3.4286,-7.68616 3.4906,-11.87999 0.095,-6.44795 -3.7477,-12.55216 -3.1252,-17.82767 m 49.4658,159.43779 c -2.2411,-4.6427 -1.7925,-9.5514 -4.0568,-13.3433 -3.4377,-5.75702 -10.7054,-9.32441 -14.9904,-14.48262 -2.5811,-3.10721 -2.8116,-6.94888 -5.3305,-10.10642 -2.4689,-3.09465 -6.8667,-3.61031 -8.2215,-7.3302 -1.4352,-3.94075 1.7024,-7.8637 1.0881,-12.01293 -0.9445,-6.37939 -6.0359,-12.20201 -6.9256,-17.43931 m 8.1841,145.53758 c 4.5369,-2.4486 8.9154,-1.6857 12.8769,-3.6392 6.0144,-2.9657 10.9741,-9.3927 16.0697,-13.7514 3.0696,-2.6256 8.3977,-5.7758 9.9846,-9.4901 1.5553,-3.6403 -0.4502,-9.5266 -0.1831,-13.4763 0.283,-4.1842 3.7298,-9.5088 2.9613,-13.6319 -1.1816,-6.3393 -8.334,-12.3756 -10.6434,-17.1596 m -111.7219,83.1061 c 4.60452,2.3186 6.15643,6.4588 9.93679,8.743 5.73951,3.4679 15.07409,4.4212 21.77805,4.5439 4.03833,0.074 10.21947,1.0407 13.83204,-0.7659 3.54063,-1.7706 5.42067,-6.9672 8.83704,-8.9671 3.61918,-2.1187 8.80208,-0.4647 12.51518,-2.4158 5.7089,-2.9999 9.444,-9.7748 14.1189,-12.2979 m -163.31609,-8.0378 c 5.13646,-0.4405 7.73283,2.3712 12.10159,3.0211 6.63285,0.987 12.87514,-0.7333 19.33993,1.048 3.89426,1.0731 6.81856,4.2452 10.77767,5.0477 3.88028,0.7865 8.03291,-1.7759 11.77387,-0.4801 3.96308,1.3727 5.77393,6.53 9.60985,8.2269 5.89768,2.6089 13.5036,0.6984 18.24825,3.0876 m -160.66182,11.5119 c 4.48168,-2.5471 8.02739,-1.1513 12.25738,-2.4222 6.42221,-1.9297 11.64352,-6.2856 18.12064,-8.0221 3.90169,-1.0461 8.66578,-0.1701 12.3162,-1.8999 3.57773,-1.6953 5.60072,-6.7143 9.08161,-8.5996 3.68757,-1.9972 8.51026,-0.1662 12.35442,-1.8434 5.91033,-2.5787 9.40227,-7.3459 14.69506,-7.7999 m -132.26647,96.5961 c 3.13464,-4.0929 7.4493,-4.8342 10.41688,-8.1052 4.5056,-4.9662 5.64572,-12.9517 9.45579,-18.4697 2.29513,-3.3239 6.09911,-4.997 8.22609,-8.4311 2.0846,-3.3658 1.06723,-8.1985 3.57386,-11.2629 2.65547,-3.2464 7.83297,-2.8397 10.93924,-5.6579 4.77585,-4.333 6.59068,-10.668 11.20876,-13.2926 m -38.06379,142.9019 c -2.9277,-4.2428 -0.8032,-6.9651 -1.4434,-11.3351 -0.97193,-6.6348 -4.1387,-12.6387 -5.1588,-19.2662 -0.61448,-3.9923 -0.26036,-9.8376 -2.38006,-13.2764 -2.07752,-3.3702 -7.09714,-4.5111 -8.73951,-8.1133 -1.73988,-3.8161 1.21229,-6.6411 1.13591,-10.8345 -0.11742,-6.4474 -1.74372,-10.0602 1.48632,-14.2777 m 77.78761,74.8014 c -2.39511,4.565 -5.95321,6.3218 -8.32848,10.0451 -3.60632,5.6528 -3.3711,10.3243 -10.04921,10.9278 -4.02276,0.3635 -6.36092,-1.8829 -10.38524,-2.2321 -3.9442,-0.3422 -7.37928,2.5163 -11.02866,0.9816 -3.86606,-1.6258 -4.00928,-6.4651 -7.23294,-9.148 -4.95633,-4.125 -11.89316,-4.3474 -14.90996,-8.7194 m 131.95757,14.6836 c -4.76691,1.9622 -6.97288,-0.1692 -11.38356,-0.3871 -6.69651,-0.331 -9.41139,-0.8393 -13.57736,-6.0931 -2.50949,-3.1648 -2.78809,-7.5186 -5.47359,-10.5364 -2.63205,-2.9576 -7.96304,-3.6039 -10.80578,-6.3588 -3.01153,-2.9184 -7.7175,-9.6459 -11.88433,-10.1217 -6.40644,-0.7316 -15.17643,11.7951 -17.64444,16.4991 m 134.22514,-40.7481 c -4.37111,2.7325 -9.37736,4.5264 -12.33319,7.8083 -4.48775,4.9827 -6.02075,11.2583 -11.34353,15.3362 -3.20634,2.4564 -7.90196,3.7228 -10.55061,6.773 -2.59589,2.9894 -2.35694,7.9938 -5.26341,10.6821 -3.07904,2.8478 -8.02314,1.7198 -11.52564,4.0272 -5.38504,3.5476 -7.80467,10.2663 -12.71666,12.2882 m 145.99979,-30.5835 c -4.9772,-1.3439 -7.5816,-4.7493 -11.7805,-6.1199 -6.3749,-2.081 -13.30089,-1.095 -19.63271,-3.3033 -3.81415,-1.3302 -6.29858,-4.7421 -10.16131,-5.924 -3.78582,-1.1583 -7.3631,0.5888 -10.40029,-1.9506 -3.21751,-2.6901 -3.44609,-8.4091 -6.61857,-11.1524 -4.87764,-4.2179 -19.58141,-1.4699 -24.08555,1.3457 m 160.70363,58.4218 c -5.1528,0.161 -7.5591,-2.6198 -11.8801,-3.5328 -6.5603,-1.3863 -11.1304,-0.5506 -15.878,-5.2865 -2.8599,-2.8529 -5.3033,-8.2095 -8.971,-9.9021 -3.5947,-1.659 -8.5978,-0.049 -12.1976,-1.6965 -3.8135,-1.7453 -5.4585,-7.0617 -9.2069,-8.944 -5.7631,-2.8939 -14.4763,-1.3987 -19.605,-2.7835 m 160.2257,7.8263 c -5.1513,-0.1953 -10.555,-1.7927 -14.8078,-0.6003 -6.4568,1.8101 -11.9552,7.8809 -17.9464,10.8932 -3.609,1.8146 -7.7156,1.436 -11.2424,3.4053 -3.4566,1.9301 -4.6344,6.3613 -8.5222,7.1077 -4.1186,0.7908 -7.9917,-2.8968 -12.1779,-2.6332 -6.4362,0.4051 -12.4479,5.105 -17.7575,5.2709 m 163.9997,4.5707 c -5.1326,-0.4836 -7.4569,-3.7055 -11.7027,-4.9223 -6.4461,-1.8475 -13.1473,-0.8927 -19.4921,-3.0627 -3.8219,-1.3072 -5.6533,-4.739 -9.3929,-6.2665 -3.6651,-1.497 -8.1145,0.1774 -11.4858,-1.8984 -3.5713,-2.1991 -4.7053,-7.8434 -8.2662,-10.0597 -5.4747,-3.4076 -15.8044,-2.4745 -21.1125,-2.6758 m 154.2963,-6.9859 c -3.5988,3.6915 -7.6188,4.1608 -10.9931,7.0107 -5.1231,4.3269 -7.6448,10.1056 -13.5229,13.333 -3.5408,1.9442 -7.7195,1.7095 -11.1556,3.8331 -3.3677,2.0814 -4.4417,6.784 -8.1908,8.0558 -3.9717,1.3474 -7.6418,-1.8628 -11.8157,-1.4496 -6.4172,0.6354 -11.7353,4.722 -17.024,4.2237 m 152.422,-68.4275 c -5.1419,-0.3737 -9.1704,-2.9291 -13.5865,-2.8677 -6.7047,0.093 -13.8315,4.1889 -20.3226,5.8719 -3.9101,1.0138 -8.9648,0.4341 -12.5212,2.3497 -3.4857,1.8776 -5.0985,6.8746 -8.644,8.6356 -3.756,1.8655 -9.3581,0.6443 -12.9419,2.8231 -5.5101,3.3497 -8.5791,12.151 -12.2875,15.9549 m 150.0828,-2.434 c -1.9029,-4.7913 -1.1828,-10.1841 -3.4883,-13.951 -3.5002,-5.7191 -19.0203,-3.2462 -23.303,1.9129 -2.5798,3.1077 0.1168,0.2791 -3.1489,-2.0982 -3.2006,-2.33 -7.2401,-2.2186 -9.8104,-5.2294 -2.723,-3.1896 -5.3509,-9.1463 -9.11,-11.0069 -5.7795,-2.8605 -15.4968,-0.4431 -20.7951,-0.8283 m 139.023,52.2651 c -5.1413,0.381 -8.3412,-1.9507 -12.7535,-2.1465 -6.6991,-0.2974 -13.8689,4.0527 -20.4656,5.2577 -3.9737,0.7258 -6.4799,-0.8356 -10.5191,-0.8084 -3.9589,0.027 -6.4324,2.9491 -9.5884,0.5596 -3.3435,-2.5314 -1.7559,-7.569 -4.124,-11.031 -3.6409,-5.3228 -9.1212,-8.2251 -11.0821,-13.1622 m 118.4473,74.6057 c -1.9831,-4.7587 -0.1755,-7.3753 -0.3631,-11.788 -0.2846,-6.6996 -1.473,-13.0017 -1.7901,-19.6987 -0.191,-4.0341 -0.3831,-12.177 -3.3706,-14.8943 -2.9281,-2.6632 -9.2978,-2.5649 -12.9674,-4.0496 -3.8875,-1.5728 -7.5131,-6.6437 -11.6398,-7.3943 -6.3448,-1.1541 -14.4902,3.2813 -19.788,3.6739 m 70.9311,137.9202 c -1.3517,-4.9751 0.4916,-8.2214 0.1299,-12.6234 -0.5491,-6.6833 -3.6077,-12.6437 -3.8427,-19.3454 -0.1415,-4.037 1.776,-8.6237 0.8266,-12.55 -0.9305,-3.8482 -5.3541,-6.868 -6.4798,-10.6634 -1.1926,-4.0207 1.3099,-8.9671 0.053,-12.9688 -1.9321,-6.1524 -8.8259,-10.9953 -10.8694,-15.8988 m 67.2594,149.5661 c -4.2799,-2.8738 -6.5376,-6.7054 -10.343,-8.9476 -5.7775,-3.4042 -11.7959,-2.2857 -13.8125,-8.6799 -1.2148,-3.8518 0.8802,-9.5197 -1.2282,-12.965 -2.0665,-3.3766 -7.7182,-4.6343 -10.0475,-7.8357 -2.4676,-3.3914 -0.2101,-7.4699 -1.5596,-11.4412 -2.0748,-6.1058 -7.8344,-10.6914 -9.2272,-15.8179 m 122.0977,74.988 c -4.58,2.3664 -8.2886,0.6453 -12.5385,1.8483 -6.4523,1.8264 -11.2846,6.1805 -17.934,7.046 -4.0055,0.5213 -6.622,-1.4467 -10.6604,-1.5125 -3.958,-0.065 -7.0322,3.269 -10.6217,1.6008 -3.8027,-1.7673 -3.4275,-6.7577 -6.4552,-9.6605 -4.6551,-4.4631 -12.7225,-6.3537 -17.1327,-9.3149 m 142.7332,-36.8429 c -2.1941,4.6652 -5.6469,5.9328 -8.2456,9.5041 -3.9457,5.422 -5.1894,10.009 -11.3975,12.5432 -3.7397,1.5266 -7.7416,0.4755 -11.4602,2.0538 -3.6445,1.5469 -5.8419,6.0894 -9.523,7.5462 -3.8996,1.5433 -9.3488,-0.2993 -13.1297,1.5163 -5.8132,2.7914 -9.263,10.4295 -13.9824,12.8679 m 141.4379,-89.3257 c -5.1445,-0.3362 -9.8931,-3.1651 -14.2691,-2.5717 -6.6438,0.9009 -13.242,6.2761 -19.388,8.9575 -3.7022,1.6152 -8.466,1.4962 -11.836,3.7237 -3.3029,2.1832 -4.4111,7.1086 -7.9183,8.9453 -3.7155,1.9458 -10.2713,1.4822 -13.3837,4.2934 -4.7854,4.3222 -5.4088,14.7122 -7.6697,19.5194 m 139.9546,-81.5275 c -1.4323,4.9516 -4.7895,5.8149 -7.3509,9.4128 -3.8889,5.4626 -5.3085,11.1789 -10.3905,15.5537 -3.0613,2.6353 -6.3376,1.9882 -9.8321,4.0144 -3.4248,1.9858 -4.5969,6.4562 -8.4398,7.4069 -4.0712,1.0071 -7.9814,-2.4355 -12.157,-2.0376 -6.4199,0.6117 -11.9014,3.7877 -17.2024,3.4414 m 31.5534,-112.9261 c -1.3516,4.9738 -3.7036,11.7661 -2.1791,15.911 2.3145,6.2931 10.8724,10.7664 15.417,15.6972 2.7376,2.9703 2.5828,6.5705 4.9908,9.8138 2.3601,3.1786 7.6062,3.9483 9.78,7.2572 2.3029,3.5053 -0.069,7.8035 1.2893,11.7714 2.0883,6.1007 5.1744,9.2809 3.6985,14.3832 m 39.528,-118.852 c -4.011,3.2388 -7.8226,2.6447 -11.7245,4.7135 -5.9243,3.1409 -9.8107,6.6162 -16.4361,7.6518 -3.991,0.6237 -8.6102,-0.9373 -12.4368,0.3563 -3.7505,1.2679 -6.4931,5.8947 -10.1032,7.5191 -3.8245,1.7208 -10.041,1.1213 -13.3598,3.6861 -5.1025,3.9434 -7.8988,14.6789 -9.2916,19.8041 m 64.8702,-115.9361 c 1.1987,5.0137 0.7796,11.1429 3.2772,14.7852 3.7919,5.53 11.361,6.8417 13.5556,13.1779 1.322,3.8168 0.2401,7.3711 1.4244,11.2331 1.1607,3.785 5.1516,5.8288 4.9676,9.7831 -0.195,4.189 -4.7465,4.6139 -6.9642,8.1731 -3.4096,5.4723 -4.148,10.9975 -8.2811,14.3349 m -34.0485,-130.3266 c 5.1349,-0.4598 8.1014,1.7021 12.5053,2.0349 6.6862,0.5053 11.7238,-3.5497 12.3526,3.1252 0.3788,4.0209 -3.6912,5.9786 -4.1557,9.991 -0.4551,3.9326 3.8805,8.488 3.9106,12.4468 0.032,4.1939 -4.1556,7.5228 -4.5343,11.7 -0.5823,6.4225 3.8912,14.5198 5.1264,19.6861 m -103.6556,-46.8496 c 2.1925,-4.6658 3.9154,-3.699 8.0261,-5.3113 6.2409,-2.4477 10.1707,1.1071 16.8736,1.2841 4.0376,0.1066 8.9002,1.8488 12.822,0.8803 3.8436,-0.9493 6.5766,-5.3362 10.4794,-6.0009 4.1346,-0.7041 8.0351,2.873 12.2211,2.609 6.4359,-0.4059 12.7552,-4.2458 18.0464,-4.7196 m -149.4738,8.6591 c 4.816,1.8397 5.6572,5.411 9.1793,8.0757 5.3475,4.0456 10.6101,6.8492 15.5163,11.4202 2.9554,2.7534 7.1441,8.0938 11.1031,8.8947 3.8802,0.785 9.2898,-2.8471 13.2054,-3.43 4.148,-0.6176 11.4203,0.669 14.8193,-1.7874 5.2258,-3.7767 5.6879,-15.3399 7.9472,-20.1476 m -140.9051,-50.9956 c 2.1626,4.6796 1.0544,8.9045 2.6752,13.013 2.4608,6.2377 9.7434,12.2846 14.9703,16.4845 3.1485,2.53 6.3295,7.0154 10.1275,8.391 3.7224,1.3482 8.6543,-0.9095 12.3792,0.4313 3.9461,1.4204 6.051,6.3639 9.934,7.9499 5.9702,2.4385 13.7175,0.5997 18.6801,2.4953 m -95.3474,-120.10597 c 1.3875,4.96503 -1.8365,5.32026 -3.8339,9.25935 -3.0325,5.98051 -5.2504,14.61882 -5.0663,21.32032 0.1108,4.0369 1.5922,11.5622 4.5129,14.3525 2.8626,2.7347 8.7885,2.4943 11.9672,4.8544 3.3673,2.5002 3.1665,7.2516 5.9896,10.3531 4.3405,4.7686 9.9645,6.6912 12.1929,11.5132 m -91.8823,-111.14055 c 5.1136,0.65268 8.3375,4.1956 12.7136,4.79474 6.644,0.90972 12.8181,-1.7684 19.2041,0.27477 3.8468,1.23078 4.8382,4.34421 8.3459,6.34744 3.4379,1.96331 7.9923,0.6332 10.7713,3.45261 2.9441,2.98681 1.605,7.79285 3.8216,11.35339 3.408,5.47427 8.9756,8.3258 10.4054,13.44195 m -100.7684,-92.2574 c 2.0962,4.70944 -0.2448,6.50452 -0.8037,10.88558 -0.8487,6.65153 -6.2579,9.44553 -7.8991,15.94604 -0.9887,3.91577 -2.3225,12.80108 0.2553,15.91068 2.5265,3.04766 9.4987,3.44613 13.1179,5.04988 3.8342,1.69898 7.4367,6.53885 11.5439,7.38971 6.3148,1.30819 13.8525,-2.40258 19.1218,-1.73003 m -105.3834,-94.82664 c 4.8727,1.68377 7.4221,5.23531 11.5627,6.77298 6.2865,2.33463 13.2789,1.61859 19.536,4.03018 3.7692,1.45272 5.9641,4.88347 9.7464,6.30223 3.7069,1.39049 7.9306,-0.53753 11.1249,1.80104 3.384,2.47742 2.5187,7.07922 5.0347,10.43508 3.8684,5.1596 10.0595,7.48086 12.2196,12.33363 m -147.2614,-77.39507 c 5.0961,0.77855 7.0114,4.06587 11.1188,5.68997 6.236,2.46586 12.4392,2.47994 18.1967,5.91788 3.4682,2.07096 5.577,5.9622 9.2198,7.70821 3.5702,1.71121 8.2848,0.24322 11.6498,2.329 3.5649,2.20962 4.5015,7.65245 7.9692,10.01211 5.3316,3.62796 14.5193,3.1342 19.5403,4.86922 M 1388.559,811.55842 c 3.6467,-3.6438 4.5772,-1.83032 8.9758,-1.43861 6.6782,0.59479 11.0228,1.34676 16.9053,4.56594 3.5435,1.93919 8.8722,6.19689 12.9073,6.01412 3.9549,-0.17917 7.972,-4.44387 11.8474,-5.25243 4.1055,-0.85658 8.4848,2.19848 12.6219,1.50794 6.3608,-1.0617 10.8811,-6.18735 16.1323,-5.38511 m -121.8441,70.88478 c 2.7613,-4.35269 6.3375,-3.67287 9.9735,-6.17999 5.5205,-3.80639 10.0603,-10.11034 14.5771,-15.06504 2.7208,-2.98459 7.7777,-8.33986 8.012,-12.37231 0.2296,-3.95217 -3.5821,-7.89102 -3.0552,-11.81465 0.5581,-4.1566 5.6746,-4.79521 7.7652,-8.43142 3.2142,-5.59061 1.9989,-12.61765 5.7566,-16.37234 m -106.9642,124.97516 c 5.0315,-1.12275 9.3232,0.5215 13.6119,-0.53373 6.5113,-1.60202 12.5994,-7.03522 18.554,-10.11904 3.5869,-1.85761 8.6267,-2.38064 11.6804,-5.02498 2.9929,-2.5917 3.6046,-8.77308 5.7328,-12.11092 2.2544,-3.53602 7.7808,-5.01767 9.8812,-8.6484 3.2294,-5.5822 2.3351,-13.29813 5.1804,-17.78329 m -152.2515,49.31755 c 4.6381,2.25076 7.8744,6.08317 12.0941,7.38705 6.4066,1.97968 14.1497,0.40092 20.7994,1.2661 4.0056,0.52119 8.1632,2.95238 12.1947,2.69878 3.9513,-0.24859 7.4476,-3.90323 11.4066,-3.90532 4.1941,-0.002 7.9263,4.11439 12.1186,4.24889 6.4455,0.2068 13.9443,-4.76957 19.1289,-5.9265 m -123.4995,-83.7511 c 1.0841,5.04025 -0.8075,9.06951 -8e-4,13.41212 1.2246,6.5932 5.7013,12.43466 7.3214,18.94151 0.9758,3.9196 -0.5714,7.84837 0.5378,11.73275 1.0871,3.80704 5.4607,6.54234 6.5042,10.36107 1.1056,4.04545 -0.4575,10.6468 1.8088,14.1759 3.4844,5.42594 14.3708,7.79954 19.15,10.1188 m -59.2346,-161.14125 c 2.2595,4.63365 1.1799,8.37918 2.5416,12.58073 2.0673,6.37903 6.8507,11.23974 8.462,17.74904 0.9706,3.92107 -0.2493,8.14043 1.0741,11.95708 1.2972,3.74065 5.6145,5.97361 6.3314,9.86719 0.7595,4.12475 -2.7264,8.12356 -2.3702,12.30297 0.5477,6.42578 5.8901,12.87331 7.0071,18.06697 M 1082.6341,703.7653 c 2.7117,4.38437 3.8617,9.2264 6.8408,12.48717 4.523,4.95073 11.6227,6.94478 16.0987,11.93763 2.6962,3.00761 2.7253,6.99256 5.3149,10.09299 2.538,3.03868 7.4417,3.5418 9.4848,6.93286 2.1645,3.59239 0.2197,8.51153 1.9729,12.322 2.6955,5.85853 9.4021,9.92676 11.7304,14.70144 m -62.3157,-140.34506 c 5.1544,-0.0802 5.3015,1.3873 8.631,4.28686 5.055,4.40232 4.3105,5.98729 2.1268,12.32719 -1.3154,3.81902 -4.9942,8.14693 -5.0396,12.18615 -0.044,3.95879 3.1162,7.43457 2.3485,11.3185 -0.8133,4.11453 -5.6577,7.44705 -6.3147,11.58947 -1.0102,6.36892 5.5519,16.0535 8.3461,20.57131 m -86.17917,-104.6625 c 5.14817,0.2629 7.17437,3.4204 11.38047,4.76852 6.3858,2.04685 11.2503,1.86188 15.9151,6.67887 2.81,2.90166 3.5701,7.19803 6.5533,9.92178 2.9238,2.66949 8.2821,2.67552 11.3234,5.20991 3.2219,2.68487 6.489,8.9036 10.4993,10.13146 6.1657,1.88784 15.0517,-3.37008 20.3629,-3.45269 m -125.7786,21.88188 c -1.90063,-5.19937 -4.89041,-13.74957 -4.42739,-19.59136 0.35317,-4.45628 4.67758,-13.02802 8.00826,-16.0083 2.82297,-2.52651 8.22104,-6.08103 11.76697,-7.41803 5.80356,-2.18825 8.36986,1.55842 10.87287,-4.11428 3.53084,-8.00216 16.68323,-16.58446 23.88229,-16.21684 m 11.6175,122.64303 c -2.7154,-4.82412 -6.4466,-6.21818 -11.08827,-9.79564 -3.54077,-2.72897 -6.06539,-5.78089 -9.96841,-7.96082 -3.30854,-1.84746 -7.32711,-2.48602 -10.71693,-4.17992 -5.54808,-2.77238 -12.25901,-7.10824 -16.54084,-11.59427 -6.04015,-6.32818 -10.11293,-19.29195 -12.58795,-26.06262 m 66.1852,138.08457 c -2.6459,-4.86239 -6.1318,-9.53805 -9.0853,-14.59992 -2.253,-3.86132 -3.7266,-9.17461 -5.52389,-13.26735 -1.52382,-3.46902 -3.94715,-10.03833 -3.89384,-13.82661 0.0873,-6.20022 5.73503,-14.94582 9.42443,-19.9313 5.2043,-7.03274 8.0909,-11.01136 4.5549,-17.29338 m -11.87001,143.99109 c 0.64872,-5.4977 1.34111,-13.68365 3.78261,-19.01066 1.8624,-4.06359 9.1895,-10.03582 13.343,-11.68838 3.5205,-1.40113 6.0844,-3.19201 9.3462,-5.12067 5.3385,-3.15663 2.1622,-1.32762 0.6863,-7.35097 -2.082,-8.49679 -6.5538,-15.98631 -9.9993,-22.31817 m -6.0581,153.04782 c -0.9272,-5.45789 -2.8861,-11.49897 -3.6281,-17.31217 -0.5661,-4.43446 0.046,-8.73395 -0.9217,-13.09847 -0.8208,-3.69947 -2.842,-7.06133 -3.88165,-10.7055 -1.70167,-5.96437 -2.95483,-12.45887 -3.57901,-18.62934 -0.88053,-8.70433 0.93002,-20.55225 1.77479,-27.71142 m 50.33597,164.50844 c -2.4067,-4.9855 -5.5463,-8.5299 -9.1248,-13.1708 -2.7298,-3.5401 -4.4269,-7.4747 -7.4859,-10.73479 -2.5932,-2.76315 -6.3953,-5.10999 -8.9185,-7.93719 -4.1296,-4.62722 -7.9163,-12.29931 -9.8148,-18.20355 -2.6781,-8.32875 -2.6901,-20.04379 -3.8975,-27.1511 m 12.7776,136.04543 c 4.8719,-2.6294 9.4834,-6.3165 14.5648,-9.2358 3.8763,-2.2269 7.5584,-2.9527 10.8848,-5.9392 2.8194,-2.5318 3.129,-4.9476 4.9749,-8.2567 3.0213,-5.416 3.018,-6.6213 2.6503,-12.8122 -0.5186,-8.7331 -2.6925,-16.4906 -5.8265,-22.9828 m -99.50081,71.0094 c 4.9445,2.4898 10.67341,4.5969 15.87814,7.2901 3.97033,2.0544 5.67229,4.2522 10.13304,4.5416 3.78115,0.245 4.76729,-1.322 8.24178,-2.8333 5.68666,-2.4736 9.15609,-4.7106 14.41961,-7.9911 7.42494,-4.6275 17.64954,-8.5995 23.99364,-12.0235 m -159.83467,-9.087 c 5.51571,-0.473 13.08562,-1.3066 18.88249,-0.4483 4.42203,0.6547 9.18402,2.8684 13.55769,3.7936 3.70739,0.784 7.89231,0.4125 11.61286,1.1327 6.08938,1.1787 12.27034,3.0242 18.10113,5.1383 8.22516,2.9821 18.18376,8.0226 24.62253,11.2649 m -169.29334,11.7608 c 4.81259,-2.7351 11.22777,-6.7163 16.83592,-8.4166 4.27805,-1.2971 9.03619,-1.2515 13.27652,-2.6677 3.59415,-1.2008 6.44642,-3.4817 9.90073,-5.0401 5.65362,-2.5505 9.58099,-4.6319 14.94866,-7.7385 7.57187,-4.3822 20.44662,-7.2951 27.62924,-7.9112 m -138.74158,100.176 c 3.36608,-4.3951 6.46436,-9.2268 9.84561,-14.0129 2.57929,-3.651 5.83056,-6.4685 8.06348,-10.3416 1.89238,-3.2831 2.95937,-7.371 4.82437,-10.6698 3.05243,-5.3992 7.14643,-10.8355 11.21357,-15.5177 5.73726,-6.6048 16.36685,-13.5409 22.63384,-17.1026 m -41.01758,156.0162 c -3.14386,-4.5561 -7.03498,-13.0136 -7.71006,-18.835 -0.51499,-4.4406 0.51483,-8.7563 -0.43066,-13.1255 -0.80181,-3.7035 -2.60734,-5.5878 -4.38873,-8.9323 -2.91557,-5.4738 -6.73196,-10.7421 -8.80275,-16.5876 -2.92116,-8.246 2.0771,-24.6383 6.46045,-30.3616 m 93.08114,84.4983 c -2.57196,4.9021 -4.24176,11.9248 -7.64938,16.6922 -2.59941,3.6368 -10.67242,8.0184 -15.00594,9.1151 -3.67318,0.93 -9.27138,2.4444 -13.06078,2.4355 -6.20207,-0.015 -15.12684,-2.573 -20.55511,-5.5716 -7.65735,-4.2298 -17.12732,-13.8891 -21.22129,-19.8222 m 142.9546,17.9013 c -5.11887,2.107 -15.73078,5.332 -21.3171,3.5626 -4.2614,-1.3498 -10.07518,-7.3025 -13.05882,-10.631 -2.52933,-2.8212 -6.0414,-5.1682 -8.58546,-7.9769 -4.16385,-4.597 -5.29526,-7.8234 -10.61965,-11.0033 -7.5108,-4.4856 -9.30317,-1.4899 -12.6524,4.8936 m 131.04292,-37.2978 c -4.69386,2.9342 -6.06851,7.3499 -9.81794,11.8539 -2.86014,3.4358 -7.65585,6.7184 -11.03383,9.6462 -2.86305,2.482 -4.38607,5.6229 -6.89544,8.4626 -4.10705,4.6477 -8.35631,9.1422 -12.99967,13.2538 -6.55011,5.8001 -17.72829,11.6871 -24.39414,14.4309 M 1022.326,1248.464 c -5.3447,-1.4432 -11.572,-1.8 -17.2052,-3.4165 -4.2972,-1.2331 -8.40753,-3.8406 -12.70989,-5.0553 -3.64696,-1.0293 -8.03254,-1.0609 -11.66581,-2.1378 -5.94652,-1.7625 -13.06232,-6.4674 -17.78188,-10.4912 -6.65762,-5.676 -10.07398,-10.9063 -16.18636,-7.0854 m 156.22894,59.7954 c -5.5332,0.1728 -13.332,0.7267 -19.0396,-0.6 -4.3539,-1.012 -10.4525,-5.9389 -13.8803,-8.8082 -2.9058,-2.4318 -5.7662,-3.6644 -9.0327,-5.5849 -5.3462,-3.1433 -9.7055,-4.5048 -15.3305,-7.1169 -7.9348,-3.6847 -16.2097,-8.4608 -23.1696,-10.3401 m 162.3117,8.1325 c -5.5316,-0.2097 -8.7285,2.1517 -14.2219,4.1911 -4.1906,1.5557 -7.9502,2.1337 -11.8159,4.3793 -3.2765,1.9038 -6.0699,4.9494 -9.2931,6.9422 -5.2754,3.2617 -13.2258,5.8427 -19.3494,6.8266 -8.6383,1.3879 -20.0005,0.8826 -27.2059,1.1077 m 162.9232,4.5377 c -5.5115,-0.5193 -12.7897,-0.7346 -18.4285,-2.3309 -4.3015,-1.2176 -8.2871,-3.8462 -12.6188,-4.9514 -3.6719,-0.9364 -8.4425,-1.3838 -12.0158,-2.645 -5.8484,-2.0641 -11.6466,-5.6588 -16.9651,-8.8493 -7.5025,-4.5008 -13.7725,-9.8052 -20.9758,-10.0783 m 161.1906,-9.7689 c -3.8646,3.964 -7.568,9.6554 -12.0295,13.4551 -3.4034,2.8985 -8.5062,5.1316 -12.2219,7.6172 -3.1494,2.1072 -5.9742,5.2045 -9.1066,7.3373 -5.1267,3.4906 -12.1189,6.6471 -18.0623,8.4193 -8.3839,2.5 -21.5074,1.604 -28.6846,0.9277 m 152.6761,-68.4097 c -5.5215,-0.4014 -10.4644,0.9566 -16.3008,1.4863 -4.4521,0.4041 -8.1271,-0.2147 -12.4149,1.0501 -3.6344,1.0724 -5.9052,3.2792 -9.2688,5.0248 -5.505,2.8572 -9.8545,4.9977 -15.212,8.1219 -7.5577,4.4072 -14.966,9.1999 -19.9984,14.3619 m 135.1485,-5.3698 c -2.0435,-5.145 -3.1385,-7.9723 -7.5954,-11.775 -3.3999,-2.9009 0.6202,-3.5372 -1.827,0.2036 -2.0741,3.1711 -13.5797,8.2081 -17.0924,6.7882 -5.7491,-2.324 -8.8913,-9.4841 -13.9825,-13.0247 -7.1819,-4.9944 -14.2031,-7.2135 -21.3932,-7.7361 m 140.4138,52.2568 c -5.521,0.4091 -11.8881,1.9236 -17.7473,1.9686 -4.4695,0.034 -7.6867,-0.256 -12.0068,0.8943 -3.6617,0.9755 -8.3753,3.3586 -12.1386,3.7981 -6.1592,0.7194 -18.2004,-4.0246 -22.3722,-8.6131 -5.885,-6.4728 -10.7879,-18.3823 -13.4489,-25.0822 m 118.5307,74.8016 c -2.1296,-5.1101 -5.3269,-13.425 -5.1925,-19.2836 0.1025,-4.4691 2.1447,-8.7407 1.9384,-13.2061 -0.1754,-3.785 -0.9988,-4.2715 -3.13,-7.4039 -3.4882,-5.1268 -4.7874,-4.1199 -10.7351,-5.8764 -8.39,-2.4777 -16.5726,-3.3987 -23.7621,-2.866 m 61.5046,131.2945 c -1.4515,-5.3424 -4.1384,-12.1015 -4.675,-17.9374 -0.4093,-4.4517 0.7684,-9.2518 0.3424,-13.702 -0.3615,-3.7721 -1.8951,-6.9337 -2.7086,-10.6349 -1.3315,-6.0577 -2.1966,-10.1765 -4.3269,-16.0011 -3.0052,-8.2165 -5.6781,-18.0638 -8.4512,-24.7182 m 70.6352,153.6476 c -4.5959,-3.086 -10.682,-4.143 -15.6683,-7.222 -3.8036,-2.3488 -9.0399,-8.2015 -11.2703,-12.0742 -1.891,-3.2825 -3.556,-7.9449 -4.9102,-11.4839 -2.2164,-5.7922 -6.201,-7.9294 -9.4446,-13.2146 -4.5756,-7.4555 -6.7918,-19.9307 -8.6819,-26.8876 m 135.0965,80.6508 c -4.9182,2.5411 -11.382,6.0958 -17.0184,7.6999 -4.2995,1.2237 -9.648,1.3756 -14.038,2.2191 -3.7211,0.7153 -8.5372,2.7113 -12.3207,2.9161 -6.1926,0.3351 -16.1494,-1.9374 -21.3849,-5.2612 -7.3854,-4.6887 -13.8888,-14.047 -19.8736,-18.0656 m 156.0511,-40.577 c -2.3561,5.0097 -4.802,12.7108 -8.6388,17.1401 -2.9267,3.3789 -9.2876,6.6429 -13.2258,8.7578 -3.3381,1.793 -7.0907,4.73 -10.566,6.2412 -5.688,2.4734 -10.4631,3.6694 -16.0308,6.4014 -7.854,3.8538 -16.9494,8.4452 -23.3539,11.7543 m 136.7322,-88.3293 c -5.5243,-0.361 -9.3653,0.5413 -15.0204,2.0781 -4.3139,1.1724 -8.2025,1.1235 -12.2512,3.0192 -3.4316,1.6072 -5.6887,4.3752 -8.8805,6.418 -5.2241,3.3432 -9.8999,5.6045 -15.0967,8.9879 -7.3307,4.7726 -11.3882,10.6369 -14.4564,17.1606 m 140.4735,-82.9298 c -1.538,5.3172 -4.2668,13.2091 -7.7053,17.9544 -2.623,3.6198 -7.5516,7.011 -10.7574,10.1267 -2.7171,2.6413 -5.9115,6.7275 -8.9876,8.9402 -5.0346,3.6216 -13.1828,6.4885 -19.2609,7.7216 -8.5741,1.7395 -20.8064,0.1239 -28.0003,-0.3462 m 40.9304,-119.6736 c -1.4514,5.341 -0.5817,6.2666 2.6183,11.176 2.441,3.7451 3.9193,6.7998 7.1419,9.8981 2.7319,2.6261 7.2627,5.4741 9.5592,8.4883 3.7588,4.9333 7.4225,9.7456 10.6462,15.0436 4.5475,7.4734 4.9818,23.5048 2.9789,30.4289 m 36.5525,-114.3447 c -4.3071,3.478 -10.1393,9.2067 -15.566,11.4185 -4.1397,1.6874 -10.0141,1.7959 -14.3586,2.8498 -3.6824,0.8937 -7.0777,2.8446 -10.7075,3.9326 -5.9409,1.7807 -9.1696,2.2391 -14.3972,5.5752 -7.3743,4.7061 -13.418,8.3501 -15.3081,15.3053 m 64.9235,-120.4915 c 1.2873,5.3838 3.2743,7.4593 7.2849,11.7323 3.0594,3.2596 6.4957,8.6197 8.5773,12.5757 1.7649,3.3531 4.4993,7.4313 5.8739,10.9627 2.2499,5.7798 3.4238,15.9935 1.9095,22.0066 -2.1361,8.4824 -13.1702,18.926 -18.779,23.4551 m -40.6308,-146.4469 c 5.514,-0.4937 13.1377,-2.568 18.9303,-1.6804 4.4187,0.677 13.0671,6.9161 15.1685,10.8603 1.7815,3.343 1.8345,11.5115 1.2363,15.2533 -0.9792,6.124 0.2213,10.1437 0.234,16.3457 0.018,8.7488 -2.3282,18.1272 -0.652,25.1381 m -120.7482,-48.5463 c 2.3544,-5.0103 13.5677,-15.6065 19.324,-14.5149 4.3911,0.8327 7.6042,4.5913 12.0687,4.786 3.7844,0.1646 6.1289,-1.6399 9.825,-2.476 6.0493,-1.3686 11.553,-2.7327 17.6695,-3.7602 8.6281,-1.4494 19.8411,0.105 27.0216,-0.538 m -145.4761,9.2028 c 5.1716,1.9755 12.9885,5.0692 17.4327,8.8888 3.3902,2.9136 5.565,7.6543 8.9176,10.6115 2.8421,2.5064 4.6896,2.6568 8.2741,3.8858 5.8668,2.0114 6.4938,1.4903 12.3555,-0.5347 8.2687,-2.8564 10.3097,-8.6562 13.3757,-15.1807 m -124.4525,-50.9963 c 2.3223,5.0252 5.2862,9.7795 8.0781,14.9317 2.1298,3.9302 2.1479,6.8687 5.6532,9.6426 2.9715,2.3509 5.5488,2.4682 9.0754,3.8549 5.772,2.2695 10.3542,3.5978 16.253,5.5129 8.3212,2.7014 17.9918,7.6247 24.7263,10.1972 m -89.8549,-114.1171 c 1.49,5.33163 0.038,16.18367 -2.6539,21.38884 -2.0537,3.97066 -5.1261,5.38006 -5.4123,9.84056 -0.2421,3.781 1.1368,2.7993 3.6295,5.6532 4.0798,4.6708 7.8285,6.1216 12.7354,9.914 6.922,5.3499 13.9554,17.0028 16.9795,23.5466 m -99.0439,-116.34929 c 5.4912,0.70088 11.3516,0.54256 17.1828,1.1276 4.4483,0.44626 9.502,2.32961 13.8887,3.18928 3.7184,0.72831 9.6841,1.62773 13.0598,3.34932 5.5251,2.81771 11.9826,7.82471 16.1164,12.44787 5.8312,6.52162 10.7388,19.18356 12.6791,26.12646 m -101.2464,-93.56108 c 2.2511,5.05717 4.9295,19.00172 1.2711,23.57667 -2.7907,3.48992 -7.4198,3.00133 -8.5448,7.3273 -0.9532,3.66697 -0.2659,3.69501 1.2778,7.15457 2.5266,5.66222 3.2014,3.6437 9.206,5.1956 8.4703,2.18916 17.8485,4.01774 24.9992,4.93043 m -103.623,-94.4186 c 5.2324,1.8081 11.2773,2.36757 16.8412,4.20834 4.2444,1.40417 8.2125,4.14164 12.4734,5.49468 3.6117,1.14653 7.9136,1.40826 11.517,2.58078 5.8976,1.91904 13.3113,5.99817 17.984,10.07584 6.5916,5.75212 12.871,17.64309 15.8024,24.22858 m -154.2536,-82.69144 c 5.4724,0.83603 13.1156,1.70996 18.5269,3.95996 4.1279,1.71635 8.0805,5.26368 12.0997,7.22094 3.4071,1.6587 7.4776,2.49078 10.9091,4.09864 5.6164,2.63157 10.7851,5.75325 16.0968,8.95509 7.4929,4.51662 14.9048,10.33739 21.7186,12.6919 m -166.712,-33.47656 c 3.916,-3.91284 16.3627,-8.88707 21.976,-7.20465 4.282,1.28337 8.7309,5.33754 12.775,7.24306 3.4281,1.61485 5.6503,1.43242 9.4136,1.87469 6.1594,0.72386 8.5755,-0.76938 14.5782,-2.32954 8.4676,-2.20084 21.3603,-3.26116 28.4866,-2.17247 m -130.9228,75.05468 c 2.9652,-4.67407 8.5859,-11.14642 13.3563,-14.55066 3.639,-2.59687 7.428,-3.47725 10.4558,-6.76558 2.5661,-2.78759 2.1016,-3.74632 2.7635,-7.47678 1.0832,-6.10559 -0.074,-12.673 1.8242,-18.57603 2.6774,-8.32706 10.8099,-19.38522 15.9093,-24.48056 m -102.5766,122.54913 c 5.403,-1.20565 10.25,-3.68448 15.8087,-5.53921 4.2404,-1.41487 8.0888,-1.47572 11.9905,-3.65789 3.307,-1.85003 5.1147,-4.51031 8.0356,-6.92457 4.7806,-3.95139 6.2036,-6.09536 9.2984,-11.46964 4.3658,-7.58119 10.0085,-16.55502 13.8698,-22.64164 m -140.6619,45.98438 c 4.9805,2.41694 9.7279,2.58879 15.4466,3.86906 4.3623,0.9766 7.8748,2.97728 12.3347,3.28546 3.7803,0.26085 7.0202,-0.80616 10.8,-1.07728 6.1863,-0.44374 11.806,-0.35911 18.0067,-0.48773 8.7469,-0.18147 18.2248,1.07921 25.2606,-0.4908 m -112.6466,-76.84802 c 1.1641,5.4124 3.643,10.9524 4.9204,16.67199 0.9744,4.36305 0.7271,8.70626 2.0984,12.96123 1.1627,3.60657 3.4385,7.299 4.5569,10.91969 1.8305,5.92593 2.415,10.60335 4.6761,16.37743 3.1897,8.14515 7.6803,12.45526 14.1659,15.60262 M 1143.031,767.87283 c 2.4264,4.97578 6.2371,10.60671 8.2437,16.11269 1.5307,4.20011 1.6791,9.25212 3.1285,13.48108 1.229,3.58451 3.5823,7.05518 4.8552,10.62458 2.0834,5.84198 3.6006,12.18788 4.6899,18.29357 1.5367,8.61294 1.359,19.08991 2.8749,26.138 m -76.4916,-153.58917 c 2.912,4.70809 7.0954,6.8246 11.3901,10.81217 3.2762,3.04181 5.816,7.15955 9.1084,10.18362 2.791,2.56305 6.9358,5.40231 9.3906,8.2894 4.0177,4.72527 7.7661,10.08493 10.9374,15.41489 4.4736,7.51867 7.9302,18.14145 11.09,24.62096 m -70.6888,-145.44601 c 5.5349,-0.0861 18.8145,3.25752 21.6418,8.38881 2.1567,3.91428 0.2596,13.77958 -0.9384,18.08633 -1.0152,3.65068 -0.7898,6.78968 -1.1781,10.55875 -0.6357,6.16876 -1.0088,12.02425 -2.1362,18.12283 -1.5903,8.60292 -3.1495,15.29551 0.6424,21.42643 M 996.08312,590.43237 c 5.52838,0.28232 13.76148,0.56512 19.22928,2.67211 4.171,1.60725 9.1126,6.50303 12.5498,9.36089 2.9137,2.42215 6.7386,4.65618 9.5595,7.18668 4.6169,4.14163 6.8745,7.2492 12.2244,10.38576 7.5468,4.42455 14.7192,3.7538 21.9268,3.6417 m 1952.0059,8.2165 c 5.1543,0.0801 8.3635,3.34959 12.7626,3.74269 6.6789,0.59689 15.8153,-5.53063 21.0642,-9.70278 3.1618,-2.5132 7.8371,-4.07845 10.356,-7.23653 2.4687,-3.09522 1.8129,-7.99892 4.8821,-10.49897 3.2515,-2.64848 6.9533,-0.23004 10.9823,-1.39498 6.1945,-1.79107 10.7129,-6.15328 16.0178,-6.42435 m -86.9641,103.27805 c 2.7135,-4.38324 6.8605,-8.53208 7.727,-12.86225 1.3158,-6.57427 -2.7744,-14.7019 -3.6083,-21.35579 -0.5023,-4.00816 1.5913,-8.45897 0.5157,-12.3521 -1.0543,-3.8156 -5.9369,-6.4593 -6.965,-10.28228 -1.0891,-4.04996 1.8806,-4.5093 3.7848,-8.24533 2.9277,-5.7441 4.0598,-5.87494 9.3711,-5.79242 m -63.0889,139.02115 c 2.2576,-4.63464 6.136,-6.031 8.5616,-9.72215 3.6827,-5.60406 4.6379,-12.35581 8.6097,-17.75888 2.3926,-3.25469 6.4342,-5.04023 8.5047,-8.50889 2.0292,-3.3996 0.9274,-7.79134 3.8712,-10.43851 3.1185,-2.80434 8.3325,-1.63733 11.7851,-4.01934 5.3082,-3.66231 8.8466,-12.65526 11.6427,-17.17191 m -76.9387,150.00699 c 1.0858,-5.03987 4.4069,-7.79719 5.5649,-12.05964 1.7582,-6.47146 0.4741,-13.45144 2.1525,-19.94384 1.011,-3.91089 4.1619,-6.92906 4.8715,-10.90585 0.6954,-3.89762 -2.0342,-7.94412 -0.712,-11.67578 1.4006,-3.95322 6.2747,-5.34028 8.2608,-9.03454 3.0537,-5.67989 2.259,-13.55503 4.5854,-18.33072 m -60.3691,160.00856 c 4.638,-2.25077 9.8236,-2.33397 13.4126,-4.9081 5.4489,-3.90812 8.2914,-14.01956 10.249,-20.43308 1.1792,-3.86336 4.1528,-7.39533 4.6867,-11.39939 0.5232,-3.92434 -2.3571,-7.78557 -1.1046,-11.5412 1.3269,-3.97862 6.4441,-6.14237 7.9363,-10.06249 2.2942,-6.02712 0.1888,-14.27766 1.3078,-19.47092 m -124.089,82.80194 c 5.0315,1.12276 8.3743,4.27291 12.722,5.05103 6.6009,1.18146 13.9256,-1.02716 20.624,-0.71343 4.035,0.189 8.0546,2.41742 12.076,2.03534 3.9413,-0.3745 7.3645,-4.3959 11.3166,-4.62898 4.1868,-0.24693 8.4731,3.48003 12.6551,3.15955 6.4298,-0.49273 13.7556,-6.75834 18.5348,-9.07761 m -151.9201,-50.48519 c 2.7614,4.3527 1.4518,8.14323 3.0187,12.27258 2.3788,6.26944 7.5492,12.05439 11.2175,17.66767 2.2096,3.38134 4.8948,8.87686 8.3916,10.89936 3.4271,1.9822 8.6099,0.75339 12.0455,2.72063 3.6396,2.08404 5.4495,7.58063 9.1969,9.46443 5.7615,2.89631 14.6876,1.31764 19.8722,2.47457 M 2706.7674,811.64065 c 3.6437,3.64682 2.0409,7.07505 3.6805,11.17596 2.4892,6.22626 7.3553,9.8784 7.58,16.58042 0.1353,4.03716 -2.0237,9.35388 -0.6657,13.15742 1.331,3.7278 7.589,6.39435 10.2408,9.33333 2.8093,3.11348 3.1565,8.69991 6.1865,11.60045 4.6586,4.45954 11.8085,5.00698 14.6539,9.49215 m -121.2212,-72.28227 c 5.0962,-0.77855 6.812,2.56439 11.0705,3.73532 6.4654,1.77783 13.2391,1.72347 19.7641,3.26781 3.9305,0.93029 9.9851,3.62537 13.8633,2.49623 3.8009,-1.10669 6.6082,-6.44452 10.1844,-8.14309 3.7885,-1.79941 7.5319,0.71024 11.6494,-0.089 6.3305,-1.22873 8.598,-3.50745 12.3526,0.25036 M 2549.18,846.39807 c 4.8727,-1.68377 9.5191,-0.54427 13.6126,-2.20275 6.215,-2.51794 11.1525,-8.29197 17.0468,-11.48977 3.5507,-1.92627 8.0152,-1.88917 11.3389,-4.1851 3.2575,-2.25024 4.1756,-7.10875 7.7522,-8.80608 3.789,-1.79811 8.2449,0.82747 12.2698,-0.35225 6.1883,-1.8138 10.8431,-6.98864 16.0944,-7.79088 m -148.2234,76.13497 c 2.0963,-4.70945 5.4728,-5.20377 8.4746,-8.4435 4.5577,-4.91869 6.5659,-10.26734 12.3689,-13.62733 3.4957,-2.02398 7.2777,-1.37465 10.8589,-3.24324 3.5098,-1.83141 5.0193,-6.4184 8.8045,-7.57851 4.0099,-1.229 8.3306,1.95802 12.4542,1.19018 6.3399,-1.18054 12.3551,-7.02489 17.3761,-8.75991 m -105.7774,93.14427 c 5.1137,-0.65268 8.3802,1.94507 12.797,1.9777 6.7058,0.0496 14.7236,-3.5111 20.8987,-6.12382 3.7197,-1.57383 11.1663,-6.0266 12.1786,-9.93596 0.9921,-3.83153 -3.1081,-9.84286 -4.0657,-13.6837 -1.0145,-4.06889 -1.8075,-10.01886 -4.4839,-13.24785 -4.115,-4.96452 -3.2706,-6.40509 -1.1106,-11.25787 m -102.4161,91.66443 c 1.3875,-4.96504 4.6689,-5.7551 7.2833,-9.31456 3.9693,-5.40412 5.3927,-11.09485 10.6039,-15.31473 3.1391,-2.54196 7.0329,-2.41907 10.2779,-4.82473 3.1803,-2.35778 3.7548,-6.36007 7.6471,-7.08216 4.1233,-0.76497 7.3954,3.32556 11.5867,3.4868 6.4442,0.2479 13.5847,-4.79637 18.854,-5.46892 m -92.817,109.8657 c 2.1626,-4.6796 5.2432,-5.1229 8.392,-8.2199 4.7806,-4.7021 7.9618,-9.4201 13.5272,-13.1609 3.3524,-2.2534 9.168,-4.2836 11.2848,-7.7237 2.0747,-3.3716 0.6002,-10.3507 0.3866,-14.3032 -0.2262,-4.1872 1.6138,-9.7543 0.2626,-13.72484 -2.0774,-6.10464 -7.8933,-8.80542 -6.4635,-13.92157 m -96.4662,119.08651 c 4.816,-1.8397 8.4416,-0.1598 12.7633,-1.0716 6.5615,-1.3842 12.397,-5.7382 18.8506,-7.5594 3.8875,-1.097 9.0923,-0.722 12.5549,-2.8021 3.3937,-2.0388 4.909,-7.5188 8.0378,-9.9439 3.3147,-2.569 9.5201,-3.7598 12.0261,-7.123 3.8529,-5.1709 3.3835,-14.289 5.6119,-19.111 m -140.9073,50.3526 c 2.1925,4.6658 1.0717,9.28 2.9453,13.2791 2.8445,6.0718 14.5422,9.9688 21.1497,11.1101 3.9802,0.6876 11.1353,1.9048 14.6867,-0.02 3.4806,-1.8863 5.2124,-7.8853 8.1258,-10.5659 3.0864,-2.8397 8.0099,-1.961 11.4576,-4.3497 5.3008,-3.6725 7.9906,-9.4617 12.9532,-11.3574 m -149.7049,-10.3227 c 5.1349,0.4598 8.1114,2.9319 12.4592,3.709 6.6011,1.1798 13.0647,-0.1224 19.5797,1.4661 3.9245,0.9569 7.6924,4.0463 11.7255,4.273 3.9528,0.2221 8.2128,-2.9882 12.168,-3.1207 4.1901,-0.1405 8.4649,2.0928 12.6309,1.6102 6.4053,-0.742 6.7473,-0.2019 9.0066,4.6059 m -103.7249,46.1765 c 1.1987,-5.0137 4.0875,-8.7485 4.6435,-13.1299 0.8442,-6.6522 -2.0211,-13.4508 -1.3133,-20.1191 0.4264,-4.0169 2.5174,-9.7348 1.2282,-13.5627 -1.2637,-3.7518 -6.5974,-5.0098 -4.7014,-8.4837 2.0086,-3.6802 4.5223,0.267 8.7113,0.058 6.4406,-0.3217 12.1576,-3.091 17.4488,-2.6172 m -34.6215,130.1093 c -4.0086,-3.2418 -3.6921,-6.6564 -6.0956,-10.3614 -3.6491,-5.6252 -7.3089,-8.2277 -6.7806,-14.912 0.3183,-4.0265 3.0258,-6.2511 3.8477,-10.2061 0.8054,-3.8763 -2.1794,-7.7779 -0.08,-11.1331 2.2243,-3.5543 7.2988,-2.3389 10.5778,-4.9545 5.0415,-4.0214 6.7356,-15.2593 7.9708,-20.4256 m 63.1491,115.9548 c -1.3516,-4.9739 -2.0308,-10.5852 -4.5854,-14.1881 -3.8785,-5.4701 -12.6883,-9.4635 -18.8361,-12.1412 -3.7032,-1.613 -7.6778,-5.033 -11.6858,-5.5355 -3.9282,-0.4923 -7.9437,2.5931 -11.7817,1.6217 -4.0658,-1.0291 -5.2999,-5.6882 -8.9961,-7.6709 -5.6827,-3.0484 -11.9773,-3.3493 -16.1079,-6.6898 m 38.1389,119.7217 c -1.436,-4.9505 0.9943,-6.37 2.1664,-10.6282 1.7797,-6.465 2.4124,-11.2335 6.4846,-16.5614 2.4531,-3.2094 6.7172,-5.3518 8.5994,-8.9259 1.8448,-3.5029 0.8867,-7.4522 3.7681,-10.1672 3.0524,-2.8761 9.0621,-2.6881 11.9921,-5.6888 4.5048,-4.6134 3.0954,-18.1922 1.7026,-23.3175 m 30.6933,114.0912 c -5.1445,0.3362 -7.968,-2.0059 -12.355,-2.5157 -6.6606,-0.774 -12.2857,0.1607 -18.5886,-2.1286 -3.7967,-1.3791 -5.4125,-4.4252 -9.0368,-6.2084 -3.5522,-1.7478 -7.7673,-0.2174 -10.4855,-3.0957 -2.8796,-3.0492 -1.4459,-7.7385 -3.5508,-11.3664 -3.2363,-5.5778 -9.0539,-8.5718 -10.5336,-13.673 m 138.3229,82.1474 c -2.1905,-4.667 -1.4396,-9.4722 -3.5275,-13.3643 -3.17,-5.9092 -12.1397,-9.9251 -17.8465,-13.4467 -3.4377,-2.1213 -5.8354,-6.2019 -9.5514,-7.786 -3.6419,-1.5525 -8.4244,0.092 -11.9928,-1.6225 -3.7801,-1.8167 -5.8334,-7.2583 -9.6816,-8.9268 -5.9165,-2.5653 -15.8686,0.7642 -21.1697,1.1106 m 141.0859,90.9332 c -4.5792,-2.368 -5.3888,-6.4378 -8.8667,-9.1603 -5.2803,-4.1335 -13.2122,-5.8208 -19.3543,-8.5117 -3.6999,-1.6209 -6.7824,-4.8442 -10.6771,-5.9156 -3.8172,-1.0501 -7.9823,1.3886 -11.4516,-0.518 -3.6753,-2.0198 -2.4418,-6.4116 -4.8765,-9.8267 -3.7432,-5.2507 -9.0162,-8.4731 -11.2734,-13.2821 m 142.396,38.0667 c -4.2801,2.8734 -8.7465,3.187 -12.3307,5.7684 -5.4416,3.919 -7.952,9.5282 -14.3412,11.5637 -3.8486,1.2261 -6.2482,-0.8942 -10.2812,-0.6703 -3.9527,0.2194 -7.0092,3.7437 -10.8569,2.8121 -4.0762,-0.9869 -5.7064,-5.8604 -9.5344,-7.5746 -5.8854,-2.6356 -13.3785,-1.0602 -18.097,-3.5003 m 122.6314,-73.9264 c -1.4766,4.9394 -4.9522,6.8725 -6.8232,10.8734 -2.8408,6.0743 -3.347,11.7692 -7.6499,16.9126 -2.5919,3.0982 -7.9056,7.0463 -8.7046,11.0057 -0.783,3.8806 3.1333,8.0295 1.1236,11.439 -2.1291,3.6119 -6.6241,0.9295 -10.4063,2.7424 -5.8151,2.7873 -10.7563,8.8342 -15.1667,11.795 m 68.5743,-148.4757 c -1.9799,4.7601 -5.8286,6.4465 -7.9771,10.3056 -3.2621,5.8591 -3.9196,13.6208 -6.0007,19.995 -1.2537,3.8397 -4.3054,7.983 -4.5074,12.0175 -0.1979,3.9541 3.2873,7.8793 2.8704,11.8163 -0.4418,4.1708 -4.9383,6.9844 -5.801,11.0891 -1.3265,6.311 1.0128,13.1473 -0.38,18.2738 m 71.6463,-136.9237 c -5.1414,-0.381 -8.6101,-3.3002 -13.0129,-3.6499 -6.6847,-0.5309 -15.3618,3.1515 -21.4491,5.9623 -3.6668,1.6931 -10.7023,4.6138 -12.3917,8.2822 -1.6557,3.5953 1.1442,9.8728 0.9169,13.8249 -0.2409,4.1868 -4.1489,7.7505 -4.474,11.9321 -0.4998,6.4292 1.8165,11.7785 -0.2236,16.6835 m 120.0965,-73.9483 c -1.9029,4.7913 -4.9972,5.903 -7.6651,9.4227 -4.0506,5.3437 -4.853,11.0055 -10.8783,13.9463 -3.6295,1.7714 -5.4272,-0.3598 -9.461,-0.1577 -3.9534,0.1981 -6.8914,3.0725 -10.7067,2.0152 -4.0418,-1.12 -7.0891,-6.3395 -11.1855,-7.2389 -6.2981,-1.3829 -14.143,2.4509 -19.4408,2.0583 m 139.0222,-50.5084 c -5.1419,0.3738 -9.5742,-1.6282 -13.9269,-0.8787 -6.6085,1.1378 -14.3709,7.5594 -18.9008,12.5038 -2.7287,2.9785 -4.737,3.3559 -8.1791,5.4686 -3.3736,2.0706 -2.379,3.7852 -4.5128,0.4507 -2.2604,-3.5325 -10.7552,-9.6586 -14.6535,-8.1148 -5.9937,2.3736 -8.341,15.7172 -10.3018,20.6543 m 150.2398,3.2185 c -3.5988,-3.6915 -4.235,-8.1808 -7.2922,-11.3685 -4.6415,-4.8398 -12.6883,-7.228 -18.4688,-10.6262 -3.482,-2.0471 -6.5254,-5.9579 -10.3695,-7.1994 -3.7675,-1.2167 -8.6036,1.0694 -12.3894,-0.089 -4.0105,-1.2271 -6.8251,-6.2019 -10.8723,-7.3034 -6.2225,-1.6934 -15.0777,2.0227 -20.376,2.4079 m 152.5679,70.1713 c -5.1325,0.4836 -7.4556,-2.2408 -11.7914,-3.0815 -6.5829,-1.2764 -12.3706,-0.297 -18.4749,-3.0727 -3.6771,-1.672 -5.5986,-5.1711 -9.2679,-6.8603 -3.5963,-1.6556 -8.2326,0.038 -11.5008,-2.1967 -3.4623,-2.367 -2.8675,-7.3157 -5.6382,-10.4646 -4.2599,-4.8415 -11.7502,-7.0802 -15.4585,-10.884 m 153.6768,8.5372 c -5.1513,0.1953 -10.5719,-1.1965 -14.7542,0.2223 -6.3498,2.1539 -11.5364,8.1522 -17.48,11.2574 -3.5803,1.8704 -7.5509,1.5693 -11.0847,3.5257 -3.4636,1.9176 -4.7332,6.4139 -8.579,7.3539 -4.0742,0.9958 -8.1938,-2.2509 -12.3517,-1.6984 -6.3928,0.8494 -12.0287,5.9876 -17.3175,6.4859 m 164.0544,-2.8381 c -5.1528,-0.161 -7.7016,-3.2106 -12.019,-4.1419 -6.5549,-1.4139 -13.1153,0.3585 -19.5195,-1.6289 -3.8578,-1.1971 -5.6183,-4.5294 -9.3585,-6.0555 -3.6657,-1.4958 -8.1887,0.2523 -11.5919,-1.7708 -3.6052,-2.1432 -4.8291,-7.6428 -8.4066,-9.8321 -5.5004,-3.366 -16.2566,-1.9564 -21.5647,-1.7552 m 160.4901,-6.0892 c -4.9772,1.3439 -9.2294,-0.2485 -13.4969,0.8905 -6.4792,1.7291 -12.1848,6.7877 -18.3902,9.3296 -3.738,1.5311 -9.279,1.7494 -12.3739,4.3449 -3.0333,2.5438 -3.3021,8.1984 -6.3632,10.7087 -3.2428,2.6592 -6.1326,-0.1991 -10.292,0.3421 -6.3949,0.832 -11.7166,4.9519 -17.0262,4.7861 m 160.2269,-56.8514 c -4.3711,-2.7325 -11.8468,-5.7285 -16.0988,-4.535 -6.4558,1.8118 -11.3119,9.8686 -16.8911,13.5884 -3.3608,2.2407 -6.7799,1.3542 -10.4093,3.1276 -3.5572,1.7381 -5.2231,6.1513 -9.0438,7.1886 -4.0476,1.0988 -8.1497,-2.2165 -12.3057,-1.6491 -6.3898,0.8723 -12.5767,6.4845 -17.7055,7.8694 m 145.8991,32.1785 c -4.767,-1.9621 -5.2151,-5.7941 -8.5971,-8.635 -5.1346,-4.3132 -11.0584,-6.472 -15.6485,-11.3607 -2.7651,-2.9449 -3.9763,-7.4208 -7.1155,-9.9632 -3.0767,-2.4918 -8.2483,-2.0885 -11.2134,-4.7113 -3.1413,-2.7786 -1.5854,-7.5282 -3.7795,-11.1031 -3.3733,-5.4962 -12.0723,-9.8887 -16.5765,-12.7043 m 133.0222,41.8639 c -2.3951,-4.565 -4.4196,-11.3781 -8.2013,-13.6592 -5.7415,-3.4633 -18.6341,2.8239 -23.5419,7.3929 -2.9563,2.7523 -7.4634,4.9568 -9.6291,8.3668 -2.1226,3.3422 -0.9174,8.1466 -3.7291,10.9336 -2.9785,2.9524 -6.2383,0.674 -10.2825,1.7854 -6.2179,1.7087 -9.4075,3.0308 -14.3195,1.009 m 132.3762,-13.2726 c -2.9278,4.2429 -6.542,3.4099 -10.2649,5.7858 -5.6523,3.6071 -8.85,8.6584 -15.2617,10.6218 -3.8624,1.1828 -6.8977,-0.4567 -10.8798,0.2215 -3.9028,0.6648 -6.3044,4.2953 -10.1321,3.2854 -4.055,-1.0699 -2.0212,-4.8689 -4.1295,-8.4945 -3.2414,-5.5744 -8.7348,-9.6246 -11.2028,-14.3286 m 77.732,-74.8717 c 2.9816,4.2054 1.6133,6.1507 1.9231,10.5562 0.4703,6.6887 0.7691,10.4902 -2.6094,16.2826 -2.0351,3.4893 -6.2895,6.271 -7.5719,10.1013 -1.2569,3.7541 1.2588,8.8881 0.3825,12.7487 -0.9283,4.09 -5.4686,6.841 -6.5437,10.8953 -1.653,6.2334 0.8899,12.2783 -2.127,16.6502 m -36.7859,-143.1946 c 4.4817,2.5471 4.6885,6.1786 7.7217,9.3891 4.6051,4.8744 10.0778,7.6854 13.904,13.1926 2.3047,3.3174 2.7246,7.5173 5.2674,10.6561 2.4923,3.0762 7.3047,3.6717 9.2474,7.1214 2.0581,3.6544 0.1092,8.6774 1.8717,12.4837 2.7097,5.852 11.4297,9.4769 14.6597,13.6943 m -131.464,-98.0608 c 5.1365,0.4405 6.3222,3.0211 10.1951,5.144 5.88,3.2231 12.1614,4.8279 17.9803,8.1602 3.5052,2.0073 6.9019,5.8826 10.8083,6.9112 3.8286,1.0081 8.317,-1.5057 12.0593,-0.2138 3.9645,1.3686 5.6781,6.3451 9.4762,8.1246 5.8396,2.7359 13.1706,1.5029 17.7887,4.1275 m -160.6214,-13.1353 c 4.6045,-2.3186 8.1427,-0.4766 12.4365,-1.5121 6.519,-1.5721 12.0198,-6.2375 18.4951,-7.9807 3.9006,-1.05 8.1583,0.054 11.9425,-1.3593 3.7088,-1.3856 5.7512,-5.7928 9.6546,-6.4535 4.1351,-0.7 7.6449,2.9098 11.8391,2.8963 6.4485,-0.021 12.5182,-4.2974 17.811,-3.8434 m -162.8439,6.4431 c 4.5363,2.4496 5.7564,6.174 9.2897,8.8241 5.3645,4.0236 12.3565,5.8797 18.0476,9.426 3.4283,2.1362 6.9548,6.3209 10.8744,7.2955 3.8415,0.9551 9.2585,-2.0412 13.2112,-2.2577 4.1874,-0.2292 9.7412,2.4027 13.7582,1.1965 6.1761,-1.8545 11.0786,-9.4778 15.8233,-11.867 m -111.445,-83.3868 c -2.2411,4.6427 -6.3017,6.8483 -8.1924,10.8399 -2.8708,6.0603 -2.4201,15.6097 -1.7628,22.2826 0.3959,4.0196 0.7121,10.7518 3.2357,13.9056 2.4734,3.091 8.168,3.9137 11.0858,6.5894 3.0911,2.8346 3.8311,8.5942 7.1302,11.1844 5.0723,3.9824 13.8013,4.1839 18.4757,6.708 m 9.3765,-146.12512 c -0.8634,5.08262 -4.0303,7.56536 -5.306,11.79373 -1.9371,6.4197 -0.9439,12.76193 -3.8887,18.78634 -1.7738,3.62897 -5.157,4.80211 -7.3106,8.21955 -2.1106,3.34942 -1.2344,7.92148 -3.9724,10.78112 -2.9005,3.02943 -8.5596,2.74748 -11.5703,5.66788 -4.6289,4.4901 -5.7522,14.1483 -8.0616,18.9324 m 51.1435,-159.15427 c 0.606,5.11948 -2.0907,7.8493 -2.5625,12.24086 -0.7164,6.66749 1.2796,12.92944 -0.07,19.49806 -0.813,3.95681 -3.7905,7.23072 -4.2388,11.24538 -0.4392,3.93472 2.5751,7.89794 1.6801,11.7545 -0.9481,4.08554 -5.8761,6.70755 -6.9975,10.74927 -1.7243,6.21409 1.1928,14.04207 0.3031,19.27938 m -3.4136,-155.39715 c -2.6484,4.42309 -6.7601,5.65267 -9.3651,9.2196 -3.9551,5.41545 -5.7958,15.17359 -5.7759,21.87794 0.012,4.03857 3.6244,13.31458 7.3929,14.76874 3.6935,1.42519 8.7999,-1.21383 12.4624,0.28848 3.8801,1.59152 1.0437,4.49393 2.2272,8.51753 1.8196,6.18623 6.8581,10.72502 7.4825,16.00031 m -9.1426,-149.1647 c -2.5287,4.49243 -6.7842,10.51558 -6.2866,14.90332 0.7554,6.6617 8.7807,12.72167 12.1702,18.50741 2.0418,3.48522 1.2198,5.38981 1.9444,9.36287 0.7103,3.89395 3.7991,5.89492 2.171,9.50314 -1.7248,3.82246 -6.9329,4.04165 -9.52,7.34323 -3.9776,5.07613 -4.0239,13.84945 -6.5629,18.51534 m 67.1972,-136.08811 c -1.77,4.84188 -5.4789,6.22119 -7.7631,10.00123 -3.468,5.73903 -4.5293,10.72546 -10.0517,14.52924 -3.3266,2.2913 -7.5218,2.17585 -10.7864,4.55486 -3.1996,2.33166 -4.1728,7.03509 -7.6485,8.93064 -3.6821,2.0081 -9.0373,0.1896 -12.7553,2.13116 -5.7164,2.98513 -10.2347,12.69528 -12.8404,17.32443 m 20.5641,-109.54511 c 5.1547,0.0337 5.7895,2.3969 9.4941,4.80094 5.6245,3.65002 4.2682,10.86457 10.1119,14.1526 3.5201,1.98065 7.4975,5.38084 11.4612,6.16054 3.8848,0.76415 7.4848,-2.54825 10.1717,0.35775 2.8464,3.07855 -1.1159,5.45962 -1.1986,9.653 -0.1271,6.44728 2.2646,11.6028 0.4408,16.59204 m -116.2984,-28.42103 c 5.5349,0.086 10.7288,0.24685 16.5586,-0.34779 4.4471,-0.45363 6.0927,0.2003 9.5557,-2.62678 2.9351,-2.39664 3.9212,-5.27831 6.2581,-8.26158 3.8247,-4.88269 8.9794,-10.60675 14.1072,-14.09502 7.2336,-4.92072 21.8415,-5.80715 29.0406,-6.175 m -94.2592,107.62443 c 2.9139,-4.70688 2.5091,-7.76186 2.7197,-13.61795 0.1606,-4.46719 0.8916,-7.87492 0.069,-12.2692 -0.6977,-3.7247 -2.6684,-7.6208 -3.3377,-11.35071 -1.0956,-6.10467 -3.7912,-10.99518 -4.782,-17.11676 -1.3978,-8.63535 16.8489,-21.00473 24.0565,-20.89274 m -71.427,144.18504 c 2.4243,-4.97684 4.6417,-11.52169 7.8255,-16.44186 2.4286,-3.75325 6.0716,-6.83834 8.415,-10.64541 1.9861,-3.22723 3.1359,-7.18807 5.0496,-10.45899 3.1321,-5.35348 8.3369,-11.39627 13.106,-15.36118 6.7274,-5.59308 15.2515,-9.44241 19.046,-15.57175 m -78.1065,152.93689 c 1.1661,-5.41199 1.2634,-11.64587 2.5949,-17.35318 1.0157,-4.3537 3.3891,-8.41364 4.2448,-12.80154 0.7249,-3.71944 0.3055,-7.83929 0.9384,-11.57567 1.0358,-6.11528 2.8221,-12.49139 4.9257,-18.32576 2.9673,-8.23021 9.5868,-17.53922 12.7437,-24.0201 m -56.2181,155.83967 c 4.9805,-2.41695 7.7684,-5.06749 11.8329,-9.28865 3.1005,-3.22004 4.8791,-4.25828 6.0961,-8.55968 1.0312,-3.64615 0.3077,-6.94905 0.7268,-10.71546 0.6859,-6.16442 2.4097,-12.87037 4.4044,-18.7429 2.8138,-8.28405 7.0436,-17.22571 8.562,-24.27326 m -113.2807,75.83361 c 5.403,1.20566 10.8537,0.77235 16.6775,1.42555 4.4427,0.49825 8.4182,2.16101 12.8885,2.20845 3.7891,0.0398 7.1444,-1.37411 10.9136,-1.76567 6.169,-0.64086 11.5272,-1.07525 17.7074,-1.59397 8.7181,-0.73175 17.3662,-0.59699 23.8518,-3.74437 m -140.3097,-47.22489 c 2.9652,4.67408 6.9907,10.70658 9.1684,16.14751 1.6612,4.15048 1.6223,7.95037 4.1606,11.63024 2.1519,3.11899 3.9566,3.43475 7.1925,5.40689 5.2962,3.22777 9.3292,5.529 14.8542,8.34666 7.7939,3.97469 15.6696,8.44372 22.7055,10.01374 M 2713.1539,805.17451 c 3.9127,3.91609 8.9551,11.04298 11.115,16.49071 1.6476,4.15567 2.5478,10.3698 3.1048,14.80532 0.4725,3.75969 1.6911,7.04685 2.5398,10.73986 1.3891,6.04429 3.0586,6.16555 7.6136,10.3745 6.4255,5.93731 14.7309,14.43927 18.5922,20.5259 m -130.3291,-76.38762 c 5.4724,-0.83603 14.5683,-0.55445 20.1508,1.22856 4.2584,1.3601 7.8009,4.03416 12.1676,4.99129 3.7015,0.81092 5.7851,-0.21859 9.5467,-0.67625 6.1565,-0.74905 8.3219,-3.4709 13.9389,-6.10078 7.9235,-3.70985 25.8483,-0.47541 30.9435,4.62416 m -166.383,32.03745 c 5.2325,-1.8081 9.6687,-4.74176 14.9361,-7.3105 4.0181,-1.95953 8.3243,-2.69217 12.1477,-5.00901 3.2407,-1.96417 5.6699,-5.01777 8.7688,-7.19891 5.0721,-3.56986 10.9557,-7.11464 16.6551,-9.56008 8.0399,-3.44965 20.1331,-5.07618 27.2593,-6.16487 m -155.1772,81.48145 c 2.251,-5.05717 5.8911,-12.81949 10.0419,-16.95628 3.1664,-3.15567 8.48,-5.71121 12.1135,-8.31543 3.0797,-2.20775 6.5383,-5.60754 9.8171,-7.50759 5.3664,-3.1098 12.1713,-5.71508 18.1579,-7.33565 8.4449,-2.28607 18.7505,-2.9453 25.5643,-5.29983 m -104.0185,92.72999 c 5.4912,-0.70088 11.8185,-1.99847 17.6681,-2.35286 4.4623,-0.27037 7.4509,1.05121 11.5558,-0.71845 3.4794,-1.5004 2.9981,-1.73055 4.6224,-5.15242 2.6586,-5.60052 3.3344,-4.02509 -0.6483,-8.77741 -5.6182,-6.70381 -7.0099,-23.37437 -4.0785,-29.95987 m -102.8803,92.97314 c 1.49,-5.33164 4.2977,-13.45282 7.8466,-18.11594 2.7071,-3.55717 7.6588,-6.92786 10.9567,-9.94565 2.7953,-2.55829 5.4652,-6.33289 8.3992,-8.73104 4.8021,-3.92502 14.1784,-7.33366 20.3526,-7.91975 8.7096,-0.82679 19.1653,0.47696 26.316,-0.43573 m -99.9411,115.12578 c 2.3224,-5.0252 6.3079,-13.3156 10.8325,-17.0392 3.4515,-2.8405 8.5334,-4.5453 12.1494,-7.174 3.0649,-2.2285 4.0646,-4.4037 6.3333,-7.4389 3.7132,-4.9675 3.9091,-3.6733 2.0223,-9.5812 -2.6617,-8.33389 -6.3688,-21.56701 -4.4286,-28.50992 m -91.0098,113.06472 c 5.1716,-1.9755 11.3307,-5.0083 17.0176,-6.4241 4.3381,-1.08 8.7555,-0.7136 12.9767,-2.1852 3.578,-1.2477 5.8899,-3.4162 9.1901,-5.2788 5.4013,-3.0485 8.0583,-4.2707 12.2211,-8.8678 5.8723,-6.4848 10.462,-13.6564 13.4861,-20.2002 m -124.4551,50.2466 c 2.3545,5.0103 4.4323,8.9726 8.0791,13.5592 2.7819,3.4988 2.8741,4.3064 7.2887,5.0092 3.7421,0.5954 4.5548,-0.5752 8.0932,-1.9312 5.7912,-2.2192 6.9291,-4.8797 11.4675,-9.107 6.4019,-5.9633 18.2114,-11.4344 24.9459,-14.007 m -145.7101,-10.8875 c 5.514,0.4937 12.2165,-0.5756 17.9898,0.4308 4.404,0.7678 8.7707,3.2326 13.17,4.0276 3.7292,0.6734 7.3113,0.067 11.09,0.3537 6.1845,0.4696 8.7807,1.9712 14.7194,0.1848 8.3775,-2.5199 25.0122,6.2134 28.0782,12.7379 m -120.8057,47.9884 c 1.2873,-5.3839 0.322,-10.4067 0.6345,-16.2587 0.2383,-4.464 1.8073,-8.8837 1.8863,-13.3535 0.067,-3.7887 -0.4948,-5.8796 -1.5477,-9.5197 -1.7233,-5.9576 -0.9963,-20.8064 4.01,-24.465 7.062,-5.161 23.517,-1.9016 30.6975,-1.2587 m -41.1005,146.2693 c -4.3045,-3.4811 -11.1669,-9.1155 -13.8969,-14.3001 -2.0826,-3.955 -2.6974,-11.6174 -2.8602,-16.0844 -0.1384,-3.7865 -0.8198,-9.0242 -0.3241,-12.7811 0.8115,-6.1488 4.2344,-15.9058 8.4702,-20.4357 5.9752,-6.39 13.2018,-10.599 14.8781,-17.6099 m 63.238,120.5096 c -1.4515,-5.3411 -4.7789,-7.0881 -8.6986,-11.4446 -2.99,-3.3232 -3.9096,-5.8992 -7.9678,-7.7737 -3.4402,-1.5885 -6.2248,-0.8244 -9.9661,-1.4261 -6.1234,-0.9847 -12.3332,-1.7008 -18.2825,-3.4522 -8.3925,-2.4707 -18.4369,-11.3458 -24.0423,-15.8791 m 35.1453,115.2422 c -1.5421,-5.3161 -2.56,-16.1279 -0.2115,-21.4962 1.7914,-4.095 6.075,-8.3831 8.5705,-12.0924 2.1149,-3.1443 3.012,-6.5194 4.7366,-9.8938 2.8225,-5.5227 8.2665,-11.3687 12.8051,-15.5956 6.4022,-5.9626 10.6417,-9.4617 8.7517,-16.4169 m 40.1173,120.773 c -5.5244,0.3609 -13.3319,1.944 -19.0793,0.8034 -4.3843,-0.87 -8.9346,-3.6197 -13.263,-4.7369 -3.6691,-0.9466 -8.548,-1.476 -12.0957,-2.8078 -5.8064,-2.1797 -12.9359,-7.9926 -17.0131,-12.6659 -5.7515,-6.5924 -10.4741,-19.1909 -12.4822,-26.1136 m 138.8513,83.5311 c -2.3522,-5.0115 -5.0535,-8.8562 -8.5712,-13.543 -2.6834,-3.5752 -3.556,-5.7332 -7.4952,-7.847 -3.3393,-1.7914 -7.1098,-2.4081 -10.5736,-3.9454 -5.6691,-2.5162 -10.4157,-4.8594 -16.061,-7.4275 -7.9636,-3.6226 -15.08,-6.5867 -22.2738,-6.1166 m 136.3719,89.9612 c -4.9172,-2.5429 -11.2001,-5.6581 -15.942,-9.1016 -3.6172,-2.6268 -5.5256,-5.4779 -9.7211,-7.0214 -3.5565,-1.308 -7.1633,-1.101 -10.849,-1.9822 -6.0325,-1.4422 -13.8061,-4.4398 -18.843,-8.0569 -7.1052,-5.1025 -12.1903,-18.7636 -15.2534,-25.2897 m 155.7417,41.7158 c -4.5962,3.0856 -8.1546,7.7552 -12.8245,11.2959 -3.5623,2.7009 -9.4226,4.7959 -13.4952,6.6377 -3.4519,1.5614 -9.0783,4.1027 -12.8396,4.5603 -6.1562,0.7489 -14.4929,-0.1778 -20.4596,-1.8697 -8.4169,-2.3867 -18.7109,-8.3505 -25.1142,-11.6619 m 135.573,-79.5999 c -1.4515,5.3425 -2.7753,12.7236 -5.4363,17.9449 -2.0298,3.9829 -6.3178,8.0668 -8.9843,11.6551 -2.26,3.0418 -2.7406,5.6403 -4.1561,9.1552 -2.3168,5.7528 -3.1896,14.6636 -7.6655,18.9549 -6.3139,6.0535 -19.098,8.1862 -25.0832,12.2043 m 71.9218,-152.5891 c -2.1261,5.1115 -3.9262,11.4426 -6.5905,16.6626 -2.0323,3.9819 -4.7769,6.7848 -6.0897,11.058 -1.1125,3.6223 -0.2791,6.5418 -0.5476,10.3218 -0.4394,6.1866 -0.5657,11.7138 -1.2335,17.8799 -0.942,8.6982 -5.0856,19.5671 -6.9757,26.524 m 62.2613,-130.2392 c -5.521,-0.4091 -10.8212,0.2092 -16.6778,0.4211 -4.4675,0.1617 -7.388,-0.8786 -11.5484,0.756 -3.5265,1.3859 -3.2855,2.4103 -5.3724,5.5723 -3.4156,5.1752 -1.7696,6.6098 -1.7008,12.8114 0.097,8.7483 -3.5606,21.2412 -6.3292,27.8975 m 120.171,-74.141 c -2.0434,5.1451 -4.7396,13.3414 -8.7072,17.6545 -3.0265,3.2902 -7.879,6.6714 -11.4699,9.3335 -3.0436,2.2569 -9.6874,5.9312 -13.451,6.3725 -6.1598,0.7222 -14.2288,-1.2 -20.2151,-2.821 -8.4445,-2.2866 -17.4453,-4.1928 -24.6348,-4.7255 m 140.413,-50.515 c -5.5215,0.4014 -9.9604,2.2522 -15.5957,3.8604 -4.2987,1.2269 -6.4938,0.098 -9.4304,3.4681 -2.4888,2.8571 -4.175,7.4513 -6.827,10.158 -4.3405,4.43 -19.5232,-1.2191 -24.0645,-5.4414 -6.4062,-5.9561 -4.1659,5.6345 -6.8269,12.3344 m 135.3247,6.2502 c -3.8645,-3.964 -8.6046,-7.0888 -12.9538,-11.0165 -3.3178,-2.996 -5.0514,-5.9407 -9.0348,-7.9695 -3.3766,-1.7193 -6.7817,-1.9448 -10.3696,-3.1647 -5.8722,-1.9966 -10.5028,-3.3339 -16.4727,-5.0147 -8.4214,-2.371 -16.6224,-4.8557 -23.8125,-4.3331 m 152.8213,70.1464 c -5.5115,0.5193 -13.8442,1.3936 -19.533,-0.013 -4.3395,-1.0733 -9.1687,-3.9553 -13.3425,-5.5567 -3.538,-1.3571 -7.9052,-1.9111 -11.4141,-3.3421 -5.7429,-2.3421 -12.3477,-5.9919 -17.1745,-9.8855 -6.8089,-5.4925 -13.0576,-15.2963 -18.0901,-20.4583 m 160.5914,11.2696 c -5.5317,0.2098 -8.7515,2.5488 -14.119,4.9007 -4.0944,1.7941 -8.1434,2.4545 -11.9737,4.76 -3.2465,1.9545 -6.0678,5.1294 -9.2902,7.1234 -5.2742,3.2635 -12.5897,5.8236 -18.6226,7.2628 -8.5101,2.0302 -19.9362,2.3959 -27.1134,3.0722 m 162.978,-2.8036 c -5.5332,-0.1728 -12.7777,0.1555 -18.5135,-1.0468 -4.3754,-0.9172 -8.668,-3.132 -13.0494,-4.0191 -3.7139,-0.7515 -8.8084,-1.253 -12.3772,-2.5271 -5.8409,-2.0853 -11.6623,-5.3942 -17.0143,-8.5282 -7.5499,-4.421 -13.7344,-9.3378 -20.9377,-9.0646 m 162.5731,-6.4148 c -5.3447,1.4432 -10.4139,4.1055 -15.9739,5.9579 -4.2413,1.4131 -8.5589,1.5981 -12.6424,3.4173 -3.4611,1.5425 -5.468,4.1209 -8.5983,6.2566 -5.1234,3.4955 -8.4439,8.6345 -13.7779,11.7973 -7.5245,4.4616 -22.4559,3.526 -29.6613,3.3009 m 155.7448,-58.2004 c -4.6938,-2.9342 -4.8201,-1.4636 -9.9313,1.4014 -3.8991,2.1855 -7.4226,3.4263 -10.8809,6.259 -2.9312,2.4014 -6.8893,6.5564 -10.2794,8.2498 -5.5485,2.7717 -12.182,5.0664 -18.213,6.5128 -8.5076,2.0403 -19.0535,2.327 -26.0135,4.2064 m 140.1256,31.8278 c -5.1189,-2.107 -12.5099,-5.8335 -16.8912,-9.7253 -3.3422,-2.9687 -5.9303,-7.3701 -9.1815,-10.4386 -2.7561,-2.6007 -6.2797,-4.2111 -9.2039,-6.6216 -4.786,-3.9452 -9.8242,-7.6457 -14.0712,-12.1644 -5.9911,-6.3741 -8.8856,-16.4249 -14.998,-20.2459 m 129.8211,38.4313 c -2.572,-4.9021 -2.4454,-6.0774 -8.2387,-6.957 -4.4193,-0.6709 -4.1787,-1.1703 -7.4199,1.908 -2.7472,2.6095 -3.2608,5.5213 -5.2766,8.7303 -3.2993,5.2521 -7.8935,11.6483 -12.7115,15.5528 -6.7964,5.5078 -24.8312,3.4688 -31.4971,0.725 m 143.3503,-16.5673 c -3.1438,4.5561 -9.1572,11.0334 -14.1518,14.098 -3.81,2.3377 -9.498,3.7531 -13.6362,5.4445 -3.5075,1.434 -7.921,4.0045 -11.5899,4.9527 -6.0049,1.5518 -18.3093,0.9092 -23.4533,-2.5546 -7.2564,-4.8862 -11.2547,-19.3535 -14.604,-25.7371 m 93.0314,-84.5761 c 3.3661,4.3951 8.4491,14.6066 7.7903,20.4294 -0.5026,4.4418 -4.3044,10.5607 -6.3195,14.5512 -1.7079,3.3827 -2.2438,6.8716 -3.5644,10.4235 -2.1614,5.8134 -2.8336,9.6086 -3.9109,15.7164 -1.5198,8.6159 -6.2145,20.8244 -10.3085,26.7574 m -39.8303,-156.2882 c 4.8126,2.7351 11.867,6.9909 15.768,11.3643 2.9757,3.3362 4.9724,8.2241 7.7679,11.7129 2.3698,2.957 5.7079,5.1768 8.2091,8.0236 4.0937,4.6593 7.7709,10.5031 10.7845,15.924 4.2509,7.6469 8.5389,16.1918 12.9223,21.9151 m -137.9652,-101.5932 c 5.5158,0.4731 14.708,1.6815 19.6879,4.7702 3.7987,2.3561 6.7211,6.0448 10.6301,8.2132 3.3136,1.8377 6.2894,1.6785 9.9353,2.7119 5.9672,1.6911 11.4581,3.1818 17.3154,5.2211 8.2627,2.8766 18.2473,8.9324 24.5143,12.4941 m -169.2544,-13.322 c 4.9445,-2.4898 11.4915,-5.6864 17.1354,-7.2649 4.3053,-1.2041 8.8816,-1.2232 13.1205,-2.6437 3.5929,-1.2045 6.8248,-3.6394 10.363,-4.9968 5.7909,-2.2216 12.4039,-3.9245 18.5245,-4.9257 8.6339,-1.4123 20.771,-0.01 27.9536,0.6105 m -159.3555,7.4754 c 4.8713,2.6304 11.4069,5.1175 16.1521,8.5569 3.6197,2.6237 6.2523,6.1682 10.0884,8.4632 3.2519,1.9449 6.1175,1.9335 9.7407,3.0425 5.9301,1.8151 7.6199,1.9567 13.7102,0.7864 8.5913,-1.6509 16.52,-5.0836 22.9588,-8.3258 m -99.1452,-71.3701 c -2.4066,4.9855 -3.772,10.0603 -5.66,15.6079 -1.4402,4.2318 -3.4568,6.3515 -3.2002,10.8143 0.2179,3.7829 2.0016,4.2776 4.046,7.4678 3.346,5.2215 5.6606,6.9049 10.5177,10.7605 6.8518,5.4389 14.0342,11.5375 20.3776,14.9629 m 14.027,-136.66258 c -0.9272,5.4579 -1.0243,12.41151 -2.7043,18.02599 -1.2816,4.28288 -4.2581,8.68316 -5.8302,12.86803 -1.3322,3.54741 -2.5071,8.6014 -4.3472,11.91391 -3.0115,5.42153 -7.9029,10.85214 -12.2187,15.30635 -6.0881,6.2833 -12.6582,12.0641 -15.7921,18.5563 m 51.9742,-164.23471 c 0.6507,5.49748 1.7632,12.896 1.2015,18.72947 -0.4284,4.44994 -2.4551,9.22687 -3.0888,13.65226 -0.5368,3.75119 0.1087,7.74025 -0.2787,11.50999 -0.634,6.16989 -1.7655,12.31595 -3.201,18.34969 -2.025,8.51146 -5.3661,18.0695 -6.5735,25.17683 m -4.4289,-152.51508 c -2.6459,4.8624 -5.4917,10.39379 -8.4815,15.43386 -2.2806,3.84471 -4.7179,5.12503 -5.0693,9.581 -0.2974,3.7771 -0.9264,1.63627 2.3373,3.56064 5.3418,3.14959 12.7932,3.13809 17.5158,7.15639 6.6619,5.66836 8.3547,22.30847 9.2021,29.46734 m -10.2215,-143.69071 c -2.7154,4.82412 -2.795,5.55106 -0.5216,10.95213 1.7343,4.12008 2.6243,7.4045 5.2404,11.02956 2.2178,3.07252 6.1469,7.2815 7.6225,10.77146 2.4151,5.71197 -0.2546,18.29368 -3.3578,23.66334 -4.3775,7.57467 -11.5859,15.3268 -15.0315,21.65867 m 67.7685,-137.36963 c -1.9007,5.19939 -4.0179,12.91766 -7.4378,17.67655 -2.6088,3.63023 -8.0026,7.1549 -11.4194,10.0374 -2.8961,2.44363 -5.8322,6.02546 -8.875,8.28405 -4.9802,3.69661 -10.4953,6.85781 -15.9566,9.79716 -7.704,4.14638 -15.2547,6.79003 -18.7907,13.07205 M 3099.4762,590.425 c 5.5353,0.0362 19.6626,3.00853 22.2067,8.28561 1.9407,4.02549 -3.1963,8.08935 0.5651,10.50407 3.1886,2.04649 5.4923,1.01828 9.2166,1.71802 6.0955,1.14526 18.1401,7.34156 20.4161,13.11016 3.2106,8.13742 -0.909,23.5372 -3.384,30.30789 M 311.85365,676.54996 c 5.22245,0.0628 8.49776,2.90653 12.95548,3.29217 6.76795,0.58556 13.99123,-2.20456 20.77419,-2.5784 4.08592,-0.22517 8.56953,1.40422 12.55338,0.4694 3.90451,-0.91623 6.68949,-5.15246 10.66636,-5.67263 4.21301,-0.55107 7.99568,3.18862 12.24305,3.09334 6.53027,-0.14648 12.99747,-4.6449 18.37581,-4.83215 M 255.72959,726.2997 c 1.242,-5.073 4.59962,-7.19609 6.31023,-11.33028 2.59721,-6.27672 2.26956,-12.61428 6.07982,-18.23807 2.29524,-3.38765 5.87535,-4.05097 8.54091,-7.15527 2.61247,-3.04251 2.16684,-7.37923 5.82343,-9.02603 3.87369,-1.74457 7.24564,1.58761 11.48181,1.26593 6.51305,-0.49457 12.43491,-4.4574 17.81631,-4.39273 m -66.73342,136.10092 c 2.1402,-4.76395 5.73505,-8.93605 6.41453,-13.35845 1.03168,-6.71433 -2.04144,-14.24099 -2.16959,-21.03319 -0.0772,-4.09148 1.98223,-7.67895 1.73421,-11.76327 -0.24311,-4.00299 -3.77924,-7.11961 -2.94959,-11.04339 0.87891,-4.15675 5.91928,-6.28221 7.32842,-10.29019 2.16655,-6.16221 -0.12239,-14.24142 1.15742,-19.46882 m -91.79089,107.34442 c 5.13748,0.93955 7.83721,4.23308 12.15465,5.40801 6.55496,1.7839 14.11623,0.56522 20.85461,1.42587 4.05906,0.51845 8.97669,2.90464 13.00791,2.2047 3.95095,-0.68602 7.56144,-5.22135 11.31291,-6.63926 3.97421,-1.50209 10.30488,-0.55701 13.77557,-3.00671 5.33613,-3.76637 7.73677,-14.45691 9.94211,-19.36585 m -144.16641,61.45502 c 2.1555,-4.75718 5.85343,-6.36643 8.21009,-10.16983 3.57806,-5.77449 4.2813,-12.06195 8.98682,-16.96083 2.83452,-2.95098 6.33274,-3.24775 9.46042,-5.88626 3.06538,-2.58599 3.28981,-7.20245 7.08698,-8.49296 4.02263,-1.36715 7.07575,2.49887 11.3224,2.60345 6.52917,0.16079 12.5408,-2.69469 17.83464,-1.72653 M 54.426494,949.11786 c 3.51574,-3.86154 7.675443,-3.60216 11.257941,-6.28286 5.439179,-4.06992 9.120984,-11.72547 13.094958,-17.23484 2.393857,-3.31872 6.698004,-6.08002 8.26415,-9.86049 1.534934,-3.70521 -0.212289,-8.51409 1.522927,-12.12996 1.838244,-3.83057 7.112018,-5.20428 9.210536,-8.89839 3.226444,-5.67965 2.427394,-13.99994 4.648494,-18.90191 M 60.427628,1028.4832 c 2.552508,-4.5558 6.287578,-12.0596 4.870246,-16.3026 -2.151804,-6.4419 -12.362539,-8.4997 -14.864838,-14.81411 -1.507316,-3.8037 0.339718,-7.02389 -0.579752,-11.01115 -0.901192,-3.90786 -4.95028,-6.40141 -4.791572,-10.40874 0.168131,-4.24527 4.617159,-6.30261 5.892726,-10.35472 1.96117,-6.23007 0.454481,-11.86142 4.077223,-15.84049 M 46.15858,1102.3499 c -2.86009,-4.3701 -1.874312,-7.6391 -3.227999,-11.9035 -2.055174,-6.4746 -5.333629,-11.2826 -5.821457,-18.0583 -0.293839,-4.0815 2.046343,-6.7398 2.273989,-10.8252 0.223083,-4.004 -2.826479,-7.0004 -0.559699,-10.3086 2.401368,-3.5046 7.287568,-2.3544 10.688117,-4.9011 5.228298,-3.9156 8.633244,-12.6554 11.528264,-17.1915 m -12.675396,152.627 c -2.875658,-4.3598 -1.515254,-7.3546 -2.532249,-11.7114 -1.543988,-6.6148 -4.381365,-9.9649 -0.82814,-15.7547 2.140406,-3.4876 6.25417,-4.8577 8.367376,-8.3617 2.071104,-3.4342 1.331425,-9.1556 2.471691,-13.0001 1.207968,-4.0727 4.918949,-10.1819 4.07222,-14.3448 -1.301831,-6.4005 -10.013518,-12.2779 -13.02219,-16.7402 m 59.010923,146.0054 c -3.20033,-4.1268 -3.88544,-8.7024 -6.806872,-12.0913 -4.435417,-5.1453 -11.134951,-7.6139 -15.302866,-12.9779 -2.510653,-3.2312 -2.937116,-7.9015 -5.771217,-10.853 -2.777693,-2.8928 -7.939696,-3.1536 -10.535009,-6.2114 -2.74941,-3.2394 -1.848027,-8.4948 -4.318285,-11.9514 -3.797986,-5.3144 -11.078951,-7.9454 -14.04213,-12.4378 m 41.636713,149.7801 c 3.622289,-3.7625 8.14076,-5.209 10.992456,-8.6566 4.32964,-5.2343 5.32526,-13.677 8.32662,-19.771 1.80797,-3.671 5.53783,-7.1477 6.4416,-11.1385 0.88574,-3.9114 -2.00804,-8.7321 -1.42014,-12.699 0.62281,-4.2024 4.48464,-9.3291 4.00881,-13.5505 -0.73157,-6.4902 -9.18389,-13.6766 -12.48161,-17.929 m -70.001829,148.7827 c 0.985155,-5.1287 4.41222,-6.5808 6.457298,-10.5599 3.105009,-6.0411 3.917176,-11.6839 8.642962,-16.5639 2.846731,-2.9396 6.901097,-3.8642 9.652725,-6.8928 2.696817,-2.9684 2.60894,-7.902 5.688199,-10.4719 3.262089,-2.7223 8.561493,-1.6133 12.064336,-4.0175 5.385573,-3.6964 8.483388,-12.0049 12.215921,-15.8819 m 2.288256,97.4634 c -5.196715,0.522 -8.813544,-1.8053 -13.28508,-1.6471 -6.788927,0.2401 -12.500203,3.49 -19.221436,2.5044 -4.048732,-0.5937 -5.947988,-3.2284 -9.842897,-4.4816 -3.817365,-1.2283 -7.506135,0.9756 -10.101912,-2.0812 -2.749901,-3.2383 0.401572,-6.504 -0.272665,-10.6985 -1.036628,-6.449 -4.454027,-11.1618 -3.438889,-16.4466 m 131.409581,16.2592 c 0.50373,5.1979 -2.52185,3.7125 -6.0589,6.4525 -5.37017,4.16 -8.17922,7.7887 -14.92957,8.5496 -4.06628,0.4583 -7.54146,-1.655 -11.6118,-1.2358 -3.98929,0.4108 -7.14242,3.9725 -11.14296,3.6881 -4.23807,-0.3014 -7.33056,-4.7203 -11.52569,-5.3916 -6.44996,-1.032 -14.649527,3.1149 -20.004404,3.6528 m 90.778704,-100.67 c -4.23522,3.0537 -9.28838,5.4947 -11.87578,9.1449 -3.92839,5.5417 -4.35336,14.6084 -6.03107,21.191 -1.01064,3.9652 -4.10021,7.8877 -4.29862,11.9749 -0.19443,4.0059 3.16028,7.8816 2.61588,11.8551 -0.57672,4.2095 -5.55481,8.9332 -5.31169,13.1745 0.37378,6.5209 8.00105,12.2815 8.52011,17.6376 m 75.11442,-129.1381 c -0.14566,5.2207 -3.23632,7.4716 -4.42507,11.7849 -1.8049,6.5488 -1.07792,12.0405 -5.25698,17.396 -2.5174,3.2261 -4.89912,2.5868 -8.4503,4.6183 -3.48047,1.9911 -4.61197,5.59 -8.61789,5.7786 -4.24377,0.1998 -7.64249,-4.184 -11.87976,-4.4913 -6.51476,-0.4726 -16.20069,5.1825 -20.56481,8.3291 m 39.47269,-127.6999 c -1.59761,4.9719 -4.70383,9.1827 -5.12783,13.6369 -0.6438,6.7625 3.4213,15.0598 5.62098,21.487 1.32503,3.8717 1.16011,8.899 3.3172,12.3762 2.11416,3.4081 6.95852,4.6886 8.66165,8.3196 1.80425,3.8465 -0.82172,8.1475 0.25776,12.2565 1.65968,6.3175 6.27043,10.7432 6.12034,16.1227 m 59.60019,-120.2362 c -4.65815,2.3622 -8.08571,1.2883 -12.40421,2.456 -6.5566,1.7728 -11.75293,5.1315 -18.5003,5.9211 -4.06447,0.4757 -8.38188,-1.1283 -12.35096,-0.1334 -3.89004,0.9752 -6.83097,5.5677 -10.6896,6.6613 -4.08773,1.1585 -10.20666,-0.8074 -13.97114,1.1611 -5.78782,3.0266 -9.70127,14.5224 -11.3475,19.6457 m 118.13547,21.6615 c 1.47147,-5.0111 5.61979,-7.6874 6.88462,-11.979 1.92038,-6.5156 -1.99128,-15.4327 -2.91401,-22.1629 -0.55582,-4.0542 0.38363,-9.3189 -1.29696,-13.0493 -1.64715,-3.6562 -7.35073,-6.1093 -10.00641,-9.1141 -2.81336,-3.1833 -6.97834,-10.0366 -11.13216,-10.9243 -6.38645,-1.3647 -15.94782,6.615 -20.74773,9.0491 m 43.39562,142.4059 c -2.06449,-4.7973 -0.41439,-8.5603 -1.5061,-12.8994 -1.65743,-6.5879 -5.81314,-11.4338 -6.05012,-18.2227 -0.14274,-4.0895 1.94352,-7.5277 1.75031,-11.6151 -0.1894,-4.006 -3.72858,-7.3929 -3.2854,-11.3791 0.4695,-4.2228 5.11065,-6.874 6.10609,-11.0043 1.53047,-6.3502 -1.89255,-13.6363 -0.37629,-18.7999 m 72.34273,129.7872 c -4.66163,-2.3553 -6.49619,-6.2768 -10.36621,-8.5226 -5.87564,-3.4096 -13.32624,-3.8495 -19.40905,-6.874 -3.66415,-1.8219 -6.73869,-5.514 -10.66534,-6.6656 -3.84848,-1.1287 -8.2526,1.6163 -11.73669,-0.3693 -3.69096,-2.1035 -2.20867,-6.4366 -4.5008,-10.0135 -3.52411,-5.4994 -9.34881,-8.7678 -11.47613,-13.7111 m 144.6326,48.9452 c -3.04652,4.2417 -5.72783,3.5491 -9.76303,5.4818 -6.12647,2.9343 -9.97149,6.2174 -16.76326,6.3559 -4.09122,0.083 -6.76128,-2.3613 -10.83816,-2.7089 -3.99572,-0.3406 -7.6013,2.5598 -11.39247,1.2517 -4.01628,-1.3858 -5.09348,-6.4019 -8.75237,-8.5611 -5.62549,-3.3198 -13.7169,-2.9341 -18.52042,-5.3611 m 88.51776,-79.9006 c 0.42138,5.2057 -2.01105,8.478 -2.17179,12.9494 -0.24411,6.7887 2.6201,13.123 1.97299,19.8854 -0.38983,4.0736 -2.95469,7.54 -3.07902,11.6301 -0.12183,4.0087 3.03798,7.5592 2.12049,11.4635 -0.97197,4.136 -5.65703,5.7194 -7.46107,9.5655 -2.7737,5.9132 -1.40469,13.0182 -4.54392,17.389 m 34.51509,-166.7559 c -4.39503,2.8208 -9.86908,4.1785 -12.83292,7.5303 -4.49992,5.0888 -5.49477,14.3038 -7.82437,20.6847 -1.40332,3.8438 -4.68541,8.0384 -4.95791,12.1212 -0.26705,4.0015 3.25522,8.2008 3.08926,12.208 -0.17581,4.2451 -4.24088,8.0824 -4.39525,12.328 -0.23733,6.5276 4.25808,13.6463 4.69228,19.0104 m 68.14359,-141.8843 c 0.91502,5.142 -1.57536,8.2293 -1.65846,12.7027 -0.12624,6.7917 2.23143,11.7781 -0.97489,17.7669 -1.93144,3.6075 -4.88603,3.8156 -7.72953,6.7574 -2.78686,2.8832 -2.76188,7.1829 -6.40317,8.8638 -3.85749,1.7808 -8.28226,-1.151 -12.39561,-0.088 -6.32423,1.6346 -12.64493,8.3235 -17.17373,11.2301 m 12.94864,-135.2288 c 4.03312,3.3171 2.69614,6.8243 4.69676,10.8264 3.03739,6.0762 8.33931,10.3735 10.97724,16.6337 1.58902,3.7709 1.00242,8.1525 2.89843,11.7787 1.85829,3.554 6.43109,5.1215 7.63558,8.9469 1.276,4.0526 -1.82567,8.3592 -1.04874,12.5359 1.19453,6.4215 6.41337,12.0687 7.35623,17.3671 M 546.06899,982.56194 c -5.03682,1.38013 -10.03981,0.38646 -14.14857,2.15746 -6.23816,2.68877 -12.24618,11.11219 -15.57983,17.0296 -2.00814,3.5645 -5.79179,8.7441 -5.83682,12.8355 -0.0441,4.0098 3.83942,8.4772 4.70375,12.3931 0.91566,4.1483 0.0763,11.4251 2.77059,14.7097 4.14238,5.05 14.00027,5.6973 18.15615,9.1153 m 89.43625,-80.90115 c -1.51072,4.99875 -3.57882,3.64363 -7.67223,5.44777 -6.21487,2.73908 -9.73805,3.81393 -16.37265,2.35398 -3.99654,-0.87946 -7.87344,-3.94103 -11.96266,-4.08436 -4.0078,-0.14045 -8.35544,3.96618 -12.33901,4.43143 -4.22009,0.49286 -8.04319,-3.29185 -12.29067,-3.1961 -6.53044,0.14721 -13.84628,5.42656 -19.0364,6.84869 m 130.725,-76.74726 c -0.82264,5.15714 -3.72493,5.71121 -6.44222,9.26511 -4.1256,5.39567 -6.37834,9.43072 -12.49168,12.39332 -3.68257,1.7846 -8.35346,1.58988 -11.77128,3.83997 -3.34974,2.2053 -4.72295,7.6506 -7.81336,10.20653 -3.2739,2.70767 -10.05965,5.29576 -11.8009,9.17032 -2.67716,5.95708 0.006,14.60844 -1.55087,19.75933 m 18.8753,-141.66235 c 1.53812,4.9904 -1.13287,9.58046 0.1156,13.87621 1.89544,6.52205 9.74724,11.86351 13.8615,17.26892 2.47834,3.25613 3.23037,7.54566 6.00115,10.55684 2.71564,2.9512 7.49963,3.04595 9.25754,6.65072 1.86227,3.81881 -1.33048,7.17852 -0.94036,11.40894 0.59981,6.50421 4.69378,11.75408 3.8461,17.06818 m -110.69136,-89.2404 c 5.22115,-0.1239 8.99437,2.37634 13.46802,2.29425 6.79213,-0.12458 13.18968,-3.40283 19.98114,-3.56083 4.09105,-0.0951 7.60949,2.14705 11.69598,1.93472 4.00513,-0.20813 7.18241,-3.61243 11.11483,-2.82515 4.16591,0.83404 5.03205,5.34894 8.66545,7.54964 5.5863,3.38354 11.18633,2.07477 12.77125,7.21705 m -164.46886,-29.4893 c 4.42118,2.78016 6.50843,6.97725 10.39709,9.19023 5.90395,3.35992 14.50465,3.36761 21.14276,4.80954 3.99867,0.8686 8.13437,3.54926 12.2264,3.55746 4.01055,0.008 7.7648,-3.6124 11.76461,-3.31641 4.2373,0.31356 7.11049,4.67548 11.27994,5.4912 6.41047,1.25415 14.54104,-1.84948 19.9211,-1.97715 M 433.55882,725.32177 c -0.80585,5.16008 -3.93622,9.25341 -4.04437,13.72605 -0.16425,6.7906 5.44098,14.80613 8.56304,20.83943 1.88065,3.63434 2.62879,8.68961 5.34197,11.75282 2.65918,3.0022 8.03968,3.49865 10.74917,6.45538 2.87037,3.13227 2.6041,8.7577 5.47175,11.89211 4.40897,4.81913 13.59179,6.4927 18.14752,9.35748 m -78.43554,-129.8951 c 5.22273,-0.0166 7.63632,2.70564 11.99272,3.7252 6.61412,1.54801 11.94594,0.2955 17.07155,4.75225 3.08755,2.68467 2.68808,5.1511 4.74933,8.68567 2.02024,3.46418 5.58505,4.47179 5.58353,8.48203 -0.002,4.24834 -4.71121,6.51224 -5.79296,10.62039 -1.66318,6.31622 0.5785,14.09398 -0.25187,19.41111 M 311.90182,667.46124 c 5.60805,0.0674 11.96919,-0.86492 17.89855,-0.56412 4.52308,0.22943 8.30324,1.56885 12.80236,1.05067 3.8136,-0.43962 6.94914,-2.15097 10.67861,-3.0603 6.10398,-1.48828 12.24904,-2.58107 18.48618,-3.33952 8.79836,-1.06992 20.03935,-0.058 27.33807,-0.3121 m -152.21844,62.96182 c 1.33371,-5.44757 2.16205,-12.61482 4.42646,-18.10298 1.72734,-4.18653 5.32639,-8.46637 7.48869,-12.44557 1.83251,-3.37311 3.81586,-8.23494 6.14225,-11.28803 3.80756,-4.99696 12.12652,-10.87427 18.09281,-12.84246 8.41629,-2.77643 21.55112,-1.27415 28.85399,-1.18639 m -75.15779,141.52327 c 2.29822,-5.1157 1.55397,-9.32903 2.00331,-15.24848 0.34274,-4.51552 1.49389,-8.3179 1.13884,-12.83292 -0.30134,-3.8271 -1.86854,-7.71842 -2.26701,-11.53634 -0.65218,-6.24875 0.15224,-14.40485 1.76043,-20.47853 2.26856,-8.56779 6.62735,-18.26054 8.36412,-25.35442 m -81.38512,100.55533 c 5.51681,1.00893 11.90919,1.20869 17.70798,2.48218 4.42347,0.97143 8.15463,3.14243 12.6612,3.59106 3.81998,0.37989 6.57441,-0.80801 10.38298,-1.28529 6.23342,-0.78117 8.92918,-1.3586 14.52426,-4.2152 7.89265,-4.02966 12.91079,-8.65872 15.90356,-15.32044 M 93.351003,871.69773 c 2.314647,-5.10844 4.290969,-11.84165 7.383647,-16.90938 2.35915,-3.86582 6.67073,-7.48628 9.43438,-11.07379 2.34228,-3.04116 4.95068,-7.54072 7.70177,-10.21781 4.50265,-4.38154 13.12938,-9.2359 19.27984,-10.51844 8.67609,-1.80922 21.85674,1.52488 29.04078,2.83871 M 47.665632,943.04499 c 3.775327,-4.14666 8.456033,-9.41079 13.043421,-13.17935 3.49937,-2.87479 6.49802,-4.26301 9.07259,-7.98866 2.181994,-3.15824 2.494422,-6.35993 4.01914,-9.88282 2.495483,-5.76588 4.801209,-10.93877 7.550439,-16.58835 3.878166,-7.96953 9.779049,-16.69632 12.793204,-23.34858 M 52.64254,1023.8024 c 3.016954,-4.7272 3.02283,-4.0508 -0.786909,-8.6031 -2.906195,-3.4725 -6.064979,-7.584 -8.669353,-11.2887 -2.207891,-3.14 -5.032579,-8.80874 -6.060056,-12.50727 -1.681658,-6.05334 -2.367152,-14.18784 -1.820046,-20.44661 0.771755,-8.82888 8.087233,-21.92553 13.003501,-27.32536 m -9.677119,163.81414 c -3.135393,-4.6503 -8.186578,-11.8019 -9.466168,-17.5993 -0.976132,-4.4225 -0.727951,-9.8316 -1.321705,-14.3213 -0.503673,-3.8057 -2.112711,-8.7276 -2.119731,-12.566 -0.01149,-6.2823 3.845139,-16.8768 8.059919,-21.5362 5.945534,-6.5726 15.663169,-10.9959 19.591876,-17.1517 m -12.565447,162.5728 c -3.087984,-4.6817 -7.922631,-12.423 -8.834913,-18.2888 -0.695941,-4.4745 1.619528,-12.8121 3.602625,-16.8835 1.680607,-3.4513 3.254373,-7.9027 5.208178,-11.2069 3.197764,-5.4078 5.439115,-6.5749 5.873345,-12.8412 0.612528,-8.8396 -3.222784,-14.6093 -7.305723,-20.6649 m 59.405178,146.5401 c -3.436623,-4.4316 -8.17516,-7.5634 -12.241303,-11.8895 -3.101786,-3.3 -5.399633,-7.6366 -8.508993,-10.9293 -2.635902,-2.7908 -6.262848,-5.331 -8.82685,-8.1874 -4.196467,-4.6752 -8.009935,-8.643 -12.099731,-13.4128 -5.76925,-6.7284 -11.523476,-16.619 -15.544678,-22.7154 m 42.636159,138.5149 c 3.889742,-4.0404 6.075673,-8.4317 9.249566,-13.4486 2.42111,-3.8269 5.324009,-6.5172 7.079328,-10.6919 1.48753,-3.5388 1.4629,-6.9519 2.40756,-10.6725 1.5461,-6.0895 2.40354,-9.5254 2.45258,-15.808 0.0692,-8.8625 -1.44014,-15.5225 -5.915346,-21.2933 m -71.754391,141.5574 c 1.057894,-5.5074 2.801069,-13.9431 5.909644,-19.0006 2.371284,-3.858 6.706194,-7.5757 9.544335,-11.1048 2.405425,-2.9917 4.344111,-6.9912 6.818614,-9.926 4.049983,-4.8032 9.141877,-9.3238 14.024426,-13.2782 6.887517,-5.5782 15.745951,-10.4681 20.81121,-15.7294 m 9.806999,112.806 c -5.580417,0.5606 -11.903441,2.4942 -17.834881,2.7496 -4.524665,0.1949 -9.8635,-1.0058 -14.386067,-1.2434 -3.833535,-0.201 -9.421307,0.3294 -13.1433,-0.6084 -6.091736,-1.535 -16.147847,-8.3967 -19.105026,-13.9397 -4.171533,-7.8192 -2.968167,-23.389 -1.590567,-30.5608 m 149.37668,17.0369 c 0.54092,5.5816 -5.9055,17.4338 -10.93178,20.5913 -3.83417,2.4087 -10.96135,3.4376 -15.39085,4.3803 -3.75454,0.7994 -8.32467,2.665 -12.13948,3.0913 -6.24364,0.6977 -13.05694,0.5513 -19.32014,0.053 -8.83513,-0.7031 -18.35478,-3.1466 -25.621654,-2.4166 m 95.233414,-102.3819 c -4.54793,3.2792 -5.32528,6.7818 -7.99232,12.0858 -2.03446,4.0461 -4.4422,6.7024 -5.48276,11.1099 -0.88165,3.736 -0.13429,6.9998 -0.37824,10.8307 -0.39928,6.2701 -0.8463,12.0553 -1.63299,18.289 -1.10974,8.7934 2.08549,17.1829 2.78988,24.4514 m 75.15279,-128.0687 c -0.15641,5.6061 -0.1798,13.7525 -2.04879,19.3872 -1.42569,4.2984 -5.24779,9.3632 -7.62148,13.2193 -2.01172,3.2688 -5.32961,8.7782 -8.29631,11.2126 -4.85556,3.9844 -15.68463,5.6938 -21.9675,5.7149 -8.86288,0.03 -17.10922,-3.2086 -23.03158,1.0616 m 42.82771,-132.3504 c -1.71557,5.339 -0.63085,9.8111 -0.75051,15.7464 -0.0913,4.5276 -0.75294,7.1712 0.83058,11.4141 1.34262,3.5963 3.86076,5.8097 5.80775,9.1179 3.1866,5.4145 6.5207,10.8959 8.93742,16.6952 3.40914,8.1808 4.64567,21.4566 4.44199,28.7569 m 54.67748,-112.4114 c -5.00208,2.5366 -11.52082,6.7638 -17.29023,8.1624 -4.40105,1.0669 -9.77335,0.4584 -14.23227,1.2519 -3.77949,0.673 -7.13408,2.5556 -10.84921,3.5212 -6.08051,1.5804 -10.43219,2.3503 -16.27587,4.6576 -8.24333,3.2548 -13.89233,5.8688 -16.12637,12.8213 m 100.74315,16.3785 c 1.58011,-5.3811 3.02936,-9.7818 3.40327,-15.7057 0.28521,-4.5188 0.92661,-7.9461 0.21765,-12.4189 -0.60133,-3.7913 -2.61214,-6.1492 -4.02476,-9.7182 -2.31203,-5.8413 -2.19876,-7.3189 -7.40039,-10.841 -7.33765,-4.9683 -12.04519,-2.1892 -18.55895,1.114 m 30.95958,137.9458 c -2.21692,-5.1515 -5.57666,-11.4659 -7.08582,-17.2078 -1.15126,-4.3801 -0.79994,-10.0577 -1.41746,-14.544 -0.52382,-3.8027 -2.09638,-8.1622 -2.42188,-11.987 -0.53274,-6.26 -0.12525,-13.33 0.74544,-19.5523 1.22823,-8.7775 4.36145,-19.8321 6.41909,-26.8395 m 77.02169,140.4883 c -5.00583,-2.5292 -10.97167,-4.2888 -16.25502,-6.997 -4.0303,-2.0658 -7.31644,-5.1954 -11.48459,-6.9666 -3.53324,-1.5009 -7.24469,-1.5881 -10.91493,-2.713 -6.00703,-1.841 -14.21837,-4.318 -19.05191,-8.3311 -6.81841,-5.6611 -11.8676,-18.9859 -14.7545,-25.6943 m 160.4004,50.6034 c -3.27146,4.5549 -10.46748,12.1447 -16.10201,14.0152 -4.29817,1.4268 -10.51122,1.4244 -15.01175,1.9297 -3.81478,0.4287 -8.80059,1.7056 -12.6379,1.6179 -6.28046,-0.1436 -14.40948,-2.1506 -20.18507,-4.6239 -8.14729,-3.489 -17.09125,-10.3242 -23.60989,-13.6178 m 101.67169,-88.8094 c 0.45249,5.59 1.95578,12.1398 1.95385,18.0766 -10e-4,4.5288 -1.51063,9.3622 -1.58372,13.8905 -0.0616,3.8384 1.04468,8.0762 0.96132,11.914 -0.13643,6.2812 -1.18571,13.5023 -2.87436,19.5539 -2.38207,8.5365 -9.02948,19.6138 -13.28961,25.5452 m 32.09142,-164.444 c -4.71954,3.0291 -6.42508,5.8979 -9.47639,10.9905 -2.3276,3.8848 -4.98109,6.4967 -6.46415,10.7756 -1.25674,3.6271 -0.56264,6.5576 -0.94249,10.3773 -0.62168,6.2516 -0.67338,10.7561 -0.61426,17.0387 0.0834,8.8623 -1.21907,19.0725 -0.62984,26.3519 m 68.01899,-142.8032 c 0.98258,5.5216 2.86368,13.1809 2.42024,19.1008 -0.33823,4.5158 -2.82224,10.5901 -4.35925,14.8499 -1.30248,3.611 -3.60895,9.6991 -6.05501,12.6566 -4.00343,4.8406 -12.03588,9.9222 -17.91764,12.1306 -8.29706,3.1153 -18.30483,3.8538 -24.45066,7.7983 m 13.7635,-149.9366 c 4.33092,3.562 9.97825,10.2938 12.66205,15.5895 2.04731,4.0396 3.04904,8.9206 5.05318,12.9818 1.69914,3.4424 4.55866,6.4416 6.36673,9.8278 2.95924,5.5421 5.42047,11.8984 7.27462,17.9014 2.61555,8.468 3.10512,20.0622 4.38464,27.2525 m -29.6734,-135.35154 c -5.40872,1.48203 -8.9846,3.7286 -13.9774,6.94027 -3.80863,2.44997 -6.56744,2.67237 -8.94567,6.52637 -2.01555,3.2669 -1.18026,4.7676 -1.4111,8.5989 -0.37782,6.2706 -0.42827,8.6572 1.68431,14.573 2.98011,8.3451 10.38904,11.1942 16.02881,15.8327 m 92.37841,-71.31006 c -1.62227,5.36784 -10.7745,15.69482 -16.62615,16.69302 -4.46379,0.76149 -11.13863,-1.08343 -15.6276,-1.68296 -3.80509,-0.50781 -7.61605,0.0441 -11.44636,-0.20861 -6.26901,-0.41362 -10.19784,0.56446 -16.44226,1.2592 -8.80863,0.98004 -18.80189,0.008 -25.84517,1.93811 m 137.30649,-84.14384 c -0.88338,5.53792 -4.04166,15.61772 -8.28137,19.77294 -3.23415,3.16973 -9.29626,5.55729 -13.19356,7.86404 -3.30333,1.95563 -6.04279,4.73787 -9.23059,6.87638 -5.21744,3.50009 -8.34654,5.05787 -12.52958,9.74494 -5.90077,6.61178 -6.80504,14.64476 -8.91757,21.63481 m 18.83989,-147.02705 c 1.65168,5.35886 2.43613,10.05291 5.25983,15.27528 2.15403,3.98376 3.13848,7.4779 6.09116,10.91172 2.5031,2.9104 5.95425,4.86345 8.63895,7.60724 4.39402,4.49072 9.64328,11.66631 11.70297,17.60175 2.9055,8.37278 1.91009,22.38921 0.75974,29.60074 m -119.9453,-99.75667 c 5.60666,-0.13305 11.42809,-1.69694 17.35648,-2.01713 4.52233,-0.24428 9.17306,0.80363 13.68641,0.42875 3.82568,-0.31815 7.87653,-1.81747 11.70131,-2.14432 6.25995,-0.53494 14.60215,0.18092 20.61136,2.01357 8.47684,2.58519 21.15394,13.75724 23.30478,20.7356 M 483.09116,790.9115 c 4.74762,2.98544 10.00321,4.52888 15.35616,7.09627 4.08339,1.95845 6.5246,4.16113 10.99945,4.85706 3.79312,0.58952 7.02057,-0.26303 10.8592,-0.28864 6.28263,-0.0419 12.35922,0.0396 18.61672,0.60468 8.8271,0.79705 18.59735,4.29617 25.89839,4.12291 M 442.54769,726.66377 c -0.86535,5.54108 -0.47111,9.82261 0.31306,15.70654 0.59821,4.48843 0.36563,7.1642 2.5688,11.12102 1.86783,3.35377 4.62171,5.0049 7.11792,7.92115 4.08551,4.77298 7.30465,8.30625 11.71974,12.77601 6.22812,6.30522 12.17787,13.57272 18.36027,17.46039 M 399.26246,660.36167 c 5.60835,-0.0178 13.77821,-0.65047 19.47154,1.03122 4.34303,1.28281 9.90995,5.13266 13.67041,7.65528 3.18773,2.13795 8.84086,5.48353 11.13185,8.5632 3.74963,5.04045 5.62834,16.24106 4.99523,22.49179 -0.89307,8.81753 -5.71756,19.21056 -6.84442,26.42621 m 3220.46373,1.86155 c -0.6372,-5.18375 1.2011,-9.19407 0.6398,-13.63307 -0.8522,-6.73953 -5.02,-12.04912 -4.5504,-18.82545 0.2829,-4.08192 2.3263,-5.44895 3.8152,-9.26016 1.4592,-3.73533 -0.1112,-7.20488 3.0715,-9.64452 3.3717,-2.58448 7.0529,0.20987 11.1906,-0.75231 6.3617,-1.47933 11.2747,-5.78356 16.6537,-5.95321 m -78.6803,129.93516 c 4.5146,-2.62584 9.188,-2.59541 12.9421,-5.02961 5.6997,-3.69568 9.6382,-10.66218 14.5646,-15.3392 2.9675,-2.81732 7.7873,-4.74946 9.9932,-8.19597 2.162,-3.37791 1.2332,-8.58291 3.4158,-11.94758 2.3123,-3.56445 8.3133,-5.79116 9.9892,-9.69491 2.5767,-6.00196 -1.5134,-16.3637 -2.17,-21.70522 m -135.8525,87.10119 c 5.2212,0.1239 9.269,2.85096 13.7402,2.68487 6.7884,-0.25208 12.9998,-3.42652 19.7932,-3.45574 4.0922,-0.0176 8.3651,2.16687 12.4065,1.52491 3.9609,-0.62921 7.2437,-4.58675 11.2124,-5.16357 4.2044,-0.61108 9.1142,2.68925 13.2735,1.82408 6.395,-1.33018 12.4265,-9.11126 17.0785,-11.81701 m -163.6547,29.52358 c 1.0704,-5.11186 2.7853,-4.33692 6.6083,-6.6615 5.8043,-3.52924 9.2832,-7.54029 15.9753,-8.70572 4.0312,-0.70202 7.2853,1.41037 11.3554,0.98713 3.989,-0.41485 7.0951,-4.11799 11.0885,-3.74624 4.2305,0.39383 7.1224,4.89149 11.2896,5.71839 6.4072,1.27134 14.3715,-1.9685 19.7516,-1.84082 m -107.9468,91.23783 c -1.3829,-5.03576 1.4108,-7.32201 1.9628,-11.76202 0.838,-6.74105 -0.919,-12.11368 2.4758,-17.99775 2.0449,-3.54443 5.7497,-4.71075 8.0206,-8.11479 2.2257,-3.33627 1.5366,-8.1111 4.1815,-11.12582 2.802,-3.19372 8.5125,-3.39643 11.3451,-6.56242 4.3553,-4.86767 3.6324,-15.91994 4.7353,-21.18738 m 18.7692,141.4501 c -2.2148,-4.72943 0.2919,-7.99761 -0.3134,-12.43087 -0.9191,-6.73082 -6.6126,-14.90329 -11.303,-19.81667 -2.8254,-2.95973 -5.9025,-7.82921 -9.6276,-9.52271 -3.6509,-1.65976 -8.4886,0.05 -11.9675,-1.94577 -3.6855,-2.11422 -3.5957,-6.88316 -6.6217,-9.86502 -4.6524,-4.58458 -9.3732,-6.10243 -10.7982,-11.29145 m 132.2099,76.05516 c -4.9621,-1.62783 -8.3679,-5.0662 -12.7345,-6.042 -6.6295,-1.48158 -13.7422,0.27799 -20.4185,-0.97715 -4.0217,-0.75608 -9.2902,-3.58333 -13.3079,-2.80829 -3.9376,0.75963 -6.9767,5.10222 -10.9441,5.6898 -4.203,0.62247 -6.816,-3.01277 -11.0162,-3.65002 -6.4577,-0.97977 -10.0577,1.16299 -12.3399,-3.71039 m 85.0215,79.98751 c 3.697,-3.6887 7.8067,-2.541 11.6954,-4.7542 5.904,-3.3602 11.4693,-12.488 13.3908,-19.0029 1.1575,-3.9245 3.8701,-9.4858 3.1919,-13.5208 -0.6648,-3.9546 -5.3334,-7.7761 -7.054,-11.3979 -1.8227,-3.83697 -1.8306,-10.42641 -4.7519,-13.51056 -4.4916,-4.74185 -15.2891,-5.43715 -20.4022,-7.11453 m -27.8535,148.40869 c 0.7624,-5.1668 4.0357,-7.6394 5.2997,-11.9315 1.919,-6.5166 1.237,-13.1081 3.7226,-19.4302 1.4973,-3.8083 4.8907,-6.3321 6.2022,-10.2083 1.2852,-3.7989 -0.8169,-8.298 0.9937,-11.8767 1.918,-3.7912 7.036,-4.6038 9.4732,-8.0836 3.7472,-5.3501 2.8567,-13.1147 6.6662,-16.9157 m 16.6217,135.342 c -4.239,-3.05 -6.9843,-7.3637 -11.0177,-9.3005 -6.1236,-2.9405 -13.3141,-2.3376 -19.2689,-5.6065 -3.5871,-1.9692 -4.5791,-5.1263 -7.844,-7.5921 -3.1999,-2.4166 -7.2755,-1.8077 -9.0563,-5.4012 -1.8865,-3.8069 1.9174,-7.0616 1.7176,-11.3048 -0.3071,-6.5238 -3.4399,-12.1789 -2.6543,-17.5029 m 66.6058,141.8039 c 0.4214,-5.2057 3.3498,-8.3712 3.9795,-12.801 0.956,-6.7255 -1.1577,-13.8674 -0.7921,-20.6508 0.2203,-4.0862 2.2284,-9.0192 1.3267,-13.0105 -0.8837,-3.9118 -5.2966,-7.0458 -6.4068,-10.8995 -1.1761,-4.0825 1.3494,-9.2216 0.01,-13.2517 -2.0663,-6.1962 -11.6669,-12.0133 -16.0349,-15.1562 m 32.3626,168.4812 c -3.2635,-4.077 -2.0011,-7.5312 -3.5823,-11.7168 -2.4005,-6.3547 -6.4827,-10.934 -7.5733,-17.639 -0.657,-4.039 0.9987,-7.7945 0.2423,-11.816 -0.7414,-3.9414 -4.6999,-6.8033 -4.8035,-10.8126 -0.1098,-4.2474 4.1788,-7.4619 4.6312,-11.6861 0.6956,-6.4946 -2.9227,-13.5455 -2.4885,-18.9096 m 91.021,76.1772 c -4.6617,2.3553 -8.7473,1.4551 -12.9001,3.1206 -6.3049,2.5286 -10.7145,7.7204 -17.2746,9.4844 -3.9516,1.0626 -7.5785,-0.3193 -11.5523,0.6555 -3.8947,0.9555 -6.2303,4.8878 -10.2247,4.5276 -4.2315,-0.3817 -5.9738,-4.9737 -9.9379,-6.5015 -6.0949,-2.349 -11.4739,-1.1812 -14.8368,-5.3822 m 144.1041,-53.1114 c -1.9112,4.8605 -5.2796,6.186 -7.7995,9.8827 -3.826,5.6125 -4.482,11.1293 -10.4192,14.429 -3.5764,1.9877 -7.634,0.4169 -11.3349,2.1628 -3.6272,1.7112 -5.4945,6.5184 -9.2369,7.9606 -3.9647,1.5277 -8.8982,-0.887 -12.9151,0.4968 -6.1759,2.1274 -11.2083,9.0404 -16.0118,11.4674 m 69.9276,-130.6779 c 1.6462,4.9564 -0.5968,8.0131 -0.3331,12.4797 0.4003,6.7815 3.8856,13.0464 4.3201,19.8257 0.2617,4.0838 -1.9108,7.7951 -1.4685,11.8631 0.4335,3.987 3.988,7.0401 3.5698,11.0287 -0.443,4.2255 -5.1459,6.2378 -6.5199,10.2576 -2.1124,6.1803 -0.6003,13.4387 -2.5697,18.4472 m 45.4475,-137.1709 c -4.6582,-2.3622 -7.1166,-6.628 -11.2255,-8.3975 -6.2384,-2.6867 -18.4361,1.7067 -23.5556,6.1706 -3.0839,2.689 -8.3361,7.043 -9.4186,10.9887 -1.0608,3.8672 1.3744,8.7204 0.5548,12.6463 -0.8684,4.1591 -5.5593,7.1625 -6.473,11.3116 -1.4047,6.3791 5.1266,15.6595 6.823,20.7668 m 119.9406,-15.616 c -1.1076,-5.1037 -1.1363,-11.0914 -3.6198,-14.8119 -3.7705,-5.6487 -14.0448,-8.4007 -20.3593,-10.9054 -3.8037,-1.5087 -7.9469,-4.8877 -12.0222,-5.2558 -3.9941,-0.3608 -7.9725,2.729 -11.914,1.987 -4.1755,-0.786 -6.5384,-5.5079 -10.5917,-6.7807 -6.2319,-1.957 -12.889,-0.4216 -17.6889,-2.8557 m 55.7578,122.6047 c -0.3239,-5.2126 2.3937,-7.3838 3.4582,-11.7294 1.6162,-6.5976 1.5488,-12.1907 4.8541,-18.1254 1.9911,-3.575 5.82,-5.9891 7.4124,-9.7586 1.5607,-3.6944 -0.1403,-8.6437 1.419,-12.3388 1.6519,-3.9144 6.9478,-6.8285 8.1318,-10.9083 1.8205,-6.2726 -2.829,-15.9884 -3.9703,-21.2475 m 39.9468,127.629 c -3.7039,-3.6816 -8.459,-8.3169 -12.817,-9.3299 -6.6165,-1.538 -14.1744,1.5903 -20.9211,0.8001 -4.064,-0.4761 -5.6544,-2.5951 -9.4774,-4.052 -3.7469,-1.4279 -7.1534,0.1869 -9.5124,-3.0565 -2.4991,-3.436 0.2719,-7.5031 -0.893,-11.5883 -1.7911,-6.281 -6.4211,-10.9164 -6.7549,-16.2877 m 73.1791,128.5538 c -0.5824,-5.1889 3.6397,-6.0977 5.4233,-10.2012 2.708,-6.2301 0.8619,-15.4768 0.5189,-22.2616 -0.2066,-4.087 1.6225,-8.4418 0.7933,-12.4489 -0.8126,-3.9274 -5.1502,-6.9586 -5.8682,-10.9043 -0.7606,-4.18 2.2121,-9.2848 1.1298,-13.3931 -1.664,-6.3163 -10.3242,-12.6137 -14.1409,-16.4073 m 90.4042,100.1732 c -5.1967,-0.522 -8.8044,-3.5302 -13.2657,-3.8694 -6.7734,-0.5151 -13.7174,2.628 -20.5106,2.6377 -4.0922,0.01 -7.7037,-2.1082 -11.7898,-1.8918 -4.0048,0.2122 -7.2234,3.8219 -11.1679,3.0967 -4.1786,-0.7681 -5.2231,-5.4458 -8.946,-7.4916 -5.7238,-3.1455 -11.1051,-1.7284 -11.7052,-7.0752 m 130.8129,-21.5752 c 1.2184,5.0784 -1.126,7.499 -1.5983,11.948 -0.7172,6.7546 1.5987,11.5902 -3.1473,16.4497 -2.8589,2.9272 -5.6035,1.9799 -9.2573,3.8213 -3.581,1.8048 -4.9369,5.8732 -8.9359,6.1779 -4.2364,0.3227 -7.0303,-3.9647 -11.2288,-4.6141 -6.455,-0.9984 -13.7571,2.0603 -19.112,1.5224 m -2.3459,-99.8262 c 3.5186,3.8597 4.2972,8.4891 7.4217,11.6918 4.7437,4.8626 11.6794,7.3003 16.6232,11.9596 2.9781,2.8067 4.1865,7.0344 7.374,9.6002 3.1241,2.5147 7.9087,2.1083 10.4917,5.1764 2.7364,3.2502 0.9714,7.8709 2.854,11.6791 2.8945,5.8552 8.7413,9.3256 9.9968,14.5585 m -65.8462,-148.099 c -3.384,3.9779 -8.1183,6.198 -10.3886,10.0534 -3.4469,5.8534 -2.7174,15.7799 -2.6037,22.5713 0.068,4.091 -1.1278,9.6519 0.3833,13.4546 1.481,3.7269 6.2363,6.055 7.7539,9.7673 1.6077,3.9328 -0.7968,9.0952 0.7414,13.055 2.3649,6.0882 10.8858,11.0985 14.5115,15.0756 m 46.6364,-149.9871 c -2.5711,4.5459 -6.5003,5.0361 -9.5472,8.3126 -4.6259,4.9746 -7.0768,11.3889 -11.8221,16.2502 -2.8585,2.9283 -7.3667,4.5702 -9.7094,7.9251 -2.296,3.2882 -1.2831,8.4516 -3.9579,11.4397 -2.8337,3.1656 -8.0601,2.3513 -11.3785,5.0043 -5.1019,4.079 -7.7583,12.3662 -11.2453,16.4651 m 59.995,-144.91 c -2.7411,4.4455 -7.1097,5.7354 -9.6801,9.3976 -3.9027,5.5601 -4.9762,16.7166 -3.5021,23.3469 0.888,3.994 1.7083,10.1212 4.3387,13.2556 2.5782,3.0719 7.5711,3.5004 9.5836,6.9692 2.1319,3.6747 -0.915,5.2825 -1.6161,9.4715 -1.078,6.4405 0.4599,11.9045 -2.1894,16.5888 m -14.3342,-153.515 c 1.914,4.8583 3.3882,10.135 6.3028,13.5296 4.4251,5.1538 11.4902,6.7378 14.931,12.5946 2.0726,3.528 0.483,5.9505 1.3408,9.9513 0.8407,3.9211 4.5336,6.3867 4.0934,10.373 -0.4663,4.2231 -5.2182,6.2341 -6.5965,10.2527 -2.1191,6.1785 -0.5593,12.6926 -3.3839,17.2735 m -11.1252,-152.32263 c 3.7017,3.68403 2.7478,6.43842 4.2468,10.65385 2.2757,6.4001 5.5281,10.65987 5.3244,17.44979 -0.1226,4.09012 -2.7194,7.03071 -3.0102,11.11227 -0.2849,4.0003 2.7402,7.47977 1.2645,11.20826 -1.5633,3.94986 -6.7234,2.0316 -10.1427,4.55316 -5.257,3.8769 -6.0528,18.628 -4.0806,23.6341 M 3992.361,872.65851 c 2.1555,4.75719 0.9922,8.85027 2.4871,13.06753 2.2696,6.40288 7.402,11.56499 9.9083,17.87908 1.5097,3.80348 1.2912,8.58209 3.424,12.07433 2.0904,3.4227 7.2157,4.88213 9.3301,8.29 2.2399,3.61021 1.384,9.75046 4.0268,13.07659 4.0633,5.1139 12.8388,6.80692 16.6532,10.60308 M 3927.5236,834.45137 c 5.1375,-0.93955 8.4803,1.23183 12.9518,1.07263 6.7887,-0.24164 11.7566,-2.89182 18.0208,-0.26415 3.7734,1.58288 4.8883,4.95467 8.387,7.07685 3.429,2.07989 7.7419,1.08788 10.3122,4.16621 2.7229,3.26111 0.9256,8.04667 2.8709,11.82346 2.9908,5.80676 9.2477,9.73529 11.4688,14.63727 m -142.5347,-62.50751 c 1.6896,4.94156 1.6957,10.25897 4.0581,14.05865 3.5865,5.7689 12.5155,10.28844 18.6875,13.12598 3.7179,1.70929 8.5552,5.2357 12.6462,5.30274 4.0096,0.0657 8.1329,-3.65635 12.1368,-3.88671 4.2417,-0.24404 8.5496,3.48123 12.7864,3.16604 6.514,-0.4846 13.0115,-5.93252 18.3054,-6.90067 M 3838.791,723.46558 c 1.3628,5.04182 -0.5626,8.77095 0.1214,13.19282 1.0383,6.71353 5.2008,12.67104 6.3972,19.35786 0.7207,4.02801 -1.4763,7.21182 -1.0886,11.28527 0.38,3.99233 3.8965,7.15278 3.5423,11.14784 -0.3752,4.23227 -4.8378,7.46822 -5.4435,11.67327 -0.9312,6.46521 4.0928,15.46655 5.8338,20.5585 m -67.6979,-134.07806 c 5.2203,-0.16374 8.2543,2.61605 12.7038,3.08483 6.7556,0.7118 12.1416,-1.10999 18.1263,2.10314 3.605,1.93553 4.1413,5.08325 7.2556,7.73718 3.0522,2.60107 7.5617,2.29892 9.7142,5.68283 2.2802,3.58483 -0.4131,7.95133 0.8574,12.00534 1.9533,6.23298 7.414,11.22305 8.8183,16.41832 m -145.0397,-54.18448 c 5.2225,0.0218 8.0434,2.8098 12.46,3.52601 6.7056,1.08745 13.3768,-0.64614 20.0349,0.70301 4.0108,0.81272 7.5656,3.72661 11.6454,4.0426 3.9986,0.30967 7.994,-2.90536 11.9587,-2.30011 4.2002,0.64119 7.7741,5.16093 11.9942,5.6515 6.4882,0.75425 14.0581,-3.42586 19.4373,-3.59459 m -127.2845,52.08173 c -0.6843,-5.5665 -3.1582,-11.16491 -4.0486,-17.03472 -0.6793,-4.47765 -0.1659,-9.97781 -0.3559,-14.5024 -0.1615,-3.83521 -1.0091,-9.81924 -0.169,-13.56466 1.3749,-6.13009 9.3646,-15.10307 14.7883,-18.27324 7.6509,-4.47198 22.0326,-4.71992 29.3323,-4.95014 m -83.016,131.19669 c 4.8479,-2.81971 8.568,-6.79217 13.2991,-10.37851 3.609,-2.73578 7.4336,-4.02521 10.5263,-7.33336 2.6212,-2.80439 3.7928,-5.96029 5.9531,-9.13307 3.5358,-5.19284 6.1493,-9.15563 9.29,-14.59718 4.4305,-7.6761 6.156,-14.28694 5.265,-21.53569 m -126.6743,76.90479 c 5.6067,0.13305 11.0025,-1.24271 16.9224,-1.69303 4.5158,-0.34355 9.4325,0.84316 13.9522,0.5539 3.8311,-0.24558 7.3924,-1.737 11.1937,-2.27146 6.2215,-0.87475 11.1727,-1.30539 17.347,-2.46603 8.7097,-1.63727 17.0505,-3.62554 23.3635,-7.2974 m -167.9918,35.57945 c 1.1494,-5.4893 7.3904,-15.82351 12.6938,-18.49005 4.0456,-2.03414 10.3399,-2.93527 14.7472,-3.97664 3.7356,-0.88308 8.2088,-2.86335 12.0096,-3.40139 6.2207,-0.88062 13.4204,-0.68682 19.6731,-0.0703 8.8202,0.86971 18.7676,4.23048 26.0687,4.40373 m -116.9095,102.79185 c -1.4849,-5.40758 -2.7916,-14.34828 -1.8263,-20.20606 0.7364,-4.46849 3.6565,-10.29721 5.5372,-14.41702 1.5937,-3.49227 3.0602,-8.29411 5.0575,-11.57212 3.269,-5.36505 7.7115,-10.41422 11.8807,-15.11429 5.8813,-6.63011 10.4238,-12.62099 11.9206,-19.76921 m 19.4635,147.2227 c -2.3783,-5.07864 -4.4746,-12.1888 -5.8055,-17.9743 -1.0153,-4.41333 0.1486,-6.77556 -3.0022,-10.02812 -2.6711,-2.75674 -5.0622,-2.90986 -8.5114,-4.59414 -5.6453,-2.75664 -11.5592,-5.25053 -16.7824,-8.74165 -7.3681,-4.9247 -15.158,-17.99463 -17.0918,-25.03643 m 138.2012,82.30186 c -5.3285,-1.74802 -10.7939,-1.44356 -16.6302,-2.53125 -4.4521,-0.82968 -8.5832,-2.81368 -13.076,-3.38379 -3.8084,-0.48286 -6.2436,0.0838 -10.0427,0.63007 -6.2178,0.894 -11.5908,2.30235 -17.8305,3.03799 -8.8019,1.03773 -25.5427,-7.43618 -28.6398,-14.04963 m 86.7921,69.74176 c 3.97,-3.961 9.6579,-8.1831 14.4835,-11.6406 3.6812,-2.6375 6.0182,-2.055 7.3099,-6.3951 1.0946,-3.679 0.1446,-5.4235 -0.31,-9.2348 -0.7441,-6.2379 -0.5667,-8.0915 -4.233,-13.1934 -5.1719,-7.19697 -10.6131,-11.53255 -17.5518,-13.80884 m -34.0199,138.50454 c 0.8187,-5.5483 1.0662,-12.7268 2.7969,-18.4059 1.3202,-4.3322 4.1118,-8.5544 5.5148,-12.8604 1.189,-3.65 1.3196,-7.7908 2.4049,-11.4728 1.7763,-6.0263 4.5633,-12.4721 7.5903,-17.9777 4.2701,-7.7665 11.4599,-17.7402 16.6296,-22.8984 m 17.7848,149.1899 c -4.552,-3.2753 -9.3902,-4.0379 -14.8777,-6.3043 -4.186,-1.7289 -8.2067,-4.7004 -12.3597,-6.5066 -3.5205,-1.5307 -8.7643,-2.85 -11.9864,-4.9357 -5.2735,-3.4136 -11.9474,-12.2537 -13.7379,-18.2758 -2.5259,-8.4951 0.036,-22.2002 1.1021,-29.4252 m 66.536,142.4588 c 0.4525,-5.5901 -0.2339,-11.9186 0.3918,-17.8225 0.4772,-4.5036 2.3007,-8.4777 2.2746,-13.0066 -0.023,-3.8388 -1.354,-6.7185 -2.0859,-10.4867 -1.1979,-6.1673 -2.268,-10.3857 -4.2337,-16.3529 -2.773,-8.4176 -4.5869,-15.7845 -10.5145,-20.0495 m 30.6155,166.8289 c -3.5045,-4.378 -8.4064,-11.1921 -10.3648,-16.7968 -1.494,-4.2753 -1.4668,-9.7643 -2.6167,-14.1447 -0.975,-3.7128 -2.9947,-7.7468 -3.8374,-11.4918 -1.3793,-6.1295 -1.9323,-13.1631 -1.9368,-19.4461 -0.01,-8.8631 2.5869,-19.8816 3.1762,-27.1611 m 104.2359,84.9953 c -5.0058,2.5292 -10.244,6.4362 -15.6721,8.8409 -4.1407,1.8344 -9.4104,2.464 -13.652,4.051 -3.5953,1.3456 -7.5553,3.842 -11.2239,4.9711 -6.0043,1.8482 -14.9922,2.2851 -21.1955,1.2882 -8.7505,-1.4063 -21.6694,-9.9493 -26.2329,-15.6503 m 159.6815,-55.5234 c -2.0523,5.2194 -4.2548,12.9504 -7.7974,17.7144 -2.7024,3.6342 -8.2307,7.5578 -11.9071,10.2017 -3.1161,2.2413 -7.5576,5.3141 -11.0518,6.9035 -5.719,2.6014 -10.857,4.9195 -16.6767,7.2872 -8.2095,3.3399 -18.1463,5.8446 -24.6649,9.1382 m 74.4334,-141.7152 c 1.7677,5.3223 4.0317,12.5567 4.5924,18.4672 0.4277,4.5087 -0.4807,9.2027 0.078,13.697 0.4737,3.8096 2.1361,7.861 2.5841,11.6735 0.7332,6.2398 0.5513,13.6813 -0.4012,19.8912 -1.3437,8.7601 -7.3267,19.6258 -9.9992,26.4225 m 32.9304,-132.3641 c -5.0021,-2.5367 -9.0138,-4.0176 -14.8476,-5.1167 -4.4502,-0.8384 -4.5928,-2.4048 -8.0166,0.5587 -2.9019,2.5123 -2.4338,4.3686 -3.8541,7.9348 -2.3245,5.8366 -2.7015,9.6655 -3.7806,15.8547 -1.5222,8.7308 -2.414,16.3249 -0.112,23.2557 m 102.4445,-10.7633 c -1.1894,-5.4805 -2.9944,-7.1517 -7.4076,-11.1222 -3.3664,-3.0287 -4.8441,-5.3589 -9.0934,-6.925 -3.6021,-1.3272 -6.5512,-0.6885 -10.3626,-1.145 -6.238,-0.7471 -12.1822,-1.4381 -18.3355,-2.7085 -8.68,-1.792 -19.7268,-7.2969 -26.2406,-10.6001 m 50.8029,115.1207 c -0.3479,-5.5975 -0.901,-14.4595 1.0426,-20.0691 1.4826,-4.2792 4.9046,-8.7832 6.8686,-12.864 1.6643,-3.4592 2.1782,-7.4033 3.6413,-10.9522 2.3947,-5.8084 4.6928,-10.1532 6.7666,-16.0839 2.9254,-8.366 4.7177,-15.6986 3.1689,-22.8354 m 42.4678,132.1895 c -3.9775,-3.9534 -6.7855,-2.7732 -12.6859,-3.4269 -4.5009,-0.4986 -8.6002,-1.8538 -13.1283,-1.9388 -3.8381,-0.072 -9.466,0.6347 -13.21,-0.2103 -6.1279,-1.3831 -15.5411,-9.6318 -18.3979,-15.2268 -4.0299,-7.8925 -5.2114,-21.3471 -5.6644,-28.6362 m 73.2302,129.064 c -0.6254,-5.572 1.6497,-14.296 3.6115,-19.8992 1.4966,-4.2743 2.5216,-6.1979 2.0239,-10.6994 -0.4223,-3.8157 -2.0362,-7.1211 -2.8466,-10.8733 -1.3264,-6.1412 -2.2697,-11.3412 -3.6188,-17.4772 -1.9032,-8.6557 -3.5202,-16.1455 -8.6997,-21.2937 m 95.9652,102.7748 c -5.5804,-0.5605 -11.1101,0.1853 -17.0468,0.1395 -4.5288,-0.035 -8.8845,-1.2345 -13.4049,-0.9582 -3.8317,0.2345 -7.6917,1.7315 -11.5132,2.0946 -6.2546,0.5943 -14.4571,0.1319 -20.5165,-1.528 -8.5475,-2.3416 -22.2743,-15.1211 -23.0887,-22.377 m 148.6685,-24.7685 c 1.3083,5.4533 3.2801,14.3146 2.1916,20.1502 -0.8303,4.4515 -4.42,10.996 -6.9985,14.7187 -2.1852,3.1558 -6.3715,8.2076 -9.5452,10.3661 -5.1944,3.5328 -15.126,5.5341 -21.4088,5.5777 -8.8627,0.062 -19.9835,-3.5518 -27.2504,-4.2818 m 5.2381,-115.0404 c 3.7784,4.1446 8.6847,7.2149 12.9792,11.3143 3.2759,3.1271 5.6149,7.0224 9.09,9.9267 2.9459,2.4616 6.8043,4.068 9.8153,6.449 4.928,3.8969 10.3572,9.1028 14.0338,14.1975 5.1864,7.1867 9.3042,19.7238 11.0079,26.8252 m -67.7245,-140.1359 c -3.6338,4.2717 -4.9944,8.3783 -7.3438,13.8302 -1.7922,4.1588 -3.2982,6.0778 -3.1754,10.6049 0.1044,3.8373 1.8011,5.7506 3.1088,9.3596 2.1401,5.9066 4.1718,10.5335 6.5174,16.362 3.3088,8.2219 6.1274,16.4562 11.0476,21.8534 m 47.8585,-139.4413 c -2.7609,4.8816 -6.5259,11.5317 -10.543,15.9033 -3.0643,3.3348 -7.2968,5.7521 -10.2975,9.1444 -2.5432,2.8757 -3.8199,6.1783 -5.9902,9.3445 -3.5521,5.182 -7.3994,10.6368 -11.7829,15.1377 -6.1836,6.3493 -15.3309,11.7744 -20.0629,17.3369 m 60.8384,-146.0827 c -2.9435,4.7738 -5.5002,9.7416 -8.2379,15.0087 -2.0884,4.0179 -4.2856,4.8284 -3.6831,9.316 0.5112,3.8038 2.4483,4.0208 4.8187,7.0399 3.8797,4.9413 9.1142,10.9969 11.2321,16.9115 2.9877,8.3434 -3.4546,24.1542 -7.0499,30.511 m -13.8155,-161.3778 c 2.0552,5.217 6.1975,6.6581 10.3983,10.8534 3.2046,3.2003 6.0626,7.8774 8.9201,11.3908 2.4224,2.9778 6.5571,8.5538 7.5893,12.2507 1.6893,6.0508 1.7312,14.9467 0.6358,21.1334 -1.5451,8.7273 -7.7163,20.2888 -11.5493,26.5052 m -12.4962,-163.57881 c 3.975,3.95604 10.1318,11.41237 11.6987,17.13823 1.1953,4.36783 0.6683,10.5212 0.993,15.03819 0.2757,3.82876 1.3289,8.59871 1.2296,12.43601 -0.1627,6.28045 -2.6017,17.23968 -6.8062,21.90698 -5.9311,6.5838 -14.0998,8.4514 -11.4234,15.2451 m -40.2954,-153.50056 c 2.3146,5.10844 5.9022,10.53517 8.0837,16.05682 1.6642,4.21207 2.0291,8.81197 3.9478,12.91437 1.6267,3.47719 4.1908,5.97161 6.2199,9.23019 3.3211,5.33327 5.8372,9.73382 9.3288,14.95691 4.9255,7.36789 11.2328,14.04355 16.4091,19.19514 M 3925.8285,825.52224 c 5.5168,-1.00893 12.6728,-3.32617 18.609,-3.26486 4.5284,0.0467 10.6204,2.1201 14.9985,3.27837 3.7111,0.98143 9.3971,2.27709 12.7575,4.1326 5.4999,3.0369 11.8553,9.00306 15.6121,14.03856 5.2996,7.10328 8.9964,18.85229 12.0105,25.50455 m -142.2363,-61.75333 c 1.8144,5.30642 4.9496,8.06187 8.6606,12.69575 2.8308,3.53483 3.4008,6.03186 7.5275,7.89594 3.4982,1.57971 5.8118,0.91244 9.6362,1.24297 6.2593,0.54096 10.302,-0.0502 16.5629,-0.57612 8.8318,-0.74192 18.8342,-1.02375 26.0182,-2.33758 m -78.4365,-105.34398 c 1.4635,5.41408 4.0081,11.56654 5.1239,17.39783 0.8512,4.44827 0.4164,9.06021 1.508,13.45559 0.9257,3.72562 2.8228,8.20397 3.3964,11.99923 0.9387,6.21165 0.4131,13.45219 -0.1759,19.70759 -0.831,8.82414 -3.0082,17.23452 -0.6455,24.14459 m -76.6458,-140.21916 c 5.6057,-0.17584 12.9855,-1.31657 18.8523,-0.40685 4.4753,0.69394 10.1434,3.42707 14.3451,5.11633 3.5616,1.43152 8.8564,3.2136 12.0403,5.35735 5.2111,3.50865 10.8775,10.91829 13.7918,16.48424 4.1111,7.85157 5.6628,20.14028 7.5685,27.19055 m -153.8393,-60.90046 c 5.6081,0.0234 12.7622,-0.76019 18.6274,0.15955 4.4741,0.70158 8.8263,2.79159 13.3152,3.39257 3.805,0.50903 7.6554,-0.16836 11.4851,0.0949 6.268,0.43082 11.7744,1.30879 18.025,1.94419 8.8174,0.89631 18.516,2.66729 25.8159,2.43832 M 1049.1869,1434.2153 c 4.1694,-3.1528 7.8562,-2.6717 11.8764,-4.6434 6.1036,-2.9935 9.9334,-7.2375 16.6628,-8.2044 4.0536,-0.5824 7.7379,1.5473 11.7859,0.9251 3.9674,-0.6097 7.1733,-4.5626 11.1689,-4.9462 4.2329,-0.4064 8.1524,3.3233 12.4025,3.1939 6.5344,-0.1989 13.0055,-4.8393 18.3836,-5.1284 m -166.68137,27.2784 c 4.13133,3.2023 6.83242,8.0348 10.89706,9.9136 6.17112,2.8526 15.09475,1.7197 21.87298,2.2484 4.08303,0.3186 9.01743,2.4614 13.02643,1.6246 3.9291,-0.8202 7.1843,-5.2061 11.0347,-6.3396 4.0791,-1.2008 9.879,0.7385 13.715,-1.0952 5.8978,-2.8193 10.0373,-10.8439 14.3336,-14.0927 m -154.25038,-11.0676 c 1.32419,-5.0564 2.47726,-3.707 6.72907,-5.1103 6.45536,-2.1304 10.04155,-3.9352 16.45616,-1.6826 3.86402,1.357 6.25498,4.6757 10.13361,5.9907 3.8014,1.2889 8.37706,-0.8347 12.00577,0.8809 3.84416,1.8175 3.56132,6.6348 6.60247,9.6064 4.67572,4.5686 12.6027,6.4771 16.85976,9.7768 m -116.19899,46.1143 c 0.48744,-5.2043 3.53126,-7.6083 4.75874,-11.9148 1.86368,-6.5384 1.3566,-11.8227 5.7488,-17.0124 2.64578,-3.1261 5.05315,-3.1447 8.50467,-5.3475 3.38278,-2.159 4.55548,-6.2415 8.41665,-7.3382 4.09042,-1.1617 10.98326,0.7229 14.52177,-1.6339 5.4404,-3.6236 4.92706,-16.8387 6.29155,-22.0489 m 1.00733,85.277 c -4.70016,2.2873 -8.84157,1.4095 -12.9943,3.0841 -6.30492,2.5425 -9.92238,9.584 -16.39812,11.6511 -3.90086,1.2452 -4.24039,-0.9839 -8.12749,-2.2721 -3.80972,-1.2626 -6.39578,0.2413 -8.11261,-3.3868 -1.81875,-3.8435 1.53335,-7.2927 1.14164,-11.5265 -0.60225,-6.5095 -4.39635,-12.0261 -3.89408,-17.3888 m 135.21134,18.0836 c -5.1581,0.8465 -8.53116,-1.2788 -13.00675,-1.1379 -6.79508,0.2137 -12.1712,2.5155 -18.76465,0.8565 -3.97176,-0.9994 -7.03909,-4.2115 -11.0738,-4.9146 -3.95438,-0.6891 -8.37343,2.1817 -12.31468,1.4218 -4.17527,-0.805 -8.81041,-5.2134 -13.06079,-5.1183 -6.53491,0.1461 -14.09004,7.4783 -18.93324,9.8352 m 159.28385,36.7626 c -2.8079,-4.4082 -3.9863,-8.9212 -6.8763,-12.3417 -4.3878,-5.1931 -8.5359,-8.5903 -11.3757,-14.7676 -1.7106,-3.7212 -5.0651,-10.8902 -8.8684,-12.4074 -3.7277,-1.487 -9.343,0.6811 -13.3116,0.081 -4.2042,-0.6362 -8.2115,-4.888 -12.4577,-5.1093 -6.52847,-0.3404 -14.00642,5.0954 -19.3215,5.9677 m 51.7483,123.6822 c 4.4828,-2.6881 10.4863,-4.6462 13.0702,-8.3032 3.923,-5.5522 4.295,-14.3244 6.3769,-20.7963 1.2541,-3.8986 4.2439,-7.5846 4.7694,-11.6461 0.515,-3.9807 -2.3798,-8.0993 -1.5381,-12.024 0.8917,-4.1578 5.71,-7.4178 6.4662,-11.6019 1.1625,-6.4329 -5.0185,-16.6087 -7.9118,-21.151 m -22.6636,152.4836 c -1.5954,-4.9776 -0.1953,-9.4652 -1.63,-13.707 -2.1781,-6.44 -10.249,-10.9939 -14.0858,-16.6066 -2.3111,-3.381 -1.6536,-5.6596 -2.8393,-9.5791 -1.1621,-3.8415 -4.443,-5.2463 -2.6205,-8.8224 1.9308,-3.7885 6.3079,-2.8443 9.6758,-5.4394 5.178,-3.9901 8.7083,-9.2556 13.3276,-12.0255 m -11.5668,152.9241 c 3.3093,-4.0461 8.157,-5.9588 10.5091,-9.769 3.571,-5.7849 3.4978,-14.7231 4.89,-21.3779 0.8387,-4.0088 3.4968,-8.3578 3.3549,-12.4506 -0.1391,-4.0114 -3.8763,-7.7547 -3.9625,-11.7677 -0.091,-4.2513 3.7092,-8.4967 3.4966,-12.7434 -0.3269,-6.5292 -6.0541,-13.715 -7.6981,-18.8441 m -83.30776,137.9011 c 4.60242,-2.4783 9.0061,-1.8827 13.00282,-3.9026 6.06805,-3.0666 10.65281,-8.7133 16.56482,-12.0708 3.56129,-2.0225 8.29613,-2.1465 11.54158,-4.6445 3.18081,-2.4482 4.06351,-7.4705 7.38654,-9.722 3.5204,-2.3851 9.0357,-1.1754 12.5891,-3.5101 5.4635,-3.5895 8.8608,-12.3284 12.2708,-16.4977 m -154.82361,84.7596 c 4.92404,-1.7544 9.03206,-0.3806 13.33039,-1.6369 6.52596,-1.9073 11.98416,-6.9641 18.38448,-9.2582 3.85543,-1.3818 8.50449,-0.7251 12.13658,-2.6173 3.55975,-1.8546 5.20828,-6.5968 8.9539,-8.0399 3.96802,-1.5288 8.8203,0.8941 12.85674,-0.4427 6.20598,-2.0552 11.42398,-9.0647 16.16647,-11.6184 m -164.4517,63.5599 c 4.83216,-1.9934 8.93233,-0.6611 13.19438,-2.0354 6.4709,-2.0864 11.66598,-6.9419 18.14632,-8.9994 3.90364,-1.2393 8.37065,-0.3916 12.11056,-2.0608 3.66543,-1.6361 5.60101,-6.2165 9.43557,-7.4037 4.06224,-1.2575 8.56512,1.7224 12.71878,0.8128 6.38618,-1.3985 12.17942,-7.6084 17.25333,-9.4161 m -150.85043,70.4314 c -0.82698,-5.1608 1.89828,-4.8891 4.68597,-8.3928 4.23248,-5.3193 6.93653,-8.2014 13.3892,-10.344 3.88696,-1.2906 8.65329,-0.5764 12.28789,-2.4636 3.56221,-1.8497 5.12596,-6.9856 8.81377,-8.5708 3.90677,-1.6793 8.57745,0.9117 12.64163,-0.3379 6.24862,-1.9212 11.47067,-8.3343 16.44989,-10.3884 m -69.3718,120.8542 c 2.36934,-4.6593 5.79243,-4.9731 9.00328,-8.0942 4.87492,-4.7385 9.33338,-13.3238 10.6522,-19.9931 0.79445,-4.0175 1.81223,-10.925 0.0735,-14.6329 -1.70419,-3.634 -6.57248,-5.2594 -7.59268,-9.1415 -1.08078,-4.1125 1.30187,-9.5539 -0.20502,-13.5299 -2.31682,-6.1131 -9.10298,-9.7251 -9.95513,-15.043 m 53.1391,106.8869 c -5.2273,0 -8.63605,-2.6728 -13.10675,-2.932 -6.78766,-0.3936 -13.49049,2.357 -20.28555,2.1213 -4.09321,-0.142 -8.01697,-2.4392 -12.10016,-2.1213 -4.00187,0.3116 -6.15783,4.6392 -9.04381,1.8501 -3.05733,-2.9546 0.17448,-6.162 -0.53017,-10.3548 -1.08337,-6.4463 -1.73879,-9.7638 0.70267,-14.565 m 142.41155,26.0017 c -5.2273,0 -8.63605,-2.6728 -13.10675,-2.932 -6.78766,-0.3936 -13.49049,2.357 -20.28555,2.1213 -4.09321,-0.142 -8.01697,-2.4392 -12.10016,-2.1213 -4.00188,0.3116 -7.37669,4.0289 -11.38838,3.8891 -4.24987,-0.1481 -7.52248,-4.443 -11.74426,-4.9498 -6.49093,-0.7792 -13.97518,3.1186 -19.36158,3.1186 m 176.03446,0.8741 c -5.2273,0 -8.63605,-2.6728 -13.10676,-2.932 -6.78765,-0.3936 -13.49048,2.357 -20.28554,2.1213 -4.09321,-0.142 -8.01698,-2.4392 -12.10016,-2.1213 -4.00188,0.3116 -7.37669,4.0289 -11.38838,3.8891 -4.24987,-0.1481 -7.52248,-4.443 -11.74426,-4.9498 -6.49093,-0.7792 -13.97518,3.1186 -19.36158,3.1186 m 176.03436,0.8741 c -5.2273,0 -8.636,-2.6728 -13.1067,-2.932 -6.7877,-0.3936 -13.4905,2.357 -20.2856,2.1213 -4.0932,-0.142 -8.01688,-2.4392 -12.10006,-2.1213 -4.00188,0.3116 -7.3767,4.0289 -11.38838,3.8891 -4.24987,-0.1481 -7.52248,-4.443 -11.74426,-4.9498 -6.49093,-0.7792 -13.97518,3.1186 -19.36158,3.1186 m 176.03438,0.8741 c -5.2273,0 -8.636,-2.6728 -13.1067,-2.932 -6.7877,-0.3936 -13.4905,2.357 -20.2856,2.1213 -4.0932,-0.142 -8.0169,-2.4392 -12.1001,-2.1213 -4.0019,0.3116 -7.3767,4.0289 -11.3884,3.8891 -4.2499,-0.1481 -7.5225,-4.443 -11.7443,-4.9498 -6.4909,-0.7792 -13.9752,3.1186 -19.3616,3.1186 m 164.6818,-12.124 c -2.9572,4.3104 -5.1306,6.6491 -7.8755,10.1852 -4.1676,5.3687 -7.369,2.2379 -14.1641,2.0022 -4.0932,-0.142 -8.017,-2.4392 -12.1002,-2.1213 -4.0018,0.3116 -7.3766,4.0289 -11.3883,3.8891 -4.2499,-0.1481 -7.5225,-4.443 -11.7443,-4.9498 -6.4909,-0.7792 -13.9752,3.1186 -19.3616,3.1186 m 156.3013,-43.6005 c -5.0506,1.3451 -7.3927,-3.1929 -11.841,-3.7051 -6.7537,-0.7777 -14.4809,7.122 -20.6757,9.9214 -3.7316,1.6864 -6.4447,0.1614 -10.4637,0.9483 -3.939,0.7712 -6.9935,4.6757 -10.9725,5.204 -4.2152,0.5597 -10.9835,-1.6273 -14.7094,0.4202 -5.7286,3.148 -8.644,13.7014 -11.6912,18.1429 m 112.9835,-87.4779 c 4.4248,2.7828 4.753,5.1979 7.2796,8.894 3.8358,5.6116 2.979,6.1663 -2.6701,9.9488 -3.403,2.2785 -8.9328,3.0359 -11.6225,6.1231 -2.6361,3.0257 -2.3158,8.6499 -4.7703,11.826 -2.6003,3.3648 -7.7886,3.3298 -10.7908,6.3407 -4.6159,4.6292 -5.0175,11.1673 -10.2218,12.5533 m 30.9302,-131.4611 c -4.2107,3.0972 -8.998,3.2127 -12.527,5.9693 -5.358,4.1852 -9.8777,14.547 -10.2186,21.3355 -0.2054,4.0892 1.8812,11.7428 4.8252,14.5898 2.8854,2.7903 7.9719,2.0853 9.4048,5.8343 1.518,3.9716 -4.2512,5.2807 -5.4893,9.3482 -1.9035,6.2536 10.7941,16.538 15.3536,19.4055 m 73.3087,-65.6862 c -5.1869,0.6359 -3.89,-2.5405 -6.7895,-5.9527 -4.402,-5.1808 -9.0856,-9.8396 -13.7036,-14.8288 -2.7818,-3.0054 -8.6789,-8.3512 -12.7728,-8.4497 -4.0124,-0.097 -8.5334,3.9403 -12.4594,4.7757 -4.1591,0.885 -9.63,-1.7092 -13.6431,-0.3047 -6.1701,2.1593 -11.4188,10.032 -15.7577,13.2235 m 157.2317,-6.5274 c -5.1821,-0.6845 -8.1594,-3.786 -12.5502,-4.6666 -6.6661,-1.3371 -14.2764,0.3322 -21.0727,0.1631 -4.094,-0.1019 -8.9343,-2.1923 -12.925,-1.2725 -3.9113,0.9015 -7.5531,5.6661 -11.0115,7.7032 -3.6639,2.158 -9.29,1.4789 -12.7515,3.9483 -5.3219,3.7967 -6.4957,10.6586 -11.8404,11.3138 m 160.88,-36.676 c -3.6388,3.7527 -7.3418,4.0496 -10.9502,6.7008 -5.4785,4.0249 -8.2099,8.815 -14.8307,10.3589 -3.9883,0.9301 -7.3344,-0.8912 -11.3779,-0.2411 -3.963,0.6371 -6.9164,4.4565 -10.9303,4.4177 -4.2522,-0.041 -7.61,-4.2726 -11.8417,-4.6871 -6.5062,-0.6373 -13.283,2.7843 -18.6228,2.079 m 154.017,-58.0009 c -5.1945,0.5844 -9.3223,-1.4753 -13.7603,-0.879 -6.738,0.9054 -12.7185,5.2245 -19.4338,6.2878 -4.0451,0.6405 -9.169,-0.6871 -12.9405,0.9086 -3.6964,1.564 -6.1375,6.6685 -9.5582,8.7683 -3.6239,2.2246 -10.0942,3.3503 -12.745,6.6745 -4.0755,5.111 -3.8609,13.0933 -7.6105,16.9602 m 140.0386,-85.269 c -2.2523,4.717 -5.9685,6.1011 -8.4974,9.7967 -3.8397,5.6108 -4.8803,12.1455 -9.4247,17.2024 -2.7374,3.0461 -6.372,3.6234 -9.3139,6.472 -2.8832,2.7918 -2.965,7.0082 -6.7241,8.4152 -3.9823,1.4905 -7.5521,-2.0903 -11.7928,-1.7845 -6.5201,0.4702 -12.9217,4.9693 -18.2743,5.5714 m 61.9191,-123.2992 c 3.4594,3.9182 3.1936,7.6776 5.4644,11.5372 3.4477,5.8598 8.5491,8.6992 9.0594,15.4777 0.3073,4.0832 -2.3171,6.6688 -2.5836,10.7554 -0.2612,4.0053 2.8379,7.6162 1.6628,11.4543 -1.2449,4.0661 -6.1578,5.6424 -8.0213,9.4643 -2.8651,5.8761 -1.9152,13.6447 -4.2361,18.5053 m -76.667,-112.611 c 5.2269,4e-4 7.6319,3.0161 11.9925,4.0344 6.6204,1.5461 12.8902,0.6356 19.2007,3.1658 3.8013,1.5241 6.0722,5.0938 9.9084,6.5275 3.7599,1.4051 8.0851,-0.4962 11.4089,1.754 3.5211,2.3838 3.4822,7.5762 6.5595,10.5102 4.7313,4.5109 11.9911,5.92 15.5557,9.9576 m -146.815,8.4468 c 5.2257,-0.1127 11.8563,0.3394 15.7008,-1.9564 5.837,-3.4857 9.0405,-12.0958 13.5317,-17.1999 2.7054,-3.0747 6.0607,-3.6716 9.0645,-6.4552 2.944,-2.7283 3.2713,-7.6935 6.5443,-10.0172 3.4673,-2.4617 7.661,-0.2847 11.6719,-1.6952 6.1666,-2.1687 10.2291,-6.1987 15.615,-6.1984 m -146.827,71.175 c 3.6471,-3.7446 7.7415,-4.237 11.1484,-7.1431 5.1727,-4.4123 8.149,-10.1294 13.8447,-13.8421 3.431,-2.2365 7.1152,-2.2018 10.6253,-4.3115 3.4401,-2.0677 4.2325,-6.4054 8.2442,-6.5357 4.2498,-0.1382 6.3588,4.4868 10.4549,5.6274 6.2977,1.7536 14.9543,-0.4563 20.3391,-0.5725 m -154.1839,31.6008 c 2.5923,4.5385 4.0439,10.2737 7.4231,13.2114 5.1305,4.4603 15.2786,5.0557 21.9911,6.1331 4.0435,0.649 9.552,2.7721 13.5318,1.807 3.9006,-0.946 7.0955,-5.5831 10.8358,-7.0392 3.9624,-1.5425 9.8074,-0.1459 13.4923,-2.2673 5.6655,-3.2617 9.0787,-12.156 12.8368,-16.0146 M 1340.663,1647.326 c 3.9589,3.413 3.6391,7.0448 6.0938,10.7898 3.7268,5.686 8.9942,9.4056 11.9847,15.5118 1.8015,3.6782 1.666,8.2733 3.9042,11.703 2.1937,3.3614 7.2965,4.4947 9.2233,8.0155 2.0411,3.7299 -0.841,8.1656 0.3289,12.2535 1.7986,6.2852 8.5472,12.1055 11.2185,16.7821 m -109.3466,-124.917 c 5.1353,0.974 5.5554,4.0674 9.055,6.8607 5.3134,4.241 9.963,6.6729 13.647,12.3871 2.2192,3.4422 2.6025,8.1193 5.2601,11.2353 2.6046,3.054 8.1407,3.7095 10.9963,6.5303 3.0251,2.9882 5.8546,9.3366 9.8012,10.9184 6.0678,2.432 13.1248,-0.7193 17.3299,2.6463 m -131.5364,-104.1004 c 0.3291,5.2167 -1.6631,11.2519 0.1383,15.3512 2.7349,6.2238 10.0858,11.1013 14.5795,16.2032 2.7069,3.0733 4.7742,8.003 8.2261,10.2067 3.3831,2.1599 8.566,1.2138 11.9102,3.4338 3.5427,2.3518 6.3685,8.1173 10.3738,9.5432 6.158,2.1924 14.7046,-1.3721 19.9962,-0.3685 m -95.0525,-132.1806 c -1.1679,5.0948 -4.5056,9.5864 -4.4745,14.0643 0.047,6.7986 3.3657,13.9785 4.7409,20.6367 0.8284,4.0108 1.0243,10.513 3.6495,13.6561 2.5729,3.0804 8.7141,3.5222 11.8153,6.0705 3.2854,2.6997 2.78,7.407 5.4292,10.7322 4.0729,5.1124 7.4527,7.2697 7.7918,12.6452 m -76.4049,-129.3933 c 5.2267,-0.051 7.5791,2.7895 11.9335,3.8327 6.611,1.584 10.5502,1.2335 14.3239,6.8892 2.2731,3.4068 4.2748,9.5204 7.804,11.5979 3.4588,2.0362 8.6338,0.3302 11.7214,2.8944 3.271,2.7165 0.03,4.998 0.2824,9.242 0.3882,6.525 1.7526,11.6275 0.5492,16.8773 m -134.2999,-38.8738 c 4.4772,-3.3856 9.9506,-8.6169 15.3081,-11.1865 4.0869,-1.9601 10.5359,-2.5566 14.9758,-3.4671 3.7634,-0.7722 7.8932,-2.5874 11.6812,-3.2289 6.1999,-1.0498 11.9559,-1.5116 18.2064,-2.1995 8.8173,-0.9705 19.8529,-0.1943 27.1512,-0.5867 m -160.67384,29.1356 c 4.43637,3.4387 8.32661,4.415 13.98349,6.2327 4.31523,1.3866 7.21098,3.2528 11.73735,3.4898 3.83677,0.2005 6.4822,-1.0854 10.2621,-1.7721 6.1866,-1.1238 9.875,-1.595 15.6714,-4.0324 8.1767,-3.4383 16.3919,-7.2813 22.2222,-11.6901 m -157.57373,-6.0591 c 1.42196,-5.4297 10.57094,-15.7009 16.43203,-16.6733 4.471,-0.7419 11.68458,1.3535 16.09596,2.3934 3.73935,0.8811 8.3924,1.1285 12.07094,2.2362 6.02063,1.813 13.03267,4.3632 18.36513,7.6956 7.52219,4.7008 14.42241,14.3898 20.19949,18.8677 m -130.82304,52.5132 c 0.52343,-5.5885 0.3977,-13.4367 2.32187,-19.0581 1.46778,-4.2881 5.73906,-9.4262 8.32941,-13.1456 2.19537,-3.153 4.77334,-7.9448 7.49126,-10.6596 4.44839,-4.4433 13.17647,-6.4506 19.06797,-8.6471 8.3108,-3.0984 9.43989,-8.2312 11.29159,-15.3018 m 13.83366,95.7257 c -5.0472,2.4562 -9.72622,5.7131 -14.88824,8.6547 -3.93772,2.244 -8.87652,4.104 -12.98644,6.0141 -3.48358,1.6195 -11.28596,3.8436 -15.08154,3.2507 -6.21217,-0.9704 -15.85839,-11.5403 -17.79553,-17.5225 -2.73262,-8.4387 -1.39836,-21.9519 -0.71675,-29.2293 m 145.79509,27.89 c -5.53894,0.9089 -12.52368,3.2606 -18.4655,3.2508 -4.5326,-0.01 -10.11573,-1.9827 -14.59236,-2.6926 -3.79464,-0.6014 -8.09736,-0.3645 -11.88787,-0.9913 -6.20387,-1.0258 -10.87858,-2.2605 -17.13593,-2.8756 -8.82687,-0.8678 -16.05358,0.2693 -22.62609,3.4678 m 147.67382,33.5212 c -3.0152,-4.7337 -8.5051,-7.4482 -12.1467,-12.1431 -2.778,-3.5814 -4.1607,-9.7858 -6.1633,-13.852 -1.6979,-3.4465 -2.5358,-3.6546 -5.8012,-5.6781 -5.3443,-3.3118 -7.5141,-2.7296 -13.7864,-3.173 -8.848,-0.6256 -17.99667,-0.8774 -25.20953,0.3063 m 45.54973,106.9478 c 4.8139,-2.8866 5.9442,-5.5958 8.7027,-10.8582 2.1043,-4.0144 4.5767,-6.6409 5.7053,-11.0305 0.9564,-3.7209 0.342,-7.2459 0.8019,-11.0602 0.7528,-6.2427 2.0595,-11.8617 3.1634,-18.0518 1.5571,-8.732 3.8451,-15.7109 -0.081,-21.8751 m -23.6325,150.432 c -1.7132,-5.3451 -3.6795,-9.5362 -6.7162,-14.6427 -2.3166,-3.8953 -3.7592,-7.5278 -6.6421,-11.0255 -2.444,-2.9646 -6.7227,-6.8792 -8.4568,-10.3072 -2.8381,-5.6105 -0.5097,-19.4812 3.0757,-24.6461 5.0577,-7.2859 18.2592,-12.4288 24.5279,-16.1877 m -13.9653,155.0146 c 3.5537,-4.3449 5.4235,-8.3668 7.8401,-13.7947 1.8434,-4.1406 4.0878,-6.879 4.8874,-11.3405 0.6775,-3.7818 -0.439,-6.9395 -0.4533,-10.7812 -0.023,-6.2876 -0.1669,-11.07 -0.6402,-17.3403 -0.6676,-8.8452 -0.3967,-18.2541 -2.6277,-25.2145 m -79.01298,127.1528 c 4.94224,-2.6612 9.59623,-6.6982 14.80074,-9.5653 3.97013,-2.1871 8.54376,-3.1929 12.40624,-5.5649 3.27379,-2.011 5.59415,-5.0664 8.68134,-7.3531 5.05275,-3.7427 9.55011,-6.8052 14.65731,-10.4735 7.20445,-5.1746 15.50775,-9.5154 20.13535,-15.1733 m -150.89409,81.9744 c 5.28761,-1.8839 10.66236,-5.0137 16.26851,-6.9832 4.27652,-1.5024 8.87166,-1.6694 13.03997,-3.45 3.53307,-1.5097 6.49327,-4.1307 9.92692,-5.8542 5.61981,-2.8208 11.03808,-5.3143 16.8701,-7.666 8.22689,-3.3175 18.08477,-5.6584 24.52059,-9.1239 m -163.66381,63.1863 c 5.18894,-2.1406 10.79357,-5.6245 16.41283,-7.5563 4.28652,-1.4737 8.96494,-1.68 13.17713,-3.3543 3.57028,-1.4196 6.69991,-3.9115 10.19459,-5.5078 5.7197,-2.6126 11.72161,-4.7458 17.73876,-6.5726 8.48805,-2.5771 18.92118,-3.8442 25.80676,-6.2975 m -156.76265,80.494 c -0.88804,-5.5418 2.69164,-18.2334 7.26498,-22.0262 3.48865,-2.8932 10.18884,-4.5891 14.36591,-6.3491 3.5405,-1.4922 6.60447,-4.0232 10.06052,-5.7011 5.65647,-2.7461 10.61877,-5.6683 16.40944,-8.12 8.16855,-3.4586 18.90684,-5.4163 25.66392,-8.2038 m -74.0336,125.1935 c 2.54428,-5.0033 6.55762,-12.1265 10.75271,-16.3348 3.20011,-3.2101 6.13562,-3.3696 7.25907,-7.7603 0.9519,-3.7218 -0.59945,-4.0281 -2.01169,-7.6008 -2.31139,-5.8475 -4.39125,-11.098 -6.45827,-17.036 -2.91585,-8.3765 -7.25655,-18.9825 -8.41296,-26.1992 m 62.17637,114.5374 c -5.61326,0 -11.85373,1.1934 -17.79434,1.0607 -4.53166,-0.1012 -8.99231,-1.5271 -13.5237,-1.4143 -3.84098,0.096 -7.5607,1.4364 -11.38838,1.7678 -6.2647,0.5424 -19.29,-3.7932 -22.65797,-9.1027 -4.75102,-7.4898 -0.47758,-25.0075 2.83561,-31.5229 m 150.57656,39.2114 c -5.61326,0 -11.85373,1.1934 -17.79434,1.0607 -4.53166,-0.1012 -8.99231,-1.5271 -13.5237,-1.4143 -3.84098,0.096 -7.5607,1.4364 -11.38838,1.7678 -6.2647,0.5424 -12.57872,0.6069 -18.862,0.3536 -8.86346,-0.3573 -19.16971,-2.6389 -26.47936,-2.6389 m 176.09556,0.8711 c -5.61326,0 -11.85373,1.1934 -17.79434,1.0607 -4.53166,-0.1012 -8.99231,-1.5271 -13.5237,-1.4143 -3.84098,0.096 -7.5607,1.4364 -11.38838,1.7678 -6.26471,0.5424 -12.57872,0.6069 -18.862,0.3536 -8.86346,-0.3573 -19.16971,-2.6389 -26.47936,-2.6389 m 176.09551,0.8711 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.56069,1.4364 -11.38837,1.7678 -6.26471,0.5424 -12.57873,0.6069 -18.862,0.3536 -8.86346,-0.3573 -19.16971,-2.6389 -26.47936,-2.6389 m 176.09553,0.8711 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 m 172.2108,-16.1244 c -3.1756,4.6285 -7.9689,18.1889 -13.9095,18.0562 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 m 158.699,-43.9265 c -5.4235,1.4444 -11.6246,-0.5351 -17.4062,0.8322 -4.4103,1.0431 -7.2529,1.7315 -11.1562,4.0355 -3.3084,1.9533 -8.2292,5.3027 -11.9266,6.3456 -6.0516,1.7068 -11.8809,1.6148 -18.0142,2.9987 -8.6519,1.9521 -12.6159,7.0699 -16.7511,13.0973 m 110.2734,-100.3473 c 4.7515,2.9883 15.1931,9.7773 16.2205,15.6291 0.7837,4.464 -5.4347,14.3143 -8.9094,17.2244 -2.9452,2.4671 -5.3539,5.5175 -8.1713,8.1293 -4.6112,4.2746 -6.4983,8.1144 -10.3706,13.069 -5.4624,6.9893 -16.95,16.2637 -24.0125,18.1445 m 34.0252,-132.9605 c -4.5216,3.326 -8.073,7.2529 -12.3626,11.3642 -3.2722,3.1363 -5.3911,3.2223 -6.1692,7.6872 -0.6592,3.7848 0.8362,1.9371 3.5356,4.6706 4.4181,4.4738 12.1259,14.3424 11.6583,20.6115 -0.6597,8.8434 -2.0952,13.2767 4.0923,17.1681 m 69.6349,-48.9791 c -5.5698,0.6828 -17.6451,-5.3725 -20.978,-10.2915 -2.5425,-3.7523 -3.3895,-8.1195 -6.3768,-11.5283 -2.5326,-2.8891 -2.5563,-2.3166 -6.371,-2.77 -6.2435,-0.7421 -8.422,-0.2023 -14.3994,1.7481 -8.4319,2.7513 -16.8921,5.2865 -22.7802,9.6176 m 150.7152,-4.8328 c -5.5648,-0.7351 -11.8557,-0.4627 -17.7326,-1.3399 -4.4831,-0.6691 -8.2649,-2.5051 -12.797,-2.5623 -3.8416,-0.048 -6.5628,1.2882 -10.3277,2.0531 -6.162,1.2519 -8.2595,1.5311 -13.2998,5.2904 -7.11,5.3029 -18.5056,12.862 -25.7587,13.7512 m 166.3414,-39.4144 c -3.9076,4.0297 -8.2047,10.1294 -13.0307,13.5957 -3.6813,2.6441 -10.2303,4.2213 -14.5036,5.7313 -3.6221,1.2803 -8.2999,3.541 -12.0691,4.2845 -6.1691,1.2169 -13.1677,1.4605 -19.4548,1.3445 -8.8688,-0.1637 -20.0069,-2.6405 -27.2534,-3.5977 m 156.2843,-57.9891 c -5.578,0.6274 -10.6545,2.5815 -16.4421,3.9265 -4.415,1.0261 -9.541,0.5301 -13.9798,1.4485 -3.7624,0.7788 -6.5115,2.5623 -10.0978,3.9397 -5.8697,2.2544 -8.4681,2.4731 -12.9734,6.8582 -6.3553,6.1859 -12.0166,14.6039 -17.105,19.8515 m 141.7395,-87.737 c -2.4186,5.0653 -4.7163,11.863 -8.0301,16.795 -2.5277,3.7624 -6.6125,7.0372 -9.3076,10.6815 -2.2842,3.0892 -4.5534,7.4876 -7.1421,10.326 -4.237,4.6455 -12.9704,9.6701 -19.0738,11.1833 -8.6096,2.1345 -20.4214,1.0441 -27.6852,1.8611 m 67.6751,-138.3946 c 3.7148,4.2075 9.341,9.3816 12.2468,14.5645 2.2167,3.9536 3.8087,10.5763 4.6797,15.0242 0.7386,3.7703 1.9891,9.2138 1.9169,13.0549 -0.1181,6.2866 -1.7126,13.8986 -3.7357,19.8524 -2.8539,8.3988 -9.1805,18.0802 -12.33,24.6764 m -84.9318,-125.6164 c 5.6127,4e-4 13.3011,-0.1807 19.0836,1.1856 4.4111,1.0422 9.1048,3.966 13.4048,5.3993 3.6449,1.2146 8.1474,1.5349 11.7577,2.8485 5.909,2.1501 12.7071,5.6598 17.7432,9.4248 7.1042,5.3111 14.6744,14.6831 19.5118,20.1623 m -153.8871,5.379 c 5.6116,-0.1211 6.9522,-1.8441 11.3475,-5.8416 3.3528,-3.0494 6.6263,-4.9629 9.3666,-8.5736 2.3224,-3.0607 4.3228,-7.5236 6.8889,-10.3822 4.2,-4.6786 10.1834,-9.0533 15.4538,-12.4826 7.4346,-4.8374 22.0201,-6.249 29.3291,-6.2485 m -153.3812,73.9685 c 3.9164,-4.0212 7.6845,-9.7503 12.1981,-13.6144 3.4431,-2.9476 8.4715,-4.9605 12.1146,-7.6573 3.0879,-2.2862 5.7584,-5.8183 8.8663,-8.0763 5.0867,-3.6957 15.9417,-6.7622 22.1954,-6.1125 8.8219,0.9165 18.3322,6.049 25.6397,5.8913 m -146.127,36.1295 c 2.7838,4.8736 5.6951,6.3378 10.7264,9.4968 3.8381,2.4097 5.6946,4.032 10.1755,4.7128 3.7982,0.5768 6.0954,-0.9148 9.8919,-1.5021 6.2137,-0.9611 9.089,-2.1155 14.7347,-4.8838 7.964,-3.9052 15.1085,-8.5399 20.2085,-13.7763 m -111.419,-71.2235 c 4.3822,3.5073 10.4995,9.0801 13.7248,14.0702 2.4604,3.8066 3.6919,8.9425 5.9851,12.8523 1.9441,3.3138 4.8445,5.9996 6.972,9.1987 3.482,5.2359 7.2822,10.8445 9.7651,16.6216 3.5024,8.1495 4.8537,18.5188 8.4787,24.8653 m -115.6068,-129.3483 c 5.5144,1.0459 14.9806,4.5216 19.2456,8.6585 3.2535,3.1556 5.7645,8.6721 8.4429,12.3287 2.2707,3.0992 5.3157,5.3334 7.834,8.2348 4.1216,4.7487 6.3699,7.8375 11.3655,11.6558 7.0471,5.3863 17.5422,6.9752 23.2488,11.5425 m -128.1506,-97.6357 c 0.3534,5.6019 1.684,8.3783 4.7456,13.4705 2.3356,3.8844 3.1866,7.394 6.3796,10.611 2.7068,2.7265 5.6194,3.8013 8.8078,5.9446 5.2185,3.5078 8.6632,6.3178 14.2672,9.1695 7.9052,4.0225 16.4704,5.5135 23.6513,6.8755 m -87.8746,-121.2778 c -1.2541,5.4709 -0.2456,9.9255 0.01,15.8619 0.1927,4.5286 -0.8228,8.3072 0.2082,12.7209 0.8743,3.7413 2.8675,5.2845 4.8765,8.5588 3.2882,5.359 6.6202,6.2447 11.4566,10.2634 6.8226,5.6689 12.1453,20.5617 12.6054,27.8565 m -85.6274,-137.9082 c 5.6127,-0.054 14.0556,-0.4682 19.6915,1.4114 4.2992,1.4338 10.1942,7.4248 13.0724,10.9255 2.44,2.9671 4.4422,4.514 7.54,6.7853 5.0702,3.7174 12.7666,6.8006 16.3987,11.9331 5.1236,7.2402 0.5552,24.2725 -1.0779,31.3968 m 1730.4352,1.7821 c -0.9384,-5.142 0.532,-8.9041 -0.048,-13.3443 -0.8809,-6.7413 -4.0642,-10.2426 1.1954,-14.5491 3.1683,-2.5941 7.8163,-2.0096 10.9813,-4.6083 3.102,-2.547 3.6243,-8.7408 6.0844,-11.9125 2.6063,-3.36 6.0783,-1.9338 9.9295,-3.7324 5.921,-2.7652 9.7572,-5.9167 15.1391,-6.1286 m -74.1303,132.0282 c 0.3335,-5.2164 2.6039,-7.0958 4.2483,-11.2607 2.4967,-6.3235 4.5897,-9.5004 10.1297,-13.4416 3.3372,-2.3741 8.9985,-4.1575 11.2618,-7.5705 2.2182,-3.345 0.8318,-9.6215 2.059,-13.4432 1.3002,-4.0485 6.2157,-7.286 7.1306,-11.4382 1.4067,-6.3841 -2.1428,-15.3972 -3.1098,-20.6957 m -100.0339,128.5971 c 5.007,-1.5005 8.2027,1.183 12.675,0.9558 6.7901,-0.3451 14.7068,-4.6255 20.7207,-7.7969 3.6226,-1.9104 8.6753,-2.5922 11.7445,-5.3037 3.008,-2.6575 3.4848,-8.0806 6.4381,-10.7989 3.1287,-2.8798 8.8982,-3.0778 11.8403,-6.1473 4.5235,-4.7193 5.4204,-16.1642 5.7641,-21.5394 M 2752.141,1649.518 c 3.7161,-3.676 5.9357,-2.1562 10.3341,-2.9964 6.678,-1.2757 14.5189,-5.5896 19.8525,-9.8056 3.2129,-2.5396 8.1631,-4.7333 10.4253,-8.1471 2.2171,-3.3457 1.1429,-8.6 3.5469,-11.8143 2.5468,-3.4053 7.27,-3.0933 10.4807,-5.88 4.9365,-4.2846 6.3454,-10.2835 11.5048,-11.8296 m -109.2509,126.1136 c 2.9304,-4.3284 7.1835,-6.8875 9.1837,-10.894 3.037,-6.0828 2.8002,-13.1657 6.1763,-19.0668 2.0337,-3.5547 6.2605,-5.6342 7.941,-9.369 1.6469,-3.6605 0,-8.4307 2.0146,-11.9044 2.1311,-3.6799 7.367,-4.2676 9.9507,-7.6446 3.9724,-5.192 4.5824,-12.3095 8.4116,-16.0974 m -123.637,64.4849 c 3.6471,3.7447 4.2684,8.3155 7.3695,11.546 4.7081,4.9047 12.7805,7.7416 18.7882,10.924 3.6189,1.917 8.2273,5.5874 12.3085,5.9249 4,0.3308 8.4785,-3.1928 12.489,-3.3538 4.2486,-0.1706 9.5451,3.0457 13.6906,2.1025 6.3737,-1.4502 12.9833,-11.6516 16.0028,-16.1117 m -156.8341,-36.5545 c 5.1571,0.8501 10.0993,2.9205 14.5517,2.4439 6.7598,-0.7234 12.204,-4.9568 18.9907,-4.5538 4.0882,0.2428 5.1681,3.0517 8.9624,4.5927 3.7187,1.5103 7.8975,-0.023 11.1071,2.3876 3.4001,2.5538 3.2928,7.5535 6.2399,10.618 4.5311,4.7116 11.9068,6.7416 15.6649,10.6003 m -147.1309,-70.0145 c 5.2213,-0.2399 7.6212,2.5897 12.002,3.5161 6.6512,1.4066 11.3181,1.7527 16.7228,5.8768 3.2557,2.4844 4.6955,6.7072 8.1074,8.9724 3.3441,2.22 7.6012,1.4844 10.0371,4.6747 2.5804,3.3797 1.369,8.8862 3.7693,12.3957 3.6906,5.3959 15.4591,8.4666 20.7732,9.3425 m -145.6955,-6.8244 c 3.4594,-3.9183 7.2517,-4.1579 10.7779,-6.9179 5.3537,-4.1903 8.3272,-10.0558 14.2081,-13.467 3.5426,-2.0548 7.4703,-1.6817 11.0385,-3.6918 3.4971,-1.9702 4.9119,-6.6448 8.6927,-7.9931 4.0052,-1.4284 8.1099,1.7914 12.3063,1.1071 6.452,-1.0522 11.859,-5.868 17.2393,-6.1152 m -72.5347,115.1549 c -2.3599,-4.6642 -1.1672,-8.6429 -2.6732,-12.8602 -2.2864,-6.4029 -6.7657,-11.2185 -8.2998,-17.8421 -0.9241,-3.9899 0.6005,-7.6736 -0.2953,-11.6698 -0.878,-3.9165 -4.8163,-6.3823 -4.5049,-10.3837 0.3299,-4.2389 5.1516,-4.6733 7.3984,-8.283 3.4544,-5.55 3.6968,-12.3764 7.2615,-16.4139 m 67.1209,121.3481 c -5.1833,-0.6757 -8.2784,-3.6405 -12.6841,-4.4417 -6.6891,-1.2164 -12.866,0.7004 -19.1597,-1.8712 -3.7911,-1.549 -4.6607,-4.4687 -8.008,-6.8277 -3.2807,-2.3119 -7.8152,-1.5535 -10.2843,-4.7181 -2.6158,-3.3525 -0.9718,-8.1427 -2.9296,-11.9171 -3.0101,-5.8031 -9.7027,-9.6536 -12.1344,-14.4597 m 139.5684,85.6991 c -3.6389,-3.7526 -3.168,-7.1767 -5.2722,-11.1294 -3.1946,-6.0014 -9.4723,-11.7799 -14.6387,-16.199 -3.1122,-2.662 -7.3464,-7.0699 -11.3194,-8.0627 -3.8939,-0.973 -8.6483,1.7922 -12.5597,0.8906 -4.1437,-0.9551 -6.5361,-5.7299 -10.5811,-7.0403 -6.2191,-2.0146 -14.4825,-0.085 -19.8236,-0.7817 m 153.9578,58.8348 c -5.1821,0.6845 -8.5902,-1.6263 -13.0676,-1.5524 -6.7978,0.1123 -12.936,2.4323 -19.7229,2.0257 -4.0882,-0.2449 -7.5926,-2.62 -11.688,-2.6364 -4.0138,-0.016 -7.3794,3.2019 -11.266,2.1996 -4.1174,-1.0619 -4.4543,-5.5771 -7.8522,-8.1328 -5.2242,-3.9293 -11.7467,-5.1138 -15.4963,-8.9806 m 160.2667,35.5586 c -5.1433,0.9301 -4.6001,-2.5735 -8.0442,-5.4344 -5.229,-4.3437 -11.4413,-7.3042 -16.8891,-11.3717 -3.2817,-2.4502 -8.5205,-6.6177 -12.6055,-6.9087 -4.0036,-0.2853 -8.2148,3.1475 -12.2245,2.9684 -4.2477,-0.1897 -8.2397,-4.1837 -12.4912,-4.2447 -6.5367,-0.094 -13.6332,4.9295 -18.973,5.6348 m 156.1655,10.6771 c -4.2107,-3.0972 -5.7708,-7.4331 -9.4134,-10.0377 -5.5305,-3.9545 -14.1372,-5.2296 -20.6728,-7.1031 -3.9369,-1.1285 -9.5346,-4.1585 -13.5639,-3.4276 -3.9491,0.7164 -8.0201,6.1785 -11.0916,8.7618 -3.254,2.7367 -8.7764,3.6905 -11.5768,6.8897 -4.3057,4.9187 -3.4151,11.7667 -8.7149,12.7252 m 67.4059,67.7443 c 4.3994,-2.8228 10.3251,-3.1475 13.4556,-6.3487 4.7528,-4.8602 -1.3392,-15.5713 1.1251,-21.9068 1.4845,-3.8164 5.2148,-3.7646 7.72,-7.0044 2.4553,-3.1754 2.6355,-9.4463 3.3901,-13.3877 0.7994,-4.1754 2.1764,-11.8602 0.069,-15.5526 -3.2399,-5.6771 -13.2264,-8.8288 -17.5653,-12.0203 m 29.9444,131.2057 c -5.2247,0.1356 -4.3665,-3.6284 -7.5786,-6.7475 -4.8767,-4.7356 -9.8822,-7.637 -13.6561,-13.2927 -2.2732,-3.4068 -3.4127,-8.8018 -6.5477,-11.4356 -3.0727,-2.5813 -8.8516,-1.8792 -12.0236,-4.3386 -3.3603,-2.6054 -1.4508,-5.2087 -2.5502,-9.3151 -1.6903,-6.3134 0.1044,-6.1784 4.6378,-9.0871 m 116.8675,88.6738 c -2.4435,-4.6199 -2.8846,-9.2796 -5.3873,-12.9928 -3.7996,-5.6376 -14.0632,-9.2391 -20.6606,-10.8802 -3.9742,-0.9887 -8.0353,-3.4913 -12.1277,-3.6467 -4.0109,-0.1522 -7.1303,3.04 -10.664,1.1373 -3.7434,-2.0158 -4.5086,-7.6625 -8.0427,-10.0256 -5.4337,-3.6333 -16.8446,0.9358 -22.2284,1.0755 m 157.2578,45.0575 c -5.2273,0 -8.636,-2.6728 -13.1067,-2.932 -6.7876,-0.3936 -13.4905,2.357 -20.2855,2.1213 -4.0932,-0.142 -8.017,-2.4392 -12.1002,-2.1213 -4.0018,0.3116 -7.3766,4.0289 -11.3883,3.8891 -4.2499,-0.1481 -7.5225,-4.443 -11.7443,-4.9498 -6.4909,-0.7792 -6.3913,-0.9583 -8.6135,-5.8642 m 165.2862,9.8569 c -5.2273,0 -8.636,-2.6728 -13.1067,-2.932 -6.7877,-0.3936 -13.4905,2.357 -20.2855,2.1213 -4.0932,-0.142 -8.017,-2.4392 -12.1002,-2.1213 -4.0019,0.3116 -7.3767,4.0289 -11.3883,3.8891 -4.2499,-0.1481 -7.5225,-4.443 -11.7443,-4.9498 -6.4909,-0.7792 -13.9752,3.1186 -19.3616,3.1186 m 176.0343,0.8741 c -5.2273,0 -8.6361,-2.6728 -13.1067,-2.932 -6.7877,-0.3936 -13.4905,2.357 -20.2856,2.1213 -4.0932,-0.142 -8.0169,-2.4392 -12.1001,-2.1213 -4.0019,0.3116 -7.3767,4.0289 -11.3884,3.8891 -4.2498,-0.1481 -7.5225,-4.443 -11.7442,-4.9498 -6.4909,-0.7792 -13.9752,3.1186 -19.3616,3.1186 m 176.0343,0.8741 c -5.2273,0 -8.6361,-2.6728 -13.1068,-2.932 -6.7876,-0.3936 -13.4904,2.357 -20.2855,2.1213 -4.0932,-0.142 -8.017,-2.4392 -12.1001,-2.1213 -4.0019,0.3116 -7.3767,4.0289 -11.3884,3.8891 -4.2499,-0.1481 -7.5225,-4.443 -11.7443,-4.9498 -6.4909,-0.7792 -13.9751,3.1186 -19.3615,3.1186 m 176.0342,0.8741 c -5.2273,0 -8.636,-2.6728 -13.1067,-2.932 -6.7876,-0.3936 -13.4905,2.357 -20.2855,2.1213 -4.0932,-0.142 -8.017,-2.4392 -12.1002,-2.1213 -4.0018,0.3116 -7.3767,4.0289 -11.3883,3.8891 -4.2499,-0.1481 -7.5225,-4.443 -11.7443,-4.9498 -6.4909,-0.7792 -13.9751,3.1186 -19.3615,3.1186 m 138.0277,-28.6626 c 2.4299,4.6277 1.407,7.6494 2.3201,12.033 1.3861,6.6555 3.139,9.6877 -1.7872,14.3725 -2.9675,2.8219 -3.9356,-0.1187 -8.0188,0.1992 -4.0019,0.3116 -7.3767,4.0289 -11.3884,3.8891 -4.2498,-0.1481 -7.5224,-4.443 -11.7442,-4.9498 -6.4909,-0.7792 -13.9752,3.1186 -19.3616,3.1186 m 50.6785,-108.8358 c 0.1374,5.2245 -3.6828,5.9551 -5.7773,9.913 -3.18,6.009 -4.6378,13.3128 -6.8129,19.7541 -1.3102,3.8802 -4.9225,6.4087 -6.0664,10.341 -1.1212,3.854 1.321,9.3875 1.4367,13.3996 0.1225,4.2503 -0.8653,11.2533 1.3783,14.8647 3.4495,5.5526 11.8371,7.4844 14.341,12.253 m -69.9019,-120.251 c 4.8738,1.8894 6.9061,5.726 10.94,7.6705 6.1244,2.9523 13.1003,3.1262 19.1452,6.2386 3.6413,1.8748 6.1532,5.731 9.9801,7.1889 3.7507,1.4289 8.7358,-0.8364 12.4484,0.69 3.9329,1.6171 4.6427,6.522 8.124,8.9624 5.3525,3.7521 9.7479,3.5537 9.8895,8.9371 m -153.2697,-69.5118 c 4.9241,1.7543 7.238,5.4161 11.3624,7.1607 6.2617,2.6487 13.5461,2.2546 19.8858,4.7115 3.8189,1.4801 6.7691,4.9397 10.7297,5.9822 3.8818,1.0216 8.2614,-1.3385 11.9937,0.139 3.9539,1.5652 5.509,6.7276 9.2943,8.6644 5.8199,2.9778 14.0816,2.0125 19.1037,3.9594 m -163.6219,-65.5142 c 4.6024,2.4783 6.4588,6.4593 10.3172,8.7324 5.8579,3.4511 13.397,3.8505 19.4946,6.8584 3.673,1.8118 6.4871,5.4405 10.3683,6.7478 3.8039,1.2812 8.4485,-0.8895 12.1239,0.724 3.8937,1.7094 5.4719,6.9284 9.2442,8.8905 5.7997,3.0168 14.2793,1.939 19.3532,3.7467 m -152.7853,-87.7929 c 3.1876,4.1426 3.9362,8.8695 6.9382,12.1923 4.5577,5.045 12.11,7.7016 17.4602,11.8968 3.2228,2.5272 5.3937,6.7721 8.9867,8.7377 3.5214,1.9264 8.5085,0.5589 11.8527,2.7788 3.5429,2.3516 4.306,7.6772 7.7029,10.2346 5.2228,3.932 13.7325,4.4399 18.475,6.9936 m -77.8357,-140.1077 c -1.5954,4.9776 -5.201,7.8279 -6.5182,12.1079 -2,6.4981 -0.4532,14.363 -1.2762,21.1119 -0.4957,4.0654 -2.8072,8.6316 -2.3139,12.6971 0.4835,3.9846 4.481,7.3996 4.9155,11.39 0.4603,4.2273 -2.8054,9.1252 -1.9995,13.2999 1.239,6.4186 9.5977,12.8829 12.8823,17.1517 m -11.3645,-153.471 c 4.2095,3.0979 6.3822,6.828 10.1091,9.3106 5.6582,3.7693 10.6524,4.6411 13.5762,10.7789 1.7613,3.6974 0.1612,4.4577 -0.4035,8.5134 -0.5535,3.9751 1.7099,7.0018 -0.7799,10.1501 -2.6377,3.3353 -8.138,3.1225 -11.1299,6.1433 -4.6001,4.6443 -4.8673,15.3622 -6.5112,20.4913 m -19.7486,-151.5895 c -3.4503,3.9259 -8.1586,8.2051 -9.2785,12.5402 -1.7003,6.5818 1.7376,15.3012 2.6982,22.0318 0.5786,4.0544 -0.8373,8.4865 0.3105,12.4177 1.125,3.853 5.4513,6.4613 6.2592,10.3931 0.856,4.1652 -2.0607,9.2135 -0.9665,13.3221 1.6823,6.317 10.9602,12.9725 15.2977,16.1647 m 58.8647,-120.8239 c -5.1581,-0.8465 -8.064,-4.0437 -12.4297,-5.0409 -6.6281,-1.514 -14.8828,0.2922 -21.6592,0.8401 -4.082,0.3301 -10.3467,-0.5147 -13.8695,1.5729 -3.4525,2.046 -5.1075,8.7987 -7.1655,12.2447 -2.1802,3.6506 -6.8128,4.6543 -9.3649,8.0548 -3.9238,5.2282 -5.7573,11.6144 -9.3126,15.6598 m 160.3426,-30.5464 c -4.6652,-2.3582 -7.0126,-6.4876 -11.0779,-8.3654 -6.172,-2.8511 -15.8112,-1.2003 -22.5898,-0.6817 -4.0834,0.3124 -8.9021,-0.9031 -12.8069,0.3312 -3.8271,1.2098 -6.262,5.737 -10.192,6.5541 -4.1633,0.8656 -7.188,-2.8993 -11.4299,-3.1896 -6.5218,-0.4464 -12.9278,2.586 -18.2429,1.7138 m 132.0715,-21.3129 c 0.6695,5.184 -1.9633,8.0199 -2.3626,12.4799 -0.6063,6.7713 1.1013,12.0907 -1.9702,18.156 -1.8502,3.6536 -3.3214,3.0244 -6.8488,5.1042 -3.4572,2.0384 -4.0304,5.5025 -7.8638,4.3156 -4.061,-1.2574 -3.8842,-6.4394 -7.1674,-9.1412 -5.0478,-4.154 -14.2634,-4.2865 -19.0705,-6.7165 m -2.7345,-89.3963 c 1.8835,4.8757 -0.6493,8.8745 0.3464,13.2401 1.5116,6.628 12.4372,12.7019 18.8325,15.0091 3.8524,1.3899 5.9246,4.1389 9.6754,5.781 3.6762,1.6094 7.1428,0.438 9.6241,3.5931 2.6287,3.3424 0.2601,7.4153 1.608,11.4477 2.0723,6.1999 6.3668,10.8369 7.0567,16.1787 m -118.4786,-41.3021 c 4.2493,-3.0437 8.7536,-3.405 12.3331,-6.0959 5.4347,-4.0854 8.0744,-9.9888 14.304,-12.7118 3.7526,-1.6402 8.1846,-0.8257 11.813,-2.7252 3.5561,-1.8617 5.0366,-6.4555 8.9069,-7.5192 4.1001,-1.1268 6.7897,2.4649 11.0226,2.864 6.5081,0.6136 10.1778,-2.5257 12.1186,2.4984 m -154.7444,11.0178 c 4.2284,3.0731 5.2912,7.3175 8.7295,10.1864 5.2201,4.3557 13.4149,6.3576 19.6833,8.9899 3.7759,1.5857 8.3043,4.8593 12.3944,5.0655 4.0087,0.2022 8.2212,-3.2299 12.2349,-3.2633 4.2521,-0.035 8.6034,3.7752 12.8473,3.515 6.525,-0.4 14.4376,-7.9391 18.8161,-11.0755 m -167.5576,-31.0373 c 5.227,-0.021 7.9668,2.9002 12.3805,3.656 6.7012,1.1476 13.5301,-0.4066 20.2332,0.7309 4.0379,0.6852 8.0173,3.3318 12.1127,3.32 4.014,-0.012 7.5366,-3.4597 11.4938,-2.7879 4.1923,0.7116 5.395,5.2569 9.1653,7.2223 5.7968,3.0217 12.5462,2.9824 16.9033,6.1491 m -134.4144,38.5477 c -1.0077,-5.5216 -4.3398,-12.0007 -4.6731,-17.9322 -0.2542,-4.5247 3.5136,-13.7336 6.5956,-17.0555 2.6121,-2.8162 6.3365,-6.6731 9.4359,-8.9432 5.0728,-3.7155 6.6187,-7.1237 10.686,-11.9181 5.7376,-6.7634 22.5052,-8.9146 29.8088,-9.2022 m -82.8464,140.5936 c 0.3582,-5.6016 0.3888,-15.6125 3.7043,-20.5429 2.5291,-3.761 8.7215,-7.0821 12.2519,-9.9248 2.9923,-2.4098 4.3289,-4.6417 6.6148,-7.7286 3.7413,-5.0521 4.112,-7.5588 5.6365,-13.6593 2.1505,-8.6057 4.9549,-16.6528 3.6426,-23.8432 m -93.758,118.2766 c 5.3767,-1.6112 12.4221,-3.1726 18.325,-3.8521 4.5029,-0.5183 7.3679,0.5457 11.3368,-1.6429 3.364,-1.8555 5.0278,-4.6504 7.9651,-7.1266 4.8075,-4.0528 8.1317,-7.0859 12.4676,-11.6399 6.1164,-6.4241 12.2163,-10.9663 12.6827,-18.2607 m -132.4967,96.1201 c 3.9904,-3.9474 12.5508,-9.2804 18.3977,-10.3391 4.4601,-0.8075 7.126,0.3778 10.7689,-2.3187 3.0877,-2.286 3.4453,-4.6762 5.5396,-7.8969 3.4278,-5.2712 6.6053,-10.2237 10.3988,-15.2386 5.3513,-7.0743 17.863,-14.872 24.8646,-16.9702 m -114.2013,129.7778 c 3.1467,-4.6479 4.0819,-9.85 6.5453,-15.2572 1.8791,-4.1247 4.9853,-7.8905 6.8389,-12.0267 1.5709,-3.5062 2.7421,-7.6482 4.3729,-11.1269 2.6691,-5.6934 5.3941,-11.229 8.6586,-16.6033 4.6051,-7.5813 13.2322,-16.2405 18.4286,-21.3809 m -110.775,64.5632 c 3.9164,4.0211 8.5999,7.2877 13.0262,11.2513 3.3766,3.0234 5.1061,6.1152 9.1444,8.1732 3.4232,1.7441 5.7008,1.1661 9.5143,1.6302 6.2415,0.7597 9.6487,0.862 15.8788,0.013 8.7885,-1.1973 14.9906,-2.6952 19.0883,-8.7478 m -147.888,-40.4345 c 5.5378,0.9129 9.592,-1.3165 15.4624,-2.2361 4.4781,-0.7015 10.0194,-0.284 14.5485,-0.4594 3.8391,-0.1491 10.2418,-0.3875 13.9201,0.7207 6.0202,1.8138 12.7378,6.5576 17.7337,10.3762 7.0474,5.3868 13.8474,15.0842 18.9473,20.3206 m -154.1222,-72.7468 c 5.6068,-0.2576 14.7266,-1.0812 20.2663,1.0658 4.2258,1.6378 8.9587,5.8527 12.7191,8.3828 3.1878,2.1443 7.1405,3.5592 10.3595,5.6563 5.2685,3.4323 10.9124,9.3329 14.6363,14.4 5.2532,7.1478 8.1759,14.1906 15.3873,15.3793 m -154.0272,-3.8238 c 3.7148,-4.2076 7.9852,-10.3505 12.6802,-13.9921 3.5814,-2.7779 8.4994,-4.8713 12.2777,-7.3747 3.2025,-2.1224 6.2079,-5.4898 9.4651,-7.5267 5.3311,-3.3336 12.0666,-6.1945 18.062,-8.0909 8.4572,-2.6752 20.9123,-2.8703 28.2136,-3.2059 m -80.1994,128.394 c -2.5341,-5.0085 -6.4987,-10.8894 -8.4486,-16.5023 -1.4874,-4.2817 -1.6752,-9.3737 -3.0672,-13.6873 -1.1803,-3.6563 -3.4682,-7.6643 -4.467,-11.374 -1.6348,-6.0716 -2.4069,-15.5586 -0.8341,-21.6465 2.2187,-8.5879 12.1332,-18.938 16.9707,-24.4171 m 72.8217,136.3853 c -5.566,-0.7256 -12.1302,-0.045 -17.9788,-1.0929 -4.4616,-0.7995 -9.5044,-3.2084 -13.8454,-4.5122 -3.6797,-1.1048 -9.1662,-2.2172 -12.5451,-4.0448 -5.5302,-2.9914 -11.689,-9.5464 -15.3497,-14.6591 -5.1639,-7.2121 -9.1793,-18.3201 -12.4792,-24.8423 m 141.1985,87.9654 c -3.9076,-4.0297 -9.5054,-9.5729 -12.3969,-14.7639 -2.2057,-3.9599 -2.3334,-7.3653 -5.7061,-10.3933 -2.8591,-2.5663 -4.8883,-1.9303 -8.5737,-3.0145 -6.0317,-1.7745 -10.8318,-2.4472 -16.9694,-3.816 -8.6579,-1.9308 -17.9934,-6.7454 -25.2416,-7.6902 m 156.3838,58.8216 c -5.5648,0.7351 -12.2931,2.6159 -18.2341,2.698 -4.532,0.063 -9.3614,-1.6502 -13.894,-1.6363 -3.8421,0.012 -7.7934,1.2365 -11.6328,1.3724 -6.2839,0.2224 -14.6393,-1.0265 -20.5347,-3.2125 -8.3164,-3.0835 -17.4867,-13.7242 -22.5752,-18.9717 m 168.471,38.1614 c -5.523,0.9988 -17.2401,-3.0528 -21.6006,-7.0891 -3.3264,-3.079 -5.172,-7.0529 -8.8722,-9.6707 -3.1367,-2.2187 -4.6793,-1.6324 -8.4845,-2.1604 -6.2281,-0.8643 -10.5524,-0.7358 -16.8402,-0.7532 -8.87,-0.024 -18.6703,-0.5586 -25.9168,0.3986 m 149.639,9.0213 c -4.5216,-3.3259 -9.4873,-5.4996 -14.6456,-8.4485 -3.9349,-2.2495 -6.3719,-5.0178 -10.7202,-6.2972 -3.6859,-1.084 -5.6301,-0.2094 -9.4561,0.1365 -6.262,0.5661 -6.0348,0.3471 -10.0335,5.1994 -5.6407,6.8448 -16.0321,17.5055 -23.2243,18.8062 m 60.8287,51.1822 c 4.7243,-3.0312 7.4885,-3.8329 9.8912,-9.2651 1.8328,-4.1439 -0.2424,-6.4041 -0.086,-10.9322 0.1321,-3.8382 3.2623,-11.2944 5.5859,-14.354 3.8031,-5.0075 6.5273,-3.3468 5.2177,-9.4966 -1.8475,-8.6751 -6.9533,-12.9014 -12.8414,-17.2324 m 35.6282,132.9647 c -5.6105,0.1456 -16.4371,-5.2378 -20.3465,-9.712 -2.9823,-3.4129 -4.9551,-8.4923 -7.6909,-12.1063 -2.3194,-3.0631 -5.0493,-4.7757 -7.8491,-7.4061 -4.5825,-4.3051 -9.7318,-6.6013 -14.2642,-10.9588 -6.3935,-6.147 1.0737,-26.8207 7.2257,-30.768 m 113.6116,100.3041 c -2.3158,-5.1126 -5.8507,-7.5195 -10.0009,-11.7715 -3.1659,-3.2434 -3.663,-5.2762 -8.0681,-6.3417 -3.7341,-0.9028 -6.7117,0.3549 -10.5532,0.3003 -6.2875,-0.089 -15.6733,-2.7123 -20.9785,-6.0883 -7.4839,-4.7623 -13.8025,-6.512 -21.1085,-6.3224 m 157.083,45.059 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5316,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.8409,0.096 -7.5607,1.4364 -11.3883,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -20.9965,-10.305 -24.0121,-16.9626 m 173.6281,15.1948 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3883,1.7678 -6.2647,0.5424 -12.5788,0.6069 -18.862,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 m 176.0954,0.8711 c -5.6133,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -19.1696,-2.6389 -26.4793,-2.6389 m 176.0954,0.8711 c -5.6133,0 -11.8537,1.1934 -17.7944,1.0607 -4.5316,-0.1012 -8.9923,-1.5271 -13.5236,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -19.1697,-2.6389 -26.4793,-2.6389 m 176.0953,0.8711 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5316,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.8409,0.096 -7.5607,1.4364 -11.3883,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4793,-2.6389 m 146.0456,-42.0334 c 2.6093,4.9694 7.6774,12.8502 7.9572,18.7842 0.2134,4.5267 -4.1522,12.8126 -6.8426,16.4598 -2.2802,3.0918 -9.9436,8.7433 -13.7713,9.0747 -6.2647,0.5424 -12.5787,0.6069 -18.8619,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 m 59.7607,-118.2277 c 0.1477,5.6102 -2.3636,14.8087 -5.1748,20.0432 -2.1444,3.9931 -5.4138,6.5004 -6.7677,10.826 -1.1472,3.6667 -1.1564,7.9609 -2.2623,11.6403 -1.8101,6.0219 -3.8485,6.7313 -1.7149,12.6459 3.0097,8.3434 9.988,14.9726 13.3858,21.4438 m -74.7225,-124.521 c 5.2336,2.029 11.7412,3.4503 17.1168,5.9817 4.1008,1.931 7.7354,5.048 11.8818,6.8793 3.5147,1.552 7.5381,2.0201 11.118,3.4147 5.8592,2.2825 11.5669,3.8397 17.2529,6.5248 8.0209,3.7875 18.824,17.8386 19.0163,25.1442 m -159.3638,-77.8548 c 5.2876,1.8839 11.5045,2.8758 17.0711,4.9546 4.2464,1.5856 7.9901,4.399 12.3066,5.7825 3.6589,1.1724 7.6126,1.1296 11.3363,2.0753 6.0947,1.5477 12.2142,3.62 18.0213,6.0325 8.1918,3.4032 17.1125,9.2353 23.9278,11.8774 m -162.6531,-65.0684 c 4.9422,2.6612 10.8019,4.3756 16.0763,7.112 4.0235,2.0874 7.2802,5.1704 11.4574,6.9301 3.5409,1.4912 7.3841,1.6569 11.0355,2.8517 5.9762,1.9553 11.6952,4.1546 17.4392,6.7136 8.1027,3.61 16.8037,9.1061 23.6892,11.5593 m -148.6709,-84.8194 c 3.423,4.4486 7.8667,7.3477 12.1505,11.4649 3.2679,3.1407 5.2564,6.6656 8.9833,9.2452 3.1594,2.1863 6.6583,3.0864 10.0447,4.901 5.5424,2.97 10.5869,6.0315 15.894,9.4044 7.4865,4.7579 15.052,11.9387 21.4878,15.4042 m -73.4727,-129.387 c -1.7132,5.3451 -2.1568,10.905 -3.4349,16.7079 -0.975,4.4266 -3.0584,7.9711 -3.3382,12.4951 -0.2368,3.8347 0.9634,7.0028 1.3278,10.8273 0.5963,6.2594 1.0963,11.0486 2.1102,17.2544 1.4303,8.7542 3.0997,16.4208 7.5571,22.2138 m -13.2326,-155.282 c 4.5202,3.3266 11.0283,4.6118 15.8041,8.1461 3.6432,2.6959 7.1747,8.8676 9.7014,12.63 2.1422,3.1889 5.7944,9.9443 6.0697,13.7753 0.4506,6.2701 -5.3276,16.6596 -9.4851,21.3774 -5.8647,6.6552 -11.6781,12.6284 -13.909,19.5888 m -21.5397,-148.4111 c -3.7051,4.2158 -3.2064,6.9758 -3.7952,12.888 -0.4491,4.5099 -1.3192,7.7007 -0.5924,12.1744 0.6165,3.792 2.7475,6.7886 3.8354,10.4733 1.7804,6.0307 2.9669,11.6235 4.4387,17.7366 2.0762,8.6234 3.0695,15.9907 8.9558,20.3227 m 52.0651,-104.5241 c -5.5389,-0.909 -11.7083,-0.8107 -17.5731,-1.7647 -4.4739,-0.7276 -7.6124,-2.5081 -12.1241,-2.075 -3.8243,0.3674 -5.6324,1.9893 -9.1433,3.5481 -5.7463,2.5511 -5.1105,3.7843 -7.9753,9.3819 -4.0413,7.8962 -13.9211,15.774 -18.7459,21.2638 m 149.4686,-28.4086 c -5.0095,-2.5323 -9.6792,-3.9005 -15.3987,-5.5094 -4.363,-1.2273 -6.8207,-2.7532 -11.3375,-2.3793 -3.8285,0.3173 -6.224,2.2845 -9.8769,3.4741 -5.9787,1.9471 -12.3973,3.8575 -18.6222,4.7466 -8.7811,1.2542 -21.3177,-1.9534 -28.5306,-3.1371 m 142.5494,-31.509 c 0.719,5.5668 2.2489,13.5862 1.3134,19.4533 -0.7136,4.4757 -3.3955,10.0354 -5.0263,14.2643 -1.382,3.5847 -4.0659,10.5347 -6.9116,13.1148 -4.6575,4.2227 -20.2687,4.8635 -25.7709,1.8202 -7.7617,-4.2929 -15.4716,-11.8183 -21.9951,-15.1159 m 9.8226,-100.8422 c 2.0226,5.2358 3.0902,10.6951 5.63,16.0663 1.9375,4.0972 1.9114,4.3695 6.2045,5.823 3.6391,1.2317 8.2559,0.899 11.8822,2.1662 5.9353,2.074 13.8444,9.4754 17.1706,14.8117 4.6921,7.5275 5.8805,21.3008 6.8168,28.5499 m -132.8369,-47.4903 c 4.563,-3.2684 8.1733,-8.1557 12.8672,-11.7992 3.5806,-2.7793 8.9319,-5.0149 12.8903,-7.2229 3.355,-1.8719 6.7404,-4.5762 10.1286,-6.3876 5.5453,-2.9646 12.8845,-6.1611 19.0927,-7.1554 8.7576,-1.4026 26.7077,6.1342 29.3415,12.9522 m -157.9307,6.9058 c 4.5406,3.3001 9.9594,6.1512 14.7764,9.6299 3.6746,2.6536 5.7345,5.6358 9.9484,7.3049 3.5721,1.4145 6.1155,0.6836 9.9459,0.9789 6.2692,0.4833 10.472,0.7644 16.7442,0.3177 8.8477,-0.6302 16.7608,-0.56 22.7027,-4.8162 m -162.361,-32.7347 c 5.6129,-0.022 12.8442,-0.5989 18.7096,0.352 4.4743,0.7253 8.6489,2.8872 13.1549,3.3781 3.8195,0.4158 7.2824,-0.5008 11.124,-0.5452 6.2877,-0.073 13.7665,0.2964 19.8458,1.9035 8.5757,2.267 18.9842,10.6383 24.897,14.9357 M 260.40678,1759.393 c -0.70771,-5.203 1.70343,-8.4411 1.77011,-12.9389 0.1013,-6.8287 -2.1974,-12.0603 0.51223,-18.3294 1.63225,-3.7764 4.96276,-4.9285 7.12518,-8.4279 2.11933,-3.4299 1.13704,-7.8864 4.15557,-10.5595 3.19775,-2.8319 7.58289,-1.0632 11.45373,-2.8671 5.95137,-2.7735 9.015,-8.1173 14.42484,-8.1654 m -54.94483,145.4286 c 4.03532,-3.3597 8.90441,-4.0424 12.1512,-7.1558 4.92949,-4.7268 6.69749,-14.6528 8.4051,-21.2657 1.02865,-3.9834 3.69664,-8.8768 3.35515,-12.9764 -0.33472,-4.0179 -4.29438,-7.5839 -4.57146,-11.6066 -0.29352,-4.2616 3.37399,-8.3588 3.1752,-12.6252 -0.30564,-6.5596 -5.40841,-13.2065 -6.13767,-18.5677 m -35.79904,161.0624 c -0.48336,-5.2286 1.72547,-9.0339 1.44457,-13.5235 -0.4264,-6.8164 -3.97677,-12.8728 -4.00774,-19.7027 -0.0186,-4.1141 2.3659,-7.0427 2.60423,-11.1495 0.23356,-4.025 -2.69811,-7.4059 -1.20895,-11.1526 1.57759,-3.9691 6.36303,-3.1643 9.51565,-6.0456 4.84711,-4.4299 7.42772,-11.1181 11.58585,-14.5801 m -55.48507,156.7168 c 3.37047,-4.0265 7.76174,-5.193 10.67847,-8.6176 4.42838,-5.1993 6.3751,-12.4032 10.4144,-17.9107 2.4332,-3.3175 6.70501,-5.9176 8.40242,-9.6649 1.66359,-3.6726 0.14967,-8.7393 1.68469,-12.4678 1.62617,-3.95 7.02621,-7.105 8.06005,-11.2488 1.58952,-6.3711 -2.3145,-15.2846 -2.81257,-20.6724 m -51.67199,127.1524 c -5.25103,0.028 -8.68928,-2.6272 -13.18163,-2.8628 -6.82053,-0.3578 -9.05301,4.6506 -5.20408,-0.9907 2.31853,-3.3982 6.29195,-4.721 8.59463,-8.1301 2.2568,-3.3412 1.48948,-8.2073 4.18839,-11.2031 2.85915,-3.1738 8.27471,-2.9329 11.38544,-5.8596 4.78272,-4.4998 6.6196,-12.7667 10.09264,-16.9157 m 72.57198,45.4977 c -5.25103,0.028 -8.68928,-2.6272 -13.18163,-2.8628 -6.82052,-0.3578 -13.53933,2.4281 -20.36647,2.2282 -4.11253,-0.1204 -8.06616,-2.3969 -12.16621,-2.0574 -4.0184,0.3327 -7.38902,4.0677 -11.41965,3.9491 -4.26994,-0.1257 -7.57994,-4.4033 -11.82354,-4.8878 -6.52448,-0.745 -14.02224,3.1922 -19.43308,3.2206 m 176.83795,-0.054 c -5.25103,0.028 -8.68928,-2.6272 -13.18163,-2.8628 -6.82052,-0.3578 -13.53933,2.4281 -20.36647,2.2282 -4.11253,-0.1204 -8.06616,-2.3969 -12.16621,-2.0574 -4.0184,0.3327 -7.38902,4.0677 -11.41965,3.9491 -4.26994,-0.1257 -7.57994,-4.4033 -11.82354,-4.8878 -6.52448,-0.745 -14.02224,3.1922 -19.43308,3.2206 m 176.83795,-0.054 c -5.25102,0.027 -8.68927,-2.6273 -13.18163,-2.8629 -6.82052,-0.3578 -13.53933,2.4281 -20.36647,2.2282 -4.11253,-0.1204 -8.06616,-2.3968 -12.16621,-2.0574 -4.0184,0.3327 -7.38902,4.0677 -11.41965,3.9491 -4.26994,-0.1257 -7.57994,-4.4033 -11.82354,-4.8878 -6.52448,-0.745 -14.02224,3.1922 -19.43308,3.2206 m 176.83795,-0.054 c -5.25102,0.028 -8.68927,-2.6273 -13.18163,-2.8629 -6.82052,-0.3578 -13.53933,2.4281 -20.36647,2.2283 -4.11253,-0.1205 -8.06616,-2.3969 -12.16621,-2.0575 -4.0184,0.3327 -7.38902,4.0677 -11.41965,3.9491 -4.26994,-0.1257 -7.57994,-4.4033 -11.82354,-4.8878 -6.52448,-0.745 -14.02224,3.1922 -19.43308,3.2206 m 76.31751,-72.255 c 2.00849,4.8518 0.79114,8.8732 2.14134,13.1642 2.04989,6.515 6.94184,11.6519 8.79422,18.2259 1.11581,3.96 0.0782,8.1154 1.44843,11.9945 1.34295,3.8018 5.81274,5.9759 6.46342,9.9552 0.68932,4.2155 -2.92815,7.2415 -3.2748,11.4982 -0.53296,6.5447 1.96809,6.9243 -3.44275,6.9528 M 475.33496,1895.613 c 2.98431,4.3204 2.57068,8.4121 4.713,12.3677 3.25253,6.0055 8.98161,10.1282 12.02328,16.2435 1.83223,3.6838 1.62785,8.1563 3.80271,11.6485 2.13159,3.4226 6.93815,4.6734 8.56273,8.364 1.72103,3.9097 -0.77494,8.6569 0.55256,12.7165 2.04101,6.2415 8.51255,11.3345 10.58217,16.334 M 410.19201,1839.735 c 0.89531,5.1736 0.24931,10.9676 2.36076,14.9385 3.20567,6.0289 12.98048,9.9584 19.03941,13.1092 3.64977,1.898 6.79195,5.5738 10.73175,6.7582 3.86135,1.1608 8.27059,-1.2265 11.85679,0.6162 3.79913,1.9521 3.70983,6.5541 6.7548,9.5485 4.68159,4.6039 10.57024,6.9017 13.64538,11.3536 M 415.86991,1751.979 c 1.08312,5.1367 -2.59092,7.0257 -3.58023,11.4139 -1.50208,6.6625 1.79296,14.3902 1.43912,21.2108 -0.21316,4.1086 -2.89141,7.2261 -3.13899,11.3326 -0.24261,4.0248 2.90343,7.8412 2.13481,11.7996 -0.81426,4.1934 -5.72086,7.1479 -6.64009,11.3186 -1.41331,6.4125 2.31325,15.4375 3.23581,20.7686 m -68.09345,-77.9196 c 5.25028,-0.084 8.61381,2.5635 13.10441,2.8301 6.81785,0.4048 13.53672,-2.3002 20.36095,-2.019 4.11077,0.1694 8.6969,2.8482 12.75039,2.1488 3.97278,-0.6856 7.44616,-8.3888 9.96642,-11.5363 2.6699,-3.3343 5.63599,-1.9669 9.61567,-3.5134 6.11871,-2.3777 6.86138,-3.0076 7.97746,2.2855 m -115.27674,-54.8686 c 5.24481,0.2458 4.40384,1.7315 6.79661,5.5402 3.63276,5.7825 4.08962,9.3159 3.51584,16.1216 -0.34564,4.0997 -2.80815,8.7758 -2.15705,12.8378 0.63816,3.9811 5.89348,7.7398 7.74607,11.3213 1.9626,3.7942 0.58781,9.7138 2.89692,13.3064 3.55022,5.5236 17.24562,6.5073 22.6557,6.4205 m -89.76987,-2.0997 c -0.75997,-5.5871 -2.63322,-12.936 -2.25833,-18.8928 0.28595,-4.5439 2.58829,-10.3356 3.81799,-14.7195 1.04198,-3.7162 2.31416,-9.2599 4.14885,-12.6548 3.00282,-5.5564 8.81673,-11.8602 13.75587,-15.7974 6.96735,-5.554 21.55211,-9.5341 28.89357,-9.5994 m -60.72629,147.5734 c 4.33327,-3.6078 7.22443,-7.308 10.83779,-12.0585 2.75635,-3.6239 4.79909,-5.136 5.82115,-9.573 0.86597,-3.761 -0.19369,-6.3493 -0.38001,-10.2038 -0.30496,-6.3086 -0.89661,-11.2828 -1.49349,-17.5711 -0.84199,-8.8707 -0.56436,-19.345 -1.55399,-26.6205 m -35.8349,160.7348 c -0.51905,-5.6147 -2.46831,-11.5215 -3.05664,-17.4615 -0.44883,-4.5312 0.53307,-9.432 0.0936,-13.9638 -0.37287,-3.8414 -1.63811,-8.6472 -1.61312,-12.5062 0.0409,-6.316 2.3346,-15.9289 5.70679,-21.2695 4.75693,-7.5336 16.38731,-14.1394 22.03013,-18.8375 m -56.67671,157.917 c 3.61933,-4.3238 6.35408,-9.7523 10.06097,-14.4306 2.8277,-3.5687 6.47427,-6.0903 8.94486,-9.9151 2.09384,-3.2422 2.75969,-6.816 4.4529,-10.2838 2.77125,-5.6759 4.80637,-9.4758 6.75138,-15.485 2.7437,-8.4769 4.84908,-16.5327 4.17317,-23.8442 m -42.51005,135.4039 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -12.08751,-13.1293 -9.93479,-17.1414 1.8244,-3.401 3.47414,-7.9868 5.60659,-11.2033 3.49014,-5.2644 7.64138,-10.3403 11.89483,-15.0105 6.00008,-6.588 14.38451,-13.0549 19.09763,-18.6854 m 79.65264,60.4218 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4797 -13.5925,-1.343 -3.85791,0.1163 -7.58748,1.4763 -11.43079,1.8279 -6.29029,0.5754 -12.63262,0.6732 -18.94574,0.453 -8.90556,-0.3105 -19.27056,-2.5378 -26.61338,-2.4992 m 176.89931,-0.057 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4796 -13.5925,-1.343 -3.85791,0.1163 -7.58748,1.4763 -11.43079,1.8279 -6.29028,0.5754 -12.63262,0.6732 -18.94574,0.453 -8.90556,-0.3105 -19.27056,-2.5377 -26.61338,-2.4992 m 176.89931,-0.057 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4796 -13.5925,-1.3429 -3.85791,0.1162 -7.58748,1.4762 -11.43078,1.8278 -6.29029,0.5754 -12.63263,0.6732 -18.94575,0.453 -8.90556,-0.3105 -19.27056,-2.5377 -26.61338,-2.4992 m 176.89931,-0.057 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4796 -13.5925,-1.3429 -3.85791,0.1162 -7.58748,1.4762 -11.43078,1.8278 -6.29029,0.5754 -12.63263,0.6732 -18.94575,0.453 -8.90556,-0.3105 -19.27056,-2.5377 -26.61338,-2.4992 m 84.64391,-84.8798 c 2.15678,5.21 5.65443,10.7772 7.64652,16.404 1.51965,4.2923 1.71766,9.206 3.29338,13.478 1.33602,3.621 3.79054,7.0361 5.19797,10.6296 2.30352,5.8814 4.25855,13.0542 4.96373,19.331 0.99476,8.8543 -9.95532,24.5344 -17.29814,24.5729 M 482.778,1890.3982 c 3.20465,4.6394 7.81275,9.5089 10.83949,14.6536 2.3089,3.9245 3.41383,8.766 5.7489,12.6751 1.97963,3.3132 5.03807,6.1515 7.10647,9.4097 3.38532,5.3327 6.38571,11.192 8.89927,16.9872 3.54574,8.1751 5.79103,18.9024 8.59962,25.6869 M 419.13624,1838.1244 c 0.96141,5.5557 2.97221,7.9807 6.70917,12.6337 2.85067,3.5494 4.08118,5.5513 8.14882,7.5972 3.44807,1.7339 6.84977,1.5355 10.54955,2.6336 6.05537,1.7973 12.85598,4.2438 18.32628,7.4023 7.71663,4.4555 15.01813,16.4591 19.19126,22.5006 m -57.31315,-140.8476 c 1.16308,5.5161 0.5653,13.7906 -0.22523,19.7065 -0.60301,4.5127 -1.41366,8.1351 -1.22485,12.6843 0.16043,3.8561 1.06603,8.4198 0.98822,12.2781 -0.12735,6.3149 -1.27372,12.9676 -2.51149,19.1619 -1.74603,8.7381 -4.7488,17.1634 -3.49683,24.398 m -77.25826,-85.4559 c 5.63794,-0.091 12.01322,-1.2998 17.98061,-1.1573 4.55209,0.1087 9.0579,1.5773 13.61054,1.4948 3.859,-0.07 7.60448,-1.3857 11.45168,-1.6914 6.29665,-0.5004 4.2271,-2.9735 8.25916,-7.8359 5.68779,-6.8592 30.05974,-0.5864 31.57432,6.5966 m -123.8064,-62.0741 c 5.63206,0.264 18.3525,7.4841 19.99078,13.2224 1.24975,4.3773 -0.28924,11.2991 -0.40222,15.851 -0.0954,3.8584 0.92442,6.9965 1.43035,10.8223 0.82804,6.2618 2.3821,8.4348 5.40312,13.9821 4.2616,7.8252 7.18026,11.7782 14.52203,11.6604 m 3413.1121,8.2175 c 5.2503,0.084 12.5973,1.5854 16.3192,-0.9406 5.6508,-3.835 8.3047,-13.268 11.8545,-19.103 2.1384,-3.5149 5.5548,-9.571 5.252,-13.6735 -0.2968,-4.0208 -4.1818,-7.5318 -4.2419,-11.5636 -0.064,-4.2713 4.024,-6.383 5.2174,-10.4835 1.835,-6.3043 1.6753,-7.7872 7.0798,-8.0405 m -116.2214,53.7581 c 1.0831,-5.1368 3.3539,-2.1363 7.7543,-3.066 6.6809,-1.4114 6.6888,2.1387 10.8085,7.5855 2.4816,3.281 9.4224,8.8632 13.522,8.518 4.0179,-0.3384 7.3832,-4.0782 11.4139,-3.9653 4.2701,0.1196 7.5527,4.3736 11.7945,4.8734 6.5217,0.7685 13.9618,-3.1129 19.3719,-3.0261 m -68.9916,76.8352 c 0.8953,-5.1736 3.6128,-9.546 3.5895,-14.0444 -0.035,-6.8296 -3.9308,-13.6604 -4.766,-20.4391 -0.5031,-4.0833 1.1479,-8.0075 0.3972,-12.0522 -0.7356,-3.9642 -4.7746,-6.6993 -4.5676,-10.7261 0.2194,-4.2659 5.1874,-8.3269 5.223,-12.5975 0.055,-6.5658 -5.8233,-12.362 -4.7072,-17.6551 m -60.263,143.4123 c 2.9843,-4.3204 6.7862,-5.0059 9.9632,-8.1896 4.8235,-4.8335 7.4931,-9.0235 13.8772,-11.45 3.8457,-1.4617 8.2928,-0.661 11.994,-2.4573 3.6274,-1.7606 5.6705,-6.5241 9.2904,-8.3001 3.8349,-1.8816 10.3844,-1.0485 13.6987,-3.7412 5.0958,-4.14 6.1988,-16.2191 7.1213,-21.5502 m -107.0352,133.0726 c 2.0085,-4.8518 5.8688,-6.823 7.912,-10.8306 3.1022,-6.0845 3.3466,-13.1263 6.6132,-19.1245 1.9677,-3.6132 5.7638,-6.0092 7.3747,-9.7948 1.5787,-3.7102 -0.1339,-8.3429 1.9681,-11.784 2.2269,-3.6454 7.5613,-4.2632 10.1522,-7.6586 3.9836,-5.2205 4.6793,-13.1925 7.7545,-17.6444 m -54.0175,149.6148 c -5.251,-0.028 -3.6056,1.2448 -4.3101,-3.1966 -1.0697,-6.7431 -1.9391,-11.3594 -0.1364,-17.9469 1.086,-3.9682 4.2173,-6.9161 5.0748,-10.9398 0.8403,-3.9435 -1.7486,-8.1549 -0.3158,-11.924 1.5179,-3.993 6.5497,-5.5137 8.5275,-9.2993 3.0407,-5.8204 2.1174,-14.0808 4.187,-19.0803 m 75.4204,72.8512 c -5.251,-0.028 -8.6612,-2.7183 -13.1509,-3.0011 -6.8164,-0.4294 -13.564,2.2859 -20.3887,2.0143 -4.111,-0.1635 -8.0406,-2.4814 -12.1439,-2.185 -4.0217,0.2905 -7.4314,3.9899 -11.4605,3.829 -4.2684,-0.1706 -7.5333,-4.4827 -11.7716,-5.0117 -6.5163,-0.8134 -14.055,3.0449 -19.4658,3.0165 m 176.8288,1.8023 c -5.2511,-0.028 -8.6613,-2.7183 -13.1509,-3.0011 -6.8164,-0.4294 -13.5641,2.2859 -20.3887,2.0143 -4.1111,-0.1636 -8.0406,-2.4814 -12.144,-2.1851 -4.0217,0.2905 -7.4313,3.99 -11.4605,3.829 -4.2683,-0.1705 -7.5333,-4.4826 -11.7715,-5.0116 -6.5163,-0.8134 -14.055,3.0448 -19.4658,3.0164 m 176.8287,1.8024 c -5.251,-0.028 -8.6612,-2.7183 -13.1508,-3.0011 -6.8164,-0.4294 -13.5641,2.2858 -20.3888,2.0143 -4.111,-0.1636 -8.0405,-2.4814 -12.1439,-2.1851 -4.0217,0.2905 -7.4313,3.99 -11.4605,3.829 -4.2684,-0.1705 -7.5333,-4.4826 -11.7716,-5.0116 -6.5163,-0.8134 -14.0549,3.0448 -19.4658,3.0164 m 176.8288,1.8024 c -5.251,-0.028 -8.6612,-2.7183 -13.1509,-3.0011 -6.8164,-0.4294 -13.564,2.2858 -20.3887,2.0143 -4.111,-0.1636 -8.0406,-2.4814 -12.1439,-2.1851 -4.0217,0.2905 -7.4314,3.99 -11.4605,3.829 -4.2684,-0.1705 -7.5333,-4.4826 -11.7716,-5.0116 -6.5163,-0.8135 -14.055,3.0448 -19.4658,3.0164 m 73.3385,-45.1373 c 3.3704,4.0265 3.5188,8.3678 6.2027,11.9779 4.0747,5.4811 10.5191,8.8757 14.7288,14.2541 2.5358,3.2398 3.1366,7.653 5.937,10.6665 2.7447,2.9536 7.4664,3.1385 9.3375,6.7102 1.9823,3.7838 2.607,-0.4945 -1.6313,-1.0235 -6.5163,-0.8135 -14.055,3.0448 -19.4658,3.0164 m -50.7505,-126.1364 c -0.4833,5.2286 -3.2048,9.2265 -3.2566,13.7245 -0.079,6.8291 4.4187,14.7478 6.9763,21.0807 1.5406,3.8148 1.5991,8.9572 3.9811,12.3112 2.3347,3.2873 7.4038,4.3403 9.558,7.7489 2.2821,3.6109 0.8702,8.9493 3.0252,12.6367 3.3134,5.6693 11.1749,9.3977 14.6479,13.5468 m -54.2478,-157.9575 c 4.0353,3.3598 4.8165,7.4285 7.9832,10.6233 4.8077,4.8505 9.8641,6.6228 11.5675,13.2362 1.0261,3.9837 -0.6554,7.2911 0.04,11.3457 0.6814,3.9739 4.4,6.6984 3.9711,10.7076 -0.4543,4.2473 -4.9676,6.8918 -5.9824,11.0406 -1.5602,6.3788 1.3701,14.426 0.872,19.8137 m -34.0652,-160.8644 c -0.7077,5.2029 -3.9288,8.0402 -4.9243,12.4271 -1.5115,6.6603 0.042,13.9853 -0.8978,20.7502 -0.5658,4.0751 -2.9632,8.6935 -2.4911,12.78 0.4627,4.0052 4.6893,7.6864 5.5555,11.6244 0.9176,4.1719 -1.1345,10.3331 0.7612,14.16 2.9147,5.8837 12.846,9.5261 17.0041,12.9881 m -54.3636,-147.013 c 5.2501,0.047 6.1561,3.2769 10.1075,5.4267 5.9991,3.264 11.4681,4.2147 16.0323,9.295 2.7494,3.0603 2.8941,6.7619 5.4123,10.0147 2.4681,3.188 6.8357,3.6949 7.8862,7.5878 1.1129,4.124 -2.6693,6.974 -3.0035,11.2317 -0.5137,6.5461 2.7926,13.1874 2.0634,18.5487 m -79.7386,-6.5189 c 5.6379,0.09 6.6672,-0.2829 10.8168,-4.5724 3.1655,-3.2722 5.768,-5.1664 7.8999,-9.1899 1.8068,-3.4106 1.067,-4.7729 1.0501,-8.632 -0.028,-6.3161 -1.0836,-12.1657 -0.7168,-18.4712 0.5173,-8.8947 14.5867,-22.588 21.9208,-22.9318 m -124.6993,61.0244 c 1.1631,-5.516 15.8883,-15.6302 21.5797,-13.8412 4.3416,1.3647 9.3124,9.0649 12.1229,12.6471 2.3827,3.0362 0.76,2.8351 4.6129,2.6233 6.306,-0.3467 12.3549,-0.6837 18.6682,-0.4725 8.906,0.2979 19.389,2.5694 26.7308,2.6871 m -78.1026,84.4364 c 0.9615,-5.5556 -0.4158,-10.1681 -0.8675,-16.1197 -0.3447,-4.54 0.3873,-8.7841 -0.4363,-13.2624 -0.6986,-3.7958 -2.6312,-7.4116 -3.4867,-11.1748 -1.4002,-6.1593 -2.1094,-14.3779 -1.2485,-20.6354 1.2144,-8.8271 -0.2353,-19.5251 1.2793,-26.7082 m -58.8821,140.1728 c 3.2047,-4.6394 7.0651,-11.8316 11.657,-15.6439 3.5029,-2.9082 9.7508,-4.6829 13.8208,-6.7235 3.4497,-1.73 6.8588,-4.3971 10.3248,-6.0943 5.6728,-2.7778 10.2108,-4.3614 15.6563,-7.562 7.6817,-4.5148 11.7892,-8.8655 13.0412,-16.1001 m -106.4986,131.2031 c 2.1568,-5.2099 3.6637,-11.6989 6.2988,-17.0548 2.01,-4.0857 5.2521,-7.6064 7.1278,-11.7556 1.5895,-3.5171 2.1752,-7.6182 3.6556,-11.1823 2.423,-5.8333 5.5467,-11.661 8.8689,-17.0337 4.6865,-7.5789 12.591,-15.5163 16.7642,-21.5579 m -46.5234,163.8709 c -5.6388,-0.03 -17.9383,-9.9171 -17.5808,-15.8751 0.2726,-4.5449 2.5505,-9.7822 3.3297,-14.2681 0.6601,-3.8026 0.4526,-8.1144 1.1291,-11.9139 1.1074,-6.2185 3.2742,-12.7403 5.5509,-18.6327 3.2114,-8.312 9.3754,-17.4791 12.184,-24.2636 m 83.8345,85.4177 c -5.6388,-0.03 -11.9138,1.1309 -17.8807,0.9669 -4.5517,-0.1251 -9.0251,-1.5745 -13.5777,-1.4856 -3.8589,0.076 -7.6025,1.3965 -11.4493,1.7077 -6.296,0.5093 -12.639,0.5405 -18.9495,0.2541 -8.9018,-0.404 -19.2428,-2.7399 -26.5856,-2.7785 m 176.8901,1.7997 c -5.6387,-0.03 -11.9138,1.1309 -17.8806,0.9668 -4.5517,-0.125 -9.0251,-1.5744 -13.5777,-1.4855 -3.8589,0.076 -7.6026,1.3965 -11.4493,1.7077 -6.296,0.5093 -12.639,0.5405 -18.9495,0.2541 -8.9018,-0.404 -19.2429,-2.7399 -26.5857,-2.7785 m 176.8902,1.7997 c -5.6387,-0.03 -11.9138,1.1309 -17.8807,0.9668 -4.5517,-0.1251 -9.0251,-1.5745 -13.5776,-1.4856 -3.8589,0.076 -7.6026,1.3966 -11.4494,1.7078 -6.296,0.5093 -12.639,0.5405 -18.9494,0.2541 -8.9018,-0.404 -19.2429,-2.7399 -26.5857,-2.7785 m 176.8902,1.7997 c -5.6388,-0.03 -11.9138,1.1309 -17.8807,0.9668 -4.5517,-0.1251 -9.0251,-1.5745 -13.5777,-1.4856 -3.8589,0.076 -7.6025,1.3965 -11.4493,1.7078 -6.296,0.5093 -12.639,0.5405 -18.9495,0.2541 -8.9018,-0.404 -19.2428,-2.74 -26.5856,-2.7785 m 80.316,-60.1098 c 3.6194,4.3238 8.5582,8.3648 12.2868,13.0259 2.8444,3.5557 4.6307,7.8919 7.6447,11.3049 2.5551,2.8928 6.0951,5.0477 8.7465,7.8519 4.3394,4.5896 11.2187,13.2337 11.7932,19.5233 0.8104,8.8723 -24.997,8.9066 -32.3399,8.8681 m -41.6472,-134.4526 c -0.519,5.6147 0.4842,10.4857 1.0998,16.4225 0.4697,4.5288 -0.2975,7.7298 1.5317,11.8994 1.5508,3.5342 4.1127,5.6551 6.2554,8.8647 3.5069,5.253 6.5911,9.7154 10.0565,14.9969 4.8883,7.4502 9.1915,16.6236 13.9046,22.2541 m -55.4514,-159.1455 c 4.3332,3.6078 10.7447,7.1786 14.7033,11.6459 3.0198,3.4077 5.7782,9.9693 7.4179,14.2165 1.3901,3.6001 3.8897,8.2061 4.7367,11.971 1.3864,6.162 1.1812,14.1724 0.4752,20.4494 -0.9958,8.8546 -4.9211,19.0335 -5.597,26.3449 m -34.1045,-160.5372 c -0.7599,5.5871 -0.6872,12.1378 -1.8012,18.0019 -0.8497,4.4733 -2.9606,8.3243 -3.3184,12.8635 -0.3029,3.8476 0.8376,7.0353 1.1469,10.882 0.5061,6.2958 0.9599,9.8644 2.9297,15.8659 2.7789,8.4661 7.2112,14.2675 12.854,18.9656 m -60.1612,-149.1137 c 5.6377,0.05 15.4488,2.0222 20.4499,5.2793 3.815,2.4846 7.4712,7.1685 10.8497,10.2207 2.8641,2.5868 7.0845,5.3921 9.6198,8.3014 4.1496,4.7616 8.3164,13.7336 9.2908,19.9747 1.3746,8.8039 -1.7334,21.3658 -2.7231,28.6413" + id="path19340" + inkscape:connector-curvature="0" /> + <path + id="path19342" + d="m 1493.1245,72.827436 c 5.1831,-1.874721 15.0598,-0.326058 20.6307,1.407295 4.2496,1.322222 6.5722,2.681088 11.0138,2.390797 3.7648,-0.246449 6.3261,-2.191714 9.9629,-3.196838 5.9522,-1.645075 11.2567,-3.51488 17.2856,-4.850979 8.5046,-1.884771 20.1302,-2.196825 27.3048,-2.405124 0,0 0.2638,9.087231 0.2638,9.087231 -5.2869,0.153494 -10.6471,4.999804 -17.0079,5.879832 -4.1371,0.572382 -8.3195,-2.75889 -12.3817,-1.790658 -3.8346,0.913965 -6.3043,5.458727 -10.069,6.627853 -3.8412,1.192849 -8.7163,-0.153815 -12.7345,0.0189 -6.6705,0.286751 -16.1125,1.989853 -22.1421,-0.87822 -3.9714,-1.889021 -4.1522,-5.510357 -8.9789,-3.764539 0,0 -3.1475,-8.525548 -3.1475,-8.525548 m -78.7434,14.873955 c 5.5038,-0.303889 12.8783,-1.599267 18.6486,-0.734123 4.4019,0.659928 8.8278,3.000027 13.2235,3.701752 3.726,0.594429 6.537,-0.132516 10.3048,-0.334447 6.1667,-0.330499 7.8739,-0.580083 13.1987,-3.706343 7.5113,-4.410046 16.9146,-10.540442 23.6641,-12.981722 0,0 3.092,8.548775 3.092,8.548775 -4.9736,1.798952 -7.0296,8.44335 -12.3453,12.045659 -3.4575,2.342988 -9.439,1.336963 -13.2552,3.031223 -3.6024,1.599302 -7.8452,6.188853 -11.7727,6.525423 -4.0074,0.34337 -8.6419,-2.48671 -12.568,-3.36037 -6.5175,-1.45031 -12.8019,0.0253 -19.416,-0.885303 -4.3563,-0.599728 -7.0882,-3.062156 -12.2135,-2.779162 0,0 -0.561,-9.071362 -0.561,-9.071362 m -81.9941,13.984657 c 5.2391,1.7103 7.3976,1.10644 12.9207,-0.77319 4.2132,-1.43386 8.305,-2.091303 12.3546,-3.938594 3.4325,-1.566192 7.8869,-4.388245 11.5249,-5.389336 5.9543,-1.638475 12.5092,-2.408366 18.6598,-2.961355 8.6762,-0.780085 19.415,0.343292 26.5821,-0.05244 0,0 0.5012,9.077665 0.5012,9.077665 -5.2813,0.291607 -11.7968,4.72806 -18.2181,4.78622 -4.1765,0.0378 -7.9141,-3.80844 -12.0697,-3.395143 -3.9226,0.390132 -6.651,4.469803 -10.494,5.348023 -3.9211,0.89602 -7.1595,-0.6181 -10.9762,0.64919 -6.3362,2.10383 -12.2983,8.94037 -18.9462,9.55759 -4.3786,0.40658 -9.7232,-2.65907 -14.602,-4.25177 0,0 2.7629,-8.65686 2.7629,-8.65686 m -81.7681,-4.977032 c 4.2627,-3.494764 10.6142,-8.493445 16.031,-10.661347 4.1322,-1.65376 10.0146,-2.12875 14.3692,-3.048864 3.6911,-0.780305 7.969,-2.723344 11.7049,-3.25356 6.1144,-0.867799 17.9553,0.800144 22.7675,4.669671 6.7884,5.458505 9.8029,15.871882 16.6252,18.099052 0,0 -2.8208,8.64109 -2.8208,8.64109 -5.0274,-1.64117 -14.5604,-5.76827 -18.3945,-10.91889 -2.4938,-3.350028 -0.8191,-8.185819 -4.6952,-9.73776 -3.6588,-1.46496 -6.4151,2.350246 -10.3473,2.63019 -4.012,0.285602 -7.0643,-1.717001 -11.0422,-1.125655 -6.6036,0.981715 -10.6641,5.087598 -16.7749,7.778372 -4.0249,1.772323 -7.6447,0.663423 -11.6143,3.917893 0,0 -5.8086,-6.990192 -5.8086,-6.990192 m -36.9721,65.336912 c 5.4788,0.60017 6.338,-0.078 10.6824,-3.9732 3.314,-2.97135 5.5171,-3.75029 7.1108,-7.90605 1.3505,-3.52274 0.4987,-6.06161 0.7717,-9.82488 0.4467,-6.1593 0.5629,-12.62821 1.9628,-18.64221 1.9748,-8.4836 11.4459,-19.76605 16.9967,-24.316964 0,0 5.7641,7.030554 5.7641,7.030554 -4.0903,3.35352 -4.1273,8.26144 -6.8081,14.09626 -1.7436,3.79504 -6.2027,5.25061 -6.8322,9.37891 -0.5943,3.89692 2.7948,7.68684 2.61,11.62466 -0.1886,4.01781 -3.3308,8.42453 -4.817,12.16164 -2.4671,6.20392 -6.4785,16.21169 -12.3335,19.41993 -3.8564,2.11315 -10.9356,0.55027 -16.0376,-0.009 0,0 0.9299,-9.04001 0.9299,-9.04001 m -25.2929,63.34237 c -3.6335,-4.14519 -9.8038,-9.28 -12.3637,-14.5233 -1.9528,-3.99973 -2.0084,-11.07777 -2.513,-15.50018 -0.4282,-3.74856 -1.5883,-8.85109 -1.4168,-12.62017 0.2806,-6.1688 5.881,-17.61777 10.9476,-21.14425 7.1472,-4.97461 23.4094,0.52977 30.544,1.31132 0,0 -0.99,9.03646 -0.99,9.03646 -5.2573,-0.57592 -11.476,1.05746 -17.8873,0.71042 -4.1701,-0.22572 -5.8346,-3.59158 -8.5448,-0.41503 -2.5583,2.99852 0.2885,6.38245 -0.4001,10.26336 -0.7025,3.95976 -2.9169,6.05346 -2.8573,10.07489 0.099,6.6759 3.2488,9.76342 6.72,15.46629 2.2864,3.75618 2.1728,7.44394 5.5565,11.30411 0,0 -6.7951,6.03608 -6.7951,6.03608 m 9.922,76.04791 c 1.9077,-5.17089 2.2388,-10.07678 3.23,-15.82658 0.7561,-4.3861 2.4318,-7.74764 2.3205,-12.19724 -0.095,-3.77165 -1.7439,-6.58306 -2.5183,-10.27599 -1.2674,-6.04417 -2.5128,-10.94835 -3.8908,-16.968 -1.9439,-8.49157 -3.6768,-15.95639 -8.4084,-21.3543 0,0 6.8369,-5.99293 6.8369,-5.99293 3.4867,3.97766 12.5781,10.13745 13.7864,16.44432 0.7858,4.10207 -2.3516,8.66045 -1.4997,12.74861 0.8042,3.85902 5.1838,6.72079 6.0901,10.55727 0.9248,3.91443 -0.9339,8.55712 -0.9057,12.57887 0.047,6.67643 2.1133,15.0706 0.095,21.43536 -1.329,4.19218 -4.8133,7.12446 -6.5899,11.93981 0,0 -8.5465,-3.0892 -8.5465,-3.0892 m -8.4635,67.30542 c -0.8847,-5.44063 -1.462,-4.69207 -6.9876,-6.56649 -4.2152,-1.42983 -12.8172,-7.85114 -13.9977,-12.14181 -1.001,-3.63684 -0.3395,-12.41552 1.3168,-15.80555 2.7108,-5.54841 8.9264,-11.34904 13.6177,-15.36495 6.6178,-5.66503 12.8471,-10.39156 15.3314,-17.12514 0,0 8.5286,3.14652 8.5286,3.14652 -1.8306,4.96191 -3.4915,15.2869 -8.3411,19.4953 -3.1541,2.7372 -8.9482,2.09356 -12.1055,4.82685 -2.9804,2.5801 -2.1883,6.76863 -4.2696,10.11639 -2.1236,3.41576 -5.087,3.01094 -4.9631,7.02976 0.2056,6.67157 8.542,1.98003 14.1527,5.5961 3.6955,2.38169 5.8544,10.20851 6.6783,15.27505 0,0 -8.9609,1.51797 -8.9609,1.51797 m 77.825,34.42715 c -5.1176,2.04791 -16.4518,4.83183 -21.7922,2.48203 -4.0739,-1.79246 -6.4804,-4.13429 -10.8908,-4.73545 -3.7385,-0.50918 -7.3625,0.5223 -11.1328,0.37412 -6.1709,-0.24252 -14.8759,-1.71972 -20.3253,-4.62345 -7.6872,-4.0961 -11.672,-20.97937 -12.8241,-28.06421 0,0 8.9735,-1.45923 8.9735,-1.45923 0.8489,5.22074 2.8224,8.30046 6.7355,13.38997 2.5451,3.31028 1.403,7.38964 5.3303,8.8087 3.7072,1.33953 7.1039,-1.92175 11.0414,-1.73223 4.0175,0.1934 7.5844,2.88237 11.5492,3.5586 6.5818,1.12255 12.4157,2.16933 19.0351,3.04185 4.3598,0.57464 6.1021,2.45068 10.8679,0.54358 0,0 3.4323,8.41572 3.4323,8.41572 m 36.5981,36.98926 c -0.184,-5.50923 -1.5516,-11.11116 -2.0133,-16.92788 -0.3521,-4.43716 0.1564,-8.02457 -1.078,-12.30096 -1.0468,-3.62475 -2.8007,-6.2439 -4.4138,-9.65477 -2.6401,-5.58252 -0.2442,-5.03764 -6.4141,-4.81597 -8.7036,0.31272 -16.3383,3.23479 -23.0025,5.9016 0,0 -3.3777,-8.4408 -3.3777,-8.4408 4.9108,-1.96514 10.4494,-9.35209 16.7537,-10.57202 4.1004,-0.79346 10.0155,2.62723 14.0449,3.72244 3.8036,1.03383 11.1087,2.95481 13.1869,6.30375 2.1204,3.41699 1.1855,9.25023 1.9755,13.194 1.3114,6.54699 5.6913,13.36604 5.772,20.04259 0.053,4.39753 -2.5233,8.05427 -2.352,13.1847 0,0 -9.0816,0.36332 -9.0816,0.36332 m 21.5573,81.86384 c 0.098,-5.51134 -2.093,-10.15053 -3.0445,-15.90744 -0.7259,-4.39153 -0.065,-8.57087 -1.316,-12.84238 -1.061,-3.62061 -2.6046,-5.02026 -4.8354,-8.06325 -3.6511,-4.98041 -9.0967,-11.32424 -10.6313,-17.30573 -2.1648,-8.43774 -0.6199,-20.59993 -0.8595,-27.77411 0,0 9.0866,-0.30346 9.0866,-0.30346 0.1766,5.28657 4.1636,11.33033 4.5777,17.73789 0.2693,4.16757 -3.5431,7.59201 -1.8645,11.41517 1.5844,3.60888 6.7798,3.51387 9.3482,6.50418 2.6205,3.05107 2.6769,9.26934 3.7603,13.14231 1.7985,6.42945 5.6342,12.97724 6.4012,19.61022 0.5052,4.36882 -1.4432,8.75602 -1.5346,13.88841 0,0 -9.0882,-0.10181 -9.0882,-0.10181 m 62.1606,55.79645 c -4.9683,-2.38628 -10.7902,-4.02062 -16.0509,-6.54373 -4.0131,-1.92467 -7.0314,-4.24487 -11.3094,-5.47431 -3.6264,-1.04175 -7.9566,-0.9098 -11.5837,-1.94959 -5.9363,-1.70181 -15.276,-7.02567 -18.8406,-12.06729 -5.0284,-7.11191 -3.6328,-22.56909 -3.505,-29.74602 0,0 9.0901,0.16185 9.0901,0.16185 -0.094,5.2886 2.7386,10.30182 3.9621,16.60524 0.7957,4.09982 -2.0307,7.05582 1.1215,9.79432 2.9755,2.58501 6.9561,0.48817 10.6757,1.7928 3.7951,1.33117 6.1455,4.33908 9.9394,5.67452 6.2981,2.21692 14.7196,1.95339 20.3544,5.5352 3.7114,2.35912 5.4002,5.77704 10.0269,7.99925 0,0 -3.8805,8.21776 -3.8805,8.21776 m 30.3725,68.53921 c -5.3142,-1.46348 -14.8027,-5.37825 -18.5434,-9.85632 -2.8536,-3.41598 -4.8646,-9.79972 -6.6306,-13.88522 -1.4973,-3.46288 -4.0386,-8.03237 -4.9651,-11.69004 -1.5164,-5.98645 1.2736,-17.29981 4.6522,-22.469 4.766,-7.29189 1.9613,-8.31632 -4.5085,-11.42376 0,0 3.9358,-8.19449 3.9358,-8.19449 4.7675,2.28984 18.7322,12.18648 16.9029,18.3406 -1.1898,4.00272 -7.956,6.63796 -10.1347,10.20038 -2.0566,3.36275 1.2773,5.01031 2.06,8.87386 0.7985,3.94204 -0.9096,7.16691 0.2698,11.01182 1.9581,6.38285 5.891,8.50551 10.8201,13.00898 3.2467,2.96619 3.5478,5.94225 8.4966,7.30511 0,0 -2.3551,8.77808 -2.3551,8.77808 m 73.1799,-31.11728 c -5.4725,0.66075 -9.9291,1.5124 -15.4275,3.46378 -4.1944,1.4886 -4.8528,0.28513 -6.3505,4.4763 -1.2692,3.55275 -0.8528,8.10151 -2.1298,11.65125 -2.09,5.80981 -14.1385,12.46693 -20.1967,13.66345 -8.546,1.68787 -21.9239,-1.07154 -28.8441,-2.97729 0,0 2.4137,-8.76505 2.4137,-8.76505 5.0995,1.40433 10.6509,-1.8321 17.0694,-1.66546 4.1747,0.10838 7.1909,3.76019 11.1802,2.52582 3.7657,-1.16519 3.2988,-4.02856 5.5117,-7.29022 2.2579,-3.32791 4.023,-4.49045 5.3069,-8.30201 2.1314,-6.32752 10.2565,-16.29867 16.8905,-17.04953 4.3695,-0.4946 8.331,1.86852 13.4271,1.2532 0,0 1.1491,9.01576 1.1491,9.01576 M 1472.16,548.49466 c 1.3429,5.34578 4.2997,5.79637 8.8682,9.42613 3.485,2.76886 6.5106,6.16934 10.079,8.82976 3.0249,2.25478 7.2648,4.97971 9.9393,7.64149 4.3774,4.3565 10.4523,10.92173 12.4664,16.75874 2.8413,8.23393 -14.9857,22.36389 -22.112,23.22433 0,0 -1.0898,-9.02593 -1.0898,-9.02593 5.2513,-0.63405 6.7037,-1.00638 9.4508,-6.80845 1.7868,-3.77375 4.9086,-3.84162 2.6932,-7.38101 -2.0912,-3.34101 -6.9477,-3.15839 -9.7739,-5.90682 -2.8835,-2.80429 -3.074,-7.05727 -6.0052,-9.81057 -4.8661,-4.57068 -12.887,-5.50288 -17.5346,-10.29671 -3.0612,-3.15744 -4.5304,-9.40042 -5.781,-14.37863 0,0 8.7996,-2.27233 8.7996,-2.27233 m 9.2189,-77.70824 c 3.7315,4.05718 10.0749,9.58902 12.4415,14.92222 1.8054,4.06831 1.5806,13.82551 -0.029,17.97468 -1.364,3.51714 -4.7428,9.0817 -7.3161,11.84157 -4.2115,4.51703 -6.1021,6.42808 -8.6336,12.06058 -3.571,7.94544 -8.2753,14.16008 -6.5266,21.1214 0,0 -8.8171,2.21487 -8.8171,2.21487 -1.2886,-5.12972 -3.8623,-16.28885 -1.0074,-22.04022 1.8568,-3.74076 7.1793,-5.43379 8.9618,-9.21032 1.6826,-3.56486 2.2467,-9.40658 4.9604,-12.26611 2.7688,-2.91761 6.631,-2.91033 8.9578,-6.19052 3.8627,-5.44541 -0.9822,-7.36434 -4.2421,-13.19133 -2.1471,-3.83794 -1.9237,-7.26185 -5.3986,-11.04007 0,0 6.6489,-6.19675 6.6489,-6.19675 m -23.511,-64.53892 c -4.2764,3.47719 -4.3042,6.55895 -6.131,12.10031 -1.3936,4.22711 -2.4118,5.31886 -1.1233,9.57925 1.0926,3.61117 3.452,4.75667 5.6607,7.81566 3.6149,5.00659 7.3788,8.8559 10.9137,13.91917 4.9864,7.14246 8.6905,16.43091 13.5497,21.71421 0,0 -6.6917,6.15462 -6.6917,6.15462 -3.5807,-3.8932 -11.6506,-7.81254 -14.6795,-13.47468 -1.97,-3.68273 -0.3546,-8.57907 -2.8303,-11.94217 -2.337,-3.17461 -7.6876,-3.8145 -10.1127,-6.92219 -2.4745,-3.17084 -2.9887,-8.59663 -4.2525,-12.41475 -2.0981,-6.33838 -4.2232,-17.37959 -1.0796,-23.27001 2.0705,-3.87975 7.0144,-7.03448 10.9968,-10.27259 0,0 5.7797,7.01317 5.7797,7.01317 m 36.1857,-73.96295 c 0.6989,5.46764 2.6795,12.12541 2.699,17.96047 0.015,4.45115 -1.503,9.72935 -1.9647,14.15625 -0.3911,3.75247 0.029,8.80072 -0.8156,12.47816 -1.3831,6.01881 -7.1049,16.04494 -12.3063,19.37287 -7.3373,4.69453 -18.7787,4.79137 -24.3476,9.3194 0,0 -5.7351,-7.05334 -5.7351,-7.05334 4.1036,-3.33666 10.5679,-10.05936 16.7382,-11.83637 4.0132,-1.15579 7.8207,1.82871 10.7215,-1.17443 2.7382,-2.83483 0.2606,-6.52546 1.3056,-10.3265 1.0662,-3.87825 4.0447,-5.96368 4.7036,-9.93107 1.0939,-6.58619 -1.6107,-12.35076 -1.5816,-19.02773 0.019,-4.3978 2.2264,-7.63412 1.5755,-12.72582 0,0 9.0075,-1.21189 9.0075,-1.21189 m -70.5366,-8.0152 c 5.2866,-1.56124 10.3358,-4.59172 15.8674,-6.44907 4.2197,-1.41687 7.6006,-0.99672 11.2046,-3.60899 3.0546,-2.21459 5.187,-5.72551 8.1306,-8.08609 4.8176,-3.86353 20.3348,-6.95207 25.3645,-3.37172 7.0952,5.05057 8.1953,22.5215 9.1055,29.64152 0,0 -9.0181,1.15275 -9.0181,1.15275 -0.6707,-5.24666 -4.3947,-9.91328 -6.3788,-16.02026 -1.2905,-3.97206 1.6637,-6.95251 -2.447,-7.6796 -3.8804,-0.68634 -3.8793,3.82579 -7.098,6.10089 -3.2842,2.32129 -7.1104,2.57681 -10.4296,4.84825 -5.5101,3.77081 -11.8592,8.97517 -18.2618,10.86979 -4.2171,1.24793 -8.4845,-0.1519 -13.4075,1.302 0,0 -2.6318,-8.69947 -2.6318,-8.69947 m -56.2868,-6.02429 c -1.0886,5.40373 -1.1917,8.15555 0.6931,13.67732 1.4378,4.21214 0.2412,4.12407 4.5957,5.0427 3.6911,0.77828 4.556,-1.1205 8.1436,-2.28889 5.8717,-1.9123 11.2633,-4.29376 17.2735,-5.71121 8.4784,-1.99951 18.9435,-1.82714 25.8277,-3.86021 0,0 2.575,8.71934 2.575,8.71934 -5.0729,1.49815 -11.6312,7.31026 -18.0257,7.89831 -4.1591,0.38247 -7.9407,-3.00862 -11.9588,-1.87158 -3.7928,1.0733 -5.9975,5.81663 -9.701,7.16714 -3.7787,1.37792 -9.7385,0.14477 -13.7257,-0.37886 -6.6191,-0.86922 -18.1086,-9.23984 -18.6238,-15.89532 -0.3393,-4.38364 2.9911,-9.20254 4.0048,-14.23472 0,0 8.9216,1.73598 8.9216,1.73598 m -57.1831,-49.54777 c 5.45,0.82635 10.9895,1.28101 16.7991,1.82544 4.4317,0.41529 8.5368,1.87937 12.9876,1.93612 3.7727,0.0477 9.1748,-0.63022 12.877,0.0981 6.0592,1.19196 16.95,10.66833 18.4712,16.6529 2.146,8.44208 -3.3883,21.82644 -4.8058,28.86323 0,0 -8.9126,-1.79539 -8.9126,-1.79539 1.0445,-5.18533 -1.2149,-11.98352 -0.1093,-18.3087 0.7191,-4.11398 4.8837,-5.91486 2.7718,-9.51688 -1.9935,-3.40014 -5.3676,-1.11087 -9.1221,-2.3113 -3.8307,-1.22486 -5.5852,-3.57054 -9.5832,-4.0079 -6.6371,-0.72602 -13.6967,2.12725 -20.2751,0.98708 -4.333,-0.75094 -7.3265,-4.65813 -12.4018,-5.42767 0,0 1.3032,-8.99499 1.3032,-8.99499 m 25.128,-57.67979 c -4.0863,3.69906 -5.3984,7.90719 -8.3782,12.92416 -2.2731,3.8271 -5.4546,6.87084 -7.4213,10.86408 -1.6668,3.38501 -2.5134,7.75135 -4.2603,11.09567 -2.8592,5.4736 -6.805,9.43298 -9.861,14.79789 -4.3109,7.56797 -2.4348,7.78315 4.6622,8.85924 0,0 -1.3629,8.98896 -1.3629,8.98896 -5.2298,-0.79296 -20.5457,-8.95191 -19.3174,-15.25349 0.7989,-4.09863 7.2316,-7.84634 9.6546,-11.24733 2.2872,-3.21037 1.4524,-8.10695 3.5457,-11.44739 2.1359,-3.40829 5.5188,-4.87596 7.5114,-8.36979 3.3077,-5.80007 4.0319,-13.60269 8.0245,-18.95406 2.6297,-3.52472 7.2539,-5.51042 11.0592,-8.95514 0,0 6.1435,6.6972 6.1435,6.6972 m 78.4367,10.72381 c -5.4,1.10511 -13.8917,3.71284 -19.624,2.62545 -4.3728,-0.82947 -9.1392,-4.44748 -13.3536,-5.87999 -3.5723,-1.21389 -7.9232,-1.11212 -11.5024,-2.30655 -5.858,-1.95492 -10.3696,-5.06381 -16.1812,-7.14894 -8.1981,-2.94135 -13.0389,-3.47647 -18.3601,1.34048 0,0 -6.101,-6.73969 -6.101,-6.73969 3.9211,-3.54955 14.4952,-12.09974 20.7459,-10.63119 4.0656,0.95517 7.33,6.56749 11.103,8.35707 3.5615,1.68927 8.2366,-0.0265 11.8962,1.43924 3.7339,1.49553 5.754,4.65421 9.5415,6.00599 6.2875,2.24404 10.9433,2.83285 17.6178,2.94666 4.3962,0.0749 7.3084,2.12915 12.337,1.10003 0,0 1.8809,8.89144 1.8809,8.89144 m 65.8038,-41.48229 c -5.1526,-1.95745 -4.466,-4.38475 -7.3908,0.6619 -2.2311,3.84974 -4.1315,8.64793 -6.748,12.24813 -2.2175,3.0519 -5.703,7.24708 -8.5206,9.75674 -4.6115,4.10752 -10.8411,8.08821 -16.4035,10.76995 -7.8466,3.78298 -19.8837,5.75316 -26.9155,7.19224 0,0 -1.8228,-8.90642 -1.8228,-8.90642 5.1817,-1.06044 9.7906,-6.76613 15.9412,-8.61083 4.0004,-1.19982 8.3685,1.4269 12.048,-0.54768 3.4733,-1.86391 4.0116,-6.65628 7.0727,-9.14014 3.1232,-2.53431 6.9935,-2.87237 10.1222,-5.39952 5.194,-4.19531 3.2331,-16.57057 9.2965,-19.36073 3.9937,-1.83778 11.6937,0.99661 16.4919,2.81947 0,0 -3.1713,8.51689 -3.1713,8.51689 m 84.6883,7.6135 c -5.5117,0.0556 -10.2517,2.02885 -15.9964,3.05247 -4.3822,0.78088 -8.9866,0.25671 -13.3316,1.22386 -3.6828,0.82017 -7.5903,2.76662 -11.287,3.52334 -6.0503,1.23853 -15.8105,0.93923 -21.5886,-1.23845 -8.1509,-3.07191 -15.4657,-12.43994 -22.1754,-14.98896 0,0 3.2285,-8.49839 3.2285,-8.49839 4.9443,1.87835 13.5344,3.16558 18.646,7.05215 3.3247,2.52787 3.3351,7.27469 7.4413,8.03169 3.8762,0.71458 6.6225,-3.00337 10.5325,-3.50504 3.9894,-0.51183 7.4145,1.15136 11.4007,0.61631 6.6174,-0.88825 12.5431,-5.12774 19.1773,-5.88211 4.3696,-0.49691 8.6684,1.57793 13.801,1.52616 0,0 0.1517,9.08697 0.1517,9.08697 m 29.0195,63.6667 c -1.5564,-5.28774 -4.6842,-12.09817 -5.1844,-17.91152 -0.3815,-4.43459 0.8894,-9.37461 0.6222,-13.81791 -0.2268,-3.7663 -1.6987,-6.87453 -2.4251,-10.57709 -1.1888,-6.05994 -0.7589,-8.16153 -4.5804,-13.01083 -5.3908,-6.84061 -10.2834,-9.29272 -17.4606,-9.22033 0,0 -0.092,-9.09058 -0.092,-9.09058 5.2888,-0.0533 17.0358,-1.42323 22.0072,2.64088 3.2334,2.64335 3.9159,9.68055 5.7885,13.41248 1.7676,3.52277 6.3608,6.94109 7.2809,10.77392 0.9387,3.9107 -1.0491,8.62247 -1.0515,12.64456 0,6.67701 2.8383,12.36437 3.518,19.0059 0.4476,4.37445 -1.171,7.60251 0.2785,12.52667 0,0 -8.7016,2.62385 -8.7016,2.62385 m -24.0744,69.57222 c 2.1528,-5.07431 6.9621,-13.09291 11.5282,-16.72578 3.4831,-2.77128 8.0154,-4.2028 11.3748,-7.1229 2.8473,-2.47548 2.839,-3.90416 4.2198,-7.41524 2.2599,-5.74654 1.8784,-7.77894 1.4162,-13.93688 -0.652,-8.68665 -1.6021,-17.73164 -3.629,-24.61738 0,0 8.7214,-2.56714 8.7214,-2.56714 1.4935,5.07403 7.8283,11.53566 8.3791,17.93318 0.3583,4.16102 -3.245,8.69828 -3.3518,12.87274 -0.1009,3.94049 2.894,9.20674 1.9037,13.02181 -1.0105,3.89258 -6.8072,7.97591 -9.8883,10.56068 -5.1147,4.29095 -8.7715,9.39527 -13.6988,13.89968 -3.2453,2.96686 -6.5805,2.86605 -8.5853,7.59146 0,0 -8.39,-3.49423 -8.39,-3.49423 m -20.9971,86.34569 c -0.9006,-5.43781 -2.1505,-13.47234 -1.2885,-19.24304 0.6575,-4.40206 3.3088,-9.53991 4.5952,-13.80098 1.09,-3.61197 1.0719,-7.70168 2.0527,-11.34536 1.6051,-5.96356 3.7679,-11.60708 6.013,-17.35967 3.167,-8.11487 7.6233,-17.64862 10.4266,-24.25645 0,0 8.3693,3.55064 8.3693,3.55064 -2.0657,4.86923 -0.1013,12.52558 -2.5672,18.45486 -1.6039,3.85649 -6.7671,5.96035 -8.3648,9.8187 -1.5081,3.6421 0.7968,8.0797 -0.3098,11.86347 -1.1291,3.86063 -4.5045,6.49922 -5.8982,10.27186 -2.3135,6.26292 -0.8826,12.02816 -1.7677,18.64568 -0.5828,4.35864 -3.1432,6.7923 -2.3046,11.85621 0,0 -8.956,1.54408 -8.956,1.54408 m 10.3891,84.89766 c -0.781,-5.45645 -2.8718,-12.73317 -2.4672,-18.55422 0.3087,-4.44046 2.4602,-8.96417 2.7629,-13.40499 0.2562,-3.76425 -1.1411,-6.1989 -1.8462,-9.90539 -1.1539,-6.06635 -2.6715,-10.78438 -4.0376,-16.80653 -1.9273,-8.49509 -2.769,-19.28769 -3.9417,-26.36885 0,0 8.9688,-1.48538 8.9688,-1.48538 0.8642,5.21803 6.3061,10.79364 7.3367,17.13204 0.6704,4.12258 -2.5686,8.45637 -1.6222,12.52356 0.8935,3.83924 5.3429,6.74413 6.2449,10.58145 0.9202,3.91528 -1.0316,8.99864 -1.4193,13.00192 -0.6435,6.64578 0.7878,12.76445 0.5703,19.43763 -0.1433,4.3953 -2.2886,7.42024 -1.5612,12.50152 0,0 -8.9882,1.34724 -8.9882,1.34724 m 24.2527,72.56656 c 1.0747,-5.40618 1.5173,-11.54005 2.7696,-17.23898 0.9552,-4.34731 2.7826,-7.02272 2.3511,-11.45235 -0.3661,-3.75471 -1.4969,-3.89138 -3.8782,-6.81774 -3.8974,-4.78953 -8.2977,-5.02043 -13.1812,-8.79948 -6.8888,-5.33087 -10.4346,-21.27599 -11.4517,-28.38144 0,0 8.9996,-1.28827 8.9996,-1.28827 0.7495,5.23593 5.1378,8.77937 7.9914,14.53102 1.856,3.74095 0.3716,7.18144 3.8565,9.48237 3.2896,2.17197 9.1614,1.34041 12.2236,3.82275 3.1244,2.53279 4.2714,10.41858 4.6886,14.41816 0.6926,6.63962 2.1531,15.26009 0.2524,21.66083 -1.2518,4.21587 -4.6955,6.74183 -5.6963,11.77628 0,0 -8.9254,-1.71315 -8.9254,-1.71315 m 64.4486,47.63765 c -5.4814,-0.57991 -11.4406,0.23146 -17.2531,-0.28307 -4.4339,-0.39248 -9.1028,-2.23504 -13.5255,-2.7381 -3.7489,-0.42603 -8.9148,-0.20755 -12.5659,-1.15864 -5.9757,-1.55662 -15.3396,-7.63256 -18.756,-12.77623 -4.8193,-7.25587 -2.8933,-23.47181 -1.4938,-30.51178 0,0 8.9167,1.77259 8.9167,1.77259 -1.0313,5.18767 1.4611,9.65265 2.5292,15.98434 0.6948,4.11821 -2.0735,7.02911 0.8321,10.02819 2.7428,2.83099 6.4801,0.72813 10.2175,1.98042 3.8133,1.27776 5.7457,4.09273 9.685,4.90407 6.5395,1.34685 12.9256,-1.06981 19.5511,-0.24045 4.3638,0.54621 7.6547,3.45451 12.7592,3.99454 0,0 -0.8965,9.04412 -0.8965,9.04412 m 75.1138,37.14483 c -5.511,-0.0936 -13.431,-0.0584 -19.0142,-1.75223 -4.2591,-1.29209 -10.0467,-5.7461 -13.4673,-8.59359 -2.8997,-2.41335 -6.9317,-4.61767 -9.6879,-7.19486 -4.511,-4.21804 -7.1166,-7.77627 -12.0762,-11.45512 -6.9962,-5.18953 -13.6386,-8.26007 -20.7765,-9.01524 0,0 0.9565,-9.04079 0.9565,-9.04079 5.2598,0.55647 15.107,-1.3816 20.7143,1.7465 3.647,2.03456 5.5422,8.19577 8.4985,11.14479 2.7905,2.78373 7.9633,2.8511 10.819,5.56887 2.9137,2.773 3.3367,6.93013 6.2658,9.68567 4.8626,4.5744 9.9335,3.71711 16.357,5.53768 4.2308,1.19908 6.3732,4.19353 11.5053,4.28065 0,0 -0.094,9.08767 -0.094,9.08767 m 59.5634,-53.34793 c 3.5827,4.18801 8.3638,16.33601 6.6839,21.92325 -1.2815,4.26211 -7.2968,10.20998 -10.6352,13.15381 -2.8294,2.49559 -6.0887,6.44115 -9.2281,8.5339 -5.1382,3.42517 -12.5921,6.75655 -18.623,8.08232 -8.5076,1.87019 -20.5697,0.90558 -27.7462,0.78375 0,0 0.1543,-9.08964 0.1543,-9.08964 5.2883,0.0898 10.9386,-3.92442 17.3336,-4.50288 4.1594,-0.37625 7.9048,3.22981 11.875,1.93594 3.7477,-1.22134 4.8134,-5.50049 8.1124,-7.65787 3.366,-2.20119 7.2436,-1.84741 10.5257,-4.17185 5.4485,-3.85879 5.9051,-6.34563 5.8609,-13.02205 -0.029,-4.39744 2.1568,-6.11586 -1.1795,-10.01591 0,0 6.8662,-5.95277 6.8662,-5.95277 m -53.4945,-60.81437 c 1.3387,5.34703 4.2539,9.53192 6.5946,14.87699 1.7856,4.07736 2.3163,8.03445 4.6986,11.79457 2.0196,3.18703 4.1578,4.13795 7.0681,6.53912 4.7634,3.92997 8.6855,6.10117 13.8152,9.53932 7.2363,4.84999 15.9907,13.17686 20.6562,18.63053 0,0 -6.9075,5.90914 -6.9075,5.90914 -3.4379,-4.01875 -10.513,-4.233 -15.5421,-8.22612 -3.2709,-2.59718 -3.7889,-7.94968 -7.2479,-10.28946 -3.2651,-2.20865 -8.8005,-1.50817 -11.9358,-3.89743 -3.199,-2.43782 -4.9205,-7.96197 -6.9468,-11.43632 -3.3637,-5.7677 -9.1488,-11.08143 -11.4261,-17.35807 -1.5,-4.13411 -0.3815,-8.83755 -1.6281,-13.81692 0,0 8.8016,-2.26535 8.8016,-2.26535 m -12.3191,-79.07119 c 4.2497,3.50906 11.1995,5.53709 15.2907,9.69721 3.1209,3.17344 4.9867,12.78686 5.0011,17.23746 0.013,3.77251 -0.1898,9.683 -1.2068,13.31658 -1.6646,5.94703 -4.2078,11.09164 -6.2662,16.91375 -2.9037,8.21291 -3.0878,15.15477 -1.3447,22.11773 0,0 -8.8191,2.20787 -8.8191,2.20787 -1.2845,-5.13093 -7.0298,-14.08558 -5.7051,-20.36831 0.8616,-4.08636 6.2802,-7.49609 7.9489,-11.32418 1.5751,-3.61353 -0.5263,-8.08739 0.6764,-11.84164 1.2272,-3.83051 4.3394,-5.63856 5.029,-9.60067 1.1448,-6.57744 -1.8378,-7.39026 -7.131,-11.45994 -3.4864,-2.68048 -5.2552,-6.58292 -9.2127,-9.85069 0,0 5.7395,-7.04517 5.7395,-7.04517 m -49.3857,-60.71571 c 4.4295,3.27987 9.1027,3.64703 14.5374,5.77189 4.1457,1.62088 8.3806,4.612 12.4141,6.49434 3.4192,1.59521 9.2662,4.04429 12.0062,6.63751 4.4845,4.24429 7.545,15.62524 7.5647,21.80021 0.028,8.71067 -3.2252,16.11381 2.3088,20.68333 0,0 -5.7877,7.00928 -5.7877,7.00928 -4.0779,-3.36723 -11.454,-13.49979 -11.084,-19.91051 0.2407,-4.16961 4.6214,-7.60443 4.3898,-11.77375 -0.2186,-3.93564 -3.8801,-4.30024 -6.2791,-7.42756 -2.4477,-3.19088 -2.1872,-5.51836 -5.6483,-7.56679 -5.7457,-3.40053 -12.68,-2.50918 -18.7478,-5.29563 -3.9965,-1.83526 -6.9088,-6.02897 -11.0337,-9.08332 0,0 5.3596,-7.339 5.3596,-7.339 m -11.8895,-79.37841 c 1.6622,5.25515 6.4965,11.29996 7.2505,17.08589 0.5751,4.41367 -0.7772,10.14912 -0.9002,14.59849 -0.1038,3.77147 0.7874,7.85821 0.7116,11.63084 -0.1241,6.17459 -0.8179,11.1905 -0.8233,17.36572 -0.01,8.71103 -0.6354,15.12637 5.1326,19.39744 0,0 -5.4096,7.30571 -5.4096,7.30571 -4.2505,-3.14731 -13.1377,-11.5777 -13.6878,-17.97511 -0.3578,-4.16095 3.7099,-8.9183 4.0774,-13.07792 0.3468,-3.92648 -3.0612,-7.74424 -2.9473,-11.68479 0.1163,-4.02062 2.808,-7.51121 3.2927,-11.50391 0.8046,-6.62821 -1.4636,-11.01478 -3.2134,-17.45806 -1.1525,-4.24387 -0.5819,-7.99262 -2.1298,-12.88643 0,0 8.6466,-2.79787 8.6466,-2.79787 m 37.5955,-70.87435 c -1.0648,5.40786 -6.4602,14.57969 -10.989,18.25923 -3.4548,2.80688 -7.4765,3.91319 -10.4336,7.23945 -2.5062,2.81974 -2.4478,5.61574 -4.0356,9.03869 -2.5989,5.60231 -5.0479,10.19727 -7.6591,15.79324 -3.6835,7.89393 -7.4732,13.96312 -5.3086,20.80642 0,0 -8.6676,2.74157 -8.6676,2.74157 -1.595,-5.04275 -4.7727,-15.96299 -2.2676,-21.87531 1.6293,-3.84545 7.0836,-5.97891 8.9451,-9.71698 1.7573,-3.52857 0.2292,-8.46641 1.9195,-12.02774 1.7247,-3.63368 5.8666,-6.59514 8.5707,-9.57225 4.4892,-4.94226 8.4566,-10.77053 13.486,-15.16154 3.3126,-2.89219 6.5201,-2.18554 7.5116,-7.22157 0,0 8.9282,1.69679 8.9282,1.69679 m -9.2265,-87.28311 c 1.0125,5.41803 2.0438,13.1027 1.5679,18.91853 -0.3629,4.43649 -2.1224,8.42756 -2.0305,12.87763 0.078,3.77205 1.488,5.81121 2.6733,9.39335 1.9401,5.86284 3.837,11.18444 5.4359,17.14913 2.2554,8.41405 2.1119,21.73402 0.7253,28.7762 0,0 -8.9195,-1.75624 -8.9195,-1.75624 1.0218,-5.1893 -3.4044,-9.96696 -4.1378,-16.34618 -0.477,-4.14912 2.6585,-8.01633 1.5198,-12.03415 -1.0749,-3.79263 -5.8518,-6.23058 -7.0571,-9.98376 -1.2299,-3.82943 0.2873,-8.92411 0.2444,-12.94541 -0.071,-6.6757 -1.9333,-13.66749 -1.2839,-20.31285 0.4277,-4.37698 3.2828,-6.96248 2.34,-12.00797 0,0 8.9222,-1.72828 8.9222,-1.72828 m -72.3671,-18.42285 c 1.9,5.17324 2.2504,4.91514 8.0164,5.80863 4.3985,0.68155 6.567,1.41058 10.8551,0.21663 3.6346,-1.01242 6.2369,-3.43331 9.6983,-4.93573 5.6652,-2.45898 14.0517,-5.15517 20.2222,-4.94633 8.7044,0.29458 21.4006,15.38424 22.719,22.43964 0,0 -8.9363,1.66986 -8.9363,1.66986 -0.9715,-5.19905 -3.6898,-5.67755 -9.3836,-8.64527 -3.7033,-1.93025 -4.3207,-5.79629 -8.4486,-5.16552 -3.8964,0.59541 -5.644,4.97245 -9.2739,6.51015 -3.7038,1.5689 -8.2342,0.78127 -12.1414,1.73553 -6.4862,1.58419 -17.4163,5.5359 -23.2388,2.26914 -3.835,-2.15162 -6.8281,-8.95028 -8.5974,-13.76782 0,0 8.509,-3.18891 8.509,-3.18891 M 1579.624,65.301795 c 5.5094,0.145006 15.6094,1.426017 20.3374,4.844936 3.6066,2.608024 7.7814,11.449421 8.4783,15.84527 0.591,3.726042 1.6772,9.139825 1.4758,12.907744 -0.3295,6.166905 -1.5916,10.726935 -1.4696,16.900705 0.172,8.70898 -1.005,17.55908 1.4691,24.29574 0,0 -8.5325,3.13364 -8.5325,3.13364 -1.8231,-4.96417 -6.5739,-12.56435 -6.747,-18.98357 -0.1126,-4.17514 3.5059,-8.57248 4.0255,-12.71578 0.4904,-3.91107 -2.6848,-7.82047 -2.4398,-11.754965 0.25,-4.014418 3.1259,-6.638773 2.9539,-10.656796 -0.2856,-6.670246 -3.8765,-6.754128 -9.7273,-9.970273 -3.8536,-2.11828 -4.8723,-4.6261 -10.0029,-4.761135 0,0 0.1791,-9.085516 0.1791,-9.085516 m 904.8931,74.492385 c 1.8999,-5.17314 0.9961,-10.20976 1.8735,-15.97854 0.6692,-4.40058 2.9413,-7.37878 2.4323,-11.80045 -0.4319,-3.74796 -2.2677,-6.88025 -3.1251,-10.55473 -1.4035,-6.01399 -1.8108,-16.877132 0.9299,-22.408907 3.8662,-7.803359 21.846,-12.6903 29.0202,-12.879124 0,0 0.2392,9.086936 0.2392,9.086936 -5.2867,0.139142 -7.9746,3.953328 -13.4975,7.22799 -3.5922,2.129882 -7.1478,0.202999 -7.8433,4.3201 -0.6565,3.88635 3.1963,6.146257 4.0582,9.992889 0.8795,3.924786 -0.6784,8.259536 -0.4615,12.275386 0.3602,6.66664 1.9055,14.39066 0.6331,20.94521 -0.838,4.31717 -3.9394,8.0321 -5.7086,12.84954 0,0 -8.5504,-3.0763 -8.5504,-3.0763 M 2412.15,158.2151 c 1.0125,-5.41791 6.8073,-16.52013 12.0464,-19.08742 3.9965,-1.95843 12.8393,-1.20903 17.2321,-0.49218 3.7235,0.60725 8.3952,0.5595 12.066,1.43307 6.008,1.42976 10.6619,3.32556 16.7047,4.59541 8.5242,1.79129 12.6614,2.16694 15.1354,-4.56956 0,0 8.5325,3.13364 8.5325,3.13364 -1.8231,4.96405 -10.9515,16.82905 -17.3684,16.59922 -4.1736,-0.14948 -8.5336,-5.25068 -12.5448,-6.41147 -3.7865,-1.09573 -8.2261,1.22903 -12.053,0.28261 -3.9046,-0.96567 -6.4677,-4.26129 -10.351,-5.3078 -6.4465,-1.73727 -8.5097,-0.0691 -13.7159,4.10837 -3.429,2.75155 -5.7969,2.28106 -6.7397,7.32644 0,0 -8.9443,-1.61033 -8.9443,-1.61033 m -9.2282,87.28128 c -1.0648,-5.40774 -1.6882,-14.44141 -0.1947,-20.08182 1.1392,-4.30267 3.9929,-8.53543 5.2499,-12.80547 1.0652,-3.61956 0.8285,-6.95292 1.3688,-10.68712 0.8843,-6.11172 1.023,-10.21014 1.0342,-16.38531 0.016,-8.71096 1.3079,-20.10632 2.6262,-27.16157 0,0 8.9363,1.66986 8.9363,1.66986 -0.9715,5.19893 3.2282,11.35613 2.8486,17.76634 -0.247,4.16927 -4.2741,7.78082 -4.4027,11.95453 -0.1214,3.93979 3.1406,8.31381 2.7277,12.23383 -0.4213,3.99966 -4.0425,7.75813 -5.4101,11.54047 -2.2703,6.27901 -1.6912,12.31803 -3.0584,18.85339 -0.9004,4.30454 -3.8124,6.25239 -2.8208,11.28831 0,0 -8.905,1.81456 -8.905,1.81456 m 37.5958,70.88244 c 1.6621,-5.25504 -0.2845,-8.09702 -1.5015,-13.80329 -0.9284,-4.35289 -0.9088,-7.74358 -2.8564,-11.74594 -1.6513,-3.3924 -4.3429,-5.44128 -6.5069,-8.5323 -3.5418,-5.05904 -5.3581,-8.33505 -9.8018,-12.62289 -6.2685,-6.0486 -14.688,-17.30428 -16.0746,-24.34629 0,0 8.9195,-1.75628 8.9195,-1.75628 1.0218,5.18918 7.0447,5.68892 11.4628,10.34897 2.8736,3.03096 2.9646,8.47621 5.7053,11.6261 2.5872,2.97335 7.8002,4.37044 10.0324,7.61956 2.2776,3.31514 2.3555,8.04455 3.9937,11.71769 2.7197,6.09771 8.0405,12.79604 8.8567,19.42226 0.5376,4.36436 -1.9985,9.86213 -3.5464,14.75584 0,0 -8.6828,-2.68343 -8.6828,-2.68343 m -11.9209,79.37649 c 4.4294,-3.2798 4.1308,-5.69699 5.4644,-11.37713 1.0173,-4.33297 2.6507,-7.0332 2.3072,-11.47088 -0.2916,-3.76154 -1.9139,-6.9445 -2.646,-10.6461 -1.1982,-6.05837 -2.045,-13.02304 -1.8296,-19.19392 0.3039,-8.7049 7.2909,-19.58263 9.4553,-26.42579 0,0 8.6676,2.74153 8.6676,2.74153 -1.5949,5.04265 -1.4727,11.20272 -2.9487,17.45189 -0.96,4.06454 -5.218,6.43371 -5.147,10.60885 0.067,3.94113 4.1297,6.72489 4.8604,10.59869 0.7456,3.95251 -1.0551,8.25446 -0.9884,12.27567 0.1108,6.67555 2.2522,16.01518 -0.5538,22.07289 -1.8482,3.98994 -7.0605,7.5776 -11.1853,10.63189 0,0 -5.4561,-7.26759 -5.4561,-7.26759 m -49.3543,60.7133 c 4.252,-3.50607 2.7086,-5.77263 3.2074,-11.58618 0.3805,-4.43475 1.7921,-8.87981 2.0789,-13.32144 0.2427,-3.76493 1.0749,-10.67006 2.8412,-14.00366 2.8909,-5.45606 12.3548,-11.44883 18.15,-13.58075 8.175,-3.00738 17.8272,-3.25031 23.5951,-7.5213 0,0 5.4097,7.3057 5.4097,7.3057 -4.2503,3.14725 -10.7871,10.09624 -17.0364,11.5724 -4.0645,0.96011 -8.3877,-2.17024 -12.1894,-0.44274 -3.5886,1.63067 -3.0947,5.37142 -5.4669,8.51888 -2.4204,3.21139 -4.8159,3.18621 -5.5309,7.1435 -1.1871,6.56944 2.0623,13.75157 0.594,20.26393 -0.967,4.28939 -5.8658,9.35942 -9.8255,12.62441 0,0 -5.8272,-6.97275 -5.8272,-6.97275 m -12.3106,79.04233 c 1.3386,-5.34692 1.3725,-9.7639 1.3385,-15.59811 -0.026,-4.4505 0.4857,-6.91115 -1.2547,-11.00787 -1.4756,-3.4724 -4.1463,-6.24014 -5.8819,-9.59056 -2.8408,-5.48357 -5.2469,-16.19243 -3.8524,-22.2068 1.9671,-8.48412 16.9781,-15.40141 22.5151,-19.96704 0,0 5.7829,7.01323 5.7829,7.01323 -4.0802,3.36436 -7.6481,8.32299 -12.3295,12.71722 -3.0448,2.85806 -6.5044,1.95621 -6.558,6.13118 -0.051,3.94098 4.2488,5.18901 5.9309,8.75407 1.7162,3.63749 1.1542,7.89981 2.4995,11.69002 2.2334,6.29206 6.9424,14.7323 5.9633,21.3367 -0.6448,4.35002 -4.0764,7.89763 -5.3229,12.8769 0,0 -8.8308,-2.14894 -8.8308,-2.14894 m -53.4804,60.81956 c 3.5826,-4.18792 9.3043,-9.83972 14.272,-12.90057 3.7894,-2.33492 8.4313,-3.37869 12.1432,-5.83518 3.1462,-2.08254 4.4971,-4.5912 7.0761,-7.34528 4.2209,-4.50756 5.9159,-7.85338 9.1739,-13.09919 4.5959,-7.39997 9.917,-14.46499 11.6602,-21.4278 0,0 8.8191,2.20787 8.8191,2.20787 -1.2845,5.13082 -0.6851,14.37032 -4.0805,19.82053 -2.2084,3.54489 -7.8167,4.74585 -10.0872,8.25056 -2.1433,3.30829 -1.6866,9.1738 -4.2676,12.15301 -2.6335,3.03972 -7.9648,4.18638 -11.3849,6.3024 -5.6777,3.51279 -9.8867,8.86806 -15.5948,12.3321 -3.7596,2.28163 -7.449,1.50319 -10.7853,5.40316 0,0 -6.9442,-5.86161 -6.9442,-5.86161 m 59.5062,53.37397 c -5.5109,0.0936 -12.9201,0.78507 -18.6505,-0.31297 -4.3714,-0.83759 -9.3731,-3.57218 -13.5907,-4.99408 -3.5751,-1.2049 -8.4101,-1.69546 -11.8672,-3.20659 -5.6581,-2.47323 -13.4224,-7.60764 -17.1675,-12.516 -5.2831,-6.92393 -2.2338,-26.32461 2.4315,-31.77816 0,0 6.9075,5.90914 6.9075,5.90914 -3.4378,4.01866 -2.1665,6.13253 -0.4622,12.32287 1.1086,4.02627 -1.2298,7.30452 1.7239,10.25577 2.7882,2.78585 6.9565,1.06683 10.5541,2.67734 3.6708,1.64325 5.4622,5.13757 9.1882,6.65102 6.1856,2.51241 12.1013,1.21537 18.6696,2.41269 4.3262,0.78857 6.9171,3.58046 12.0491,3.49334 0,0 0.2142,9.08563 0.2142,9.08563 m 75.1035,-37.1439 c -5.4813,0.5799 -9.5455,2.27575 -14.9966,4.3555 -4.1582,1.58652 -6.9343,1.36297 -10.1155,4.47576 -2.6963,2.63881 -3.8286,5.83656 -6.0891,8.85787 -3.6996,4.94493 -9.52,11.31343 -14.9217,14.30499 -7.6199,4.22004 -21.819,4.15706 -28.9954,4.27888 0,0 -0.1543,-9.08964 -0.1543,-9.08964 5.2882,-0.0898 10.5218,-4.85648 16.8703,-5.81706 4.1291,-0.62477 7.2693,2.38188 10.5037,-0.25865 3.0531,-2.49254 2.442,-7.21894 4.857,-10.33477 2.464,-3.17912 6.8541,-4.86961 9.8937,-7.50283 5.0461,-4.37137 11.6183,-11.17767 18.1289,-12.65651 4.2882,-0.97408 8.8987,0.89499 14.0031,0.35497 0,0 1.0159,9.03149 1.0159,9.03149 m 64.4663,-47.62312 c 1.0746,5.40605 3.0976,14.20548 1.7869,19.89116 -0.9998,4.33719 -6.5643,10.64434 -9.6936,13.8095 -2.6522,2.6832 -7.0631,6.88913 -10.3912,8.66594 -5.4471,2.90807 -13.8356,4.50401 -19.9942,4.95756 -8.6876,0.63981 -19.1281,-1.3224 -26.2659,-0.56725 0,0 -0.9564,-9.04079 -0.9564,-9.04079 5.2597,-0.55646 12.4988,-4.94902 18.9101,-4.58902 4.17,0.23415 7.4814,4.23081 11.635,3.80092 3.9209,-0.4058 5.5403,-4.44875 9.1364,-6.06281 3.6691,-1.64683 6.7668,-0.47887 9.9799,-2.8976 5.3341,-4.01532 4.4172,-7.82685 5.3065,-14.44322 0.5856,-4.35789 2.6452,-6.65921 1.6444,-11.69356 0,0 8.9021,-1.83083 8.9021,-1.83083 m 24.2547,-72.55371 c -0.7738,5.45738 -2.0086,14.23467 -5.0334,19.2237 -2.3075,3.80579 -9.0784,7.70395 -12.8196,10.1157 -3.1709,2.04463 -4.3882,3.76684 -6.7503,6.70896 -3.8659,4.81532 -2.6992,5.67488 -2.7013,11.84964 0,8.71038 0.7961,17.78572 2.1955,24.82554 0,0 -8.9166,1.77257 -8.9166,1.77257 -1.0313,-5.18756 -6.7104,-11.56668 -7.1717,-17.97116 -0.3001,-4.16556 3.5989,-8.86007 4.0458,-13.01139 0.4218,-3.91865 -1.5431,-10.40305 0.4031,-13.83058 1.9858,-3.49715 8.6315,-5.43368 12.1378,-7.40396 5.8207,-3.27085 7.0392,-6.7545 9.813,-12.82755 1.827,-4.00005 5.0703,-5.58576 5.7909,-10.6679 0,0 9.0068,1.21643 9.0068,1.21643 m 10.4094,-84.89166 c -0.9005,5.43769 -1.4567,12.28828 -3.1336,17.87706 -1.2792,4.26329 -3.9061,8.05628 -4.9588,12.38101 -0.8919,3.66591 -0.2061,6.82178 -0.4467,10.58711 -0.3937,6.16266 0,10.30694 0.4434,16.46602 0.6318,8.68825 -2.1685,20.35153 -3.1761,27.45818 0,0 -9.0014,-1.27626 -9.0014,-1.27626 0.7425,-5.23681 -2.1426,-11.35209 -1.8905,-17.76823 0.164,-4.17313 3.9919,-7.6881 3.756,-11.85723 -0.2226,-3.93546 -3.898,-8.0288 -3.8155,-11.9696 0.084,-4.02087 3.295,-8.0887 4.347,-11.97057 1.7463,-6.44423 1.1883,-13.58241 3.3376,-19.90382 1.4156,-4.16362 4.7243,-6.38554 5.5629,-11.44934 0,0 8.9757,1.42567 8.9757,1.42567 m -20.9769,-86.34626 c 2.1527,5.0742 5.1553,11.40446 6.5975,17.05856 1.1002,4.3131 0.8605,8.45246 2.5217,12.58206 1.4085,3.50028 3.9337,6.40796 5.5804,9.80306 2.695,5.55671 5.1411,12.23223 6.4247,18.27242 1.8107,8.52055 0.166,21.40684 -1.0067,28.48785 0,0 -8.9689,-1.48536 -8.9689,-1.48536 0.8642,-5.21791 -2.7577,-10.62187 -3.0826,-17.03467 -0.2113,-4.17096 3.2885,-7.77475 2.2704,-11.8246 -0.961,-3.82287 -5.602,-5.50665 -7.2453,-9.08989 -1.6767,-3.65605 -0.9104,-8.01172 -2.1825,-11.82725 -2.1117,-6.33408 -6.713,-12.20774 -8.1344,-18.73152 -0.9362,-4.29689 0.8873,-7.88066 -1.1174,-12.60597 0,0 8.3431,-3.60469 8.3431,-3.60469 m -24.1,-69.56898 c -1.5564,5.28763 -2.2695,11.16514 -3.816,16.79141 -1.1796,4.29188 -3.0512,7.03715 -2.9824,11.48758 0.059,3.77237 1.5543,5.09574 3.0962,8.53889 2.5238,5.63535 5.097,6.09947 9.8059,10.09448 6.6426,5.63551 14.3912,16.38913 17.1945,22.99681 0,0 -8.3694,3.55063 -8.3694,3.55063 -2.0657,-4.86912 -7.8954,-6.05199 -12.4284,-10.60019 -2.9483,-2.95821 -2.9564,-8.24809 -6.08,-11.01934 -2.9487,-2.61593 -8.9574,-3.78479 -11.1892,-7.03374 -2.277,-3.31496 -1.5457,-10.34107 -1.5288,-14.36278 0.028,-6.67636 -1.2197,-15.15191 1.0192,-21.44201 1.4746,-4.143 5.0936,-6.58642 6.543,-11.51047 0,0 8.7354,2.50873 8.7354,2.50873 m 28.9894,-63.70463 c -5.5115,-0.0556 -8.1638,1.22502 -13.2914,4.00922 -3.9115,2.12389 -5.7091,1.65757 -7.4993,5.73227 -1.5171,3.45403 -0.6556,5.69929 -0.9139,9.46326 -0.4228,6.16043 -0.2207,11.53637 -0.7624,17.68786 -0.7641,8.67754 -5.3312,19.68047 -7.358,26.56606 0,0 -8.7213,-2.56714 -8.7213,-2.56714 1.4935,-5.07392 -0.6081,-11.90715 0.8571,-18.15876 0.9529,-4.06613 5.1983,-6.65132 5.4911,-10.81701 0.2765,-3.93222 -3.2831,-7.78616 -3.178,-11.72663 0.1072,-4.02052 3.3681,-8.71271 5.0009,-12.38787 2.7105,-6.1011 9.2305,-15.55912 15.622,-17.48975 4.2097,-1.27166 9.6523,0.54852 14.7849,0.60031 0,0 -0.032,9.08818 -0.032,9.08818 m 84.926,-7.69572 c -5.0642,2.17586 -8.858,6.44457 -13.9638,9.26895 -3.8948,2.15455 -10.584,3.54772 -14.9687,4.31026 -3.7167,0.64673 -8.8081,2.14188 -12.5813,2.15764 -6.1755,0.0258 -13.1987,-1.14365 -19.1967,-2.61282 -8.4609,-2.07246 -17.0296,-6.22686 -24.2068,-6.29929 0,0 0.092,-9.09058 0.092,-9.09058 5.2887,0.0534 14.1082,-2.57354 20.202,-0.54853 3.9634,1.31709 6.2509,6.16155 10.3176,7.11051 3.8388,0.89577 7.3752,-2.31061 11.3149,-2.17308 4.0197,0.14035 6.7932,2.46828 10.8089,2.25011 6.6662,-0.36222 9.4887,-5.48028 15.3524,-8.67372 3.8622,-2.10341 8.4709,-1.99961 13.1869,-4.02585 0,0 3.6428,8.3264 3.6428,8.3264 m 65.566,41.55641 c -5.3998,-1.10508 -12.9177,-2.34612 -18.2072,-4.80903 -4.035,-1.87875 -7.9771,-5.36392 -11.8776,-7.50821 -3.3063,-1.81725 -7.7624,-2.99193 -10.9756,-4.96983 -5.259,-3.2372 -13.4962,-10.3111 -15.4751,-16.16017 -2.7914,-8.25092 -2.7797,-11.74289 -9.3743,-8.90947 0,0 -3.5889,-8.35285 -3.5889,-8.35285 4.8596,-2.08791 22.559,-1.15824 24.4323,4.98255 1.2184,3.99405 -2.9563,8.83325 -0.536,12.23544 2.2847,3.21151 6.9803,1.66186 10.3189,3.75776 3.4064,2.1385 4.7961,5.96716 8.1965,8.11477 5.645,3.56518 12.0612,3.62452 18.124,6.42093 3.9933,1.84183 5.6978,5.25351 10.7264,6.28261 0,0 -1.7634,8.9155 -1.7634,8.9155 m 78.4394,-10.72593 c -4.0879,-3.69711 -5.5445,-4.20082 -11.376,-4.0187 -4.4485,0.13896 -6.8586,-0.26473 -10.8984,1.60373 -3.4242,1.58414 -5.8807,4.51158 -9.1397,6.4132 -5.334,3.11236 -11.8361,5.17806 -17.6949,7.12847 -8.2647,2.75134 -22.124,0.18494 -29.1557,-1.25411 0,0 1.8227,-8.90641 1.8227,-8.90641 5.1816,1.06042 9.77,-0.82251 16.1275,-1.72388 4.135,-0.58626 8.0023,2.32998 11.9694,1.02619 3.7447,-1.23072 5.36,-5.46298 8.8393,-7.31606 3.5499,-1.89069 7.7194,-1.55714 11.4037,-3.16991 6.1161,-2.67735 15.6403,-8.0312 22.0882,-6.30233 4.247,1.13868 8.2586,6.29642 12.0654,9.73933 0,0 -6.0515,6.78048 -6.0515,6.78048 m 25.1569,57.69075 c 5.4497,-0.82781 6.0539,1.79707 6.704,-4.00009 0.4958,-4.42224 0.3668,-4.91261 -2.1749,-8.56655 -2.1547,-3.097 -5.3363,-4.89684 -7.8419,-7.71814 -4.1007,-4.61758 -7.4257,-11.2512 -10.0966,-16.81894 -3.7677,-7.85407 -5.84,-16.41861 -11.1632,-21.23303 0,0 6.0979,-6.74247 6.0979,-6.74247 3.9227,3.54769 12.3278,8.75791 14.7828,14.69146 1.5968,3.85926 -0.6627,8.90563 1.1461,12.66951 1.7075,3.55292 6.2918,4.3352 8.6719,7.47731 2.4285,3.20597 2.9065,7.2273 5.1095,10.59221 3.6572,5.58602 10.1178,18.0648 6.4469,23.63958 -2.4178,3.67187 -11.1833,4.21488 -16.2582,4.98577 0,0 -1.4243,-8.97662 -1.4243,-8.97662 m -57.1722,49.55336 c -1.0885,-5.40362 -4.0009,-12.17992 -4.1681,-18.01217 -0.1276,-4.449 2.5241,-12.30949 4.8139,-16.12585 1.9406,-3.23511 7.3234,-8.74955 10.6759,-10.48012 5.487,-2.83242 14.5583,-3.49262 20.7334,-3.47449 8.7108,0.0255 18.1514,0.47846 25.248,-0.59952 0,0 1.3653,8.98859 1.3653,8.98859 -5.2294,0.79435 -12.6719,6.73066 -19.0703,6.18857 -4.1616,-0.35258 -7.5299,-4.52369 -11.7058,-4.51274 -3.9417,0.0103 -5.7529,3.78659 -9.4402,5.17998 -3.7622,1.42168 -6.0579,-0.0481 -8.9184,2.77791 -4.7486,4.69138 -0.708,8.68298 -0.1453,15.33545 0.3706,4.38166 -1.5042,7.84871 -0.4905,12.88078 0,0 -8.8979,1.85361 -8.8979,1.85361 m -56.2948,6.02063 c 5.2868,1.55966 11.0227,1.9384 16.6959,3.30291 4.3277,1.04086 8.7788,3.67933 13.0491,4.93459 3.6198,1.06364 7.2014,0.93238 10.9118,1.61757 6.0728,1.12145 6.5862,3.12728 11.9383,0.0504 7.5498,-4.34036 5.9712,-9.0615 4.5537,-16.09814 0,0 8.9126,-1.79539 8.9126,-1.79539 1.0446,5.18522 5.4029,17.32744 1.8385,22.66772 -2.3184,3.47339 -10.8066,4.71216 -14.9002,5.53254 -3.8642,0.7744 -9.0638,3.90759 -12.9626,3.32719 -3.978,-0.59223 -7.4929,-4.17098 -11.2614,-5.57607 -6.2562,-2.33253 -13.0515,-0.97837 -19.4319,-2.94589 -4.2025,-1.29586 -6.9346,-4.83083 -11.8579,-6.28326 0,0 2.5141,-8.73419 2.5141,-8.73419 m -70.5297,8.01234 c 0.6989,-5.46752 0.4101,-13.55872 2.681,-18.9325 1.7322,-4.09928 10.7616,-10.50135 15.1508,-11.2322 3.7204,-0.61987 11.6176,0.75888 15.0166,2.39607 5.5631,2.67956 9.6654,6.88671 15.0325,9.94043 7.5709,4.3077 15.5177,8.62033 22.4023,10.65134 0,0 -2.5725,8.7201 -2.5725,8.7201 -5.0732,-1.49663 -13.5693,-0.32314 -19.2997,-3.22083 -3.7271,-1.88469 -5.8328,-7.36708 -9.1877,-9.8535 -3.1668,-2.34707 -8.0324,-1.40803 -11.389,-3.47504 -3.4247,-2.10903 -3.2986,-5.39712 -7.307,-5.71186 -6.6543,-0.52246 -4.9165,3.56817 -6.7223,9.99605 -1.1893,4.23374 -4.1315,6.72322 -4.7823,11.8148 0,0 -9.0227,-1.09286 -9.0227,-1.09286 m 36.1837,73.96196 c -4.2764,-3.47712 -9.2547,-3.54471 -14.5707,-5.94933 -4.0553,-1.83429 -9.4652,-6.5121 -12.5245,-9.74427 -2.5935,-2.73945 -6.4954,-7.57342 -8.0867,-10.99463 -2.6045,-5.59944 -4.3031,-14.10334 -4.3137,-20.27832 -0.015,-8.7107 3.2658,-19.7651 4.1759,-26.88496 0,0 9.0181,1.15276 9.0181,1.15276 -0.6707,5.24654 2.4607,12.25272 1.5156,18.60409 -0.6147,4.131 -4.8378,6.88223 -4.4466,11.03947 0.3692,3.92425 4.3343,5.70058 5.8437,9.34217 1.54,3.71558 0.3239,7.00647 2.4502,10.41948 3.5298,5.66585 9.5948,4.13583 15.6093,7.03511 3.9615,1.90957 7.0338,5.93153 11.0161,9.16956 0,0 -5.6867,7.08887 -5.6867,7.08887 m -23.5062,64.53727 c 3.7315,-4.05709 6.1688,-8.53311 9.451,-13.35712 2.5038,-3.67991 6.7491,-6.75099 9.4241,-10.30877 2.2671,-3.01596 3.1888,-6.18519 4.9832,-9.50432 2.9367,-5.43237 4.5802,-7.70499 5.581,-13.79804 1.4118,-8.5951 0.1851,-13.71688 -5.3836,-18.24482 0,0 5.7351,-7.05334 5.7351,-7.05334 4.1035,3.33659 13.4799,11.52098 13.9264,17.92616 0.2903,4.16601 -4.1505,9.35785 -5.3997,13.34225 -1.1792,3.76109 0.1763,9.11763 -1.5676,12.6526 -1.7794,3.60678 -6.4831,5.90184 -9.0906,8.96413 -4.3286,5.08367 -5.6721,12.19318 -10.0039,17.2734 -2.8532,3.34613 -7.4503,4.43817 -10.9252,8.21631 0,0 -6.7302,-6.10844 -6.7302,-6.10844 m 9.2175,77.70542 c 1.3429,-5.34566 -0.7186,-8.11629 -2.2894,-13.73578 -1.1984,-4.2867 -1.1386,-8.04471 -3.1509,-12.01427 -1.7062,-3.36459 -3.9402,-3.22001 -6.9566,-5.48701 -4.9369,-3.71036 -12.877,-14.17295 -12.6312,-20.34211 0.3466,-8.70247 11.5926,-20.25337 16.4518,-25.53656 0,0 6.6917,6.15462 6.6917,6.15462 -3.5806,3.89312 -4.31,9.67358 -7.4453,15.27676 -2.0393,3.64438 -6.6793,3.77926 -5.2088,7.68686 1.3881,3.6886 5.9163,2.50539 9.0466,4.9015 3.1939,2.44481 5.4406,7.5162 7.4567,10.99594 3.3468,5.77664 8.4843,12.81798 9.5349,19.41132 0.692,4.34271 -1.4202,9.86658 -2.6707,14.84468 0,0 -8.8288,-2.15595 -8.8288,-2.15595 m -19.3549,66.75027 c -5.4723,-0.66074 -17.8164,-4.47844 -20.5397,-9.63819 -2.0775,-3.93599 0.8777,-15.22864 3.2771,-18.97712 2.0335,-3.17758 3.9085,-7.3498 6.1385,-10.39366 3.6498,-4.98186 9.1988,-10.80156 14.3788,-14.16236 7.3071,-4.74091 15.1963,-6.40556 16.945,-13.36673 0,0 8.8171,2.21487 8.8171,2.21487 -1.2886,5.12961 -5.7688,16.25149 -11.4194,19.3019 -3.6752,1.98403 -8.844,0.0535 -12.2168,2.51535 -3.1837,2.32385 -2.2054,6.94082 -4.4982,10.14754 -2.3395,3.27185 -6.6237,4.40429 -9.1502,7.5334 -4.1941,5.19459 -4.4939,5.99285 0.511,10.41155 3.2965,2.91035 3.6907,4.768 8.7867,5.38331 0,0 -1.0299,9.03014 -1.0299,9.03014 m 73.1783,31.1209 c -5.3141,1.46344 -13.74,3.63779 -19.5334,2.94847 -4.4194,-0.5258 -9.8796,-3.06463 -14.1182,-4.42333 -3.593,-1.15132 -10.758,-3.60949 -13.3657,-6.33574 -4.2681,-4.46201 -4.3154,-11.99807 -7.6393,-17.20147 -4.6888,-7.34014 -11.2912,-6.1132 -18.4173,-6.97362 0,0 1.0899,-9.02593 1.0899,-9.02593 5.2511,0.63404 15.6374,-2.45939 21.1126,0.89361 3.5611,2.18084 5.2905,9.98785 6.6557,13.93379 1.2887,3.7248 5.1202,5.38436 7.0524,8.81937 1.9714,3.5048 1.3304,4.48999 4.9667,6.20824 6.0366,2.85239 11.0354,0.97404 17.7079,1.19258 4.3948,0.14389 7.0691,2.58062 12.0179,1.2178 0,0 2.4708,8.74623 2.4708,8.74623 m 30.3309,-68.52327 c -4.9698,2.38289 -6.6111,1.42151 -7.2303,7.22165 -0.4723,4.42451 0.7825,4.87061 3.072,8.68761 1.941,3.23526 4.5021,10.5721 4.3784,14.34319 -0.2026,6.1721 -2.5654,15.1212 -5.7132,20.43299 -4.4404,7.49304 -18.149,15.09232 -25.0691,16.99803 0,0 -2.4138,-8.76504 -2.4138,-8.76504 5.0994,-1.4043 6.7514,-6.05133 11.3649,-10.51759 3.0006,-2.90491 7.4718,-2.50681 9.1673,-6.32261 1.6005,-3.60194 -1.3546,-6.98609 -1.0356,-10.91508 0.3256,-4.00881 3.5775,-5.21268 1.8961,-8.86573 -2.7913,-6.06437 -10.1606,-17.76876 -6.2471,-23.17724 2.5776,-3.56233 9.2192,-5.06964 13.8473,-7.28868 0,0 3.9831,8.1685 3.9831,8.1685 m 62.207,-55.78225 c 0.092,5.51134 1.5204,13.39965 0.092,19.05697 -1.0894,4.31556 -7.0638,10.79467 -10.4522,13.68045 -2.8719,2.44639 -6.8573,6.15566 -10.1596,7.98018 -5.405,2.98617 -12.2573,4.87846 -18.2179,6.49217 -8.4083,2.27638 -17.3744,4.68409 -23.8462,7.7871 0,0 -3.9303,-8.19714 -3.9303,-8.19714 4.769,-2.28658 10.0621,-9.60417 16.2798,-11.20713 4.0441,-1.04258 8.8282,1.9237 12.8529,0.81007 3.799,-1.05121 5.5458,-5.35566 9.1011,-7.05808 3.6275,-1.73699 7.0858,-0.62141 10.419,-2.87158 5.5334,-3.7355 4.7163,-7.49339 5.7965,-14.08163 0.7113,-4.33937 3.0637,-7.04774 2.9783,-12.18013 0,0 9.0863,-0.21125 9.0863,-0.21125 m 21.546,-81.88006 c -0.1884,5.50897 0.6009,12.41259 -0.3352,18.17174 -0.714,4.39324 -3.6095,10.1439 -5.4366,14.20207 -1.5484,3.44004 -3.5728,7.79718 -5.5154,11.03169 -3.1793,5.29388 -3.3236,8.62788 -4.9286,14.59074 -2.2641,8.41148 -6.3206,16.7214 -6.2011,23.89832 0,0 -9.0904,0.15131 -9.0904,0.15131 -0.088,-5.28859 -2.5527,-14.09631 -0.605,-20.21499 1.2668,-3.97967 6.1399,-6.50749 7.3543,-10.50269 1.1463,-3.77128 -0.9694,-9.52327 0.7961,-13.04764 1.8014,-3.59595 6.507,-5.25876 8.7448,-8.60035 3.715,-5.54733 1.4163,-10.9891 2.4688,-17.58238 0.6932,-4.34268 3.4484,-7.24435 3.6635,-12.3729 0,0 9.0848,0.27508 9.0848,0.27508 m 36.5845,-37.0139 c -5.1181,-2.04639 -10.7598,-3.82387 -16.1948,-5.94686 -4.146,-1.61945 -4.8023,-3.95213 -9.041,-2.59471 -3.5927,1.15098 -1.7745,1.60004 -3.1973,5.09391 -2.3288,5.71836 -2.478,10.25185 -4.1504,16.19621 -2.3592,8.38536 -4.6263,17.06176 -4.8716,24.23559 0,0 -9.0864,-0.31067 -9.0864,-0.31067 0.1807,-5.28631 -3.5274,-13.64379 -1.8525,-19.84253 1.0893,-4.03174 6.1382,-6.81339 7.3351,-10.81383 1.1298,-3.77623 -1.7644,-8.54729 -0.702,-12.3432 1.0841,-3.87302 7.69,-9.09949 11.4512,-10.52264 6.244,-2.36256 17.1998,-2.56451 23.1523,0.45981 3.9207,1.99192 5.7097,6.02197 10.4759,7.92765 0,0 -3.3185,8.46127 -3.3185,8.46127 m 77.8397,-34.40313 c -0.8915,5.43939 -1.2865,15.70642 -5.1243,20.09979 -2.9275,3.35141 -10.4083,6.4821 -14.6092,7.95299 -3.5607,1.24715 -8.0409,3.34655 -11.727,4.15258 -6.0329,1.31922 -11.2753,1.47075 -17.307,2.79013 -8.5086,1.8612 -22.0839,1.26364 -28.7488,-1.40118 0,0 3.3753,-8.44178 3.3753,-8.44178 4.9113,1.96368 7.6318,0.25394 13.7123,-1.80841 3.9548,-1.34139 9.6743,1.69665 13.8173,1.17407 3.9107,-0.4933 6.8134,-4.47519 10.6717,-5.2833 3.9366,-0.8245 7.539,1.12866 11.4597,0.23452 6.5086,-1.48437 7.7354,-4.02692 10.6041,-10.05493 1.8894,-3.97038 4.0673,-5.75987 4.8975,-10.82527 0,0 8.9784,1.41079 8.9784,1.41079 m -8.4585,-67.3485 c 1.9077,5.17078 4.6415,7.91242 8.4508,12.33178 2.9059,3.37119 4.8268,6.95448 8.1285,9.9397 2.799,2.53012 7.216,5.00012 9.7108,7.83072 4.0832,4.63281 4.6028,23.73077 -0.5578,27.1187 -7.2797,4.77917 -16.9724,2.90347 -18.1334,9.98671 0,0 -8.9716,-1.47048 -8.9716,-1.47048 0.8555,-5.21956 7.7341,-17.75048 14.048,-18.91938 4.1066,-0.76027 8.0103,4.14014 9.1576,0.12605 1.083,-3.78911 -2.8304,-3.82144 -5.1228,-7.02799 -2.339,-3.27172 -2.3765,-6.40957 -5.1908,-9.28284 -4.6722,-4.76983 -12.4885,-8.02716 -16.0101,-13.69944 -2.3196,-3.73603 -2.2377,-8.91652 -4.0142,-13.73176 0,0 8.505,-3.20177 8.505,-3.20177 m 9.9243,-76.03432 c -3.6367,4.14222 -5.3196,7.5345 -7.4345,12.9722 -1.6133,4.14804 -3.9027,7.34548 -4.8525,11.69408 -0.8048,3.68613 -0.1008,6.98346 -0.3428,10.74888 -0.3961,6.16282 -0.6748,10.8113 -0.6388,16.98599 0.051,8.71029 0.043,17.2012 2.5272,23.93464 0,0 -8.5286,3.14653 -8.5286,3.14653 -1.8306,-4.9618 -7.9214,-12.29119 -8.093,-18.70966 -0.1117,-4.17465 3.968,-8.3766 4.1116,-12.54979 0.1356,-3.93931 -3.2276,-7.92994 -3.0744,-11.86894 0.1562,-4.01902 3.2646,-7.91759 4.2537,-11.81597 1.6419,-6.47166 1.0495,-15.28721 4.5462,-20.9749 2.3031,-3.74622 7.2698,-5.65693 10.6565,-9.51434 0,0 6.8694,5.95128 6.8694,5.95128 m -25.2945,-63.32781 c 5.4786,-0.60016 12.1778,-3.78456 18.0086,-3.57627 4.4479,0.15885 12.8783,5.67851 15.7326,9.09344 2.4197,2.89439 6.2876,8.58205 7.3258,12.20916 1.6994,5.93644 1.834,14.98164 0.6008,21.0323 -1.7397,8.53532 -12.2921,18.60043 -17.0279,23.99447 0,0 -6.8321,-5.99835 -6.8321,-5.99835 3.4897,-3.9748 4.4595,-10.06112 7.8308,-15.52576 2.1927,-3.55427 6.2601,-4.25595 6.7755,-8.39979 0.4866,-3.91158 -3.2747,-6.29566 -4.106,-10.14867 -0.8483,-3.9313 0.9506,-6.3829 -1.0853,-9.85112 -3.3797,-5.75751 -6.2959,-3.62837 -12.9477,-3.05335 -4.3811,0.37878 -8.124,-1.30801 -13.2259,-0.74912 0,0 -1.0492,-9.02694 -1.0492,-9.02694 m -36.9687,-65.342695 c 4.2625,3.494685 11.4626,10.221615 13.3657,15.737125 1.4518,4.20738 1.0866,10.33975 1.7131,14.74663 0.5314,3.7354 2.193,7.14749 2.9942,10.8347 1.3113,6.0348 1.6755,9.03995 4.7042,14.42103 4.2724,7.59077 7.1519,11.25055 14.2863,10.46901 0,0 0.9899,9.03646 0.9899,9.03646 -5.2572,0.57591 -19.3717,0.1443 -22.9983,-5.15354 -2.3588,-3.44579 -1.5272,-9.56292 -2.9828,-13.47656 -1.374,-3.6943 -5.954,-6.80588 -6.8889,-10.63528 -0.9539,-3.90721 0.9797,-8.30051 0.6561,-12.30944 -0.5373,-6.65515 -3.199,-10.61884 -6.1851,-16.58979 -1.9668,-3.93276 -1.4007,-6.75967 -5.3702,-10.01406 0,0 5.7158,-7.066285 5.7158,-7.066285 m -81.7676,4.983545 c 5.239,-1.710258 6.0693,-5.960885 10.1903,-10.091127 3.1437,-3.150683 9.4053,-6.871639 13.5533,-8.483911 3.5159,-1.366989 9.1277,-3.058175 12.8835,-3.419806 6.1472,-0.591877 14.724,0.550383 20.5566,2.576944 8.2276,2.858736 18.4809,10.557158 24.0317,15.107964 0,0 -5.7641,7.030566 -5.7641,7.030566 -4.0903,-3.35344 -11.1262,-2.74393 -16.6819,-5.962493 -3.6135,-2.093392 -4.7137,-6.654518 -8.7336,-7.783982 -3.7945,-1.066162 -6.9375,2.406801 -10.8782,2.509591 -4.0208,0.104848 -6.771,-2.124163 -10.7404,-1.482453 -6.5897,1.065323 -6.9835,7.587289 -11.8127,12.198117 -3.1807,3.03697 -8.8488,4.82756 -13.7275,6.42022 0,0 -2.877,-8.61963 -2.877,-8.61963 m -81.9925,-13.986618 c 5.5037,0.303884 12.2192,-0.380404 17.9857,0.511415 4.3989,0.680278 8.5779,2.661594 13.0026,3.146955 3.7505,0.411028 7.6311,-0.451619 11.398,-0.234393 6.1653,0.355529 14.304,3.112894 19.7705,5.985183 7.7112,4.051758 13.2838,7.632498 20.106,5.405378 0,0 2.8209,8.64109 2.8209,8.64109 -5.0273,1.64114 -16.598,5.4255 -22.3151,2.50404 -3.7185,-1.90015 -5.1251,-7.67983 -8.9064,-9.45124 -3.5695,-1.67213 -6.9554,1.02703 -10.8771,0.62774 -4.0014,-0.40744 -7.2358,-3.05679 -11.1999,-3.7369 -6.5807,-1.129015 -13.2931,0.68738 -19.8777,-0.41983 -4.3369,-0.729227 -7.2234,-3.618472 -12.3486,-3.901461 0,0 0.4411,-9.077977 0.4411,-9.077977 m -78.7414,-14.874388 c 5.183,1.87468 12.7833,5.809291 17.0924,9.743527 3.287,3.001123 4.252,6.054382 8.4065,7.6503 3.5218,1.352406 5.0184,0.452039 8.7789,0.144583 6.1548,-0.50321 10.7312,-1.756497 16.8398,-2.661117 8.617,-1.27611 20.4089,0.471121 27.5758,0.866841 0,0 -0.5012,9.077665 -0.5012,9.077665 -5.2812,-0.291602 -11.4265,3.513027 -17.8475,3.541507 -4.1763,0.0185 -7.7191,-3.52788 -11.8493,-2.911362 -3.8987,0.581963 -7.3431,5.028462 -11.2597,5.474992 -3.9961,0.45557 -9.45,-2.42109 -13.2049,-3.860506 -6.2336,-2.389512 -14.1864,-5.812518 -18.9369,-10.503949 -3.129,-3.089987 -3.3019,-6.250341 -8.1285,-7.996121 0,0 3.0346,-8.56636 3.0346,-8.56636 m -86.1707,-7.524871 c 5.5094,0.159954 13.2496,0.150977 18.8542,1.77392 4.2754,1.237999 8.1979,3.755268 12.5171,4.831093 3.6613,0.911539 7.219,0.506621 10.9584,1.010875 6.1201,0.825303 10.1696,1.685629 16.3442,1.633911 8.7101,-0.07297 20.4512,-3.347084 27.2006,-0.905856 0,0 -3.0921,8.548775 -3.0921,8.548775 -4.9735,-1.798913 -8.8862,5.526805 -15.2784,6.128828 -4.1576,0.391565 -8.9155,-3.603778 -13.0794,-3.918302 -3.9305,-0.296897 -8.162,2.677257 -12.0831,2.273593 -4.0008,-0.411896 -7.6534,-3.805396 -11.4901,-5.012278 -6.3692,-2.003494 -13.145,-1.059115 -19.5588,-2.914285 -4.2245,-1.221867 -6.3658,-4.215344 -11.4964,-4.3643 0,0 0.2038,-9.085974 0.2038,-9.085974 M 367.29182,119.51039 c 4.98757,-2.43517 10.98758,-6.83748 16.64185,-8.43207 4.31323,-1.21643 10.83714,-0.88609 15.31863,-0.89209 3.79869,-0.005 8.5546,-0.45875 12.3369,-0.10043 6.19044,0.58644 9.24994,1.85638 15.34683,0.63944 8.60052,-1.71669 19.27997,-4.95355 26.50012,-5.26865 0,0 0.39636,9.08228 0.39636,9.08228 -5.32045,0.23219 -9.59048,6.71538 -15.87438,8.2355 -4.08713,0.98871 -9.48066,-1.68948 -13.68455,-1.7425 -3.96827,-0.05 -8.24287,3.11168 -12.19942,2.79774 -4.03692,-0.32034 -7.11111,-3.53129 -11.13713,-3.96659 -6.68354,-0.72261 -10.58279,2.95985 -16.94745,5.12471 -4.19208,1.42593 -8.0112,0.39566 -12.65583,2.66339 0,0 -4.04193,-8.14073 -4.04193,-8.14073 m -84.98087,4.11145 c 4.94722,-2.51474 14.55311,-4.55724 20.40247,-4.00664 4.46205,0.41999 9.28622,2.69749 13.71605,3.37823 3.75497,0.57664 7.6253,-0.0877 11.40835,0.26253 6.19166,0.57327 10.98737,1.14832 17.20022,1.38801 8.7641,0.33808 16.1411,-1.1797 22.63597,-4.35081 0,0 3.98895,8.16994 3.98895,8.16994 -4.78599,2.33676 -11.92337,9.85101 -18.37823,10.19477 -4.19832,0.22358 -8.69873,-3.88672 -12.89133,-4.20384 -3.95763,-0.29935 -8.09336,2.81054 -12.04984,2.49412 -4.03687,-0.32287 -7.56445,-3.3314 -11.52282,-4.18636 -6.57122,-1.41927 -12.36749,0.0236 -19.08341,-0.27116 -4.42345,-0.19409 -6.64754,-3.13683 -11.2546,-0.795 0,0 -4.17178,-8.07379 -4.17178,-8.07379 m -46.1067,60.72695 c 5.21807,-1.89126 9.68988,-4.86509 14.95182,-7.47835 4.01395,-1.99349 6.86,-2.23156 9.83032,-5.58785 2.51748,-2.84518 3.62835,-5.95862 5.67708,-9.158 3.35313,-5.23638 5.14876,-7.91827 6.97411,-13.86088 2.57491,-8.38289 2.62572,-20.59071 9.06804,-23.86543 0,0 4.11929,8.10384 4.11929,8.10384 -4.74727,2.41311 -1.95835,1.38528 0.50351,7.36085 1.60123,3.88659 -3.86383,11.72511 -5.60392,15.5523 -1.64257,3.61269 -0.55604,9.11483 -2.61918,12.50557 -2.10508,3.45961 -6.83189,5.45496 -9.6935,8.32051 -4.75047,4.75709 -10.24021,11.82225 -16.4637,14.36469 -4.0991,1.67463 -8.73083,0.50563 -13.59011,2.26684 0,0 -3.15376,-8.52409 -3.15376,-8.52409 m -17.91005,64.67347 c -5.09412,-2.20197 -11.88964,-6.58618 -16.28159,-10.48837 -3.35032,-2.97668 -7.51057,-10.12412 -8.78856,-14.41907 -1.08364,-3.64046 -0.8609,-12.12359 0.56553,-15.64442 2.33463,-5.7625 10.81819,-13.06392 16.39977,-15.80312 7.8736,-3.86405 19.5167,-5.03674 26.31172,-7.49954 0,0 3.09798,8.5475 3.09798,8.5475 -5.00717,1.81481 -10.39082,7.61734 -16.61662,9.36019 -4.04933,1.13357 -8.27918,-1.78581 -11.82453,0.47379 -3.34663,2.13295 -2.39991,5.6706 -4.29462,9.15798 -1.93323,3.55822 -5.01989,3.4081 -4.71238,7.44515 0.51053,6.70182 6.73213,6.73539 11.70949,11.25485 3.27838,2.97671 3.24027,7.19882 7.98413,9.24938 0,0 -3.55032,8.36568 -3.55032,8.36568 m 0.44503,58.34198 c 3.78316,-4.06122 6.80835,-8.65723 10.43031,-13.28269 2.76292,-3.52844 5.56887,-4.99099 6.97192,-9.24722 1.18892,-3.60787 0.26334,-6.00939 0.29407,-9.80827 0.0503,-6.21758 0.15134,-8.86965 -1.97418,-14.71162 -2.99838,-8.24094 -9.18796,-9.22425 -15.82156,-12.09168 0,0 3.60695,-8.34446 3.60695,-8.34446 4.88823,2.11297 16.9941,1.42117 20.86155,6.6007 2.51544,3.36883 1.10249,10.60082 2.01393,14.70498 0.86035,3.87414 4.81831,8.09792 4.91439,12.06574 0.098,4.04843 -2.89816,8.75463 -4.19342,12.59121 -2.15021,6.36904 -4.66635,15.21709 -9.398,19.99295 -3.11647,3.14566 -7.49143,3.89917 -11.01447,7.68115 0,0 -6.69149,-6.15079 -6.69149,-6.15079 m -3.21552,83.72086 c -4.51777,-3.22396 -11.78544,-8.28288 -14.88334,-13.27422 -2.36319,-3.80751 -3.8832,-10.82291 -4.67512,-15.23392 -0.67164,-3.73888 -1.38222,-9.8874 -0.86079,-13.65021 0.85341,-6.15853 3.90657,-13.38906 6.69055,-18.94874 3.92718,-7.84273 12.65514,-16.73147 17.58161,-22.02002 0,0 6.65251,6.19704 6.65251,6.19704 -3.63026,3.89707 -4.39038,10.16052 -7.83299,15.6324 -2.23912,3.55898 -7.39455,4.65895 -9.2564,8.42894 -1.7575,3.5587 0.6773,7.39851 -0.10279,11.29 -0.79597,3.97055 -3.65525,5.85869 -3.57814,9.90741 0.12803,6.7212 4.68515,8.89588 8.68869,14.29592 2.63697,3.55672 2.59919,6.9401 6.80633,9.94238 0,0 -5.23012,7.43302 -5.23012,7.43302 m 69.72695,52.8655 c -5.16359,-2.03487 -12.90737,-7.66739 -16.53317,-12.29056 -2.76589,-3.52666 -4.10431,-7.89392 -7.14906,-11.18267 -2.58114,-2.78741 -5.28658,-3.30724 -8.52947,-5.28634 -5.30759,-3.23917 -9.91254,-5.70699 -15.23227,-8.926 -7.50424,-4.54085 -15.89392,-11.6907 -21.777,-15.88897 0,0 5.28104,-7.40037 5.28104,-7.40037 4.33517,3.09366 12.27795,3.09951 17.51379,6.89197 3.40546,2.46666 4.1554,7.77619 7.76476,9.93311 3.40706,2.03603 8.5548,0.84103 11.9846,2.83869 3.49946,2.03826 5.92158,6.8377 8.61571,9.8609 4.47252,5.01872 10.00274,8.86703 14.32715,14.01405 2.84831,3.39006 2.41239,6.91082 7.13535,9.00928 0,0 -3.40143,8.42691 -3.40143,8.42691 m 89.28771,0.18399 c -4.45397,3.31043 -11.84,8.1169 -17.55241,9.48949 -4.35758,1.04708 -10.17555,0.60831 -14.64255,0.97212 -3.78638,0.30876 -8.27595,1.696 -12.07448,1.76329 -6.21702,0.11012 -13.65069,-0.88423 -19.64759,-2.52596 -8.45949,-2.31586 -18.32724,-8.04352 -25.05132,-10.69333 0,0 3.33323,-8.45827 3.33323,-8.45827 4.95489,1.95262 12.5198,0.60566 18.50518,3.04904 3.89297,1.58919 5.71764,6.44031 9.82243,7.35053 3.87472,0.8592 7.36386,-2.39315 11.33234,-2.31982 4.0491,0.0748 7.08833,2.50762 11.13705,2.42249 6.72121,-0.14135 11.30193,-3.45623 17.72945,-5.42534 4.23348,-1.297 7.49159,0.20114 11.63931,-2.88166 0,0 5.46936,7.25742 5.46936,7.25742 m 27.26298,-82.90794 c -2.85397,4.75977 -3.77718,9.8037 -5.91014,15.27822 -1.62706,4.17613 -4.40601,7.78327 -5.77695,12.05035 -1.16169,3.61708 -0.78227,6.22233 -0.98188,10.01579 -0.32668,6.2087 -0.25554,11.70227 -0.76702,17.899 -0.7215,8.74137 -8.54654,22.65468 -14.34654,26.96555 0,0 -5.42267,-7.29586 -5.42267,-7.29586 4.27395,-3.17663 2.52754,-7.94106 4.33586,-14.148 1.17615,-4.03708 5.41028,-6.31165 5.73303,-10.50395 0.30466,-3.95734 -3.27396,-7.72816 -3.22829,-11.69689 0.0466,-4.04936 3.50092,-8.61595 4.96953,-12.38999 2.43799,-6.26524 2.00537,-13.85218 4.95268,-19.89463 1.94121,-3.97989 5.95938,-6.46872 8.61712,-10.90121 0,0 7.82527,4.62162 7.82527,4.62162 m 72.86803,-30.89268 c -5.5329,0.43152 -10.18826,2.83678 -15.89712,4.22579 -4.35487,1.0596 -8.71897,0.99865 -12.96718,2.42693 -3.60082,1.21103 -6.86639,3.6124 -10.41527,4.96859 -5.80839,2.21966 -10.65448,3.36063 -16.37221,5.80309 -8.06566,3.44545 -14.2468,6.82215 -17.96327,13.02036 0,0 -7.79678,-4.67497 -7.79678,-4.67497 2.73863,-4.5674 6.52146,-14.88161 12.27036,-17.83765 3.73916,-1.92265 9.6408,0.1362 13.60986,-1.25157 3.74661,-1.30998 6.14193,-5.82326 9.86188,-7.20763 3.79554,-1.41246 8.06528,-0.26244 11.97456,-1.31956 6.48972,-1.75492 12.37462,-6.55893 18.99097,-7.75112 4.35786,-0.78528 8.78489,0.94405 13.93736,0.54221 0,0 0.76684,9.05553 0.76684,9.05553 m 66.97972,36.5336 c -1.42477,-5.36269 -4.39583,-4.31322 -9.65621,-6.92929 -4.01277,-1.99559 -7.62771,-5.06736 -11.67443,-6.99354 -3.43033,-1.63237 -8.45086,-3.51939 -11.53599,-5.73626 -5.04939,-3.62832 -8.51713,-7.50374 -13.62221,-11.05227 -7.20146,-5.00568 -13.3536,-7.25253 -20.5586,-6.6906 0,0 -0.70685,-9.06322 -0.70685,-9.06322 5.30928,-0.41408 16.17417,-3.79883 21.84906,-0.70205 3.69102,2.01419 5.46975,8.2075 8.6181,10.99454 2.9719,2.63082 7.84473,2.14926 11.04752,4.49347 3.26784,2.39185 4.0756,6.21266 7.52777,8.32916 5.73092,3.51353 13.61155,3.2675 19.16928,7.04875 3.66063,2.49048 6.98174,8.9159 8.30854,13.90985 0,0 -8.76598,2.39146 -8.76598,2.39146 m -27.32516,79.37506 c -3.9046,-3.94405 -6.2938,-16.95725 -4.39451,-22.5173 1.4488,-4.24137 4.38132,-8.74384 6.21329,-12.83383 1.5525,-3.46701 2.53043,-7.58374 4.10179,-11.0425 2.57182,-5.6609 6.92085,-12.1613 11.17809,-16.6932 6.00544,-6.3929 12.92349,-9.5285 11.06814,-16.51184 0,0 8.7844,-2.33385 8.7844,-2.33385 1.36718,5.14594 0.71475,18.27034 -3.82015,22.87778 -2.94956,2.99674 -8.69964,2.73116 -11.48482,5.88114 -2.62907,2.97344 -0.96933,7.33172 -2.64258,10.93074 -1.70727,3.67213 -5.65923,5.78042 -7.68591,9.28641 -3.36443,5.82024 -2.52068,11.75492 -4.31498,18.23363 -1.18178,4.26723 -4.22293,4.61317 -0.58681,8.28604 0,0 -6.41595,6.43678 -6.41595,6.43678 m 88.2983,12.57431 c -5.52253,-0.55201 -11.92478,-0.50643 -17.73187,-1.39798 -4.42981,-0.68007 -7.86268,-2.01143 -12.34004,-1.81115 -3.79518,0.17014 -7.24255,1.73169 -11.00703,2.24387 -6.16127,0.83827 -13.10003,1.18604 -19.29756,0.68412 -8.74249,-0.70802 -22.2182,-7.77 -27.3028,-12.90598 0,0 6.46058,-6.39596 6.46058,-6.39596 3.74679,3.78465 8.95627,2.08895 15.19328,3.78993 4.05663,1.10634 6.33731,5.55975 10.53858,5.72553 3.9658,0.15648 7.01389,-3.68005 10.95131,-4.18172 4.01742,-0.51183 8.00426,1.59758 12.05365,1.54568 6.72231,-0.0862 14.6815,-2.46736 21.22413,-0.92239 4.30933,1.01755 6.95876,4.06274 12.10157,4.57679 0,0 -0.8438,9.04926 -0.8438,9.04926 m 55.28626,41.01523 c -1.31448,-5.39211 -4.28672,-11.56054 -5.10614,-17.37838 -0.62511,-4.43801 0.77322,-6.89443 -1.88157,-10.50489 -2.25062,-3.06014 -4.17413,-2.29184 -7.64765,-3.83003 -5.68506,-2.51753 -9.45841,-3.35844 -15.50913,-4.78855 -8.53539,-2.01736 -17.86364,-4.66129 -25.05514,-5.38012 0,0 0.90422,-9.04623 0.90422,-9.04623 5.29933,0.52969 13.21827,-2.80561 19.49955,-1.2748 4.08542,0.99565 7.03811,5.82728 11.0958,6.92942 3.83027,1.04037 9.10772,-1.10247 12.79776,0.35898 3.765,1.49118 7.16058,6.46178 9.92731,9.41829 4.59303,4.90803 8.85621,13.87376 9.50227,20.56565 0.42557,4.40762 -0.936,7.69811 0.28811,12.71947 0,0 -8.81539,2.21119 -8.81539,2.21119 m 67.07779,49.42284 c -5.47191,-0.92811 -11.51633,-0.1967 -17.32911,-1.05072 -4.43415,-0.65143 -9.03506,-2.73199 -13.44939,-3.50589 -3.74184,-0.65561 -9.18261,-1.019 -12.73959,-2.35314 -5.82165,-2.18356 -14.57848,-9.67988 -17.24182,-15.29822 -3.75704,-7.92545 -3.75987,-20.3995 -5.47161,-27.42117 0,0 8.83261,-2.15321 8.83261,-2.15321 1.26136,5.17419 6.25985,10.93545 7.53183,17.27386 0.82731,4.12257 -2.30807,7.79394 0.1468,11.20726 2.31728,3.22203 6.10751,1.52406 9.74215,3.1183 3.70847,1.62667 5.34055,4.6696 9.22831,5.80193 6.45401,1.87974 12.84209,-0.26257 19.47381,0.84195 4.36801,0.72745 7.64059,3.70431 12.73625,4.56861 0,0 -1.46024,8.97044 -1.46024,8.97044 m 88.9057,6.3298 c -4.15044,3.6842 -13.62443,7.63846 -19.47366,8.18882 -4.46195,0.41986 -10.1394,-0.85632 -14.61345,-1.11429 -3.7924,-0.21827 -8.45547,0.3691 -12.22337,-0.1166 -6.16686,-0.79495 -12.86131,-2.77743 -18.70474,-4.90294 -8.24301,-2.99832 -16.61926,-8.03497 -23.74482,-9.24357 0,0 1.52031,-8.9633 1.52031,-8.9633 5.25075,0.89061 14.02552,-0.70592 19.93609,1.91387 3.8443,1.70394 5.65668,6.84166 9.6332,8.2081 3.75364,1.28985 7.7627,-1.39287 11.67594,-0.72907 3.99274,0.67731 6.80334,3.47473 10.79529,4.15469 6.62696,1.12875 11.652,-1.93357 18.32131,-2.77983 4.39274,-0.55743 6.93472,2.05869 10.79978,-1.37219 0,0 6.07812,6.75631 6.07812,6.75631 m 4.99481,-89.66635 c 1.47913,5.34959 4.39398,11.42973 5.45962,17.20758 0.81293,4.40749 0.37596,9.3594 1.1196,13.77921 0.63073,3.74635 2.37983,7.72471 2.9704,11.47767 0.96657,6.14241 0.76723,14.43297 -0.61353,20.4952 -1.94775,8.55163 -9.10438,21.2577 -14.50912,26.0553 0,0 -6.03493,-6.79865 -6.03493,-6.79865 3.98269,-3.5353 2.02302,-9.81931 4.54077,-15.77348 1.63758,-3.87267 6.28513,-5.46644 6.84423,-9.63367 0.52776,-3.93368 -3.05058,-6.84194 -3.52103,-10.78309 -0.47998,-4.02122 1.49929,-7.65488 1.15866,-11.69026 -0.56549,-6.69906 -4.60456,-12.13505 -5.76722,-18.75669 -0.76583,-4.36135 0.98602,-8.11703 -0.3914,-13.09879 0,0 8.74395,-2.48033 8.74395,-2.48033 m -21.40543,-76.02428 c -1.90102,5.21432 -1.72797,10.18383 -2.63349,15.9885 -0.69072,4.42796 -1.95389,7.31173 -1.29975,11.74555 0.55486,3.75822 2.3164,4.08004 4.66201,7.06802 3.83903,4.89037 8.03683,8.96967 11.5263,14.11568 4.92241,7.25918 6.38463,20.37239 8.31077,27.33867 0,0 -8.76295,2.42291 -8.76295,2.42291 -1.41935,-5.13338 -6.17475,-10.00894 -8.32974,-16.104 -1.40163,-3.96429 0.63799,-7.93414 -1.93816,-11.25733 -2.43177,-3.13694 -7.70451,-3.5722 -10.2901,-6.58339 -2.63809,-3.07238 -3.41157,-9.36463 -4.20361,-13.33561 -1.31487,-6.59216 -3.53052,-15.43107 -1.92782,-21.95968 1.05557,-4.30009 4.55699,-7.63973 6.3273,-12.49552 0,0 8.55924,3.0562 8.55924,3.0562 m 58.11878,-48.94647 c -5.45606,1.01675 -10.38584,3.34407 -16.01812,5.01541 -4.29644,1.27497 -8.12967,1.21796 -12.10419,3.28867 -3.36879,1.75557 -4.39217,4.01247 -7.04298,6.73384 -4.33854,4.45402 -6.99437,7.63324 -10.64759,12.66459 -5.15338,7.09743 -10.64873,14.15546 -13.12426,20.9456 0,0 -8.54137,-3.11399 -8.54137,-3.11399 1.82419,-5.00358 1.64283,-14.22965 5.4168,-19.47894 2.45463,-3.4142 8.04565,-4.44908 10.7107,-7.70127 2.51568,-3.06991 2.44776,-8.56074 5.13504,-11.48168 2.7419,-2.98027 8.25001,-4.24475 11.86556,-6.06848 6.00208,-3.02757 12.38541,-8.26007 18.96281,-9.64964 4.33221,-0.91529 8.58236,0.86939 13.66328,-0.0774 0,0 1.72432,8.92333 1.72432,8.92333 m 79.81889,12.97617 c -4.7815,-2.81815 -9.94613,-4.49601 -15.28656,-6.94535 -4.07384,-1.8684 -6.67213,-4.50999 -11.06677,-5.3888 -3.72515,-0.74453 -6.89195,0.14053 -10.69002,0.0507 -6.21625,-0.14707 -11.76351,-0.41772 -17.96851,-0.81609 -8.75303,-0.56194 -17.86166,-2.05692 -24.9666,-0.73291 0,0 -1.66548,-8.93735 -1.66548,-8.93735 5.23555,-0.97565 13.04399,-5.59162 19.48799,-5.07079 4.19126,0.33875 7.7511,4.70528 11.94857,4.95151 3.96222,0.23243 7.88723,-3.18669 11.85429,-3.05808 4.04765,0.13125 8.13138,2.80566 12.04724,3.83734 6.50065,1.71265 14.85805,1.90655 20.66672,5.29079 3.82591,2.22899 5.74912,6.33421 10.20185,8.95858 0,0 -4.56272,7.86047 -4.56272,7.86047 m 73.69686,-3.52511 c 1.2994,5.39543 2.4898,19.84437 -2.3375,23.19171 -3.6825,2.55347 -13.03326,2.16514 -17.50724,1.90688 -3.79235,-0.21852 -8.42975,0.40645 -12.19976,-0.0613 -6.17034,-0.76562 -13.88985,-3.79013 -19.33308,-6.79494 -7.67847,-4.2387 -15.65047,-11.79782 -21.87698,-15.46764 0,0 4.61629,-7.83237 4.61629,-7.83237 4.58824,2.70425 12.6499,3.10288 17.90696,6.86588 3.41926,2.4475 4.07543,7.63811 7.83692,9.5172 3.55066,1.77377 7.28541,-0.74377 11.19282,-0.0474 3.98678,0.71053 6.75365,3.41703 10.74632,4.09298 6.62816,1.1221 9.03322,2.96761 11.53298,-3.27055 1.64647,-4.10879 1.81137,-4.88942 0.60137,-9.91387 0,0 8.8209,-2.18653 8.8209,-2.18653 m 44.8617,-68.73088 c -1.7931,5.2526 -4.7827,13.08292 -8.4339,17.68603 -2.7852,3.51139 -7.0774,6.47556 -10.0407,9.83804 -2.5116,2.85043 -4.0316,6.46428 -6.3641,9.46325 -3.8175,4.90836 -7.3778,8.69589 -11.1592,13.6316 -5.3343,6.96252 -11.4027,11.28992 -9.7106,18.3159 0,0 -8.83797,2.1285 -8.83797,2.1285 -1.2469,-5.17736 -1.6937,-17.5698 2.28317,-22.66682 2.5865,-3.31516 8.2965,-4.00255 11.0186,-7.20719 2.5696,-3.02502 2.1811,-8.16904 4.6453,-11.28075 2.5143,-3.17491 6.8334,-4.45416 9.689,-7.32569 4.7406,-4.76699 6.3871,-10.87632 10.428,-16.24909 2.6616,-3.53882 6.1918,-4.32136 7.8616,-9.21281 0,0 8.6208,2.87903 8.6208,2.87903 m -11.5314,-87.68279 c 3.8405,4.00588 9.6676,9.89978 12.1779,15.21153 1.915,4.05194 2.73,9.75062 4.0423,14.03601 1.1128,3.63236 3.1629,8.04595 3.9012,11.7723 1.2083,6.09888 0.7747,14.18323 -0.2257,20.31985 -1.4113,8.65659 -6.8537,19.22169 -9.1887,26.06168 0,0 -8.6041,-2.93717 -8.6041,-2.93717 1.7206,-5.04032 -0.039,-12.32454 1.9467,-18.47719 1.2913,-4.00176 6.0237,-6.1242 6.5134,-10.30014 0.4623,-3.94189 -3.1084,-6.79431 -3.6393,-10.72749 -0.5417,-4.01309 1.4228,-7.26124 0.5981,-11.22603 -1.3691,-6.58187 -5.8365,-10.26411 -9.0205,-16.1848 -2.0972,-3.89965 -1.4427,-7.48559 -5.0192,-11.21603 0,0 6.5179,-6.33252 6.5179,-6.33252 m -86.64825,10.00721 c 4.99283,-2.42386 9.67489,-6.34875 14.93136,-8.97367 4.00977,-2.00239 8.84481,-2.84117 12.8534,-4.84594 3.39767,-1.69966 7.02412,-4.5621 10.51085,-6.07048 5.70668,-2.46875 14.63934,-4.14683 20.84204,-3.71533 8.7498,0.60867 21.8808,8.98447 26.8819,14.20096 0,0 -6.5619,6.29099 -6.5619,6.29099 -3.6853,-3.84398 -9.006,-2.83047 -15.1055,-4.97312 -3.9672,-1.3936 -5.6416,-5.69239 -9.8432,-5.53083 -3.9661,0.1525 -5.812,4.33287 -9.5299,5.72221 -3.79334,1.41753 -7.53188,0.39384 -11.29099,1.90026 -6.24042,2.50082 -10.57615,7.93996 -16.69508,10.72517 -4.03023,1.83452 -8.31999,1.16206 -12.96952,3.41925 0,0 -4.02346,-8.14947 -4.02346,-8.14947 m -82.1511,13.8055 c 5.54429,0.25652 11.04753,-1.11676 16.91958,-1.31296 4.47936,-0.14969 8.70335,0.85448 13.14956,0.28947 3.76874,-0.4793 7.14994,-2.29002 10.86793,-3.07134 6.0852,-1.27877 11.6614,-1.757 17.79643,-2.76539 8.65432,-1.4225 17.2963,-3.0053 23.79801,-6.16168 0,0 3.97043,8.17856 3.97043,8.17856 -4.79104,2.32589 -10.95334,9.4693 -17.31962,10.5939 -4.14071,0.73146 -8.93734,-2.51241 -13.12474,-2.12989 -3.95272,0.36108 -6.79477,4.46918 -10.68099,5.27684 -3.96518,0.82404 -8.13586,-1.0092 -12.1711,-0.66651 -6.69883,0.56893 -13.59502,3.99979 -20.31388,3.77039 -4.42539,-0.15106 -8.08823,-2.68084 -13.25131,-2.91971 0,0 0.3597,-9.08168 0.3597,-9.08168 m -55.70003,-47.3906 c 2.68016,4.85985 6.25848,11.17339 8.10716,16.75048 1.41025,4.25436 1.3184,8.24618 3.44872,12.18925 1.80609,3.34213 3.62013,3.8482 6.62387,6.17291 4.91617,3.80481 8.23529,4.30664 14.02467,6.57413 8.16675,3.19861 16.23552,6.23994 23.45535,6.57398 0,0 -0.42019,9.08188 -0.42019,9.08188 -5.32021,-0.24615 -14.23655,2.65371 -20.33046,0.49496 -3.96355,-1.40408 -6.45769,-6.72946 -10.3152,-8.40211 -3.64131,-1.57891 -9.1936,-0.15884 -12.63875,-2.1295 -3.51513,-2.01072 -5.96577,-8.44293 -7.82365,-12.04107 -3.08425,-5.97319 -7.97453,-11.95645 -9.88329,-18.40284 -1.25725,-4.24592 0.31872,-7.89468 -2.17715,-12.42038 0,0 7.92892,-4.44169 7.92892,-4.44169 m -82.67085,12.84635 c 4.43755,-3.33325 7.85154,-8.19163 12.37642,-11.93913 3.45168,-2.85872 8.84733,-5.30631 12.75465,-7.5004 3.31181,-1.86013 7.07768,-4.70455 10.53101,-6.28796 5.65201,-2.59156 14.43454,-4.98412 20.64572,-4.70006 8.76177,0.40069 22.1102,11.67329 25.60033,18.00183 0,0 -7.96073,4.39025 -7.96073,4.39025 -2.57183,-4.66343 -6.55275,-4.56383 -12.55332,-6.96903 -3.90285,-1.56438 -5.25178,-5.49844 -9.44499,-5.1936 -3.95819,0.28776 -5.63163,4.75628 -9.30486,6.26016 -3.74786,1.5344 -7.63037,0.48312 -11.36114,2.05812 -6.19337,2.61466 -8.43587,8.5911 -13.69565,12.77853 -3.46434,2.75809 -7.94844,3.22751 -12.08087,6.33158 0,0 -5.50657,-7.23029 -5.50657,-7.23029 m -67.64183,-4.75642 c 4.61873,3.07776 11.14713,6.61117 15.30466,10.7628 3.1715,3.16696 4.43735,6.70993 8.29417,8.99132 3.2694,1.93347 3.9478,1.25142 7.73929,1.01546 6.20547,-0.38619 8.44381,-1.82099 14.09866,-4.4058 7.97696,-3.64624 16.94957,-6.57031 22.72819,-10.91091 0,0 5.46006,7.26897 5.46006,7.26897 -4.2582,3.19854 -8.98864,10.29803 -14.84873,13.02886 -3.81148,1.77617 -9.17857,-0.12478 -13.06774,1.47257 -3.6712,1.50783 -7.35709,6.31797 -11.27862,6.92925 -4.0012,0.62366 -10.41316,-3.02775 -13.89311,-5.09865 -5.77703,-3.43784 -12.84412,-7.05349 -17.51479,-11.88913 -3.07637,-3.18497 -3.7105,-6.70183 -8.01166,-9.56797 0,0 4.98962,-7.59677 4.98962,-7.59677 M 590.70189,162.4165 c 5.40927,-1.23828 6.85157,-5.4891 11.46076,-9.13271 3.516,-2.77948 11.35032,-5.65023 15.81122,-6.0717 3.78121,-0.35763 11.86614,1.24958 15.12145,3.20724 5.32792,3.20408 9.21222,8.3406 14.06781,12.22317 6.84952,5.47692 13.9734,12.57174 19.98797,16.57964 0,0 -5.04156,7.56576 -5.04156,7.56576 -4.43207,-2.95337 -12.75636,-3.82052 -17.66103,-8.03274 -3.19005,-2.73968 -3.88369,-8.28776 -6.83237,-11.28531 -2.78341,-2.82955 -7.51512,-2.42554 -10.67791,-4.82351 -3.22702,-2.4467 -2.80998,-5.36744 -6.82785,-5.86918 -6.67,-0.83289 -7.68497,5.46336 -13.07074,9.48726 -3.54732,2.65038 -9.21382,3.84323 -14.25115,4.99637 0,0 -2.0866,-8.84429 -2.0866,-8.84429 m -82.02624,5.97507 c 5.35835,1.44323 8.34745,-0.34955 14.06663,-1.69273 4.36273,-1.02464 8.32439,-1.1084 12.49224,-2.75677 3.53269,-1.39758 7.3065,-4.25738 10.91273,-5.45119 5.90226,-1.9539 15.7726,-2.66922 21.78498,-1.08559 8.48133,2.23392 15.92001,7.47267 22.96401,5.86017 0,0 2.02838,8.86069 2.02838,8.86069 -5.19064,1.18824 -15.45037,3.61052 -21.49731,1.3227 -3.93301,-1.48802 -5.64507,-6.57721 -9.82549,-7.02353 -3.94612,-0.42131 -5.84389,3.27524 -9.62227,4.48945 -3.85515,1.23884 -7.64362,0.0482 -11.50161,1.27974 -6.40457,2.04443 -12.71916,7.53162 -19.39859,8.29324 -4.39941,0.50168 -9.71878,-1.96208 -14.70869,-3.30608 0,0 2.30499,-8.7901 2.30499,-8.7901 m -54.99167,-63.81062 c 5.54975,0.026 17.15034,5.801 20.20559,10.81906 2.33065,3.82789 3.09069,9.95711 4.69037,14.14381 1.35631,3.54868 3.44025,5.9397 5.37185,9.21061 3.16144,5.35347 6.41927,8.95628 9.88708,14.11725 4.89184,7.28026 7.63258,14.48146 14.61027,16.36086 0,0 -2.3641,8.77729 -2.3641,8.77729 -5.14178,-1.3849 -16.23143,-5.0146 -19.69961,-10.47064 -2.25575,-3.54868 -0.902,-9.04283 -3.22311,-12.54898 -2.19102,-3.30965 -7.7963,-4.31162 -9.95231,-7.64403 -2.19978,-3.40013 -1.71115,-8.76704 -2.9262,-12.63018 -2.01712,-6.41312 -5.34959,-9.84706 -9.56486,-15.08312 -2.77643,-3.44872 -1.84898,-5.93962 -7.01713,-5.96383 0,0 -0.0178,-9.0881 -0.0178,-9.0881 m 3131.85808,64.08864 c 5.3585,-1.44327 6.845,-3.99122 10.8251,-8.31294 3.0362,-3.29674 6.3631,-5.48593 8.8724,-9.19975 2.1268,-3.14821 3.0502,-6.2921 4.6953,-9.71651 2.6925,-5.60469 3.568,-10.63673 6.0509,-16.3374 3.5023,-8.04161 16.895,-18.97896 24.0911,-19.62935 0,0 0.8181,9.05177 0.8181,9.05177 -5.3027,0.47926 -4.9314,4.94087 -8.6208,10.24989 -2.3996,3.45305 -7.0281,4.24483 -8.572,8.15596 -1.4574,3.69192 0.7502,8.6746 -0.6776,12.37763 -1.4569,3.77825 -6.3213,6.45738 -8.7866,9.67049 -4.0925,5.33404 -6.5248,13.38022 -11.6939,17.67791 -3.4046,2.83071 -9.5903,3.42696 -14.5803,4.77099 0,0 -2.4217,-8.75869 -2.4217,-8.75869 m -81.6348,-6.43014 c 5.3121,1.6059 8.3564,-0.778 14.114,-1.94745 4.3922,-0.89212 9.4799,-0.80598 13.9096,-1.48643 3.7547,-0.57716 9.4613,-1.5836 13.2429,-1.21815 6.1891,0.59813 13.3136,3.26507 19.0596,5.64172 8.1054,3.3526 14.5574,8.16086 21.5352,6.28142 0,0 2.3641,8.77729 2.3641,8.77729 -5.1419,1.38493 -16.1051,3.92081 -22.0057,1.27894 -3.8378,-1.71831 -5.7022,-7.03252 -9.5966,-8.61824 -3.6762,-1.49684 -7.4359,1.02415 -11.3579,0.41629 -4.0016,-0.62024 -6.1046,-3.41136 -10.1512,-3.26536 -6.7178,0.24241 -12.1495,5.1246 -18.8207,5.95651 -4.394,0.54799 -9.9183,-1.60523 -14.8651,-3.10071 0,0 2.5718,-8.71583 2.5718,-8.71583 m -77.1884,16.83801 c 4.6206,-3.07522 9.0897,-7.48465 14.0502,-10.6336 3.7839,-2.40213 7.7328,-3.07121 10.9951,-6.14451 2.7649,-2.60534 4.3554,-6.35273 6.9593,-9.11915 4.2618,-4.52777 18.7881,-9.26889 24.5062,-6.8284 8.0662,3.44265 13.5082,14.63012 20.4256,16.72133 0,0 -2.6305,8.70122 -2.6305,8.70122 -5.0973,-1.54099 -14.2613,-4.52412 -18.8478,-9.08047 -2.9832,-2.96351 -1.917,-7.65156 -6.1198,-7.74057 -3.9672,-0.084 -3.6882,4.24214 -6.7026,6.82362 -3.0757,2.6339 -6.5634,3.42934 -9.5973,6.11196 -5.0365,4.45341 -9.7336,10.57939 -15.5356,13.97603 -3.8215,2.23724 -8.114,1.88139 -12.4169,4.74516 0,0 -5.0859,-7.53262 -5.0859,-7.53262 m -67.6047,3.53032 c 4.4376,3.33333 10.0587,5.03242 14.9734,8.25228 3.7491,2.45618 6.1087,5.68021 10.2362,7.42639 3.4987,1.47979 5.2189,0.94758 9.0176,0.90483 6.2173,-0.07 6.8032,-0.72662 11.8075,-4.41659 7.0592,-5.20526 16.0357,-10.96749 22.0526,-14.97207 0,0 5.0373,7.56859 5.0373,7.56859 -4.4338,2.95093 -6.914,10.15045 -12.1381,13.95922 -3.3978,2.47728 -9.0576,1.85216 -12.6974,3.95601 -3.4357,1.98594 -7.7072,7.01954 -11.6547,7.43066 -4.0278,0.41945 -9.5068,-3.21771 -13.2266,-4.81774 -6.1752,-2.65615 -13.8024,-4.48082 -19.2604,-8.40662 -3.595,-2.5857 -5.4249,-6.47798 -9.5574,-9.58211 0,0 5.41,-7.30285 5.41,-7.30285 m -82.3313,-11.25706 c 2.6802,-4.85996 9.4492,-13.77729 14.9897,-15.73152 4.2263,-1.49076 11.7611,-0.75866 16.2273,-0.38877 3.7858,0.31315 8.8976,0.18769 12.6031,1.02672 6.0646,1.37323 14.1853,4.3258 19.1636,8.05068 7.0226,5.25445 13.0457,14.65571 18.8244,18.9964 0,0 -5.46,7.26897 -5.46,7.26897 -4.2583,-3.19861 -12.0955,-5.49193 -16.5955,-10.13395 -2.9269,-3.01923 -2.4491,-8.06042 -6.094,-10.15562 -3.4406,-1.97778 -7.6269,0.64075 -11.4585,-0.39496 -3.9095,-1.05678 -6.1592,-4.11754 -10.1308,-4.90799 -6.5932,-1.31216 -9.4204,0.86074 -15.1691,4.34607 -3.7863,2.29566 -6.417,1.83408 -8.9129,6.35987 0,0 -7.9873,-4.3359 -7.9873,-4.3359 m -56.0643,46.49135 c 5.5495,-0.075 10.4599,-1.93076 16.2571,-2.88601 4.4223,-0.72872 7.9544,-0.29456 12.084,-2.03606 3.5002,-1.47653 5.231,-3.73221 8.2763,-6.00349 4.9842,-3.71737 5.2385,-5.71257 7.8589,-11.35098 3.6964,-7.9538 8.8605,-17.46549 12.3507,-23.79417 0,0 7.9608,4.39025 7.9608,4.39025 -2.5719,4.66353 -0.9404,12.58752 -3.921,18.32473 -1.9386,3.73155 -7.1596,5.64529 -9.3463,9.23653 -2.0642,3.38995 -2.0565,9.74738 -4.9246,12.49097 -2.9264,2.7993 -8.8945,3.22742 -12.6523,4.73666 -6.2383,2.50547 -13.2739,7.03572 -19.9662,7.6771 -4.408,0.42249 -8.5275,-1.94259 -13.6907,-1.7037 0,0 -0.2867,-9.08183 -0.2867,-9.08183 m -82.2393,-14.32186 c 4.993,2.42392 10.3173,3.70363 15.8224,5.75655 4.1993,1.56599 7.0485,3.75607 11.495,4.31549 3.7691,0.4738 7.4625,-0.4825 11.2589,-0.33441 6.2136,0.24239 12.2227,0.90058 18.3783,1.78044 8.6832,1.24114 18.0697,3.77235 25.2964,3.67475 0,0 0.1228,9.09032 0.1228,9.09032 -5.3253,0.0719 -13.4336,3.92275 -19.7671,2.62376 -4.1194,-0.84488 -7.038,-5.43042 -11.2038,-6.00243 -3.9323,-0.53995 -7.72,2.67644 -11.6859,2.51291 -4.0465,-0.16688 -7.6454,-2.95817 -11.6427,-3.60898 -6.6358,-1.08035 -14.9051,-0.58143 -21.0247,-3.36514 -4.0307,-1.83345 -6.3147,-5.98377 -10.9643,-8.24102 0,0 3.9147,-8.20224 3.9147,-8.20224 m -86.4271,-8.76269 c 3.8435,-4.00319 11.2323,-10.26915 16.8812,-11.88329 4.3092,-1.23134 11.0468,-0.39554 15.5282,-0.32604 3.7986,0.0585 9.1434,-0.32938 12.8729,0.39446 6.1039,1.1847 13.3092,3.97281 18.753,6.97743 7.6793,4.23843 15.5096,11.22729 22.0114,14.38373 0,0 -3.9704,8.17855 -3.9704,8.17855 -4.7911,-2.32594 -13.225,-2.50041 -18.5371,-6.18584 -3.455,-2.39705 -4.1957,-7.58045 -7.9793,-9.41487 -3.5715,-1.7316 -7.6685,0.64619 -11.5216,-0.30643 -3.9314,-0.97201 -6.2303,-3.71346 -10.2306,-4.34151 -6.6408,-1.04259 -10.2764,1.89635 -16.5027,4.4315 -4.101,1.66982 -7.1288,0.61445 -10.708,4.34239 0,0 -6.597,-6.25008 -6.597,-6.25008 m -10.332,88.11693 c -1.9906,-5.18056 -5.0867,-11.68169 -6.259,-17.43899 -0.8943,-4.39181 -0.4374,-9.81722 -0.9181,-14.27318 -0.4078,-3.77701 -2.0248,-8.30822 -2.1478,-12.10516 -0.2014,-6.2144 1.0737,-14.68406 3.3946,-20.45236 3.274,-8.13702 11.8855,-18.03103 16.8906,-23.24403 0,0 6.5573,6.29573 6.5573,6.29573 -3.6882,3.8414 -3.6801,10.4172 -7.0256,15.94923 -2.176,3.59811 -7.2366,4.42447 -8.379,8.47107 -1.0784,3.8198 2.0361,6.9395 2.1299,10.90732 0.096,4.04844 -2.2717,7.2443 -2.0806,11.28941 0.3174,6.71523 4.0819,11.93618 5.3789,18.53292 0.8543,4.34495 -0.9336,7.92769 0.9202,12.75203 0,0 -8.4614,3.31601 -8.4614,3.31601 m 44.1599,68.33763 c 1.5169,-5.33892 -1.053,-6.74503 -3.5147,-12.0795 -1.878,-4.06927 -2.5706,-7.32481 -5.4364,-10.77087 -2.4295,-2.92078 -5.6489,-4.50259 -8.4223,-7.09926 -4.5392,-4.24993 -9.0262,-8.72668 -12.9323,-13.56452 -5.5102,-6.82447 -10.4489,-18.38973 -13.0412,-25.1359 0,0 8.4859,-3.26068 8.4859,-3.26068 1.9102,4.97117 7.9311,7.93083 11.3813,13.39812 2.2441,3.55599 0.8782,8.65275 3.6252,11.83629 2.593,3.00512 7.5838,2.92442 10.5036,5.61337 2.9791,2.74359 3.9864,7.36722 6.4863,10.55323 4.1499,5.28902 10.8462,10.78599 13.1364,17.10641 1.5085,4.16295 -0.1003,10.85728 -1.5129,15.82911 0,0 -8.7589,-2.4258 -8.7589,-2.4258 m 74.8904,2.15813 c -4.7816,2.81821 -9.5033,6.97984 -14.6353,9.84057 -3.9148,2.18227 -9.0479,3.26163 -13.0773,5.22419 -3.4154,1.6639 -7.1749,4.49748 -10.6982,5.91862 -5.7665,2.32596 -14.3984,3.82574 -20.6078,3.50796 -8.7593,-0.44827 -17.0093,-19.45901 -15.0339,-26.4114 0,0 8.7452,2.48473 8.7452,2.48473 -1.4556,5.12314 -3.6065,5.49021 2.0755,8.57326 3.6957,2.00526 4.3788,5.58564 8.5635,5.17671 3.9501,-0.386 6.1104,-4.22056 9.8608,-5.51995 3.8265,-1.32576 7.5204,-0.16067 11.3034,-1.60601 6.2802,-2.39941 10.2014,-7.88416 16.1877,-10.94416 3.9428,-2.01551 8.1968,-1.4192 12.6496,-4.04363 0,0 4.6668,7.79911 4.6668,7.79911 m 79.9534,-12.22224 c -5.4562,-1.01677 -10.8014,-0.45991 -16.6652,-0.82836 -4.4731,-0.28104 -8.4802,-1.7471 -12.9569,-1.52965 -3.7945,0.1847 -6.8286,1.69251 -10.5533,2.44107 -6.0962,1.22517 -10.8342,1.61452 -16.8343,3.2452 -8.4641,2.3003 -17.1593,4.47365 -23.386,8.14355 0,0 -4.6163,-7.83237 -4.6163,-7.83237 4.5884,-2.70431 10.1755,-10.28093 16.4298,-11.91882 4.0678,-1.0653 9.0547,1.72402 13.1858,0.94105 3.8995,-0.73908 7.0369,-4.87071 10.935,-5.61868 3.9774,-0.76313 8.3379,1.21467 12.387,1.14018 6.7218,-0.1237 14.0391,-2.6469 20.7032,-1.75912 4.3893,0.58468 7.8957,3.68362 12.9767,4.63047 0,0 -1.6055,8.94548 -1.6055,8.94548 m 57.3232,49.57343 c -1.7046,-5.28188 -4.9841,-9.46563 -7.5566,-14.74796 -1.9625,-4.02949 -2.5615,-7.80882 -5.2535,-11.39229 -2.282,-3.03727 -4.8671,-3.98324 -7.8658,-6.31591 -4.9079,-3.81784 -8.053,-5.7773 -13.6271,-8.5327 -7.8632,-3.88686 -15.7556,-8.11684 -22.8607,-9.44088 0,0 1.6655,-8.93735 1.6655,-8.93735 5.2357,0.97567 14.5277,-0.88464 20.2672,2.09058 3.7331,1.93512 5.6452,7.11234 9.257,9.26494 3.4093,2.03194 8.9794,1.32841 12.1805,3.67516 3.266,2.39446 5.0686,7.56406 7.4091,10.86897 3.8854,5.48641 10.0378,10.74944 12.5861,16.97077 1.6785,4.09767 0.8413,8.72922 2.4287,13.64792 0,0 -8.6304,2.84875 -8.6304,2.84875 m -21.9761,76.25397 c 1.4792,-5.3497 1.9562,-12.3494 4.1818,-17.78656 1.6977,-4.14762 6.6567,-8.76026 9.4382,-12.27479 2.3574,-2.97929 3.4978,-6.243 5.4627,-9.49444 3.2158,-5.32159 4.1487,-7.0278 4.7471,-13.21683 0.8441,-8.7305 1.195,-16.87076 -1.0247,-23.74887 0,0 8.6518,-2.79218 8.6518,-2.79218 1.6357,5.06841 7.4187,12.916 7.1456,19.37485 -0.1776,4.20091 -4.5444,8.39814 -5.401,12.5142 -0.8086,3.88536 0.4342,9.74485 -1.4672,13.22848 -1.9401,3.55439 -6.7291,5.60459 -9.429,8.62314 -4.4821,5.01107 -4.9003,9.99936 -7.1485,16.33555 -1.4807,4.17335 -5.0032,6.61947 -6.3806,11.60134 0,0 -8.7762,-2.36389 -8.7762,-2.36389 m 6.3587,89.50838 c -4.3324,-3.46868 -9.9039,-11.75708 -11.6885,-17.35444 -1.3614,-4.2698 -1.257,-10.30816 -1.8082,-14.75596 -0.4677,-3.77009 -1.9815,-8.06801 -2.2774,-11.85565 -0.4842,-6.19918 0.3527,-13.69643 1.6606,-19.7751 1.8451,-8.57484 6.6682,-18.56864 8.5944,-25.53508 0,0 8.763,2.42291 8.763,2.42291 -1.4194,5.13349 0.6061,12.84006 -1.4631,18.96519 -1.3458,3.98385 -6.1122,6.1459 -6.8515,10.28526 -0.6979,3.90736 2.6735,7.17144 2.8257,11.13774 0.1553,4.04687 -2.2145,7.2767 -1.9593,11.31829 0.4238,6.70937 3.7574,10.94447 6.274,17.17796 1.6576,4.10568 -0.4714,7.60672 3.5631,10.8369 0,0 -5.6328,7.13198 -5.6328,7.13198 m 88.9171,-7.41743 c -5.4721,0.92789 -10.3654,3.43403 -16.0218,5.02358 -4.3148,1.21259 -8.9258,1.22512 -13.1786,2.63989 -3.6048,1.1996 -7.0617,3.65806 -10.6508,4.90402 -5.8743,2.03925 -13.8932,3.58169 -20.1083,3.39283 -8.7672,-0.26639 -22.7715,-4.70587 -28.4132,-9.22282 0,0 5.6818,-7.09657 5.6818,-7.09657 4.1573,3.32849 9.8798,-0.0549 16.212,1.25022 4.1185,0.84886 6.6206,5.07769 10.8203,4.87775 3.9643,-0.18873 6.1761,-4.45663 9.9747,-5.60786 3.8757,-1.17459 7.7669,0.0324 11.6796,-1.01228 6.4955,-1.7343 12.1142,-6.55974 18.6842,-7.98642 4.3274,-0.93973 8.6453,0.75144 13.7411,-0.11264 0,0 1.579,8.9503 1.579,8.9503 m 66.2365,-50.08565 c -1.5112,5.34054 -1.413,11.7972 -3.1632,17.40585 -1.3351,4.27844 -5.1129,9.66711 -7.5899,13.40211 -2.0993,3.16616 -6.0933,8.26444 -9.1683,10.49518 -5.0328,3.65104 -13.9325,6.52323 -20.1062,7.26378 -8.7087,1.04467 -19.2288,-0.54837 -26.3545,0.65994 0,0 -1.5199,-8.96337 -1.5199,-8.96337 5.2509,-0.89038 12.3372,-5.38653 18.8022,-5.40194 4.205,-0.01 7.6717,3.93146 11.7812,3.04294 3.8791,-0.83872 5.0894,-5.05674 8.5248,-7.04453 3.5052,-2.02815 6.4062,-1.20321 9.1493,-4.18213 4.5536,-4.94528 2.9995,-10.66747 4.9872,-17.08971 1.3092,-4.23004 4.4885,-7.03115 5.8958,-12.00448 0,0 8.7615,2.41636 8.7615,2.41636 m 56.1205,-40.27146 c -5.5227,0.55178 -11.5731,2.23071 -17.4324,2.66819 -4.4696,0.33374 -8.273,-0.5796 -12.6101,0.55101 -3.6761,0.95872 -5.6878,2.99506 -9.0266,4.80742 -5.4647,2.96627 -6.9426,2.69714 -9.6549,8.29204 -3.8261,7.89241 -6.2668,16.76113 -8.2347,23.71563 0,0 -8.7479,-2.47531 -8.7479,-2.47531 1.4501,-5.12469 -1.0405,-12.80244 0.9672,-18.94793 1.3059,-3.99711 6.8678,-7.41991 9.5794,-10.63301 2.5595,-3.03302 4.388,-8.58144 7.7021,-10.76523 3.3815,-2.22812 9.1271,-1.85663 13.0752,-2.75814 6.5542,-1.49662 13.5899,-5.07713 20.3108,-5.25281 4.4267,-0.11576 7.9652,2.2747 13.1082,1.76086 0,0 0.9637,9.03728 0.9637,9.03728 m 88.152,-13.43698 c -3.7272,4.11225 -12.1675,9.80723 -17.8994,11.0956 -4.3725,0.98282 -10.4561,0.0237 -14.936,0.15538 -3.7973,0.11198 -7.8354,1.35699 -11.6318,1.50586 -6.2135,0.24365 -11.9158,-0.21806 -18.1319,-0.35038 -8.7688,-0.18665 -18.4479,-0.55477 -25.6395,0.16378 0,0 -0.9039,-9.04627 -0.9039,-9.04627 5.2995,-0.52949 12.2414,-5.87232 18.7038,-5.68635 4.2033,0.12095 8.1083,4.50868 12.3068,4.73881 3.9632,0.21723 7.5303,-3.25253 11.4977,-3.37435 4.048,-0.12426 7.5996,2.38773 11.6473,2.51268 6.7195,0.20739 11.1987,-2.32591 17.6039,-4.36526 4.2187,-1.34327 7.1378,0.4215 10.6087,-3.408 0,0 6.7743,6.0585 6.7743,6.0585 m -28.0839,-78.93833 c -1.8705,5.22407 0.5848,5.51418 3.8243,10.41511 2.4711,3.73855 4.1902,7.31504 7.1271,10.70065 2.4898,2.86953 6.3202,6.05299 8.4688,9.1861 3.5166,5.12792 7.3021,11.18223 9.5124,16.99402 3.1179,8.19836 3.3596,25.70248 -1.4941,31.05749 0,0 -6.7359,-6.10527 -6.7359,-6.10527 3.5766,-3.94605 -2.359,-6.83374 -3.4568,-13.20495 -0.714,-4.1439 2.5756,-8.05021 0.7322,-11.82931 -1.7401,-3.56729 -6.6579,-4.56514 -8.8739,-7.85798 -2.2609,-3.35976 -1.7106,-7.32592 -4.1754,-10.53927 -4.0917,-5.33441 -12.0262,-9.35212 -14.7235,-15.50984 -1.7767,-4.05577 -0.5217,-11.44794 1.2202,-16.31281 0,0 8.5746,3.00606 8.5746,3.00606 m 67.5579,-35.94106 c -5.505,-0.70506 -9.2772,0.58947 -15.0036,1.90337 -4.3682,1.0023 -6.496,1.16619 -9.9727,3.99457 -2.9468,2.39776 -4.4144,5.65566 -7.01,8.43011 -4.2483,4.5409 -11.2995,9.43777 -17.0315,11.84776 -8.0857,3.39965 -16.9241,2.66886 -19.3599,9.47169 0,0 -8.5572,-3.06394 -8.5572,-3.06394 1.7949,-5.01293 9.0595,-14.9275 15.201,-16.94646 3.9945,-1.31316 8.746,1.36829 12.5611,-0.39945 3.6012,-1.66867 3.3853,-6.33343 6.1817,-9.15011 2.8533,-2.87387 7.2261,-3.87249 10.4395,-6.33721 5.3345,-4.09165 12.8285,-11.08392 19.5349,-11.55479 4.4171,-0.31019 8.9848,2.12584 14.1113,2.78242 0,0 -1.0946,9.02204 -1.0946,9.02204 m 72.6581,31.73317 c -2.8541,-4.75987 -5.8627,-7.20745 -10.4322,-10.89955 -3.4857,-2.8164 -5.2704,-5.13521 -9.4868,-6.65498 -3.5741,-1.28787 -6.9671,-0.88937 -10.6979,-1.60763 -6.1061,-1.17556 -12.2646,-2.9705 -18.1266,-5.04422 -8.2691,-2.92525 -16.6353,-7.47262 -23.804,-8.39076 0,0 1.1549,-9.01733 1.1549,-9.01733 5.2825,0.67656 14.2649,-1.39177 20.2004,1.1712 3.8606,1.66698 5.7667,6.746 9.7385,8.12643 3.7491,1.30305 7.9192,-1.32177 11.8102,-0.53728 3.97,0.80046 7.2717,4.17772 11.0528,5.62752 6.277,2.40675 15.6221,4.47518 20.1342,9.45902 2.9719,3.28259 3.5618,8.60974 6.2196,13.04233 0,0 -7.7631,4.72525 -7.7631,4.72525 m 27.5667,82.63524 c -4.454,-3.31059 -11.6439,-11.88898 -12.6753,-17.67302 -0.7868,-4.41223 0.2686,-9.96558 -0.03,-14.43756 -0.2539,-3.79061 -1.669,-7.0753 -2.3396,-10.81473 -1.0974,-6.12026 -2.7983,-10.15851 -4.6078,-16.10738 -2.5526,-8.39174 -3.45,-17.85212 -7.1665,-24.05047 0,0 7.7967,-4.67498 7.7967,-4.67498 2.7387,4.56749 9.5431,10.81108 11.0053,17.10886 0.9509,4.09614 -2.0273,8.65511 -0.7815,12.67115 1.176,3.79095 5.9208,6.8717 6.7811,10.74613 0.8777,3.95315 -1.2647,8.5651 -1.2382,12.61478 0.044,6.72281 2.5789,11.44964 4.4576,17.90416 1.2374,4.25127 0.023,6.30072 4.1712,9.38368 0,0 -5.3725,7.32938 -5.3725,7.32938 m 89.6363,-1.34752 c -5.0719,2.2533 -11.2173,5.55334 -16.8605,7.18867 -4.3047,1.2475 -9.6836,1.04284 -14.0686,1.96938 -3.7167,0.78575 -7.7007,2.78131 -11.4355,3.47809 -6.1127,1.14042 -14.1973,1.33054 -20.3243,0.27181 -8.6429,-1.49347 -20.6278,-7.94836 -26.4279,-12.25945 0,0 5.4229,-7.29575 5.4229,-7.29575 4.2739,3.17679 10.481,1.62607 16.5882,3.74689 3.9721,1.3794 5.9099,5.98165 10.0971,6.36522 3.9526,0.36207 6.7774,-3.39438 10.7031,-3.98064 4.0054,-0.59815 7.5575,1.26976 11.5628,0.67261 6.6491,-0.99135 11.802,-5.18106 18.3224,-6.81874 4.2946,-1.0787 7.9522,0.4797 12.6753,-1.61866 0,0 3.745,8.28057 3.745,8.28057 m 69.5506,-53.06048 c -4.4133,3.36566 -9.9736,7.8859 -15.1756,10.61709 -3.9683,2.08346 -8.5352,2.97148 -12.4055,5.23181 -3.2804,1.91628 -5.209,4.56581 -8.1311,6.99389 -4.7825,3.97401 -7.856,6.72132 -12.0141,11.34447 -5.8656,6.52163 -15.5733,15.14297 -22.178,18.07723 0,0 -3.6909,-8.30783 -3.6909,-8.30783 4.8669,-2.16223 5.3913,-8.98792 9.9648,-13.5578 2.9746,-2.97231 8.3451,-3.18783 11.357,-6.12165 2.843,-2.76938 3.4573,-8.16003 6.4574,-10.75892 3.061,-2.65167 8.1323,-3.00208 11.6911,-4.93471 5.908,-3.20835 10.5487,-8.71639 16.6098,-11.62537 3.9921,-1.91604 7.846,-1.01403 11.9558,-4.14827 0,0 5.5593,7.19006 5.5593,7.19006 m -4.966,-83.76635 c 3.7857,4.05901 9.725,9.1969 12.5541,14.34617 2.1582,3.928 2.7758,9.26908 4.7199,13.30743 1.6482,3.4229 4.4566,6.98813 5.9592,10.47745 2.4593,5.71093 3.4616,17.19682 1.2969,23.02514 -3.0536,8.22168 -14.3453,17.53475 -20.0923,21.91753 0,0 -5.5131,-7.22908 -5.5131,-7.22908 4.235,-3.22962 5.3757,-8.96431 9.2073,-14.17059 2.4922,-3.38624 7.1924,-3.43934 7.7681,-7.60425 0.5435,-3.93148 -3.6288,-5.77834 -4.8153,-9.56565 -1.2107,-3.86427 -0.3095,-7.30802 -1.7269,-11.10146 -2.3531,-6.29741 -6.6483,-10.15859 -10.2625,-15.82754 -2.3805,-3.73384 -2.1753,-7.55203 -5.7007,-11.33195 0,0 6.6053,-6.2432 6.6053,-6.2432 m 2.138,-57.99077 c -5.0932,2.20432 -9.6809,3.46758 -14.5134,6.80848 -3.6864,2.54856 -4.5211,2.5638 -5.5416,6.92744 -0.8647,3.69889 0.3543,5.89605 0.7223,9.6772 0.6025,6.18856 1.2329,9.12822 3.6605,14.85232 3.4245,8.07465 7.9674,15.03377 12.8972,20.31946 0,0 -6.6487,6.20107 -6.6487,6.20107 -3.6327,-3.89497 -12.0956,-7.30922 -15.3161,-12.9146 -2.0947,-3.64581 -0.4242,-9.79516 -1.7009,-13.80111 -1.2051,-3.78144 -5.4538,-7.29193 -6.1365,-11.20188 -0.6965,-3.98938 1.8274,-9.30658 2.7477,-13.24993 1.5279,-6.54629 6.5196,-17.91941 12.8406,-20.20744 4.1634,-1.50705 8.5809,0.32566 13.324,-1.72709 0,0 3.6649,8.31608 3.6649,8.31608 m -19.9108,-64.61395 c 5.2182,1.8913 11.5786,2.77422 17.022,4.98527 4.1525,1.68662 8.5571,5.31418 12.4451,7.54302 3.2959,1.88892 8.9503,5.00005 11.437,7.87206 4.0699,4.70058 6.2241,20.63872 2.692,25.75564 -4.9824,7.21815 -17.3988,14.78813 -24.0312,17.65862 0,0 -3.6107,-8.34283 -3.6107,-8.34283 4.8873,-2.11523 6.5066,-9.10013 11.5962,-13.08642 3.3104,-2.59273 8.1724,-0.86162 9.1094,-4.9598 0.8844,-3.86848 -3.1953,-4.04132 -5.4475,-7.30934 -2.2979,-3.33443 -1.8765,-5.97608 -5.1299,-8.38689 -5.4009,-4.00212 -11.6355,-3.48407 -17.839,-6.07584 -4.0859,-1.70703 -6.4242,-5.32697 -11.2835,-7.08822 0,0 3.0401,-8.56527 3.0401,-8.56527 m -46.3098,-60.94402 c 5.0735,2.2496 13.1934,18.07931 9.408,22.57286 -2.8875,3.42782 -2.1589,2.1583 -0.6112,6.36383 1.3123,3.56466 3.5255,4.50536 6.0093,7.3802 4.0651,4.7052 6.6988,8.20019 11.2897,12.39236 6.4761,5.91364 13.122,10.59086 19.9172,13.05372 0,0 -3.098,8.54751 -3.098,8.54751 -5.0073,-1.81486 -14.5128,-1.51726 -19.6679,-5.41843 -3.353,-2.53736 -4.2365,-8.80582 -6.9913,-11.98248 -2.6005,-2.99863 -7.8985,-3.36262 -10.5617,-6.30582 -2.7172,-3.00301 -3.6391,-8.60776 -5.052,-12.40255 -2.3456,-6.29964 -1.7738,-14.2646 -0.322,-20.82574 0.9563,-4.32152 0.7761,-2.94832 -3.9485,-5.04324 0,0 3.6284,-8.33222 3.6284,-8.33222 m -84.692,-3.99503 c 4.9877,2.43523 9.6562,3.65691 15.3275,5.1892 4.3263,1.16886 6.8888,2.77798 11.3611,2.48491 3.7908,-0.24879 6.5691,-1.97634 10.2542,-2.90052 6.0313,-1.51261 12.0041,-2.71997 18.1638,-3.56855 8.6891,-1.19706 22.6256,0.65679 29.2324,3.58623 0,0 -3.6849,8.31047 -3.6849,8.31047 -4.8684,-2.15867 -10.0185,1.91061 -16.4827,1.79913 -4.2045,-0.0725 -7.6559,-3.74099 -11.8181,-3.14416 -3.9289,0.56337 -6.6533,4.90737 -10.5116,5.83917 -3.9367,0.9507 -8.4719,-0.67927 -12.5182,-0.51243 -6.7172,0.277 -15.9263,1.89917 -22.1019,-0.75708 -4.0677,-1.7495 -6.5102,-5.86484 -11.1549,-8.13262 0,0 3.9333,-8.19375 3.9333,-8.19375 m -86.5721,-14.4612 c 5.549,-0.096 14.1621,1.71583 19.559,4.03862 4.117,1.77186 6.132,4.37629 10.6079,4.60546 3.794,0.19387 5.9383,-1.60705 9.6238,-2.5289 6.032,-1.50879 14.2406,-3.44032 20.3959,-2.56706 8.6828,1.23185 19.5083,8.52468 26.0033,11.69585 0,0 -3.9889,8.16994 -3.9889,8.16994 -4.7861,-2.3368 -11.5111,-1.75826 -17.561,-4.03558 -3.935,-1.4812 -5.4306,-6.10845 -9.6322,-5.95121 -3.9662,0.14842 -6.3536,4.42334 -10.1892,5.44521 -3.9134,1.04261 -9.0141,-0.39336 -13.0567,-0.62682 -6.711,-0.38753 -15.2064,-0.92502 -21.305,-3.75435 -4.0169,-1.8635 -5.0719,-5.4953 -10.2393,-5.40589 0,0 -0.2176,-9.08527 -0.2176,-9.08527 M 945.9357,654.65104 c -1.90063,-5.19937 -4.89041,-13.74957 -4.42739,-19.59136 0.35317,-4.45628 4.67758,-13.02802 8.00826,-16.0083 2.82297,-2.52651 8.22104,-6.08103 11.76697,-7.41803 5.80356,-2.18825 8.36986,1.55842 10.87287,-4.11428 3.53084,-8.00216 16.68323,-16.58446 23.88229,-16.21684 0,0 -0.46362,9.07887 -0.46362,9.07887 -5.30491,-0.2709 -7.84831,-2.84923 -9.06731,3.481 -0.79285,4.11725 -5.46345,9.09677 -8.84818,11.57193 -3.19502,2.33644 -6.33208,7.01312 -10.04827,8.37833 -3.79169,1.39292 -7.20096,-0.4338 -10.69749,1.58768 -5.80451,3.35585 -2.58178,7.30067 -2.30294,14.00059 0.1837,4.41291 -1.93002,7.23169 -0.16008,12.07356 0,0 -8.51511,3.17685 -8.51511,3.17685 m 61.7205,59.29422 c -2.7154,-4.82412 -6.4466,-6.21818 -11.08827,-9.79564 -3.54077,-2.72897 -6.06539,-5.78089 -9.96841,-7.96082 -3.30854,-1.84746 -7.32711,-2.48602 -10.71693,-4.17992 -5.54808,-2.77238 -12.25901,-7.10824 -16.54084,-11.59427 -6.04015,-6.32818 -10.11293,-19.29195 -12.58795,-26.06262 0,0 8.53862,-3.12129 8.53862,-3.12129 1.82381,4.98923 7.31733,8.55098 10.49157,14.16442 2.06457,3.65105 0.53144,8.03274 3.70957,10.76918 3.00001,2.58307 7.50385,1.12755 11.02969,2.92826 3.59745,1.83732 5.66171,5.66054 9.08429,7.806 5.68177,3.56161 13.91336,5.12404 18.70696,9.81279 3.1573,3.08822 4.7032,8.23113 7.2319,12.72355 0,0 -7.8902,4.51036 -7.8902,4.51036 m 5.2828,78.4913 c -2.6459,-4.86239 -6.1318,-9.53805 -9.0853,-14.59992 -2.253,-3.86132 -3.7266,-9.17461 -5.52389,-13.26735 -1.52382,-3.46902 -3.94715,-10.03833 -3.89384,-13.82661 0.0873,-6.20022 5.73503,-14.94582 9.42443,-19.9313 5.2043,-7.03274 8.0909,-11.01136 4.5549,-17.29338 0,0 7.9223,-4.45931 7.9223,-4.45931 2.6057,4.62914 7.5157,17.92658 3.949,23.29905 -2.3199,3.49432 -8.3239,4.41139 -10.8123,7.78734 -2.3491,3.18674 -0.3967,6.63245 -1.3133,10.48349 -0.9353,3.92928 -2.7679,4.70756 -1.6135,8.57778 1.9164,6.42488 7.9123,9.83991 10.9067,15.83956 1.9722,3.95167 0.9746,8.46591 3.4386,12.99397 0,0 -7.9538,4.39668 -7.9538,4.39668 m -16.39371,65.07253 c 0.64872,-5.4977 1.34111,-13.68365 3.78261,-19.01066 1.8624,-4.06359 9.1895,-10.03582 13.343,-11.68838 3.5205,-1.40113 6.0844,-3.19201 9.3462,-5.12067 5.3385,-3.15663 2.1622,-1.32762 0.6863,-7.35097 -2.082,-8.49679 -6.5538,-15.98631 -9.9993,-22.31817 0,0 7.9852,-4.34519 7.9852,-4.34519 2.539,4.66587 10.3504,8.64447 12.8119,14.60478 1.601,3.87666 -0.5862,9.97332 -0.2988,14.15684 0.2714,3.94905 1.1192,12.32517 -1.7075,15.09578 -2.8842,2.82688 -9.8126,2.49534 -13.701,3.58884 -6.4551,1.81533 -5.4928,5.9347 -7.8528,12.21098 -1.5544,4.1339 -4.7591,6.06229 -5.3632,11.18198 0,0 -9.03261,-1.00516 -9.03261,-1.00516 m 11.10071,87.55897 c -0.9272,-5.45789 -2.8861,-11.49897 -3.6281,-17.31217 -0.5661,-4.43446 0.046,-8.73395 -0.9217,-13.09847 -0.8208,-3.69947 -2.842,-7.06133 -3.88165,-10.7055 -1.70167,-5.96437 -2.95483,-12.45887 -3.57901,-18.62934 -0.88053,-8.70433 0.93002,-20.55225 1.77479,-27.71142 0,0 9.02857,1.06535 9.02857,1.06535 -0.6225,5.27551 3.2204,11.37972 3.1252,17.82767 -0.062,4.19383 -4.0452,7.72274 -3.4906,11.87999 0.5234,3.92425 4.749,6.4518 5.8018,10.26843 1.0741,3.89416 -0.4494,8.11769 0.1855,12.10695 1.0542,6.62249 5.0116,12.9189 5.5737,19.60117 0.3702,4.40129 -1.9018,8.04317 -1.0384,13.12578 0,0 -8.9501,1.58156 -8.9501,1.58156 m 40.1003,77.05154 c -2.4067,-4.9855 -5.5463,-8.5299 -9.1248,-13.1708 -2.7298,-3.5401 -4.4269,-7.4747 -7.4859,-10.73479 -2.5932,-2.76315 -6.3953,-5.10999 -8.9185,-7.93719 -4.1296,-4.62722 -7.9163,-12.29931 -9.8148,-18.20355 -2.6781,-8.32875 -2.6901,-20.04379 -3.8975,-27.1511 0,0 8.9632,-1.52265 8.9632,-1.52265 0.8897,5.2373 5.9811,11.05992 6.9256,17.43931 0.6143,4.14923 -2.5233,8.07218 -1.0881,12.01293 1.3548,3.71989 5.7526,4.23555 8.2215,7.3302 2.5189,3.15754 2.7494,6.99921 5.3305,10.10642 4.285,5.15821 11.5527,8.7256 14.9904,14.48262 2.2643,3.7919 1.8157,8.7006 4.0568,13.3433 0,0 -8.1584,4.0053 -8.1584,4.0053 m -26.4639,58.848 c 4.8719,-2.6294 9.4834,-6.3165 14.5648,-9.2358 3.8763,-2.2269 7.5584,-2.9527 10.8848,-5.9392 2.8194,-2.5318 3.129,-4.9476 4.9749,-8.2567 3.0213,-5.416 3.018,-6.6213 2.6503,-12.8122 -0.5186,-8.7331 -2.6925,-16.4906 -5.8265,-22.9828 0,0 8.1874,-3.9523 8.1874,-3.9523 2.3094,4.784 9.4618,10.8203 10.6434,17.1596 0.7685,4.1231 -2.6783,9.4477 -2.9613,13.6319 -0.2671,3.9497 1.7384,9.836 0.1831,13.4763 -1.5869,3.7143 -6.915,6.8645 -9.9846,9.4901 -5.0956,4.3587 -10.0553,10.7857 -16.0697,13.7514 -3.9615,1.9535 -8.34,1.1906 -12.8769,3.6392 0,0 -4.3697,-7.9695 -4.3697,-7.9695 m -72.25251,11.7827 c 4.9445,2.4898 10.67341,4.5969 15.87814,7.2901 3.97033,2.0544 5.67229,4.2522 10.13304,4.5416 3.78115,0.245 4.76729,-1.322 8.24178,-2.8333 5.68666,-2.4736 9.15609,-4.7106 14.41961,-7.9911 7.42494,-4.6275 17.64954,-8.5995 23.99364,-12.0235 0,0 4.3181,8.0008 4.3181,8.0008 -4.6749,2.5231 -8.41,9.298 -14.1189,12.2979 -3.7131,1.9511 -8.896,0.2971 -12.51518,2.4158 -3.41637,1.9999 -5.29641,7.1965 -8.83704,8.9671 -3.61257,1.8066 -9.79371,0.8398 -13.83204,0.7659 -6.70396,-0.1227 -16.03854,-1.076 -21.77805,-4.5439 -3.78036,-2.2842 -5.33227,-6.4244 -9.93679,-8.743 0,0 4.03369,-8.1444 4.03369,-8.1444 m -87.16846,-20.1032 c 5.51571,-0.473 13.08562,-1.3066 18.88249,-0.4483 4.42203,0.6547 9.18402,2.8684 13.55769,3.7936 3.70739,0.784 7.89231,0.4125 11.61286,1.1327 6.08938,1.1787 12.27034,3.0242 18.10113,5.1383 8.22516,2.9821 18.18376,8.0226 24.62253,11.2649 0,0 -4.08886,8.12 -4.08886,8.12 -4.74465,-2.3892 -12.35057,-0.4787 -18.24825,-3.0876 -3.83592,-1.6969 -5.64677,-6.8542 -9.60985,-8.2269 -3.74096,-1.2958 -7.89359,1.2666 -11.77387,0.4801 -3.95911,-0.8025 -6.88341,-3.9746 -10.77767,-5.0477 -6.46479,-1.7813 -12.70708,-0.061 -19.33993,-1.048 -4.36876,-0.6499 -6.96513,-3.4616 -12.10159,-3.0211 0,0 -0.83668,-9.05 -0.83668,-9.05 m -82.51664,32.642 c 4.81259,-2.7351 11.22777,-6.7163 16.83592,-8.4166 4.27805,-1.2971 9.03619,-1.2515 13.27652,-2.6677 3.59415,-1.2008 6.44642,-3.4817 9.90073,-5.0401 5.65362,-2.5505 9.58099,-4.6319 14.94866,-7.7385 7.57187,-4.3822 20.44662,-7.2951 27.62924,-7.9112 0,0 0.7769,9.0581 0.7769,9.0581 -5.29279,0.454 -8.78473,5.2212 -14.69506,7.7999 -3.84416,1.6772 -8.66685,-0.1538 -12.35442,1.8434 -3.48089,1.8853 -5.50388,6.9043 -9.08161,8.5996 -3.65042,1.7298 -8.41451,0.8538 -12.3162,1.8999 -6.47712,1.7365 -11.69843,6.0924 -18.12064,8.0221 -4.22999,1.2709 -7.7757,-0.1249 -12.25738,2.4222 0,0 -4.54266,-7.8711 -4.54266,-7.8711 m -56.15051,68.4019 c 3.36608,-4.3951 6.46436,-9.2268 9.84561,-14.0129 2.57929,-3.651 5.83056,-6.4685 8.06348,-10.3416 1.89238,-3.2831 2.95937,-7.371 4.82437,-10.6698 3.05243,-5.3992 7.14643,-10.8355 11.21357,-15.5177 5.73726,-6.6048 16.36685,-13.5409 22.63384,-17.1026 0,0 4.49176,7.9034 4.49176,7.9034 -4.61808,2.6246 -6.43291,8.9596 -11.20876,13.2926 -3.10627,2.8182 -8.28377,2.4115 -10.93924,5.6579 -2.50663,3.0644 -1.48926,7.8971 -3.57386,11.2629 -2.12698,3.4341 -5.93096,5.1072 -8.22609,8.4311 -3.81007,5.518 -4.95019,13.5035 -9.45579,18.4697 -2.96758,3.271 -7.28224,4.0123 -10.41688,8.1052 0,0 -7.25201,-5.4782 -7.25201,-5.4782 m 15.56329,88.3716 c -3.14386,-4.5561 -7.03498,-13.0136 -7.71006,-18.835 -0.51499,-4.4406 0.51483,-8.7563 -0.43066,-13.1255 -0.80181,-3.7035 -2.60734,-5.5878 -4.38873,-8.9323 -2.91557,-5.4738 -6.73196,-10.7421 -8.80275,-16.5876 -2.92116,-8.246 2.0771,-24.6383 6.46045,-30.3616 0,0 7.21776,5.5279 7.21776,5.5279 -3.23004,4.2175 -1.60374,7.8303 -1.48632,14.2777 0.0764,4.1934 -2.87579,7.0184 -1.13591,10.8345 1.64237,3.6022 6.66199,4.7431 8.73951,8.1133 2.1197,3.4388 1.76558,9.2841 2.38006,13.2764 1.0201,6.6275 4.18687,12.6314 5.1588,19.2662 0.6402,4.37 -1.4843,7.0923 1.4434,11.3351 0,0 -7.44555,5.2109 -7.44555,5.2109 m 78.20939,-3.3437 c -2.57196,4.9021 -4.24176,11.9248 -7.64938,16.6922 -2.59941,3.6368 -10.67242,8.0184 -15.00594,9.1151 -3.67318,0.93 -9.27138,2.4444 -13.06078,2.4355 -6.20207,-0.015 -15.12684,-2.573 -20.55511,-5.5716 -7.65735,-4.2298 -17.12732,-13.8891 -21.22129,-19.8222 0,0 7.48224,-5.163 7.48224,-5.163 3.0168,4.372 9.95363,4.5944 14.90996,8.7194 3.22366,2.6829 3.36688,7.5222 7.23294,9.148 3.64938,1.5347 7.08446,-1.3238 11.02866,-0.9816 4.02432,0.3492 6.36248,2.5956 10.38524,2.2321 6.67811,-0.6035 6.44289,-5.275 10.04921,-10.9278 2.37527,-3.7233 5.93337,-5.4801 8.32848,-10.0451 0,0 8.07577,4.169 8.07577,4.169 m 65.4621,20.7503 c -5.11887,2.107 -15.73078,5.332 -21.3171,3.5626 -4.2614,-1.3498 -10.07518,-7.3025 -13.05882,-10.631 -2.52933,-2.8212 -6.0414,-5.1682 -8.58546,-7.9769 -4.16385,-4.597 -5.29526,-7.8234 -10.61965,-11.0033 -7.5108,-4.4856 -9.30317,-1.4899 -12.6524,4.8936 0,0 -8.05042,-4.2237 -8.05042,-4.2237 2.46801,-4.704 11.238,-17.2307 17.64444,-16.4991 4.16683,0.4758 8.8728,7.2033 11.88433,10.1217 2.84274,2.7549 8.17373,3.4012 10.80578,6.3588 2.6855,3.0178 2.9641,7.3716 5.47359,10.5364 4.16597,5.2538 6.88085,5.7621 13.57736,6.0931 4.41068,0.2179 6.61665,2.3493 11.38356,0.3871 0,0 3.51479,8.3807 3.51479,8.3807 m 64.80949,-58.4528 c -4.69386,2.9342 -6.06851,7.3499 -9.81794,11.8539 -2.86014,3.4358 -7.65585,6.7184 -11.03383,9.6462 -2.86305,2.482 -4.38607,5.6229 -6.89544,8.4626 -4.10705,4.6477 -8.35631,9.1422 -12.99967,13.2538 -6.55011,5.8001 -17.72829,11.6871 -24.39414,14.4309 0,0 -3.46022,-8.4064 -3.46022,-8.4064 4.91199,-2.0219 7.33162,-8.7406 12.71666,-12.2882 3.5025,-2.3074 8.4466,-1.1794 11.52564,-4.0272 2.90647,-2.6883 2.66752,-7.6927 5.26341,-10.6821 2.64865,-3.0502 7.34427,-4.3166 10.55061,-6.773 5.32278,-4.0779 6.85578,-10.3535 11.34353,-15.3362 2.95583,-3.2819 7.96208,-5.0758 12.33319,-7.8083 0,0 4.8682,7.674 4.8682,7.674 m 75.08745,27.4476 c -5.3447,-1.4432 -11.572,-1.8 -17.2052,-3.4165 -4.2972,-1.2331 -8.40753,-3.8406 -12.70989,-5.0553 -3.64696,-1.0293 -8.03254,-1.0609 -11.66581,-2.1378 -5.94652,-1.7625 -13.06232,-6.4674 -17.78188,-10.4912 -6.65762,-5.676 -10.07398,-10.9063 -16.18636,-7.0854 0,0 -4.81869,-7.7084 -4.81869,-7.7084 4.50414,-2.8156 19.20791,-5.5636 24.08555,-1.3457 3.17248,2.7433 3.40106,8.4623 6.61857,11.1524 3.03719,2.5394 6.61447,0.7923 10.40029,1.9506 3.86273,1.1819 6.34716,4.5938 10.16131,5.924 6.33182,2.2083 13.25781,1.2223 19.63271,3.3033 4.1989,1.3706 6.8033,4.776 11.7805,6.1199 0,0 -2.3111,8.7901 -2.3111,8.7901 m 80.6798,31.6092 c -5.5332,0.1728 -13.332,0.7267 -19.0396,-0.6 -4.3539,-1.012 -10.4525,-5.9389 -13.8803,-8.8082 -2.9058,-2.4318 -5.7662,-3.6644 -9.0327,-5.5849 -5.3462,-3.1433 -9.7055,-4.5048 -15.3305,-7.1169 -7.9348,-3.6847 -16.2097,-8.4608 -23.1696,-10.3401 0,0 2.3701,-8.7773 2.3701,-8.7773 5.1287,1.3848 13.8419,-0.1104 19.605,2.7835 3.7484,1.8823 5.3934,7.1987 9.2069,8.944 3.5998,1.6475 8.6029,0.037 12.1976,1.6965 3.6677,1.6926 6.1111,7.0492 8.971,9.9021 4.7476,4.7359 9.3177,3.9002 15.878,5.2865 4.321,0.913 6.7273,3.6938 11.8801,3.5328 0,0 0.344,9.082 0.344,9.082 m 81.859,-24.3176 c -5.5316,-0.2097 -8.7285,2.1517 -14.2219,4.1911 -4.1906,1.5557 -7.9502,2.1337 -11.8159,4.3793 -3.2765,1.9038 -6.0699,4.9494 -9.2931,6.9422 -5.2754,3.2617 -13.2258,5.8427 -19.3494,6.8266 -8.6383,1.3879 -20.0005,0.8826 -27.2059,1.1077 0,0 -0.2839,-9.0868 -0.2839,-9.0868 5.3096,-0.1659 11.3213,-4.8658 17.7575,-5.2709 4.1862,-0.2636 8.0593,3.424 12.1779,2.6332 3.8878,-0.7464 5.0656,-5.1776 8.5222,-7.1077 3.5268,-1.9693 7.6334,-1.5907 11.2424,-3.4053 5.9912,-3.0123 11.4896,-9.0831 17.9464,-10.8932 4.2528,-1.1924 9.6565,0.405 14.8078,0.6003 0,0 -0.2841,9.0835 -0.2841,9.0835 m 81.037,27.9846 c -5.5115,-0.5193 -12.7897,-0.7346 -18.4285,-2.3309 -4.3015,-1.2176 -8.2871,-3.8462 -12.6188,-4.9514 -3.6719,-0.9364 -8.4425,-1.3838 -12.0158,-2.645 -5.8484,-2.0641 -11.6466,-5.6588 -16.9651,-8.8493 -7.5025,-4.5008 -13.7725,-9.8052 -20.9758,-10.0783 0,0 0.3444,-9.0843 0.3444,-9.0843 5.3081,0.2013 15.6378,-0.7318 21.1125,2.6758 3.5609,2.2163 4.6949,7.8606 8.2662,10.0597 3.3713,2.0758 7.8207,0.4014 11.4858,1.8984 3.7396,1.5275 5.571,4.9593 9.3929,6.2665 6.3448,2.17 13.046,1.2152 19.4921,3.0627 4.2458,1.2168 6.5701,4.4387 11.7027,4.9223 0,0 -0.7926,9.0538 -0.7926,9.0538 m 80.1866,-38.6238 c -3.8646,3.964 -7.568,9.6554 -12.0295,13.4551 -3.4034,2.8985 -8.5062,5.1316 -12.2219,7.6172 -3.1494,2.1072 -5.9742,5.2045 -9.1066,7.3373 -5.1267,3.4906 -12.1189,6.6471 -18.0623,8.4193 -8.3839,2.5 -21.5074,1.604 -28.6846,0.9277 0,0 0.8529,-9.0512 0.8529,-9.0512 5.2887,0.4983 10.6068,-3.5883 17.024,-4.2237 4.1739,-0.4132 7.844,2.797 11.8157,1.4496 3.7491,-1.2718 4.8231,-5.9744 8.1908,-8.0558 3.4361,-2.1236 7.6148,-1.8889 11.1556,-3.8331 5.8781,-3.2274 8.3998,-9.0061 13.5229,-13.333 3.3743,-2.8499 7.3943,-3.3192 10.9931,-7.0107 0,0 6.5499,6.3013 6.5499,6.3013 m 72.5712,-30.6531 c -5.5215,-0.4014 -10.4644,0.9566 -16.3008,1.4863 -4.4521,0.4041 -8.1271,-0.2147 -12.4149,1.0501 -3.6344,1.0724 -5.9052,3.2792 -9.2688,5.0248 -5.505,2.8572 -9.8545,4.9977 -15.212,8.1219 -7.5577,4.4072 -14.966,9.1999 -19.9984,14.3619 0,0 -6.51,-6.3465 -6.51,-6.3465 3.7084,-3.8039 6.7774,-12.6052 12.2875,-15.9549 3.5838,-2.1788 9.1859,-0.9576 12.9419,-2.8231 3.5455,-1.761 5.1583,-6.758 8.644,-8.6356 3.5564,-1.9156 8.6111,-1.3359 12.5212,-2.3497 6.4911,-1.683 13.6179,-5.7787 20.3226,-5.8719 4.4161,-0.061 8.4446,2.494 13.5865,2.8677 0,0 -0.5988,9.069 -0.5988,9.069 m 61.9536,24.6752 c -2.0435,-5.145 -3.1385,-7.9723 -7.5954,-11.775 -3.3999,-2.9009 0.6202,-3.5372 -1.827,0.2036 -2.0741,3.1711 -13.5797,8.2081 -17.0924,6.7882 -5.7491,-2.324 -8.8913,-9.4841 -13.9825,-13.0247 -7.1819,-4.9944 -14.2031,-7.2135 -21.3932,-7.7361 0,0 0.6591,-9.0676 0.6591,-9.0676 5.2983,0.3852 15.0156,-2.0322 20.7951,0.8283 3.7591,1.8606 6.387,7.8173 9.11,11.0069 2.5703,3.0108 6.6098,2.8994 9.8104,5.2294 3.2657,2.3773 0.5691,5.2059 3.1489,2.0982 4.2827,-5.1591 19.8028,-7.632 23.303,-1.9129 2.3055,3.7669 1.5854,9.1597 3.4883,13.951 0,0 -8.4243,3.4107 -8.4243,3.4107 m 78.5233,26.7128 c -5.521,0.4091 -11.8881,1.9236 -17.7473,1.9686 -4.4695,0.034 -7.6867,-0.256 -12.0068,0.8943 -3.6617,0.9755 -8.3753,3.3586 -12.1386,3.7981 -6.1592,0.7194 -18.2004,-4.0246 -22.3722,-8.6131 -5.885,-6.4728 -10.7879,-18.3823 -13.4489,-25.0822 0,0 8.4494,-3.3558 8.4494,-3.3558 1.9609,4.9371 7.4412,7.8394 11.0821,13.1622 2.3681,3.462 0.7805,8.4996 4.124,11.031 3.156,2.3895 5.6295,-0.533 9.5884,-0.5596 4.0392,-0.027 6.5454,1.5342 10.5191,0.8084 6.5967,-1.205 13.7665,-5.5551 20.4656,-5.2577 4.4123,0.1958 7.6122,2.5275 12.7535,2.1465 0,0 0.7317,9.0593 0.7317,9.0593 m 40.8169,47.7673 c -2.1296,-5.1101 -5.3269,-13.425 -5.1925,-19.2836 0.1025,-4.4691 2.1447,-8.7407 1.9384,-13.2061 -0.1754,-3.785 -0.9988,-4.2715 -3.13,-7.4039 -3.4882,-5.1268 -4.7874,-4.1199 -10.7351,-5.8764 -8.39,-2.4777 -16.5726,-3.3987 -23.7621,-2.866 0,0 -0.6717,-9.0667 -0.6717,-9.0667 5.2978,-0.3926 13.4432,-4.828 19.788,-3.6739 4.1267,0.7506 7.7523,5.8215 11.6398,7.3943 3.6696,1.4847 10.0393,1.3864 12.9674,4.0496 2.9875,2.7173 3.1796,10.8602 3.3706,14.8943 0.3171,6.697 1.5055,12.9991 1.7901,19.6987 0.1876,4.4127 -1.62,7.0293 0.3631,11.788 0,0 -8.366,3.5517 -8.366,3.5517 m 20.6233,82.6585 c -1.4515,-5.3424 -4.1384,-12.1015 -4.675,-17.9374 -0.4093,-4.4517 0.7684,-9.2518 0.3424,-13.702 -0.3615,-3.7721 -1.8951,-6.9337 -2.7086,-10.6349 -1.3315,-6.0577 -2.1966,-10.1765 -4.3269,-16.0011 -3.0052,-8.2165 -5.6781,-18.0638 -8.4512,-24.7182 0,0 8.392,-3.4972 8.392,-3.4972 2.0435,4.9035 8.9373,9.7464 10.8694,15.8988 1.2566,4.0017 -1.2459,8.9481 -0.053,12.9688 1.1257,3.7954 5.5493,6.8152 6.4798,10.6634 0.9494,3.9263 -0.9681,8.513 -0.8266,12.55 0.235,6.7017 3.2936,12.6621 3.8427,19.3454 0.3617,4.402 -1.4816,7.6483 -0.1299,12.6234 0,0 -8.7548,2.441 -8.7548,2.441 m 50.8159,70.654 c -4.5959,-3.086 -10.682,-4.143 -15.6683,-7.222 -3.8036,-2.3488 -9.0399,-8.2015 -11.2703,-12.0742 -1.891,-3.2825 -3.556,-7.9449 -4.9102,-11.4839 -2.2164,-5.7922 -6.201,-7.9294 -9.4446,-13.2146 -4.5756,-7.4555 -6.7918,-19.9307 -8.6819,-26.8876 0,0 8.7735,-2.3837 8.7735,-2.3837 1.3928,5.1265 7.1524,9.7121 9.2272,15.8179 1.3495,3.9713 -0.908,8.0498 1.5596,11.4412 2.3293,3.2014 7.981,4.4591 10.0475,7.8357 2.1084,3.4453 0.013,9.1132 1.2282,12.965 2.0166,6.3942 8.035,5.2757 13.8125,8.6799 3.8054,2.2422 6.0631,6.0738 10.343,8.9476 0,0 -5.0162,7.5787 -5.0162,7.5787 m 85.1212,9.7685 c -4.9182,2.5411 -11.382,6.0958 -17.0184,7.6999 -4.2995,1.2237 -9.648,1.3756 -14.038,2.2191 -3.7211,0.7153 -8.5372,2.7113 -12.3207,2.9161 -6.1926,0.3351 -16.1494,-1.9374 -21.3849,-5.2612 -7.3854,-4.6887 -13.8888,-14.047 -19.8736,-18.0656 0,0 5.0678,-7.5476 5.0678,-7.5476 4.4102,2.9612 12.4776,4.8518 17.1327,9.3149 3.0277,2.9028 2.6525,7.8932 6.4552,9.6605 3.5895,1.6682 6.6637,-1.6654 10.6217,-1.6008 4.0384,0.066 6.6549,2.0338 10.6604,1.5125 6.6494,-0.8655 11.4817,-5.2196 17.934,-7.046 4.2499,-1.203 7.9585,0.5181 12.5385,-1.8483 0,0 4.2253,8.0465 4.2253,8.0465 m 71.4155,-51.0687 c -2.3561,5.0097 -4.802,12.7108 -8.6388,17.1401 -2.9267,3.3789 -9.2876,6.6429 -13.2258,8.7578 -3.3381,1.793 -7.0907,4.73 -10.566,6.2412 -5.688,2.4734 -10.4631,3.6694 -16.0308,6.4014 -7.854,3.8538 -16.9494,8.4452 -23.3539,11.7543 0,0 -4.1732,-8.0768 -4.1732,-8.0768 4.7194,-2.4384 8.1692,-10.0765 13.9824,-12.8679 3.7809,-1.8156 9.2301,0.027 13.1297,-1.5163 3.6811,-1.4568 5.8785,-5.9993 9.523,-7.5462 3.7186,-1.5783 7.7205,-0.5272 11.4602,-2.0538 6.2081,-2.5342 7.4518,-7.1212 11.3975,-12.5432 2.5987,-3.5713 6.0515,-4.8389 8.2456,-9.5041 0,0 8.2501,3.8135 8.2501,3.8135 m 64.9169,-38.0345 c -5.5243,-0.361 -9.3653,0.5413 -15.0204,2.0781 -4.3139,1.1724 -8.2025,1.1235 -12.2512,3.0192 -3.4316,1.6072 -5.6887,4.3752 -8.8805,6.418 -5.2241,3.3432 -9.8999,5.6045 -15.0967,8.9879 -7.3307,4.7726 -11.3882,10.6369 -14.4564,17.1606 0,0 -8.2271,-3.8694 -8.2271,-3.8694 2.2609,-4.8072 2.8843,-15.1972 7.6697,-19.5194 3.1124,-2.8112 9.6682,-2.3476 13.3837,-4.2934 3.5072,-1.8367 4.6154,-6.7621 7.9183,-8.9453 3.37,-2.2275 8.1338,-2.1085 11.836,-3.7237 6.146,-2.6814 12.7442,-8.0566 19.388,-8.9575 4.376,-0.5934 9.1246,2.2355 14.2691,2.5717 0,0 -0.5325,9.0732 -0.5325,9.0732 m 74.7683,-45.266 c -1.538,5.3172 -4.2668,13.2091 -7.7053,17.9544 -2.623,3.6198 -7.5516,7.011 -10.7574,10.1267 -2.7171,2.6413 -5.9115,6.7275 -8.9876,8.9402 -5.0346,3.6216 -13.1828,6.4885 -19.2609,7.7216 -8.5741,1.7395 -20.8064,0.1239 -28.0003,-0.3462 0,0 0.5928,-9.0722 0.5928,-9.0722 5.301,0.3463 10.7825,-2.8297 17.2024,-3.4414 4.1756,-0.3979 8.0858,3.0447 12.157,2.0376 3.8429,-0.9507 5.015,-5.4211 8.4398,-7.4069 3.4945,-2.0262 6.7708,-1.3791 9.8321,-4.0144 5.082,-4.3748 6.5016,-10.0911 10.3905,-15.5537 2.5614,-3.5979 5.9186,-4.4612 7.3509,-9.4128 0,0 8.746,2.4671 8.746,2.4671 m -33.7811,-75.2769 c -1.4514,5.341 -0.5817,6.2666 2.6183,11.176 2.441,3.7451 3.9193,6.7998 7.1419,9.8981 2.7319,2.6261 7.2627,5.4741 9.5592,8.4883 3.7588,4.9333 7.4225,9.7456 10.6462,15.0436 4.5475,7.4734 4.9818,23.5048 2.9789,30.4289 0,0 -8.7322,-2.5258 -8.7322,-2.5258 1.4759,-5.1023 -1.6102,-8.2825 -3.6985,-14.3832 -1.3582,-3.9679 1.0136,-8.2661 -1.2893,-11.7714 -2.1738,-3.3089 -7.4199,-4.0786 -9.78,-7.2572 -2.408,-3.2433 -2.2532,-6.8435 -4.9908,-9.8138 -4.5446,-4.9308 -13.1025,-9.4041 -15.417,-15.6972 -1.5245,-4.1449 0.8275,-10.9372 2.1791,-15.911 0,0 8.7842,2.3247 8.7842,2.3247 m 69.497,-39.3098 c -4.3071,3.478 -10.1393,9.2067 -15.566,11.4185 -4.1397,1.6874 -10.0141,1.7959 -14.3586,2.8498 -3.6824,0.8937 -7.0777,2.8446 -10.7075,3.9326 -5.9409,1.7807 -9.1696,2.2391 -14.3972,5.5752 -7.3743,4.7061 -13.418,8.3501 -15.3081,15.3053 0,0 -8.7713,-2.3836 -8.7713,-2.3836 1.3928,-5.1252 4.1891,-15.8607 9.2916,-19.8041 3.3188,-2.5648 9.5353,-1.9653 13.3598,-3.6861 3.6101,-1.6244 6.3527,-6.2512 10.1032,-7.5191 3.8266,-1.2936 8.4458,0.2674 12.4368,-0.3563 6.6254,-1.0356 10.5118,-4.5109 16.4361,-7.6518 3.9019,-2.0688 7.7135,-1.4747 11.7245,-4.7135 0,0 5.7567,7.0331 5.7567,7.0331 m -5.4139,-81.4101 c 1.2873,5.3838 3.2743,7.4593 7.2849,11.7323 3.0594,3.2596 6.4957,8.6197 8.5773,12.5757 1.7649,3.3531 4.4993,7.4313 5.8739,10.9627 2.2499,5.7798 3.4238,15.9935 1.9095,22.0066 -2.1361,8.4824 -13.1702,18.926 -18.779,23.4551 0,0 -5.7117,-7.0733 -5.7117,-7.0733 4.1331,-3.3374 4.8715,-8.8626 8.2811,-14.3349 2.2177,-3.5592 6.7692,-3.9841 6.9642,-8.1731 0.184,-3.9543 -3.8069,-5.9981 -4.9676,-9.7831 -1.1843,-3.862 -0.1024,-7.4163 -1.4244,-11.2331 -2.1946,-6.3362 -9.7637,-7.6479 -13.5556,-13.1779 -2.4976,-3.6423 -2.0785,-9.7715 -3.2772,-14.7852 0,0 8.8246,-2.1718 8.8246,-2.1718 m -35.7642,-65.7145 c 5.514,-0.4937 13.1377,-2.568 18.9303,-1.6804 4.4187,0.677 13.0671,6.9161 15.1685,10.8603 1.7815,3.343 1.8345,11.5115 1.2363,15.2533 -0.9792,6.124 0.2213,10.1437 0.234,16.3457 0.018,8.7488 -2.3282,18.1272 -0.652,25.1381 0,0 -8.8416,2.114 -8.8416,2.114 -1.2352,-5.1663 -5.7087,-13.2636 -5.1264,-19.6861 0.3787,-4.1772 4.5661,-7.5061 4.5343,-11.7 -0.03,-3.9588 -4.3657,-8.5142 -3.9106,-12.4468 0.4645,-4.0124 4.5345,-5.9701 4.1557,-9.991 -0.6288,-6.6749 -5.6664,-2.6199 -12.3526,-3.1252 -4.4039,-0.3328 -7.3704,-2.4947 -12.5053,-2.0349 0,0 -0.8706,-9.047 -0.8706,-9.047 m -85.8311,17.3707 c 2.3544,-5.0103 13.5677,-15.6065 19.324,-14.5149 4.3911,0.8327 7.6042,4.5913 12.0687,4.786 3.7844,0.1646 6.1289,-1.6399 9.825,-2.476 6.0493,-1.3686 11.553,-2.7327 17.6695,-3.7602 8.6281,-1.4494 19.8411,0.105 27.0216,-0.538 0,0 0.8108,9.0554 0.8108,9.0554 -5.2912,0.4738 -11.6105,4.3137 -18.0464,4.7196 -4.186,0.264 -8.0865,-3.3131 -12.2211,-2.609 -3.9028,0.6647 -6.6358,5.0516 -10.4794,6.0009 -3.9218,0.9685 -8.7844,-0.7737 -12.822,-0.8803 -6.7029,-0.177 -10.6327,-3.7318 -16.8736,-1.2841 -4.1107,1.6123 -5.8336,0.6455 -8.0261,5.3113 0,0 -8.251,-3.8107 -8.251,-3.8107 m -59.5673,-7.3003 c 5.1716,1.9755 12.9885,5.0692 17.4327,8.8888 3.3902,2.9136 5.565,7.6543 8.9176,10.6115 2.8421,2.5064 4.6896,2.6568 8.2741,3.8858 5.8668,2.0114 6.4938,1.4903 12.3555,-0.5347 8.2687,-2.8564 10.3097,-8.6562 13.3757,-15.1807 0,0 8.2281,3.8666 8.2281,3.8666 -2.2593,4.8077 -2.7214,16.3709 -7.9472,20.1476 -3.399,2.4564 -10.6713,1.1698 -14.8193,1.7874 -3.9156,0.5829 -9.3252,4.215 -13.2054,3.43 -3.959,-0.8009 -8.1477,-6.1413 -11.1031,-8.8947 -4.9062,-4.571 -10.1688,-7.3746 -15.5163,-11.4202 -3.5221,-2.6647 -4.3633,-6.236 -9.1793,-8.0757 0,0 3.1869,-8.5117 3.1869,-8.5117 m -64.0969,-43.3256 c 2.3223,5.0252 5.2862,9.7795 8.0781,14.9317 2.1298,3.9302 2.1479,6.8687 5.6532,9.6426 2.9715,2.3509 5.5488,2.4682 9.0754,3.8549 5.772,2.2695 10.3542,3.5978 16.253,5.5129 8.3212,2.7014 17.9918,7.6247 24.7263,10.1972 0,0 -3.2442,8.493 -3.2442,8.493 -4.9626,-1.8956 -12.7099,-0.057 -18.6801,-2.4953 -3.883,-1.586 -5.9879,-6.5295 -9.934,-7.9499 -3.7249,-1.3408 -8.6568,0.9169 -12.3792,-0.4313 -3.798,-1.3756 -6.979,-5.861 -10.1275,-8.391 -5.2269,-4.1999 -12.5095,-10.2468 -14.9703,-16.4845 -1.6208,-4.1085 -0.5126,-8.3334 -2.6752,-13.013 0,0 8.2245,-3.8673 8.2245,-3.8673 m -26.0689,-69.9778 c 1.49,5.33163 0.038,16.18367 -2.6539,21.38884 -2.0537,3.97066 -5.1261,5.38006 -5.4123,9.84056 -0.2421,3.781 1.1368,2.7993 3.6295,5.6532 4.0798,4.6708 7.8285,6.1216 12.7354,9.914 6.922,5.3499 13.9554,17.0028 16.9795,23.5466 0,0 -8.2525,3.8138 -8.2525,3.8138 -2.2284,-4.822 -7.8524,-6.7446 -12.1929,-11.5132 -2.8231,-3.1015 -2.6223,-7.8529 -5.9896,-10.3531 -3.1787,-2.3601 -9.1046,-2.1197 -11.9672,-4.8544 -2.9207,-2.7903 -4.4021,-10.3156 -4.5129,-14.3525 -0.1841,-6.7015 2.0338,-15.33981 5.0663,-21.32032 1.9974,-3.93909 5.2214,-4.29432 3.8339,-9.25935 0,0 8.7367,-2.50413 8.7367,-2.50413 m -73.7657,-46.00609 c 5.4912,0.70088 11.3516,0.54256 17.1828,1.1276 4.4483,0.44626 9.502,2.32961 13.8887,3.18928 3.7184,0.72831 9.6841,1.62773 13.0598,3.34932 5.5251,2.81771 11.9826,7.82471 16.1164,12.44787 5.8312,6.52162 10.7388,19.18356 12.6791,26.12646 0,0 -8.7558,2.44691 -8.7558,2.44691 -1.4298,-5.11615 -6.9974,-7.96768 -10.4054,-13.44195 -2.2166,-3.56054 -0.8775,-8.36658 -3.8216,-11.35339 -2.779,-2.81941 -7.3334,-1.4893 -10.7713,-3.45261 -3.5077,-2.00323 -4.4991,-5.11666 -8.3459,-6.34744 -6.386,-2.04317 -12.5601,0.63495 -19.2041,-0.27477 -4.3761,-0.59914 -7.6,-4.14206 -12.7136,-4.79474 0,0 1.0909,-9.02254 1.0909,-9.02254 m -28.3196,-47.32055 c 2.2511,5.05717 4.9295,19.00172 1.2711,23.57667 -2.7907,3.48992 -7.4198,3.00133 -8.5448,7.3273 -0.9532,3.66697 -0.2659,3.69501 1.2778,7.15457 2.5266,5.66222 3.2014,3.6437 9.206,5.1956 8.4703,2.18916 17.8485,4.01774 24.9992,4.93043 0,0 -1.151,9.01788 -1.151,9.01788 -5.2693,-0.67255 -12.807,3.03822 -19.1218,1.73003 -4.1072,-0.85086 -7.7097,-5.69073 -11.5439,-7.38971 -3.6192,-1.60375 -10.5914,-2.00222 -13.1179,-5.04988 -2.5778,-3.1096 -1.244,-11.99491 -0.2553,-15.91068 1.6412,-6.50051 7.0504,-9.29451 7.8991,-15.94604 0.5589,-4.38106 2.8999,-6.17614 0.8037,-10.88558 0,0 8.2778,-3.75059 8.2778,-3.75059 m -75.4137,-46.23403 c 5.2324,1.8081 11.2773,2.36757 16.8412,4.20834 4.2444,1.40417 8.2125,4.14164 12.4734,5.49468 3.6117,1.14653 7.9136,1.40826 11.517,2.58078 5.8976,1.91904 13.3113,5.99817 17.984,10.07584 6.5916,5.75212 12.871,17.64309 15.8024,24.22858 0,0 -8.3051,3.69676 -8.3051,3.69676 -2.1601,-4.85277 -8.3512,-7.17403 -12.2196,-12.33363 -2.516,-3.35586 -1.6507,-7.95766 -5.0347,-10.43508 -3.1943,-2.33857 -7.418,-0.41055 -11.1249,-1.80104 -3.7823,-1.41876 -5.9772,-4.84951 -9.7464,-6.30223 -6.2571,-2.41159 -13.2495,-1.69555 -19.536,-4.03018 -4.1406,-1.53767 -6.69,-5.08921 -11.5627,-6.77298 0,0 2.9114,-8.60984 2.9114,-8.60984 m -79.6356,-36.10322 c 5.4724,0.83603 13.1156,1.70996 18.5269,3.95996 4.1279,1.71635 8.0805,5.26368 12.0997,7.22094 3.4071,1.6587 7.4776,2.49078 10.9091,4.09864 5.6164,2.63157 10.7851,5.75325 16.0968,8.95509 7.4929,4.51662 14.9048,10.33739 21.7186,12.6919 0,0 -2.9694,8.59299 -2.9694,8.59299 -5.021,-1.73502 -14.2087,-1.24126 -19.5403,-4.86922 -3.4677,-2.35966 -4.4043,-7.80249 -7.9692,-10.01211 -3.365,-2.08578 -8.0796,-0.61779 -11.6498,-2.329 -3.6428,-1.74601 -5.7516,-5.63725 -9.2198,-7.70821 -5.7575,-3.43794 -11.9607,-3.45202 -18.1967,-5.91788 -4.1074,-1.6241 -6.0227,-4.91142 -11.1188,-5.68997 0,0 1.3129,-8.99313 1.3129,-8.99313 m -87.3609,3.44997 c 3.916,-3.91284 16.3627,-8.88707 21.976,-7.20465 4.282,1.28337 8.7309,5.33754 12.775,7.24306 3.4281,1.61485 5.6503,1.43242 9.4136,1.87469 6.1594,0.72386 8.5755,-0.76938 14.5782,-2.32954 8.4676,-2.20084 21.3603,-3.26116 28.4866,-2.17247 0,0 -1.373,8.987 -1.373,8.987 -5.2512,-0.80224 -9.7715,4.32341 -16.1323,5.38511 -4.1371,0.69054 -8.5164,-2.36452 -12.6219,-1.50794 -3.8754,0.80856 -7.8925,5.07326 -11.8474,5.25243 -4.0351,0.18277 -9.3638,-4.07493 -12.9073,-6.01412 -5.8825,-3.21918 -10.2271,-3.97115 -16.9053,-4.56594 -4.3986,-0.39171 -5.3291,-2.20519 -8.9758,1.43861 0,0 -6.4664,-6.38624 -6.4664,-6.38624 m -43.6934,72.46577 c 2.9652,-4.67407 8.5859,-11.14642 13.3563,-14.55066 3.639,-2.59687 7.428,-3.47725 10.4558,-6.76558 2.5661,-2.78759 2.1016,-3.74632 2.7635,-7.47678 1.0832,-6.10559 -0.074,-12.673 1.8242,-18.57603 2.6774,-8.32706 10.8099,-19.38522 15.9093,-24.48056 0,0 6.4258,6.43096 6.4258,6.43096 -3.7577,3.75469 -2.5424,10.78173 -5.7566,16.37234 -2.0906,3.63621 -7.2071,4.27482 -7.7652,8.43142 -0.5269,3.92363 3.2848,7.86248 3.0552,11.81465 -0.2343,4.03245 -5.2912,9.38772 -8.012,12.37231 -4.5168,4.9547 -9.0566,11.25865 -14.5771,15.06504 -3.636,2.50712 -7.2122,1.8273 -9.9735,6.17999 0,0 -7.7057,-4.8171 -7.7057,-4.8171 m -58.2675,50.69952 c 5.403,-1.20565 10.25,-3.68448 15.8087,-5.53921 4.2404,-1.41487 8.0888,-1.47572 11.9905,-3.65789 3.307,-1.85003 5.1147,-4.51031 8.0356,-6.92457 4.7806,-3.95139 6.2036,-6.09536 9.2984,-11.46964 4.3658,-7.58119 10.0085,-16.55502 13.8698,-22.64164 0,0 7.6759,4.86958 7.6759,4.86958 -2.8453,4.48516 -1.951,12.20109 -5.1804,17.78329 -2.1004,3.63073 -7.6268,5.11238 -9.8812,8.6484 -2.1282,3.33784 -2.7399,9.51922 -5.7328,12.11092 -3.0537,2.64434 -8.0935,3.16737 -11.6804,5.02498 -5.9546,3.08382 -12.0427,8.51702 -18.554,10.11904 -4.2887,1.05523 -8.5804,-0.58902 -13.6119,0.53373 0,0 -2.0382,-8.85699 -2.0382,-8.85699 m -81.6589,-4.24857 c 4.9805,2.41694 9.7279,2.58879 15.4466,3.86906 4.3623,0.9766 7.8748,2.97728 12.3347,3.28546 3.7803,0.26085 7.0202,-0.80616 10.8,-1.07728 6.1863,-0.44374 11.806,-0.35911 18.0067,-0.48773 8.7469,-0.18147 18.2248,1.07921 25.2606,-0.4908 0,0 1.98,8.87304 1.98,8.87304 -5.1846,1.15693 -12.6834,6.1333 -19.1289,5.9265 -4.1923,-0.1345 -7.9245,-4.2511 -12.1186,-4.24889 -3.959,0.002 -7.4553,3.65673 -11.4066,3.90532 -4.0315,0.2536 -8.1891,-2.17759 -12.1947,-2.69878 -6.6497,-0.86518 -14.3928,0.71358 -20.7994,-1.2661 -4.2197,-1.30388 -7.456,-5.13629 -12.0941,-7.38705 0,0 3.9137,-8.20275 3.9137,-8.20275 m -30.798,-71.74931 c 1.1641,5.4124 3.643,10.9524 4.9204,16.67199 0.9744,4.36305 0.7271,8.70626 2.0984,12.96123 1.1627,3.60657 3.4385,7.299 4.5569,10.91969 1.8305,5.92593 2.415,10.60335 4.6761,16.37743 3.1897,8.14515 7.6803,12.45526 14.1659,15.60262 0,0 -3.9692,8.17915 -3.9692,8.17915 -4.7792,-2.31926 -15.6656,-4.69286 -19.15,-10.1188 -2.2663,-3.5291 -0.7032,-10.13045 -1.8088,-14.1759 -1.0435,-3.81873 -5.4171,-6.55403 -6.5042,-10.36107 -1.1092,-3.88438 0.438,-7.81315 -0.5378,-11.73275 -1.6201,-6.50685 -6.0968,-12.34831 -7.3214,-18.94151 -0.8067,-4.34261 1.0849,-8.37187 8e-4,-13.41212 0,0 8.8729,-1.96996 8.8729,-1.96996 m -24.6438,-84.46676 c 2.4264,4.97578 6.2371,10.60671 8.2437,16.11269 1.5307,4.20011 1.6791,9.25212 3.1285,13.48108 1.229,3.58451 3.5823,7.05518 4.8552,10.62458 2.0834,5.84198 3.6006,12.18788 4.6899,18.29357 1.5367,8.61294 1.359,19.08991 2.8749,26.138 0,0 -8.8885,1.91168 -8.8885,1.91168 -1.117,-5.19366 -6.4594,-11.64119 -7.0071,-18.06697 -0.3562,-4.17941 3.1297,-8.17822 2.3702,-12.30297 -0.7169,-3.89358 -5.0342,-6.12654 -6.3314,-9.86719 -1.3234,-3.81665 -0.1035,-8.03601 -1.0741,-11.95708 -1.6113,-6.5093 -6.3947,-11.37001 -8.462,-17.74904 -1.3617,-4.20155 -0.2821,-7.94708 -2.5416,-12.58073 0,0 8.1423,-4.03762 8.1423,-4.03762 m -52.6994,-68.93925 c 2.912,4.70809 7.0954,6.8246 11.3901,10.81217 3.2762,3.04181 5.816,7.15955 9.1084,10.18362 2.791,2.56305 6.9358,5.40231 9.3906,8.2894 4.0177,4.72527 7.7661,10.08493 10.9374,15.41489 4.4736,7.51867 7.9302,18.14145 11.09,24.62096 0,0 -8.1715,3.98477 -8.1715,3.98477 -2.3283,-4.77468 -9.0349,-8.84291 -11.7304,-14.70144 -1.7532,-3.81047 0.1916,-8.72961 -1.9729,-12.322 -2.0431,-3.39106 -6.9468,-3.89418 -9.4848,-6.93286 -2.5896,-3.10043 -2.6187,-7.08538 -5.3149,-10.09299 -4.476,-4.99285 -11.5757,-6.9869 -16.0987,-11.93763 -2.9791,-3.26077 -4.1291,-8.1028 -6.8408,-12.48717 0,0 7.6975,-4.83172 7.6975,-4.83172 m -18.7723,-76.12497 c 5.5349,-0.0861 18.8145,3.25752 21.6418,8.38881 2.1567,3.91428 0.2596,13.77958 -0.9384,18.08633 -1.0152,3.65068 -0.7898,6.78968 -1.1781,10.55875 -0.6357,6.16876 -1.0088,12.02425 -2.1362,18.12283 -1.5903,8.60292 -3.1495,15.29551 0.6424,21.42643 0,0 -7.7318,4.78205 -7.7318,4.78205 -2.7942,-4.51781 -9.3563,-14.20239 -8.3461,-20.57131 0.657,-4.14242 5.5014,-7.47494 6.3147,-11.58947 0.7677,-3.88393 -2.3929,-7.35971 -2.3485,-11.3185 0.045,-4.03922 3.7242,-8.36713 5.0396,-12.18615 2.1837,-6.3399 2.9282,-7.92487 -2.1268,-12.32719 -3.3295,-2.89956 -3.4766,-4.36703 -8.631,-4.28686 0,0 -0.2016,-9.08572 -0.2016,-9.08572 m -75.47618,-32.37624 c 5.52838,0.28232 13.76148,0.56512 19.22928,2.67211 4.171,1.60725 9.1126,6.50303 12.5498,9.36089 2.9137,2.42215 6.7386,4.65618 9.5595,7.18668 4.6169,4.14163 6.8745,7.2492 12.2244,10.38576 7.5468,4.42455 14.7192,3.7538 21.9268,3.6417 0,0 0.1414,9.08965 0.1414,9.08965 -5.3112,0.0826 -14.1972,5.34053 -20.3629,3.45269 -4.0103,-1.22786 -7.2774,-7.44659 -10.4993,-10.13146 -3.0413,-2.53439 -8.3996,-2.54042 -11.3234,-5.20991 -2.9832,-2.72375 -3.7433,-7.02012 -6.5533,-9.92178 -4.6648,-4.81699 -9.5293,-4.63202 -15.9151,-6.67887 -4.2061,-1.34812 -6.2323,-4.50562 -11.38047,-4.76852 0,0 0.40329,-9.07894 0.40329,-9.07894 M 3023.66,622.80842 c 5.5349,0.086 10.7288,0.24685 16.5586,-0.34779 4.4471,-0.45363 6.0927,0.2003 9.5557,-2.62678 2.9351,-2.39664 3.9212,-5.27831 6.2581,-8.26158 3.8247,-4.88269 8.9794,-10.60675 14.1072,-14.09502 7.2336,-4.92072 21.8415,-5.80715 29.0406,-6.175 0,0 0.4639,9.07884 0.4639,9.07884 -5.3049,0.27107 -9.8233,4.63328 -16.0178,6.42435 -4.029,1.16494 -7.7308,-1.2535 -10.9823,1.39498 -3.0692,2.50005 -2.4134,7.40375 -4.8821,10.49897 -2.5189,3.15808 -7.1942,4.72333 -10.356,7.23653 -5.2489,4.17215 -14.3853,10.29967 -21.0642,9.70278 -4.3991,-0.3931 -7.6083,-3.66261 -12.7626,-3.74269 0,0 0.081,-9.08759 0.081,-9.08759 m -18.739,76.11826 c 2.9139,-4.70688 2.5091,-7.76186 2.7197,-13.61795 0.1606,-4.46719 0.8916,-7.87492 0.069,-12.2692 -0.6977,-3.7247 -2.6684,-7.6208 -3.3377,-11.35071 -1.0956,-6.10467 -3.7912,-10.99518 -4.782,-17.11676 -1.3978,-8.63535 16.8489,-21.00473 24.0565,-20.89274 0,0 -0.1412,9.08965 -0.1412,9.08965 -5.3113,-0.0825 -6.4434,0.0483 -9.3711,5.79242 -1.9042,3.73603 -4.8739,4.19537 -3.7848,8.24533 1.0281,3.82298 5.9107,6.46668 6.965,10.28228 1.0756,3.89313 -1.018,8.34394 -0.5157,12.3521 0.8339,6.65389 4.9241,14.78152 3.6083,21.35579 -0.8665,4.33017 -5.0135,8.47901 -7.727,12.86225 0,0 -7.759,-4.73246 -7.759,-4.73246 m -52.7015,68.93768 c 2.4243,-4.97684 4.6417,-11.52169 7.8255,-16.44186 2.4286,-3.75325 6.0716,-6.83834 8.415,-10.64541 1.9861,-3.22723 3.1359,-7.18807 5.0496,-10.45899 3.1321,-5.35348 8.3369,-11.39627 13.106,-15.36118 6.7274,-5.59308 15.2515,-9.44241 19.046,-15.57175 0,0 7.7298,4.78527 7.7298,4.78527 -2.7961,4.51665 -6.3345,13.5096 -11.6427,17.17191 -3.4526,2.38201 -8.6666,1.215 -11.7851,4.01934 -2.9438,2.64717 -1.842,7.03891 -3.8712,10.43851 -2.0705,3.46866 -6.1121,5.2542 -8.5047,8.50889 -3.9718,5.40307 -4.927,12.15482 -8.6097,17.75888 -2.4256,3.69115 -6.304,5.08751 -8.5616,9.72215 0,0 -8.1969,-3.92576 -8.1969,-3.92576 m -24.6644,84.4577 c 1.1661,-5.41199 1.2634,-11.64587 2.5949,-17.35318 1.0157,-4.3537 3.3891,-8.41364 4.2448,-12.80154 0.7249,-3.71944 0.3055,-7.83929 0.9384,-11.57567 1.0358,-6.11528 2.8221,-12.49139 4.9257,-18.32576 2.9673,-8.23021 9.5868,-17.53922 12.7437,-24.0201 0,0 8.1732,3.98125 8.1732,3.98125 -2.3264,4.77569 -1.5317,12.65083 -4.5854,18.33072 -1.9861,3.69426 -6.8602,5.08132 -8.2608,9.03454 -1.3222,3.73166 1.4074,7.77816 0.712,11.67578 -0.7096,3.97679 -3.8605,6.99496 -4.8715,10.90585 -1.6784,6.4924 -0.3943,13.47238 -2.1525,19.94384 -1.158,4.26245 -4.4791,7.01977 -5.5649,12.05964 0,0 -8.8976,-1.85537 -8.8976,-1.85537 m -30.7706,71.76342 c 4.9805,-2.41695 7.7684,-5.06749 11.8329,-9.28865 3.1005,-3.22004 4.8791,-4.25828 6.0961,-8.55968 1.0312,-3.64615 0.3077,-6.94905 0.7268,-10.71546 0.6859,-6.16442 2.4097,-12.87037 4.4044,-18.7429 2.8138,-8.28405 7.0436,-17.22571 8.562,-24.27326 0,0 8.8878,1.91491 8.8878,1.91491 -1.119,5.19326 0.9864,13.4438 -1.3078,19.47092 -1.4922,3.92012 -6.6094,6.08387 -7.9363,10.06249 -1.2525,3.75563 1.6278,7.61686 1.1046,11.5412 -0.5339,4.00406 -3.5075,7.53603 -4.6867,11.39939 -1.9576,6.41352 -4.8001,16.52496 -10.249,20.43308 -3.589,2.57413 -8.7746,2.65733 -13.4126,4.9081 0,0 -4.0222,-8.15014 -4.0222,-8.15014 m -81.6585,4.25366 c 5.403,1.20566 10.8537,0.77235 16.6775,1.42555 4.4427,0.49825 8.4182,2.16101 12.8885,2.20845 3.7891,0.0398 7.1444,-1.37411 10.9136,-1.76567 6.169,-0.64086 11.5272,-1.07525 17.7074,-1.59397 8.7181,-0.73175 17.3662,-0.59699 23.8518,-3.74437 0,0 3.9692,8.17915 3.9692,8.17915 -4.7792,2.31927 -12.105,8.58488 -18.5348,9.07761 -4.182,0.32048 -8.4683,-3.40648 -12.6551,-3.15955 -3.9521,0.23308 -7.3753,4.25448 -11.3166,4.62898 -4.0214,0.38208 -8.041,-1.84634 -12.076,-2.03534 -6.6984,-0.31373 -14.0231,1.89489 -20.624,0.71343 -4.3477,-0.77812 -7.6905,-3.92827 -12.722,-5.05103 0,0 1.9205,-8.88324 1.9205,-8.88324 m -58.2709,-50.6949 c 2.9652,4.67408 6.9907,10.70658 9.1684,16.14751 1.6612,4.15048 1.6223,7.95037 4.1606,11.63024 2.1519,3.11899 3.9566,3.43475 7.1925,5.40689 5.2962,3.22777 9.3292,5.529 14.8542,8.34666 7.7939,3.97469 15.6696,8.44372 22.7055,10.01374 0,0 -1.98,8.87305 -1.98,8.87305 -5.1846,-1.15693 -14.1107,0.42174 -19.8722,-2.47457 -3.7474,-1.8838 -5.5573,-7.38039 -9.1969,-9.46443 -3.4356,-1.96724 -8.6184,-0.73843 -12.0455,-2.72063 -3.4968,-2.0225 -6.182,-7.51802 -8.3916,-10.89936 -3.6683,-5.61328 -8.8387,-11.39823 -11.2175,-17.66767 -1.5669,-4.12935 -0.2573,-7.91988 -3.0187,-12.27258 0,0 7.6412,-4.91885 7.6412,-4.91885 m -43.7009,-72.46973 c 3.9127,3.91609 8.9551,11.04298 11.115,16.49071 1.6476,4.15567 2.5478,10.3698 3.1048,14.80532 0.4725,3.75969 1.6911,7.04685 2.5398,10.73986 1.3891,6.04429 3.0586,6.16555 7.6136,10.3745 6.4255,5.93731 14.7309,14.43927 18.5922,20.5259 0,0 -7.6759,4.86958 -7.6759,4.86958 -2.8454,-4.48517 -9.9953,-5.03261 -14.6539,-9.49215 -3.03,-2.90054 -3.3772,-8.48697 -6.1865,-11.60045 -2.6518,-2.93898 -8.9098,-5.60553 -10.2408,-9.33333 -1.358,-3.80354 0.801,-9.12026 0.6657,-13.15742 -0.2247,-6.70202 -5.0908,-10.35416 -7.58,-16.58042 -1.6396,-4.10091 -0.037,-7.52914 -3.6805,-11.17596 0,0 6.3865,-6.46614 6.3865,-6.46614 m -87.3637,-3.45133 c 5.4724,-0.83603 14.5683,-0.55445 20.1508,1.22856 4.2584,1.3601 7.8009,4.03416 12.1676,4.99129 3.7015,0.81092 5.7851,-0.21859 9.5467,-0.67625 6.1565,-0.74905 8.3219,-3.4709 13.9389,-6.10078 7.9235,-3.70985 25.8483,-0.47541 30.9435,4.62416 0,0 -6.4312,6.42563 -6.4312,6.42563 -3.7546,-3.75781 -6.0221,-1.47909 -12.3526,-0.25036 -4.1175,0.79919 -7.8609,-1.71046 -11.6494,0.089 -3.5762,1.69857 -6.3835,7.0364 -10.1844,8.14309 -3.8782,1.12914 -9.9328,-1.56594 -13.8633,-2.49623 -6.525,-1.54434 -13.2987,-1.48998 -19.7641,-3.26781 -4.2585,-1.17093 -5.9743,-4.51387 -11.0705,-3.73532 0,0 -1.432,-8.97493 -1.432,-8.97493 m -79.6355,36.10443 c 5.2325,-1.8081 9.6687,-4.74176 14.9361,-7.3105 4.0181,-1.95953 8.3243,-2.69217 12.1477,-5.00901 3.2407,-1.96417 5.6699,-5.01777 8.7688,-7.19891 5.0721,-3.56986 10.9557,-7.11464 16.6551,-9.56008 8.0399,-3.44965 20.1331,-5.07618 27.2593,-6.16487 0,0 1.373,8.987 1.373,8.987 -5.2513,0.80224 -9.9061,5.97708 -16.0944,7.79088 -4.0249,1.17972 -8.4808,-1.44586 -12.2698,0.35225 -3.5766,1.69733 -4.4947,6.55584 -7.7522,8.80608 -3.3237,2.29593 -7.7882,2.25883 -11.3389,4.1851 -5.8943,3.1978 -10.8318,8.97183 -17.0468,11.48977 -4.0935,1.65848 -8.7399,0.51898 -13.6126,2.20275 0,0 -3.0253,-8.57046 -3.0253,-8.57046 m -75.4102,46.23808 c 2.251,-5.05717 5.8911,-12.81949 10.0419,-16.95628 3.1664,-3.15567 8.48,-5.71121 12.1135,-8.31543 3.0797,-2.20775 6.5383,-5.60754 9.8171,-7.50759 5.3664,-3.1098 12.1713,-5.71508 18.1579,-7.33565 8.4449,-2.28607 18.7505,-2.9453 25.5643,-5.29983 0,0 2.9693,8.59299 2.9693,8.59299 -5.021,1.73502 -11.0362,7.57937 -17.3761,8.75991 -4.1236,0.76784 -8.4443,-2.41918 -12.4542,-1.19018 -3.7852,1.16011 -5.2947,5.7471 -8.8045,7.57851 -3.5812,1.86859 -7.3632,1.21926 -10.8589,3.24324 -5.803,3.35999 -7.8112,8.70864 -12.3689,13.62733 -3.0018,3.23973 -6.3783,3.73405 -8.4746,8.4435 0,0 -8.3268,-3.64052 -8.3268,-3.64052 m -28.3238,47.31521 c 5.4912,-0.70088 11.8185,-1.99847 17.6681,-2.35286 4.4623,-0.27037 7.4509,1.05121 11.5558,-0.71845 3.4794,-1.5004 2.9981,-1.73055 4.6224,-5.15242 2.6586,-5.60052 3.3344,-4.02509 -0.6483,-8.77741 -5.6182,-6.70381 -7.0099,-23.37437 -4.0785,-29.95987 0,0 8.305,3.69678 8.305,3.69678 -2.16,4.85278 -3.0044,6.29335 1.1106,11.25787 2.6764,3.22899 3.4694,9.17896 4.4839,13.24785 0.9576,3.84084 5.0578,9.85217 4.0657,13.6837 -1.0123,3.90936 -8.4589,8.36213 -12.1786,9.93596 -6.1751,2.61272 -14.1929,6.17342 -20.8987,6.12382 -4.4168,-0.0326 -7.6833,-2.63038 -12.797,-1.9777 0,0 -1.2104,-9.00727 -1.2104,-9.00727 m -73.7608,46.01213 c 1.49,-5.33164 4.2977,-13.45282 7.8466,-18.11594 2.7071,-3.55717 7.6588,-6.92786 10.9567,-9.94565 2.7953,-2.55829 5.4652,-6.33289 8.3992,-8.73104 4.8021,-3.92502 14.1784,-7.33366 20.3526,-7.91975 8.7096,-0.82679 19.1653,0.47696 26.316,-0.43573 0,0 1.151,9.01788 1.151,9.01788 -5.2693,0.67255 -12.4098,5.71682 -18.854,5.46892 -4.1913,-0.16124 -7.4634,-4.25177 -11.5867,-3.4868 -3.8923,0.72209 -4.4668,4.72438 -7.6471,7.08216 -3.245,2.40566 -7.1388,2.28277 -10.2779,4.82473 -5.2112,4.21988 -6.6346,9.91061 -10.6039,15.31473 -2.6144,3.55946 -5.8958,4.34952 -7.2833,9.31456 0,0 -8.7692,-2.38807 -8.7692,-2.38807 m -26.07,69.97762 c 2.3224,-5.0252 6.3079,-13.3156 10.8325,-17.0392 3.4515,-2.8405 8.5334,-4.5453 12.1494,-7.174 3.0649,-2.2285 4.0646,-4.4037 6.3333,-7.4389 3.7132,-4.9675 3.9091,-3.6733 2.0223,-9.5812 -2.6617,-8.33384 -6.3688,-21.56696 -4.4286,-28.50987 0,0 8.7559,2.44691 8.7559,2.44691 -1.4298,5.11615 4.3861,7.81693 6.4635,13.92157 1.3512,3.97054 -0.4888,9.53759 -0.2626,13.72479 0.2136,3.9525 1.6881,10.9316 -0.3866,14.3032 -2.1168,3.4401 -7.9324,5.4703 -11.2848,7.7237 -5.5654,3.7408 -8.7466,8.4588 -13.5272,13.1609 -3.1488,3.097 -6.2294,3.5403 -8.392,8.2199 0,0 -8.2751,-3.7578 -8.2751,-3.7578 m -64.1009,43.3215 c 5.1716,-1.9755 11.3307,-5.0083 17.0176,-6.4241 4.3381,-1.08 8.7555,-0.7136 12.9767,-2.1852 3.578,-1.2477 5.8899,-3.4162 9.1901,-5.2788 5.4013,-3.0485 8.0583,-4.2707 12.2211,-8.8678 5.8723,-6.4848 10.462,-13.6564 13.4861,-20.2002 0,0 8.2525,3.8138 8.2525,3.8138 -2.2284,4.822 -1.759,13.9401 -5.6119,19.111 -2.506,3.3632 -8.7114,4.554 -12.0261,7.123 -3.1288,2.4251 -4.6441,7.9051 -8.0378,9.9439 -3.4626,2.0801 -8.6674,1.7051 -12.5549,2.8021 -6.4536,1.8212 -12.2891,6.1752 -18.8506,7.5594 -4.3217,0.9118 -7.9473,-0.7681 -12.7633,1.0716 0,0 -3.2995,-8.4687 -3.2995,-8.4687 m -59.5635,7.2905 c 2.3545,5.0103 4.4323,8.9726 8.0791,13.5592 2.7819,3.4988 2.8741,4.3064 7.2887,5.0092 3.7421,0.5954 4.5548,-0.5752 8.0932,-1.9312 5.7912,-2.2192 6.9291,-4.8797 11.4675,-9.107 6.4019,-5.9633 18.2114,-11.4344 24.9459,-14.007 0,0 3.2442,8.493 3.2442,8.493 -4.9626,1.8957 -7.6524,7.6849 -12.9532,11.3574 -3.4477,2.3887 -8.3712,1.51 -11.4576,4.3497 -2.9134,2.6806 -4.6452,8.6796 -8.1258,10.5659 -3.5514,1.9246 -10.7065,0.7074 -14.6867,0.02 -6.6075,-1.1413 -18.3052,-5.0383 -21.1497,-11.1101 -1.8736,-3.9991 -0.7528,-8.6133 -2.9453,-13.2791 0,0 8.1997,-3.9198 8.1997,-3.9198 m -85.8357,-17.3643 c 5.514,0.4937 12.2165,-0.5756 17.9898,0.4308 4.404,0.7678 8.7707,3.2326 13.17,4.0276 3.7292,0.6734 7.3113,0.067 11.09,0.3537 6.1845,0.4696 8.7807,1.9712 14.7194,0.1848 8.3775,-2.5199 25.0122,6.2134 28.0782,12.7379 0,0 -8.2281,3.8665 -8.2281,3.8665 -2.2593,-4.8078 -2.6013,-5.3479 -9.0066,-4.6059 -4.166,0.4826 -8.4408,-1.7507 -12.6309,-1.6102 -3.9552,0.1325 -8.2152,3.3428 -12.168,3.1207 -4.0331,-0.2267 -7.801,-3.3161 -11.7255,-4.273 -6.515,-1.5885 -12.9786,-0.2863 -19.5797,-1.4661 -4.3478,-0.7771 -7.3243,-3.2492 -12.4592,-3.709 0,0 0.7506,-9.0578 0.7506,-9.0578 m -35.7583,65.7232 c 1.2873,-5.3839 0.322,-10.4067 0.6345,-16.2587 0.2383,-4.464 1.8073,-8.8837 1.8863,-13.3535 0.067,-3.7887 -0.4948,-5.8796 -1.5477,-9.5197 -1.7233,-5.9576 -0.9963,-20.8064 4.01,-24.465 7.062,-5.161 23.517,-1.9016 30.6975,-1.2587 0,0 -0.8108,9.0554 -0.8108,9.0554 -5.2912,-0.4738 -11.0082,2.2955 -17.4488,2.6172 -4.189,0.2092 -6.7027,-3.738 -8.7113,-0.058 -1.896,3.4739 3.4377,4.7319 4.7014,8.4837 1.2892,3.8279 -0.8018,9.5458 -1.2282,13.5627 -0.7078,6.6683 2.1575,13.4669 1.3133,20.1191 -0.556,4.3814 -3.4448,8.1162 -4.6435,13.1299 0,0 -8.8527,-2.0546 -8.8527,-2.0546 m -5.4199,81.4137 c -4.3045,-3.4811 -11.1669,-9.1155 -13.8969,-14.3001 -2.0826,-3.955 -2.6974,-11.6174 -2.8602,-16.0844 -0.1384,-3.7865 -0.8198,-9.0242 -0.3241,-12.7811 0.8115,-6.1488 4.2344,-15.9058 8.4702,-20.4357 5.9752,-6.39 13.2018,-10.599 14.8781,-17.6099 0,0 8.8415,2.1139 8.8415,2.1139 -1.2352,5.1663 -2.9293,16.4042 -7.9708,20.4256 -3.279,2.6156 -8.3535,1.4002 -10.5778,4.9545 -2.0997,3.3552 0.8851,7.2568 0.08,11.1331 -0.8219,3.955 -3.5294,6.1796 -3.8477,10.2061 -0.5283,6.6843 3.1315,9.2868 6.7806,14.912 2.4035,3.705 2.087,7.1196 6.0956,10.3614 0,0 -5.6682,7.1046 -5.6682,7.1046 m 69.5051,39.2984 c -1.4515,-5.3411 -4.7789,-7.0881 -8.6986,-11.4446 -2.99,-3.3232 -3.9096,-5.8992 -7.9678,-7.7737 -3.4402,-1.5885 -6.2248,-0.8244 -9.9661,-1.4261 -6.1234,-0.9847 -12.3332,-1.7008 -18.2825,-3.4522 -8.3925,-2.4707 -18.4369,-11.3458 -24.0423,-15.8791 0,0 5.7169,-7.069 5.7169,-7.069 4.1306,3.3405 10.4252,3.6414 16.1079,6.6898 3.6962,1.9827 4.9303,6.6418 8.9961,7.6709 3.838,0.9714 7.8535,-2.114 11.7817,-1.6217 4.008,0.5025 7.9826,3.9225 11.6858,5.5355 6.1478,2.6777 14.9576,6.6711 18.8361,12.1412 2.5546,3.6029 3.2338,9.2142 4.5854,14.1881 0,0 -8.7526,2.4409 -8.7526,2.4409 m -33.812,75.2665 c -1.5421,-5.3161 -2.56,-16.1279 -0.2115,-21.4962 1.7914,-4.095 6.075,-8.3831 8.5705,-12.0924 2.1149,-3.1443 3.012,-6.5194 4.7366,-9.8938 2.8225,-5.5227 8.2665,-11.3687 12.8051,-15.5956 6.4022,-5.9626 10.6417,-9.4617 8.7517,-16.4169 0,0 8.7713,-2.3836 8.7713,-2.3836 1.3928,5.1253 2.8022,18.7041 -1.7026,23.3175 -2.93,3.0007 -8.9397,2.8127 -11.9921,5.6888 -2.8814,2.715 -1.9233,6.6643 -3.7681,10.1672 -1.8822,3.5741 -6.1463,5.7165 -8.5994,8.9259 -4.0722,5.3279 -4.7049,10.0964 -6.4846,16.5614 -1.1721,4.2582 -3.6024,5.6777 -2.1664,10.6282 0,0 -8.7105,2.5895 -8.7105,2.5895 m 74.7697,45.2781 c -5.5244,0.3609 -13.3319,1.944 -19.0793,0.8034 -4.3843,-0.87 -8.9346,-3.6197 -13.263,-4.7369 -3.6691,-0.9466 -8.548,-1.476 -12.0957,-2.8078 -5.8064,-2.1797 -12.9359,-7.9926 -17.0131,-12.6659 -5.7515,-6.5924 -10.4741,-19.1909 -12.4822,-26.1136 0,0 8.7303,-2.5324 8.7303,-2.5324 1.4797,5.1012 7.2973,8.0952 10.5336,13.673 2.1049,3.6279 0.6712,8.3172 3.5508,11.3664 2.7182,2.8783 6.9333,1.3479 10.4855,3.0957 3.6243,1.7832 5.2401,4.8293 9.0368,6.2084 6.3029,2.2893 11.928,1.3546 18.5886,2.1286 4.387,0.5098 7.2105,2.8519 12.355,2.5157 0,0 0.6527,9.0654 0.6527,9.0654 m 64.918,38.0103 c -2.3522,-5.0115 -5.0535,-8.8562 -8.5712,-13.543 -2.6834,-3.5752 -3.556,-5.7332 -7.4952,-7.847 -3.3393,-1.7914 -7.1098,-2.4081 -10.5736,-3.9454 -5.6691,-2.5162 -10.4157,-4.8594 -16.061,-7.4275 -7.9636,-3.6226 -15.08,-6.5867 -22.2738,-6.1166 0,0 -0.5928,-9.0723 -0.5928,-9.0723 5.3011,-0.3464 15.2532,-3.6759 21.1697,-1.1106 3.8482,1.6685 5.9015,7.1101 9.6816,8.9268 3.5684,1.7148 8.3509,0.07 11.9928,1.6225 3.716,1.5841 6.1137,5.6647 9.5514,7.786 5.7068,3.5216 14.6765,7.5375 17.8465,13.4467 2.0879,3.8921 1.337,8.6973 3.5275,13.3643 0,0 -8.2019,3.9161 -8.2019,3.9161 m 71.3971,51.0817 c -4.9172,-2.5429 -11.2001,-5.6581 -15.942,-9.1016 -3.6172,-2.6268 -5.5256,-5.4779 -9.7211,-7.0214 -3.5565,-1.308 -7.1633,-1.101 -10.849,-1.9822 -6.0325,-1.4422 -13.8061,-4.4398 -18.843,-8.0569 -7.1052,-5.1025 -12.1903,-18.7636 -15.2534,-25.2897 0,0 8.2301,-3.8629 8.2301,-3.8629 2.2572,4.809 7.5302,8.0314 11.2734,13.2821 2.4347,3.4151 1.2012,7.8069 4.8765,9.8267 3.4693,1.9066 7.6344,-0.5321 11.4516,0.518 3.8947,1.0714 6.9772,4.2947 10.6771,5.9156 6.1421,2.6909 14.074,4.3782 19.3543,8.5117 3.4779,2.7225 4.2875,6.7923 8.8667,9.1603 0,0 -4.1212,8.1003 -4.1212,8.1003 m 85.1332,-9.736 c -4.5962,3.0856 -8.1546,7.7552 -12.8245,11.2959 -3.5623,2.7009 -9.4226,4.7959 -13.4952,6.6377 -3.4519,1.5614 -9.0783,4.1027 -12.8396,4.5603 -6.1562,0.7489 -14.4929,-0.1778 -20.4596,-1.8697 -8.4169,-2.3867 -18.7109,-8.3505 -25.1142,-11.6619 0,0 4.1761,-8.0753 4.1761,-8.0753 4.7185,2.4401 12.2116,0.8647 18.097,3.5003 3.828,1.7142 5.4582,6.5877 9.5344,7.5746 3.8477,0.9316 6.9042,-2.5927 10.8569,-2.8121 4.033,-0.2239 6.4326,1.8964 10.2812,0.6703 6.3892,-2.0355 8.8996,-7.6447 14.3412,-11.5637 3.5842,-2.5814 8.0506,-2.895 12.3307,-5.7684 0,0 5.1156,7.512 5.1156,7.512 m 50.8399,-70.6376 c -1.4515,5.3425 -2.7753,12.7236 -5.4363,17.9449 -2.0298,3.9829 -6.3178,8.0668 -8.9843,11.6551 -2.26,3.0418 -2.7406,5.6403 -4.1561,9.1552 -2.3168,5.7528 -3.1896,14.6636 -7.6655,18.9549 -6.3139,6.0535 -19.098,8.1862 -25.0832,12.2043 0,0 -5.0672,-7.5481 -5.0672,-7.5481 4.4104,-2.9608 9.3516,-9.0077 15.1667,-11.795 3.7822,-1.8129 8.2772,0.8695 10.4063,-2.7424 2.0097,-3.4095 -1.9066,-7.5584 -1.1236,-11.439 0.799,-3.9594 6.1127,-7.9075 8.7046,-11.0057 4.3029,-5.1434 4.8091,-10.8383 7.6499,-16.9126 1.871,-4.0009 5.3466,-5.934 6.8232,-10.8734 0,0 8.7655,2.4018 8.7655,2.4018 m 20.5964,-82.6747 c -2.1261,5.1115 -3.9262,11.4426 -6.5905,16.6626 -2.0323,3.9819 -4.7769,6.7848 -6.0897,11.058 -1.1125,3.6223 -0.2791,6.5418 -0.5476,10.3218 -0.4394,6.1866 -0.5657,11.7138 -1.2335,17.8799 -0.942,8.6982 -5.0856,19.5671 -6.9757,26.524 0,0 -8.7735,-2.3837 -8.7735,-2.3837 1.3928,-5.1265 -0.9465,-11.9628 0.38,-18.2738 0.8627,-4.1047 5.3592,-6.9183 5.801,-11.0891 0.4169,-3.937 -3.0683,-7.8622 -2.8704,-11.8163 0.202,-4.0345 3.2537,-8.1778 4.5074,-12.0175 2.0811,-6.3742 2.7386,-14.1359 6.0007,-19.995 2.1485,-3.8591 5.9972,-5.5455 7.9771,-10.3056 0,0 8.4147,3.4347 8.4147,3.4347 m 40.8243,-47.7929 c -5.521,-0.4091 -10.8212,0.2092 -16.6778,0.4211 -4.4675,0.1617 -7.388,-0.8786 -11.5484,0.756 -3.5265,1.3859 -3.2855,2.4103 -5.3724,5.5723 -3.4156,5.1752 -1.7696,6.6098 -1.7008,12.8114 0.097,8.7483 -3.5606,21.2412 -6.3292,27.8975 0,0 -8.3943,-3.4914 -8.3943,-3.4914 2.0401,-4.905 -0.2762,-10.2543 0.2236,-16.6835 0.3251,-4.1816 4.2331,-7.7453 4.474,-11.9321 0.2273,-3.9521 -2.5726,-10.2296 -0.9169,-13.8249 1.6894,-3.6684 8.7249,-6.5891 12.3917,-8.2822 6.0873,-2.8108 14.7644,-6.4932 21.4491,-5.9623 4.4028,0.3497 7.8715,3.2689 13.0129,3.6499 0,0 -0.6115,9.0682 -0.6115,9.0682 m 78.5424,-26.6827 c -2.0434,5.1451 -4.7396,13.3414 -8.7072,17.6545 -3.0265,3.2902 -7.879,6.6714 -11.4699,9.3335 -3.0436,2.2569 -9.6874,5.9312 -13.451,6.3725 -6.1598,0.7222 -14.2288,-1.2 -20.2151,-2.821 -8.4445,-2.2866 -17.4453,-4.1928 -24.6348,-4.7255 0,0 0.6718,-9.0668 0.6718,-9.0668 5.2978,0.3926 13.1427,-3.4412 19.4408,-2.0583 4.0964,0.8994 7.1437,6.1189 11.1855,7.2389 3.8153,1.0573 6.7533,-1.8171 10.7067,-2.0152 4.0338,-0.2021 5.8315,1.9291 9.461,0.1577 6.0253,-2.9408 6.8277,-8.6026 10.8783,-13.9463 2.6679,-3.5197 5.7622,-4.6314 7.6651,-9.4227 0,0 8.4688,3.2987 8.4688,3.2987 m 61.935,-24.701 c -5.5215,0.4014 -9.9604,2.2522 -15.5957,3.8604 -4.2987,1.2269 -6.4938,0.098 -9.4304,3.4681 -2.4888,2.8571 -4.175,7.4513 -6.827,10.158 -4.3405,4.43 -19.5232,-1.2191 -24.0645,-5.4414 -6.4062,-5.9561 -4.1659,5.6345 -6.8269,12.3344 0,0 -8.4494,-3.3558 -8.4494,-3.3558 1.9608,-4.9371 4.3081,-18.2807 10.3018,-20.6543 3.8983,-1.5438 12.3931,4.5823 14.6535,8.1148 2.1338,3.3345 1.1392,1.6199 4.5128,-0.4507 3.4421,-2.1127 5.4504,-2.4901 8.1791,-5.4686 4.5299,-4.9444 12.2923,-11.366 18.9008,-12.5038 4.3527,-0.7495 8.785,1.2525 13.9269,0.8787 0,0 0.719,9.0602 0.719,9.0602 m 72.5802,30.6297 c -3.8645,-3.964 -8.6046,-7.0888 -12.9538,-11.0165 -3.3178,-2.996 -5.0514,-5.9407 -9.0348,-7.9695 -3.3766,-1.7193 -6.7817,-1.9448 -10.3696,-3.1647 -5.8722,-1.9966 -10.5028,-3.3339 -16.4727,-5.0147 -8.4214,-2.371 -16.6224,-4.8557 -23.8125,-4.3331 0,0 -0.6591,-9.0675 -0.6591,-9.0675 5.2983,-0.3852 14.1535,-4.1013 20.376,-2.4079 4.0472,1.1015 6.8618,6.0763 10.8723,7.3034 3.7858,1.1583 8.6219,-1.1278 12.3894,0.089 3.8441,1.2415 6.8875,5.1523 10.3695,7.1994 5.7805,3.3982 13.8273,5.7864 18.4688,10.6262 3.0572,3.1877 3.6934,7.677 7.2922,11.3685 0,0 -6.4657,6.3875 -6.4657,6.3875 m 80.1779,38.6479 c -5.5115,0.5193 -13.8442,1.3936 -19.533,-0.013 -4.3395,-1.0733 -9.1687,-3.9553 -13.3425,-5.5567 -3.538,-1.3571 -7.9052,-1.9111 -11.4141,-3.3421 -5.7429,-2.3421 -12.3477,-5.9919 -17.1745,-9.8855 -6.8089,-5.4925 -13.0576,-15.2963 -18.0901,-20.4583 0,0 6.51,-6.3465 6.51,-6.3465 3.7083,3.8038 11.1986,6.0425 15.4585,10.884 2.7707,3.1489 2.1759,8.0976 5.6382,10.4646 3.2682,2.2343 7.9045,0.5411 11.5008,2.1967 3.6693,1.6892 5.5908,5.1883 9.2679,6.8603 6.1043,2.7757 11.892,1.7963 18.4749,3.0727 4.3358,0.8407 6.6589,3.5651 11.7914,3.0815 0,0 0.9125,9.0426 0.9125,9.0426 m 81.0372,-27.9863 c -5.5317,0.2098 -8.7515,2.5488 -14.119,4.9007 -4.0944,1.7941 -8.1434,2.4545 -11.9737,4.76 -3.2465,1.9545 -6.0678,5.1294 -9.2902,7.1234 -5.2742,3.2635 -12.5897,5.8236 -18.6226,7.2628 -8.5101,2.0302 -19.9362,2.3959 -27.1134,3.0722 0,0 -0.8528,-9.0512 -0.8528,-9.0512 5.2888,-0.4983 10.9247,-5.6365 17.3175,-6.4859 4.1579,-0.5525 8.2775,2.6942 12.3517,1.6984 3.8458,-0.94 5.1154,-5.4363 8.579,-7.3539 3.5338,-1.9564 7.5044,-1.6553 11.0847,-3.5257 5.9436,-3.1052 11.1302,-9.1035 17.48,-11.2574 4.1823,-1.4188 9.6029,-0.027 14.7542,-0.2223 0,0 0.4046,9.0789 0.4046,9.0789 m 81.8591,24.3155 c -5.5332,-0.1728 -12.7777,0.1555 -18.5135,-1.0468 -4.3754,-0.9172 -8.668,-3.132 -13.0494,-4.0191 -3.7139,-0.7515 -8.8084,-1.253 -12.3772,-2.5271 -5.8409,-2.0853 -11.6623,-5.3942 -17.0143,-8.5282 -7.5499,-4.421 -13.7344,-9.3378 -20.9377,-9.0646 0,0 -0.3445,-9.0843 -0.3445,-9.0843 5.3081,-0.2012 16.0643,-1.6108 21.5647,1.7552 3.5775,2.1893 4.8014,7.6889 8.4066,9.8321 3.4032,2.0231 7.9262,0.275 11.5919,1.7708 3.7402,1.5261 5.5007,4.8584 9.3585,6.0555 6.4042,1.9874 12.9646,0.215 19.5195,1.6289 4.3174,0.9313 6.8662,3.9809 12.019,4.1419 0,0 -0.2236,9.0857 -0.2236,9.0857 m 80.681,-31.6006 c -5.3447,1.4432 -10.4139,4.1055 -15.9739,5.9579 -4.2413,1.4131 -8.5589,1.5981 -12.6424,3.4173 -3.4611,1.5425 -5.468,4.1209 -8.5983,6.2566 -5.1234,3.4955 -8.4439,8.6345 -13.7779,11.7973 -7.5245,4.4616 -22.4559,3.526 -29.6613,3.3009 0,0 0.2839,-9.0868 0.2839,-9.0868 5.3096,0.1658 10.6313,-3.9541 17.0262,-4.7861 4.1594,-0.5412 7.0492,2.3171 10.292,-0.3421 3.0611,-2.5103 3.3299,-8.1649 6.3632,-10.7087 3.0949,-2.5955 8.6359,-2.8138 12.3739,-4.3449 6.2054,-2.5419 11.911,-7.6005 18.3902,-9.3296 4.2675,-1.139 8.5197,0.4534 13.4969,-0.8905 0,0 2.4275,8.7587 2.4275,8.7587 m 75.091,-27.4704 c -4.6938,-2.9342 -4.8201,-1.4636 -9.9313,1.4014 -3.8991,2.1855 -7.4226,3.4263 -10.8809,6.259 -2.9312,2.4014 -6.8893,6.5564 -10.2794,8.2498 -5.5485,2.7717 -12.182,5.0664 -18.213,6.5128 -8.5076,2.0403 -19.0535,2.327 -26.0135,4.2064 0,0 -2.3701,-8.7773 -2.3701,-8.7773 5.1288,-1.3849 11.3157,-6.9971 17.7055,-7.8694 4.156,-0.5674 8.2581,2.7479 12.3057,1.6491 3.8207,-1.0373 5.4866,-5.4505 9.0438,-7.1886 3.6294,-1.7734 7.0485,-0.8869 10.4093,-3.1276 5.5792,-3.7198 10.4353,-11.7766 16.8911,-13.5884 4.252,-1.1935 11.7277,1.8025 16.0988,4.535 0,0 -4.766,7.7378 -4.766,7.7378 m 64.8075,58.4572 c -5.1189,-2.107 -12.5099,-5.8335 -16.8912,-9.7253 -3.3422,-2.9687 -5.9303,-7.3701 -9.1815,-10.4386 -2.7561,-2.6007 -6.2797,-4.2111 -9.2039,-6.6216 -4.786,-3.9452 -9.8242,-7.6457 -14.0712,-12.1644 -5.9911,-6.3741 -8.8856,-16.4249 -14.998,-20.2459 0,0 4.8187,-7.7084 4.8187,-7.7084 4.5042,2.8156 13.2032,7.2081 16.5765,12.7043 2.1941,3.5749 0.6382,8.3245 3.7795,11.1031 2.9651,2.6228 8.1367,2.2195 11.2134,4.7113 3.1392,2.5424 4.3504,7.0183 7.1155,9.9632 4.5901,4.8887 10.5139,7.0475 15.6485,11.3607 3.382,2.8409 3.8301,6.6729 8.5971,8.635 0,0 -3.4034,8.4266 -3.4034,8.4266 m 65.4753,-20.7645 c -2.572,-4.9021 -2.4454,-6.0774 -8.2387,-6.957 -4.4193,-0.6709 -4.1787,-1.1703 -7.4199,1.908 -2.7472,2.6095 -3.2608,5.5213 -5.2766,8.7303 -3.2993,5.2521 -7.8935,11.6483 -12.7115,15.5528 -6.7964,5.5078 -24.8312,3.4688 -31.4971,0.725 0,0 3.4602,-8.4064 3.4602,-8.4064 4.912,2.0218 8.1016,0.6997 14.3195,-1.009 4.0442,-1.1114 7.304,1.167 10.2825,-1.7854 2.8117,-2.787 1.6065,-7.5914 3.7291,-10.9336 2.1657,-3.41 6.6728,-5.6145 9.6291,-8.3668 4.9078,-4.569 17.8004,-10.8562 23.5419,-7.3929 3.7817,2.2811 5.8062,9.0942 8.2013,13.6592 0,0 -8.0198,4.2758 -8.0198,4.2758 m 78.2065,3.3918 c -3.1438,4.5561 -9.1572,11.0334 -14.1518,14.098 -3.81,2.3377 -9.498,3.7531 -13.6362,5.4445 -3.5075,1.434 -7.921,4.0045 -11.5899,4.9527 -6.0049,1.5518 -18.3093,0.9092 -23.4533,-2.5546 -7.2564,-4.8862 -11.2547,-19.3535 -14.604,-25.7371 0,0 8.0505,-4.2238 8.0505,-4.2238 2.468,4.704 7.9614,8.7542 11.2028,14.3286 2.1083,3.6256 0.075,7.4246 4.1295,8.4945 3.8277,1.0099 6.2293,-2.6206 10.1321,-3.2854 3.9821,-0.6782 7.0174,0.9613 10.8798,-0.2215 6.4117,-1.9634 9.6094,-7.0147 15.2617,-10.6218 3.7229,-2.3759 7.3371,-1.5429 10.2649,-5.7858 0,0 7.5139,5.1117 7.5139,5.1117 m 15.5962,-88.3726 c 3.3661,4.3951 8.4491,14.6066 7.7903,20.4294 -0.5026,4.4418 -4.3044,10.5607 -6.3195,14.5512 -1.7079,3.3827 -2.2438,6.8716 -3.5644,10.4235 -2.1614,5.8134 -2.8336,9.6086 -3.9109,15.7164 -1.5198,8.6159 -6.2145,20.8244 -10.3085,26.7574 0,0 -7.4823,-5.163 -7.4823,-5.163 3.0169,-4.3719 0.474,-10.4168 2.127,-16.6502 1.0751,-4.0543 5.6154,-6.8053 6.5437,-10.8953 0.8763,-3.8606 -1.6394,-8.9946 -0.3825,-12.7487 1.2824,-3.8303 5.5368,-6.612 7.5719,-10.1013 3.3785,-5.7924 3.0797,-9.5939 2.6094,-16.2826 -0.3098,-4.4055 1.0585,-6.3508 -1.9231,-10.5562 0,0 7.2489,-5.4806 7.2489,-5.4806 m -56.1433,-68.4103 c 4.8126,2.7351 11.867,6.9909 15.768,11.3643 2.9757,3.3362 4.9724,8.2241 7.7679,11.7129 2.3698,2.957 5.7079,5.1768 8.2091,8.0236 4.0937,4.6593 7.7709,10.5031 10.7845,15.924 4.2509,7.6469 8.5389,16.1918 12.9223,21.9151 0,0 -7.2178,5.5279 -7.2178,5.5279 -3.23,-4.2174 -11.95,-7.8423 -14.6597,-13.6943 -1.7625,-3.8063 0.1864,-8.8293 -1.8717,-12.4837 -1.9427,-3.4497 -6.7551,-4.0452 -9.2474,-7.1214 -2.5428,-3.1388 -2.9627,-7.3387 -5.2674,-10.6561 -3.8262,-5.5072 -9.2989,-8.3182 -13.904,-13.1926 -3.0332,-3.2105 -3.24,-6.842 -7.7217,-9.3891 0,0 4.4379,-7.9306 4.4379,-7.9306 m -82.5134,-32.6533 c 5.5158,0.4731 14.708,1.6815 19.6879,4.7702 3.7987,2.3561 6.7211,6.0448 10.6301,8.2132 3.3136,1.8377 6.2894,1.6785 9.9353,2.7119 5.9672,1.6911 11.4581,3.1818 17.3154,5.2211 8.2627,2.8766 18.2473,8.9324 24.5143,12.4941 0,0 -4.4917,7.9035 -4.4917,7.9035 -4.6181,-2.6246 -11.9491,-1.3916 -17.7887,-4.1275 -3.7981,-1.7795 -5.5117,-6.756 -9.4762,-8.1246 -3.7423,-1.2919 -8.2307,1.2219 -12.0593,0.2138 -3.9064,-1.0286 -7.3031,-4.9039 -10.8083,-6.9112 -5.8189,-3.3323 -12.1003,-4.9371 -17.9803,-8.1602 -3.8729,-2.1229 -5.0586,-4.7035 -10.1951,-5.144 0,0 0.7166,-9.0603 0.7166,-9.0603 m -87.1714,20.0885 c 4.9445,-2.4898 11.4915,-5.6864 17.1354,-7.2649 4.3053,-1.2041 8.8816,-1.2232 13.1205,-2.6437 3.5929,-1.2045 6.8248,-3.6394 10.363,-4.9968 5.7909,-2.2216 12.4039,-3.9245 18.5245,-4.9257 8.6339,-1.4123 20.771,-0.01 27.9536,0.6105 0,0 -0.7769,9.0581 -0.7769,9.0581 -5.2928,-0.454 -11.3625,3.8225 -17.811,3.8434 -4.1942,0.014 -7.704,-3.5963 -11.8391,-2.8963 -3.9034,0.6607 -5.9458,5.0679 -9.6546,6.4535 -3.7842,1.4138 -8.0419,0.3093 -11.9425,1.3593 -6.4753,1.7432 -11.9761,6.4086 -18.4951,7.9807 -4.2938,1.0355 -7.832,-0.8065 -12.4365,1.5121 0,0 -4.1413,-8.0902 -4.1413,-8.0902 m -72.2585,-11.7452 c 4.8713,2.6304 11.4069,5.1175 16.1521,8.5569 3.6197,2.6237 6.2523,6.1682 10.0884,8.4632 3.2519,1.9449 6.1175,1.9335 9.7407,3.0425 5.9301,1.8151 7.6199,1.9567 13.7102,0.7864 8.5913,-1.6509 16.52,-5.0836 22.9588,-8.3258 0,0 4.0889,8.12 4.0889,8.12 -4.7447,2.3892 -9.6472,10.0125 -15.8233,11.867 -4.017,1.2062 -9.5708,-1.4257 -13.7582,-1.1965 -3.9527,0.2165 -9.3697,3.2128 -13.2112,2.2577 -3.9196,-0.9746 -7.4461,-5.1593 -10.8744,-7.2955 -5.6911,-3.5463 -12.6831,-5.4024 -18.0476,-9.426 -3.5333,-2.6501 -4.7534,-6.3745 -9.2897,-8.8241 0,0 4.2653,-8.0258 4.2653,-8.0258 m -26.495,-58.8469 c -2.4066,4.9855 -3.772,10.0603 -5.66,15.6079 -1.4402,4.2318 -3.4568,6.3515 -3.2002,10.8143 0.2179,3.7829 2.0016,4.2776 4.046,7.4678 3.346,5.2215 5.6606,6.9049 10.5177,10.7605 6.8518,5.4389 14.0342,11.5375 20.3776,14.9629 0,0 -4.3198,7.9998 -4.3198,7.9998 -4.6744,-2.5241 -13.4034,-2.7256 -18.4757,-6.708 -3.2991,-2.5902 -4.0391,-8.3498 -7.1302,-11.1844 -2.9178,-2.6757 -8.6124,-3.4984 -11.0858,-6.5894 -2.5236,-3.1538 -2.8398,-9.886 -3.2357,-13.9056 -0.6573,-6.6729 -1.108,-16.2223 1.7628,-22.2826 1.8907,-3.9916 5.9513,-6.1972 8.1924,-10.8399 0,0 8.2109,3.8967 8.2109,3.8967 m 40.1081,-77.04913 c -0.9272,5.4579 -1.0243,12.41151 -2.7043,18.02599 -1.2816,4.28288 -4.2581,8.68316 -5.8302,12.86803 -1.3322,3.54741 -2.5071,8.6014 -4.3472,11.91391 -3.0115,5.42153 -7.9029,10.85214 -12.2187,15.3063 -6.0881,6.2833 -12.6582,12.0641 -15.7921,18.5563 0,0 -8.1874,-3.9523 -8.1874,-3.9523 2.3094,-4.7841 3.4327,-14.4423 8.0616,-18.93235 3.0107,-2.9204 8.6698,-2.63845 11.5703,-5.66788 2.738,-2.85964 1.8618,-7.4317 3.9724,-10.78112 2.1536,-3.41744 5.5368,-4.59058 7.3106,-8.21955 2.9448,-6.02441 1.9516,-12.36664 3.8887,-18.78634 1.2757,-4.22837 4.4426,-6.71111 5.306,-11.79373 0,0 8.9703,1.46274 8.9703,1.46274 m 11.0817,-87.56413 c 0.6507,5.49748 1.7632,12.896 1.2015,18.72947 -0.4284,4.44994 -2.4551,9.22687 -3.0888,13.65226 -0.5368,3.75119 0.1087,7.74025 -0.2787,11.50999 -0.634,6.16989 -1.7655,12.31595 -3.201,18.34969 -2.025,8.51146 -5.3661,18.0695 -6.5735,25.17683 0,0 -8.9631,-1.52265 -8.9631,-1.52265 0.8897,-5.23731 -2.0274,-13.06529 -0.3031,-19.27938 1.1214,-4.04172 6.0494,-6.66373 6.9975,-10.74927 0.895,-3.85656 -2.1193,-7.81978 -1.6801,-11.7545 0.4483,-4.01466 3.4258,-7.28857 4.2388,-11.24538 1.3495,-6.56862 -0.6465,-12.83057 0.07,-19.49806 0.4718,-4.39156 3.1685,-7.12138 2.5625,-12.24086 0,0 9.0181,-1.12814 9.0181,-1.12814 m -16.3694,-65.09684 c -2.6459,4.8624 -5.4917,10.39379 -8.4815,15.43386 -2.2806,3.84471 -4.7179,5.12503 -5.0693,9.581 -0.2974,3.7771 -0.9264,1.63627 2.3373,3.56064 5.3418,3.14959 12.7932,3.13809 17.5158,7.15639 6.6619,5.66836 8.3547,22.30847 9.2021,29.46734 0,0 -9.0282,1.06865 -9.0282,1.06865 -0.6244,-5.27529 -5.6629,-9.81408 -7.4825,-16.00031 -1.1835,-4.0236 1.6529,-6.92601 -2.2272,-8.51753 -3.6625,-1.50231 -8.7689,1.13671 -12.4624,-0.28848 -3.7685,-1.45416 -7.3809,-10.73017 -7.3929,-14.76874 -0.02,-6.70435 1.8208,-16.46249 5.7759,-21.87794 2.605,-3.56693 6.7167,-4.79651 9.3651,-9.2196 0,0 7.9478,4.40472 7.9478,4.40472 m 5.2829,-78.49148 c -2.7154,4.82412 -2.795,5.55106 -0.5216,10.95213 1.7343,4.12008 2.6243,7.4045 5.2404,11.02956 2.2178,3.07252 6.1469,7.2815 7.6225,10.77146 2.4151,5.71197 -0.2546,18.29368 -3.3578,23.66334 -4.3775,7.57467 -11.5859,15.3268 -15.0315,21.65867 0,0 -7.9852,-4.34519 -7.9852,-4.34519 2.539,-4.66589 2.5853,-13.43921 6.5629,-18.51534 2.5871,-3.30158 7.7952,-3.52077 9.52,-7.34323 1.6281,-3.60822 -1.4607,-5.60919 -2.171,-9.50314 -0.7246,-3.97306 0.097,-5.87765 -1.9444,-9.36287 -3.3895,-5.78574 -11.4148,-11.84571 -12.1702,-18.50741 -0.4976,-4.38774 3.7579,-10.41089 6.2866,-14.90332 0,0 7.9493,4.40534 7.9493,4.40534 m 61.7205,-59.29447 c -1.9007,5.19939 -4.0179,12.91766 -7.4378,17.67655 -2.6088,3.63023 -8.0026,7.1549 -11.4194,10.0374 -2.8961,2.44363 -5.8322,6.02546 -8.875,8.28405 -4.9802,3.69661 -10.4953,6.85781 -15.9566,9.79716 -7.704,4.14638 -15.2547,6.79003 -18.7907,13.07205 0,0 -7.9224,-4.45932 -7.9224,-4.45932 2.6057,-4.62915 7.124,-14.3393 12.8404,-17.32443 3.718,-1.94156 9.0732,-0.12306 12.7553,-2.13116 3.4757,-1.89555 4.4489,-6.59898 7.6485,-8.93064 3.2646,-2.37901 7.4598,-2.26356 10.7864,-4.55486 5.5224,-3.80378 6.5837,-8.79021 10.0517,-14.52924 2.2842,-3.78004 5.9931,-5.15935 7.7631,-10.00123 0,0 8.5565,3.06367 8.5565,3.06367 m -49.8386,-64.2248 c 5.5353,0.0362 19.6626,3.00853 22.2067,8.28561 1.9407,4.02549 -3.1963,8.08935 0.5651,10.50407 3.1886,2.04649 5.4923,1.01828 9.2166,1.71802 6.0955,1.14526 18.1401,7.34156 20.4161,13.11016 3.2106,8.13742 -0.909,23.5372 -3.384,30.30789 0,0 -8.5386,-3.1213 -8.5386,-3.1213 1.8238,-4.98924 -0.5679,-10.14476 -0.4408,-16.59204 0.083,-4.19338 4.045,-6.57445 1.1986,-9.653 -2.6869,-2.906 -6.2869,0.4064 -10.1717,-0.35775 -3.9637,-0.7797 -7.9411,-4.17989 -11.4612,-6.16054 -5.8437,-3.28803 -4.4874,-10.50258 -10.1119,-14.1526 -3.7046,-2.40404 -4.3394,-4.76723 -9.4941,-4.80094 0,0 -8e-4,-9.08758 -8e-4,-9.08758 M 311.90182,667.46124 c 5.60805,0.0674 11.96919,-0.86492 17.89855,-0.56412 4.52308,0.22943 8.30324,1.56885 12.80236,1.05067 3.8136,-0.43962 6.94914,-2.15097 10.67861,-3.0603 6.10398,-1.48828 12.24904,-2.58107 18.48618,-3.33952 8.79836,-1.06992 20.03935,-0.058 27.33807,-0.3121 0,0 0.31633,9.08582 0.31633,9.08582 -5.37834,0.18725 -11.84554,4.68567 -18.37581,4.83215 -4.24737,0.0953 -8.03004,-3.64441 -12.24305,-3.09334 -3.97687,0.52017 -6.76185,4.7564 -10.66636,5.67263 -3.98385,0.93482 -8.46746,-0.69457 -12.55338,-0.4694 -6.78296,0.37384 -14.00624,3.16396 -20.77419,2.5784 -4.45772,-0.38564 -7.73303,-3.22941 -12.95548,-3.29217 0,0 0.0482,-9.08872 0.0482,-9.08872 m -65.01467,56.73645 c 1.33371,-5.44757 2.16205,-12.61482 4.42646,-18.10298 1.72734,-4.18653 5.32639,-8.46637 7.48869,-12.44557 1.83251,-3.37311 3.81586,-8.23494 6.14225,-11.28803 3.80756,-4.99696 12.12652,-10.87427 18.09281,-12.84246 8.41629,-2.77643 21.55112,-1.27415 28.85399,-1.18639 0,0 -0.10925,9.09099 -0.10925,9.09099 -5.3814,-0.0647 -11.30326,3.89816 -17.81631,4.39273 -4.23617,0.32168 -7.60812,-3.0105 -11.48181,-1.26593 -3.65659,1.6468 -3.21096,5.98352 -5.82343,9.02603 -2.66556,3.1043 -6.24567,3.76762 -8.54091,7.15527 -3.81026,5.62379 -3.48261,11.96135 -6.07982,18.23807 -1.71061,4.13419 -5.06823,6.25728 -6.31023,11.33028 0,0 -8.84244,-2.10201 -8.84244,-2.10201 m -10.15359,85.65784 c 2.29822,-5.1157 1.55397,-9.32903 2.00331,-15.24848 0.34274,-4.51552 1.49389,-8.3179 1.13884,-12.83292 -0.30134,-3.8271 -1.86854,-7.71842 -2.26701,-11.53634 -0.65218,-6.24875 0.15224,-14.40485 1.76043,-20.47853 2.26856,-8.56779 6.62735,-18.26054 8.36412,-25.35442 0,0 8.83083,2.16202 8.83083,2.16202 -1.27981,5.2274 1.00913,13.30661 -1.15742,19.46882 -1.40914,4.00798 -6.44951,6.13344 -7.32842,10.29019 -0.82965,3.92378 2.70648,7.0404 2.94959,11.04339 0.24802,4.08432 -1.81139,7.67179 -1.73421,11.76327 0.12815,6.7922 3.20127,14.31886 2.16959,21.03319 -0.67948,4.4224 -4.27433,8.5945 -6.41453,13.35845 0,0 -8.31512,-3.66864 -8.31512,-3.66864 m -70.38543,15.10464 c 5.51681,1.00893 11.90919,1.20869 17.70798,2.48218 4.42347,0.97143 8.15463,3.14243 12.6612,3.59106 3.81998,0.37989 6.57441,-0.80801 10.38298,-1.28529 6.23342,-0.78117 8.92918,-1.3586 14.52426,-4.2152 7.89265,-4.02966 12.91079,-8.65872 15.90356,-15.32044 0,0 8.29284,3.72556 8.29284,3.72556 -2.20534,4.90894 -4.60598,15.59948 -9.94211,19.36585 -3.47069,2.4497 -9.80136,1.50462 -13.77557,3.00671 -3.75147,1.41791 -7.36196,5.95324 -11.31291,6.63926 -4.03122,0.69994 -8.94885,-1.68625 -13.00791,-2.2047 -6.73838,-0.86065 -14.29965,0.35803 -20.85461,-1.42587 -4.31744,-1.17493 -7.01717,-4.46846 -12.15465,-5.40801 0,0 1.57494,-8.95111 1.57494,-8.95111 m -72.997127,46.73756 c 2.314647,-5.10844 4.290969,-11.84165 7.383647,-16.90938 2.35915,-3.86582 6.67073,-7.48628 9.43438,-11.07379 2.34228,-3.04116 4.95068,-7.54072 7.70177,-10.21781 4.50265,-4.38154 13.12938,-9.2359 19.27984,-10.51844 8.67609,-1.80922 21.85674,1.52488 29.04078,2.83871 0,0 -1.63553,8.94308 -1.63553,8.94308 -5.29384,-0.96816 -11.30547,1.88732 -17.83464,1.72653 -4.24665,-0.10458 -7.29977,-3.9706 -11.3224,-2.60345 -3.79717,1.29051 -4.0216,5.90697 -7.08698,8.49296 -3.12768,2.63851 -6.6259,2.93528 -9.46042,5.88626 -4.70552,4.89888 -5.40876,11.18634 -8.98682,16.96083 -2.35666,3.8034 -6.05459,5.41265 -8.21009,10.16983 0,0 -8.303537,-3.69533 -8.303537,-3.69533 m -45.685371,71.34726 c 3.775327,-4.14666 8.456033,-9.41079 13.043421,-13.17935 3.49937,-2.87479 6.49802,-4.26301 9.07259,-7.98866 2.181994,-3.15824 2.494422,-6.35993 4.01914,-9.88282 2.495483,-5.76588 4.801209,-10.93877 7.550439,-16.58835 3.878166,-7.96953 9.779049,-16.69632 12.793204,-23.34858 0,0 8.281074,3.75218 8.281074,3.75218 -2.2211,4.90197 -1.42205,13.22226 -4.648494,18.90191 -2.098518,3.69411 -7.372292,5.06782 -9.210536,8.89839 -1.735216,3.61587 0.01201,8.42475 -1.522927,12.12996 -1.566146,3.78047 -5.870293,6.54177 -8.26415,9.86049 -3.973974,5.50937 -7.655779,13.16492 -13.094958,17.23484 -3.582498,2.6807 -7.742201,2.42132 -11.257941,6.28286 0,0 -6.760862,-6.07287 -6.760862,-6.07287 m 4.976908,80.75741 c 3.016954,-4.7272 3.02283,-4.0508 -0.786909,-8.6031 -2.906195,-3.4725 -6.064979,-7.584 -8.669353,-11.2887 -2.207891,-3.14 -5.032579,-8.80874 -6.060056,-12.50727 -1.681658,-6.05334 -2.367152,-14.18784 -1.820046,-20.44661 0.771755,-8.82888 8.087233,-21.92553 13.003501,-27.32536 0,0 6.721984,6.12003 6.721984,6.12003 -3.622742,3.97907 -2.116053,9.61042 -4.077223,15.84049 -1.275567,4.05211 -5.724595,6.10945 -5.892726,10.35472 -0.158708,4.00733 3.89038,6.50088 4.791572,10.40874 0.91947,3.98726 -0.927564,7.20745 0.579752,11.01115 2.502299,6.31441 12.713034,8.37221 14.864838,14.81411 1.417332,4.243 -2.317738,11.7468 -4.870246,16.3026 0,0 -7.785088,-4.6808 -7.785088,-4.6808 m -14.009982,83.6431 c -3.135393,-4.6503 -8.186578,-11.8019 -9.466168,-17.5993 -0.976132,-4.4225 -0.727951,-9.8316 -1.321705,-14.3213 -0.503673,-3.8057 -2.112711,-8.7276 -2.119731,-12.566 -0.01149,-6.2823 3.845139,-16.8768 8.059919,-21.5362 5.945534,-6.5726 15.663169,-10.9959 19.591876,-17.1517 0,0 7.663046,4.8907 7.663046,4.8907 -2.89502,4.5361 -6.299966,13.2759 -11.528264,17.1915 -3.400549,2.5467 -8.286749,1.3965 -10.688117,4.9011 -2.26678,3.3082 0.782782,6.3046 0.559699,10.3086 -0.227646,4.0854 -2.567828,6.7437 -2.273989,10.8252 0.487828,6.7757 3.766283,11.5837 5.821457,18.0583 1.353687,4.2644 0.367909,7.5334 3.227999,11.9035 0,0 -7.526022,5.0956 -7.526022,5.0956 m 2.178744,79.3983 c -3.087984,-4.6817 -7.922631,-12.423 -8.834913,-18.2888 -0.695941,-4.4745 1.619528,-12.8121 3.602625,-16.8835 1.680607,-3.4513 3.254373,-7.9027 5.208178,-11.2069 3.197764,-5.4078 5.439115,-6.5749 5.873345,-12.8412 0.612528,-8.8396 -3.222784,-14.6093 -7.305723,-20.6649 0,0 7.538293,-5.0827 7.538293,-5.0827 3.008672,4.4623 11.720359,10.3397 13.02219,16.7402 0.846729,4.1629 -2.864252,10.2721 -4.07222,14.3448 -1.140266,3.8445 -0.400587,9.5659 -2.471691,13.0001 -2.113206,3.504 -6.22697,4.8741 -8.367376,8.3617 -3.553225,5.7898 -0.715848,9.1399 0.82814,15.7547 1.016995,4.3568 -0.343409,7.3516 2.532249,11.7114 0,0 -7.553097,5.0551 -7.553097,5.0551 m 57.94869,66.6548 c -3.436623,-4.4316 -8.17516,-7.5634 -12.241303,-11.8895 -3.101786,-3.3 -5.399633,-7.6366 -8.508993,-10.9293 -2.635902,-2.7908 -6.262848,-5.331 -8.82685,-8.1874 -4.196467,-4.6752 -8.009935,-8.643 -12.099731,-13.4128 -5.76925,-6.7284 -11.523476,-16.619 -15.544678,-22.7154 0,0 7.589214,-5.0058 7.589214,-5.0058 2.963179,4.4924 10.244144,7.1234 14.04213,12.4378 2.470258,3.4566 1.568875,8.712 4.318285,11.9514 2.595313,3.0578 7.757316,3.3186 10.535009,6.2114 2.834101,2.9515 3.260564,7.6218 5.771217,10.853 4.167915,5.364 10.867449,7.8326 15.302866,12.9779 2.921432,3.3889 3.606542,7.9645 6.806872,12.0913 0,0 -7.144038,5.6174 -7.144038,5.6174 m -14.585396,71.3805 c 3.889742,-4.0404 6.075673,-8.4317 9.249566,-13.4486 2.42111,-3.8269 5.324009,-6.5172 7.079328,-10.6919 1.48753,-3.5388 1.4629,-6.9519 2.40756,-10.6725 1.5461,-6.0895 2.40354,-9.5254 2.45258,-15.808 0.0692,-8.8625 -1.44014,-15.5225 -5.915346,-21.2933 0,0 7.183816,-5.5709 7.183816,-5.5709 3.29772,4.2524 11.75004,11.4388 12.48161,17.929 0.47583,4.2214 -3.386,9.3481 -4.00881,13.5505 -0.5879,3.9669 2.30588,8.7876 1.42014,12.699 -0.90377,3.9908 -4.63363,7.4675 -6.4416,11.1385 -3.00136,6.094 -3.99698,14.5367 -8.32662,19.771 -2.851696,3.4476 -7.370167,4.8941 -10.992456,8.6566 0,0 -6.589768,-6.2594 -6.589768,-6.2594 m -56.480703,69.6431 c 1.057894,-5.5074 2.801069,-13.9431 5.909644,-19.0006 2.371284,-3.858 6.706194,-7.5757 9.544335,-11.1048 2.405425,-2.9917 4.344111,-6.9912 6.818614,-9.926 4.049983,-4.8032 9.141877,-9.3238 14.024426,-13.2782 6.887517,-5.5782 15.745951,-10.4681 20.81121,-15.7294 0,0 6.54959,6.3055 6.54959,6.3055 -3.732533,3.877 -6.830348,12.1855 -12.215921,15.8819 -3.502843,2.4042 -8.802247,1.2952 -12.064336,4.0175 -3.079259,2.5699 -2.991382,7.5035 -5.688199,10.4719 -2.751628,3.0286 -6.805994,3.9532 -9.652725,6.8928 -4.725786,4.88 -5.537953,10.5228 -8.642962,16.5639 -2.045078,3.9791 -5.472143,5.4312 -6.457298,10.5599 0,0 -8.936378,-1.6544 -8.936378,-1.6544 m 66.915228,43.767 c -5.580417,0.5606 -11.903441,2.4942 -17.834881,2.7496 -4.524665,0.1949 -9.8635,-1.0058 -14.386067,-1.2434 -3.833535,-0.201 -9.421307,0.3294 -13.1433,-0.6084 -6.091736,-1.535 -16.147847,-8.3967 -19.105026,-13.9397 -4.171533,-7.8192 -2.968167,-23.389 -1.590567,-30.5608 0,0 8.927809,1.715 8.927809,1.715 -1.015138,5.2848 2.402261,9.9976 3.438889,16.4466 0.674237,4.1945 -2.477236,7.4602 0.272665,10.6985 2.595777,3.0568 6.284547,0.8529 10.101912,2.0812 3.894909,1.2532 5.794165,3.8879 9.842897,4.4816 6.721233,0.9856 12.432509,-2.2643 19.221436,-2.5044 4.471536,-0.1582 8.088365,2.1691 13.28508,1.6471 0,0 0.969153,9.0371 0.969153,9.0371 m 83.316839,-26.5658 c 0.54092,5.5816 -5.9055,17.4338 -10.93178,20.5913 -3.83417,2.4087 -10.96135,3.4376 -15.39085,4.3803 -3.75454,0.7994 -8.32467,2.665 -12.13948,3.0913 -6.24364,0.6977 -13.05694,0.5513 -19.32014,0.053 -8.83513,-0.7031 -18.35478,-3.1466 -25.621654,-2.4166 0,0 -0.90871,-9.0462 -0.90871,-9.0462 5.354877,-0.5379 13.554444,-4.6848 20.004404,-3.6528 4.19513,0.6713 7.28762,5.0902 11.52569,5.3916 4.00054,0.2844 7.15367,-3.2773 11.14296,-3.6881 4.07034,-0.4192 7.54552,1.6941 11.6118,1.2358 6.75035,-0.7609 9.5594,-4.3896 14.92957,-8.5496 3.53705,-2.74 6.56263,-1.2546 6.0589,-6.4525 0,0 9.03929,-0.9373 9.03929,-0.9373 m 11.82951,-76.6828 c -4.54793,3.2792 -5.32528,6.7818 -7.99232,12.0858 -2.03446,4.0461 -4.4422,6.7024 -5.48276,11.1099 -0.88165,3.736 -0.13429,6.9998 -0.37824,10.8307 -0.39928,6.2701 -0.8463,12.0553 -1.63299,18.289 -1.10974,8.7934 2.08549,17.1829 2.78988,24.4514 0,0 -9.04816,0.8769 -9.04816,0.8769 -0.51906,-5.3561 -8.14633,-11.1167 -8.52011,-17.6376 -0.24312,-4.2413 4.73497,-8.965 5.31169,-13.1745 0.5444,-3.9735 -2.81031,-7.8492 -2.61588,-11.8551 0.19841,-4.0872 3.28798,-8.0097 4.29862,-11.9749 1.67771,-6.5826 2.10268,-15.6493 6.03107,-21.191 2.5874,-3.6502 7.64056,-6.0912 11.87578,-9.1449 0,0 5.36342,7.3343 5.36342,7.3343 m 62.45636,-51.3019 c -0.15641,5.6061 -0.1798,13.7525 -2.04879,19.3872 -1.42569,4.2984 -5.24779,9.3632 -7.62148,13.2193 -2.01172,3.2688 -5.32961,8.7782 -8.29631,11.2126 -4.85556,3.9844 -15.68463,5.6938 -21.9675,5.7149 -8.86288,0.03 -17.10922,-3.2086 -23.03158,1.0616 0,0 -5.31568,-7.3725 -5.31568,-7.3725 4.36412,-3.1466 14.05005,-8.8017 20.56481,-8.3291 4.23727,0.3073 7.63599,4.6911 11.87976,4.4913 4.00592,-0.1886 5.13742,-3.7875 8.61789,-5.7786 3.55118,-2.0315 5.9329,-1.3922 8.4503,-4.6183 4.17906,-5.3555 3.45208,-10.8472 5.25698,-17.396 1.18875,-4.3133 4.27941,-6.5642 4.42507,-11.7849 0,0 9.08653,0.1925 9.08653,0.1925 m -20.13795,-81.7548 c -1.71557,5.339 -0.63085,9.8111 -0.75051,15.7464 -0.0913,4.5276 -0.75294,7.1712 0.83058,11.4141 1.34262,3.5963 3.86076,5.8097 5.80775,9.1179 3.1866,5.4145 6.5207,10.8959 8.93742,16.6952 3.40914,8.1808 4.64567,21.4566 4.44199,28.7569 0,0 -9.08783,-0.2536 -9.08783,-0.2536 0.15009,-5.3795 -4.46066,-9.8052 -6.12034,-16.1227 -1.07948,-4.109 1.54649,-8.41 -0.25776,-12.2565 -1.70313,-3.631 -6.54749,-4.9115 -8.66165,-8.3196 -2.15709,-3.4772 -1.99217,-8.5045 -3.3172,-12.3762 -2.19968,-6.4272 -6.26478,-14.7245 -5.62098,-21.487 0.424,-4.4542 3.53022,-8.665 5.12783,-13.6369 0,0 8.6707,2.722 8.6707,2.722 m 73.94471,-30.6809 c -5.00208,2.5366 -11.52082,6.7638 -17.29023,8.1624 -4.40105,1.0669 -9.77335,0.4584 -14.23227,1.2519 -3.77949,0.673 -7.13408,2.5556 -10.84921,3.5212 -6.08051,1.5804 -10.43219,2.3503 -16.27587,4.6576 -8.24333,3.2548 -13.89233,5.8688 -16.12637,12.8213 0,0 -8.65488,-2.781 -8.65488,-2.781 1.64623,-5.1233 5.55968,-16.6191 11.3475,-19.6457 3.76448,-1.9685 9.88341,0 13.97114,-1.1611 3.85863,-1.0936 6.79956,-5.6861 10.6896,-6.6613 3.96908,-0.9949 8.28649,0.6091 12.35096,0.1334 6.74737,-0.7896 11.9437,-4.1483 18.5003,-5.9211 4.3185,-1.1677 7.74606,-0.094 12.40421,-2.456 0,0 4.16512,8.0784 4.16512,8.0784 m 25.9692,46.7929 c 1.58011,-5.3811 3.02936,-9.7818 3.40327,-15.7057 0.28521,-4.5188 0.92661,-7.9461 0.21765,-12.4189 -0.60133,-3.7913 -2.61214,-6.1492 -4.02476,-9.7182 -2.31203,-5.8413 -2.19876,-7.3189 -7.40039,-10.841 -7.33765,-4.9683 -12.04519,-2.1892 -18.55895,1.114 0,0 -4.11203,-8.1087 -4.11203,-8.1087 4.79991,-2.4341 14.36128,-10.4138 20.74773,-9.0491 4.15382,0.8877 8.3188,7.741 11.13216,10.9243 2.65568,3.0048 8.35926,5.4579 10.00641,9.1141 1.68059,3.7304 0.74114,8.9951 1.29696,13.0493 0.92273,6.7302 4.83439,15.6473 2.91401,22.1629 -1.26483,4.2916 -5.41315,6.9679 -6.88462,11.979 0,0 -8.73744,-2.502 -8.73744,-2.502 m 4.5964,90.376 c -2.21692,-5.1515 -5.57666,-11.4659 -7.08582,-17.2078 -1.15126,-4.3801 -0.79994,-10.0577 -1.41746,-14.544 -0.52382,-3.8027 -2.09638,-8.1622 -2.42188,-11.987 -0.53274,-6.26 -0.12525,-13.33 0.74544,-19.5523 1.22823,-8.7775 4.36145,-19.8321 6.41909,-26.8395 0,0 8.72313,2.5615 8.72313,2.5615 -1.51626,5.1636 1.90676,12.4497 0.37629,18.7999 -0.99544,4.1303 -5.63659,6.7815 -6.10609,11.0043 -0.44318,3.9862 3.096,7.3731 3.2854,11.3791 0.19321,4.0874 -1.89305,7.5256 -1.75031,11.6151 0.23698,6.7889 4.39269,11.6348 6.05012,18.2227 1.09171,4.3391 -0.55839,8.1021 1.5061,12.8994 0,0 -8.32401,3.6486 -8.32401,3.6486 m 73.26106,50.3577 c -5.00583,-2.5292 -10.97167,-4.2888 -16.25502,-6.997 -4.0303,-2.0658 -7.31644,-5.1954 -11.48459,-6.9666 -3.53324,-1.5009 -7.24469,-1.5881 -10.91493,-2.713 -6.00703,-1.841 -14.21837,-4.318 -19.05191,-8.3311 -6.81841,-5.6611 -11.8676,-18.9859 -14.7545,-25.6943 0,0 8.3509,-3.5937 8.3509,-3.5937 2.12732,4.9433 7.95202,8.2117 11.47613,13.7111 2.29213,3.5769 0.80984,7.91 4.5008,10.0135 3.48409,1.9856 7.88821,-0.7594 11.73669,0.3693 3.92665,1.1516 7.00119,4.8437 10.66534,6.6656 6.08281,3.0245 13.53341,3.4644 19.40905,6.874 3.87002,2.2458 5.70458,6.1673 10.36621,8.5226 0,0 -4.04417,8.1396 -4.04417,8.1396 m 87.93945,-0.099 c -3.27146,4.5549 -10.46748,12.1447 -16.10201,14.0152 -4.29817,1.4268 -10.51122,1.4244 -15.01175,1.9297 -3.81478,0.4287 -8.80059,1.7056 -12.6379,1.6179 -6.28046,-0.1436 -14.40948,-2.1506 -20.18507,-4.6239 -8.14729,-3.489 -17.09125,-10.3242 -23.60989,-13.6178 0,0 4.10001,-8.1147 4.10001,-8.1147 4.80352,2.427 12.89493,2.0413 18.52042,5.3611 3.65889,2.1592 4.73609,7.1753 8.75237,8.5611 3.79117,1.3081 7.39675,-1.5923 11.39247,-1.2517 4.07688,0.3476 6.74694,2.7923 10.83816,2.7089 6.79177,-0.1385 10.63679,-3.4216 16.76326,-6.3559 4.0352,-1.9327 6.71651,-1.2401 9.76303,-5.4818 0,0 7.4169,5.2519 7.4169,5.2519 m 14.12507,-89.4883 c 0.45249,5.59 1.95578,12.1398 1.95385,18.0766 -10e-4,4.5288 -1.51063,9.3622 -1.58372,13.8905 -0.0616,3.8384 1.04468,8.0762 0.96132,11.914 -0.13643,6.2812 -1.18571,13.5023 -2.87436,19.5539 -2.38207,8.5365 -9.02948,19.6138 -13.28961,25.5452 0,0 -7.38372,-5.3032 -7.38372,-5.3032 3.13923,-4.3708 1.77022,-11.4758 4.54392,-17.389 1.80404,-3.8461 6.4891,-5.4295 7.46107,-9.5655 0.91749,-3.9043 -2.24232,-7.4548 -2.12049,-11.4635 0.12433,-4.0901 2.68919,-7.5565 3.07902,-11.6301 0.64711,-6.7624 -2.2171,-13.0967 -1.97299,-19.8854 0.16074,-4.4714 2.59317,-7.7437 2.17179,-12.9494 0,0 9.05392,-0.7941 9.05392,-0.7941 m 17.2589,-75.4638 c -4.71954,3.0291 -6.42508,5.8979 -9.47639,10.9905 -2.3276,3.8848 -4.98109,6.4967 -6.46415,10.7756 -1.25674,3.6271 -0.56264,6.5576 -0.94249,10.3773 -0.62168,6.2516 -0.67338,10.7561 -0.61426,17.0387 0.0834,8.8623 -1.21907,19.0725 -0.62984,26.3519 0,0 -9.06183,0.7335 -9.06183,0.7335 -0.4342,-5.3641 -4.92961,-12.4828 -4.69228,-19.0104 0.15437,-4.2456 4.21944,-8.0829 4.39525,-12.328 0.16596,-4.0072 -3.35631,-8.2065 -3.08926,-12.208 0.2725,-4.0828 3.55459,-8.2774 4.95791,-12.1212 2.3296,-6.3809 3.32445,-15.5959 7.82437,-20.6847 2.96384,-3.3518 8.43789,-4.7095 12.83292,-7.5303 0,0 4.96005,7.6151 4.96005,7.6151 m 49.89186,-67.2692 c 0.98258,5.5216 2.86368,13.1809 2.42024,19.1008 -0.33823,4.5158 -2.82224,10.5901 -4.35925,14.8499 -1.30248,3.611 -3.60895,9.6991 -6.05501,12.6566 -4.00343,4.8406 -12.03588,9.9222 -17.91764,12.1306 -8.29706,3.1153 -18.30483,3.8538 -24.45066,7.7983 0,0 -4.9103,-7.6507 -4.9103,-7.6507 4.5288,-2.9066 10.8495,-9.5955 17.17373,-11.2301 4.11335,-1.0632 8.53812,1.8686 12.39561,0.088 3.64129,-1.6809 3.61631,-5.9806 6.40317,-8.8638 2.8435,-2.9418 5.79809,-3.1499 7.72953,-6.7574 3.20632,-5.9888 0.84865,-10.9752 0.97489,-17.7669 0.0831,-4.4734 2.57348,-7.5607 1.65846,-12.7027 0,0 8.93723,-1.6524 8.93723,-1.6524 m -36.59882,-83.4004 c 4.33092,3.562 9.97825,10.2938 12.66205,15.5895 2.04731,4.0396 3.04904,8.9206 5.05318,12.9818 1.69914,3.4424 4.55866,6.4416 6.36673,9.8278 2.95924,5.5421 5.42047,11.8984 7.27462,17.9014 2.61555,8.468 3.10512,20.0622 4.38464,27.2525 0,0 -8.95088,1.5928 -8.95088,1.5928 -0.94286,-5.2984 -6.1617,-10.9456 -7.35623,-17.3671 -0.77693,-4.1767 2.32474,-8.4833 1.04874,-12.5359 -1.20449,-3.8254 -5.77729,-5.3929 -7.63558,-8.9469 -1.89601,-3.6262 -1.30941,-8.0078 -2.89843,-11.7787 -2.63793,-6.2602 -7.93985,-10.5575 -10.97724,-16.6337 -2.00062,-4.0021 -0.66364,-7.5093 -4.69676,-10.8264 0,0 5.72516,-7.0571 5.72516,-7.0571 m 6.06782,-51.79854 c -5.40872,1.48203 -8.9846,3.7286 -13.9774,6.94027 -3.80863,2.44997 -6.56744,2.67237 -8.94567,6.52637 -2.01555,3.2669 -1.18026,4.7676 -1.4111,8.5989 -0.37782,6.2706 -0.42827,8.6572 1.68431,14.573 2.98011,8.3451 10.38904,11.1942 16.02881,15.8327 0,0 -5.77422,7.0206 -5.77422,7.0206 -4.15588,-3.418 -14.01377,-4.0653 -18.15615,-9.1153 -2.69426,-3.2846 -1.85493,-10.5614 -2.77059,-14.7097 -0.86433,-3.9159 -4.74784,-8.3833 -4.70375,-12.3931 0.045,-4.0914 3.82868,-9.271 5.83682,-12.8355 3.33365,-5.91741 9.34167,-14.34083 15.57983,-17.0296 4.10876,-1.771 9.11175,-0.77733 14.14857,-2.15746 0,0 2.46054,8.74882 2.46054,8.74882 m 85.75736,-18.83882 c -1.62227,5.36784 -10.7745,15.69482 -16.62615,16.69302 -4.46379,0.76149 -11.13863,-1.08343 -15.6276,-1.68296 -3.80509,-0.50781 -7.61605,0.0441 -11.44636,-0.20861 -6.26901,-0.41362 -10.19784,0.56446 -16.44226,1.2592 -8.80863,0.98004 -18.80189,0.008 -25.84517,1.93811 0,0 -2.40246,-8.76784 -2.40246,-8.76784 5.19012,-1.42213 12.50596,-6.70148 19.0364,-6.84869 4.24748,-0.0957 8.07058,3.68896 12.29067,3.1961 3.98357,-0.46525 8.33121,-4.57188 12.33901,-4.43143 4.08922,0.14333 7.96612,3.2049 11.96266,4.08436 6.6346,1.45995 10.15778,0.3851 16.37265,-2.35398 4.09341,-1.80414 6.16151,-0.44902 7.67223,-5.44777 0,0 8.71638,2.57049 8.71638,2.57049 m 51.31895,-66.14508 c -0.88338,5.53792 -4.04166,15.61772 -8.28137,19.77294 -3.23415,3.16973 -9.29626,5.55729 -13.19356,7.86404 -3.30333,1.95563 -6.04279,4.73787 -9.23059,6.87638 -5.21744,3.50009 -8.34654,5.05787 -12.52958,9.74494 -5.90077,6.61178 -6.80504,14.64476 -8.91757,21.63481 0,0 -8.70159,-2.62979 -8.70159,-2.62979 1.55671,-5.15089 -1.12629,-13.80225 1.55087,-19.75933 1.74125,-3.87456 8.527,-6.46265 11.8009,-9.17032 3.09041,-2.55593 4.46362,-8.00123 7.81336,-10.20653 3.41782,-2.25009 8.08871,-2.05537 11.77128,-3.83997 6.11334,-2.9626 8.36608,-6.99765 12.49168,-12.39332 2.71729,-3.5539 5.61958,-4.10797 6.44222,-9.26511 0,0 8.98395,1.37126 8.98395,1.37126 m -33.31278,-81.13394 c 1.65168,5.35886 2.43613,10.05291 5.25983,15.27528 2.15403,3.98376 3.13848,7.4779 6.09116,10.91172 2.5031,2.9104 5.95425,4.86345 8.63895,7.60724 4.39402,4.49072 9.64328,11.66631 11.70297,17.60175 2.9055,8.37278 1.91009,22.38921 0.75974,29.60074 0,0 -8.9773,-1.43201 -8.9773,-1.43201 0.84768,-5.3141 -3.24629,-10.56397 -3.8461,-17.06818 -0.39012,-4.23042 2.80263,-7.59013 0.94036,-11.40894 -1.75791,-3.60477 -6.5419,-3.69952 -9.25754,-6.65072 -2.77078,-3.01118 -3.52281,-7.30071 -6.00115,-10.55684 -4.11426,-5.40541 -11.96606,-10.74687 -13.8615,-17.26892 -1.24847,-4.29575 1.42252,-8.88581 -0.1156,-13.87621 0,0 8.66618,-2.73491 8.66618,-2.73491 m -87.49265,-18.75994 c 5.60666,-0.13305 11.42809,-1.69694 17.35648,-2.01713 4.52233,-0.24428 9.17306,0.80363 13.68641,0.42875 3.82568,-0.31815 7.87653,-1.81747 11.70131,-2.14432 6.25995,-0.53494 14.60215,0.18092 20.61136,2.01357 8.47684,2.58519 21.15394,13.75724 23.30478,20.7356 0,0 -8.68703,2.67747 -8.68703,2.67747 -1.58492,-5.14228 -7.18495,-3.83351 -12.77125,-7.21705 -3.6334,-2.2007 -4.49954,-6.7156 -8.66545,-7.54964 -3.93242,-0.78728 -7.1097,2.61702 -11.11483,2.82515 -4.08649,0.21233 -7.60493,-2.02987 -11.69598,-1.93472 -6.79146,0.158 -13.18901,3.43625 -19.98114,3.56083 -4.47365,0.0821 -8.24687,-2.41815 -13.46802,-2.29425 0,0 -0.27664,-9.08426 -0.27664,-9.08426 M 483.09116,790.9115 c 4.74762,2.98544 10.00321,4.52888 15.35616,7.09627 4.08339,1.95845 6.5246,4.16113 10.99945,4.85706 3.79312,0.58952 7.02057,-0.26303 10.8592,-0.28864 6.28263,-0.0419 12.35922,0.0396 18.61672,0.60468 8.8271,0.79705 18.59735,4.29617 25.89839,4.12291 0,0 0.21568,9.08871 0.21568,9.08871 -5.38006,0.12767 -13.51063,3.2313 -19.9211,1.97715 -4.16945,-0.81572 -7.04264,-5.17764 -11.27994,-5.4912 -3.99981,-0.29599 -7.75406,3.32441 -11.76461,3.31641 -4.09203,-0.008 -8.22773,-2.68886 -12.2264,-3.55746 -6.63811,-1.44193 -15.23881,-1.44962 -21.14276,-4.80954 -3.88866,-2.21298 -5.97591,-6.41007 -10.39709,-9.19023 0,0 4.7863,-7.72612 4.7863,-7.72612 m -40.54347,-64.24773 c -0.86535,5.54108 -0.47111,9.82261 0.31306,15.70654 0.59821,4.48843 0.36563,7.1642 2.5688,11.12102 1.86783,3.35377 4.62171,5.0049 7.11792,7.92115 4.08551,4.77298 7.30465,8.30625 11.71974,12.77601 6.22812,6.30522 12.17787,13.57272 18.36027,17.46039 0,0 -4.83958,7.69616 -4.83958,7.69616 -4.55573,-2.86478 -13.73855,-4.53835 -18.14752,-9.35748 -2.86765,-3.13441 -2.60138,-8.75984 -5.47175,-11.89211 -2.70949,-2.95673 -8.08999,-3.45318 -10.74917,-6.45538 -2.71318,-3.06321 -3.46132,-8.11848 -5.34197,-11.75282 -3.12206,-6.0333 -8.72729,-14.04883 -8.56304,-20.83943 0.10815,-4.47264 3.23852,-8.56597 4.04437,-13.72605 0,0 8.98887,1.342 8.98887,1.342 m -43.28523,-66.3021 c 5.60835,-0.0178 13.77821,-0.65047 19.47154,1.03122 4.34303,1.28281 9.90995,5.13266 13.67041,7.65528 3.18773,2.13795 8.84086,5.48353 11.13185,8.5632 3.74963,5.04045 5.62834,16.24106 4.99523,22.49179 -0.89307,8.81753 -5.71756,19.21056 -6.84442,26.42621 0,0 -8.98241,-1.40278 -8.98241,-1.40278 0.83037,-5.31713 -1.41131,-13.09489 0.25187,-19.41111 1.08175,-4.10815 5.79136,-6.37205 5.79296,-10.62039 0.002,-4.01024 -3.56329,-5.01785 -5.58353,-8.48203 -2.06125,-3.53457 -1.66178,-6.001 -4.74933,-8.68567 -5.12561,-4.45675 -10.45743,-3.20424 -17.07155,-4.75225 -4.3564,-1.01956 -6.76999,-3.74178 -11.99272,-3.7252 0,0 -0.0899,-9.08827 -0.0899,-9.08827 m 3253.87514,69.19872 c -0.6843,-5.5665 -3.1582,-11.16491 -4.0486,-17.03472 -0.6793,-4.47765 -0.1659,-9.97781 -0.3559,-14.5024 -0.1615,-3.83521 -1.0091,-9.81924 -0.169,-13.56466 1.3749,-6.13009 9.3646,-15.10307 14.7883,-18.27324 7.6509,-4.47198 22.0326,-4.71992 29.3323,-4.95014 0,0 0.2865,9.08697 0.2865,9.08697 -5.379,0.16965 -10.292,4.47388 -16.6537,5.95321 -4.1377,0.96218 -7.8189,-1.83217 -11.1906,0.75231 -3.1827,2.43964 -1.6123,5.90919 -3.0715,9.64452 -1.4889,3.81121 -3.5323,5.17824 -3.8152,9.26016 -0.4696,6.77633 3.6982,12.08592 4.5504,18.82545 0.5613,4.439 -1.277,8.44932 -0.6398,13.63307 0,0 -9.0132,1.16947 -9.0132,1.16947 m -43.4689,62.87153 c 4.8479,-2.81971 8.568,-6.79217 13.2991,-10.37851 3.609,-2.73578 7.4336,-4.02521 10.5263,-7.33336 2.6212,-2.80439 3.7928,-5.96029 5.9531,-9.13307 3.5358,-5.19284 6.1493,-9.15563 9.29,-14.59718 4.4305,-7.6761 6.156,-14.28694 5.265,-21.53569 0,0 9.0236,-1.10924 9.0236,-1.10924 0.6566,5.34152 4.7467,15.70326 2.17,21.70522 -1.6759,3.90375 -7.6769,6.13046 -9.9892,9.69491 -2.1826,3.36467 -1.2538,8.56967 -3.4158,11.94758 -2.2059,3.44651 -7.0257,5.37865 -9.9932,8.19597 -4.9264,4.67702 -8.8649,11.64352 -14.5646,15.3392 -3.7541,2.4342 -8.4275,2.40377 -12.9421,5.02961 0,0 -4.6222,-7.82544 -4.6222,-7.82544 m -82.3408,13.92698 c 5.6067,0.13305 11.0025,-1.24271 16.9224,-1.69303 4.5158,-0.34355 9.4325,0.84316 13.9522,0.5539 3.8311,-0.24558 7.3924,-1.737 11.1937,-2.27146 6.2215,-0.87475 11.1727,-1.30539 17.347,-2.46603 8.7097,-1.63727 17.0505,-3.62554 23.3635,-7.2974 0,0 4.5709,7.85872 4.5709,7.85872 -4.652,2.70575 -10.6835,10.48683 -17.0785,11.81701 -4.1593,0.86517 -9.0691,-2.43516 -13.2735,-1.82408 -3.9687,0.57682 -7.2515,4.53436 -11.2124,5.16357 -4.0414,0.64196 -8.3143,-1.54249 -12.4065,-1.52491 -6.7934,0.0292 -13.0048,3.20366 -19.7932,3.45574 -4.4712,0.16609 -8.519,-2.56097 -13.7402,-2.68487 0,0 0.1546,-9.08716 0.1546,-9.08716 m -85.213,22.40543 c 1.1494,-5.4893 7.3904,-15.82351 12.6938,-18.49005 4.0456,-2.03414 10.3399,-2.93527 14.7472,-3.97664 3.7356,-0.88308 8.2088,-2.86335 12.0096,-3.40139 6.2207,-0.88062 13.4204,-0.68682 19.6731,-0.0703 8.8202,0.86971 18.7676,4.23048 26.0687,4.40373 0,0 -0.2157,9.08872 -0.2157,9.08872 -5.3801,-0.12768 -13.3444,3.11216 -19.7516,1.84082 -4.1672,-0.8269 -7.0591,-5.32456 -11.2896,-5.71839 -3.9934,-0.37175 -7.0995,3.33139 -11.0885,3.74624 -4.0701,0.42324 -7.3242,-1.68915 -11.3554,-0.98713 -6.6921,1.16543 -10.171,5.17648 -15.9753,8.70572 -3.823,2.32458 -5.5379,1.54964 -6.6083,6.6615 0,0 -8.908,-1.80285 -8.908,-1.80285 m -31.7171,81.25722 c -1.4849,-5.40758 -2.7916,-14.34828 -1.8263,-20.20606 0.7364,-4.46849 3.6565,-10.29721 5.5372,-14.41702 1.5937,-3.49227 3.0602,-8.29411 5.0575,-11.57212 3.269,-5.36505 7.7115,-10.41422 11.8807,-15.11429 5.8813,-6.63011 10.4238,-12.62099 11.9206,-19.76921 0,0 8.8984,1.86322 8.8984,1.86322 -1.1029,5.26744 -0.38,16.31971 -4.7353,21.18738 -2.8326,3.16599 -8.5431,3.3687 -11.3451,6.56242 -2.6449,3.01472 -1.9558,7.78955 -4.1815,11.12582 -2.2709,3.40404 -5.9757,4.57036 -8.0206,8.11479 -3.3948,5.88407 -1.6378,11.2567 -2.4758,17.99775 -0.552,4.44001 -3.3457,6.72626 -1.9628,11.76202 0,0 -8.747,2.4653 -8.747,2.4653 m 52.0332,66.144 c -2.3783,-5.07864 -4.4746,-12.1888 -5.8055,-17.9743 -1.0153,-4.41333 0.1486,-6.77556 -3.0022,-10.02812 -2.6711,-2.75674 -5.0622,-2.90986 -8.5114,-4.59414 -5.6453,-2.75664 -11.5592,-5.25053 -16.7824,-8.74165 -7.3681,-4.9247 -15.158,-17.99463 -17.0918,-25.03643 0,0 8.766,-2.40723 8.766,-2.40723 1.425,5.18902 6.1458,6.70687 10.7982,11.29145 3.026,2.98186 2.9362,7.7508 6.6217,9.86502 3.4789,1.99572 8.3166,0.28601 11.9675,1.94577 3.7251,1.6935 6.8022,6.56298 9.6276,9.52271 4.6904,4.91338 10.3839,13.08585 11.303,19.81667 0.6053,4.43326 -1.9014,7.70144 0.3134,12.43087 0,0 -8.2041,3.90938 -8.2041,3.90938 m 87.0079,15.92722 c -5.3285,-1.74802 -10.7939,-1.44356 -16.6302,-2.53125 -4.4521,-0.82968 -8.5832,-2.81368 -13.076,-3.38379 -3.8084,-0.48286 -6.2436,0.0838 -10.0427,0.63007 -6.2178,0.894 -11.5908,2.30235 -17.8305,3.03799 -8.8019,1.03773 -25.5427,-7.43618 -28.6398,-14.04963 0,0 8.2328,-3.85537 8.2328,-3.85537 2.2822,4.87338 5.8822,2.73062 12.3399,3.71039 4.2002,0.63725 6.8132,4.27249 11.0162,3.65002 3.9674,-0.58758 7.0065,-4.93017 10.9441,-5.6898 4.0177,-0.77504 9.2862,2.05221 13.3079,2.80829 6.6763,1.25514 13.789,-0.50443 20.4185,0.97715 4.3666,0.9758 7.7724,4.41417 12.7345,6.042 0,0 -2.7747,8.65393 -2.7747,8.65393 m 0.5729,53.44515 c 3.97,-3.961 9.6579,-8.1831 14.4835,-11.6406 3.6812,-2.6375 6.0182,-2.055 7.3099,-6.3951 1.0946,-3.679 0.1446,-5.4235 -0.31,-9.2348 -0.7441,-6.2379 -0.5667,-8.0915 -4.233,-13.1934 -5.1719,-7.19697 -10.6131,-11.53255 -17.5518,-13.80884 0,0 2.8336,-8.63777 2.8336,-8.63777 5.1131,1.67738 15.9106,2.37268 20.4022,7.11453 2.9213,3.08415 2.9292,9.67359 4.7519,13.51058 1.7206,3.6218 6.3892,7.4433 7.054,11.3979 0.6782,4.035 -2.0344,9.5963 -3.1919,13.5208 -1.9215,6.5149 -7.4868,15.6427 -13.3908,19.0029 -3.8887,2.2132 -7.9984,1.0655 -11.6954,4.7542 0,0 -6.4622,-6.3904 -6.4622,-6.3904 m -34.3213,84.2318 c 0.8187,-5.5483 1.0662,-12.7268 2.7969,-18.4059 1.3202,-4.3322 4.1118,-8.5544 5.5148,-12.8604 1.189,-3.65 1.3196,-7.7908 2.4049,-11.4728 1.7763,-6.0263 4.5633,-12.4721 7.5903,-17.9777 4.2701,-7.7665 11.4599,-17.7402 16.6296,-22.8984 0,0 6.4211,6.4356 6.4211,6.4356 -3.8095,3.801 -2.919,11.5656 -6.6662,16.9157 -2.4372,3.4798 -7.5552,4.2924 -9.4732,8.0836 -1.8106,3.5787 0.2915,8.0778 -0.9937,11.8767 -1.3115,3.8762 -4.7049,6.4 -6.2022,10.2083 -2.4856,6.3221 -1.8036,12.9136 -3.7226,19.4302 -1.264,4.2921 -4.5373,6.7647 -5.2997,11.9315 0,0 -9,-1.2664 -9,-1.2664 m 52.7213,65.5747 c -4.552,-3.2753 -9.3902,-4.0379 -14.8777,-6.3043 -4.186,-1.7289 -8.2067,-4.7004 -12.3597,-6.5066 -3.5205,-1.5307 -8.7643,-2.85 -11.9864,-4.9357 -5.2735,-3.4136 -11.9474,-12.2537 -13.7379,-18.2758 -2.5259,-8.4951 0.036,-22.2002 1.1021,-29.4252 0,0 8.994,1.3273 8.994,1.3273 -0.7856,5.324 2.3472,10.9791 2.6543,17.5029 0.1998,4.2432 -3.6041,7.4979 -1.7176,11.3048 1.7808,3.5935 5.8564,2.9846 9.0563,5.4012 3.2649,2.4658 4.2569,5.6229 7.844,7.5921 5.9548,3.2689 13.1453,2.666 19.2689,5.6065 4.0334,1.9368 6.7787,6.2505 11.0177,9.3005 0,0 -5.258,7.4123 -5.258,7.4123 m 14.6764,77.0112 c 0.4525,-5.5901 -0.2339,-11.9186 0.3918,-17.8225 0.4772,-4.5036 2.3007,-8.4777 2.2746,-13.0066 -0.023,-3.8388 -1.354,-6.7185 -2.0859,-10.4867 -1.1979,-6.1673 -2.268,-10.3857 -4.2337,-16.3529 -2.773,-8.4176 -4.5869,-15.7845 -10.5145,-20.0495 0,0 5.3093,-7.3791 5.3093,-7.3791 4.368,3.1429 13.9686,8.96 16.0349,15.1562 1.344,4.0301 -1.1815,9.1692 -0.01,13.2517 1.1102,3.8537 5.5231,6.9877 6.4068,10.8995 0.9017,3.9913 -1.1064,8.9243 -1.3267,13.0105 -0.3656,6.7834 1.7481,13.9253 0.7921,20.6508 -0.6297,4.4298 -3.5581,7.5953 -3.9795,12.801 0,0 -9.0638,-0.6724 -9.0638,-0.6724 m 16.4478,89.1107 c -3.5045,-4.378 -8.4064,-11.1921 -10.3648,-16.7968 -1.494,-4.2753 -1.4668,-9.7643 -2.6167,-14.1447 -0.975,-3.7128 -2.9947,-7.7468 -3.8374,-11.4918 -1.3793,-6.1295 -1.9323,-13.1631 -1.9368,-19.4461 -0.01,-8.8631 2.5869,-19.8816 3.1762,-27.1611 0,0 9.0618,0.7336 9.0618,0.7336 -0.4342,5.3641 3.1841,12.415 2.4885,18.9096 -0.4524,4.2242 -4.741,7.4387 -4.6312,11.6861 0.1036,4.0093 4.0621,6.8712 4.8035,10.8126 0.7564,4.0215 -0.8993,7.777 -0.2423,11.816 1.0906,6.705 5.1728,11.2843 7.5733,17.639 1.5812,4.1856 0.3188,7.6398 3.5823,11.7168 0,0 -7.0564,5.7268 -7.0564,5.7268 m 88.6564,-4.0452 c -5.0058,2.5292 -10.244,6.4362 -15.6721,8.8409 -4.1407,1.8344 -9.4104,2.464 -13.652,4.051 -3.5953,1.3456 -7.5553,3.842 -11.2239,4.9711 -6.0043,1.8482 -14.9922,2.2851 -21.1955,1.2882 -8.7505,-1.4063 -21.6694,-9.9493 -26.2329,-15.6503 0,0 7.0969,-5.681 7.0969,-5.681 3.3629,4.201 8.7419,3.0332 14.8368,5.3822 3.9641,1.5278 5.7064,6.1198 9.9379,6.5015 3.9944,0.3602 6.33,-3.5721 10.2247,-4.5276 3.9738,-0.9748 7.6007,0.4071 11.5523,-0.6555 6.5601,-1.764 10.9697,-6.9558 17.2746,-9.4844 4.1528,-1.6655 8.2384,-0.7653 12.9001,-3.1206 0,0 4.1531,8.0845 4.1531,8.0845 m 71.7051,-52.0225 c -2.0523,5.2194 -4.2548,12.9504 -7.7974,17.7144 -2.7024,3.6342 -8.2307,7.5578 -11.9071,10.2017 -3.1161,2.2413 -7.5576,5.3141 -11.0518,6.9035 -5.719,2.6014 -10.857,4.9195 -16.6767,7.2872 -8.2095,3.3399 -18.1463,5.8446 -24.6649,9.1382 0,0 -4.1,-8.1147 -4.1,-8.1147 4.8035,-2.427 9.8359,-9.34 16.0118,-11.4674 4.0169,-1.3838 8.9504,1.0309 12.9151,-0.4968 3.7424,-1.4422 5.6097,-6.2494 9.2369,-7.9606 3.7009,-1.7459 7.7585,-0.1751 11.3349,-2.1628 5.9372,-3.2997 6.5932,-8.8165 10.4192,-14.429 2.5199,-3.6967 5.8883,-5.0222 7.7995,-9.8827 0,0 8.4805,3.269 8.4805,3.269 m 2.3355,-90.4702 c 1.7677,5.3223 4.0317,12.5567 4.5924,18.4672 0.4277,4.5087 -0.4807,9.2027 0.078,13.697 0.4737,3.8096 2.1361,7.861 2.5841,11.6735 0.7332,6.2398 0.5513,13.6813 -0.4012,19.8912 -1.3437,8.7601 -7.3267,19.6258 -9.9992,26.4225 0,0 -8.4609,-3.3268 -8.4609,-3.3268 1.9694,-5.0085 0.4573,-12.2669 2.5697,-18.4472 1.374,-4.0198 6.0769,-6.0321 6.5199,-10.2576 0.4182,-3.9886 -3.1363,-7.0417 -3.5698,-11.0287 -0.4423,-4.068 1.7302,-7.7793 1.4685,-11.8631 -0.4345,-6.7793 -3.9198,-13.0442 -4.3201,-19.8257 -0.2637,-4.4666 1.9793,-7.5233 0.3331,-12.4797 0,0 8.6058,-2.9226 8.6058,-2.9226 m 29.7842,-42.2127 c -5.0021,-2.5367 -9.0138,-4.0176 -14.8476,-5.1167 -4.4502,-0.8384 -4.5928,-2.4048 -8.0166,0.5587 -2.9019,2.5123 -2.4338,4.3686 -3.8541,7.9348 -2.3245,5.8366 -2.7015,9.6655 -3.7806,15.8547 -1.5222,8.7308 -2.414,16.3249 -0.112,23.2557 0,0 -8.6278,2.8657 -8.6278,2.8657 -1.6964,-5.1073 -8.2277,-14.3877 -6.823,-20.7668 0.9137,-4.1491 5.6046,-7.1525 6.473,-11.3116 0.8196,-3.9259 -1.6156,-8.7791 -0.5548,-12.6463 1.0825,-3.9457 6.3347,-8.2997 9.4186,-10.9887 5.1195,-4.4639 17.3172,-8.8573 23.5556,-6.1706 4.1089,1.7695 6.5673,6.0353 11.2255,8.3975 0,0 -4.0562,8.1336 -4.0562,8.1336 m 71.8336,31.7239 c -1.1894,-5.4805 -2.9944,-7.1517 -7.4076,-11.1222 -3.3664,-3.0287 -4.8441,-5.3589 -9.0934,-6.925 -3.6021,-1.3272 -6.5512,-0.6885 -10.3626,-1.145 -6.238,-0.7471 -12.1822,-1.4381 -18.3355,-2.7085 -8.68,-1.792 -19.7268,-7.2969 -26.2406,-10.6001 0,0 4.1121,-8.1087 4.1121,-8.1087 4.7999,2.4341 11.457,0.8987 17.6889,2.8557 4.0533,1.2728 6.4162,5.9947 10.5917,6.7807 3.9415,0.742 7.9199,-2.3478 11.914,-1.987 4.0753,0.3681 8.2185,3.7471 12.0222,5.2558 6.3145,2.5047 16.5888,5.2567 20.3593,10.9054 2.4835,3.7205 2.5122,9.7082 3.6198,14.8119 0,0 -8.8683,1.987 -8.8683,1.987 m -20.6368,82.6199 c -0.3479,-5.5975 -0.901,-14.4595 1.0426,-20.0691 1.4826,-4.2792 4.9046,-8.7832 6.8686,-12.864 1.6643,-3.4592 2.1782,-7.4033 3.6413,-10.9522 2.3947,-5.8084 4.6928,-10.1532 6.7666,-16.0839 2.9254,-8.366 4.7177,-15.6986 3.1689,-22.8354 0,0 8.8842,-1.9281 8.8842,-1.9281 1.1413,5.2591 5.7908,14.9749 3.9703,21.2475 -1.184,4.0798 -6.4799,6.9939 -8.1318,10.9083 -1.5593,3.6951 0.1417,8.6444 -1.419,12.3388 -1.5924,3.7695 -5.4213,6.1836 -7.4124,9.7586 -3.3053,5.9347 -3.2379,11.5278 -4.8541,18.1254 -1.0645,4.3456 -3.7821,6.5168 -3.4582,11.7294 0,0 -9.067,0.6247 -9.067,0.6247 m 63.9558,49.3849 c -3.9775,-3.9534 -6.7855,-2.7732 -12.6859,-3.4269 -4.5009,-0.4986 -8.6002,-1.8538 -13.1283,-1.9388 -3.8381,-0.072 -9.466,0.6347 -13.21,-0.2103 -6.1279,-1.3831 -15.5411,-9.6318 -18.3979,-15.2268 -4.0299,-7.8925 -5.2114,-21.3471 -5.6644,-28.6362 0,0 9.0739,-0.5639 9.0739,-0.5639 0.3338,5.3713 4.9638,10.0067 6.7549,16.2877 1.1649,4.0852 -1.6061,8.1523 0.893,11.5883 2.359,3.2434 5.7655,1.6286 9.5124,3.0565 3.823,1.4569 5.4134,3.5759 9.4774,4.052 6.7467,0.7902 14.3046,-2.3381 20.9211,-0.8001 4.358,1.013 9.1131,5.6483 12.817,9.3299 0,0 -6.3632,6.4886 -6.3632,6.4886 m 10.1437,79.625 c -0.6254,-5.572 1.6497,-14.296 3.6115,-19.8992 1.4966,-4.2743 2.5216,-6.1979 2.0239,-10.6994 -0.4223,-3.8157 -2.0362,-7.1211 -2.8466,-10.8733 -1.3264,-6.1412 -2.2697,-11.3412 -3.6188,-17.4772 -1.9032,-8.6557 -3.5202,-16.1455 -8.6997,-21.2937 0,0 6.4087,-6.4477 6.4087,-6.4477 3.8167,3.7936 12.4769,10.091 14.1409,16.4073 1.0823,4.1083 -1.8904,9.2131 -1.1298,13.3931 0.718,3.9457 5.0556,6.9769 5.8682,10.9043 0.8292,4.0071 -0.9999,8.3619 -0.7933,12.4489 0.343,6.7848 2.1891,16.0315 -0.5189,22.2616 -1.7836,4.1035 -6.0057,5.0123 -5.4233,10.2012 0,0 -9.0228,1.0741 -9.0228,1.0741 m 86.4355,22.532 c -5.5804,-0.5605 -11.1101,0.1853 -17.0468,0.1395 -4.5288,-0.035 -8.8845,-1.2345 -13.4049,-0.9582 -3.8317,0.2345 -7.6917,1.7315 -11.5132,2.0946 -6.2546,0.5943 -14.4571,0.1319 -20.5165,-1.528 -8.5475,-2.3416 -22.2743,-15.1211 -23.0887,-22.377 0,0 9.0326,-1.0138 9.0326,-1.0138 0.6001,5.3468 5.9814,3.9297 11.7052,7.0752 3.7229,2.0458 4.7674,6.7235 8.946,7.4916 3.9445,0.7252 7.1631,-2.8845 11.1679,-3.0967 4.0861,-0.2164 7.6976,1.8976 11.7898,1.8918 6.7932,-0.01 13.7372,-3.1528 20.5106,-2.6377 4.4613,0.3392 8.069,3.3474 13.2657,3.8694 0,0 -0.8477,9.0493 -0.8477,9.0493 m 63.0984,-47.3976 c 1.3083,5.4533 3.2801,14.3146 2.1916,20.1502 -0.8303,4.4515 -4.42,10.996 -6.9985,14.7187 -2.1852,3.1558 -6.3715,8.2076 -9.5452,10.3661 -5.1944,3.5328 -15.126,5.5341 -21.4088,5.5777 -8.8627,0.062 -19.9835,-3.5518 -27.2504,-4.2818 0,0 0.9087,-9.0462 0.9087,-9.0462 5.3549,0.5379 12.657,-2.5208 19.112,-1.5224 4.1985,0.6494 6.9924,4.9368 11.2288,4.6141 3.999,-0.3047 5.3549,-4.3731 8.9359,-6.1779 3.6538,-1.8414 6.3984,-0.8941 9.2573,-3.8213 4.746,-4.8595 2.4301,-9.6951 3.1473,-16.4497 0.4723,-4.449 2.8167,-6.8696 1.5983,-11.948 0,0 8.823,-2.1795 8.823,-2.1795 m -57.7732,-68.5095 c 3.7784,4.1446 8.6847,7.2149 12.9792,11.3143 3.2759,3.1271 5.6149,7.0224 9.09,9.9267 2.9459,2.4616 6.8043,4.068 9.8153,6.449 4.928,3.8969 10.3572,9.1028 14.0338,14.1975 5.1864,7.1867 9.3042,19.7238 11.0079,26.8252 0,0 -8.8401,2.1209 -8.8401,2.1209 -1.2555,-5.2329 -7.1023,-8.7033 -9.9968,-14.5585 -1.8826,-3.8082 -0.1176,-8.4289 -2.854,-11.6791 -2.583,-3.0681 -7.3676,-2.6617 -10.4917,-5.1764 -3.1875,-2.5658 -4.3959,-6.7935 -7.374,-9.6002 -4.9438,-4.6593 -11.8795,-7.097 -16.6232,-11.9596 -3.1245,-3.2027 -3.9031,-7.8321 -7.4217,-11.6918 0,0 6.6753,-6.168 6.6753,-6.168 m -10.7983,-71.4232 c -3.6338,4.2717 -4.9944,8.3783 -7.3438,13.8302 -1.7922,4.1588 -3.2982,6.0778 -3.1754,10.6049 0.1044,3.8373 1.8011,5.7506 3.1088,9.3596 2.1401,5.9066 4.1718,10.5335 6.5174,16.362 3.3088,8.2219 6.1274,16.4562 11.0476,21.8534 0,0 -6.7186,6.1249 -6.7186,6.1249 -3.6257,-3.9771 -12.1466,-8.9874 -14.5115,-15.0756 -1.5382,-3.9598 0.8663,-9.1222 -0.7414,-13.055 -1.5176,-3.7123 -6.2729,-6.0404 -7.7539,-9.7673 -1.5111,-3.8027 -0.3148,-9.3636 -0.3833,-13.4546 -0.1137,-6.7914 -0.8432,-16.7179 2.6037,-22.5713 2.2703,-3.8554 7.0046,-6.0755 10.3886,-10.0534 0,0 6.9618,5.8422 6.9618,5.8422 m 58.0131,-67.4312 c -2.7609,4.8816 -6.5259,11.5317 -10.543,15.9033 -3.0643,3.3348 -7.2968,5.7521 -10.2975,9.1444 -2.5432,2.8757 -3.8199,6.1783 -5.9902,9.3445 -3.5521,5.182 -7.3994,10.6368 -11.7829,15.1377 -6.1836,6.3493 -15.3309,11.7744 -20.0629,17.3369 0,0 -6.9246,-5.8907 -6.9246,-5.8907 3.487,-4.0989 6.1434,-12.3861 11.2453,-16.4651 3.3184,-2.653 8.5448,-1.8387 11.3785,-5.0043 2.6748,-2.9881 1.6619,-8.1515 3.9579,-11.4397 2.3427,-3.3549 6.8509,-4.9968 9.7094,-7.9251 4.7453,-4.8613 7.1962,-11.2756 11.8221,-16.2502 3.0469,-3.2765 6.9761,-3.7667 9.5472,-8.3126 0,0 7.9407,4.4209 7.9407,4.4209 m 2.1619,-79.2159 c -2.9435,4.7738 -5.5002,9.7416 -8.2379,15.0087 -2.0884,4.0179 -4.2856,4.8284 -3.6831,9.316 0.5112,3.8038 2.4483,4.0208 4.8187,7.0399 3.8797,4.9413 9.1142,10.9969 11.2321,16.9115 2.9877,8.3434 -3.4546,24.1542 -7.0499,30.511 0,0 -7.9133,-4.4755 -7.9133,-4.4755 2.6493,-4.6843 1.1114,-10.1483 2.1894,-16.5888 0.7011,-4.189 3.748,-5.7968 1.6161,-9.4715 -2.0125,-3.4688 -7.0054,-3.8973 -9.5836,-6.9692 -2.6304,-3.1344 -3.4507,-9.2616 -4.3387,-13.2556 -1.4741,-6.6303 -0.4006,-17.7868 3.5021,-23.3469 2.5704,-3.6622 6.939,-4.9521 9.6801,-9.3976 0,0 7.768,4.718 7.768,4.718 m -16.7356,-82.5907 c 2.0552,5.217 6.1975,6.6581 10.3983,10.8534 3.2046,3.2003 6.0626,7.8774 8.9201,11.3908 2.4224,2.9778 6.5571,8.5538 7.5893,12.2507 1.6893,6.0508 1.7312,14.9467 0.6358,21.1334 -1.5451,8.7273 -7.7163,20.2888 -11.5493,26.5052 0,0 -7.7386,-4.7715 -7.7386,-4.7715 2.8246,-4.5809 1.2648,-11.095 3.3839,-17.2735 1.3783,-4.0186 6.1302,-6.0296 6.5965,-10.2527 0.4402,-3.9863 -3.2527,-6.4519 -4.0934,-10.373 -0.8578,-4.0008 0.7318,-6.4233 -1.3408,-9.9513 -3.4408,-5.8568 -10.5059,-7.4408 -14.931,-12.5946 -2.9146,-3.3946 -4.3888,-8.6713 -6.3028,-13.5296 0,0 8.432,-3.3873 8.432,-3.3873 m 3.498,-81.44531 c 3.975,3.95604 10.1318,11.41237 11.6987,17.13823 1.1953,4.36783 0.6683,10.5212 0.993,15.03819 0.2757,3.82876 1.3289,8.59871 1.2296,12.43601 -0.1627,6.28045 -2.6017,17.23968 -6.8062,21.90698 -5.9311,6.5838 -14.0998,8.4514 -11.4234,15.2451 0,0 -8.4571,3.3316 -8.4571,3.3316 -1.9722,-5.0061 -1.1764,-19.7572 4.0806,-23.6341 3.4193,-2.52158 8.5794,-0.6033 10.1427,-4.55318 1.4757,-3.72849 -1.5494,-7.20796 -1.2645,-11.20826 0.2908,-4.08156 2.8876,-7.02215 3.0102,-11.11227 0.2037,-6.78992 -3.0487,-11.04969 -5.3244,-17.44979 -1.499,-4.21543 -0.5451,-6.96982 -4.2468,-10.65385 0,0 6.3676,-6.48466 6.3676,-6.48466 m -44.6037,-71.73605 c 2.3146,5.10844 5.9022,10.53517 8.0837,16.05682 1.6642,4.21207 2.0291,8.81197 3.9478,12.91437 1.6267,3.47719 4.1908,5.97161 6.2199,9.23019 3.3211,5.33327 5.8372,9.73382 9.3288,14.95691 4.9255,7.36789 11.2328,14.04355 16.4091,19.19514 0,0 -6.413,6.44373 -6.413,6.44373 -3.8144,-3.79616 -12.5899,-5.48918 -16.6532,-10.60308 -2.6428,-3.32613 -1.7869,-9.46638 -4.0268,-13.07659 -2.1144,-3.40787 -7.2397,-4.8673 -9.3301,-8.29 -2.1328,-3.49224 -1.9143,-8.27085 -3.424,-12.07433 -2.5063,-6.31409 -7.6387,-11.4762 -9.9083,-17.87908 -1.4949,-4.21726 -0.3316,-8.31034 -2.4871,-13.06753 0,0 8.2532,-3.80655 8.2532,-3.80655 m -74.7811,-43.32972 c 5.5168,-1.00893 12.6728,-3.32617 18.609,-3.26486 4.5284,0.0467 10.6204,2.1201 14.9985,3.27837 3.7111,0.98143 9.3971,2.27709 12.7575,4.1326 5.4999,3.0369 11.8553,9.00306 15.6121,14.03856 5.2996,7.10328 8.9964,18.85229 12.0105,25.50455 0,0 -8.281,3.75218 -8.281,3.75218 -2.2211,-4.90198 -8.478,-8.83051 -11.4688,-14.63727 -1.9453,-3.77679 -0.148,-8.56235 -2.8709,-11.82346 -2.5703,-3.07833 -6.8832,-2.08632 -10.3122,-4.16621 -3.4987,-2.12218 -4.6136,-5.49397 -8.387,-7.07685 -6.2642,-2.62767 -11.2321,0.0225 -18.0208,0.26415 -4.4715,0.1592 -7.8143,-2.01218 -12.9518,-1.07263 0,0 -1.6951,-8.92913 -1.6951,-8.92913 m -68.2487,-18.06411 c 1.8144,5.30642 4.9496,8.06187 8.6606,12.69575 2.8308,3.53483 3.4008,6.03186 7.5275,7.89594 3.4982,1.57971 5.8118,0.91244 9.6362,1.24297 6.2593,0.54096 10.302,-0.0502 16.5629,-0.57612 8.8318,-0.74192 18.8342,-1.02375 26.0182,-2.33758 0,0 1.6356,8.94307 1.6356,8.94307 -5.2939,0.96815 -11.7914,6.41607 -18.3054,6.90067 -4.2368,0.31519 -8.5447,-3.41008 -12.7864,-3.16604 -4.0039,0.23036 -8.1272,3.95239 -12.1368,3.88671 -4.091,-0.067 -8.9283,-3.59345 -12.6462,-5.30274 -6.172,-2.83754 -15.101,-7.35708 -18.6875,-13.12598 -2.3624,-3.79968 -2.3685,-9.11709 -4.0581,-14.05865 0,0 8.5794,-2.998 8.5794,-2.998 m -10.0311,-86.42302 c 1.4635,5.41408 4.0081,11.56654 5.1239,17.39783 0.8512,4.44827 0.4164,9.06021 1.508,13.45559 0.9257,3.72562 2.8228,8.20397 3.3964,11.99923 0.9387,6.21165 0.4131,13.45219 -0.1759,19.70759 -0.831,8.82414 -3.0082,17.23452 -0.6455,24.14459 0,0 -8.602,2.9412 -8.602,2.9412 -1.741,-5.09195 -6.765,-14.09329 -5.8338,-20.5585 0.6057,-4.20505 5.0683,-7.441 5.4435,-11.67327 0.3542,-3.99506 -3.1623,-7.15551 -3.5423,-11.14784 -0.3877,-4.07345 1.8093,-7.25726 1.0886,-11.28527 -1.1964,-6.68682 -5.3589,-12.64433 -6.3972,-19.35786 -0.684,-4.42187 1.2414,-8.151 -0.1214,-13.19282 0,0 8.7577,-2.43047 8.7577,-2.43047 m -67.4389,-53.51433 c 5.6057,-0.17584 12.9855,-1.31657 18.8523,-0.40685 4.4753,0.69394 10.1434,3.42707 14.3451,5.11633 3.5616,1.43152 8.8564,3.2136 12.0403,5.35735 5.2111,3.50865 10.8775,10.91829 13.7918,16.48424 4.1111,7.85157 5.6628,20.14028 7.5685,27.19055 0,0 -8.7765,2.37232 -8.7765,2.37232 -1.4043,-5.19527 -6.865,-10.18534 -8.8183,-16.41832 -1.2705,-4.05401 1.4228,-8.42051 -0.8574,-12.00534 -2.1525,-3.38391 -6.662,-3.08176 -9.7142,-5.68283 -3.1143,-2.65393 -3.6506,-5.80165 -7.2556,-7.73718 -5.9847,-3.21313 -11.3707,-1.39134 -18.1263,-2.10314 -4.4495,-0.46878 -7.4835,-3.24857 -12.7038,-3.08483 0,0 -0.3459,-9.0823 -0.3459,-9.0823 m -87.2413,-7.15884 c 5.6081,0.0234 12.7622,-0.76019 18.6274,0.15955 4.4741,0.70158 8.8263,2.79159 13.3152,3.39257 3.805,0.50903 7.6554,-0.16836 11.4851,0.0949 6.268,0.43082 11.7744,1.30879 18.025,1.94419 8.8174,0.89631 18.516,2.66729 25.8159,2.43832 0,0 0.285,9.08722 0.285,9.08722 -5.3792,0.16873 -12.9491,4.34884 -19.4373,3.59459 -4.2201,-0.49057 -7.794,-5.01031 -11.9942,-5.6515 -3.9647,-0.60525 -7.9601,2.60978 -11.9587,2.30011 -4.0798,-0.31599 -7.6346,-3.22988 -11.6454,-4.0426 -6.6581,-1.34915 -13.3293,0.38444 -20.0349,-0.70301 -4.4166,-0.71621 -7.2375,-3.50423 -12.46,-3.52601 0,0 -0.023,-9.0883 -0.023,-9.0883 m -2649.208,766.64085 c 4.4772,-3.3856 9.9506,-8.6169 15.3081,-11.1865 4.0869,-1.9601 10.5359,-2.5566 14.9758,-3.4671 3.7634,-0.7722 7.8932,-2.5874 11.6812,-3.2289 6.1999,-1.0498 11.9559,-1.5116 18.2064,-2.1995 8.8173,-0.9705 19.8529,-0.1943 27.1512,-0.5867 0,0 0.488,9.0778 0.488,9.0778 -5.3781,0.2891 -11.8492,4.9295 -18.3836,5.1284 -4.2501,0.1294 -8.1696,-3.6003 -12.4025,-3.1939 -3.9956,0.3836 -7.2015,4.3365 -11.1689,4.9462 -4.048,0.6222 -7.7323,-1.5075 -11.7859,-0.9251 -6.7294,0.9669 -10.5592,5.2109 -16.6628,8.2044 -4.0202,1.9717 -7.707,1.4906 -11.8764,4.6434 0,0 -5.5306,-7.2125 -5.5306,-7.2125 m -73.35114,8.4669 c 4.43637,3.4387 8.32661,4.415 13.98349,6.2327 4.31523,1.3866 7.21098,3.2528 11.73735,3.4898 3.83677,0.2005 6.4822,-1.0854 10.2621,-1.7721 6.1866,-1.1238 9.875,-1.595 15.6714,-4.0324 8.1767,-3.4383 16.3919,-7.2813 22.2222,-11.6901 0,0 5.4837,7.2518 5.4837,7.2518 -4.2963,3.2488 -8.4358,11.2734 -14.3336,14.0927 -3.836,1.8337 -9.6359,-0.1056 -13.715,1.0952 -3.8504,1.1335 -7.1056,5.5194 -11.0347,6.3396 -4.009,0.8368 -8.9434,-1.306 -13.02643,-1.6246 -6.77823,-0.5287 -15.70186,0.6042 -21.87298,-2.2484 -4.06464,-1.8788 -6.76573,-6.7113 -10.89706,-9.9136 0,0 5.51953,-7.2206 5.51953,-7.2206 m -83.69719,-13.8312 c 1.42196,-5.4297 10.57094,-15.7009 16.43203,-16.6733 4.471,-0.7419 11.68458,1.3535 16.09596,2.3934 3.73935,0.8811 8.3924,1.1285 12.07094,2.2362 6.02063,1.813 13.03267,4.3632 18.36513,7.6956 7.52219,4.7008 14.42241,14.3898 20.19949,18.8677 0,0 -5.56966,7.1856 -5.56966,7.1856 -4.25706,-3.2997 -12.18404,-5.2082 -16.85976,-9.7768 -3.04115,-2.9716 -2.75831,-7.7889 -6.60247,-9.6064 -3.62871,-1.7156 -8.20437,0.408 -12.00577,-0.8809 -3.87863,-1.315 -6.26959,-4.6337 -10.13361,-5.9907 -6.41461,-2.2526 -10.0008,-0.4478 -16.45616,1.6826 -4.25181,1.4033 -5.40488,0.054 -6.72907,5.1103 0,0 -8.80705,-2.2433 -8.80705,-2.2433 m -47.65949,67.0328 c 0.52343,-5.5885 0.3977,-13.4367 2.32187,-19.0581 1.46778,-4.2881 5.73906,-9.4262 8.32941,-13.1456 2.19537,-3.153 4.77334,-7.9448 7.49126,-10.6596 4.44839,-4.4433 13.17647,-6.4506 19.06797,-8.6471 8.3108,-3.0984 9.43989,-8.2312 11.29159,-15.3018 0,0 8.79447,2.3032 8.79447,2.3032 -1.36449,5.2102 -0.85115,18.4253 -6.29155,22.0489 -3.53851,2.3568 -10.43135,0.4722 -14.52177,1.6339 -3.86117,1.0967 -5.03387,5.1792 -8.41665,7.3382 -3.45152,2.2028 -5.85889,2.2214 -8.50467,5.3475 -4.3922,5.1897 -3.88512,10.474 -5.7488,17.0124 -1.22748,4.3065 -4.2713,6.7105 -4.75874,11.9148 0,0 -9.05439,-0.7867 -9.05439,-0.7867 m 62.33576,28.9135 c -5.0472,2.4562 -9.72622,5.7131 -14.88824,8.6547 -3.93772,2.244 -8.87652,4.104 -12.98644,6.0141 -3.48358,1.6195 -11.28596,3.8436 -15.08154,3.2507 -6.21217,-0.9704 -15.85839,-11.5403 -17.79553,-17.5225 -2.73262,-8.4387 -1.39836,-21.9519 -0.71675,-29.2293 0,0 9.05168,0.8478 9.05168,0.8478 -0.50227,5.3627 3.29183,10.8793 3.89408,17.3888 0.39171,4.2338 -2.96039,7.683 -1.14164,11.5265 1.71683,3.6281 4.30289,2.1242 8.11261,3.3868 3.8871,1.2882 4.22663,3.5173 8.12749,2.2721 6.47574,-2.0671 10.0932,-9.1086 16.39812,-11.6511 4.15273,-1.6746 8.29414,-0.7968 12.9943,-3.0841 0,0 4.03186,8.1455 4.03186,8.1455 m 84.32659,-0.9423 c -5.53894,0.9089 -12.52368,3.2606 -18.4655,3.2508 -4.5326,-0.01 -10.11573,-1.9827 -14.59236,-2.6926 -3.79464,-0.6014 -8.09736,-0.3645 -11.88787,-0.9913 -6.20387,-1.0258 -10.87858,-2.2605 -17.13593,-2.8756 -8.82687,-0.8678 -16.05358,0.2693 -22.62609,3.4678 0,0 -3.97823,-8.175 -3.97823,-8.175 4.8432,-2.3569 12.39833,-9.6891 18.93324,-9.8352 4.25038,-0.095 8.88552,4.3133 13.06079,5.1183 3.94125,0.7599 8.3603,-2.1109 12.31468,-1.4218 4.03471,0.7031 7.10204,3.9152 11.0738,4.9146 6.59345,1.659 11.96957,-0.6428 18.76465,-0.8565 4.47559,-0.1409 7.84865,1.9844 13.00675,1.1379 0,0 1.53207,8.9586 1.53207,8.9586 m 62.96607,33.6803 c -3.0152,-4.7337 -8.5051,-7.4482 -12.1467,-12.1431 -2.778,-3.5814 -4.1607,-9.7858 -6.1633,-13.852 -1.6979,-3.4465 -2.5358,-3.6546 -5.8012,-5.6781 -5.3443,-3.3118 -7.5141,-2.7296 -13.7864,-3.173 -8.848,-0.6256 -17.99667,-0.8774 -25.20953,0.3063 0,0 -1.47227,-8.9714 -1.47227,-8.9714 5.31508,-0.8723 12.79303,-6.3081 19.3215,-5.9677 4.2462,0.2213 8.2535,4.4731 12.4577,5.1093 3.9686,0.6005 9.5839,-1.5676 13.3116,-0.081 3.8033,1.5172 7.1578,8.6862 8.8684,12.4074 2.8398,6.1773 6.9879,9.5745 11.3757,14.7676 2.89,3.4205 4.0684,7.9335 6.8763,12.3417 0,0 -7.6318,4.9336 -7.6318,4.9336 m -17.5574,72.4079 c 4.8139,-2.8866 5.9442,-5.5958 8.7027,-10.8582 2.1043,-4.0144 4.5767,-6.6409 5.7053,-11.0305 0.9564,-3.7209 0.342,-7.2459 0.8019,-11.0602 0.7528,-6.2427 2.0595,-11.8617 3.1634,-18.0518 1.5571,-8.732 3.8451,-15.7109 -0.081,-21.8751 0,0 7.6671,-4.8837 7.6671,-4.8837 2.8933,4.5423 9.0743,14.7181 7.9118,21.151 -0.7562,4.1841 -5.5745,7.4441 -6.4662,11.6019 -0.8417,3.9247 2.0531,8.0433 1.5381,12.024 -0.5255,4.0615 -3.5153,7.7475 -4.7694,11.6461 -2.0819,6.4719 -2.4539,15.2441 -6.3769,20.7963 -2.5839,3.657 -8.5874,5.6151 -13.0702,8.3032 0,0 -4.7263,-7.763 -4.7263,-7.763 m -5.3405,77.5562 c -1.7132,-5.3451 -3.6795,-9.5362 -6.7162,-14.6427 -2.3166,-3.8953 -3.7592,-7.5278 -6.6421,-11.0255 -2.444,-2.9646 -6.7227,-6.8792 -8.4568,-10.3072 -2.8381,-5.6105 -0.5097,-19.4812 3.0757,-24.6461 5.0577,-7.2859 18.2592,-12.4288 24.5279,-16.1877 0,0 4.6753,7.7971 4.6753,7.7971 -4.6193,2.7699 -8.1496,8.0354 -13.3276,12.0255 -3.3679,2.5951 -7.745,1.6509 -9.6758,5.4394 -1.8225,3.5761 1.4584,4.9809 2.6205,8.8224 1.1857,3.9195 0.5282,6.1981 2.8393,9.5791 3.8368,5.6127 11.9077,10.1666 14.0858,16.6066 1.4347,4.2418 0.035,8.7294 1.63,13.707 0,0 -8.636,2.8321 -8.636,2.8321 m -8.1768,78.2054 c 3.5537,-4.3449 5.4235,-8.3668 7.8401,-13.7947 1.8434,-4.1406 4.0878,-6.879 4.8874,-11.3405 0.6775,-3.7818 -0.439,-6.9395 -0.4533,-10.7812 -0.023,-6.2876 -0.1669,-11.07 -0.6402,-17.3403 -0.6676,-8.8452 -0.3967,-18.2541 -2.6277,-25.2145 0,0 8.6575,-2.7749 8.6575,-2.7749 1.644,5.1291 7.3712,12.3149 7.6981,18.8441 0.2126,4.2467 -3.5879,8.4921 -3.4966,12.7434 0.086,4.013 3.8234,7.7563 3.9625,11.7677 0.1419,4.0928 -2.5162,8.4418 -3.3549,12.4506 -1.3922,6.6548 -1.319,15.593 -4.89,21.3779 -2.3521,3.8102 -7.1998,5.7229 -10.5091,9.769 0,0 -7.0738,-5.7066 -7.0738,-5.7066 m -70.00668,48.6816 c 4.94224,-2.6612 9.59623,-6.6982 14.80074,-9.5653 3.97013,-2.1871 8.54376,-3.1929 12.40624,-5.5649 3.27379,-2.011 5.59415,-5.0664 8.68134,-7.3531 5.05275,-3.7427 9.55011,-6.8052 14.65731,-10.4735 7.20445,-5.1746 15.50775,-9.5154 20.13535,-15.1733 0,0 7.0374,5.7558 7.0374,5.7558 -3.41,4.1693 -6.8073,12.9082 -12.2708,16.4977 -3.5534,2.3347 -9.0687,1.125 -12.5891,3.5101 -3.32303,2.2515 -4.20573,7.2738 -7.38654,9.722 -3.24545,2.498 -7.98029,2.622 -11.54158,4.6445 -5.91201,3.3575 -10.49677,9.0042 -16.56482,12.0708 -3.99672,2.0199 -8.4004,1.4243 -13.00282,3.9026 0,0 -4.36272,-7.9734 -4.36272,-7.9734 m -80.21311,33.8443 c 5.28761,-1.8839 10.66236,-5.0137 16.26851,-6.9832 4.27652,-1.5024 8.87166,-1.6694 13.03997,-3.45 3.53307,-1.5097 6.49327,-4.1307 9.92692,-5.8542 5.61981,-2.8208 11.03808,-5.3143 16.8701,-7.666 8.22689,-3.3175 18.08477,-5.6584 24.52059,-9.1239 0,0 4.31035,8.0049 4.31035,8.0049 -4.74249,2.5537 -9.96049,9.5632 -16.16647,11.6184 -4.03644,1.3368 -8.88872,-1.0861 -12.85674,0.4427 -3.74562,1.4431 -5.39415,6.1853 -8.9539,8.0399 -3.63209,1.8922 -8.28115,1.2355 -12.13658,2.6173 -6.40032,2.2941 -11.85852,7.3509 -18.38448,9.2582 -4.29833,1.2563 -8.40635,-0.1175 -13.33039,1.6369 0,0 -3.10788,-8.541 -3.10788,-8.541 m -83.03772,30.109 c 5.18894,-2.1406 10.79357,-5.6245 16.41283,-7.5563 4.28652,-1.4737 8.96494,-1.68 13.17713,-3.3543 3.57028,-1.4196 6.69991,-3.9115 10.19459,-5.5078 5.7197,-2.6126 11.72161,-4.7458 17.73876,-6.5726 8.48805,-2.5771 18.92118,-3.8442 25.80676,-6.2975 0,0 3.05133,8.5644 3.05133,8.5644 -5.07391,1.8077 -10.86715,8.0176 -17.25333,9.4161 -4.15366,0.9096 -8.65654,-2.0703 -12.71878,-0.8128 -3.83456,1.1872 -5.77014,5.7676 -9.43557,7.4037 -3.73991,1.6692 -8.20692,0.8215 -12.11056,2.0608 -6.48034,2.0575 -11.67542,6.913 -18.14632,8.9994 -4.26205,1.3743 -8.36222,0.042 -13.19438,2.0354 0,0 -3.52246,-8.3785 -3.52246,-8.3785 m -73.43258,51.2055 c -0.88804,-5.5418 2.69164,-18.2334 7.26498,-22.0262 3.48865,-2.8932 10.18884,-4.5891 14.36591,-6.3491 3.5405,-1.4922 6.60447,-4.0232 10.06052,-5.7011 5.65647,-2.7461 10.61877,-5.6683 16.40944,-8.12 8.16855,-3.4586 18.90684,-5.4163 25.66392,-8.2038 0,0 3.46713,8.4045 3.46713,8.4045 -4.97922,2.0541 -10.20127,8.4672 -16.44989,10.3884 -4.06418,1.2496 -8.73486,-1.3414 -12.64163,0.3379 -3.68781,1.5852 -5.25156,6.7211 -8.81377,8.5708 -3.6346,1.8872 -8.40093,1.173 -12.28789,2.4636 -6.45267,2.1426 -9.15672,5.0247 -13.3892,10.344 -2.78769,3.5037 -5.51295,3.232 -4.68597,8.3928 0,0 -8.96355,1.4982 -8.96355,1.4982 m -0.26883,74.7933 c 2.54428,-5.0033 6.55762,-12.1265 10.75271,-16.3348 3.20011,-3.2101 6.13562,-3.3696 7.25907,-7.7603 0.9519,-3.7218 -0.59945,-4.0281 -2.01169,-7.6008 -2.31139,-5.8475 -4.39125,-11.098 -6.45827,-17.036 -2.91585,-8.3765 -7.25655,-18.9825 -8.41296,-26.1992 0,0 8.97617,-1.4383 8.97617,-1.4383 0.85215,5.3179 7.63831,8.9299 9.95513,15.043 1.50689,3.976 -0.87576,9.4174 0.20502,13.5299 1.0202,3.8821 5.88849,5.5075 7.59268,9.1415 1.73878,3.7079 0.721,10.6154 -0.0735,14.6329 -1.31882,6.6693 -5.77728,15.2546 -10.6522,19.9931 -3.21085,3.1211 -6.63394,3.4349 -9.00328,8.0942 0,0 -8.12893,-4.0652 -8.12893,-4.0652 m 63.30523,39.6063 c -5.61326,0 -11.85373,1.1934 -17.79434,1.0607 -4.53166,-0.1012 -8.99231,-1.5271 -13.5237,-1.4143 -3.84098,0.096 -7.5607,1.4364 -11.38838,1.7678 -6.2647,0.5424 -19.29,-3.7932 -22.65797,-9.1027 -4.75102,-7.4898 -0.47758,-25.0075 2.83561,-31.5229 0,0 8.10391,4.1209 8.10391,4.1209 -2.44146,4.8012 -1.78604,8.1187 -0.70267,14.565 0.70465,4.1928 -2.52716,7.4002 0.53017,10.3548 2.88598,2.7891 5.04194,-1.5385 9.04381,-1.8501 4.08319,-0.3179 8.00695,1.9793 12.10016,2.1213 6.79506,0.2357 13.49789,-2.5149 20.28555,-2.1213 4.4707,0.2592 7.87945,2.932 13.10675,2.932 0,0 0.0611,9.0888 0.0611,9.0888 m 88.04778,0 c -5.61326,0 -11.85373,1.1934 -17.79434,1.0607 -4.53166,-0.1012 -8.99231,-1.5271 -13.5237,-1.4143 -3.84098,0.096 -7.5607,1.4364 -11.38838,1.7678 -6.2647,0.5424 -12.57872,0.6069 -18.862,0.3536 -8.86346,-0.3573 -19.16971,-2.6389 -26.47936,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.87065,-3.8978 19.36158,-3.1186 4.22178,0.5068 7.49439,4.8017 11.74426,4.9498 4.01169,0.1398 7.3865,-3.5775 11.38838,-3.8891 4.08319,-0.3179 8.00695,1.9793 12.10016,2.1213 6.79506,0.2357 13.49789,-2.5149 20.28555,-2.1213 4.4707,0.2592 7.87945,2.932 13.10675,2.932 0,0 0.0611,9.0888 0.0611,9.0888 m 88.04778,0 c -5.61326,0 -11.85373,1.1934 -17.79434,1.0607 -4.53166,-0.1012 -8.99231,-1.5271 -13.5237,-1.4143 -3.84098,0.096 -7.5607,1.4364 -11.38838,1.7678 -6.26471,0.5424 -12.57872,0.6069 -18.862,0.3536 -8.86346,-0.3573 -19.16971,-2.6389 -26.47936,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.87065,-3.8978 19.36158,-3.1186 4.22178,0.5068 7.49439,4.8017 11.74426,4.9498 4.01169,0.1398 7.3865,-3.5775 11.38838,-3.8891 4.08318,-0.3179 8.00695,1.9793 12.10016,2.1213 6.79506,0.2357 13.49789,-2.5149 20.28554,-2.1213 4.47071,0.2592 7.87946,2.932 13.10676,2.932 0,0 0.0611,9.0888 0.0611,9.0888 m 88.04778,0 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.56074,1.4364 -11.38842,1.7678 -6.26471,0.5424 -12.57873,0.6069 -18.862,0.3536 -8.86346,-0.3573 -19.16971,-2.6389 -26.47936,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.87065,-3.8978 19.36158,-3.1186 4.22178,0.5068 7.49439,4.8017 11.74426,4.9498 4.01168,0.1398 7.3865,-3.5775 11.38838,-3.8891 4.08318,-0.3179 8.00696,1.9793 12.10016,2.1213 6.7951,0.2357 13.4979,-2.5149 20.2856,-2.1213 4.4707,0.2592 7.8794,2.932 13.1067,2.932 0,0 0.061,9.0888 0.061,9.0888 m 88.0478,0 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.8707,-3.8978 19.3616,-3.1186 4.2218,0.5068 7.4944,4.8017 11.7443,4.9498 4.0117,0.1398 7.3865,-3.5775 11.3884,-3.8891 4.0832,-0.3179 8.0069,1.9793 12.1001,2.1213 6.7951,0.2357 13.4979,-2.5149 20.2856,-2.1213 4.4707,0.2592 7.8794,2.932 13.1067,2.932 0,0 0.061,9.0888 0.061,9.0888 m 84.163,-16.9955 c -3.1756,4.6285 -7.9689,18.1889 -13.9095,18.0562 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.8707,-3.8978 19.3616,-3.1186 4.2218,0.5068 7.4944,4.8017 11.7443,4.9498 4.0117,0.1398 7.3865,-3.5775 11.3883,-3.8891 4.0832,-0.3179 8.007,1.9793 12.1002,2.1213 6.7951,0.2357 9.9965,3.3665 14.1641,-2.0022 2.7449,-3.5361 4.9183,-5.8748 7.8755,-10.1852 0,0 7.529,5.0914 7.529,5.0914 m 74.536,-27.8021 c -5.4235,1.4444 -11.6246,-0.5351 -17.4062,0.8322 -4.4103,1.0431 -7.2529,1.7315 -11.1562,4.0355 -3.3084,1.9533 -8.2292,5.3027 -11.9266,6.3456 -6.0516,1.7068 -11.8809,1.6148 -18.0142,2.9987 -8.6519,1.9521 -12.6159,7.0699 -16.7511,13.0973 0,0 -7.4969,-5.1434 -7.4969,-5.1434 3.0472,-4.4415 5.9626,-14.9949 11.6912,-18.1429 3.7259,-2.0475 10.4942,0.1395 14.7094,-0.4202 3.979,-0.5283 7.0335,-4.4328 10.9725,-5.204 4.019,-0.7869 6.7321,0.7381 10.4637,-0.9483 6.1948,-2.7994 13.922,-10.6991 20.6757,-9.9214 4.4483,0.5122 6.7904,5.0502 11.841,3.7051 0,0 2.3977,8.7658 2.3977,8.7658 m 35.0191,-73.038 c 4.7515,2.9883 15.1931,9.7773 16.2205,15.6291 0.7837,4.464 -5.4347,14.3143 -8.9094,17.2244 -2.9452,2.4671 -5.3539,5.5175 -8.1713,8.1293 -4.6112,4.2746 -6.4983,8.1144 -10.3706,13.069 -5.4624,6.9893 -16.95,16.2637 -24.0125,18.1445 0,0 -2.3394,-8.7844 -2.3394,-8.7844 5.2043,-1.386 5.6059,-7.9241 10.2218,-12.5533 3.0022,-3.0109 8.1905,-2.9759 10.7908,-6.3407 2.4545,-3.1761 2.1342,-8.8003 4.7703,-11.826 2.6897,-3.0872 8.2195,-3.8446 11.6225,-6.1231 5.6491,-3.7825 6.5059,-4.3372 2.6701,-9.9488 -2.5266,-3.6961 -2.8548,-6.1112 -7.2796,-8.894 0,0 4.7868,-7.726 4.7868,-7.726 m -1.2181,-60.7642 c -4.5216,3.326 -8.073,7.2529 -12.3626,11.3642 -3.2722,3.1363 -5.3911,3.2223 -6.1692,7.6872 -0.6592,3.7848 0.8362,1.9371 3.5356,4.6706 4.4181,4.4738 12.1259,14.3424 11.6583,20.6115 -0.6597,8.8434 -2.0952,13.2767 4.0923,17.1681 0,0 -4.8401,7.696 -4.8401,7.696 -4.5595,-2.8675 -17.2571,-13.1519 -15.3536,-19.4055 1.2381,-4.0675 7.0073,-5.3766 5.4893,-9.3482 -1.4329,-3.749 -6.5194,-3.044 -9.4048,-5.8343 -2.944,-2.847 -5.0306,-10.5006 -4.8252,-14.5898 0.3409,-6.7885 4.8606,-17.1503 10.2186,-21.3355 3.529,-2.7566 8.3163,-2.8721 12.527,-5.9693 0,0 5.4344,7.285 5.4344,7.285 m 70.3893,12.5225 c -5.5698,0.6828 -17.6451,-5.3725 -20.978,-10.2915 -2.5425,-3.7523 -3.3895,-8.1195 -6.3768,-11.5283 -2.5326,-2.8891 -2.5563,-2.3166 -6.371,-2.77 -6.2435,-0.7421 -8.422,-0.2023 -14.3994,1.7481 -8.4319,2.7513 -16.8921,5.2865 -22.7802,9.6176 0,0 -5.387,-7.3237 -5.387,-7.3237 4.3389,-3.1915 9.5876,-11.0642 15.7577,-13.2235 4.0131,-1.4045 9.484,1.1897 13.6431,0.3047 3.926,-0.8354 8.447,-4.8722 12.4594,-4.7757 4.0939,0.098 9.991,5.4443 12.7728,8.4497 4.618,4.9892 9.3016,9.648 13.7036,14.8288 2.8995,3.4122 1.6026,6.5886 6.7895,5.9527 0,0 1.1663,9.0111 1.1663,9.0111 m 79.8098,-18.0569 c -5.5648,-0.7351 -11.8557,-0.4627 -17.7326,-1.3399 -4.4831,-0.6691 -8.2649,-2.5051 -12.797,-2.5623 -3.8416,-0.048 -6.5628,1.2882 -10.3277,2.0531 -6.162,1.2519 -8.2595,1.5311 -13.2998,5.2904 -7.11,5.3029 -18.5056,12.862 -25.7587,13.7512 0,0 -1.106,-9.0215 -1.106,-9.0215 5.3447,-0.6552 6.5184,-7.5171 11.8404,-11.3138 3.4614,-2.4694 9.0876,-1.7903 12.7514,-3.9483 3.4585,-2.0371 7.1002,-6.8017 11.0115,-7.7032 3.9907,-0.9198 8.8311,1.1706 12.925,1.2725 6.7963,0.1691 14.4066,-1.5002 21.0728,-0.1631 4.3908,0.8806 7.3681,3.9821 12.5502,4.6666 0,0 -1.1295,9.0183 -1.1295,9.0183 m 86.4256,-22.2219 c -3.9076,4.0297 -8.2047,10.1294 -13.0307,13.5957 -3.6813,2.6441 -10.2303,4.2213 -14.5036,5.7313 -3.6221,1.2803 -8.2999,3.541 -12.0691,4.2845 -6.1691,1.2169 -13.1677,1.4605 -19.4548,1.3445 -8.8688,-0.1637 -20.0069,-2.6405 -27.2534,-3.5977 0,0 1.1906,-9.0132 1.1906,-9.0132 5.3398,0.7053 12.1166,-2.7163 18.6228,-2.079 4.2317,0.4145 7.5895,4.6459 11.8417,4.6871 4.0139,0.039 6.9673,-3.7806 10.9303,-4.4177 4.0435,-0.6501 7.3896,1.1712 11.3779,0.2411 6.6208,-1.5439 9.3522,-6.334 14.8307,-10.3589 3.6084,-2.6512 7.3114,-2.9481 10.9502,-6.7008 0,0 6.5674,6.2831 6.5674,6.2831 m 69.9727,-36.6308 c -5.578,0.6274 -10.6545,2.5815 -16.4421,3.9265 -4.415,1.0261 -9.541,0.5301 -13.9798,1.4485 -3.7624,0.7788 -6.5115,2.5623 -10.0978,3.9397 -5.8697,2.2544 -8.4681,2.4731 -12.9734,6.8582 -6.3553,6.1859 -12.0166,14.6039 -17.105,19.8515 0,0 -6.527,-6.329 -6.527,-6.329 3.7496,-3.8669 3.535,-11.8492 7.6105,-16.9602 2.6508,-3.3242 9.1211,-4.4499 12.745,-6.6745 3.4208,-2.0998 5.8619,-7.2043 9.5583,-8.7683 3.7715,-1.5957 8.8954,-0.2681 12.9405,-0.9086 6.7153,-1.0633 12.6958,-5.3824 19.4338,-6.2878 4.438,-0.5963 8.5658,1.4634 13.7603,0.879 0,0 1.0767,9.025 1.0767,9.025 m 71.1414,-51.7126 c -2.4186,5.0653 -4.7163,11.863 -8.0301,16.795 -2.5277,3.7624 -6.6125,7.0372 -9.3076,10.6815 -2.2842,3.0892 -4.5534,7.4876 -7.1421,10.326 -4.237,4.6455 -12.9704,9.6701 -19.0738,11.1833 -8.6096,2.1345 -20.4214,1.0441 -27.6852,1.8611 0,0 -1.0163,-9.0347 -1.0163,-9.0347 5.3526,-0.6021 11.7542,-5.1012 18.2743,-5.5714 4.2407,-0.3058 7.8105,3.275 11.7928,1.7845 3.7591,-1.407 3.8409,-5.6234 6.7241,-8.4152 2.9419,-2.8486 6.5765,-3.4259 9.3139,-6.472 4.5444,-5.0569 5.585,-11.5916 9.4247,-17.2024 2.5289,-3.6956 6.2451,-5.0797 8.4974,-9.7967 0,0 8.2279,3.861 8.2279,3.861 m -3.5637,-87.5477 c 3.7148,4.2075 9.341,9.3816 12.2468,14.5645 2.2167,3.9536 3.8087,10.5763 4.6797,15.0242 0.7386,3.7703 1.9891,9.2138 1.9169,13.0549 -0.1181,6.2866 -1.7126,13.8986 -3.7357,19.8524 -2.8539,8.3988 -9.1805,18.0802 -12.33,24.6764 0,0 -8.2044,-3.9175 -8.2044,-3.9175 2.3209,-4.8606 1.371,-12.6292 4.2361,-18.5053 1.8635,-3.8219 6.7764,-5.3982 8.0213,-9.4643 1.1751,-3.8381 -1.924,-7.449 -1.6628,-11.4543 0.2665,-4.0866 2.8909,-6.6722 2.5836,-10.7554 -0.5103,-6.7785 -5.6117,-9.6179 -9.0594,-15.4777 -2.2708,-3.8596 -2.005,-7.619 -5.4644,-11.5372 0,0 6.7723,-6.0607 6.7723,-6.0607 m -82.1541,-38.444 c 5.6127,4e-4 13.3011,-0.1807 19.0836,1.1856 4.4111,1.0422 9.1048,3.966 13.4048,5.3993 3.6449,1.2146 8.1474,1.5349 11.7577,2.8485 5.909,2.1501 12.7071,5.6598 17.7432,9.4248 7.1042,5.3111 14.6744,14.6831 19.5118,20.1623 0,0 -6.815,6.0169 -6.815,6.0169 -3.5646,-4.0376 -10.8244,-5.4467 -15.5557,-9.9576 -3.0773,-2.934 -3.0384,-8.1264 -6.5595,-10.5102 -3.3238,-2.2502 -7.649,-0.3489 -11.4089,-1.754 -3.8362,-1.4337 -6.1071,-5.0034 -9.9084,-6.5275 -6.3105,-2.5302 -12.5803,-1.6197 -19.2007,-3.1658 -4.3606,-1.0183 -6.7656,-4.034 -11.9925,-4.0344 0,0 -0.06,-9.0879 -0.06,-9.0879 m -72.386,44.3995 c 5.6116,-0.1211 6.9522,-1.8441 11.3475,-5.8416 3.3528,-3.0494 6.6263,-4.9629 9.3666,-8.5736 2.3224,-3.0607 4.3228,-7.5236 6.8889,-10.3822 4.2,-4.6786 10.1834,-9.0533 15.4538,-12.4826 7.4346,-4.8374 22.0201,-6.249 29.3291,-6.2485 0,0 -6e-4,9.0909 -6e-4,9.0909 -5.3859,-3e-4 -9.4484,4.0297 -15.615,6.1984 -4.0109,1.4105 -8.2046,-0.7665 -11.6719,1.6952 -3.273,2.3237 -3.6003,7.2889 -6.5443,10.0172 -3.0038,2.7836 -6.3591,3.3805 -9.0645,6.4552 -4.4912,5.1041 -7.6947,13.7142 -13.5317,17.1999 -3.8445,2.2958 -10.4751,1.8437 -15.7008,1.9564 0,0 -0.2571,-9.0847 -0.2571,-9.0847 m -80.9953,30.44 c 3.9164,-4.0212 7.6845,-9.7503 12.1981,-13.6144 3.4431,-2.9476 8.4715,-4.9605 12.1146,-7.6573 3.0879,-2.2862 5.7584,-5.8183 8.8663,-8.0763 5.0867,-3.6957 15.9417,-6.7622 22.1954,-6.1125 8.8219,0.9165 18.3322,6.049 25.6397,5.8913 0,0 0.1961,9.0891 0.1961,9.0891 -5.3848,0.1162 -14.0414,2.3261 -20.3391,0.5725 -4.0961,-1.1406 -6.2051,-5.7656 -10.4549,-5.6274 -4.0117,0.1303 -4.8041,4.468 -8.2442,6.5357 -3.5101,2.1097 -7.1943,2.075 -10.6253,4.3115 -5.6957,3.7127 -8.672,9.4298 -13.8447,13.8421 -3.4069,2.9061 -7.5013,3.3985 -11.1484,7.1431 0,0 -6.5536,-6.2974 -6.5536,-6.2974 m -65.1129,6.5603 c 2.7838,4.8736 5.6951,6.3378 10.7264,9.4968 3.8381,2.4097 5.6946,4.032 10.1755,4.7128 3.7982,0.5768 6.0954,-0.9148 9.8919,-1.5021 6.2137,-0.9611 9.089,-2.1155 14.7347,-4.8838 7.964,-3.9052 15.1085,-8.5399 20.2085,-13.7763 0,0 6.5131,6.3434 6.5131,6.3434 -3.7581,3.8586 -7.1713,12.7529 -12.8368,16.0146 -3.6849,2.1214 -9.5299,0.7248 -13.4923,2.2673 -3.7403,1.4561 -6.9352,6.0932 -10.8358,7.0392 -3.9799,0.9651 -9.4883,-1.158 -13.5318,-1.807 -6.7126,-1.0774 -16.8606,-1.6728 -21.9911,-6.1331 -3.3792,-2.9377 -4.8308,-8.6729 -7.4231,-13.2114 0,0 7.8608,-4.5604 7.8608,-4.5604 m -45.682,-77.1761 c 4.3822,3.5073 10.4994,9.0801 13.7247,14.0702 2.4604,3.8066 3.692,8.9425 5.9852,12.8523 1.9441,3.3138 4.8445,5.9996 6.972,9.1987 3.482,5.2359 7.2822,10.8445 9.7651,16.6216 3.5024,8.1495 4.8537,18.5188 8.4787,24.8653 0,0 -7.8938,4.5088 -7.8938,4.5088 -2.6713,-4.6766 -9.4199,-10.4969 -11.2185,-16.7821 -1.1699,-4.0879 1.7122,-8.5236 -0.3288,-12.2535 -1.9268,-3.5208 -7.0297,-4.6541 -9.2234,-8.0155 -2.2382,-3.4297 -2.1027,-8.0248 -3.9042,-11.703 -2.9905,-6.1062 -8.2579,-9.8258 -11.9847,-15.5118 -2.4547,-3.745 -2.1349,-7.3768 -6.0938,-10.7898 0,0 5.7214,-7.0612 5.7214,-7.0612 m -70.6811,-51.7402 c 5.5144,1.0459 14.9806,4.5216 19.2456,8.6585 3.2535,3.1556 5.7645,8.6721 8.4429,12.3287 2.2707,3.0992 5.3157,5.3334 7.834,8.2348 4.1216,4.7487 6.3699,7.8375 11.3655,11.6558 7.0471,5.3863 17.5423,6.9752 23.2488,11.5425 0,0 -5.6808,7.0979 -5.6808,7.0979 -4.205,-3.3656 -11.2621,-0.2143 -17.3299,-2.6463 -3.9466,-1.5818 -6.7761,-7.9302 -9.8012,-10.9184 -2.8556,-2.8208 -8.3917,-3.4763 -10.9963,-6.5303 -2.6576,-3.116 -3.0409,-7.7931 -5.2601,-11.2353 -3.684,-5.7142 -8.3336,-8.1461 -13.647,-12.3871 -3.4996,-2.7933 -3.9196,-5.8867 -9.055,-6.8607 0,0 1.6335,-8.9401 1.6335,-8.9401 m -58.0138,-45.2154 c 0.3534,5.6019 1.684,8.3783 4.7456,13.4705 2.3356,3.8844 3.1866,7.394 6.3796,10.611 2.7068,2.7265 5.6194,3.8013 8.8078,5.9446 5.2185,3.5078 8.6632,6.3178 14.2672,9.1695 7.9052,4.0225 16.4704,5.5135 23.6513,6.8755 0,0 -1.694,8.9317 -1.694,8.9317 -5.2916,-1.0036 -13.8382,2.5609 -19.9962,0.3685 -4.0053,-1.4259 -6.8311,-7.1914 -10.3738,-9.5432 -3.3442,-2.22 -8.5271,-1.2739 -11.9102,-3.4338 -3.4519,-2.2037 -5.5192,-7.1334 -8.2261,-10.2067 -4.4937,-5.1019 -11.8446,-9.9794 -14.5795,-16.2032 -1.8014,-4.0993 0.1908,-10.1345 -0.1383,-15.3512 0,0 9.0666,-0.6332 9.0666,-0.6332 m -30.0231,-75.2067 c -1.2541,5.4709 -0.2456,9.9255 0.01,15.8619 0.1927,4.5286 -0.8228,8.3072 0.2082,12.7209 0.8743,3.7413 2.8675,5.2845 4.8765,8.5588 3.2882,5.359 6.6202,6.2447 11.4566,10.2634 6.8226,5.6689 12.1453,20.5617 12.6054,27.8565 0,0 -9.0734,0.5724 -9.0734,0.5724 -0.3391,-5.3755 -3.7189,-7.5328 -7.7918,-12.6452 -2.6492,-3.3252 -2.1438,-8.0325 -5.4292,-10.7322 -3.1012,-2.5483 -9.2424,-2.9901 -11.8153,-6.0705 -2.6252,-3.1431 -2.8211,-9.6453 -3.6495,-13.6561 -1.3752,-6.6582 -4.6937,-13.8381 -4.7409,-20.6367 -0.031,-4.4779 3.3066,-8.9695 4.4745,-14.0643 0,0 8.8719,1.9711 8.8719,1.9711 m -56.4737,-62.6467 c 5.6127,-0.054 14.0556,-0.4682 19.6915,1.4114 4.2992,1.4338 10.1942,7.4248 13.0724,10.9255 2.44,2.9671 4.4422,4.514 7.54,6.7853 5.0702,3.7174 12.7666,6.8006 16.3987,11.9331 5.1236,7.2402 0.5552,24.2725 -1.0779,31.3968 0,0 -8.8612,-2.0313 -8.8612,-2.0313 1.2034,-5.2498 -0.161,-10.3523 -0.5492,-16.8773 -0.2525,-4.244 2.9886,-6.5255 -0.2824,-9.242 -3.0876,-2.5642 -8.2626,-0.8582 -11.7214,-2.8944 -3.5292,-2.0775 -5.5309,-8.1911 -7.804,-11.5979 -3.7737,-5.6557 -7.7129,-5.3052 -14.3239,-6.8892 -4.3544,-1.0432 -6.7068,-3.8833 -11.9335,-3.8327 0,0 -0.1491,-9.0873 -0.1491,-9.0873 m 1777.1304,65.9259 c -1.0077,-5.5216 -4.3398,-12.0007 -4.6731,-17.9322 -0.2542,-4.5247 3.5136,-13.7336 6.5956,-17.0555 2.6121,-2.8162 6.3365,-6.6731 9.4359,-8.9432 5.0728,-3.7155 6.6187,-7.1237 10.686,-11.9181 5.7376,-6.7634 22.5052,-8.9146 29.8088,-9.2022 0,0 0.3578,9.0843 0.3578,9.0843 -5.3819,0.2119 -9.2181,3.3634 -15.1391,6.1286 -3.8512,1.7986 -7.3232,0.3724 -9.9295,3.7324 -2.4601,3.1717 -2.9824,9.3655 -6.0844,11.9125 -3.165,2.5987 -7.813,2.0142 -10.9813,4.6083 -5.2596,4.3065 -2.0763,7.8078 -1.1954,14.5491 0.5802,4.4402 -0.8902,8.2023 0.048,13.3443 0,0 -8.9295,1.6917 -8.9295,1.6917 m -30.9932,75.5424 c 0.3582,-5.6016 0.3888,-15.6125 3.7043,-20.5429 2.5291,-3.761 8.7215,-7.0821 12.2519,-9.9248 2.9923,-2.4098 4.3289,-4.6417 6.6148,-7.7286 3.7413,-5.0521 4.112,-7.5588 5.6365,-13.6593 2.1505,-8.6057 4.9549,-16.6528 3.6426,-23.8432 0,0 8.9434,-1.6322 8.9434,-1.6322 0.967,5.2985 4.5165,14.3116 3.1098,20.6957 -0.9149,4.1522 -5.8304,7.3897 -7.1306,11.4382 -1.2272,3.8217 0.1592,10.0982 -2.059,13.4432 -2.2633,3.413 -7.9246,5.1964 -11.2618,7.5705 -5.54,3.9412 -7.633,7.1181 -10.1297,13.4416 -1.6444,4.1649 -3.9148,6.0443 -4.2483,11.2607 0,0 -9.0739,-0.5189 -9.0739,-0.5189 m -61.9079,42.5778 c 5.3767,-1.6112 12.4221,-3.1726 18.325,-3.8521 4.5029,-0.5183 7.3679,0.5457 11.3368,-1.6429 3.364,-1.8555 5.0278,-4.6504 7.9651,-7.1266 4.8075,-4.0528 8.1317,-7.0859 12.4676,-11.6399 6.1164,-6.4241 12.2163,-10.9663 12.6827,-18.2607 0,0 9.073,0.5801 9.073,0.5801 -0.3437,5.3752 -1.2406,16.8201 -5.7641,21.5394 -2.9421,3.0695 -8.7116,3.2675 -11.8403,6.1473 -2.9533,2.7183 -3.4301,8.1414 -6.4381,10.7989 -3.0692,2.7115 -8.1219,3.3933 -11.7445,5.3037 -6.0139,3.1714 -13.9306,7.4518 -20.7207,7.7969 -4.4723,0.2272 -7.668,-2.4563 -12.675,-0.9558 0,0 -2.6675,-8.6883 -2.6675,-8.6883 m -69.7195,53.5979 c 3.9904,-3.9474 12.5508,-9.2804 18.3977,-10.3391 4.4601,-0.8075 7.126,0.3778 10.7689,-2.3187 3.0877,-2.286 3.4453,-4.6762 5.5396,-7.8969 3.4278,-5.2712 6.6053,-10.2237 10.3988,-15.2386 5.3513,-7.0743 17.863,-14.872 24.8646,-16.9702 0,0 2.6097,8.7087 2.6097,8.7087 -5.1594,1.5461 -6.5683,7.545 -11.5048,11.8296 -3.2107,2.7867 -7.9339,2.4747 -10.4807,5.88 -2.404,3.2143 -1.3298,8.4686 -3.5469,11.8143 -2.2622,3.4138 -7.2124,5.6075 -10.4253,8.1471 -5.3336,4.216 -13.1745,8.5299 -19.8525,9.8056 -4.3984,0.8402 -6.618,-0.6796 -10.3341,2.9964 0,0 -6.435,-6.4182 -6.435,-6.4182 m -44.2317,77.0143 c 3.1467,-4.6479 4.0819,-9.85 6.5453,-15.2572 1.8791,-4.1247 4.9853,-7.8905 6.8389,-12.0267 1.5709,-3.5062 2.7421,-7.6482 4.3729,-11.1269 2.6691,-5.6934 5.3941,-11.229 8.6586,-16.6033 4.6051,-7.5813 13.2322,-16.2405 18.4286,-21.3809 0,0 6.3937,6.4633 6.3937,6.4633 -3.8292,3.7879 -4.4392,10.9054 -8.4116,16.0974 -2.5837,3.377 -7.8195,3.9647 -9.9507,7.6446 -2.0117,3.4737 -0.3676,8.2439 -2.0146,11.9044 -1.6804,3.7348 -5.9072,5.8143 -7.9409,9.369 -3.3761,5.9011 -3.1393,12.984 -6.1763,19.0668 -2.0002,4.0065 -6.2533,6.5656 -9.1837,10.894 0,0 -7.5602,-5.0445 -7.5602,-5.0445 m -65.9306,-11.8318 c 3.9164,4.0211 8.5999,7.2877 13.0261,11.2513 3.3766,3.0234 5.1061,6.1152 9.1444,8.1732 3.4233,1.7441 5.7009,1.1661 9.5143,1.6302 6.2415,0.7597 9.6487,0.862 15.8788,0.013 8.7885,-1.1973 14.9906,-2.6952 19.0883,-8.7478 0,0 7.5283,5.0967 7.5283,5.0967 -3.0195,4.4601 -9.6291,14.6615 -16.0028,16.1117 -4.1455,0.9432 -9.442,-2.2731 -13.6906,-2.1025 -4.0105,0.161 -8.489,3.6846 -12.489,3.3538 -4.0812,-0.3375 -8.6896,-4.0079 -12.3085,-5.9249 -6.0077,-3.1824 -14.0801,-6.0193 -18.7882,-10.924 -3.1011,-3.2305 -3.7224,-7.8013 -7.3695,-11.546 0,0 6.4683,-6.385 6.4683,-6.385 m -81.236,-28.1143 c 5.5378,0.9129 9.592,-1.3165 15.4624,-2.2361 4.4781,-0.7015 10.0194,-0.284 14.5485,-0.4594 3.8391,-0.1491 10.2418,-0.3875 13.9201,0.7207 6.0202,1.8138 12.7378,6.5576 17.7337,10.3762 7.0474,5.3868 13.8474,15.0842 18.9473,20.3206 0,0 -6.5131,6.3434 -6.5131,6.3434 -3.7581,-3.8587 -11.1338,-5.8887 -15.6649,-10.6003 -2.9471,-3.0645 -2.8398,-8.0642 -6.2399,-10.618 -3.2096,-2.4107 -7.3884,-0.8773 -11.1071,-2.3876 -3.7943,-1.541 -4.8742,-4.3499 -8.9624,-4.5927 -6.7867,-0.403 -12.2309,3.8304 -18.9907,4.5538 -4.4524,0.4766 -9.3946,-1.5938 -14.5517,-2.4439 0,0 1.4178,-8.9767 1.4178,-8.9767 m -73.5102,-44.0248 c 5.6068,-0.2576 14.7266,-1.0812 20.2663,1.0658 4.2258,1.6378 8.9587,5.8527 12.7191,8.3828 3.1878,2.1443 7.1405,3.5592 10.3595,5.6563 5.2685,3.4323 10.9124,9.3329 14.6363,14.4 5.2532,7.1478 8.1759,14.1906 15.3873,15.3793 0,0 -1.4785,8.9697 -1.4785,8.9697 -5.3141,-0.8759 -17.0826,-3.9466 -20.7732,-9.3425 -2.4003,-3.5095 -1.1889,-9.016 -3.7693,-12.3957 -2.4359,-3.1903 -6.693,-2.4547 -10.0371,-4.6747 -3.4119,-2.2652 -4.8517,-6.488 -8.1074,-8.9724 -5.4047,-4.1241 -10.0716,-4.4702 -16.7228,-5.8768 -4.3808,-0.9264 -6.7807,-3.756 -12.002,-3.5161 0,0 -0.4782,-9.0757 -0.4782,-9.0757 m -80.6587,41.0604 c 3.7148,-4.2076 7.9852,-10.3505 12.6802,-13.9921 3.5814,-2.7779 8.4994,-4.8713 12.2777,-7.3747 3.2025,-2.1224 6.2079,-5.4898 9.4651,-7.5267 5.3311,-3.3336 12.0666,-6.1945 18.062,-8.0909 8.4572,-2.6752 20.9123,-2.8703 28.2136,-3.2059 0,0 0.4174,9.0815 0.4174,9.0815 -5.3803,0.2472 -10.7873,5.063 -17.2393,6.1152 -4.1964,0.6843 -8.3011,-2.5355 -12.3063,-1.1071 -3.7808,1.3483 -5.1956,6.0229 -8.6927,7.9931 -3.5682,2.0101 -7.4959,1.637 -11.0385,3.6918 -5.8809,3.4112 -8.8544,9.2767 -14.2081,13.467 -3.5262,2.76 -7.3185,2.9996 -10.7779,6.9179 0,0 -6.8532,-5.9691 -6.8532,-5.9691 m 0.4992,88.2037 c -2.5341,-5.0085 -6.4987,-10.8894 -8.4486,-16.5023 -1.4874,-4.2817 -1.6752,-9.3737 -3.0672,-13.6873 -1.1803,-3.6563 -3.4682,-7.6643 -4.467,-11.374 -1.6348,-6.0716 -2.4069,-15.5586 -0.8341,-21.6465 2.2187,-8.5879 12.1332,-18.938 16.9707,-24.4171 0,0 6.815,6.0169 6.815,6.0169 -3.5647,4.0375 -3.8071,10.8639 -7.2615,16.4139 -2.2468,3.6097 -7.0685,4.0441 -7.3984,8.283 -0.3114,4.0014 3.6269,6.4672 4.5049,10.3837 0.8958,3.9962 -0.6288,7.6799 0.2953,11.6698 1.5341,6.6236 6.0134,11.4392 8.2998,17.8421 1.506,4.2173 0.3133,8.196 2.6732,12.8602 0,0 -8.0821,4.1576 -8.0821,4.1576 m 72.9755,48.7581 c -5.566,-0.7256 -12.1302,-0.045 -17.9788,-1.0929 -4.4616,-0.7995 -9.5044,-3.2084 -13.8454,-4.5122 -3.6797,-1.1048 -9.1662,-2.2172 -12.5451,-4.0448 -5.5302,-2.9914 -11.689,-9.5464 -15.3497,-14.6591 -5.1639,-7.2121 -9.1793,-18.3201 -12.4792,-24.8423 0,0 8.1123,-4.1045 8.1123,-4.1045 2.4317,4.8061 9.1243,8.6566 12.1344,14.4597 1.9578,3.7744 0.3138,8.5646 2.9296,11.9171 2.4691,3.1646 7.0036,2.4062 10.2843,4.7181 3.3473,2.359 4.2169,5.2787 8.008,6.8277 6.2937,2.5716 12.4706,0.6548 19.1597,1.8712 4.4057,0.8012 7.5008,3.766 12.6841,4.4417 0,0 -1.1142,9.0203 -1.1142,9.0203 m 69.0003,38.8141 c -3.9076,-4.0297 -9.5054,-9.5729 -12.3969,-14.7639 -2.2057,-3.9599 -2.3334,-7.3653 -5.7061,-10.3933 -2.8591,-2.5663 -4.8883,-1.9303 -8.5737,-3.0145 -6.0317,-1.7745 -10.8318,-2.4472 -16.9694,-3.816 -8.6579,-1.9308 -17.9934,-6.7454 -25.2416,-7.6902 0,0 1.1752,-9.0154 1.1752,-9.0154 5.3411,0.6962 13.6045,-1.2329 19.8236,0.7817 4.045,1.3104 6.4374,6.0852 10.5811,7.0403 3.9114,0.9016 8.6658,-1.8636 12.5597,-0.8906 3.973,0.9928 8.2072,5.4007 11.3194,8.0627 5.1664,4.4191 11.4441,10.1976 14.6387,16.199 2.1042,3.9527 1.6333,7.3768 5.2722,11.1294 0,0 -6.4822,6.3708 -6.4822,6.3708 m 87.4961,19.1437 c -5.5648,0.7351 -12.2931,2.6159 -18.2341,2.698 -4.532,0.063 -9.3614,-1.6502 -13.894,-1.6363 -3.8421,0.012 -7.7934,1.2365 -11.6328,1.3724 -6.2839,0.2224 -14.6393,-1.0265 -20.5347,-3.2125 -8.3164,-3.0835 -17.4867,-13.7242 -22.5752,-18.9717 0,0 6.527,-6.329 6.527,-6.329 3.7496,3.8668 10.2721,5.0513 15.4963,8.9806 3.3979,2.5557 3.7348,7.0709 7.8522,8.1328 3.8866,1.0023 7.2522,-2.2156 11.266,-2.1996 4.0954,0.016 7.5998,2.3915 11.688,2.6364 6.7869,0.4066 12.9251,-1.9134 19.7229,-2.0257 4.4774,-0.074 7.8855,2.2369 13.0676,1.5524 0,0 1.2508,9.0022 1.2508,9.0022 m 81.6002,18.4113 c -5.523,0.9988 -17.2401,-3.0528 -21.6006,-7.0891 -3.3264,-3.079 -5.172,-7.0529 -8.8722,-9.6707 -3.1367,-2.2187 -4.6793,-1.6324 -8.4845,-2.1604 -6.2281,-0.8643 -10.5524,-0.7358 -16.8402,-0.7532 -8.87,-0.024 -18.6703,-0.5586 -25.9168,0.3986 0,0 -1.1905,-9.0133 -1.1905,-9.0133 5.3398,-0.7053 12.4363,-5.7285 18.973,-5.6348 4.2515,0.061 8.2435,4.055 12.4912,4.2447 4.0097,0.1791 8.2209,-3.2537 12.2245,-2.9684 4.085,0.291 9.3238,4.4585 12.6055,6.9087 5.4478,4.0675 11.6601,7.028 16.8891,11.3717 3.4441,2.8609 2.9009,6.3645 8.0442,5.4344 0,0 1.6773,8.9318 1.6773,8.9318 m 67.9247,-10.2535 c -4.5216,-3.3259 -9.4873,-5.4996 -14.6456,-8.4485 -3.9349,-2.2495 -6.3719,-5.0178 -10.7202,-6.2972 -3.6859,-1.084 -5.6301,-0.2094 -9.4561,0.1365 -6.262,0.5661 -6.0348,0.3471 -10.0335,5.1994 -5.6407,6.8448 -16.0321,17.5055 -23.2243,18.8062 0,0 -1.6177,-8.9456 -1.6177,-8.9456 5.2998,-0.9585 4.4092,-7.8065 8.7149,-12.7252 2.8004,-3.1992 8.3228,-4.153 11.5768,-6.8897 3.0715,-2.5833 7.1425,-8.0454 11.0916,-8.7618 4.0293,-0.7309 9.627,2.2991 13.5639,3.4276 6.5356,1.8735 15.1423,3.1486 20.6728,7.1031 3.6426,2.6046 5.2027,6.9405 9.4134,10.0377 0,0 -5.336,7.3575 -5.336,7.3575 m -7.251,60.5786 c 4.7243,-3.0312 7.4885,-3.8329 9.8912,-9.2651 1.8328,-4.1439 -0.2424,-6.4041 -0.086,-10.9322 0.1321,-3.8382 3.2623,-11.2944 5.5859,-14.354 3.8031,-5.0075 6.5273,-3.3468 5.2177,-9.4966 -1.8475,-8.6751 -6.9533,-12.9014 -12.8414,-17.2324 0,0 5.3869,-7.3237 5.3869,-7.3237 4.3389,3.1915 14.3254,6.3432 17.5653,12.0203 2.1073,3.6924 0.7303,11.3772 -0.069,15.5526 -0.7546,3.9414 -0.9348,10.2123 -3.3901,13.3877 -2.5052,3.2398 -6.2355,3.188 -7.72,7.0044 -2.4643,6.3355 3.6277,17.0466 -1.1251,21.9068 -3.1305,3.2012 -9.0562,3.5259 -13.4556,6.3487 0,0 -4.9595,-7.6165 -4.9595,-7.6165 m 43.3954,71.6844 c -5.6105,0.1456 -16.4371,-5.2378 -20.3465,-9.712 -2.9823,-3.4129 -4.9551,-8.4923 -7.6909,-12.1063 -2.3194,-3.0631 -5.0493,-4.7757 -7.8491,-7.4061 -4.5825,-4.3051 -9.7318,-6.6013 -14.2642,-10.9588 -6.3935,-6.147 1.0737,-26.8207 7.2257,-30.768 0,0 4.9097,7.6519 4.9097,7.6519 -4.5334,2.9087 -6.3281,2.7737 -4.6378,9.0871 1.0994,4.1064 -0.8101,6.7097 2.5502,9.3151 3.172,2.4594 8.9509,1.7573 12.0236,4.3386 3.135,2.6338 4.2745,8.0288 6.5477,11.4356 3.7739,5.6557 8.7794,8.5571 13.6561,13.2927 3.2121,3.1191 2.3539,6.8831 7.5786,6.7475 0,0 0.2969,9.0827 0.2969,9.0827 m 70.6866,29.3529 c -2.3158,-5.1126 -5.8507,-7.5195 -10.0009,-11.7715 -3.1659,-3.2434 -3.663,-5.2762 -8.0681,-6.3417 -3.7341,-0.9028 -6.7117,0.3549 -10.5532,0.3003 -6.2875,-0.089 -15.6733,-2.7123 -20.9785,-6.0883 -7.4839,-4.7623 -13.8025,-6.512 -21.1085,-6.3224 0,0 -0.2359,-9.0873 -0.2359,-9.0873 5.3838,-0.1397 16.7947,-4.7088 22.2284,-1.0755 3.5341,2.3631 4.2993,8.0098 8.0427,10.0256 3.5337,1.9027 6.6531,-1.2895 10.664,-1.1373 4.0924,0.1554 8.1535,2.658 12.1277,3.6467 6.5974,1.6411 16.861,5.2426 20.6606,10.8802 2.5027,3.7132 2.9438,8.3729 5.3873,12.9928 0,0 -8.1656,3.9784 -8.1656,3.9784 m 86.3738,14.8354 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5316,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.8409,0.096 -7.5607,1.4364 -11.3883,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -20.9965,-10.305 -24.0121,-16.9626 0,0 8.2808,-3.7509 8.2808,-3.7509 2.2222,4.9059 2.1226,5.085 8.6135,5.8642 4.2218,0.5068 7.4944,4.8017 11.7443,4.9498 4.0117,0.1398 7.3865,-3.5775 11.3883,-3.8891 4.0832,-0.3179 8.007,1.9793 12.1002,2.1213 6.795,0.2357 13.4979,-2.5149 20.2855,-2.1213 4.4707,0.2592 7.8794,2.932 13.1067,2.932 0,0 0.061,9.0888 0.061,9.0888 m 88.0477,0 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3883,1.7678 -6.2647,0.5424 -12.5788,0.6069 -18.862,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.8707,-3.8978 19.3616,-3.1186 4.2218,0.5068 7.4944,4.8017 11.7443,4.9498 4.0116,0.1398 7.3864,-3.5775 11.3883,-3.8891 4.0832,-0.3179 8.007,1.9793 12.1002,2.1213 6.795,0.2357 13.4978,-2.5149 20.2855,-2.1213 4.4707,0.2592 7.8794,2.932 13.1067,2.932 0,0 0.061,9.0888 0.061,9.0888 m 88.0477,0 c -5.6133,0 -11.8537,1.1934 -17.7943,1.0607 -4.5317,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -19.1696,-2.6389 -26.4793,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.8707,-3.8978 19.3616,-3.1186 4.2217,0.5068 7.4944,4.8017 11.7442,4.9498 4.0117,0.1398 7.3865,-3.5775 11.3884,-3.8891 4.0832,-0.3179 8.0069,1.9793 12.1001,2.1213 6.7951,0.2357 13.4979,-2.5149 20.2856,-2.1213 4.4706,0.2592 7.8794,2.932 13.1067,2.932 0,0 0.061,9.0888 0.061,9.0888 m 88.0477,0 c -5.6133,0 -11.8537,1.1934 -17.7944,1.0607 -4.5316,-0.1012 -8.9923,-1.5271 -13.5236,-1.4143 -3.841,0.096 -7.5607,1.4364 -11.3884,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8634,-0.3573 -19.1697,-2.6389 -26.4793,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.8706,-3.8978 19.3615,-3.1186 4.2218,0.5068 7.4944,4.8017 11.7443,4.9498 4.0117,0.1398 7.3865,-3.5775 11.3884,-3.8891 4.0831,-0.3179 8.0069,1.9793 12.1001,2.1213 6.7951,0.2357 13.4979,-2.5149 20.2855,-2.1213 4.4707,0.2592 7.8795,2.932 13.1068,2.932 0,0 0.061,9.0888 0.061,9.0888 m 88.0476,0 c -5.6132,0 -11.8537,1.1934 -17.7943,1.0607 -4.5316,-0.1012 -8.9923,-1.5271 -13.5237,-1.4143 -3.8409,0.096 -7.5607,1.4364 -11.3883,1.7678 -6.2647,0.5424 -12.5787,0.6069 -18.862,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4793,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.8706,-3.8978 19.3615,-3.1186 4.2218,0.5068 7.4944,4.8017 11.7443,4.9498 4.0116,0.1398 7.3865,-3.5775 11.3883,-3.8891 4.0832,-0.3179 8.007,1.9793 12.1002,2.1213 6.795,0.2357 13.4979,-2.5149 20.2855,-2.1213 4.4707,0.2592 7.8794,2.932 13.1067,2.932 0,0 0.061,9.0888 0.061,9.0888 m 57.998,-42.9045 c 2.6093,4.9694 7.6774,12.8502 7.9572,18.7842 0.2134,4.5267 -4.1522,12.8126 -6.8426,16.4598 -2.2802,3.0918 -9.9436,8.7433 -13.7713,9.0747 -6.2647,0.5424 -12.5787,0.6069 -18.8619,0.3536 -8.8635,-0.3573 -19.1697,-2.6389 -26.4794,-2.6389 0,0 0,-9.0918 0,-9.0918 5.3864,0 12.8707,-3.8978 19.3616,-3.1186 4.2218,0.5068 7.4944,4.8017 11.7442,4.9498 4.0117,0.1398 7.3865,-3.5775 11.3884,-3.8891 4.0832,-0.3179 5.0513,2.6227 8.0188,-0.1992 4.9262,-4.6848 3.1733,-7.717 1.7872,-14.3725 -0.9131,-4.3836 0.1098,-7.4053 -2.3201,-12.033 0,0 8.0179,-4.279 8.0179,-4.279 m 1.7627,-76.1943 c 0.1477,5.6102 -2.3636,14.8087 -5.1748,20.0432 -2.1444,3.9931 -5.4138,6.5004 -6.7677,10.826 -1.1472,3.6667 -1.1564,7.9609 -2.2623,11.6403 -1.8101,6.0219 -3.8485,6.7313 -1.7149,12.6459 3.0097,8.3434 9.988,14.9726 13.3858,21.4438 0,0 -8.0489,4.2263 -8.0489,4.2263 -2.5039,-4.7686 -10.8915,-6.7004 -14.341,-12.253 -2.2436,-3.6114 -1.2558,-10.6144 -1.3783,-14.8647 -0.1157,-4.0121 -2.5579,-9.5456 -1.4367,-13.3996 1.1439,-3.9323 4.7562,-6.4608 6.0664,-10.341 2.1751,-6.4413 3.6329,-13.7451 6.8129,-19.7541 2.0945,-3.9579 5.9147,-4.6885 5.7773,-9.913 0,0 9.0822,-0.3001 9.0822,-0.3001 m -77.2564,-47.9218 c 5.2336,2.029 11.7412,3.4503 17.1168,5.9817 4.1008,1.931 7.7354,5.048 11.8818,6.8793 3.5147,1.552 7.5381,2.0201 11.118,3.4147 5.8592,2.2825 11.5669,3.8397 17.2529,6.5248 8.0209,3.7875 18.824,17.8386 19.0163,25.1442 0,0 -9.0869,0.2391 -9.0869,0.2391 -0.1416,-5.3834 -4.537,-5.185 -9.8895,-8.9371 -3.4813,-2.4404 -4.1911,-7.3453 -8.124,-8.9624 -3.7126,-1.5264 -8.6977,0.7389 -12.4484,-0.69 -3.8269,-1.4579 -6.3388,-5.3141 -9.9801,-7.1889 -6.0449,-3.1124 -13.0208,-3.2863 -19.1452,-6.2386 -4.0339,-1.9445 -6.0662,-5.7811 -10.94,-7.6705 0,0 3.2283,-8.4963 3.2283,-8.4963 m -82.978,-29.9101 c 5.2876,1.8839 11.5045,2.8758 17.0711,4.9546 4.2464,1.5856 7.9901,4.399 12.3066,5.7825 3.6589,1.1724 7.6126,1.1296 11.3363,2.0753 6.0947,1.5477 12.2142,3.62 18.0213,6.0325 8.1918,3.4032 17.1125,9.2353 23.9278,11.8774 0,0 -3.2863,8.477 -3.2863,8.477 -5.0221,-1.9469 -13.2838,-0.9816 -19.1037,-3.9594 -3.7853,-1.9368 -5.3404,-7.0992 -9.2943,-8.6644 -3.7323,-1.4775 -8.1119,0.8826 -11.9937,-0.139 -3.9606,-1.0425 -6.9108,-4.5021 -10.7297,-5.9822 -6.3397,-2.4569 -13.6241,-2.0628 -19.8858,-4.7115 -4.1244,-1.7446 -6.4383,-5.4064 -11.3624,-7.1607 0,0 2.9928,-8.5821 2.9928,-8.5821 m -79.99,-34.3461 c 4.9422,2.6612 10.8019,4.3756 16.0763,7.112 4.0235,2.0874 7.2802,5.1704 11.4574,6.9301 3.5409,1.4912 7.3841,1.6569 11.0355,2.8517 5.9762,1.9553 11.6952,4.1546 17.4392,6.7136 8.1027,3.61 16.8037,9.1061 23.6892,11.5593 0,0 -3.0513,8.5643 -3.0513,8.5643 -5.0739,-1.8077 -13.5535,-0.7299 -19.3532,-3.7467 -3.7723,-1.9621 -5.3505,-7.1811 -9.2442,-8.8905 -3.6754,-1.6135 -8.32,0.5572 -12.1239,-0.724 -3.8812,-1.3073 -6.6953,-4.936 -10.3683,-6.7478 -6.0976,-3.0079 -13.6367,-3.4073 -19.4946,-6.8584 -3.8584,-2.2731 -5.7148,-6.2541 -10.3172,-8.7324 0,0 4.2551,-8.0312 4.2551,-8.0312 m -68.9733,-49.6527 c 3.423,4.4486 7.8667,7.3477 12.1505,11.4649 3.2679,3.1407 5.2564,6.6656 8.9833,9.2452 3.1594,2.1863 6.6583,3.0864 10.0447,4.901 5.5424,2.97 10.5869,6.0315 15.894,9.4044 7.4865,4.7579 15.052,11.9387 21.4878,15.4042 0,0 -4.3103,8.0049 -4.3103,8.0049 -4.7425,-2.5537 -13.2522,-3.0616 -18.475,-6.9936 -3.3969,-2.5574 -4.16,-7.883 -7.7029,-10.2346 -3.3442,-2.2199 -8.3313,-0.8524 -11.8527,-2.7788 -3.593,-1.9656 -5.7639,-6.2105 -8.9867,-8.7377 -5.3502,-4.1952 -12.9025,-6.8518 -17.4602,-11.8968 -3.002,-3.3228 -3.7506,-8.0497 -6.9382,-12.1923 0,0 7.1657,-5.5908 7.1657,-5.5908 m -4.9124,-78.9673 c -1.7132,5.3451 -2.1568,10.905 -3.4349,16.7079 -0.975,4.4266 -3.0584,7.9711 -3.3382,12.4951 -0.2368,3.8347 0.9634,7.0028 1.3278,10.8273 0.5963,6.2594 1.0963,11.0486 2.1102,17.2544 1.4303,8.7542 3.0997,16.4208 7.5571,22.2138 0,0 -7.2053,5.5442 -7.2053,5.5442 -3.2846,-4.2688 -11.6433,-10.7331 -12.8823,-17.1517 -0.8059,-4.1747 2.4598,-9.0726 1.9995,-13.2999 -0.4345,-3.9904 -4.432,-7.4054 -4.9155,-11.39 -0.4933,-4.0655 1.8182,-8.6317 2.3139,-12.6971 0.823,-6.7489 -0.7238,-14.6138 1.2762,-21.1119 1.3172,-4.28 4.9228,-7.1303 6.5182,-12.1079 0,0 8.6733,2.7158 8.6733,2.7158 m -9.0106,-75.7835 c 4.5202,3.3266 11.0283,4.6118 15.8041,8.1461 3.6432,2.6959 7.1747,8.8676 9.7014,12.63 2.1422,3.1889 5.7944,9.9443 6.0697,13.7753 0.4506,6.2701 -5.3276,16.6596 -9.4851,21.3774 -5.8647,6.6552 -11.6781,12.6284 -13.909,19.5888 0,0 -8.6575,-2.7748 -8.6575,-2.7748 1.6439,-5.1291 1.9111,-15.847 6.5112,-20.4913 2.9919,-3.0208 8.4922,-2.808 11.1299,-6.1433 2.4898,-3.1483 0.2264,-6.175 0.7799,-10.1501 0.5647,-4.0557 2.1648,-4.816 0.4035,-8.5134 -2.9238,-6.1378 -7.918,-7.0096 -13.5762,-10.7789 -3.7269,-2.4826 -5.8996,-6.2127 -10.1091,-9.3106 0,0 5.3372,-7.3552 5.3372,-7.3552 m -13.3586,-72.8935 c -3.7051,4.2158 -3.2064,6.9758 -3.7952,12.888 -0.4491,4.5099 -1.3192,7.7007 -0.5924,12.1744 0.6165,3.792 2.7475,6.7886 3.8354,10.4733 1.7804,6.0307 2.9669,11.6235 4.4387,17.7366 2.0762,8.6234 3.0695,15.9907 8.9558,20.3227 0,0 -5.3881,7.3214 -5.3881,7.3214 -4.3375,-3.1922 -13.6154,-9.8477 -15.2977,-16.1647 -1.0942,-4.1086 1.8225,-9.1569 0.9665,-13.3221 -0.8079,-3.9318 -5.1342,-6.5401 -6.2592,-10.3931 -1.1478,-3.9312 0.2681,-8.3633 -0.3105,-12.4177 -0.9606,-6.7306 -4.3985,-15.45 -2.6982,-22.0318 1.1199,-4.3351 5.8282,-8.6143 9.2785,-12.5402 0,0 6.8664,5.9532 6.8664,5.9532 m 64.9074,-30.9291 c -5.5389,-0.909 -11.7083,-0.8107 -17.5731,-1.7647 -4.4739,-0.7276 -7.6124,-2.5081 -12.1241,-2.075 -3.8243,0.3674 -5.6324,1.9893 -9.1433,3.5481 -5.7463,2.5511 -5.1105,3.7843 -7.9753,9.3819 -4.0413,7.8962 -13.9211,15.774 -18.7459,21.2638 0,0 -6.8282,-6.0011 -6.8282,-6.0011 3.5553,-4.0454 5.3888,-10.4316 9.3126,-15.6598 2.5521,-3.4005 7.1847,-4.4042 9.3649,-8.0548 2.058,-3.446 3.713,-10.1987 7.1655,-12.2447 3.5228,-2.0876 9.7875,-1.2428 13.8695,-1.5729 6.7764,-0.5479 15.0311,-2.3541 21.6592,-0.8401 4.3657,0.9972 7.2716,4.1944 12.4297,5.0409 0,0 -1.4115,8.9784 -1.4115,8.9784 m 83.9069,1.9455 c -5.0095,-2.5323 -9.6792,-3.9005 -15.3987,-5.5094 -4.363,-1.2273 -6.8207,-2.7532 -11.3375,-2.3793 -3.8285,0.3173 -6.224,2.2845 -9.8769,3.4741 -5.9787,1.9471 -12.3973,3.8575 -18.6222,4.7466 -8.7811,1.2542 -21.3177,-1.9534 -28.5306,-3.1371 0,0 1.4723,-8.9714 1.4723,-8.9714 5.3151,0.8722 11.7211,-2.1602 18.2429,-1.7138 4.2419,0.2903 7.2666,4.0552 11.4299,3.1896 3.93,-0.8171 6.3649,-5.3443 10.192,-6.5541 3.9048,-1.2343 8.7235,-0.019 12.8069,-0.3312 6.7786,-0.5186 16.4178,-2.1694 22.5898,0.6817 4.0653,1.8778 6.4127,6.0072 11.0779,8.3654 0,0 -4.0458,8.1389 -4.0458,8.1389 m 58.7835,-34.3141 c 0.719,5.5668 2.2489,13.5862 1.3134,19.4533 -0.7136,4.4757 -3.3955,10.0354 -5.0263,14.2643 -1.382,3.5847 -4.0659,10.5347 -6.9116,13.1148 -4.6575,4.2227 -20.2687,4.8635 -25.7709,1.8202 -7.7617,-4.2929 -15.4716,-11.8183 -21.9951,-15.1159 0,0 4.1016,-8.114 4.1016,-8.114 4.8071,2.43 14.0227,2.5625 19.0705,6.7165 3.2832,2.7018 3.1064,7.8838 7.1674,9.1412 3.8334,1.1869 4.4066,-2.2772 7.8638,-4.3156 3.5274,-2.0798 4.9986,-1.4506 6.8488,-5.1042 3.0715,-6.0653 1.3639,-11.3847 1.9702,-18.156 0.3993,-4.46 3.0321,-7.2959 2.3626,-12.4799 0,0 9.0056,-1.2247 9.0056,-1.2247 m -48.5679,-67.3055 c 2.0226,5.2358 3.0902,10.6951 5.63,16.0663 1.9375,4.0972 1.9114,4.3695 6.2045,5.823 3.6391,1.2317 8.2559,0.899 11.8822,2.1662 5.9353,2.074 13.8444,9.4754 17.1706,14.8117 4.6921,7.5275 5.8805,21.3008 6.8168,28.5499 0,0 -9.0165,1.1645 -9.0165,1.1645 -0.6899,-5.3418 -4.9844,-9.9788 -7.0567,-16.1787 -1.3479,-4.0324 1.0207,-8.1053 -1.608,-11.4477 -2.4813,-3.1551 -5.9479,-1.9837 -9.6241,-3.5931 -3.7508,-1.6421 -5.823,-4.3911 -9.6754,-5.781 -6.3953,-2.3072 -17.3209,-8.3811 -18.8325,-15.0091 -0.9957,-4.3656 1.5371,-8.3644 -0.3464,-13.2401 0,0 8.4555,-3.3319 8.4555,-3.3319 m -85.1328,19.9268 c 4.563,-3.2684 8.1733,-8.1557 12.8672,-11.7992 3.5806,-2.7793 8.9319,-5.0149 12.8903,-7.2229 3.355,-1.8719 6.7404,-4.5762 10.1286,-6.3876 5.5453,-2.9646 12.8845,-6.1611 19.0927,-7.1554 8.7576,-1.4026 26.7077,6.1342 29.3415,12.9522 0,0 -8.4803,3.2759 -8.4803,3.2759 -1.9408,-5.0241 -5.6105,-1.8848 -12.1186,-2.4984 -4.2329,-0.3991 -6.9225,-3.9908 -11.0226,-2.864 -3.8703,1.0637 -5.3508,5.6575 -8.9069,7.5192 -3.6284,1.8995 -8.0604,1.085 -11.813,2.7252 -6.2296,2.723 -8.8693,8.6264 -14.304,12.7118 -3.5795,2.6909 -8.0838,3.0522 -12.3331,6.0959 0,0 -5.3418,-7.3527 -5.3418,-7.3527 m -73.6104,-12.7071 c 4.5406,3.3001 9.9594,6.1512 14.7764,9.6299 3.6746,2.6536 5.7345,5.6358 9.9484,7.3049 3.5721,1.4145 6.1155,0.6836 9.9459,0.9789 6.2692,0.4833 10.472,0.7644 16.7442,0.3177 8.8477,-0.6302 16.7608,-0.56 22.7027,-4.8162 0,0 5.2939,7.3907 5.2939,7.3907 -4.3785,3.1364 -12.2911,10.6755 -18.8161,11.0755 -4.2439,0.2602 -8.5952,-3.5505 -12.8473,-3.515 -4.0137,0.033 -8.2262,3.4655 -12.2349,3.2633 -4.0901,-0.2062 -8.6185,-3.4798 -12.3944,-5.0655 -6.2684,-2.6323 -14.4632,-4.6342 -19.6833,-8.9899 -3.4383,-2.8689 -4.5011,-7.1133 -8.7295,-10.1864 0,0 5.294,-7.3879 5.294,-7.3879 m -88.2434,-19.3195 c 5.6129,-0.022 12.8442,-0.5989 18.7096,0.352 4.4743,0.7253 8.6489,2.8872 13.1549,3.3781 3.8195,0.4158 7.2824,-0.5008 11.124,-0.5452 6.2877,-0.073 13.7665,0.2964 19.8458,1.9035 8.5757,2.267 18.9842,10.6383 24.897,14.9357 0,0 -5.3452,7.3544 -5.3452,7.3544 -4.3571,-3.1667 -11.1065,-3.1274 -16.9033,-6.1491 -3.7703,-1.9654 -4.973,-6.5107 -9.1653,-7.2223 -3.9572,-0.6718 -7.4798,2.7762 -11.4938,2.7879 -4.0954,0.012 -8.0748,-2.6348 -12.1127,-3.32 -6.7031,-1.1375 -13.532,0.4167 -20.2332,-0.7309 -4.4137,-0.7558 -7.1535,-3.6769 -12.3805,-3.656 0,0 -0.097,-9.0881 -0.097,-9.0881 M 251.40967,1760.6787 c -0.75997,-5.5871 -2.63322,-12.936 -2.25833,-18.8928 0.28595,-4.5439 2.58829,-10.3356 3.81799,-14.7195 1.04198,-3.7162 2.31416,-9.2599 4.14885,-12.6548 3.00282,-5.5564 8.81673,-11.8602 13.75587,-15.7974 6.96735,-5.554 21.55211,-9.5341 28.89357,-9.5994 0,0 0.0808,9.09 0.0808,9.09 -5.40984,0.048 -8.47347,5.3919 -14.42484,8.1654 -3.87084,1.8039 -8.25598,0.035 -11.45373,2.8671 -3.01853,2.6731 -2.03624,7.1296 -4.15557,10.5595 -2.16242,3.4994 -5.49293,4.6515 -7.12518,8.4279 -2.70963,6.2691 -0.41093,11.5007 -0.51223,18.3294 -0.0667,4.4978 -2.47782,7.7359 -1.77011,12.9389 0,0 -8.99711,1.2857 -8.99711,1.2857 m -12.36834,75.9095 c 4.33327,-3.6078 7.22443,-7.308 10.83779,-12.0585 2.75635,-3.6239 4.79909,-5.136 5.82115,-9.573 0.86597,-3.761 -0.19369,-6.3493 -0.38001,-10.2038 -0.30496,-6.3086 -0.89661,-11.2828 -1.49349,-17.5711 -0.84199,-8.8707 -0.56436,-19.345 -1.55399,-26.6205 0,0 9.00835,-1.2253 9.00835,-1.2253 0.72926,5.3612 5.83203,12.0081 6.13767,18.5677 0.19879,4.2664 -3.46872,8.3636 -3.1752,12.6252 0.27708,4.0227 4.23674,7.5887 4.57146,11.6066 0.34149,4.0996 -2.3265,8.993 -3.35515,12.9764 -1.70761,6.6129 -3.47561,16.5389 -8.4051,21.2657 -3.24679,3.1134 -8.11588,3.7961 -12.1512,7.1558 0,0 -5.86228,-6.9452 -5.86228,-6.9452 m -22.60345,84.7079 c -0.51905,-5.6147 -2.46831,-11.5215 -3.05664,-17.4615 -0.44883,-4.5312 0.53307,-9.432 0.0936,-13.9638 -0.37287,-3.8414 -1.63811,-8.6472 -1.61312,-12.5062 0.0409,-6.316 2.3346,-15.9289 5.70679,-21.2695 4.75693,-7.5336 16.38731,-14.1394 22.03013,-18.8375 0,0 5.81703,6.9868 5.81703,6.9868 -4.15813,3.462 -6.73874,10.1502 -11.58585,14.5801 -3.15262,2.8813 -7.93806,2.0765 -9.51565,6.0456 -1.48916,3.7467 1.44251,7.1276 1.20895,11.1526 -0.23833,4.1068 -2.62287,7.0354 -2.60423,11.1495 0.031,6.8299 3.58134,12.8863 4.00774,19.7027 0.2809,4.4896 -1.92793,8.2949 -1.44457,13.5235 0,0 -9.04421,0.8977 -9.04421,0.8977 m -33.51592,73.8785 c 3.61933,-4.3238 6.35408,-9.7523 10.06097,-14.4306 2.8277,-3.5687 6.47427,-6.0903 8.94486,-9.9151 2.09384,-3.2422 2.75969,-6.816 4.4529,-10.2838 2.77125,-5.6759 4.80637,-9.4758 6.75138,-15.485 2.7437,-8.4769 4.84908,-16.5327 4.17317,-23.8442 0,0 9.05285,-0.8369 9.05285,-0.8369 0.49807,5.3878 4.40209,14.3013 2.81257,20.6724 -1.03384,4.1438 -6.43388,7.2988 -8.06005,11.2488 -1.53502,3.7285 -0.0211,8.7952 -1.68469,12.4678 -1.69741,3.7473 -5.96922,6.3474 -8.40242,9.6649 -4.0393,5.5075 -5.98602,12.7114 -10.4144,17.9107 -2.91673,3.4246 -7.308,4.5911 -10.67847,8.6176 0,0 -7.00867,-5.7866 -7.00867,-5.7866 m -8.12677,61.4452 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -12.08751,-13.1293 -9.93479,-17.1414 1.8244,-3.401 3.47414,-7.9868 5.60659,-11.2033 3.49014,-5.2644 7.64138,-10.3403 11.89483,-15.0105 6.00008,-6.588 14.38451,-13.0549 19.09763,-18.6854 0,0 6.97157,5.8357 6.97157,5.8357 -3.47304,4.149 -5.30992,12.4159 -10.09264,16.9157 -3.11073,2.9267 -8.52629,2.6858 -11.38544,5.8596 -2.69891,2.9958 -1.93159,7.8619 -4.18839,11.2031 -2.30268,3.4091 -6.2761,4.7319 -8.59463,8.1301 -3.84893,5.6413 -1.61645,0.6329 5.20408,0.9907 4.49235,0.2356 7.9306,2.8904 13.18163,2.8628 0,0 0.10909,9.0884 0.10909,9.0884 m 88.44737,-0.4643 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4797 -13.5925,-1.343 -3.85791,0.1163 -7.58748,1.4763 -11.43079,1.8279 -6.29029,0.5754 -12.63262,0.6732 -18.94574,0.453 -8.90556,-0.3105 -19.27056,-2.5378 -26.61338,-2.4992 0,0 -0.0477,-9.0917 -0.0477,-9.0917 5.41084,-0.028 12.9086,-3.9656 19.43308,-3.2206 4.2436,0.4845 7.5536,4.7621 11.82354,4.8878 4.03063,0.1186 7.40125,-3.6164 11.41965,-3.9491 4.10005,-0.3395 8.05368,1.937 12.16621,2.0574 6.82714,0.1999 13.54595,-2.586 20.36647,-2.2282 4.49235,0.2356 7.9306,2.8904 13.18163,2.8628 0,0 0.10909,9.0884 0.10909,9.0884 m 88.44737,-0.4643 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4796 -13.5925,-1.343 -3.85791,0.1163 -7.58748,1.4763 -11.43079,1.8279 -6.29028,0.5754 -12.63262,0.6732 -18.94574,0.453 -8.90556,-0.3105 -19.27056,-2.5377 -26.61338,-2.4992 0,0 -0.0477,-9.0917 -0.0477,-9.0917 5.41084,-0.028 12.9086,-3.9656 19.43308,-3.2206 4.2436,0.4845 7.5536,4.7621 11.82354,4.8878 4.03063,0.1186 7.40125,-3.6164 11.41965,-3.9491 4.10005,-0.3395 8.05368,1.937 12.16621,2.0574 6.82714,0.1999 13.54595,-2.586 20.36647,-2.2282 4.49235,0.2356 7.9306,2.8904 13.18163,2.8628 0,0 0.10909,9.0884 0.10909,9.0884 m 88.44737,-0.4643 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4796 -13.5925,-1.3429 -3.85791,0.1162 -7.58748,1.4762 -11.43078,1.8278 -6.29029,0.5754 -12.63263,0.6732 -18.94575,0.453 -8.90556,-0.3105 -19.27056,-2.5377 -26.61338,-2.4992 0,0 -0.0477,-9.0917 -0.0477,-9.0917 5.41084,-0.028 12.9086,-3.9656 19.43308,-3.2206 4.2436,0.4845 7.5536,4.7621 11.82354,4.8878 4.03063,0.1186 7.40125,-3.6164 11.41965,-3.9491 4.10005,-0.3394 8.05368,1.937 12.16621,2.0574 6.82714,0.1999 13.54595,-2.586 20.36647,-2.2282 4.49236,0.2356 7.93061,2.8904 13.18163,2.8629 0,0 0.10909,9.0883 0.10909,9.0883 m 88.44737,-0.4643 c -5.63874,0.03 -11.90126,1.2559 -17.86953,1.1545 -4.55276,-0.077 -9.04114,-1.4796 -13.5925,-1.3429 -3.85791,0.1162 -7.58748,1.4762 -11.43078,1.8278 -6.29029,0.5754 -12.63263,0.6732 -18.94575,0.453 -8.90556,-0.3105 -19.27056,-2.5377 -26.61338,-2.4992 0,0 -0.0477,-9.0917 -0.0477,-9.0917 5.41084,-0.028 12.9086,-3.9656 19.43308,-3.2206 4.2436,0.4845 7.5536,4.7621 11.82354,4.8878 4.03063,0.1186 7.40125,-3.6164 11.41965,-3.9491 4.10005,-0.3394 8.05368,1.937 12.16621,2.0575 6.82714,0.1998 13.54595,-2.5861 20.36647,-2.2283 4.49236,0.2356 7.93061,2.8904 13.18163,2.8629 0,0 0.10909,9.0883 0.10909,9.0883 m -3.80803,-85.2866 c 2.15678,5.21 5.65443,10.7772 7.64652,16.404 1.51965,4.2923 1.71766,9.206 3.29338,13.478 1.33602,3.621 3.79054,7.0361 5.19797,10.6296 2.30352,5.8814 4.25855,13.0542 4.96373,19.331 0.99476,8.8543 -9.95532,24.5344 -17.29814,24.5729 0,0 -0.0477,-9.0916 -0.0477,-9.0916 5.41084,-0.028 2.90979,-0.4081 3.44275,-6.9528 0.34665,-4.2567 3.96412,-7.2827 3.2748,-11.4982 -0.65068,-3.9793 -5.12047,-6.1534 -6.46342,-9.9552 -1.37019,-3.8791 -0.33262,-8.0345 -1.44843,-11.9945 -1.85238,-6.574 -6.74433,-11.7109 -8.79422,-18.2259 -1.3502,-4.291 -0.13285,-8.3124 -2.14134,-13.1642 0,0 8.37413,-3.5331 8.37413,-3.5331 m -41.99861,-79.0793 c 3.20465,4.6394 7.81275,9.5089 10.83949,14.6536 2.3089,3.9245 3.41383,8.766 5.7489,12.6751 1.97963,3.3132 5.03807,6.1515 7.10647,9.4097 3.38532,5.3327 6.38571,11.192 8.89927,16.9872 3.54574,8.1751 5.79103,18.9024 8.59962,25.6869 0,0 -8.40037,3.4776 -8.40037,3.4776 -2.06962,-4.9995 -8.54116,-10.0925 -10.58217,-16.334 -1.3275,-4.0596 1.16847,-8.8068 -0.55256,-12.7165 -1.62458,-3.6906 -6.43114,-4.9414 -8.56273,-8.364 -2.17486,-3.4922 -1.97048,-7.9647 -3.80271,-11.6485 -3.04167,-6.1153 -8.77075,-10.238 -12.02328,-16.2435 -2.14232,-3.9556 -1.72869,-8.0473 -4.713,-12.3677 0,0 7.44307,-5.2159 7.44307,-5.2159 m -63.64179,-52.2723 c 0.96141,5.5557 2.97221,7.9807 6.70917,12.6337 2.85067,3.5494 4.08118,5.5513 8.14882,7.5972 3.44807,1.7339 6.84977,1.5355 10.54955,2.6336 6.05537,1.7973 12.85598,4.2438 18.32628,7.4023 7.71663,4.4555 15.01813,16.4591 19.19126,22.5006 0,0 -7.48042,5.167 -7.48042,5.167 -3.07514,-4.4519 -8.96379,-6.7497 -13.64538,-11.3536 -3.04497,-2.9944 -2.95567,-7.5964 -6.7548,-9.5485 -3.5862,-1.8427 -7.99544,0.5446 -11.85679,-0.6162 -3.9398,-1.1844 -7.08198,-4.8602 -10.73175,-6.7582 -6.05893,-3.1508 -15.83374,-7.0803 -19.03941,-13.1092 -2.11145,-3.9709 -1.46545,-9.7649 -2.36076,-14.9385 0,0 8.94423,-1.6102 8.94423,-1.6102 m 5.61193,-88.0802 c 1.16308,5.5161 0.5653,13.7906 -0.22523,19.7065 -0.60301,4.5127 -1.41366,8.1351 -1.22485,12.6843 0.16043,3.8561 1.06603,8.4198 0.98822,12.2781 -0.12735,6.3149 -1.27372,12.9676 -2.51149,19.1619 -1.74603,8.7381 -4.7488,17.1634 -3.49683,24.398 0,0 -8.95765,1.5501 -8.95765,1.5501 -0.92256,-5.3311 -4.64912,-14.3561 -3.23581,-20.7686 0.91923,-4.1707 5.82583,-7.1252 6.64009,-11.3186 0.76862,-3.9584 -2.37742,-7.7748 -2.13481,-11.7996 0.24758,-4.1065 2.92583,-7.224 3.13899,-11.3326 0.35384,-6.8206 -2.9412,-14.5483 -1.43912,-21.2108 0.98931,-4.3882 4.66335,-6.2772 3.58023,-11.4139 0,0 8.87826,-1.9348 8.87826,-1.9348 m -83.72844,2.7729 c 5.63794,-0.091 12.01322,-1.2998 17.98061,-1.1573 4.55209,0.1087 9.0579,1.5773 13.61054,1.4948 3.859,-0.07 7.60448,-1.3857 11.45168,-1.6914 6.29665,-0.5004 4.2271,-2.9735 8.25916,-7.8359 5.68779,-6.8592 30.05974,-0.5864 31.57432,6.5966 0,0 -8.89385,1.8753 -8.89385,1.8753 -1.11608,-5.2931 -1.85875,-4.6632 -7.97746,-2.2855 -3.97968,1.5465 -6.94577,0.1791 -9.61567,3.5134 -2.52026,3.1475 -5.99364,10.8507 -9.96642,11.5363 -4.05349,0.6994 -8.63962,-1.9794 -12.75039,-2.1488 -6.82423,-0.2812 -13.5431,2.4238 -20.36095,2.019 -4.4906,-0.2666 -7.85413,-2.9143 -13.10441,-2.8301 0,0 -0.20716,-9.0864 -0.20716,-9.0864 m -40.93009,-64.6673 c 5.63206,0.264 18.3525,7.4841 19.99078,13.2224 1.24975,4.3773 -0.28924,11.2991 -0.40222,15.851 -0.0954,3.8584 0.92442,6.9965 1.43035,10.8223 0.82804,6.2618 2.3821,8.4348 5.40312,13.9821 4.2616,7.8252 7.18026,11.7782 14.52203,11.6604 0,0 0.14584,9.0904 0.14584,9.0904 -5.41008,0.087 -19.10548,-0.8969 -22.6557,-6.4205 -2.30911,-3.5926 -0.93432,-9.5122 -2.89692,-13.3064 -1.85259,-3.5815 -7.10791,-7.3402 -7.74607,-11.3213 -0.6511,-4.062 1.81141,-8.7381 2.15705,-12.8378 0.57378,-6.8057 0.11692,-10.3391 -3.51584,-16.1216 -2.39277,-3.8087 -1.5518,-5.2944 -6.79661,-5.5402 0,0 0.36419,-9.0808 0.36419,-9.0808 m 3454.14066,64.6673 c 5.6379,0.09 6.6672,-0.2829 10.8168,-4.5724 3.1655,-3.2722 5.768,-5.1664 7.8999,-9.1899 1.8068,-3.4106 1.067,-4.7729 1.0501,-8.632 -0.028,-6.3161 -1.0836,-12.1657 -0.7168,-18.4712 0.5173,-8.8947 14.5867,-22.588 21.9208,-22.9318 0,0 0.4257,9.081 0.4257,9.081 -5.4045,0.2533 -5.2448,1.7362 -7.0798,8.0405 -1.1934,4.1005 -5.2811,6.2122 -5.2174,10.4835 0.06,4.0318 3.9451,7.5428 4.2419,11.5636 0.3028,4.1025 -3.1136,10.1586 -5.252,13.6735 -3.5498,5.835 -6.2037,15.268 -11.8545,19.103 -3.7219,2.526 -11.0689,1.0248 -16.3192,0.9406 0,0 0.085,-9.0884 0.085,-9.0884 m -83.7285,-2.7729 c 1.1631,-5.516 15.8883,-15.6302 21.5797,-13.8412 4.3416,1.3647 9.3124,9.0649 12.1229,12.6471 2.3827,3.0362 0.76,2.8351 4.6129,2.6233 6.306,-0.3467 12.3549,-0.6837 18.6682,-0.4725 8.906,0.2979 19.389,2.5694 26.7308,2.6871 0,0 -0.1458,9.0904 -0.1458,9.0904 -5.4101,-0.087 -12.8502,3.7946 -19.3719,3.0261 -4.2418,-0.4998 -7.5244,-4.7538 -11.7945,-4.8734 -4.0307,-0.1129 -7.396,3.6269 -11.4139,3.9653 -4.0996,0.3452 -11.0404,-5.237 -13.522,-8.518 -4.1197,-5.4468 -4.1276,-8.9969 -10.8085,-7.5855 -4.4004,0.9297 -6.6712,-2.0708 -7.7543,3.066 0,0 -8.9036,-1.8147 -8.9036,-1.8147 m 5.6119,88.0802 c 0.9615,-5.5556 -0.4158,-10.1681 -0.8675,-16.1197 -0.3447,-4.54 0.3873,-8.7841 -0.4363,-13.2624 -0.6986,-3.7958 -2.6312,-7.4116 -3.4867,-11.1748 -1.4002,-6.1593 -2.1094,-14.3779 -1.2485,-20.6354 1.2144,-8.8271 -0.2353,-19.5251 1.2793,-26.7082 0,0 8.8938,1.8753 8.8938,1.8753 -1.1161,5.2931 4.7619,11.0893 4.7072,17.6551 -0.036,4.2706 -5.0036,8.3316 -5.223,12.5975 -0.207,4.0268 3.832,6.7619 4.5676,10.7261 0.7507,4.0447 -0.9003,7.9689 -0.3972,12.0522 0.8352,6.7787 4.7306,13.6095 4.766,20.4391 0.023,4.4984 -2.6942,8.8708 -3.5895,14.0444 0,0 -8.9652,-1.4892 -8.9652,-1.4892 m -63.6418,52.2723 c 3.2047,-4.6394 7.0651,-11.8316 11.657,-15.6439 3.5029,-2.9082 9.7508,-4.6829 13.8208,-6.7235 3.4497,-1.73 6.8588,-4.3971 10.3248,-6.0943 5.6728,-2.7778 10.2108,-4.3614 15.6563,-7.562 7.6817,-4.5148 11.7892,-8.8655 13.0412,-16.1001 0,0 8.9576,1.5502 8.9576,1.5502 -0.9225,5.3311 -2.0255,17.4102 -7.1213,21.5502 -3.3143,2.6927 -9.8638,1.8596 -13.6987,3.7412 -3.6199,1.776 -5.663,6.5395 -9.2904,8.3001 -3.7012,1.7963 -8.1483,0.9956 -11.994,2.4573 -6.3841,2.4265 -9.0537,6.6165 -13.8772,11.45 -3.177,3.1837 -6.9789,3.8692 -9.9632,8.1896 0,0 -7.5129,-5.1148 -7.5129,-5.1148 m -41.9985,79.0793 c 2.1568,-5.2099 3.6637,-11.6989 6.2988,-17.0548 2.01,-4.0857 5.2521,-7.6064 7.1278,-11.7556 1.5895,-3.5171 2.1752,-7.6182 3.6556,-11.1823 2.423,-5.8333 5.5467,-11.661 8.8689,-17.0337 4.6865,-7.5789 12.591,-15.5163 16.7642,-21.5579 0,0 7.4804,5.1671 7.4804,5.1671 -3.0752,4.4519 -3.7709,12.4239 -7.7545,17.6444 -2.5909,3.3954 -7.9253,4.0132 -10.1522,7.6586 -2.102,3.4411 -0.3894,8.0738 -1.9681,11.784 -1.6109,3.7856 -5.407,6.1816 -7.3747,9.7948 -3.2666,5.9982 -3.511,13.04 -6.6132,19.1245 -2.0432,4.0076 -5.9035,5.9788 -7.912,10.8306 0,0 -8.421,-3.4197 -8.421,-3.4197 m -3.8081,85.2866 c -5.6388,-0.03 -17.9383,-9.9171 -17.5808,-15.8751 0.2726,-4.5449 2.5505,-9.7822 3.3297,-14.2681 0.6601,-3.8026 0.4526,-8.1144 1.1291,-11.9139 1.1074,-6.2185 3.2742,-12.7403 5.5509,-18.6327 3.2114,-8.312 9.3754,-17.4791 12.184,-24.2636 0,0 8.4004,3.4775 8.4004,3.4775 -2.0696,4.9995 -1.1463,13.2599 -4.187,19.0803 -1.9778,3.7856 -7.0096,5.3063 -8.5275,9.2993 -1.4328,3.7691 1.1561,7.9805 0.3158,11.924 -0.8575,4.0237 -3.9888,6.9716 -5.0748,10.9398 -1.8027,6.5875 -0.9333,11.2038 0.1364,17.9469 0.7045,4.4414 -0.9409,3.1691 4.3101,3.1966 0,0 0.014,9.089 0.014,9.089 m 88.4474,0.4643 c -5.6388,-0.03 -11.9138,1.1309 -17.8807,0.9669 -4.5517,-0.1251 -9.0251,-1.5745 -13.5777,-1.4856 -3.8589,0.076 -7.6025,1.3965 -11.4493,1.7077 -6.296,0.5093 -12.639,0.5405 -18.9495,0.2541 -8.9018,-0.404 -19.2428,-2.7399 -26.5856,-2.7785 0,0 0.048,-9.0916 0.048,-9.0916 5.4108,0.028 12.9495,-3.8299 19.4658,-3.0165 4.2383,0.529 7.5032,4.8411 11.7716,5.0117 4.0291,0.1609 7.4388,-3.5385 11.4605,-3.829 4.1033,-0.2964 8.0329,2.0215 12.1439,2.185 6.8247,0.2716 13.5723,-2.4437 20.3887,-2.0143 4.4897,0.2828 7.8999,2.9735 13.1509,3.0011 0,0 0.014,9.089 0.014,9.089 m 88.4473,0.4643 c -5.6387,-0.03 -11.9138,1.1309 -17.8806,0.9668 -4.5517,-0.125 -9.0251,-1.5744 -13.5777,-1.4855 -3.8589,0.076 -7.6026,1.3965 -11.4493,1.7077 -6.296,0.5093 -12.639,0.5405 -18.9495,0.2541 -8.9018,-0.404 -19.2429,-2.7399 -26.5857,-2.7785 0,0 0.048,-9.0917 0.048,-9.0917 5.4108,0.028 12.9495,-3.8298 19.4658,-3.0164 4.2382,0.529 7.5032,4.8411 11.7715,5.0116 4.0292,0.161 7.4388,-3.5385 11.4605,-3.829 4.1034,-0.2963 8.0329,2.0215 12.144,2.1851 6.8246,0.2716 13.5723,-2.4437 20.3887,-2.0143 4.4896,0.2828 7.8998,2.9735 13.1509,3.0011 0,0 0.014,9.089 0.014,9.089 m 88.4474,0.4643 c -5.6387,-0.03 -11.9138,1.1309 -17.8807,0.9668 -4.5517,-0.1251 -9.0251,-1.5745 -13.5776,-1.4856 -3.8589,0.076 -7.6026,1.3966 -11.4494,1.7078 -6.296,0.5093 -12.639,0.5405 -18.9494,0.2541 -8.9018,-0.404 -19.2429,-2.7399 -26.5857,-2.7785 0,0 0.048,-9.0917 0.048,-9.0917 5.4109,0.028 12.9495,-3.8298 19.4658,-3.0164 4.2383,0.529 7.5032,4.8411 11.7716,5.0116 4.0292,0.161 7.4388,-3.5385 11.4605,-3.829 4.1034,-0.2963 8.0329,2.0215 12.1439,2.1851 6.8247,0.2715 13.5724,-2.4437 20.3888,-2.0143 4.4896,0.2828 7.8998,2.9735 13.1508,3.0011 0,0 0.014,9.089 0.014,9.089 m 88.4474,0.4643 c -5.6388,-0.03 -11.9138,1.1309 -17.8807,0.9668 -4.5517,-0.1251 -9.0251,-1.5745 -13.5777,-1.4856 -3.8589,0.076 -7.6025,1.3965 -11.4493,1.7078 -6.296,0.5093 -12.639,0.5405 -18.9495,0.2541 -8.9018,-0.404 -19.2428,-2.74 -26.5856,-2.7785 0,0 0.048,-9.0917 0.048,-9.0917 5.4108,0.028 12.9495,-3.8299 19.4658,-3.0164 4.2383,0.529 7.5032,4.8411 11.7716,5.0116 4.0291,0.161 7.4388,-3.5385 11.4605,-3.829 4.1033,-0.2963 8.0329,2.0215 12.1439,2.1851 6.8247,0.2715 13.5723,-2.4437 20.3887,-2.0143 4.4897,0.2828 7.8999,2.9735 13.1509,3.0011 0,0 0.014,9.089 0.014,9.089 m -8.1268,-61.4452 c 3.6194,4.3238 8.5582,8.3648 12.2868,13.0259 2.8444,3.5557 4.6307,7.8919 7.6447,11.3049 2.5551,2.8928 6.0951,5.0477 8.7465,7.8519 4.3394,4.5896 11.2187,13.2337 11.7932,19.5233 0.8104,8.8723 -24.997,8.9066 -32.3399,8.8681 0,0 0.048,-9.0917 0.048,-9.0917 5.4108,0.028 12.9495,-3.8299 19.4658,-3.0164 4.2383,0.529 3.6136,4.8073 1.6313,1.0235 -1.8711,-3.5717 -6.5928,-3.7566 -9.3375,-6.7102 -2.8004,-3.0135 -3.4012,-7.4267 -5.937,-10.6665 -4.2097,-5.3784 -10.6541,-8.773 -14.7288,-14.2541 -2.6839,-3.6101 -2.8323,-7.9514 -6.2027,-11.9779 0,0 6.9298,-5.8808 6.9298,-5.8808 m -33.5159,-73.8785 c -0.519,5.6147 0.4842,10.4857 1.0998,16.4225 0.4697,4.5288 -0.2975,7.7298 1.5317,11.8994 1.5508,3.5342 4.1127,5.6551 6.2554,8.8647 3.5069,5.253 6.5911,9.7154 10.0565,14.9969 4.8883,7.4502 9.1915,16.6236 13.9046,22.2541 0,0 -6.9716,5.8357 -6.9716,5.8357 -3.473,-4.1491 -11.3345,-7.8775 -14.6479,-13.5468 -2.155,-3.6874 -0.7431,-9.0258 -3.0252,-12.6367 -2.1542,-3.4086 -7.2233,-4.4616 -9.558,-7.7489 -2.382,-3.354 -2.4405,-8.4964 -3.9811,-12.3112 -2.5576,-6.3329 -7.055,-14.2516 -6.9763,-21.0807 0.052,-4.498 2.7733,-8.4959 3.2566,-13.7245 0,0 9.0555,0.7755 9.0555,0.7755 m -22.6034,-84.7079 c 4.3332,3.6078 10.7447,7.1786 14.7033,11.6459 3.0198,3.4077 5.7782,9.9693 7.4179,14.2165 1.3901,3.6001 3.8897,8.2061 4.7367,11.971 1.3864,6.162 1.1812,14.1724 0.4752,20.4494 -0.9958,8.8546 -4.9211,19.0335 -5.597,26.3449 0,0 -9.0529,-0.8369 -9.0529,-0.8369 0.4981,-5.3877 -2.4322,-13.4349 -0.872,-19.8137 1.0148,-4.1488 5.5281,-6.7933 5.9824,-11.0406 0.4289,-4.0092 -3.2897,-6.7337 -3.9711,-10.7076 -0.6952,-4.0546 0.9863,-7.362 -0.04,-11.3457 -1.7034,-6.6134 -6.7598,-8.3857 -11.5675,-13.2362 -3.1667,-3.1948 -3.9479,-7.2635 -7.9832,-10.6233 0,0 5.768,-7.0237 5.768,-7.0237 m -12.3684,-75.9095 c -0.7599,5.5871 -0.6872,12.1378 -1.8012,18.0019 -0.8497,4.4733 -2.9606,8.3243 -3.3184,12.8635 -0.3029,3.8476 0.8376,7.0353 1.1469,10.882 0.5061,6.2958 0.9599,9.8644 2.9297,15.8659 2.7789,8.4661 7.2112,14.2675 12.854,18.9656 0,0 -5.817,6.9868 -5.817,6.9868 -4.1581,-3.462 -14.0894,-7.1044 -17.0041,-12.9881 -1.8957,-3.8269 0.1564,-9.9881 -0.7612,-14.16 -0.8662,-3.938 -5.0928,-7.6192 -5.5555,-11.6244 -0.4721,-4.0865 1.9253,-8.7049 2.4911,-12.78 0.9393,-6.7649 -0.6137,-14.0899 0.8978,-20.7502 0.9955,-4.3869 4.2166,-7.2242 4.9243,-12.4271 0,0 9.0136,1.1641 9.0136,1.1641 m -48.3502,-72.5348 c 5.6377,0.05 15.4488,2.0222 20.4499,5.2793 3.815,2.4846 7.4712,7.1685 10.8497,10.2207 2.8641,2.5868 7.0845,5.3921 9.6198,8.3014 4.1496,4.7616 8.3164,13.7336 9.2908,19.9747 1.3746,8.8039 -1.7334,21.3658 -2.7231,28.6413 0,0 -9.0083,-1.2253 -9.0083,-1.2253 0.7292,-5.3613 -2.5771,-12.0026 -2.0634,-18.5487 0.3342,-4.2577 4.1164,-7.1077 3.0035,-11.2317 -1.0505,-3.8929 -5.4181,-4.3998 -7.8862,-7.5878 -2.5182,-3.2528 -2.6629,-6.9544 -5.4123,-10.0147 -4.5642,-5.0803 -10.0332,-6.031 -16.0323,-9.295 -3.9514,-2.1498 -4.8574,-5.38 -10.1075,-5.4267 0,0 0.019,-9.0875 0.019,-9.0875" + style="fill:#e9eaf9;fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg>
--- a/share/hedgewars/Data/Maps/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Maps/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -4,6 +4,7 @@ Basketball Bath Battlefield + Blizzard Blox Bubbleflow Cake @@ -11,7 +12,9 @@ Cave Cheese Cogs + Control CrazyMission + CTF_Blizzard EarthRise Eyes Hammock
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,5 @@ +install(FILES + map.cfg + map.lua + preview.png + DESTINATION ${SHAREPATH}Data/Maps/CTF_Blizzard)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,1 @@ +Snow
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,756 @@ +-------------------------------- +-- CTF_BLIZZARD 0.4 +-------------------------------- + +--------- +-- 0.2 +--------- + +-- disabled super weapons + +-- theme modifications + +-- improved hog placement system: teams can now be put +-- in any order and be of any size + +--------- +-- 0.3 +--------- + +-- In this version: + +-- changed starting weapons +-- changed crate drop contents and rate of drops + +-- completely removed super weapons and super weapon scripts + +-- removed custom respawning +-- removed set respawn points + +-- added AIRespawn-esque respawning +-- added simple left vs right respawn points + +-- added non-lethal poison to flag carriers as an indicator + +-- improved flag mechanics and player-flag feedback +-- flag now instantly respawns if you kill enemy hog and return it, +-- or if the flag falls in water, _BUT_ not if it is blown up + +--------- +-- 0.4 +--------- + +-- tweaked crate drop rates and crate contents +-- improved the teleporters, they should now be able to handle rope... hopefully +-- updated SetEffect calls to be in line with 0.9.15 definitions +-- added visual gears when hogs respawn +-- added visual gears when hogs teleport +-- added visual gear to track flag and flag carriers +-- removed poisoning of flag carriers +-- removed health adjustments for flag carriers due to aforementioned poisons + +--------- +-- 0.5 +--------- + +-- added translation support, hopefully +-- added ctf rules +-- added effects to the teleporters +-- added aura round spawning area +-- changed the aura around the flag carrier / flag to an aura and added some support for this +-- changed things so the seed is no longer always the same... + + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +--------------------------------------------------------------- +----------lots of bad variables and things +----------because someone is too lazy +----------to read about tables properly +------------------ "Oh well, they probably have the memory" + +local actionReset = 0 -- used in CheckTeleporters() + +local roundsCounter = 0 -- used to determine when to spawn more crates + -- currently every 6 TURNS, should this work + -- on ROUNDS instead? +local effectTimer = 0 + +-------------------------- +-- hog and team tracking variales +-------------------------- + +local numhhs = 0 -- store number of hedgehogs +local hhs = {} -- store hedgehog gears + +local numTeams -- store the number of teams in the game +local teamNameArr = {} -- store the list of teams +local teamSize = {} -- store how many hogs per team +local teamIndex = {} -- at what point in the hhs{} does each team begin + +------------------- +-- flag variables +------------------- + +local fGear = {} -- pointer to the case gears that represent the flag +local fThief = {} -- pointer to the hogs who stole the flags +local fIsMissing = {} -- have the flags been destroyed or captured +local fNeedsRespawn = {} -- do the flags need to be respawned +local fCaptures = {} -- the team "scores" how many captures +local fSpawnX = {} -- spawn X for flags +local fSpawnY = {} -- spawn Y for flags + +local fThiefX = {} +local fThiefY = {} +local FTTC = 0 -- flag thief tracker counter +--local fThiefsHealed = false + +local fSpawnC = {} +local fCirc = {} -- flag/carrier marker circles +local fCol = {} -- colour of the clans + +local vCircX = {} +local vCircY = {} +local vCircMinA = {} +local vCircMaxA = {} +local vCircType = {} +local vCircPulse = {} +local vCircFuckAll = {} +local vCircRadius = {} +local vCircWidth = {} +local vCircCol = {} + + +-------------------------------- +--zone and teleporter variables +-------------------------------- + +local redTel +local orangeTel +--local areaArr = {} -- no longer used + +local zXMin = {} +local zWidth = {} +local zYMin = {} +local zHeight = {} +local zOccupied = {} +local zCount = 0 + +------------------------ +-- zone methods +------------------------ +-- see on gameTick also + +function ManageTeleporterEffects() + effectTimer = effectTimer + 1 + if effectTimer > 50 then -- 100 + effectTimer = 0 + + for i = 0,1 do + eX = 10 + zXMin[i] + GetRandom(zWidth[i]-10) + eY = 50 + zYMin[i] + GetRandom(zHeight[i]-110) + + -- steam and smoke and DUST look good, smokering looks trippy + -- smoketrace and eviltrace are not effected by wind? + -- chunk is a LR falling gear + tempE = AddVisualGear(eX, eY, vgtDust, 0, false) + if tempE ~= 0 then + g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE) + SetVisualGearValues(tempE, eX, eY, g3, g4, g5, g6, g7, g8, g9, fCol[i]) + end + end + end +end + +function CreateZone(xMin, yMin, width, height) + + + zXMin[zCount] = xMin + zYMin[zCount] = yMin + zWidth[zCount] = width + zHeight[zCount] = height + zOccupied[zCount] = false + zCount = zCount + 1 + + return (zCount-1) + +end + +function GearIsInZone(gear, zI) + + if (GetX(gear) > zXMin[zI]) and (GetX(gear) < (zXMin[zI]+zWidth[zI])) and (GetY(gear) > zYMin[zI]) and (GetY(gear) < (zYMin[zI]+zHeight[zI])) then + zOccupied[zI] = true + else + zOccupied[zI] = false + end + + return zOccupied[zI] + +end + +------------------------ +--flag methods +------------------------ + +function CheckScore(teamID) + + if teamID == 0 then + alt = 1 + winner = "Red" + + elseif teamID == 1 then + alt = 0 + winner = "Blue" + end + + if fCaptures[teamID] == 2 then + for i = 0, (numhhs-1) do + if GetHogClan(hhs[i]) == alt then + SetEffect(hhs[i], heResurrectable, false) + SetHealth(hhs[i],0) + end + end + --ShowMission("GAME OVER!", "Victory for the " .. winner .. " Team!", "Hooray!", 0, 0) + ShowMission(loc("GAME OVER!"), loc("Victory for the ") .. GetHogTeamName(CurrentHedgehog), loc("Hooray!"), 0, 0) + end + +end + +function HandleRespawns() + + for i = 0, 1 do + + if fNeedsRespawn[i] == true then + fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip) + --fGear[i] = SpawnHealthCrate(fSpawnX[i],fSpawnY[i]) + fNeedsRespawn[i] = false + fIsMissing[i] = false -- new, this should solve problems of a respawned flag being "returned" when a player tries to score + AddCaption(loc("Flag respawned!")) + end + + end + +end + +function FlagDeleted(gear) + + if (gear == fGear[0]) then + wtf = 0 + bbq = 1 + elseif (gear == fGear[1]) then + wtf = 1 + bbq = 0 + end + + --ShowMission("OH HAI!", "FlagDeleted was called", "Oh noes!", -amBazooka, 0) + + if CurrentHedgehog ~= nil then + + --ShowMission("GUESS WAT?", "I'm not nil", "Oh noes!", -amBazooka, 0) + --if the player picks up the flag + if CheckDistance(CurrentHedgehog, fGear[wtf]) < 1600 then + + fGear[wtf] = nil -- the flag has now disappeared and we shouldnt be pointing to it + + -- player has successfully captured the enemy flag + if (GetHogClan(CurrentHedgehog) == wtf) and (CurrentHedgehog == fThief[bbq]) and (fIsMissing[wtf] == false) then + fIsMissing[wtf] = false + fNeedsRespawn[wtf] = true + fIsMissing[bbq] = false + fNeedsRespawn[bbq] = true + fCaptures[wtf] = fCaptures[wtf] +1 --fCaptures[wtf] + + --ShowMission(loc("You have SCORED!!"), "Red Team: " .. fCaptures[0], "Blue Team: " .. fCaptures[1], -amBazooka, 0) + ShowMission(loc("You have SCORED!!"), GetHogTeamName(CurrentHedgehog) .. ": " .. fCaptures[wtf], loc("Opposing Team: ") .. fCaptures[bbq], 0, 0) + + PlaySound(sndVictory) + --SetEffect(fThief[bbq], hePoisoned, false) + fThief[bbq] = nil -- player no longer has the enemy flag + CheckScore(wtf) + + --if the player is returning the flag + elseif GetHogClan(CurrentHedgehog) == wtf then + + fNeedsRespawn[wtf] = true + + -- NEW ADDIITON, does this work? Should make it possible to return your flag and then score in the same turn + if fIsMissing[wtf] == true then + HandleRespawns() -- this will set fIsMissing[wtf] to false :) + AddCaption(loc("Flag returned!")) + elseif fIsMissing[wtf] == false then + AddCaption(loc("That was pointless.") .. loc("The flag will respawn next round.")) + end + + --fIsMissing[wtf] = false + --ShowMission("Flag returned!", "Hooray", "", -amBazooka, 0) + + --if the player is taking the enemy flag + elseif GetHogClan(CurrentHedgehog) == bbq then + fIsMissing[wtf] = true + for i = 0,numhhs-1 do + if CurrentHedgehog == hhs[i] then + fThief[wtf] = hhs[i] + --SetEffect(fThief[wtf], hePoisoned, true) + end + end + + AddCaption(loc("Flag captured!")) + + else --below line doesnt usually get called + AddCaption("Hmm... that wasn't supposed to happen...") + + end + + -- if flag has been destroyed, probably + else + + if GetY(fGear[wtf]) > 2025 then + fGear[wtf] = nil + fIsMissing[wtf] = true + fNeedsRespawn[wtf] = true + HandleRespawns() + else + fGear[wtf] = nil + fIsMissing[wtf] = true + fNeedsRespawn[wtf] = true + AddCaption(loc("Boom!") .. " " .. loc("The flag will respawn next round.")) + end + + end + + -- if flag has been destroyed deep underwater and player is now nil + -- probably only gets called if the flag thief drowns himself + -- otherwise the above one will work fine + else + --ShowMission("NIL PLAYER!", "Oh snap", "Oh noes!", -amBazooka, 0) + fGear[wtf] = nil + fIsMissing[wtf] = true + fNeedsRespawn[wtf] = true + AddCaption(loc("The flag will respawn next round.")) + end + +end + +function FlagThiefDead(gear) + + if (gear == fThief[0]) then + wtf = 0 + bbq = 1 + elseif (gear == fThief[1]) then + wtf = 1 + bbq = 0 + end + + if fThief[wtf] ~= nil then + --SetEffect(fThief[wtf], hePoisoned, false) + fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],fThiefY[wtf]-50,amSkip) + AddVisualGear(fThiefX[wtf], fThiefY[wtf], vgtBigExplosion, 0, false) + fThief[wtf] = nil + end + +end + +function HandleCircles() + + for i = 0, 1 do + if fIsMissing[i] == false then -- draw a circle at the flag's spawning place + --SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i]) + SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i]) + elseif (fIsMissing[i] == true) and (fNeedsRespawn[i] == false) then + if fThief[i] ~= nil then -- draw circle round flag carrier + --SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i]) + SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i]) + elseif fThief[i] == nil then -- draw cirle round dropped flag + --SetVisualGearValues(fCirc[i], GetX(fGear[i]), GetY(fGear[i]), 20, 200, 0, 0, 100, 33, 2, fCol[i]) + SetVisualGearValues(fCirc[i], GetX(fGear[i]),GetY(fGear[i]), vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i]) + end + end + + if fNeedsRespawn[i] == true then -- if the flag has been destroyed, no need for a circle + SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 0, 0, fCol[i]) + end + end + +end + +------------------------ +-- general methods +------------------------ + +function CheckDistance(gear1, gear2) + + g1X, g1Y = GetGearPosition(gear1) + g2X, g2Y = GetGearPosition(gear2) + + g1X = g1X - g2X + g1Y = g1Y - g2Y + z = (g1X*g1X) + (g1Y*g1Y) + + --dist = math.sqrt(z) + + dist = z + + return dist + +end + +function CheckTeleporters() + + teleportActive = false + + if (GearIsInZone(CurrentHedgehog, redTel) == true) and (GetHogClan(CurrentHedgehog) == 0) then + teleportActive = true + destinationX = 1402 + destinationY = 321 + elseif (GearIsInZone(CurrentHedgehog, orangeTel) == true) and (GetHogClan(CurrentHedgehog) == 1) then + teleportActive = true + destinationX = 2692 + destinationY = 321 + end + + if teleportActive == true then + if actionReset == 0 then + SetGearMessage(CurrentHedgehog, gmAttack) + --AddCaption(actionReset .. ";" .. "attack") + elseif actionReset == 10 then + SetGearMessage(CurrentHedgehog, 0) + --AddCaption(actionReset .. ";" .. "reset") + elseif actionReset == 20 then + AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false) + SetGearPosition(CurrentHedgehog,destinationX,destinationY) + AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false) + --AddCaption(actionReset .. ";" .. "teleport") + end + + actionReset = actionReset + 1 + if actionReset >= 30 then + actionReset = 0 + end + + end + +end + +function RebuildTeamInfo() + + + -- make a list of individual team names + for i = 0, 5 do + teamNameArr[i] = i + teamSize[i] = 0 + teamIndex[i] = 0 + end + numTeams = 0 + + for i = 0, (numhhs-1) do + + z = 0 + unfinished = true + while(unfinished == true) do + + newTeam = true + tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name + + if tempHogTeamName == teamNameArr[z] then + newTeam = false + unfinished = false + end + + z = z + 1 + + if z == TeamsCount then + unfinished = false + if newTeam == true then + teamNameArr[numTeams] = tempHogTeamName + numTeams = numTeams + 1 + end + end + + end + + end + + -- find out how many hogs per team, and the index of the first hog in hhs + for i = 0, numTeams-1 do + + for z = 0, numhhs-1 do + if GetHogTeamName(hhs[z]) == teamNameArr[i] then + if teamSize[i] == 0 then + teamIndex[i] = z -- should give starting index + end + teamSize[i] = teamSize[i] + 1 + --add a pointer so this hog appears at i in hhs + end + end + + end + +end + +function HandleCrateDrops() + + roundsCounter = roundsCounter +1 + + if roundsCounter == 5 then + + roundsCounter = 0 + + r = GetRandom(8) + if r == 0 then + SpawnUtilityCrate(0,0,amSwitch) + elseif r == 1 then + SpawnUtilityCrate(0,0,amTeleport) + elseif r == 2 then + SpawnUtilityCrate(0,0,amJetpack) + elseif r == 3 then + SpawnUtilityCrate(0,0,amExtraTime) + elseif r == 4 then + SpawnUtilityCrate(0,0,amGirder) + elseif r == 5 then + SpawnAmmoCrate(0,0,amDynamite) + elseif r == 6 then + SpawnAmmoCrate(0,0,amFlamethrower) + elseif r == 7 then + SpawnUtilityCrate(0,0,amPortalGun) + end + + end + +end + +------------------------ +-- game methods +------------------------ + +function onGameInit() + + -- Things we don't modify here will use their default values. + GameFlags = gfDivideTeams -- Game settings and rules + TurnTime = 30000 -- (was 30) The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + MinesTime = 2000 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + SuddenDeathTurns = 99 -- suddendeath is off, effectively + Map = "Blizzard" -- The map to be played + Theme = "Snow" -- The theme to be used "Nature" + +end + + +function onGameStart() + + --ShowMission(loc(caption), loc(subcaption), loc(goal), 0, 0) + ShowMission(loc("CTF_BLIZZARD") .. " 0.5", loc("by mikade"), loc(" - 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"), 0, 0) + + + -- initialize teleporters + redTel = CreateZone(342,1316,42,449) -- red teleporter + orangeTel = CreateZone(3719,1330,45,449) -- orange teleporter + + + --new improved placement schematics aw yeah + RebuildTeamInfo() + --ShowMission("Team Info Rebuilt", "Here you go:", "TeamCount: " .. TeamsCount .. "|" .. teamNameArr[0] .. ": " .. teamSize[0] .. " Hogs|" .. teamNameArr[1] .. ": " .. teamSize[1] .. " Hogs|" .. teamNameArr[2] .. ": " .. teamSize[2] .. " Hogs|", 0, 0) + team1Placed = 0 + team2Placed = 0 + for i = 0, (TeamsCount-1) do + for g = teamIndex[i], (teamIndex[i]+teamSize[i]-1) do + if GetHogClan(hhs[g]) == 0 then + SetGearPosition(hhs[g],1403+ ((team1Placed+1)*50),1570) + team1Placed = team1Placed +1 + if team1Placed > 6 then + team1Placed = 0 + end + elseif GetHogClan(hhs[g]) == 1 then + SetGearPosition(hhs[g],2230+ ((team2Placed+1)*50),1570) + team2Placed = team2Placed +1 + if team2Placed > 6 then + team2Placed = 0 + end + end + end + end + + + + --spawn starting ufos and or super weapons + SpawnAmmoCrate(2048,1858,amJetpack) + --SpawnUtilityCrate(2048,1858,amExtraTime) + + --set flag spawn points and spawn the flags + fSpawnX[0] = 957 + fSpawnY[0] = 1747 + fSpawnX[1] = 3123 + fSpawnY[1] = 1747 + + for i = 0, 1 do + fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip) + fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + fCol[i] = GetClanColor(i) + + fSpawnC[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + SetVisualGearValues(fSpawnC[i], fSpawnX[i],fSpawnY[i], 10, 200, 1, 10, 0, 300, 5, fCol[i]) + + + fIsMissing[i] = false + fNeedsRespawn[i] = false + fCaptures[i] = 0 + + vCircMinA[i] = 20 + vCircMaxA[i] = 255 + vCircType[i] = 1 + vCircPulse[i] = 10 + vCircFuckAll[i] = 0 + vCircRadius[i] = 150 + vCircWidth[i] = 5 + vCircCol[i] = fCol[i] + + SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i]) + + end + +end + + +function onNewTurn() + + if lastTeam ~= GetHogTeamName(CurrentHedgehog) then + lastTeam = GetHogTeamName(CurrentHedgehog) + end + + for i = 0, 1 do + if fThief[i] ~= nil then + --adjust = 5 + GetHealth(fThief[i]) + --SetHealth(fThief[i], adjust) + --AddCaption('Helped out the flag poisoned flag thiefs') + end + end + + --AddCaption("Handling respawns") + HandleRespawns() + HandleCrateDrops() + + --myC = AddVisualGear(GetX(CurrentHedgehog),GetY(CurrentHedgehog),vgtCircle,0,true) + --SetVisualGearValues(myC, GetX(CurrentHedgehog),GetY(CurrentHedgehog), 20, 200, 0, 0, 100, 50, 3, GetClanColor(GetHogClan(CurrentHedgehog))) + +end + +function onGameTick() + + -- onRessurect calls AFTER you have resurrected, + -- so keeping track of x,y a few milliseconds before + -- is useful + --FTTC = FTTC + 1 + --if FTTC == 100 then + -- FTTC = 0 + for i = 0,1 do + if fThief[i] ~= nil then + fThiefX[i] = GetX(fThief[i]) + fThiefY[i] = GetY(fThief[i]) + end + end + --end + + -- things we wanna check often + if (CurrentHedgehog ~= nil) then + --AddCaption(GetX(CurrentHedgehog) .. "; " .. GetY(CurrentHedgehog)) + --AddCaption("Checking Teleporters") + CheckTeleporters() + end + + HandleCircles() + ManageTeleporterEffects() + +end + + +function onAmmoStoreInit() + + SetAmmo(amDrill,9,0,0,0) + SetAmmo(amMortar,9,0,0,0) + + SetAmmo(amGrenade,9,0,0,0) + SetAmmo(amClusterBomb,4,0,0,0) + + --SetAmmo(amDEagle, 4, 0, 0, 0) + SetAmmo(amShotgun, 9, 0, 0, 0) + SetAmmo(amFlamethrower, 1, 0, 0, 1) + + SetAmmo(amFirePunch, 9, 0, 0, 0) + SetAmmo(amBaseballBat, 2, 0, 0, 0) + + SetAmmo(amDynamite,2,0,0,1) + SetAmmo(amSMine,4,0,0,0) + + SetAmmo(amBlowTorch, 9, 0, 0, 0) + SetAmmo(amPickHammer, 9, 0, 0, 0) + SetAmmo(amGirder, 2, 0, 0, 2) + SetAmmo(amPortalGun, 2, 0, 0, 2) + + SetAmmo(amParachute, 9, 0, 0, 0) + SetAmmo(amRope, 9, 0, 0, 0) + SetAmmo(amTeleport, 1, 0, 0, 1) + SetAmmo(amJetpack, 1, 0, 0, 1) + + SetAmmo(amSwitch, 2, 0, 0, 1) + SetAmmo(amExtraTime,1,0,0,1) + SetAmmo(amLowGravity,1,0,0,0) + SetAmmo(amSkip, 9, 0, 0, 0) + +end + + +function onGearResurrect(gear) + + --AddCaption("A gear has been resurrected!") + + -- mark the flag thief as dead if he needed a respawn + for i = 0,1 do + if gear == fThief[i] then + FlagThiefDead(gear) + end + end + + -- place hogs belonging to each clan either left or right side of map + if GetHogClan(gear) == 0 then + FindPlace(gear, false, 0, 2048) + elseif GetHogClan(gear) == 1 then + FindPlace(gear, false, 2048, LAND_WIDTH) + end + + AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) + +end + +function onGearDamage(gear, damage) + + -- >_< damn, occurs too fast, before the hog has finished moving / updated his health + --if GetGearType(gear) == gtHedgehog then + -- if damage > GetHealth(gear) then + -- AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false) + -- end + --end + +end + +function onGearAdd(gear) + + if GetGearType(gear) == gtHedgehog then + + hhs[numhhs] = gear + numhhs = numhhs + 1 + SetEffect(gear, heResurrectable, true) + + end + +end + +function onGearDelete(gear) + + if (gear == fGear[0]) or (gear == fGear[1]) then + FlagDeleted(gear) + end + +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/Control/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,6 @@ +install(FILES + map.cfg + map.lua + map.png + preview.png + DESTINATION ${SHAREPATH}Data/Maps/Control)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/Control/map.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,4 @@ +Deepspace +48 +Default +Crazy
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/Control/map.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,466 @@ +-------------------------------- +-- CONTROL 0.3 +-------------------------------- + +-- in this version + +--------- +-- 0.2 +--------- +-- fixed score display errrors +-- added missing resurrection effects +-- moved hogs off control points if thats where they started +-- added sanity limit for the above +-- added tint tags to display clan score on each point as it scors +-- added gameflags filter +-- changed scoring rate +-- hogs now only score point DURING THEIR TURN +-- map now accepts custom weaponsets and themes +-- changed win limit + +--------- +-- 0.3 +--------- + +-- added translation support + +-------- +-- 0.4 +-------- + +-- added scaling scoring based on clans: 300 points to win - 25 per team in game + +----------------- +--script begins +----------------- + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +--------------------------------------------------------------- +----------lots of bad variables and things +----------because someone is too lazy +----------to read about tables properly +------------------ "Oh well, they probably have the memory" + +local gameWon = false +local pointLimit = 300 + +local vCirc = {} +local vCircCount = 0 + +local hGCount = 0 + +local vCircX = {} +local vCircY = {} +local vCircMinA = {} +local vCircMaxA = {} +local vCircType = {} +local vCircPulse = {} +local vCircFuckAll = {} +local vCircRadius = {} +local vCircWidth = {} +local vCircCol = {} + +-------------------------- +-- hog and team tracking variales +-------------------------- + +local numhhs = 0 -- store number of hedgehogs +local hhs = {} -- store hedgehog gears + +local numTeams -- store the number of teams in the game +local teamNameArr = {} -- store the list of teams +local teamClan = {} +local teamSize = {} -- store how many hogs per team +local teamIndex = {} -- at what point in the hhs{} does each team begin + +local teamComment = {} +local teamScore = {} + +-------------------------------- +--zone and teleporter variables +-------------------------------- + +--local redTel +--local orangeTel +--local areaArr = {} -- no longer used + +local cPoint = {} +local cOwnerClan = {} + +local zXMin = {} +local zWidth = {} +local zYMin = {} +local zHeight = {} +local zOccupied = {} +local zCount = 0 + +------------------------ +-- zone methods +------------------------ +-- see on gameTick also + +function CreateZone(xMin, yMin, width, height) + + + zXMin[zCount] = xMin + zYMin[zCount] = yMin + zWidth[zCount] = width + zHeight[zCount] = height + zOccupied[zCount] = false + zCount = zCount + 1 + + return (zCount-1) + +end + +function GearIsInZone(gear, zI) + + if (GetX(gear) > zXMin[zI]) and (GetX(gear) < (zXMin[zI]+zWidth[zI])) and (GetY(gear) > zYMin[zI]) and (GetY(gear) < (zYMin[zI]+zHeight[zI])) then + zOccupied[zI] = true + else + zOccupied[zI] = false + end + + return zOccupied[zI] + +end + +function ZonesAreEmpty() + + okay = true + + for i = 0,(zCount-1) do + + for k = 0, (numhhs-1) do + if (hhs[k] ~= nil) then + if (GearIsInZone(hhs[k],i)) == true then + FindPlace(hhs[k], false, 0, LAND_WIDTH, true) + okay = false + end + end + end + end + + return(okay) + +end + +function CheckZones() + + for i = 0,(zCount-1) do + SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], 0xffffffff) + cOwnerClan[i] = nil + for k = 0, (numhhs-1) do + if (hhs[k] ~= nil) then + if (GearIsInZone(hhs[k],i)) == true then + + if cOwnerClan[i] ~= nil then + if cOwnerClan[i] ~= GetHogClan(hhs[k]) then + --if the hog now being compared is different to one that is also here and was previously compared + + SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], 0xffffffff) + --SetVisualGearValues(vCirc[i], 2739, 1378, 20, 255, 1, 10, 0, 300, 5, 0xffffffff) + + cOwnerClan[i] = 10 -- this means conflicted + end + elseif cOwnerClan[i] == nil then + cOwnerClan[i] = GetHogClan(hhs[k]) + --SetVisualGearValues(vCirc[i], 2739, 1378, 20, 255, 1, 10, 0, 300, 5, GetClanColor( GetHogClan(hhs[k])) ) + SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], GetClanColor( GetHogClan(hhs[k]))) + + end + + end + end + end + + end + +end + +function AwardPoints() + + for i = 0,(zCount-1) do + -- give score to all players controlling points + --if (cOwnerClan[i] ~= nil) and (cOwnerClan[i] ~= 10) then + -- teamScore[cOwnerClan[i]] = teamScore[cOwnerClan[i]] + 1 + --end + + -- only give score to the player currently in control + if CurrentHedgehog ~= nil then + if cOwnerClan[i] == GetHogClan(CurrentHedgehog) then + teamScore[cOwnerClan[i]] = teamScore[cOwnerClan[i]] + 1 + end + end + end + + -- i want to show all the tags at once as having the SAME score not 1,2,3,4 so alas, repeating the loop seems needed + for i = 0,(zCount-1) do + if CurrentHedgehog ~= nil then + if cOwnerClan[i] == GetHogClan(CurrentHedgehog) then + g = AddVisualGear(vCircX[i], vCircY[i], vgtHealthTag, 100, False) + if g ~= 0 then + SetVisualGearValues(g, vCircX[i], vCircY[i], 0, 0, 0, 0, 0, teamScore[cOwnerClan[i]], 1500, GetClanColor(cOwnerClan[i])) + end + end + end + end + +end + +----------------- +-- general methods +------------------ + +function RebuildTeamInfo() + + + -- make a list of individual team names + for i = 0, 5 do + teamNameArr[i] = " " -- = i + teamSize[i] = 0 + teamIndex[i] = 0 + teamScore[i] = 0 + end + numTeams = 0 + + for i = 0, (numhhs-1) do + + z = 0 + unfinished = true + while(unfinished == true) do + + newTeam = true + tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name + + if tempHogTeamName == teamNameArr[z] then + newTeam = false + unfinished = false + end + + z = z + 1 + + if z == TeamsCount then + unfinished = false + if newTeam == true then + teamNameArr[numTeams] = tempHogTeamName + numTeams = numTeams + 1 + end + end + + end + + end + + -- find out how many hogs per team, and the index of the first hog in hhs + for i = 0, (numTeams-1) do + for z = 0, (numhhs-1) do + if GetHogTeamName(hhs[z]) == teamNameArr[i] then + teamClan[i] = GetHogClan(hhs[z]) + if teamSize[i] == 0 then + teamIndex[i] = z -- should give starting index + end + teamSize[i] = teamSize[i] + 1 + --add a pointer so this hog appears at i in hhs + end + end + + end + +end + +------------------------ +-- game methods +------------------------ + +function onGameInit() + + -- Things we don't modify here will use their default values. + --GameFlags = gfInfAttack + gfSolidLand -- Game settings and rules + + GameFlags = band(bor(GameFlags, gfInfAttack + gfSolidLand), bnot(gfKing + gfForts)) + + SuddenDeathTurns = 99 -- suddendeath is off, effectively + +end + + +function onGameStart() + + + + -- build zones + cPoint[0] = CreateZone(571,47,120,80) + cPoint[1] = CreateZone(1029,643,120,80) + cPoint[2] = CreateZone(322,1524,120,80) + cPoint[3] = CreateZone(1883,38,120,80) + cPoint[4] = CreateZone(3821,46,120,80) + cPoint[5] = CreateZone(2679,1338,120,80) + + vCircX[0], vCircY[0] = 631, 82 + vCircX[1], vCircY[1] = 1088, 684 + vCircX[2], vCircY[2] = 381, 1569 + vCircX[3], vCircY[3] = 1942, 77 + vCircX[4], vCircY[4] = 3883, 89 + vCircX[5], vCircY[5] = 2739, 1378 + + for i = 0, 5 do + vCirc[i] = AddVisualGear(0,0,vgtCircle,0,true) + vCircMinA[i] = 20 + vCircMaxA[i] = 255 + vCircType[i] = 1 + vCircPulse[i] = 10 + vCircFuckAll[i] = 0 + vCircRadius[i] = 300 + vCircWidth[i] = 5 + vCircCol[i] = 0xffffffff + + SetVisualGearValues(vCirc[i], vCircX[i], vCircY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i]) + end + + --zxc = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + --SetVisualGearValues(zxc, 1000,1000, 20, 255, 1, 10, 0, 100, 1, GetClanColor(0)) + --minO,max0 -glowyornot --pulsate timer -- fuckall -- radius -- width -- colour + + --new improved placement schematics aw yeah + RebuildTeamInfo() + + for i = 0, (numTeams-1) do + pointLimit = pointLimit - 25 + end + --SetGearPosition(hhs[0], 631, 82) + --SetGearPosition(hhs[1], 1088, 684) + --SetGearPosition(hhs[2], 381, 1569) + + -- reposition hogs if they are on control points until they are not or sanity limit kicks in + reN = 0 + --zz = 0 + while (reN < 10) do + if ZonesAreEmpty() == false then + reN = reN + 1 + --zz = zz + 1 + --SetGearPosition(hhs[0], 631, 82) -- put this in here to thwart attempts at repositioning and test sanity limit + else + reN = 15 + end + --AddCaption(zz) -- number of times it took to work + end + + ShowMission(loc("CONTROL v0.3"), loc("by mikade"), loc("Control pillars to score points.") .. "|" .. loc("Goal:") .. " " .. pointLimit .. " " .. loc("points"), 0, 0) + + +end + + +function onNewTurn() + + + if lastTeam ~= GetHogTeamName(CurrentHedgehog) then + lastTeam = GetHogTeamName(CurrentHedgehog) + end + + if gameWon == false then + + for i = 0, (numTeams-1) do + if teamScore[i] >= pointLimit then --150 + gameWon = true + winnerClan = i + end + end + + if gameWon == true then + for i = 0, (numhhs-1) do + if hhs[i] ~= nil then + if GetHogClan(hhs[i]) ~= winnerClan then + SetEffect(hhs[i], heResurrectable, false) + SetHealth(hhs[i],0) + end + end + end + TurnTimeLeft = 1 + end + + for i = 0,5 do + if teamNameArr[i] ~= " " then -- i + teamComment[i] = teamNameArr[i] .. ": " .. teamScore[teamClan[i]] .. loc (" points|") + elseif teamNameArr[i] == " " then + teamComment[i] = "|" + end + end + ShowMission(loc("CONTROL"), loc("Team Scores:"), teamComment[0] .. teamComment[1] .. teamComment[2] .. teamComment[3] .. teamComment[4] .. teamComment[5], 0, 1600) + + end + +end + +function onGameTick() + + vCircCount = vCircCount + 1 + if (vCircCount >= 500) and (gameWon == false) then + vCircCount = 0 + CheckZones() + --AwardPoints() + + + --[[for i = 0,5 do + + if teamNameArr[i] ~= " " then -- i + teamComment[i] = teamNameArr[i] .. ": " .. teamScore[teamClan[i] ] .. " points|" + elseif teamNameArr[i] == " " then + teamComment[i] = "|" + end + end + + ShowMission("CONTROL", "Team Scores:", teamComment[0] .. teamComment[1] .. teamComment[2] .. teamComment[3] .. teamComment[4] .. teamComment[5], 0, 1600)]] + + end + + -- things we wanna check often + if (CurrentHedgehog ~= nil) then + -- AddCaption(GetX(CurrentHedgehog) .. "; " .. GetY(CurrentHedgehog)) + --AddCaption(teamNameArr[0] .. " : " .. teamScore[0]) + --AddCaption(GetHogTeamName(CurrentHedgehog) .. " : " .. teamScore[GetHogClan(CurrentHedgehog)]) -- this end up 1? + + -- huh? the first clan added seems to be clan 1, not 0 ?? + + end + + hGCount = hGCount + 1 + if (hGCount >= 2000) and (gameWon == false) then + hGCount = 0 + AwardPoints() + end + +end + +function onGearResurrect(gear) + AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) +end + + +function onGearAdd(gear) + + if GetGearType(gear) == gtHedgehog then + + hhs[numhhs] = gear + numhhs = numhhs + 1 + SetEffect(gear, heResurrectable, true) + + end + +end + +function onGearDelete(gear) + + if GetGearType(gear) == gtHedgehog then + --AddCaption("gear deleted!") + for i = 0, (numhhs-1) do + if gear == hhs[i] then + hhs[i] = nil + --AddCaption("for real") + end + end + end + +end
--- a/share/hedgewars/Data/Maps/Knockball/map.lua Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Maps/Knockball/map.lua Tue Jan 04 12:53:46 2011 +0100 @@ -1,68 +1,6 @@ -- Hedgewars - Knockball for 2+ Players -local caption = { - ["en"] = "Hedgewars-Knockball", - ["de"] = "Hedgewars-Knockball", - ["es"] = "Hedgewars-Knockball", - ["pl"] = "Hedgewars-Knockball", - ["pt_PT"] = "Hedgewars-Knockball", - ["sk"] = "Hedgewars-Knockball", - ["sv"] = "Hedgewars-Knockball", - ["pt_BR"] = "Hedgewars-Knockball" - } - -local subcaption = { - ["en"] = "Not So Friendly Match", - ["de"] = "Kein-so-Freundschaftsspiel", - ["es"] = "Partido no-tan-amistoso", - ["pl"] = "Mecz Nie-Do-Końca Towarzyski", - ["pt_PT"] = "Partida não muito amigável", - ["sk"] = "Nie tak celkom priateľký zápas", - ["sv"] = "En inte så vänlig match", - ["pt_BR"] = "Partida não muito amigável" - } - -local goal = { - ["en"] = "Bat balls at your enemies and|push them into the sea!", - ["de"] = "Schlage Bälle auf deine Widersacher|und lass sie ins Meer fallen!", - ["es"] = "¡Batea pelotas hacia tus enemigos|y hazlos caer al agua!", - ["pl"] = "Uderzaj piłkami w swoich przeciwników|i strącaj ich do wody!", - ["pt_PT"] = "Bate bolas contra os teus|enimigos e empurra-os ao mar!", - ["sk"] = "Loptami triafajte vašich nepriateľov|a zhoďte ich tak do mora!", - ["sv"] = "Slå bollar mot dina fiender|och slå ner dem i havet", - ["pt_BR"] = "Rebata as bolas em direção ao seus|e derrube-os no mar!" - } - -local scored = { - ["en"] = "%s is out and Team %d|scored a point!| |Score:", - ["de"] = "%s ist draußen und Team %d|erhält einen Punkt!| |Punktestand:", - ["es"] = "¡%s cayó y Equipo %d|anotó un tanto!| |Puntuación:", - ["pl"] = "%s utonął i drużyna %d|zdobyła punkt!| |Punktacja:", - ["pt_PT"] = "%s está fora e a equipa %d|soma um ponto!| |Pontuação:", - ["sk"] = "%s je mimo hru a tím %d|získal bod!| |Skóre:", - ["sv"] = "%s är ute och lag %d|fick ett poäng!| |Poängställning:", - ["pt_BR"] = "%s está fora e a Equipe %d|marcou um ponto!| |Pontuação:" - } - -local failed = { - ["en"] = "%s is out and Team %d|scored a penalty!| |Score:", - ["de"] = "%s ist draußen und Team %d|erhält eine Strafe!| |Punktestand:", - ["es"] = "¡%s cayó y Equipo %d|anotó una falta!| |Puntuación:", - ["pl"] = "%s utonął i drużyna %d|dostała punkt karny!| |Punktacja:", - ["pt_PT"] = "%s está fora e a equipa %d|perde um ponto!| |Pontuação:", - ["sk"] = "%s je mimo hru a tím %d|dostal trestný bod!| |Skóre:", - ["sv"] = "%s är ute och lag %d|fick ett straff!| |Poängställning:", - ["pt_BR"] = "%s está fora e a Equipe %d|sofreu uma penalidade!| |Pontuação:" - } - -local function loc(text) - if text == nil then return "**missing**" - elseif text[L] == nil then return text["en"] - else return text[L] - end -end - ---------------------------------------------------------------- +loadfile(GetDataPath() .. "Scripts/Locale.lua")() local score = {[0] = 0, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0} @@ -81,7 +19,7 @@ end function onGameStart() - ShowMission(loc(caption), loc(subcaption), loc(goal), -amBaseballBat, 0) + ShowMission(loc("Hedgewars-Knockball"), loc("Not So Friendly Match"), loc("Bat balls at your enemies and|push them into the sea!"), -amBaseballBat, 0) started = true end @@ -98,7 +36,8 @@ if GetGearType(gear) == gtShover then ball = AddGear(GetX(gear), GetY(gear), gtBall, 0, 0, 0, 0) if ball ~= nil then - CopyPV2(gear, ball) + local dx, dy = GetGearVelocity(gear) + SetGearVelocity(ball, dx * 2, dy * 2) SetState(ball, 0x200) -- temporary - might change! SetTag(ball, 8) -- baseball skin FollowGear(ball) @@ -118,14 +57,14 @@ if clan ~= nil then if GetHogClan(CurrentHedgehog) ~= GetHogClan(gear) then score[clan] = score[clan] + 1 - s = string.format(loc(scored), GetHogName(gear), clan + 1) + s = string.format(loc("%s is out and Team %d|scored a point!| |Score:"), GetHogName(gear), clan + 1) else score[clan] = score[clan] - 1 - s = string.format(loc(failed), GetHogName(gear), clan + 1) + s = string.format(loc("%s is out and Team %d|scored a penalty!| |Score:"), GetHogName(gear), clan + 1) end s = s .. " " .. score[0] for i = 1, ClansCount - 1 do s = s .. " - " .. score[i] end - ShowMission(loc(caption), loc(subcaption), s, -amBaseballBat, 0) + ShowMission(loc("Hedgewars-Knockball"), loc("Not So Friendly Match"), s, -amBaseballBat, 0) end end end
--- a/share/hedgewars/Data/Maps/Tree/map.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Maps/Tree/map.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,1 +1,1 @@ -Nature \ No newline at end of file +Halloween \ No newline at end of file
--- a/share/hedgewars/Data/Maps/TrophyRace/map.lua Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Maps/TrophyRace/map.lua Tue Jan 04 12:53:46 2011 +0100 @@ -1,85 +1,6 @@ -- Hedgewars - Roperace for 2+ Players -local caption = { - ["en"] = "TrophyRace", - ["sv"] = "TrophyRace", - ["pt_PT"] = "TrophyRace", - ["pl"] = "TrophyRace", - ["es"] = "TrophyRace", - ["pt_BR"] = "TrophyRace" - } - -local goal = { - ["en"] = "Use your rope to get from start to finish as fast as you can!", - ["sv"] = "Använd ditt rep för att ta dig från start till mål så fort som möjligt!", - ["pt_PT"] = "Utilizando a corda, percorre o percurso do inicio ao fim o mais rápido que conseguires!", - ["pl"] = "Użyj liny by jak najszybciej dotrzec od startu do mety", - ["es"] = "¡Usa tu cuerda para llegar a la salida lo más rápido que puedas!", - ["pt_BR"] = "Use sua corda para ir do início ao fim o mais rápido que você puder!" - } - -local done = { - ["en"] = "You've reached the goal!| |Time: ", - ["sv"] = "Du har nått målet!| |Tid: ", - ["pt_PT"] = "Chegaste ao fim!| |Tempo: ", - ["pl"] = "Dotarłeś do celu!| |Czas: ", - ["es"] = "¡Has llegado a la meta!| |Tiempo: ", - ["pt_BR"] = "Você alcançou o objetivo!| |Tempo: " - } - -local eliminated = { - ["en"] = "Eliminating worst hedgehog this round...| |%s is OUT!", - ["sv"] = "Eliminerar sämsta igelkott den här rundan...| |%s är UTE!", - ["pt_PT"] = "A eliminar o pior ouriço da ronda...| |% está FORA!", - ["pl"] = "Eliminujemy najgorszego jeża tej rundy...| |%s ODPADŁ!", - ["es"] = "Eliminando al peor erizo de esta ronda...| |¡%s está FUERA!", - ["pt_BR"] = "Eliminando o ouriço mais lento...| |%s vai para o chuveiro!" - } - -local newbesttime = { - ["en"] = "NEW fastest lap: ", - ["sv"] = "NYTT snabbast varv: ", - ["pt_PT"] = "NOVA volta recorde: ", - ["pl"] = "NOWE najszybsze okrążenie: ", - ["es"] = "NUEVA vuelta rápida: ", - ["pt_BR"] = "NOVA volta mais rápida: " - } - -local oldbesttime = { - ["en"] = "Fastest lap: ", - ["sv"] = "Snabbast varv: ", - ["pt_PT"] = "Volta mais rápida: ", - ["pl"] = "Najszybsze okrążenie: ", - ["es"] = "Vuelta rápida: ", - ["pt_BR"] = "Volta mais rápida: " - } - -local bestclantimes = { - ["en"] = "Best laps per team: ", - ["sv"] = "Bästa varv per lag: ", - ["pt_PT"] = "Melhores voltas por equipa: ", - ["pl"] = "Najszybsze okrążenie drużyny: ", - ["es"] = "Mejores tiempos por equipo: ", - ["pt_BR"] = "Melhor volta por equipe: " - } - -local clantime = { - ["en"] = "Team %d: ", - ["sv"] = "Lag %d: ", - ["pt_PT"] = "Equipa %d: ", - ["pl"] = "Drużyna %d: ", - ["es"] = "Equipo %d", - ["pt_BR"] = "Equipe %d: " - } - -local function loc(text) - if text == nil then return "**missing**" - elseif text[L] == nil then return text["en"] - else return text[L] - end -end - ---------------------------------------------------------------- +loadfile(GetDataPath() .. "Scripts/Locale.lua")() -- store number of hedgehogs local numhhs = 0 @@ -132,7 +53,7 @@ end function onGameStart() - ShowMission(loc(caption), "", loc(goal), -amRope, 0) + ShowMission(loc("TrophyRace"), "", loc("Use your rope to get from start to finish as fast as you can!"), -amRope, 0) started = true p=1820 for i = 0, numhhs - 1 do @@ -188,15 +109,15 @@ if ttime < besttime then besttime = ttime besthog = CurrentHedgehog - hscore = hscore .. loc(newbesttime) + hscore = hscore .. loc("NEW fastest lap: ") else - hscore = hscore .. loc(oldbesttime) + hscore = hscore .. loc("Fastest lap: ") end if ttime > worsttime then worsttime = ttime worsthog = CurrentHedgehog end - hscore = hscore .. GetHogName(besthog) .. " - " .. (besttime / 1000) .. " s | |" .. loc(bestclantimes) + hscore = hscore .. GetHogName(besthog) .. " - " .. (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. @@ -213,10 +134,10 @@ if clantimes[i] == 0 then tt = "--" end - hscore = hscore .. "|" .. string.format(loc(clantime), i+1) .. tt + hscore = hscore .. "|" .. string.format(loc("Team %d: "), i+1) .. tt end - ShowMission(loc(caption), "", loc(done) .. (ttime / 1000) .. " s" .. hscore, 0, 0) + ShowMission(loc("TrophyRace"), "", loc("You've reached the goal!| |Time: ") .. (ttime / 1000) .. " s" .. hscore, 0, 0) TurnTimeLeft = 0 end end
--- a/share/hedgewars/Data/Missions/Campaign/01#Boot Camp.lua Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,338 +0,0 @@ --- IMPORTANT -- THIS IS WORK IN PROGRESS AND VERY LIKELY TO BE CHANGED AGAIN --- IMPORTANT -- SAVE YOURSELF THE WORK AND DON'T TRANSLATE THE TEXTS IF YOU FEAR STARTING OVER LATER! - -local teamnames = {} -local hognames = {} -teamnames[0] = { - ["en"] = "Bloody Rookies", - ["de"] = "Blutige Anfänger", - ["pl"] = "Żótodzioby", - ["sv"] = "Blodiga nybörjare", - ["es"] = "Reclutas", - ["pt_PT"] = "Recrutas", - ["pt_BR"] = "Maldito Recrutas" -} - -teamnames[1] = { - ["en"] = "Instructors", - ["de"] = "Ausbilder", - ["pl"] = "Instruktor", - ["sv"] = "Instruktör", - ["es"] = "Instructores", - ["pt_PT"] = "Instrutores", - ["pt_BR"] = "Instrutores" -} - -hognames[0] = { - ["en"] = "Joker", - ["de"] = "Joker", - ["pl"] = "Joker", - ["sv"] = "Joker", - ["es"] = "Joker", - ["pt_PT"] = "Joker", - ["pt_BR"] = "Comediante" -} - -hognames[1] = { - ["en"] = "Harthog", - ["de"] = "Harthog", - ["pl"] = "Harthog", - ["sv"] = "Harthog", - ["es"] = "Harthog", - ["pt_PT"] = "Harthog", - ["pt_BR"] = "Harthog" -} - -local caption = { - ["en"] = "Boot Camp", - ["de"] = "Grundausbildung", - ["pl"] = "Poligon", - ["sv"] = "Grundutbildning", - ["es"] = "Campamento militar", - ["pt_PT"] = "Acampamento militar", - ["pt_BR"] = "Acampamento Militar" - -} - -local subcaption = { - ["en"] = "Follow the instructions!", - ["de"] = "Befolge die Anweisungen!", - ["pl"] = "Wykonuj polecenia!", - ["sv"] = "Följ instruktioner!", - ["es"] = "¡Sigue las órdenes!", - ["pt_PT"] = "Segue as instruções!", - ["pt_BR"] = "Siga as ordens!" -} - -local goals = {} - -goals[0] = { - ["en"] = "Listen to your Drill Instructor and follow his lead!", - ["de"] = "Höre deinem Ausbilder zu und befolge seine Anweisungen!", - ["pl"] = "Słuchaj instruktora i wykonuj jego rozkazy!", - ["sv"] = "Lyssna på din instruktör och gör som han säger!", - ["es"] = "¡Escucha atentamente a tu instructor de maniobras y sigue sus órdenes!", - ["pt_PT"] = "Ouve atentamente o teu Instrutor e segue as suas ordens!", - ["pt_BR"] = "Escute seu instrutor de escavação e siga seu líder" -} - -goals[1] = { - ["en"] = "Destroy the target to finish this mission!", - ["de"] = "Zerstöre das Ziel, um diese Mission abzuschließen!", - ["pl"] = "Zniszcz cel by ukończyć misję!", - ["sv"] = "Förstör målet för att avklara uppdraget!", - ["es"] = "¡Destruye el objetivo para completar esta misión!", - ["pt_PT"] = "Destrói o alvo para completar esta missão!", - ["pt_BR"] = "Destrua o alvo para concluir a missão" -} - -goals[2] = { - ["en"] = "Excellent! You've passed the Boot Camp!", - ["de"] = "Ausgezeichnet! Du hast das Ausbildungslager bestanden!", - ["pl"] = "Doskonale! Wyszedłeś cało z poligonu!", - ["sv"] = "Brilliant! Du har klarat av grundutbildningen!", - ["es"] = "¡Excelente! ¡Has completado la maniobra de hoy!", - ["pt_PT"] = "Excelente! Completaste o treino para recrutas!", - ["pt_BR"] = "Excelente! Você completou a manobra" -} - -local failed = { - ["en"] = "You failed! Follow the instructions and shoot the target only!", - ["de"] = "Du hast versagt! Befolge die Anweisungen und schieß nur auf das Ziel!", - ["pl"] = "Przegrałeś! Wykonuj instrukcje poprawnie i strzelaj tylko w podane cele!", - ["sv"] = "Du har misslyckats! Följ instruktionerna och sjut endast på målen!", - ["es"] = "¡Has fallado! ¡Sigue las instrucciones y destruye únicamente el objetivo!", - ["pt_PT"] = "Falhaste! Segue as instruções e destrói apenas o alvo!", - ["pt_BR"] = "Você falhou! Siga as instruções e atire somente no alvo" -} - -local drill = {} - -drill[0] = { - ["en"] = "Allright, maggot!", - ["de"] = "Also gut, du Made!", - ["pl"] = "Słuchaj mnie gnido!", - ["sv"] = "Dåså, din mask!", - ["es"] = "¡Muy bien, escoria!", - ["pt_PT"] = "Bom trabalho verme!", - ["pt_BR"] = "Parabéns escória" -} - -drill[1] = { - ["en"] = "Show that you aren't that useless.", - ["de"] = "Zeig, dass du nicht so nutzlos bist.", - ["pl"] = "Udowodnij, że nie jesteś bezwartościowy.", - ["sv"] = "Visa att du inte är så värdelös!", - ["es"] = "Demuéstrame que no eres tan inútil como pareces.", - ["pt_PT"] = "Prova-me que não és tão inútil como pareces.", - ["pt_BR"] = "Mostre que você não é um inútil." -} - -drill[2] = { - ["en"] = "Use [left] to move to the left!", - ["de"] = "Benutze [Links], um nach links zu gehen!", - ["pl"] = "Użyj [lewo] by poruszyć się w lewą stronę!", - ["sv"] = "Använd [vänster] för att gå åt vänster!", - ["es"] = "¡Aprieta [izquierda] para desplazarte a la izquierda!", - ["pt_PT"] = "Carrega [esquerda] para te moveres para a esquerda!", - ["pt_BR"] = "Use [esquerda] para mover para a esquerda" -} - -drill[3] = { - ["en"] = "Good! Now use [right] to come back!", - ["de"] = "Gut! Nun komm mit [Rechts] zurück!", - ["pl"] = "Dobzre, Teraz użyj [prawo] by wrócić!", - ["sv"] = "Bra! Använd nu [höger] för att gå tillbaka!", - ["es"] = "¡Muy bien! ¡Ahora presiona [derecha] para volver!", - ["pt_PT"] = "Muito bem! Agora pressiona [direita] para voltar!", - ["pt_BR"] = "Bom! Agora use [direita] para voltar" -} - -drill[4] = { - ["en"] = "Excellent!", - ["de"] = "Ausgezeichnet!", - ["pl"] = "Wspaniale!", - ["sv"] = "Utmärkt!", - ["es"] = "¡Excelente!", - ["pt_PT"] = "Excelente!", - ["pt_BR"] = "Excelente!" -} - -drill[5] = { - ["en"] = "Now jump to the left using [return]!", - ["de"] = "Jetzt springe mit [Eingabetaste] nach links!", - ["pl"] = "Teraz skocz w lewo używając [Enter]", - ["sv"] = "Hoppa nu åt vänster med hjälp av [enter]!", - ["es"] = "¡Ahora salta hacia la izquierda usando [intro]!", - ["pt_PT"] = "Agora salta para a esquerda pressionando [retrocesso]!", - ["pt_BR"] = "Agora pule para a esquerda usando [return" -} - -drill[6] = { - ["en"] = "Use [up] and [down] to aim.", - ["de"] = "Benutze [Hoch] und [Runter], um zu zielen.", - ["pl"] = "Użyj klawiszy [góra] i [dół] by celować.", - ["sv"] = "Använd [upp] och [ner] för att sikta!", - ["es"] = "Presiora [arriba] y [abajo] para apuntar.", - ["pt_PT"] = "Pressiona [cima] e [baixo] para apontar.", - ["pt_BR"] = "Pressione [acima] e [abaixo] para mirar." -} - -drill[7] = { - ["en"] = "Hold [space] to power up your shot and then release it to shoot.", - ["de"] = "Halte [Leertaste], um deinen Schuss aufzuladen, und lasse dann rechtzeitig los.", - ["pl"] = "Przytrzymaj spację by zwiększyć siłę strzału.", - ["sv"] = "Håll ner [mellanslag] för att få kraft och släpp för att skjuta!", - ["es"] = "Mantén presionada la [barra espaciadora] para controlar la fuerza del disparo y suéltala para disparar.", - ["pt_PT"] = "Mantem a [barra de espaços] pressionada para controlar a força do tiro e larga-a para disparar.", - ["pt_BR"] = "Mantenha pressionado [espaço] para aumentar a força do seu tiro e solte para atirar" -} - -drill[8] = { - ["en"] = "Destroy the target to finish your basic training!", - ["de"] = "Zerstöre das Ziel, um deine Grundausbildung abzuschließen!", - ["pl"] = "Zniszcz cel by by ukończyć trening podstawowy!", - ["sv"] = "Förstör målet för att avsluta din grundutbildning!", - ["es"] = "¡Destruye el objetivo para completar el entrenamiento básico!", - ["pt_PT"] = "Destrói o alvo para completar o treino básico!", - ["pt_BR"] = "Destrua o alvo para terminar o treino básico" -} - -local function loc(text) - if text == nil then return "**missing**" - elseif text[L] == nil then return text["en"] - else return text[L] - end -end - -local player = nil -local instructor = nil -local target = nil - -function onGameStart() - -end - -local player_start_x = 2300 -local player_start_y = 1250 -local target_x = 1900 -local target_y = 1250 -local player_health = 100 -local instructor_health = 100 -local teamcolor = 14483456 - -local progress = 0 -local time_start = 0 - -function onGameTick() - if progress == -1 and (time_start + 2500) == GameTime then - EndGame() - elseif progress == -1 then - - elseif progress > 0 and ((TurnTimeLeft == 0) or (GetHealth(player) ~= player_health) or (GetHealth(instructor) ~= instructor_health)) then - progress = -1 - ShowMission(loc(caption), loc(subcaption), loc(failed), -amBazooka, 0); - time_start = GameTime - PlaySound(sndNooo) - TurnTimeLeft = 0 - elseif GameTime == 0 then - ShowMission(loc(caption), loc(subcaption), loc(goals[0]), -amBazooka, 0); - TurnTimeLeft = 60000 - elseif GameTime == 2500 then - FollowGear(instructor) - HogSay(instructor, loc(drill[0]), SAY_SAY) - elseif GameTime == 5000 then - FollowGear(instructor) - HogSay(instructor, loc(drill[1]), SAY_SAY) - elseif GameTime == 7500 then - FollowGear(instructor) - HogSay(instructor, loc(drill[2]), SAY_SHOUT) - progress = 1 - TurnTimeLeft = 10000 - elseif progress == 1 then - local x, y = GetGearPosition(player); - if x < player_start_x - 50 then - progress = 2 - FollowGear(instructor) - HogSay(instructor, loc(drill[3]), SAY_SHOUT) - TurnTimeLeft = 10000 - end - elseif progress == 2 then - local x, y = GetGearPosition(player); - if x > player_start_x then - progress = 3 - FollowGear(instructor) - HogSay(instructor, loc(drill[4]), SAY_SAY) - time_start = GameTime - end - elseif progress == 3 and (time_start + 2500 == GameTime) then - progress = 4 - FollowGear(instructor) - HogSay(instructor, loc(drill[5]), SAY_SHOUT) - HogTurnLeft(player, true) - TurnTimeLeft = 10000 - elseif progress == 4 then - local x, y = GetGearPosition(player); - if y < player_start_y then - progress = 5 - FollowGear(instructor) - HogSay(instructor, "Yeah!", SAY_SAY) - time_start = GameTime - TurnTimeLeft = 30000 - end - elseif progress == 5 and (time_start + 2500 == GameTime) then - FollowGear(instructor) - HogSay(instructor, loc(drill[6]), SAY_SAY) - elseif progress == 5 and (time_start + 5000 == GameTime) then - FollowGear(instructor) - HogSay(instructor, loc(drill[7]), SAY_SAY) - elseif progress == 5 and (time_start + 7500 == GameTime) then - FollowGear(instructor) - HogSay(instructor, loc(drill[8]), SAY_SHOUT) - ShowMission(loc(caption), loc(subcaption), loc(goals[1]), 1, 0); - target = AddGear(target_x, target_y, gtTarget, 0, 0, 0, 0) - TurnTimeLeft = 60000 - elseif progress == 5 and (time_start + 10000 == GameTime) then - FollowGear(target) - elseif progress == 6 then - progress = 7 - ShowMission(loc(caption), loc(subcaption), loc(goals[2]), 0, 0); - PlaySound(sndVictory); - time_start = GameTime - elseif progress == 7 and (time_start + 2500 == GameTime) then - EndGame() - end -end - -function onGameInit() - Seed = 0 - GameFlags = gfMultiWeapon + gfOneClanMode - TurnTime = 25000 - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - Delay = 2500 - Map = "Mushrooms" - Theme = "Nature" - - AddTeam(loc(teamnames[0]), teamcolor, "Simple", "Island", "Default") - player = AddHog(loc(hognames[0]), 0, player_health, "NoHat") - SetGearPosition(player, player_start_x, player_start_y); - - AddTeam(loc(teamnames[1]), teamcolor + 1, "Simple", "Island", "Default") - instructor = AddHog(loc(hognames[1]), 0, instructor_health, "NoHat") - SetGearPosition(instructor, player_start_x + 100, player_start_y) - HogTurnLeft(instructor, true) - - FollowGear(player); -end - -function onAmmoStoreInit() - SetAmmo(amBazooka, 9, 0, 0, 0) -end - -function onGearDelete(gear) - if GetGearType(gear) == gtTarget then - progress = 6 - end -end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Campaign/01#Boot_Camp.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,357 @@ +-- IMPORTANT -- THIS IS WORK IN PROGRESS AND VERY LIKELY TO BE CHANGED AGAIN +-- IMPORTANT -- DO NOT TRANSLATE THIS AS IT USES THE OLD SYSTEM AND WILL BE UPDATED LATER! + +local teamnames = {} +local hognames = {} +teamnames[0] = { + ["en"] = "Bloody Rookies", + ["de"] = "Blutige Anfänger", + ["pl"] = "Żótodzioby", + ["sv"] = "Blodiga nybörjare", + ["es"] = "Reclutas", + ["pt_PT"] = "Recrutas", + ["pt_BR"] = "Malditos Recrutas", + ["sk"] = "Regruti" +} + +teamnames[1] = { + ["en"] = "Instructors", + ["de"] = "Ausbilder", + ["pl"] = "Instruktor", + ["sv"] = "Instruktör", + ["es"] = "Instructores", + ["pt_PT"] = "Instrutores", + ["pt_BR"] = "Instrutores", + ["sk"] = "Inštruktori" +} + +hognames[0] = { + ["en"] = "Joker", + ["de"] = "Joker", + ["pl"] = "Joker", + ["sv"] = "Joker", + ["es"] = "Joker", + ["pt_PT"] = "Joker", + ["pt_BR"] = "Comediante", + ["sk"] = "Komediant" +} + +hognames[1] = { + ["en"] = "Harthog", + ["de"] = "Harthog", + ["pl"] = "Harthog", + ["sv"] = "Harthog", + ["es"] = "Harthog", + ["pt_PT"] = "Harthog", + ["pt_BR"] = "Harthog", + ["sk"] = "Harthog" +} + +local caption = { + ["en"] = "Boot Camp", + ["de"] = "Grundausbildung", + ["pl"] = "Poligon", + ["sv"] = "Grundutbildning", + ["es"] = "Campamento militar", + ["pt_PT"] = "Acampamento militar", + ["pt_BR"] = "Acampamento Militar", + ["sk"] = "Výcvikový tábor" + +} + +local subcaption = { + ["en"] = "Follow the instructions!", + ["de"] = "Befolge die Anweisungen!", + ["pl"] = "Wykonuj polecenia!", + ["sv"] = "Följ instruktioner!", + ["es"] = "¡Sigue las órdenes!", + ["pt_PT"] = "Segue as instruções!", + ["pt_BR"] = "Siga as ordens!", + ["sk"] = "Postupujte podľa inštrukcií!" +} + +local goals = {} + +goals[0] = { + ["en"] = "Listen to your Drill Instructor and follow his lead!", + ["de"] = "Höre deinem Ausbilder zu und befolge seine Anweisungen!", + ["pl"] = "Słuchaj instruktora i wykonuj jego rozkazy!", + ["sv"] = "Lyssna på din instruktör och gör som han säger!", + ["es"] = "¡Escucha atentamente a tu instructor de maniobras y sigue sus órdenes!", + ["pt_PT"] = "Ouve atentamente o teu Instrutor e segue as suas ordens!", + ["pt_BR"] = "Escute seu instrutor de escavação e siga seu líder", + ["sk"] = "Počúvajte vášho inštruktora výcviku a vykonávajte jeho rozkazy!" +} + +goals[1] = { + ["en"] = "Destroy the target to finish this mission!", + ["de"] = "Zerstöre das Ziel, um diese Mission abzuschließen!", + ["pl"] = "Zniszcz cel by ukończyć misję!", + ["sv"] = "Förstör målet för att avklara uppdraget!", + ["es"] = "¡Destruye el objetivo para completar esta misión!", + ["pt_PT"] = "Destrói o alvo para completar esta missão!", + ["pt_BR"] = "Destrua o alvo para concluir a missão", + ["sk"] = "Pre ukončenie misie zneškodnite cieľ!" +} + +goals[2] = { + ["en"] = "Excellent! You've passed the Boot Camp!", + ["de"] = "Ausgezeichnet! Du hast das Ausbildungslager bestanden!", + ["pl"] = "Doskonale! Wyszedłeś cało z poligonu!", + ["sv"] = "Brilliant! Du har klarat av grundutbildningen!", + ["es"] = "¡Excelente! ¡Has completado la maniobra de hoy!", + ["pt_PT"] = "Excelente! Completaste o treino para recrutas!", + ["pt_BR"] = "Excelente! Você completou a manobra", + ["pt_BR"] = "Výborne! Prešli ste výcvikovým táborom!" +} + +local failed = { + ["en"] = "You failed! Follow the instructions and shoot the target only!", + ["de"] = "Du hast versagt! Befolge die Anweisungen und schieß nur auf das Ziel!", + ["pl"] = "Przegrałeś! Wykonuj instrukcje poprawnie i strzelaj tylko w podane cele!", + ["sv"] = "Du har misslyckats! Följ instruktionerna och sjut endast på målen!", + ["es"] = "¡Has fallado! ¡Sigue las instrucciones y destruye únicamente el objetivo!", + ["pt_PT"] = "Falhaste! Segue as instruções e destrói apenas o alvo!", + ["pt_BR"] = "Você falhou! Siga as instruções e atire somente no alvo", + ["sk"] = "Prehrali ste! Nasledujte inštrukcie a strieľajte iba na cieľ!" +} + +local drill = {} + +drill[0] = { + ["en"] = "Allright, maggot!", + ["de"] = "Also gut, du Made!", + ["pl"] = "Słuchaj mnie gnido!", + ["sv"] = "Dåså, din mask!", + ["es"] = "¡Muy bien, escoria!", + ["pt_PT"] = "Bom trabalho verme!", + ["pt_BR"] = "Parabéns escória", + ["sk"] = "Počúvaj, ty červík!" +} + +drill[1] = { + ["en"] = "Show that you aren't that useless.", + ["de"] = "Zeig, dass du nicht so nutzlos bist.", + ["pl"] = "Udowodnij, że nie jesteś bezwartościowy.", + ["sv"] = "Visa att du inte är så värdelös!", + ["es"] = "Demuéstrame que no eres tan inútil como pareces.", + ["pt_PT"] = "Prova-me que não és tão inútil como pareces.", + ["pt_BR"] = "Mostre que você não é um inútil.", + ["sk"] = "Dokáž, že nie si na svete úplne zbytočným." +} + +drill[2] = { + ["en"] = "Use [left] to move to the left!", + ["de"] = "Benutze [Links], um nach links zu gehen!", + ["pl"] = "Użyj [lewo] by poruszyć się w lewą stronę!", + ["sv"] = "Använd [vänster] för att gå åt vänster!", + ["es"] = "¡Aprieta [izquierda] para desplazarte a la izquierda!", + ["pt_PT"] = "Carrega [esquerda] para te moveres para a esquerda!", + ["pt_BR"] = "Use [esquerda] para mover para a esquerda", + ["sk"] = "Stlačte [vľavo] pre pohyb doľava" +} + +drill[3] = { + ["en"] = "Good! Now use [right] to come back!", + ["de"] = "Gut! Nun komm mit [Rechts] zurück!", + ["pl"] = "Dobzre, Teraz użyj [prawo] by wrócić!", + ["sv"] = "Bra! Använd nu [höger] för att gå tillbaka!", + ["es"] = "¡Muy bien! ¡Ahora presiona [derecha] para volver!", + ["pt_PT"] = "Muito bem! Agora pressiona [direita] para voltar!", + ["pt_BR"] = "Bom! Agora use [direita] para voltar", + ["sk"] = "Dobre! Teraz použite [vpravo] a vráťte sa naspäť!" +} + +drill[4] = { + ["en"] = "Excellent!", + ["de"] = "Ausgezeichnet!", + ["pl"] = "Wspaniale!", + ["sv"] = "Utmärkt!", + ["es"] = "¡Excelente!", + ["pt_PT"] = "Excelente!", + ["pt_BR"] = "Excelente!", + ["sk"] = "Výborne!" +} + +drill[5] = { + ["en"] = "Now jump to the left using [return]!", + ["de"] = "Jetzt springe mit [Eingabetaste] nach links!", + ["pl"] = "Teraz skocz w lewo używając [Enter]", + ["sv"] = "Hoppa nu åt vänster med hjälp av [enter]!", + ["es"] = "¡Ahora salta hacia la izquierda usando [intro]!", + ["pt_PT"] = "Agora salta para a esquerda pressionando [retrocesso]!", + ["pt_BR"] = "Agora pule para a esquerda usando [return]!", + ["sk"] = "Teraz skočte doľava stlačením [enter]!" +} + +drill[6] = { + ["en"] = "Use [up] and [down] to aim.", + ["de"] = "Benutze [Hoch] und [Runter], um zu zielen.", + ["pl"] = "Użyj klawiszy [góra] i [dół] by celować.", + ["sv"] = "Använd [upp] och [ner] för att sikta!", + ["es"] = "Presiora [arriba] y [abajo] para apuntar.", + ["pt_PT"] = "Pressiona [cima] e [baixo] para apontar.", + ["pt_BR"] = "Pressione [acima] e [abaixo] para mirar.", + ["sk"] = "Stlačte [hore] a [dole] pre mierenie." +} + +drill[7] = { + ["en"] = "Hold [space] to power up your shot and then release it to shoot.", + ["de"] = "Halte [Leertaste], um deinen Schuss aufzuladen, und lasse dann rechtzeitig los.", + ["pl"] = "Przytrzymaj spację by zwiększyć siłę strzału.", + ["sv"] = "Håll ner [mellanslag] för att få kraft och släpp för att skjuta!", + ["es"] = "Mantén presionada la [barra espaciadora] para controlar la fuerza del disparo y suéltala para disparar.", + ["pt_PT"] = "Mantem a [barra de espaços] pressionada para controlar a força do tiro e larga-a para disparar.", + ["pt_BR"] = "Mantenha pressionado [espaço] para aumentar a força do seu tiro e solte para atirar", + ["sk"] = "Držte stlačený [medzerník] pre nabíjanie, jeho uvoľnením vystrelíte." +} + +drill[8] = { + ["en"] = "Destroy the target to finish your basic training!", + ["de"] = "Zerstöre das Ziel, um deine Grundausbildung abzuschließen!", + ["pl"] = "Zniszcz cel by by ukończyć trening podstawowy!", + ["sv"] = "Förstör målet för att avsluta din grundutbildning!", + ["es"] = "¡Destruye el objetivo para completar el entrenamiento básico!", + ["pt_PT"] = "Destrói o alvo para completar o treino básico!", + ["pt_BR"] = "Destrua o alvo para terminar o treino básico", + ["sk"] = "Zneškodnite cieľ na ukončenie základného výcviku!" +} + +local function loc(text) + if text == nil then return "**missing**" + elseif text[L] == nil then return text["en"] + else return text[L] + end +end + +local player = nil +local instructor = nil +local target = nil + +function onGameStart() + +end + +local player_start_x = 2300 +local player_start_y = 1250 +local target_x = 1900 +local target_y = 1250 +local player_health = 100 +local instructor_health = 100 +local teamcolor = 14483456 + +local progress = 0 +local time_start = 0 + +function onGameTick() + if progress == -1 and (time_start + 2500) == GameTime then + EndGame() + elseif progress == -1 then + + elseif progress > 0 and ((TurnTimeLeft == 0) or (GetHealth(player) ~= player_health) or (GetHealth(instructor) ~= instructor_health)) then + progress = -1 + ShowMission(loc(caption), loc(subcaption), loc(failed), -amBazooka, 0) + time_start = GameTime + PlaySound(sndNooo) + TurnTimeLeft = 0 + elseif GameTime == 0 then + ShowMission(loc(caption), loc(subcaption), loc(goals[0]), -amBazooka, 0) + TurnTimeLeft = 60000 + elseif GameTime == 2500 then + FollowGear(instructor) + HogSay(instructor, loc(drill[0]), SAY_SAY) + elseif GameTime == 5000 then + FollowGear(instructor) + HogSay(instructor, loc(drill[1]), SAY_SAY) + elseif GameTime == 7500 then + FollowGear(instructor) + HogSay(instructor, loc(drill[2]), SAY_SHOUT) + progress = 1 + TurnTimeLeft = 10000 + elseif progress == 1 then + local x, y = GetGearPosition(player) + if x < player_start_x - 50 then + progress = 2 + FollowGear(instructor) + HogSay(instructor, loc(drill[3]), SAY_SHOUT) + TurnTimeLeft = 10000 + end + elseif progress == 2 then + local x, y = GetGearPosition(player) + if x > player_start_x then + progress = 3 + FollowGear(instructor) + HogSay(instructor, loc(drill[4]), SAY_SAY) + time_start = GameTime + end + elseif progress == 3 and (time_start + 2500 == GameTime) then + progress = 4 + FollowGear(instructor) + HogSay(instructor, loc(drill[5]), SAY_SHOUT) + HogTurnLeft(player, true) + TurnTimeLeft = 10000 + elseif progress == 4 then + local x, y = GetGearPosition(player) + if y < player_start_y then + progress = 5 + FollowGear(instructor) + HogSay(instructor, "Yeah!", SAY_SAY) + time_start = GameTime + TurnTimeLeft = 30000 + end + elseif progress == 5 and (time_start + 2500 == GameTime) then + FollowGear(instructor) + HogSay(instructor, loc(drill[6]), SAY_SAY) + elseif progress == 5 and (time_start + 5000 == GameTime) then + FollowGear(instructor) + HogSay(instructor, loc(drill[7]), SAY_SAY) + elseif progress == 5 and (time_start + 7500 == GameTime) then + FollowGear(instructor) + HogSay(instructor, loc(drill[8]), SAY_SHOUT) + ShowMission(loc(caption), loc(subcaption), loc(goals[1]), 1, 0) + target = AddGear(target_x, target_y, gtTarget, 0, 0, 0, 0) + TurnTimeLeft = 60000 + elseif progress == 5 and (time_start + 10000 == GameTime) then + FollowGear(target) + elseif progress == 6 then + progress = 7 + ShowMission(loc(caption), loc(subcaption), loc(goals[2]), 0, 0) + PlaySound(sndVictory) + time_start = GameTime + elseif progress == 7 and (time_start + 2500 == GameTime) then + EndGame() + end +end + +function onGameInit() + Seed = 0 + GameFlags = gfMultiWeapon + gfOneClanMode + TurnTime = 25000 + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + Delay = 2500 + Map = "Mushrooms" + Theme = "Nature" + + AddTeam(loc(teamnames[0]), teamcolor, "Simple", "Island", "Default") + player = AddHog(loc(hognames[0]), 0, player_health, "NoHat") + SetGearPosition(player, player_start_x, player_start_y) + + AddTeam(loc(teamnames[1]), teamcolor + 1, "Simple", "Island", "Default") + instructor = AddHog(loc(hognames[1]), 0, instructor_health, "NoHat") + SetGearPosition(instructor, player_start_x + 100, player_start_y) + HogTurnLeft(instructor, true) + + FollowGear(player) +end + +function onAmmoStoreInit() + SetAmmo(amBazooka, 9, 0, 0, 0) +end + +function onGearDelete(gear) + if GetGearType(gear) == gtTarget then + progress = 6 + end +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,178 @@ +-- Hedgewars Bazooka Training +-- Scripting Example + +-- Lines such as this one are comments - they are ignored +-- by the game, no matter what kind of text is in there. +-- It's also possible to place a comment after some real +-- instruction as you see below. In short, everything +-- following "--" is ignored. + +--------------------------------------------------------------- +-- At first we implement the localization library using loadfile. +-- This allows us to localize strings without needing to think +-- about translations. +-- We can use the function loc(text) to localize a string. + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +-- This variable will hold the number of destroyed targets. +local score = 0 +-- This variable represents the number of targets to destroy. +local score_goal = 5 +-- This variable controls how many milliseconds/ticks we'd +-- like to wait before we end the round once all targets +-- have been destroyed. +local end_timer = 5000 -- 5000 ms = 5 s +-- This variable is set to true if the game is lost (i.e. +-- time runs out). +local game_lost = false +-- This variable will point to the hog's gear +local player = nil +-- This variable will grab the time left at the end of the round +local time_goal = 0 + +-- This is a custom function to make it easier to +-- spawn more targets with just one line of code +-- You may define as many custom functions as you +-- like. +function spawnTarget() + -- add a new target gear + gear = AddGear(0, 0, gtTarget, 0, 0, 0, 0) + + -- move it to a random position within 0 and + -- LAND_WIDTH - the width of the map + FindPlace(gear, true, 0, LAND_WIDTH) + + -- move the target to a higher vertical position + -- to ensure it's not somewhere down below + x, y = GetGearPosition(gear) + SetGearPosition(gear, x, 500) +end + +-- This function is called before the game loads its +-- resources. +-- It's one of the predefined function names that will +-- be called by the game. They give you entry points +-- where you're able to call your own code using either +-- provided instructions or custom functions. +function onGameInit() + -- At first we have to overwrite/set some global variables + -- that define the map, the game has to load, as well as + -- other things such as the game rules to use, etc. + -- Things we don't modify here will use their default values. + + -- The base number for the random number generator + Seed = 1 + -- Game settings and rules + GameFlags = gfMultiWeapon + gfOneClanMode + gfSolidLand + -- The time the player has to move each round (in ms) + TurnTime = 60000 + -- The frequency of crate drops + CaseFreq = 0 + -- The number of mines being placed + MinesNum = 0 + -- The number of explosives being placed + Explosives = 0 + -- The delay between each round + Delay = 0 + -- The map to be played + Map = "Bamboo" + -- The theme to be used + Theme = "Bamboo" + + -- Create the player team + AddTeam(loc("'Zooka Team"), 14483456, "Simple", "Island", "Default") + -- And add a hog to it + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + SetGearPosition(player, 1960, 1160) +end + +-- This function is called when the round starts +-- it spawns the first target that has to be destroyed. +-- In addition it shows the scenario goal(s). +function onGameStart() + -- Spawn the first target. + spawnTarget() + + -- Show some nice mission goals. + -- Parameters are: caption, sub caption, description, + -- extra text, icon and time to show. + -- A negative icon parameter (-n) represents the n-th weapon icon + -- A positive icon paramter (n) represents the (n+1)-th mission icon + -- A timeframe of 0 is replaced with the default time to show. + ShowMission(loc("Bazooka Training"), loc("Aiming Practice"), loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."), -amBazooka, 0) +end + +function onNewTurn() + ParseCommand("setweap " .. string.char(amBazooka)) +end + +-- This function is called every game tick. +-- Note that there are 1000 ticks within one second. +-- You shouldn't try to calculate too complicated +-- code here as this might slow down your game. +function onGameTick() + -- If time's up, set the game to be lost. + -- We actually check the time to be "1 ms" as it + -- will be at "0 ms" right at the start of the game. + if TurnTimeLeft == 1 and score < score_goal then + game_lost = true + -- ... and show a short message. + ShowMission(loc("Bazooka Training"), loc("Aiming Practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0) + -- How about killing our poor hog due to his poor performance? + SetHealth(player, 0) + -- Just to be sure set the goal time to 1 ms + time_goal = 1 + end + -- If the goal is reached or we've lost ... + if score == score_goal or game_lost then + -- ... check to see if the time we'd like to + -- wait has passed and then ... + if end_timer == 0 then + -- ... end the game ... + EndGame() + else + -- ... or just lower the timer by 1. + end_timer = end_timer - 1 + -- Reset the time left to stop the timer + TurnTimeLeft = time_goal + end + end +end + +-- This function is called when the game is initialized +-- to request the available ammo and probabilities +function onAmmoStoreInit() + -- add an unlimited supply of bazooka ammo + SetAmmo(amBazooka, 9, 0, 0, 0) +end + +-- This function is called when a new gear is added. +-- We don't need it for this training, so we can +-- keep it empty. +function onGearAdd(gear) +end + +-- This function is called before a gear is destroyed. +-- We use it to count the number of targets destroyed. +function onGearDelete(gear) + -- We're only interested in target gears. + if GetGearType(gear) == gtTarget then + -- Add one point to our score/counter + score = score + 1 + -- If we haven't reached the goal ... + if score < score_goal then + -- ... spawn another target. + spawnTarget() + else + if not game_lost then + -- Otherwise show that the goal was accomplished + ShowMission(loc("Bazooka Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0) + -- Also let the hogs shout "victory!" + PlaySound(sndVictory) + -- Save the time left so we may keep it. + time_goal = TurnTimeLeft + end + end + end +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Shotgun.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,178 @@ +-- Hedgewars Shotgun Training +-- Scripting Example + +-- Lines such as this one are comments - they are ignored +-- by the game, no matter what kind of text is in there. +-- It's also possible to place a comment after some real +-- instruction as you see below. In short, everything +-- following "--" is ignored. + +--------------------------------------------------------------- +-- At first we implement the localization library using loadfile. +-- This allows us to localize strings without needing to think +-- about translations. +-- We can use the function loc(text) to localize a string. + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +-- This variable will hold the number of destroyed targets. +local score = 0 +-- This variable represents the number of targets to destroy. +local score_goal = 5 +-- This variable controls how many milliseconds/ticks we'd +-- like to wait before we end the round once all targets +-- have been destroyed. +local end_timer = 5000 -- 5000 ms = 5 s +-- This variable is set to true if the game is lost (i.e. +-- time runs out). +local game_lost = false +-- This variable will point to the hog's gear +local player = nil +-- This variable will grab the time left at the end of the round +local time_goal = 0 + +-- This is a custom function to make it easier to +-- spawn more targets with just one line of code +-- You may define as many custom functions as you +-- like. +function spawnTarget() + -- add a new target gear + gear = AddGear(0, 0, gtTarget, 0, 0, 0, 0) + + -- move it to a random position within 0 and + -- LAND_WIDTH - the width of the map + FindPlace(gear, true, 0, LAND_WIDTH) + + -- move the target to a higher vertical position + -- to ensure it's not somewhere down below + x, y = GetGearPosition(gear) + SetGearPosition(gear, x, 500) +end + +function onNewTurn() + ParseCommand("setweap " .. string.char(amShotgun)) +end + +-- This function is called before the game loads its +-- resources. +-- It's one of the predefined function names that will +-- be called by the game. They give you entry points +-- where you're able to call your own code using either +-- provided instructions or custom functions. +function onGameInit() + -- At first we have to overwrite/set some global variables + -- that define the map, the game has to load, as well as + -- other things such as the game rules to use, etc. + -- Things we don't modify here will use their default values. + + -- The base number for the random number generator + Seed = 1 + -- Game settings and rules + GameFlags = gfMultiWeapon + gfOneClanMode + -- The time the player has to move each round (in ms) + TurnTime = 30000 + -- The frequency of crate drops + CaseFreq = 0 + -- The number of mines being placed + MinesNum = 0 + -- The number of explosives being placed + Explosives = 0 + -- The delay between each round + Delay = 0 + -- The map to be played + Map = "Mushrooms" + -- The theme to be used + Theme = "Nature" + + -- Create the player team + AddTeam(loc("Shotgun Team"), 14483456, "Simple", "Island", "Default") + -- And add a hog to it + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + SetGearPosition(player, 2334, 1254) +end + +-- This function is called when the round starts +-- it spawns the first target that has to be destroyed. +-- In addition it shows the scenario goal(s). +function onGameStart() + -- Spawn the first target. + spawnTarget() + + -- Show some nice mission goals. + -- Parameters are: caption, sub caption, description, + -- extra text, icon and time to show. + -- A negative icon parameter (-n) represents the n-th weapon icon + -- A positive icon paramter (n) represents the (n+1)-th mission icon + -- A timeframe of 0 is replaced with the default time to show. + ShowMission(loc("Shotgun Training"), loc("Aiming Practice"), loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."), -amShotgun, 0) +end + +-- This function is called every game tick. +-- Note that there are 1000 ticks within one second. +-- You shouldn't try to calculate too complicated +-- code here as this might slow down your game. +function onGameTick() + -- If time's up, set the game to be lost. + -- We actually check the time to be "1 ms" as it + -- will be at "0 ms" right at the start of the game. + if TurnTimeLeft == 1 and score < score_goal then + game_lost = true + -- ... and show a short message. + ShowMission(loc("Shotgun Training"), loc("Aiming Practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0) + -- How about killing our poor hog due to his poor performance? + SetHealth(player, 0) + -- Just to be sure set the goal time to 1 ms + time_goal = 1 + end + -- If the goal is reached or we've lost ... + if score == score_goal or game_lost then + -- ... check to see if the time we'd like to + -- wait has passed and then ... + if end_timer == 0 then + -- ... end the game ... + EndGame() + else + -- ... or just lower the timer by 1. + end_timer = end_timer - 1 + -- Reset the time left to stop the timer + TurnTimeLeft = time_goal + end + end +end + +-- This function is called when the game is initialized +-- to request the available ammo and probabilities +function onAmmoStoreInit() + -- add an unlimited supply of shotgun ammo + SetAmmo(amShotgun, 9, 0, 0, 0) +end + +-- This function is called when a new gear is added. +-- We don't need it for this training, so we can +-- keep it empty. +function onGearAdd(gear) +end + +-- This function is called before a gear is destroyed. +-- We use it to count the number of targets destroyed. +function onGearDelete(gear) + -- We're only interested in target gears. + if GetGearType(gear) == gtTarget then + -- Add one point to our score/counter + score = score + 1 + -- If we haven't reached the goal ... + if score < score_goal then + -- ... spawn another target. + spawnTarget() + else + if not game_lost then + -- Otherwise show that the goal was accomplished + ShowMission(loc("Shotgun Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0) + -- Also let the hogs shout "victory!" + PlaySound(sndVictory) + -- Save the time left so we may keep it. + time_goal = TurnTimeLeft + end + end + end +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Sniper_Rifle.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,307 @@ +-- Hedgewars SniperRifle Training +-- Scripting Example + +-- Lines such as this one are comments - they are ignored +-- by the game, no matter what kind of text is in there. +-- It's also possible to place a comment after some real +-- instruction as you see below. In short, everything +-- following "--" is ignored. + +--------------------------------------------------------------- +-- At first we implement the localization library using loadfile. +-- This allows us to localize strings without needing to think +-- about translations. +-- We can use the function loc(text) to localize a string. + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +-- This variable will hold the number of destroyed targets. +local score = 0 +-- This variable represents the number of targets to destroy. +local score_goal = 31 +-- This variable controls how many milliseconds/ticks we'd +-- like to wait before we end the round once all targets +-- have been destroyed. +local end_timer = 5000 -- 5000 ms = 5 s +-- This variable is set to true if the game is lost (i.e. +-- time runs out). +local game_lost = false +-- This variable will point to the hog's gear +local player = nil +-- This variable will grab the time left at the end of the round +local time_goal = 0 + +local target = nil + +local last_hit_time = 0 +-- This is a custom function to make it easier to +-- spawn more targets with just one line of code +-- You may define as many custom functions as you +-- like. +function spawnTarget(x, y) + -- add a new target gear + target = AddGear(x, y, gtTarget, 0, 0, 0, 0) + -- have the camera move to the target so the player knows where it is + FollowGear(target) +end + +function blowUp(x, y) + -- adds some TNT + gear = AddGear(x, y, gtDynamite, 0, 0, 0, 0) +end + +function onNewTurn() + ParseCommand("setweap " .. string.char(amSniperRifle)) +end + +-- This function is called before the game loads its +-- resources. +-- It's one of the predefined function names that will +-- be called by the game. They give you entry points +-- where you're able to call your own code using either +-- provided instructions or custom functions. +function onGameInit() + -- At first we have to overwrite/set some global variables + -- that define the map, the game has to load, as well as + -- other things such as the game rules to use, etc. + -- Things we don't modify here will use their default values. + + -- The base number for the random number generator + Seed = 0 + -- Game settings and rules + GameFlags = gfMultiWeapon + gfOneClanMode + gfArtillery + -- The time the player has to move each round (in ms) + TurnTime = 150000 + -- The frequency of crate drops + CaseFreq = 0 + -- The number of mines being placed + MinesNum = 0 + -- The number of explosives being placed + Explosives = 0 + -- The delay between each round + Delay = 0 + -- The map to be played + Map = "Ropes" + -- The theme to be used + Theme = "City" + + -- Create the player team + AddTeam(loc("Sniperz"), 14483456, "Simple", "Island", "Default") + -- And add a hog to it + player = AddHog(loc("Hunter"), 0, 1, "Sniper") + SetGearPosition(player, 602, 1465) +end + +-- This function is called when the round starts +-- it spawns the first target that has to be destroyed. +-- In addition it shows the scenario goal(s). +function onGameStart() + -- Spawn the first target. + spawnTarget(860,1020) + + -- Show some nice mission goals. + -- Parameters are: caption, sub caption, description, + -- extra text, icon and time to show. + -- A negative icon parameter (-n) represents the n-th weapon icon + -- A positive icon paramter (n) represents the (n+1)-th mission icon + -- A timeframe of 0 is replaced with the default time to show. + ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."), -amSniperRifle, 0) +end + +-- This function is called every game tick. +-- Note that there are 1000 ticks within one second. +-- You shouldn't try to calculate too complicated +-- code here as this might slow down your game. +function onGameTick() + if game_lost then + return + end + -- after a target is destroyed, show hog, then target + if (target ~= nil) and (TurnTimeLeft + 1300 < last_hit_time) then + -- move camera to the target + FollowGear(target) + elseif TurnTimeLeft + 300 < last_hit_time then + -- move camera to the hog + FollowGear(player) + end + -- If time's up, set the game to be lost. + -- We actually check the time to be "1 ms" as it + -- will be at "0 ms" right at the start of the game. + if TurnTimeLeft == 1 and score < score_goal then + game_lost = true + -- ... and show a short message. + ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0) + -- How about killing our poor hog due to his poor performance? + SetHealth(player, 0) + -- Just to be sure set the goal time to 1 ms + time_goal = 1 + end + -- If the goal is reached or we've lost ... + if score == score_goal or game_lost then + -- ... check to see if the time we'd like to + -- wait has passed and then ... + if end_timer == 0 then + -- ... end the game ... + EndGame() + else + -- ... or just lower the timer by 1. + end_timer = end_timer - 1 + -- Reset the time left to stop the timer + TurnTimeLeft = time_goal + end + end +end + +-- This function is called when the game is initialized +-- to request the available ammo and probabilities +function onAmmoStoreInit() + -- add an unlimited supply of shotgun ammo + SetAmmo(amSniperRifle, 9, 0, 0, 0) +end + +-- This function is called when a new gear is added. +-- We don't need it for this training, so we can +-- keep it empty. +function onGearAdd(gear) +end + +-- This function is called before a gear is destroyed. +-- We use it to count the number of targets destroyed. +function onGearDelete(gear) + + if GetGearType(gear) == gtCase then + game_lost = true + return + end + + if (GetGearType(gear) == gtTarget) then + -- remember when the target was hit for adjusting the camera + last_hit_time = TurnTimeLeft + -- Add one point to our score/counter + score = score + 1 + -- If we haven't reached the goal ... + if score < score_goal then + -- ... spawn another target. + if score == 1 then + spawnTarget(1520,1350) + elseif score == 2 then + spawnTarget(1730,1040) + elseif score == 3 then + spawnTarget(2080,780) + elseif score == 4 then + blowUp(1730,1226) + blowUp(1440,1595) + blowUp(1527,1575) + blowUp(1614,1595) + blowUp(1420,1675) + blowUp(1527,1675) + blowUp(1634,1675) + blowUp(1440,1755) + blowUp(1527,1775) + blowUp(1614,1755) + spawnTarget(1527,1667) + elseif score == 5 then + spawnTarget(1527,1667) + elseif score == 6 then + spawnTarget(2175,1300) + elseif score == 7 then + spawnTarget(2250,940) + elseif score == 8 then + spawnTarget(2665,1540) + elseif score == 9 then + spawnTarget(3040,1160) + elseif score == 10 then + spawnTarget(2930,1500) + elseif score == 11 then + spawnTarget(700,720) + elseif score == 12 then + blowUp(914,1222) + blowUp(1050,1222) + blowUp(1160,1008) + blowUp(1160,1093) + blowUp(1160,1188) + blowUp(375,911) + blowUp(510,911) + blowUp(640,911) + blowUp(780,911) + blowUp(920,911) + blowUp(1060,913) + blowUp(1198,913) + spawnTarget(1200,730) + elseif score == 13 then + spawnTarget(1200,830) + elseif score == 14 then + spawnTarget(1430,450) + elseif score == 15 then + spawnTarget(796,240) + elseif score == 16 then + spawnTarget(300,10) + elseif score == 17 then + spawnTarget(2080,820) + elseif score == 18 then + blowUp(2110,920) + blowUp(2210,920) + blowUp(2200,305) + blowUp(2300,305) + blowUp(2300,400) + blowUp(2300,500) + blowUp(2300,600) + blowUp(2300,700) + blowUp(2300,800) + blowUp(2300,900) + blowUp(2401,305) + blowUp(2532,305) + blowUp(2663,305) + spawnTarget(2300,760) + elseif score == 19 then + spawnTarget(2300,760) + elseif score == 20 then + spawnTarget(2738,190) + elseif score == 21 then + spawnTarget(2590,-100) + elseif score == 22 then + blowUp(2790,305) + blowUp(2930,305) + blowUp(3060,305) + blowUp(3190,305) + blowUp(3310,305) + blowUp(3393,613) + blowUp(2805,370) + blowUp(2805,500) + blowUp(2805,630) + blowUp(2805,760) + blowUp(2805,890) + blowUp(2700,890) + blowUp(3258,370) + blowUp(3258,475) + blowUp(3264,575) + spawnTarget(3230,240) + elseif score == 23 then + spawnTarget(3230,290) + elseif score == 24 then + spawnTarget(3670,250) + elseif score == 25 then + spawnTarget(2620,-100) + elseif score == 26 then + spawnTarget(2870,300) + elseif score == 27 then + spawnTarget(3850,900) + elseif score == 28 then + spawnTarget(3780,300) + elseif score == 29 then + spawnTarget(3670,0) + elseif score == 30 then + spawnTarget(3480,1200) + end + else + if not game_lost then + -- Otherwise show that the goal was accomplished + ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0) + -- Also let the hogs shout "victory!" + PlaySound(sndVictory) + -- Save the time left so we may keep it. + time_goal = TurnTimeLeft + end + end + end +end
--- a/share/hedgewars/Data/Missions/Training/Bazooka.lua Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ --- Hedgewars Bazooka Training --- Scripting Example - --- Lines such as this one are comments - they are ignored --- by the game, no matter what kind of text is in there. --- It's also possible to place a comment after some real --- instruction as you see below. In short, everything --- following "--" is ignored. - ---------------------------------------------------------------- --- At first we put all text we'd like to use in some arrays. --- This way we're able to localize the text to be shown without --- modifying other files. --- The language to be used is stored in the global variable --- 'L' that is set by the game (string). --- Text may then be accessed using "arrayname[L]". - -local caption = { - ["en"] = "Bazooka Training", - ["de"] = "Bazooka-Training", - ["es"] = "Entrenamiento con bazuca", - ["pl"] = "Trening bazooki", - ["pt_PT"] = "Treino com Bazuca", - ["pt_BR"] = "Treino com a Bazuca", - ["sv"] = "Bazookaträning" - -- To add other languages, just add lines similar to the - -- existing ones - don't forget the trailing ","! - } - -local subcaption = { - ["en"] = "Aiming Practice", - ["de"] = "Zielübung", - ["es"] = "Practica tu puntería", - ["pl"] = "Potrenuj celność", - ["pt_PT"] = "Pratica a tua pontaria", - ["pt_BR"] = "Pratique a sua pontaria", - ["sv"] = "Siktesövning" - } - -local goal = { - ["en"] = "Eliminate all targets before your time runs out.|You have unlimited ammo for this mission.", - ["de"] = "Eliminiere alle Ziele bevor die Zeit ausläuft.|Du hast in dieser Mission unbegrenzte Munition.", - ["es"] = "Destruye todos los objetivos antes de que se agote el tiempo.|La munición en esta misión es ilimitada.", - ["pl"] = "Zniszcz wszystkie cele zanim upłynie czas.|W tej misji masz nieskończoną ilość amunicji.", - ["pt_PT"] = "Destrói todos os alvos antes do tempo terminar.|Tens munições infinitas para esta missão.", - ["pt_BR"] = "Destrua todos os alvos antes que o tempo acabe.|Você tem munição infinita para esta missão.", - ["sv"] = "Förstör alla målen innan din tid tar slut.|Du har obegränsad ammunition för deta uppdrag" - } - -local timeout = { - ["en"] = "Oh no! Time's up! Just try again.", - ["de"] = "Oh nein! Die Zeit ist um! Versuche es nochmal.", - ["es"] = "¡Oh, no, se te acabó el tiempo! ¿Por qué no lo intentas de nuevo?", - ["pl"] = "Ajajaj! Koniec czasu! Spróbuj jeszcze raz.", - ["pt_PT"] = "Oh não! Acabou o tempo! Tenta novamente.", - ["pt_BR"] = "Oh não! O tempo acabou! Tente novamente.", - ["sv"] = "Åh nej! Tiden är ute! Pröva igen." - } - -local success = { - ["en"] = "Congratulations! You've eliminated all targets|within the allowed time frame.", - ["de"] = "Gratulation! Du hast alle Ziele innerhalb der|verfügbaren Zeit ausgeschaltet.", - ["es"] = "¡Felicidades! Has destruido todos los objectivos|dentro del tiempo establecido.", - ["pl"] = "Gratulacje! Zniszczyłeś wszystkie cele przed upłynięciem czasu.", - ["pt_PT"] = "Parabéns! Eliminaste todos os alvos|dentro do tempo limite.", - ["pt_BR"] = "Parabéns! Você eliminou todos os alvos|dentro do tempo limite.", - ["sv"] = "Grattis! Du har förstört alla målen inom den|tillåtna tidsramen." - } - -local teamname = { - ["en"] = "'Zooka Team", - ["de"] = "Die Knalltüten", - ["es"] = "Bazuqueros", - ["pl"] = "Bazookinierzy", - ["pt_PT"] = "Bazuqueiros", - ["pt_BR"] = "Bazuqueiros", - ["sv"] = "Bazookalaget" - } - -local hogname = { - ["en"] = "Hunter", - ["de"] = "Jäger", - ["es"] = "Artillero", - ["pl"] = "Strzelec", - ["pt_PT"] = "Comando", - ["pt_BR"] = "Artilheiro", - ["sv"] = "Jägare" - } - --- To handle missing texts we define a small wrapper function that --- we'll use to retrieve text. -local function loc(text) - if text == nil then return "**missing**" - elseif text[L] == nil then return text["en"] - else return text[L] - end -end - ---------------------------------------------------------------- - --- This variable will hold the number of destroyed targets. -local score = 0 --- This variable represents the number of targets to destroy. -local score_goal = 5 --- This variable controls how many milliseconds/ticks we'd --- like to wait before we end the round once all targets --- have been destroyed. -local end_timer = 5000 -- 5000 ms = 5 s --- This variable is set to true if the game is lost (i.e. --- time runs out). -local game_lost = false --- This variable will point to the hog's gear -local player = nil --- This variable will grab the time left at the end of the round -local time_goal = 0 - --- This is a custom function to make it easier to --- spawn more targets with just one line of code --- You may define as many custom functions as you --- like. -function spawnTarget() - -- add a new target gear - gear = AddGear(0, 0, gtTarget, 0, 0, 0, 0) - - -- move it to a random position within 0 and - -- LAND_WIDTH - the width of the map - FindPlace(gear, true, 0, LAND_WIDTH) - - -- move the target to a higher vertical position - -- to ensure it's not somewhere down below - x, y = GetGearPosition(gear) - SetGearPosition(gear, x, 500) -end - --- This function is called before the game loads its --- resources. --- It's one of the predefined function names that will --- be called by the game. They give you entry points --- where you're able to call your own code using either --- provided instructions or custom functions. -function onGameInit() - -- At first we have to overwrite/set some global variables - -- that define the map, the game has to load, as well as - -- other things such as the game rules to use, etc. - -- Things we don't modify here will use their default values. - - -- The base number for the random number generator - Seed = 0 - -- Game settings and rules - GameFlags = gfMultiWeapon + gfOneClanMode + gfSolidLand - -- The time the player has to move each round (in ms) - TurnTime = 60000 - -- The frequency of crate drops - CaseFreq = 0 - -- The number of mines being placed - MinesNum = 0 - -- The number of explosives being placed - Explosives = 0 - -- The delay between each round - Delay = 0 - -- The map to be played - Map = "Bamboo" - -- The theme to be used - Theme = "Bamboo" - - -- Create the player team - AddTeam(loc(teamname), 14483456, "Simple", "Island", "Default") - -- And add a hog to it - player = AddHog(loc(hogname), 0, 1, "NoHat") - SetGearPosition(player, 1960, 1160); -end - --- This function is called when the round starts --- it spawns the first target that has to be destroyed. --- In addition it shows the scenario goal(s). -function onGameStart() - -- Spawn the first target. - spawnTarget() - - -- Show some nice mission goals. - -- Parameters are: caption, sub caption, description, - -- extra text, icon and time to show. - -- A negative icon parameter (-n) represents the n-th weapon icon - -- A positive icon paramter (n) represents the (n+1)-th mission icon - -- A timeframe of 0 is replaced with the default time to show. - ShowMission(loc(caption), loc(subcaption), loc(goal), -amBazooka, 0); -end - --- This function is called every game tick. --- Note that there are 1000 ticks within one second. --- You shouldn't try to calculate too complicated --- code here as this might slow down your game. -function onGameTick() - -- If time's up, set the game to be lost. - -- We actually check the time to be "1 ms" as it - -- will be at "0 ms" right at the start of the game. - if TurnTimeLeft == 1 and score < score_goal then - game_lost = true - -- ... and show a short message. - ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0); - -- How about killing our poor hog due to his poor performance? - SetHealth(player, 0); - -- Just to be sure set the goal time to 1 ms - time_goal = 1 - end - -- If the goal is reached or we've lost ... - if score == score_goal or game_lost then - -- ... check to see if the time we'd like to - -- wait has passed and then ... - if end_timer == 0 then - -- ... end the game ... - EndGame() - else - -- ... or just lower the timer by 1. - end_timer = end_timer - 1 - -- Reset the time left to stop the timer - TurnTimeLeft = time_goal - end - end -end - --- This function is called when the game is initialized --- to request the available ammo and probabilities -function onAmmoStoreInit() - -- add an unlimited supply of bazooka ammo - SetAmmo(amBazooka, 9, 0, 0, 0) -end - --- This function is called when a new gear is added. --- We don't need it for this training, so we can --- keep it empty. -function onGearAdd(gear) -end - --- This function is called before a gear is destroyed. --- We use it to count the number of targets destroyed. -function onGearDelete(gear) - -- We're only interested in target gears. - if GetGearType(gear) == gtTarget then - -- Add one point to our score/counter - score = score + 1 - -- If we haven't reached the goal ... - if score < score_goal then - -- ... spawn another target. - spawnTarget() - else - if not game_lost then - -- Otherwise show that the goal was accomplished - ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0); - -- Also let the hogs shout "victory!" - PlaySound(sndVictory) - -- Save the time left so we may keep it. - time_goal = TurnTimeLeft - end - end - end -end
--- a/share/hedgewars/Data/Missions/Training/Shotgun.lua Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ --- Hedgewars Shotgun Training --- Scripting Example - --- Lines such as this one are comments - they are ignored --- by the game, no matter what kind of text is in there. --- It's also possible to place a comment after some real --- instruction as you see below. In short, everything --- following "--" is ignored. - ---------------------------------------------------------------- --- At first we put all text we'd like to use in some arrays. --- This way we're able to localize the text to be shown without --- modifying other files. --- The language to be used is stored in the global variable --- 'L' that is set by the game (string). --- Text may then be accessed using "arrayname[L]". - -local caption = { - ["en"] = "Shotgun Training", - ["de"] = "Schrotflinten-Training", - ["es"] = "Entrenamiento con escopeta", - ["pl"] = "Trening strzelecki", - ["pt_PT"] = "Treino com Caçadeira", - ["pt_BR"] = "Treino com a Escopeta", - ["sv"] = "Hagelgevärsträning" - -- To add other languages, just add lines similar to the - -- existing ones - don't forget the trailing ","! - } - -local subcaption = { - ["en"] = "Aiming Practice", - ["de"] = "Zielübung", - ["es"] = "Practica tu puntería", - ["pl"] = "Potrenuj celność", - ["pt_PT"] = "Pratica a tua pontaria", - ["pt_BR"] = "Pratique a sua pontaria", - ["sv"] = "Siktesövning" - } - -local goal = { - ["en"] = "Eliminate all targets before your time runs out.|You have unlimited ammo for this mission.", - ["de"] = "Eliminiere alle Ziele bevor die Zeit ausläuft.|Du hast in dieser Mission unbegrenzte Munition.", - ["es"] = "Destruye todos los objetivos antes de que se agote el tiempo.|La munición en esta misión es ilimitada.", - ["pl"] = "Zniszcz wszystkie cele zanim upłynie czas.|W tej misji masz nieskończoną ilość amunicji.", - ["pt_PT"] = "Destrói todos os alvos antes do tempo terminar.|Tens munições infinitas para esta missão.", - ["pt_BR"] = "Destrua todos os alvos antes que o tempo acabe.|Você tem munição infinita para esta missão.", - ["sv"] = "Förstör alla målen innan din tid tar slut.|Du har obegränsad ammunition för deta uppdrag" - } - -local timeout = { - ["en"] = "Oh no! Time's up! Just try again.", - ["de"] = "Oh nein! Die Zeit ist um! Versuche es nochmal.", - ["es"] = "¡Oh, no, se te acabó el tiempo! ¿Por qué no lo intentas de nuevo?", - ["pl"] = "Ajajaj! Koniec czasu! Spróbuj jeszcze raz.", - ["pt_PT"] = "Oh não! Acabou o tempo! Tenta novamente.", - ["pt_BR"] = "Oh não! O tempo acabou! Tente novamente.", - ["sv"] = "Åh nej! Tiden är ute! Pröva igen." - } - -local success = { - ["en"] = "Congratulations! You've eliminated all targets|within the allowed time frame.", - ["de"] = "Gratulation! Du hast alle Ziele innerhalb der|verfügbaren Zeit ausgeschaltet.", - ["es"] = "¡Felicidades! Has destruido todos los objectivos|dentro del tiempo establecido.", - ["pl"] = "Gratulacje! Zniszczyłeś wszystkie cele przed upłynięciem czasu.", - ["pt_PT"] = "Parabéns! Eliminaste todos os alvos|dentro do tempo limite.", - ["pt_BR"] = "Parabéns! Você eliminou todos os alvos|dentro do tempo limite.", - ["sv"] = "Grattis! Du har förstört alla målen inom den|tillåtna tidsramen." - } - -local teamname = { - ["en"] = "Shotgun Team", - ["de"] = "Die Knalltüten", - ["es"] = "Escopeteros", - ["pl"] = "Shotgun Team", - ["pt_PT"] = "Caçadores", - ["pt_PT"] = "Carabineiros", - ["sv"] = "Hagelgevärslaget" - } - -local hogname = { - ["en"] = "Hunter", - ["de"] = "Jäger", - ["es"] = "Cazador", - ["pl"] = "Strzelec", - ["pt_PT"] = "Comando", - ["pt_BR"] = "Caçador", - ["sv"] = "Jägare" - } - --- To handle missing texts we define a small wrapper function that --- we'll use to retrieve text. -local function loc(text) - if text == nil then return "**missing**" - elseif text[L] == nil then return text["en"] - else return text[L] - end -end - ---------------------------------------------------------------- - --- This variable will hold the number of destroyed targets. -local score = 0 --- This variable represents the number of targets to destroy. -local score_goal = 5 --- This variable controls how many milliseconds/ticks we'd --- like to wait before we end the round once all targets --- have been destroyed. -local end_timer = 5000 -- 5000 ms = 5 s --- This variable is set to true if the game is lost (i.e. --- time runs out). -local game_lost = false --- This variable will point to the hog's gear -local player = nil --- This variable will grab the time left at the end of the round -local time_goal = 0 - --- This is a custom function to make it easier to --- spawn more targets with just one line of code --- You may define as many custom functions as you --- like. -function spawnTarget() - -- add a new target gear - gear = AddGear(0, 0, gtTarget, 0, 0, 0, 0) - - -- move it to a random position within 0 and - -- LAND_WIDTH - the width of the map - FindPlace(gear, true, 0, LAND_WIDTH) - - -- move the target to a higher vertical position - -- to ensure it's not somewhere down below - x, y = GetGearPosition(gear) - SetGearPosition(gear, x, 500) -end - --- This function is called before the game loads its --- resources. --- It's one of the predefined function names that will --- be called by the game. They give you entry points --- where you're able to call your own code using either --- provided instructions or custom functions. -function onGameInit() - -- At first we have to overwrite/set some global variables - -- that define the map, the game has to load, as well as - -- other things such as the game rules to use, etc. - -- Things we don't modify here will use their default values. - - -- The base number for the random number generator - Seed = 0 - -- Game settings and rules - GameFlags = gfMultiWeapon + gfOneClanMode - -- The time the player has to move each round (in ms) - TurnTime = 25000 - -- The frequency of crate drops - CaseFreq = 0 - -- The number of mines being placed - MinesNum = 0 - -- The number of explosives being placed - Explosives = 0 - -- The delay between each round - Delay = 0 - -- The map to be played - Map = "Mushrooms" - -- The theme to be used - Theme = "Nature" - - -- Create the player team - AddTeam(loc(teamname), 14483456, "Simple", "Island", "Default") - -- And add a hog to it - player = AddHog(loc(hogname), 0, 1, "NoHat") - SetGearPosition(player, 2334, 1254); -end - --- This function is called when the round starts --- it spawns the first target that has to be destroyed. --- In addition it shows the scenario goal(s). -function onGameStart() - -- Spawn the first target. - spawnTarget() - - -- Show some nice mission goals. - -- Parameters are: caption, sub caption, description, - -- extra text, icon and time to show. - -- A negative icon parameter (-n) represents the n-th weapon icon - -- A positive icon paramter (n) represents the (n+1)-th mission icon - -- A timeframe of 0 is replaced with the default time to show. - ShowMission(loc(caption), loc(subcaption), loc(goal), -amShotgun, 0); -end - --- This function is called every game tick. --- Note that there are 1000 ticks within one second. --- You shouldn't try to calculate too complicated --- code here as this might slow down your game. -function onGameTick() - -- If time's up, set the game to be lost. - -- We actually check the time to be "1 ms" as it - -- will be at "0 ms" right at the start of the game. - if TurnTimeLeft == 1 and score < score_goal then - game_lost = true - -- ... and show a short message. - ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0); - -- How about killing our poor hog due to his poor performance? - SetHealth(player, 0); - -- Just to be sure set the goal time to 1 ms - time_goal = 1 - end - -- If the goal is reached or we've lost ... - if score == score_goal or game_lost then - -- ... check to see if the time we'd like to - -- wait has passed and then ... - if end_timer == 0 then - -- ... end the game ... - EndGame() - else - -- ... or just lower the timer by 1. - end_timer = end_timer - 1 - -- Reset the time left to stop the timer - TurnTimeLeft = time_goal - end - end -end - --- This function is called when the game is initialized --- to request the available ammo and probabilities -function onAmmoStoreInit() - -- add an unlimited supply of shotgun ammo - SetAmmo(amShotgun, 9, 0, 0, 0) -end - --- This function is called when a new gear is added. --- We don't need it for this training, so we can --- keep it empty. -function onGearAdd(gear) -end - --- This function is called before a gear is destroyed. --- We use it to count the number of targets destroyed. -function onGearDelete(gear) - -- We're only interested in target gears. - if GetGearType(gear) == gtTarget then - -- Add one point to our score/counter - score = score + 1 - -- If we haven't reached the goal ... - if score < score_goal then - -- ... spawn another target. - spawnTarget() - else - if not game_lost then - -- Otherwise show that the goal was accomplished - ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0); - -- Also let the hogs shout "victory!" - PlaySound(sndVictory) - -- Save the time left so we may keep it. - time_goal = TurnTimeLeft - end - end - end -end
--- a/share/hedgewars/Data/Missions/Training/SniperRifle.lua Mon Dec 27 23:57:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,385 +0,0 @@ --- Hedgewars SniperRifle Training --- Scripting Example - --- Lines such as this one are comments - they are ignored --- by the game, no matter what kind of text is in there. --- It's also possible to place a comment after some real --- instruction as you see below. In short, everything --- following "--" is ignored. - ---------------------------------------------------------------- --- At first we put all text we'd like to use in some arrays. --- This way we're able to localize the text to be shown without --- modifying other files. --- The language to be used is stored in the global variable --- 'L' that is set by the game (string). --- Text may then be accessed using "arrayname[L]". - -local caption = { - ["en"] = "Sniper Training", - ["de"] = "Scharfschützen-Training", - ["es"] = "Entrenamiento con rifle francotirador", - ["pl"] = "Trening Snajperski", - ["pt_PT"] = "Treino com Sniper", - ["pt_BR"] = "Treino com o Rifle Sniper", - ["sv"] = "Prickskyttesträning" - -- To add other languages, just add lines similar to the - -- existing ones - don't forget the trailing ","! - } - -local subcaption = { - ["en"] = "Aiming Practice", - ["de"] = "Zielübung", - ["es"] = "Practica tu puntería", - ["pl"] = "Potrenuj celność", - ["pt_PT"] = "Pratica a tua pontaria", - ["pt_BR"] = "Pratique a sua pontaria", - ["sv"] = "Siktesövning" - } - -local goal = { - ["en"] = "Eliminate all targets before your time runs out.|You have unlimited ammo for this mission.", - ["de"] = "Eliminiere alle Ziele bevor die Zeit ausläuft.|Du hast in dieser Mission unbegrenzte Munition.", - ["es"] = "Destruye todos los objetivos antes de que se agote el tiempo.|La munición en esta misión es ilimitada.", - ["pl"] = "Zniszcz wszystkie cele zanim upłynie czas.|W tej misji masz nieskończoną ilość amunicji.", - ["pt_PT"] = "Destrói todos os alvos antes do tempo terminar.|Tens munições infinitas para esta missão.", - ["pt_BR"] = "Destrua todos os alvos antes que o tempo acabe.|Você tem munição infinita para esta missão.", - ["sv"] = "Förstör alla målen innan din tid tar slut.|Du har obegränsad ammunition för deta uppdrag" - } - -local timeout = { - ["en"] = "Oh no! Time's up! Just try again.", - ["de"] = "Oh nein! Die Zeit ist um! Versuche es nochmal.", - ["es"] = "¡Oh, no, se te acabó el tiempo! ¿Por qué no lo intentas de nuevo?", - ["pl"] = "Ajajaj! Koniec czasu! Spróbuj jeszcze raz.", - ["pt_PT"] = "Oh não! Acabou o tempo! Tenta novamente.", - ["pt_BR"] = "Oh não! O tempo acabou! Tente novamente.", - ["sv"] = "Åh nej! Tiden är ute! Pröva igen." - } - -local success = { - ["en"] = "Congratulations! You've eliminated all targets|within the allowed time frame.", - ["de"] = "Gratulation! Du hast alle Ziele innerhalb der|verfügbaren Zeit ausgeschaltet.", - ["es"] = "¡Felicidades! Has destruido todos los objectivos|dentro del tiempo establecido.", - ["pl"] = "Gratulacje! Zniszczyłeś wszystkie cele przed upłynięciem czasu.", - ["pt_PT"] = "Parabéns! Eliminaste todos os alvos|dentro do tempo limite.", - ["pt_BR"] = "Parabéns! Você eliminou todos os alvos|dentro do tempo limite.", - ["sv"] = "Grattis! Du har förstört alla målen inom den|tillåtna tidsramen." - } - -local teamname = { - ["en"] = "Sniperz", - ["de"] = "Heckenschützen", - ["es"] = "Fusileros", - ["pl"] = "Snajperzy", - ["pt_BR"] = "Franco-Atiradores", - ["sv"] = "Prickskyttarna" - } - -local hogname = { - ["en"] = "Hunter", - ["de"] = "Jäger", - ["es"] = "Francotirador", - ["pl"] = "Strzelec", - ["pt_PT"] = "Comando", - ["pt_BR"] = "Caçador", - ["sv"] = "Jägare" - } - --- To handle missing texts we define a small wrapper function that --- we'll use to retrieve text. -local function loc(text) - if text == nil then return "**missing**" - elseif text[L] == nil then return text["en"] - else return text[L] - end -end - ---------------------------------------------------------------- - --- This variable will hold the number of destroyed targets. -local score = 0 --- This variable represents the number of targets to destroy. -local score_goal = 31 --- This variable controls how many milliseconds/ticks we'd --- like to wait before we end the round once all targets --- have been destroyed. -local end_timer = 5000 -- 5000 ms = 5 s --- This variable is set to true if the game is lost (i.e. --- time runs out). -local game_lost = false --- This variable will point to the hog's gear -local player = nil --- This variable will grab the time left at the end of the round -local time_goal = 0 - -local target = nil - -local last_hit_time = 0 --- This is a custom function to make it easier to --- spawn more targets with just one line of code --- You may define as many custom functions as you --- like. -function spawnTarget(x, y) - -- add a new target gear - target = AddGear(x, y, gtTarget, 0, 0, 0, 0) - -- have the camera move to the target so the player knows where it is - FollowGear(target) -end - -function blowUp(x, y) - -- adds some TNT - gear = AddGear(x, y, gtDynamite, 0, 0, 0, 0) -end - --- This function is called before the game loads its --- resources. --- It's one of the predefined function names that will --- be called by the game. They give you entry points --- where you're able to call your own code using either --- provided instructions or custom functions. -function onGameInit() - -- At first we have to overwrite/set some global variables - -- that define the map, the game has to load, as well as - -- other things such as the game rules to use, etc. - -- Things we don't modify here will use their default values. - - -- The base number for the random number generator - Seed = 0 - -- Game settings and rules - GameFlags = gfMultiWeapon + gfOneClanMode + gfArtillery - -- The time the player has to move each round (in ms) - TurnTime = 150000 - -- The frequency of crate drops - CaseFreq = 0 - -- The number of mines being placed - MinesNum = 0 - -- The number of explosives being placed - Explosives = 0 - -- The delay between each round - Delay = 0 - -- The map to be played - Map = "Ropes" - -- The theme to be used - Theme = "City" - - -- Create the player team - AddTeam(loc(teamname), 14483456, "Simple", "Island", "Default") - -- And add a hog to it - player = AddHog(loc(hogname), 0, 1, "Sniper") - SetGearPosition(player, 602, 1465); -end - --- This function is called when the round starts --- it spawns the first target that has to be destroyed. --- In addition it shows the scenario goal(s). -function onGameStart() - -- Spawn the first target. - spawnTarget(860,1020) - - -- Show some nice mission goals. - -- Parameters are: caption, sub caption, description, - -- extra text, icon and time to show. - -- A negative icon parameter (-n) represents the n-th weapon icon - -- A positive icon paramter (n) represents the (n+1)-th mission icon - -- A timeframe of 0 is replaced with the default time to show. - ShowMission(loc(caption), loc(subcaption), loc(goal), -amSniperRifle, 0); -end - --- This function is called every game tick. --- Note that there are 1000 ticks within one second. --- You shouldn't try to calculate too complicated --- code here as this might slow down your game. -function onGameTick() - if game_lost then - return - end - -- after a target is destroyed, show hog, then target - if (target ~= nil) and (TurnTimeLeft + 1300 < last_hit_time) then - -- move camera to the target - FollowGear(target) - elseif TurnTimeLeft + 300 < last_hit_time then - -- move camera to the hog - FollowGear(player) - end - -- If time's up, set the game to be lost. - -- We actually check the time to be "1 ms" as it - -- will be at "0 ms" right at the start of the game. - if TurnTimeLeft == 1 and score < score_goal then - game_lost = true - -- ... and show a short message. - ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0); - -- How about killing our poor hog due to his poor performance? - SetHealth(player, 0); - -- Just to be sure set the goal time to 1 ms - time_goal = 1 - end - -- If the goal is reached or we've lost ... - if score == score_goal or game_lost then - -- ... check to see if the time we'd like to - -- wait has passed and then ... - if end_timer == 0 then - -- ... end the game ... - EndGame() - else - -- ... or just lower the timer by 1. - end_timer = end_timer - 1 - -- Reset the time left to stop the timer - TurnTimeLeft = time_goal - end - end -end - --- This function is called when the game is initialized --- to request the available ammo and probabilities -function onAmmoStoreInit() - -- add an unlimited supply of shotgun ammo - SetAmmo(amSniperRifle, 9, 0, 0, 0) -end - --- This function is called when a new gear is added. --- We don't need it for this training, so we can --- keep it empty. -function onGearAdd(gear) -end - --- This function is called before a gear is destroyed. --- We use it to count the number of targets destroyed. -function onGearDelete(gear) - - if GetGearType(gear) == gtCase then - game_lost = true - return - end - - if (GetGearType(gear) == gtTarget) then - -- remember when the target was hit for adjusting the camera - last_hit_time = TurnTimeLeft - -- Add one point to our score/counter - score = score + 1 - -- If we haven't reached the goal ... - if score < score_goal then - -- ... spawn another target. - if score == 1 then - spawnTarget(1520,1350) - elseif score == 2 then - spawnTarget(1730,1040) - elseif score == 3 then - spawnTarget(2080,780) - elseif score == 4 then - blowUp(1730,1226) - blowUp(1440,1595) - blowUp(1527,1575) - blowUp(1614,1595) - blowUp(1420,1675) - blowUp(1527,1675) - blowUp(1634,1675) - blowUp(1440,1755) - blowUp(1527,1775) - blowUp(1614,1755) - spawnTarget(1527,1667) - elseif score == 5 then - spawnTarget(1527,1667) - elseif score == 6 then - spawnTarget(2175,1300) - elseif score == 7 then - spawnTarget(2250,940) - elseif score == 8 then - spawnTarget(2665,1540) - elseif score == 9 then - spawnTarget(3040,1160) - elseif score == 10 then - spawnTarget(2930,1500) - elseif score == 11 then - spawnTarget(700,720) - elseif score == 12 then - blowUp(914,1222) - blowUp(1050,1222) - blowUp(1160,1008) - blowUp(1160,1093) - blowUp(1160,1188) - blowUp(375,911) - blowUp(510,911) - blowUp(640,911) - blowUp(780,911) - blowUp(920,911) - blowUp(1060,913) - blowUp(1198,913) - spawnTarget(1200,730) - elseif score == 13 then - spawnTarget(1200,830) - elseif score == 14 then - spawnTarget(1430,450) - elseif score == 15 then - spawnTarget(796,240) - elseif score == 16 then - spawnTarget(300,10) - elseif score == 17 then - spawnTarget(2080,820) - elseif score == 18 then - blowUp(2110,920) - blowUp(2210,920) - blowUp(2200,305) - blowUp(2300,305) - blowUp(2300,400) - blowUp(2300,500) - blowUp(2300,600) - blowUp(2300,700) - blowUp(2300,800) - blowUp(2300,900) - blowUp(2401,305) - blowUp(2532,305) - blowUp(2663,305) - spawnTarget(2300,760) - elseif score == 19 then - spawnTarget(2300,760) - elseif score == 20 then - spawnTarget(2738,190) - elseif score == 21 then - spawnTarget(2590,-100) - elseif score == 22 then - blowUp(2790,305) - blowUp(2930,305) - blowUp(3060,305) - blowUp(3190,305) - blowUp(3310,305) - blowUp(3393,613) - blowUp(2805,370) - blowUp(2805,500) - blowUp(2805,630) - blowUp(2805,760) - blowUp(2805,890) - blowUp(2700,890) - blowUp(3258,370) - blowUp(3258,475) - blowUp(3264,575) - spawnTarget(3230,240) - elseif score == 23 then - spawnTarget(3230,290) - elseif score == 24 then - spawnTarget(3670,250) - elseif score == 25 then - spawnTarget(2620,-100) - elseif score == 26 then - spawnTarget(2870,300) - elseif score == 27 then - spawnTarget(3850,900) - elseif score == 28 then - spawnTarget(3780,300) - elseif score == 29 then - spawnTarget(3670,0) - elseif score == 30 then - spawnTarget(3480,1200) - end - else - if not game_lost then - -- Otherwise show that the goal was accomplished - ShowMission(loc(caption), loc(subcaption), loc(success), 0, 0); - -- Also let the hogs shout "victory!" - PlaySound(sndVictory) - -- Save the time left so we may keep it. - time_goal = TurnTimeLeft - end - end - end -end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Dangerous_Ducklings.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,158 @@ + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + + +local player = nil -- This variable will point to the hog's gear +local instructor = nil +local enemy = nil +--local givenSpeech = false + +local speechStage = 0 + +local gameLost = false +local gameWon = false +local notListening = false + +local endTimer = 0 + +function onGameInit() + + -- Things we don't modify here will use their default values. + + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack -- Game settings and rules + TurnTime = 60000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + Explosives = 0 -- The number of explosives being placed + Delay = 0 -- The delay between each round + Map = "Bath" -- The map to be played + Theme = "Bath" -- The theme to be used + + + AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + + --AddTeam("Instructors", 14483456, "Simple", "Island", "Default") + instructor = AddHog(loc("Instructor"), 1, 1, "Vega") + + AddTeam("Blue Team", 29439, "Simple", "Island", "Default") + enemy = AddHog("Filthy Blue", 1, 100, "Skull") + + SetGearPosition(player, 1170, 1926) + SetGearPosition(instructor, 1341, 1926) + SetGearPosition(enemy, 2942, 1861) + + + HogSay(player, ".............................", SAY_THINK) + HogTurnLeft(instructor, true) + + +end + + +function onGameStart() + + SpawnAmmoCrate(1499,1500,amRope) + SpawnAmmoCrate(2753,1500,amFirePunch) + + FollowGear(player) + + --spawnTarget() + + -- Show some nice mission goals. + -- Parameters are: caption, sub caption, description, + -- extra text, icon and time to show. + -- A negative icon parameter (-n) represents the n-th weapon icon + -- A positive icon paramter (n) represents the (n+1)-th mission icon + -- A timeframe of 0 is replaced with the default time to show. + ShowMission(loc("Dangerous Ducklings"), loc("by mikade"), loc("Eliminate the Blue Team"), -amRope, 1); + +end + + +function onGameTick() + + + -- opening speech + if (notListening == false) and (gameLost == false) then + + if (TurnTimeLeft == 58000) and (speechStage == 0) then + HogSay(instructor, loc("Listen up, maggot!!"), SAY_SHOUT) + speechStage = 1 + elseif (TurnTimeLeft == 57000) and (speechStage == 1) then + HogSay(player,loc("!!!"),SAY_SHOUT) + elseif (TurnTimeLeft == 55000) and (speechStage == 1) then + HogSay(instructor, loc("The enemy is hiding out on yonder ducky!"), SAY_SAY) + speechStage = 2 + + elseif (TurnTimeLeft == 49000) and (speechStage == 2) then + FollowGear(enemy) + elseif (TurnTimeLeft == 46500) and (speechStage == 2) then + FollowGear(instructor) + HogSay(instructor, loc("Get on over there and take him out!"), SAY_SAY) + speechStage = 3 + elseif (TurnTimeLeft == 43500) and (speechStage == 3) then + HogSay(instructor, loc("GO! GO! GO!"), SAY_SHOUT) + speechStage = 4 + givenSpeech = true + end + + end + + + -- if player falls in water or if player ignores speech + if (CurrentHedgehog ~= nil) and (CurrentHedgehog == player) then + if (GetY(player) > 2060) and (gameLost == false) then + HogSay(instructor, loc("DAMMIT, ROOKIE!"), SAY_SHOUT) + gameLost = true + end + + if (GetX(player) > 1324) and (GetY(player) > 1908) and (notListening == false) and (speechStage < 3) then + HogSay(instructor, loc("DAMMIT, ROOKIE! GET OFF MY HEAD!"), SAY_SHOUT) + notListening = true + end + + end + + --player out of time + if (TurnTimeLeft == 1) and (gameWon == false) then + SetHealth(player, 0) + end + + -- meh + if gameLost == true then + endTimer = endTimer + 1 + if (CurrentHedgehog ~= nil) and (CurrentHedgehog == instructor) then + if endTimer >= 3000 then + SetHealth(instructor,0) + TurnTimeLeft = 0 + end + ShowMission(loc("MISSION FAILED"), loc(":("), loc("You've failed. Try again."), -amRope, 1); + end + end + +end + + +function onAmmoStoreInit() + SetAmmo(amFirePunch, 0, 0, 0, 1) + SetAmmo(amParachute, 1, 0, 0, 0) + SetAmmo(amRope, 0, 0, 0, 1) +end + +function onGearDelete(gear) + if GetGearType(gear) == gtHedgehog then + if gear == player then + gameLost = true + elseif gear == instructor then + HogSay(player, loc("See ya!"), SAY_THINK) + TurnTimeLeft = 3000 + elseif gear == enemy then + HogSay(player, loc("Enjoy the swim..."), SAY_THINK) + gameWon = true + TurnTimeLeft = 3000 + end + + end +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,96 @@ + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local player = nil -- This variable will point to the hog's gear +local enemy = nil + +local GameOver = false + +function onGameInit() + + -- Things we don't modify here will use their default values. + + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack + gfDisableWind-- Game settings and rules + TurnTime = 90000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + MinesTime = 1000 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "Hydrant" -- The map to be played + Theme = "City" -- The theme to be used + + AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + + AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") + enemy = AddHog(loc("Poison"), 1, 100, "Skull") + + SetGearPosition(player, 1454, 1540) + SetGearPosition(enemy, 2488, 1960) + +end + + +function onGameStart() + + + SpawnAmmoCrate(1450,1910,amJetpack) + SpawnAmmoCrate(2568,1714,amFirePunch) + SpawnAmmoCrate(1974,1875,amBlowTorch) + SpawnAmmoCrate(2056,1877,amParachute) + + AddGear(1603, 1320, gtMine, 0, 0, 0, 0) + + ShowMission(loc("Operation Diver"), loc("by mikade"), loc("Eliminate Poison before the time runs out") .. loc("|- Mines Time:") .. " " .. 1 .. " " .. loc("sec"), -amFirePunch, 0); + --SetTag(AddGear(0, 0, gtATSmoothWindCh, 0, 0, 0, 1), -70) + + SetWind(-100) + +end + + +function onGameTick() + + + if (TotalRounds == 3) and (GameOver == false) then + SetHealth(player, 0) + GameOver = true + end + + if TurnTimeLeft == 1 then + SetHealth(player, 0) + GameOver = true + end + +end + + +function onAmmoStoreInit() + SetAmmo(amFirePunch, 1, 0, 0, 1) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amGirder, 1, 0, 0, 0) + SetAmmo(amParachute, 0, 0, 0, 1) + SetAmmo(amJetpack, 0, 0, 0, 1) +end + + +function onGearAdd(gear) + + if GetGearType(gear) == gtJetpack then + SetHealth(gear,1000) + end + +end + +function onGearDelete(gear) + + if (gear == enemy) and (GameOver == false) then + ShowMission(loc("Operation Diver"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + elseif gear == player then + ShowMission(loc("Operation Diver"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + GameOver = true + end + +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Spooky_Tree.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,152 @@ + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +--------------------------------------------------------------- + +local player = nil -- This variable will point to the hog's gear +local instructor = nil +local enemy = nil + +local GameOver = false +local birdSpeech = false +local birdSqualk = false + +local GirderCrate = nil + +function onGameInit() + + -- Things we don't modify here will use their default values. + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack +gfDisableWind-- Game settings and rules + TurnTime = 90000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + MinesTime = 1 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "Tree" -- The map to be played + Theme = "Halloween" -- The theme to be used + + AddTeam(loc("Bloody Rookies"), 14483456, "Simple", "Island", "Default") + player = AddHog(loc("Hunter"), 0, 1, "NoHat") + --852718 + AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") + enemy = AddHog(loc("Poison"), 1, 10, "Skull") + + SetGearPosition(player, 1994, 1047) + SetGearPosition(enemy, 1522, 1830) + +end + + +function onGameStart() + + --right side mines + AddGear(2705, 1383, gtMine, 0, 0, 0, 0) + AddGear(2742, 1542, gtMine, 0, 0, 0, 0) + AddGear(2672, 1551, gtMine, 0, 0, 0, 0) + AddGear(2608, 1546, gtMine, 0, 0, 0, 0) + + --tunnel mines + AddGear(1325, 1593, gtSMine, 0, 0, 0, 0) + AddGear(1396, 1632, gtSMine, 0, 0, 0, 0) + AddGear(1477, 1652, gtSMine, 0, 0, 0, 0) + AddGear(1548, 1635, gtSMine, 0, 0, 0, 0) + AddGear(1637, 1635, gtSMine, 0, 0, 0, 0) + + AddGear(1332, 1510, gtSMine, 0, 0, 0, 0) + AddGear(1396, 1502, gtSMine, 0, 0, 0, 0) + AddGear(1477, 1490, gtSMine, 0, 0, 0, 0) + AddGear(1548, 1495, gtSMine, 0, 0, 0, 0) + AddGear(1637, 1490, gtSMine, 0, 0, 0, 0) + + --above the tunnel mines + AddGear(1355, 1457, gtMine, 0, 0, 0, 0) + AddGear(1428, 1444, gtMine, 0, 0, 0, 0) + AddGear(1508, 1448, gtMine, 0, 0, 0, 0) + AddGear(1586, 1441, gtMine, 0, 0, 0, 0) + AddGear(1664, 1436, gtMine, 0, 0, 0, 0) + + -- crates crates and more crates + SpawnAmmoCrate(2232,1600,amBlowTorch) + SpawnAmmoCrate(2491,1400,amPickHammer) + SpawnUtilityCrate(1397,1189,amGirder) + SpawnUtilityCrate(1728,1647,amJetpack) + SpawnUtilityCrate(2670,1773,amLaserSight) + + SpawnAmmoCrate(1769,1442,amShotgun) --shotgun1 + SpawnAmmoCrate(1857,1456,amFirePunch) --fire punch + GirderCrate = SpawnAmmoCrate(2813,1538,amShotgun) -- final shotgun + SpawnAmmoCrate(2205,1443,amBee) + + ShowMission(loc("Spooky Tree"), loc("by mikade"), loc("Eliminate all enemies") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), -amBee, 0) + + SetWind(-75) + +end + + +function onGameTick() + + + if CurrentHedgehog ~= nil then + + if (birdSqualk == false) and (GetX(CurrentHedgehog) == 2126) and (GetY(CurrentHedgehog) == 1157) then + birdSqualk = true + PlaySound(sndBirdyLay) + end + + if (birdSpeech == false) and (GetX(CurrentHedgehog) == 2092) and (GetY(CurrentHedgehog) == 1186) then + birdSpeech = true + HogSay(player,loc("Good birdy......"),SAY_THINK) + end + end + + if CurrentHedgehog ~= nil then + --AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog)) + end + + if (TotalRounds == 2) and (GameOver == false) then -- just in case + SetHealth(player, 0) + GameOver = true + end + + if TurnTimeLeft == 1 then + --ShowMission(loc(caption), loc(subcaption), loc(timeout), -amSkip, 0); + SetHealth(player, 0) + GameOver = true + end + +end + + +function onAmmoStoreInit() + SetAmmo(amShotgun, 0, 0, 0, 1) + SetAmmo(amFirePunch, 0, 0, 0, 1) + SetAmmo(amBee, 0, 0, 0, 1) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amGirder, 0, 0, 0, 1) + SetAmmo(amParachute, 1, 0, 0, 1) + SetAmmo(amPickHammer, 0, 0, 0, 1) + SetAmmo(amJetpack, 0, 0, 0, 1) + SetAmmo(amLaserSight, 0, 0, 0, 1) +end + +function onGearDelete(gear) + + if gear == GirderCrate then + TurnTimeLeft = TurnTimeLeft + 30000 + end + + if GetGearType(gear) == gtCase then + TurnTimeLeft = TurnTimeLeft + 5000 + end + + if (gear == enemy) and (GameOver == false) then + ShowMission(loc("Spooky Tree"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0); + elseif gear == player then + ShowMission(loc("Spooky Tree"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + GameOver = true + end + +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Teamwork.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,119 @@ +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local player = nil -- This variable will point to the hog's gear +local p2 = nil +local enemy = nil +local bCrate = nil + +local GameOver = false + +function onGameInit() + + -- Things we don't modify here will use their default values. + Seed = 0 -- The base number for the random number generator + GameFlags = gfDisableWind-- Game settings and rules + SuddenDeathTurns = 9999 + TurnTime = 30000 -- The time the player has to move each round (in ms) + CaseFreq = 0 -- The frequency of crate drops + MinesNum = 0 -- The number of mines being placed + MinesTime = 1 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "Mushrooms" -- The map to be played + Theme = "Nature" -- The theme to be used + + AddTeam(loc("Feeble Resistance"), 14483456, "Simple", "Island", "Default") + player = AddHog(string.format(loc("Pathetic Hog #%d"), 1), 0, 50, "NoHat") + p2 = AddHog(string.format(loc("Pathetic Hog #%d"), 2), 0, 20, "NoHat") + + --AddTeam("Toxic Team", 1175851, "Simple", "Island", "Robot","cm_binary") + AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Robot", "cm_binary") + enemy = AddHog(loc("Unit 3378"), 5, 30, "cyborg") + + SetGearPosition(player, 2427, 1259) + SetGearPosition(p2, 2293, 1263) + SetGearPosition(enemy, 1516, 1519) + +end + + +function onGameStart() + + --mines + AddGear(1300, 1100, gtMine, 0, 0, 0, 0) + AddGear(1325, 1100, gtMine, 0, 0, 0, 0) + AddGear(1350, 1100, gtMine, 0, 0, 0, 0) + AddGear(1375, 1100, gtMine, 0, 0, 0, 0) + AddGear(1400, 1100, gtMine, 0, 0, 0, 0) + AddGear(1425, 1100, gtMine, 0, 0, 0, 0) + AddGear(1450, 1100, gtMine, 0, 0, 0, 0) + AddGear(1475, 1100, gtMine, 0, 0, 0, 0) + AddGear(1500, 1100, gtMine, 0, 0, 0, 0) + + AddGear(1910, 1380, gtMine, 0, 0, 0, 0) + AddGear(1925, 1380, gtMine, 0, 0, 0, 0) + AddGear(1950, 1380, gtMine, 0, 0, 0, 0) + AddGear(1975, 1380, gtMine, 0, 0, 0, 0) + AddGear(2000, 1380, gtMine, 0, 0, 0, 0) + AddGear(2025, 1380, gtMine, 0, 0, 0, 0) + + -- crates crates and more crates + bCrate = SpawnAmmoCrate(2712,1500,amBaseballBat) + SpawnUtilityCrate(1596,1167,amGirder) + SpawnAmmoCrate(2728,1978,amPickHammer) + SpawnAmmoCrate(1728,1647,amBlowTorch) + SpawnUtilityCrate(2567,1768,amJetpack) + SpawnAmmoCrate(1251,1466,amDrill) + + ShowMission(loc("Codename: Teamwork"), loc("by mikade"), loc("- Eliminate Unit 3378 |- Feeble Resistance must survive") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), 0, 0) + +end + + +function onGameTick() + + --if CurrentHedgehog ~= nil then + -- AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog)) + --end + +end + + +function onAmmoStoreInit() + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amGirder, 0, 0, 0, 1) + SetAmmo(amPickHammer, 0, 0, 0, 2) + SetAmmo(amJetpack, 0, 0, 0, 1) + SetAmmo(amDrill, 0, 0, 0, 2) + SetAmmo(amBaseballBat, 0, 0, 0, 1) + SetAmmo(amSwitch, 9, 0, 0, 0) + SetAmmo(amSkip, 9, 0, 0, 0) +end + +function onGearDamage(gear, damage) + if (gear == player) and (damage == 30) then + HogSay(player,loc("T_T"),SAY_SHOUT) + end +end + +function onGearDelete(gear) + + if gear == bCrate then + HogSay(CurrentHedgehog, loc("Hmmm..."), SAY_THINK) + end + + if GetGearType(gear) == gtCase then + TurnTimeLeft = TurnTimeLeft + 5000 + end + + if (gear == enemy) and (GameOver == false) then + ShowMission(loc("Codename: Teamwork"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + GameOver = true + elseif ( ((gear == player) or (gear == p2)) and (GameOver == false)) then + ShowMission(loc("Codename: Teamwork"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + GameOver = true + SetHealth(p2,0) + SetHealth(player,0) + end + +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,7 @@ +file(GLOB luafiles *.lua) + +install(FILES + ${luafiles} + DESTINATION ${SHAREPATH}Data/Scripts) + +add_subdirectory(Multiplayer)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Locale.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,10 @@ +local lang = loadfile(GetDataPath() .. "Locale/" .. tostring(L) .. ".lua") +if lang ~= nil then + lang() +end + +function loc(text) + if lang ~= nil and locale ~= nil and locale[text] ~= nil then return locale[text] + else return text + end +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,7 @@ +file(GLOB luafiles *.lua) +file(GLOB cfgfiles *.cfg) + +install(FILES + ${luafiles} + ${cfgfiles} + DESTINATION ${SHAREPATH}Data/Scripts/Multiplayer)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,2 @@ +Default +Default
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,597 @@ +-------------------------------- +-- CAPTURE_THE_FLAG_CUSTOM 0.3 +-- by mikade +-------------------------------- + +-- Version History +--------- +-- 0.1 +--------- + +-- [conversion from map-dependant CTF_Blizzard to map independant Capture the Flag] +-- added an intial starting stage where flagspawn is decided by the players (weapon set will require a jetpack unless I set) +-- changed the flag from a crate to a visual gear, and all associated methods and checks relating to flags (five hours later, lol) +-- changed starting/respawning positioning to accommodate different map sizes +-- added another circle to mark flag spawn +-- added gameFlag filter +-- changed scoring feedback +-- cleaned up some code + +-- removing own flag from spawning point no longer possible +-- destroying flags no longer possible. +-- added basic glowing circle effect to spawn area +-- added expanding circle to fgear itself + +-- removed teleporters +-- removed random crate drops (this should be decided by scheme) +-- removed set map criteria like minesNum, turnTime, explosives etc. except for sudden death +-- removed weapon defintions +-- removed placement and respawning methods, hopefully divideTeams will have this covered + +--------- +-- 0.2 +--------- + +-- [now with user friendliness] +-- flag is now placed wherever you end up at the end of your first turn, this ensures that it is always placed by turn 3 +-- removed a bunch of backup code and no-longer needed variables / methods from CTF_Blizzard days +-- removed an aura that was still mistakenly hanging about +-- added an in-game note about placements +-- added an in-game note about the rules of the game +-- added translation support and loc()'ed everything +-- changed things so the seed is no longer always the same... + +-- In this version: +--------- +-- 0.3 +--------- +-- [fufufufu kamikaze fix] +-- added nill checks to make sure the player doesn't generate errors by producing a nil value in hhs[] when he uses kamikaze +-- added a check to make sure the player doesn't kamikaze straight down and make the flag's starting point underwater +-- added a check to make sure the player drops the flag if he has it and he uses kamikaze + +----------------- +--SCRIPT BEGINS +----------------- + +-- enable awesome translaction support so we can use loc() wherever we want +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +--------------------------------------------------------------- +----------lots of bad variables and things +----------because someone is too lazy +----------to read about tables properly +------------------ "Oh well, they probably have the memory" + +local gameStarted = false +local gameTurns = 0 + +-------------------------- +-- hog and team tracking variales +-------------------------- + +local numhhs = 0 -- store number of hedgehogs +local hhs = {} -- store hedgehog gears + +local numTeams -- store the number of teams in the game +local teamNameArr = {} -- store the list of teams +local teamSize = {} -- store how many hogs per team +local teamIndex = {} -- at what point in the hhs{} does each team begin + +------------------- +-- flag variables +------------------- + +local fPlaced = {} -- has the flag been placed TRUE/FALSE + +local fGear = {} -- pointer to the visual gears that represent the flag +local fGearX = {} +local fGearY = {} + +local fThief = {} -- pointer to the hogs who stole the flags +local fIsMissing = {} -- have the flags been destroyed or captured +local fNeedsRespawn = {} -- do the flags need to be respawned +local fCaptures = {} -- the team "scores" how many captures +local fSpawnX = {} -- spawn X for flags +local fSpawnY = {} -- spawn Y for flags + +local fThiefX = {} +local fThiefY = {} +local FTTC = 0 -- flag thief tracker counter + +local fSpawnC = {} -- spawn circle marker +local fCirc = {} -- flag/carrier marker circles +local fCol = {} -- colour of the clans + +local fGearRad = 0 +local fGearRadMin = 5 +local fGearRadMax = 33 +local fGearTimer = 0 + +------------------------ +--flag methods +------------------------ + +function CheckScore(teamID) + + if teamID == 0 then + alt = 1 + elseif teamID == 1 then + alt = 0 + end + + if fCaptures[teamID] == 3 then + for i = 0, (numhhs-1) do + if hhs[i] ~= nil then + if GetHogClan(hhs[i]) == alt then + SetEffect(hhs[i], heResurrectable, false) + SetHealth(hhs[i],0) + end + end + end + if CurrentHedgehog ~= nil then + ShowMission(loc("GAME OVER!"), loc("Victory for the ") .. GetHogTeamName(CurrentHedgehog), loc("Hooray!"), 0, 0) + end + end + +end + +function DoFlagStuff(gear) + + if (gear == fGear[0]) then + wtf = 0 + bbq = 1 + elseif (gear == fGear[1]) then + wtf = 1 + bbq = 0 + end + + -- player has successfully captured the enemy flag + if (GetHogClan(CurrentHedgehog) == wtf) and (CurrentHedgehog == fThief[bbq]) and (fIsMissing[wtf] == false) then + + DeleteVisualGear(fGear[wtf]) + fGear[wtf] = nil -- the flag has now disappeared + + fIsMissing[wtf] = false + fNeedsRespawn[wtf] = true + fIsMissing[bbq] = false + fNeedsRespawn[bbq] = true + fCaptures[wtf] = fCaptures[wtf] +1 + ShowMission(loc("You have SCORED!!"), GetHogTeamName(CurrentHedgehog) .. ": " .. fCaptures[wtf], loc("Opposing Team: ") .. fCaptures[bbq], 0, 0) + PlaySound(sndVictory) + fThief[bbq] = nil -- player no longer has the enemy flag + CheckScore(wtf) + + --if the player is returning the flag + elseif (GetHogClan(CurrentHedgehog) == wtf) and (fIsMissing[wtf] == true) then + + DeleteVisualGear(fGear[wtf]) + fGear[wtf] = nil -- the flag has now disappeared + + fNeedsRespawn[wtf] = true + HandleRespawns() -- this will set fIsMissing[wtf] to false :) + AddCaption(loc("Flag returned!")) + + --if the player is taking the enemy flag + elseif GetHogClan(CurrentHedgehog) == bbq then + + DeleteVisualGear(fGear[wtf]) + fGear[wtf] = nil -- the flag has now disappeared + + fIsMissing[wtf] = true + for i = 0,numhhs-1 do + if CurrentHedgehog ~= nil then + if CurrentHedgehog == hhs[i] then + fThief[wtf] = hhs[i] + end + end + end + AddCaption(loc("Flag captured!")) + + --below line doesnt usually get called + --else + -- now gets called if you go over your own flag, presumably + --AddCaption("Hmm... that wasn't supposed to happen...") + end + +end + +function CheckFlagProximity() + + for i = 0, 1 do + if fGear[i] ~= nil then + + g1X = fGearX[i] + g1Y = fGearY[i] + + g2X, g2Y = GetGearPosition(CurrentHedgehog) + + q = g1X - g2X + w = g1Y - g2Y + dist = (q*q) + (w*w) + + if dist < 500 then --1600 + DoFlagStuff(fGear[i]) + end + end + end + +end + + +function HandleRespawns() + + for i = 0, 1 do + + if fNeedsRespawn[i] == true then + fGear[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + fGearX[i] = fSpawnX[i] + fGearY[i] = fSpawnY[i] + --fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip) + fNeedsRespawn[i] = false + fIsMissing[i] = false -- new, this should solve problems of a respawned flag being "returned" when a player tries to score + AddCaption(loc("Flag respawned!")) + end + + end + +end + + +function FlagThiefDead(gear) + + if (gear == fThief[0]) then + wtf = 0 + bbq = 1 + elseif (gear == fThief[1]) then + wtf = 1 + bbq = 0 + end + + if fThief[wtf] ~= nil then + -- falls into water + --ShowMission(LAND_HEIGHT, fThiefY[wtf], (LAND_HEIGHT - fThiefY[wtf]), 0, 0) + if (LAND_HEIGHT - fThiefY[wtf]) < 15 then + fIsMissing[wtf] = true + fNeedsRespawn[wtf] = true + HandleRespawns() + --AddCaption("hah??") + else --normally + fGearX[wtf] = fThiefX[wtf] + fGearY[wtf] = fThiefY[wtf] + fGear[wtf] = AddVisualGear(fGearX[wtf],fGearY[wtf],vgtCircle,0,true) + --fGear[wtf] = AddVisualGear(fThiefX[wtf],fThiefY[wtf],vgtCircle,0,true) + end + + AddVisualGear(fThiefX[wtf], fThiefY[wtf], vgtBigExplosion, 0, false) + fThief[wtf] = nil + end + +end + +function HandleCircles() + + fGearTimer = fGearTimer + 1 + if fGearTimer == 50 then + fGearTimer = 0 + fGearRad = fGearRad + 1 + if fGearRad > fGearRadMax then + fGearRad = fGearRadMin + end + end + + for i = 0, 1 do + + --SetVisualGearValues(fSpawnC[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 50, 3, fCol[i]) -- draw a circ for spawning area + + if fIsMissing[i] == false then -- draw a flag marker at the flag's spawning place + SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 20, 0, 10, 0, 33, 3, fCol[i]) + if fGear[i] ~= nil then -- draw the flag gear itself + SetVisualGearValues(fGear[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, fGearRad, 2, fCol[i]) + end + elseif (fIsMissing[i] == true) and (fNeedsRespawn[i] == false) then + if fThief[i] ~= nil then -- draw circle round flag carrier + SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], 20, 200, 0, 0, 100, 33, 3, fCol[i]) + --AddCaption("circle marking carrier") + elseif fThief[i] == nil then -- draw cirle round dropped flag + --g1X,g1Y,g4,g5,g6,g7,g8,g9,g10,g11 = GetVisualGearValues(fGear[i]) + --SetVisualGearValues(fCirc[i], g1X, g1Y, 20, 200, 0, 0, 100, 33, 2, fCol[i]) + SetVisualGearValues(fCirc[i], fGearX[i], fGearY[i], 20, 200, 0, 0, 100, 33, 3, fCol[i]) + --AddCaption('dropped circle marker') + if fGear[i] ~= nil then -- flag gear itself + --SetVisualGearValues(fGear[i], g1X, g1Y, 20, 200, 0, 0, 100, 10, 4, fCol[i]) + SetVisualGearValues(fGear[i], fGearX[i], fGearY[i], 20, 200, 0, 0, 100, fGearRad, 2, fCol[i]) + --AddCaption('dropped flag itself') + end + end + end + + if fNeedsRespawn[i] == true then -- if the flag has been destroyed, no need for a circle + SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 0, 0, fCol[i]) + --AddCaption("needs respawn = true. flag 'destroyed'?") + end + end + +end + +------------------------ +-- general methods +------------------------ + +function CheckDistance(gear1, gear2) + + g1X, g1Y = GetGearPosition(gear1) + g2X, g2Y = GetGearPosition(gear2) + + g1X = g1X - g2X + g1Y = g1Y - g2Y + z = (g1X*g1X) + (g1Y*g1Y) + + dist = z + + return dist + +end + +function RebuildTeamInfo() + + + -- make a list of individual team names + for i = 0, 5 do + teamNameArr[i] = i + teamSize[i] = 0 + teamIndex[i] = 0 + end + numTeams = 0 + + for i = 0, (numhhs-1) do + + z = 0 + unfinished = true + while(unfinished == true) do + + newTeam = true + tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name + + if tempHogTeamName == teamNameArr[z] then + newTeam = false + unfinished = false + end + + z = z + 1 + + if z == TeamsCount then + unfinished = false + if newTeam == true then + teamNameArr[numTeams] = tempHogTeamName + numTeams = numTeams + 1 + end + end + + end + + end + + -- find out how many hogs per team, and the index of the first hog in hhs + for i = 0, numTeams-1 do + + for z = 0, numhhs-1 do + if GetHogTeamName(hhs[z]) == teamNameArr[i] then + if teamSize[i] == 0 then + teamIndex[i] = z -- should give starting index + end + teamSize[i] = teamSize[i] + 1 + --add a pointer so this hog appears at i in hhs + end + end + + end + +end + +function StartTheGame() + + gameStarted = true + AddCaption(loc("Game Started!")) + + for i = 0, 1 do + + -- if someone uses kamikaze downwards, this can happen as the hog won't respawn + if (LAND_HEIGHT - fSpawnY[i]) < 0 then + tempG = AddGear(0, 0, gtTarget, 0, 0, 0, 0) + FindPlace(tempG, true, 0, LAND_WIDTH, true) + fSpawnX[i], fSpawnY[i] = GetGearPosition(tempG) + DeleteGear(tempG) + end + + fGear[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + fSpawnC[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + + fGearX[i] = fSpawnX[i] + fGearY[i] = fSpawnY[i] + + fCol[i] = GetClanColor(i) + fIsMissing[i] = false + fNeedsRespawn[i] = false + fCaptures[i] = 0 + + --SetVisualGearValues(zxc, 1000,1000, 20, 100, 0, 10, 1, 100, 5, GetClanColor(0)) + + SetVisualGearValues(fSpawnC[i], fSpawnX[i],fSpawnY[i], 20, 100, 0, 10, 0, 75, 5, fCol[i]) + --SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 20, 0, 10, 0, 33, 3, fCol[i]) + + + end + +end + +------------------------ +-- game methods +------------------------ + +function onGameInit() + + -- Things we don't modify here will use their default values. + + GameFlags = band(bor(GameFlags, gfDivideTeams), bnot(gfKing + gfForts)) + SuddenDeathTurns = 99 -- suddendeath is off, effectively + --TurnTime = 30000 -- (was 30) The time the player has to move each round (in ms) + --Delay = 10 -- The delay between each round + +end + + +function onGameStart() + + --ShowMission(loc(caption), loc(subcaption), loc(goal), 0, 0) + ShowMission(loc("CAPTURE THE FLAG"), loc("by mikade"), loc("CUSTOM BUILD 0.2"), 0, 0) + + RebuildTeamInfo() + + -- should gfDivideTeams do this automatically? + --[[for i = 0, (TeamsCount-1) do + for g = teamIndex[i], (teamIndex[i]+teamSize[i]-1) do + if GetHogClan(hhs[g]) == 0 then + FindPlace(hhs[g], false, 0, LAND_WIDTH/2) + elseif GetHogClan(hhs[g]) == 1 then + FindPlace(hhs[g], false, LAND_WIDTH/2, LAND_WIDTH) + end + end + end]] + + fPlaced[0] = false + fPlaced[1] = false + + --zxc = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) + + + --SetVisualGearValues(zxc, 1000,1000, 20, 255, 1, 10, 0, 200, 1, GetClanColor(0)) + --minO,max0 -glowyornot --pulsate timer -- fuckall -- radius -- width -- colour +end + + +function onNewTurn() + + gameTurns = gameTurns + 1 + + if lastTeam ~= GetHogTeamName(CurrentHedgehog) then + lastTeam = GetHogTeamName(CurrentHedgehog) + end + + --AddCaption("Handling respawns") + if gameStarted == true then + HandleRespawns() + --new method of placing starting flags + elseif gameTurns == 1 then + ShowMission(loc("CAPTURE THE FLAG"), loc("Flags will be placed where each team ends their turn."), "", 0, 0) + elseif gameTurns == 2 then + fPlaced[0] = true + ShowMission(loc("CAPTURE THE FLAG"), loc("RULES OF THE GAME [Press ESC to view]"), loc(" - 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"), 0, 0) + elseif gameTurns == 3 then + fPlaced[1] = true + StartTheGame() + end + +end + +function onGameTick() + + -- onRessurect calls AFTER you have resurrected, + -- so keeping track of x,y a few milliseconds before + -- is useful + --FTTC = FTTC + 1 + --if FTTC == 100 then + -- FTTC = 0 + for i = 0,1 do + if fThief[i] ~= nil then + fThiefX[i] = GetX(fThief[i]) + fThiefY[i] = GetY(fThief[i]) + end + end + --end + + -- things we wanna check often + if (CurrentHedgehog ~= nil) then + --AddCaption(LAND_HEIGHT - GetY(CurrentHedgehog)) + --AddCaption(GetX(CurrentHedgehog) .. "; " .. GetY(CurrentHedgehog)) + --CheckTeleporters() + + end + + if gameStarted == true then + HandleCircles() + if CurrentHedgehog ~= nil then + CheckFlagProximity() + end + elseif CurrentHedgehog ~= nil then -- if the game hasn't started yet, keep track of where we are gonna put the flags on turn end + + if GetHogClan(CurrentHedgehog) == 0 then + i = 0 + elseif GetHogClan(CurrentHedgehog) == 1 then + i = 1 + end + + fSpawnX[i] = GetX(CurrentHedgehog) + fSpawnY[i] = GetY(CurrentHedgehog) + + end + +end + +function onGearResurrect(gear) + + --AddCaption("A gear has been resurrected!") + + -- mark the flag thief as dead if he needed a respawn + for i = 0,1 do + if gear == fThief[i] then + FlagThiefDead(gear) + end + end + + -- should be covered by gfDivideTeams, actually + -- place hogs belonging to each clan either left or right side of map + --if GetHogClan(gear) == 0 then + -- FindPlace(gear, false, 0, LAND_WIDTH/2) + --elseif GetHogClan(gear) == 1 then + -- FindPlace(gear, false, LAND_WIDTH/2, LAND_WIDTH) + --end + + AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) + +end + +function onGearDamage(gear, damage) +-- +end + +function onGearAdd(gear) + + if GetGearType(gear) == gtHedgehog then + hhs[numhhs] = gear + numhhs = numhhs + 1 + SetEffect(gear, heResurrectable, true) + end + +end + +function onGearDelete(gear) + + if GetGearType(gear) == gtHedgehog then + --AddCaption("gear deleted!") + for i = 0, (numhhs-1) do + if gear == hhs[i] then + + for i = 0,1 do + if gear == fThief[i] then + FlagThiefDead(gear) + end + end + hhs[i] = nil + --AddCaption("for real") + end + end + end + +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/No_Jumping.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,2 @@ +Default +Default
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/No_Jumping.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,16 @@ +-------------------------------- +-- NO JUMPING +-------------------------------- + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +function onGameStart() + ShowMission(loc("NO JUMPING"), loc("- Jumping is disabled"), loc("Good luck out there!"), 0, 0) +end + +function onNewTurn() + SetInputMask(band(0xFFFFFFFF, bnot(gmLJump + gmHJump))) +end + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,2 @@ +Default +locked
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,54 @@ +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local weapons = { amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, + amMine, amDEagle, amDynamite, amFirePunch, amWhip, amPickHammer, + amBaseballBat, amTeleport, amMortar, amCake, amSeduction, + amWatermelon, amHellishBomb, amDrill, amBallgun, amRCPlane, + amSniperRifle, amMolotov, amBirdy, amBlowTorch, amGasBomb, + amFlamethrower, amSMine, amHammer, amSnowball } + +local airweapons = { amAirAttack, amMineStrike, amNapalm, amDrillStrike } + + +function onGameInit() + GameFlags = band(bor(GameFlags, gfResetWeps), bnot(gfInfAttack + gfPerHogAmmo)) +end + +function onGameStart() + if MapHasBorder() == false then + for i, w in pairs(airweapons) do + table.insert(weapons, w) + end + end + + ShowMission(loc("Random Weapons"), loc("A game of luck"), loc("There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"), -amSkip, 0) +end + +function onAmmoStoreInit() + SetAmmo(amSkip, 9, 0, 0, 0) + + SetAmmo(amParachute, 0, 1, 0, 1) + SetAmmo(amGirder, 0, 1, 0, 2) + SetAmmo(amSwitch, 0, 1, 0, 1) + SetAmmo(amLowGravity, 0, 1, 0, 1) + SetAmmo(amExtraDamage, 0, 1, 0, 1) + SetAmmo(amInvulnerable, 0, 1, 0, 1) + SetAmmo(amExtraTime, 0, 1, 0, 1) + SetAmmo(amLaserSight, 0, 1, 0, 1) + SetAmmo(amVampiric, 0, 1, 0, 1) + SetAmmo(amJetpack, 0, 1, 0, 1) + SetAmmo(amPortalGun, 0, 1, 0, 1) + SetAmmo(amResurrector, 0, 1, 0, 1) + + for i, w in pairs(weapons) do + SetAmmo(w, 0, 0, 0, 1) + end + + for i, w in pairs(airweapons) do + SetAmmo(w, 0, 0, 0, 1) + end +end + +function onNewTurn() + AddAmmo(CurrentHedgehog, weapons[GetRandom(table.maxn(weapons)) + 1]) +end
--- a/share/hedgewars/Data/Themes/Art/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Art/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,11 @@ -7 13 40 -13 17 22 -$01 $3b $66 -$01 $3b $66 $80 -Art.ogg -0 -4 -Soup -3 3 220 130 18 1 0 0 142 150 -Mona -2 0 190 191 8 1 0 0 191 150 -Schrei -1 0 345 130 1 1 0 0 160 175 -Zeit -2 0 153 45 5 1 90 20 106 105 -0 -0 -30 0 0 0 +sky = 7, 13, 40 +border = 13, 17, 22 +water-top = $01, $3b, $66 +water-bottom = $01, $3b, $66 +water-opacity = $80 +music = Art.ogg +clouds = 0 +object = Soup, 3, 3, 220, 130, 18, 1, 0, 0, 142, 150 +object = Mona, 2, 0, 190, 191, 8, 1, 0, 0, 191, 150 +object = Schrei, 1, 0, 345, 130, 1, 1, 0, 0, 160, 175 +object = Zeit, 2, 0, 153, 45, 5, 1, 90, 20, 106, 105
--- a/share/hedgewars/Data/Themes/Bamboo/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Bamboo/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,12 @@ -117 141 186 -143 171 80 -$54 $5C $9D -$34 $3C $7D $80 -oriental.ogg -9 -4 -Flower -3 65 258 80 2 1 0 0 240 215 -Bamboo -3 65 258 80 2 1 0 0 240 215 -Bamboo2 -3 65 258 80 2 1 0 0 240 215 -Bamboo3 -3 65 258 80 2 1 0 0 240 215 -0 -100 -1 1000 50 50 +sky = 117, 141, 186 +border = 143, 171, 80 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = oriental.ogg +clouds = 9 +object = Flower, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = Bamboo, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = Bamboo2, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = Bamboo3, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +flakes = 100, 1, 1000, 50, 50
--- a/share/hedgewars/Data/Themes/Bath/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Bath/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,22 +1,14 @@ -255 255 237 -173 182 247 -$54 $5C $9D -$34 $3C $7D $80 -bath.ogg -15 -6 -Toothbrush -3 120 245 8 15 1 90 6 65 220 -Toothbrush_g -3 85 243 10 11 1 89 13 97 211 -Toothbrush_b -3 113 245 8 15 1 84 6 66 218 -Duck -3 102 253 20 4 1 48 142 150 107 -Duck2 -3 50 94 16 4 1 5 15 101 72 -Bubble -3 37 78 3 2 1 0 0 77 44 -0 -100 -1 0 0 10 +sky = 255, 255, 237 +border = 173, 182, 247 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = bath.ogg +clouds = 15 +object = Toothbrush, 3, 120, 245, 8, 15, 1, 90, 6, 65, 220 +object = Toothbrush_g, 3, 85, 243, 10, 11, 1, 89, 13, 97, 211 +object = Toothbrush_b, 3, 113, 245, 8, 15, 1, 84, 6, 66, 218 +object = Duck, 3, 102, 253, 20, 4, 1, 48, 142, 150, 107 +object = Duck2, 3, 50, 94, 16, 4, 1, 5, 15, 101, 72 +object = Bubble, 3, 37, 78, 3, 2, 1, 0, 0, 77, 44 +flakes = 100, 1, 0, 0, 10
--- a/share/hedgewars/Data/Themes/Blox/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Blox/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,10 +1,8 @@ -179 243 243 -128 128 128 -$54 $5C $9D -$34 $3C $7D $80 -Nature.ogg -0 -0 -0 -100 -2 500 100 300 +sky = 179, 243, 243 +border = 128, 128, 128 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = Nature.ogg +clouds = 0 +flakes = 100, 2, 500, 100, 300
--- a/share/hedgewars/Data/Themes/Brick/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Brick/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,35 +1,21 @@ -11 21 80 -155 155 155 -$51 $5B $60 -$22 $2F $36 $80 -Brick.ogg -9 -9 -plant1 -1 83 215 92 35 1 0 0 250 190 -plant2 -2 0 115 70 40 1 8 0 60 100 -plant3 -2 0 115 70 40 1 8 0 60 100 -plant4 -2 20 200 25 5 1 0 0 70 140 -plant5 -2 240 22 17 43 1 8 21 227 80 -plant6 -1 83 225 92 25 1 0 0 250 200 -plant7 -2 20 200 25 5 1 0 0 70 140 -plant8 -5 45 0 10 10 1 0 50 109 155 -plant9 -2 20 200 25 5 1 0 0 70 140 -3 -spray1 -2 -spray2 -2 -spray3 -2 -0 -20 -30 50 50 250 +sky = 11, 21, 80 +border = 155, 155, 155 +water-top = $51, $5B, $60 +water-bottom = $22, $2F, $36 +water-opacity = $80 +music = Brick.ogg +clouds = 9 +object = plant1, 1, 83, 215, 92, 35, 1, 0, 0, 250, 190 +object = plant2, 2, 0, 115, 70, 40, 1, 8, 0, 60, 100 +object = plant3, 2, 0, 115, 70, 40, 1, 8, 0, 60, 100 +object = plant4, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140 +object = plant5, 2, 240, 22, 17, 43, 1, 8, 21, 227, 80 +object = plant6, 1, 83, 225, 92, 25, 1, 0, 0, 250, 200 +object = plant7, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140 +object = plant8, 5, 45, 0, 10, 10, 1, 0, 50, 109, 155 +object = plant9, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140 +spray = spray1, 2 +spray = spray2, 2 +spray = spray3, 2 +;Should this theme have flakes? they where disabled +;flakes = 20, 30, 50, 50, 250
--- a/share/hedgewars/Data/Themes/CMakeLists.txt Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -7,6 +7,7 @@ Cake Castle Cheese + Christmas Deepspace City CrazyMission
--- a/share/hedgewars/Data/Themes/Cake/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Cake/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,12 @@ -0 0 51 -255 200 90 -$FF $DF $E1 -$FF $DF $E1 $80 -snow.ogg -9 -4 -plant1 -3 83 215 92 35 1 0 0 250 190 -plant2 -3 118 115 41 20 1 0 0 159 110 -plant3 -3 0 115 70 40 1 8 0 60 100 -plant4 -3 20 200 25 5 1 0 0 70 150 -0 -20 -100 0 30 250 +sky = 0, 0, 51 +border = 255, 200, 90 +water-top = $FF, $DF, $E1 +water-bottom = $FF, $DF, $E1 +water-opacity = $80 +music = snow.ogg +clouds = 9 +object = plant1, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190 +object = plant2, 3, 118, 115, 41, 20, 1, 0, 0, 159, 110 +object = plant3, 3, 0, 115, 70, 40, 1, 8, 0, 60, 100 +object = plant4, 3, 20, 200, 25, 5, 1, 0, 0, 70, 150 +flakes = 20, 100, 0, 30, 250
--- a/share/hedgewars/Data/Themes/Castle/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Castle/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,12 @@ -45 53 57 -145 145 145 -81 91 96 -81 91 96 $80 -Castle.ogg -5 -4 -Spear -3 65 258 175 2 1 0 0 240 215 -Shield -3 0 165 163 2 1 0 0 163 140 -Sword -3 240 22 17 43 1 8 21 227 80 -Axe -3 25 195 90 65 1 40 5 195 175 -0 -25 -3 99999999 0 750 +sky = 45, 53, 57 +border = 145, 145, 145 +water-top = 81, 91, 96 +water-bottom = 81, 91, 96 +water-opacity = $80 +music = Castle.ogg +clouds = 5 +object = Spear, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215 +object = Shield, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140 +object = Sword, 3, 240, 22, 17, 43, 1, 8, 21, 227, 80 +object = Axe, 3, 25, 195, 90, 65, 1, 40, 5, 195, 175 +flakes = 25, 3, 99999999, 0, 750
--- a/share/hedgewars/Data/Themes/Cheese/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Cheese/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,19 +1,12 @@ -16 5 27 -240 175 32 -$54 $5C $9D -$34 $3C $7D $80 -EarthRise.ogg -9 -5 -cheese -3 60 80 55 30 1 0 0 140 70 -mouseright -3 85 162 60 20 1 6 6 200 140 -mouseleft -3 60 162 63 20 1 6 6 200 140 -knife -3 90 130 50 20 1 140 0 160 110 -fork -3 240 130 10 30 1 0 0 170 120 -0 -0 +sky = 16, 5, 27 +border = 240, 175, 32 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = EarthRise.ogg +clouds = 9 +object = cheese, 3, 60, 80, 55, 30, 1, 0, 0, 140, 70 +object = mouseright, 3, 85, 162, 60, 20, 1, 6, 6, 200, 140 +object = mouseleft, 3, 60, 162, 63, 20, 1, 6, 6, 200, 140 +object = knife, 3, 90, 130, 50, 20, 1, 140, 0, 160, 110 +object = fork, 3, 240, 130, 10, 30, 1, 0, 0, 170, 120
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Christmas/Ball.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,500 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Themes/Snow/Ball.png" + inkscape:version="0.48.0 r9654" + version="1.1" + id="svg2" + height="174.48601" + width="166.29604" + sodipodi:docname="Ball.svg"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4142136" + inkscape:cx="80.36706" + inkscape:cy="129.02805" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1280" + inkscape:window-height="948" + inkscape:window-x="-4" + inkscape:window-y="-3" + inkscape:window-maximized="1" + fit-margin-top="15" + fit-margin-left="15" + fit-margin-right="15" + fit-margin-bottom="15" /> + <defs + id="defs4"> + <pattern + inkscape:stockid="Polka dots, medium" + id="Polkadots-med" + patternTransform="translate(0,0) scale(10,10)" + height="10" + width="10" + patternUnits="userSpaceOnUse" + inkscape:collect="always"> + <circle + id="circle4775" + r="0.15" + cy="0.810" + cx="2.567" + style="fill:black;stroke:none" /> + <circle + id="circle4777" + r="0.15" + cy="2.33" + cx="3.048" + style="fill:black;stroke:none" /> + <circle + id="circle4779" + r="0.15" + cy="2.415" + cx="4.418" + style="fill:black;stroke:none" /> + <circle + id="circle4781" + r="0.15" + cy="3.029" + cx="1.844" + style="fill:black;stroke:none" /> + <circle + id="circle4783" + r="0.15" + cy="1.363" + cx="6.08" + style="fill:black;stroke:none" /> + <circle + id="circle4785" + r="0.15" + cy="4.413" + cx="5.819" + style="fill:black;stroke:none" /> + <circle + id="circle4787" + r="0.15" + cy="4.048" + cx="4.305" + style="fill:black;stroke:none" /> + <circle + id="circle4789" + r="0.15" + cy="3.045" + cx="5.541" + style="fill:black;stroke:none" /> + <circle + id="circle4791" + r="0.15" + cy="5.527" + cx="4.785" + style="fill:black;stroke:none" /> + <circle + id="circle4793" + r="0.15" + cy="5.184" + cx="2.667" + style="fill:black;stroke:none" /> + <circle + id="circle4795" + r="0.15" + cy="1.448" + cx="7.965" + style="fill:black;stroke:none" /> + <circle + id="circle4797" + r="0.15" + cy="5.049" + cx="7.047" + style="fill:black;stroke:none" /> + <circle + id="circle4799" + r="0.15" + cy="0.895" + cx="4.340" + style="fill:black;stroke:none" /> + <circle + id="circle4801" + r="0.15" + cy="0.340" + cx="7.125" + style="fill:black;stroke:none" /> + <circle + id="circle4803" + r="0.15" + cy="1.049" + cx="9.553" + style="fill:black;stroke:none" /> + <circle + id="circle4805" + r="0.15" + cy="2.689" + cx="7.006" + style="fill:black;stroke:none" /> + <circle + id="circle4807" + r="0.15" + cy="2.689" + cx="8.909" + style="fill:black;stroke:none" /> + <circle + id="circle4809" + r="0.15" + cy="4.407" + cx="9.315" + style="fill:black;stroke:none" /> + <circle + id="circle4811" + r="0.15" + cy="3.870" + cx="7.820" + style="fill:black;stroke:none" /> + <circle + id="circle4813" + r="0.15" + cy="5.948" + cx="8.270" + style="fill:black;stroke:none" /> + <circle + id="circle4815" + r="0.15" + cy="7.428" + cx="7.973" + style="fill:black;stroke:none" /> + <circle + id="circle4817" + r="0.15" + cy="8.072" + cx="9.342" + style="fill:black;stroke:none" /> + <circle + id="circle4819" + r="0.15" + cy="9.315" + cx="8.206" + style="fill:black;stroke:none" /> + <circle + id="circle4821" + r="0.15" + cy="9.475" + cx="9.682" + style="fill:black;stroke:none" /> + <circle + id="circle4823" + r="0.15" + cy="6.186" + cx="9.688" + style="fill:black;stroke:none" /> + <circle + id="circle4825" + r="0.15" + cy="6.296" + cx="3.379" + style="fill:black;stroke:none" /> + <circle + id="circle4827" + r="0.15" + cy="8.204" + cx="2.871" + style="fill:black;stroke:none" /> + <circle + id="circle4829" + r="0.15" + cy="8.719" + cx="4.59" + style="fill:black;stroke:none" /> + <circle + id="circle4831" + r="0.15" + cy="9.671" + cx="3.181" + style="fill:black;stroke:none" /> + <circle + id="circle4833" + r="0.15" + cy="7.315" + cx="5.734" + style="fill:black;stroke:none" /> + <circle + id="circle4835" + r="0.15" + cy="6.513" + cx="6.707" + style="fill:black;stroke:none" /> + <circle + id="circle4837" + r="0.15" + cy="9.670" + cx="5.730" + style="fill:black;stroke:none" /> + <circle + id="circle4839" + r="0.15" + cy="8.373" + cx="6.535" + style="fill:black;stroke:none" /> + <circle + id="circle4841" + r="0.15" + cy="7.154" + cx="4.37" + style="fill:black;stroke:none" /> + <circle + id="circle4843" + r="0.15" + cy="7.25" + cx="0.622" + style="fill:black;stroke:none" /> + <circle + id="circle4845" + r="0.15" + cy="5.679" + cx="0.831" + style="fill:black;stroke:none" /> + <circle + id="circle4847" + r="0.15" + cy="8.519" + cx="1.257" + style="fill:black;stroke:none" /> + <circle + id="circle4849" + r="0.15" + cy="6.877" + cx="1.989" + style="fill:black;stroke:none" /> + <circle + id="circle4851" + r="0.15" + cy="3.181" + cx="0.374" + style="fill:black;stroke:none" /> + <circle + id="circle4853" + r="0.15" + cy="1.664" + cx="1.166" + style="fill:black;stroke:none" /> + <circle + id="circle4855" + r="0.15" + cy="0.093" + cx="1.151" + style="fill:black;stroke:none" /> + <circle + id="circle4857" + r="0.15" + cy="10.093" + cx="1.151" + style="fill:black;stroke:none" /> + <circle + id="circle4859" + r="0.15" + cy="4.451" + cx="1.302" + style="fill:black;stroke:none" /> + <circle + id="circle4861" + r="0.15" + cy="3.763" + cx="3.047" + style="fill:black;stroke:none" /> + </pattern> + <linearGradient + id="linearGradient5294" + osb:paint="solid"> + <stop + style="stop-color:#d6cda8;stop-opacity:1;" + offset="0" + id="stop5296" /> + </linearGradient> + <filter + inkscape:collect="always" + id="filter5306" + color-interpolation-filters="sRGB"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.365" + id="feGaussianBlur5308" /> + </filter> + </defs> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + transform="translate(-212.23005,-401.7896)" + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Capa 1"> + <path + transform="matrix(0.91975398,0,0,0.91975398,22.211138,104.12914)" + d="m 370,422.94403 c 0,40.31679 -32.68321,73 -73,73 -40.31679,0 -73,-32.68321 -73,-73 0,-40.31679 32.68321,-73 73,-73 40.31679,0 73,32.68321 73,73 z" + sodipodi:ry="73" + sodipodi:rx="73" + sodipodi:cy="422.94403" + sodipodi:cx="297" + id="path2993" + style="color:#000000;fill:#ff1333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.17449450000000022;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + transform="matrix(0.84031947,0,0,0.84031947,48.729821,134.14847)" + d="m 370,422.94403 c 0,40.31679 -32.68321,73 -73,73 -40.31679,0 -73,-32.68321 -73,-73 0,-40.31679 32.68321,-73 73,-73 40.31679,0 73,32.68321 73,73 z" + sodipodi:ry="73" + sodipodi:rx="73" + sodipodi:cy="422.94403" + sodipodi:cx="297" + id="path4863" + style="color:#000000;fill:#db001e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.38004708;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + transform="matrix(0.75568304,0,0,0.75568304,74.628784,166.46039)" + d="m 370,422.94403 c 0,40.31679 -32.68321,73 -73,73 -40.31679,0 -73,-32.68321 -73,-73 0,-40.31679 32.68321,-73 73,-73 40.31679,0 73,32.68321 73,73 z" + sodipodi:ry="73" + sodipodi:rx="73" + sodipodi:cy="422.94403" + sodipodi:cx="297" + id="path4861" + style="color:#000000;fill:#ba1128;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64661217;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#db001e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00033593;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4865" + sodipodi:cx="297" + sodipodi:cy="422.94403" + sodipodi:rx="73" + sodipodi:ry="73" + d="m 370,422.94403 c 0,40.31679 -32.68321,73 -73,73 -40.31679,0 -73,-32.68321 -73,-73 0,-40.31679 32.68321,-73 73,-73 40.31679,0 73,32.68321 73,73 z" + transform="matrix(0.66659203,0,0,0.66659203,102.27796,201.54903)" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#ff1333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.33197927;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4859" + sodipodi:cx="297" + sodipodi:cy="422.94403" + sodipodi:rx="73" + sodipodi:ry="73" + d="m 370,422.94403 c 0,40.31679 -32.68321,73 -73,73 -40.31679,0 -73,-32.68321 -73,-73 0,-40.31679 32.68321,-73 73,-73 40.31679,0 73,32.68321 73,73 z" + transform="matrix(0.46168275,0,0,0.46168275,167.0382,279.00707)" /> + <path + style="color:#000000;fill:#db001e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.1744945;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 306.5,356.94403 c 0,0 -2.73266,4.32937 -2.20392,6.58181 1.53,6.51778 7.72953,11.28629 14.18584,14.21842 10.56187,4.79667 15.53801,1.93885 17.83576,1.25408 2.29775,-0.68477 5.05732,-6.05431 5.05732,-6.05431 z" + id="path4867" + inkscape:connector-curvature="0" + transform="matrix(0.91975398,0,0,0.91975398,22.211138,104.12914)" + sodipodi:nodetypes="caszcc" /> + <path + sodipodi:nodetypes="caszcc" + transform="matrix(0.85354994,0,0,0.85354994,43.51081,128.58694)" + inkscape:connector-curvature="0" + id="path2992" + d="m 305.28774,355.86647 c 0,0 -1.16087,2.07446 -0.8691,3.11082 2.03786,7.23833 10.05772,12.43679 16.51403,15.36892 10.56187,4.79667 16.72498,2.68395 19.02273,1.99918 2.29775,-0.68477 2.49716,-3.53606 2.49716,-3.53606 z" + style="color:#000000;fill:#ba1128;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.34315515;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#4e0202;stroke-width:2.17449450000000022;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4596" + sodipodi:cx="297" + sodipodi:cy="422.94403" + sodipodi:rx="73" + sodipodi:ry="73" + d="m 370,422.94403 c 0,40.31679 -32.68321,73 -73,73 -40.31679,0 -73,-32.68321 -73,-73 0,-40.31679 32.68321,-73 73,-73 40.31679,0 73,32.68321 73,73 z" + transform="matrix(0.91975398,0,0,0.91975398,22.211138,104.12914)" /> + <path + sodipodi:type="arc" + style="opacity:0.07999998;color:#000000;fill:url(#Polkadots-med);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.1744945;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5306);enable-background:accumulate" + id="path3782" + sodipodi:cx="297" + sodipodi:cy="422.94403" + sodipodi:rx="73" + sodipodi:ry="73" + d="m 370,422.94403 a 73,73 0 1 1 -146,0 73,73 0 1 1 146,0 z" + transform="matrix(0.91975398,0,0,0.91975398,22.211138,104.12914)" /> + <path + style="color:#000000;fill:#d6cda8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.17449450000000022;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 313.53125,348.15625 -7.0625,13.21875 c -1.57064,3.36111 4.47808,9.50282 13.5,13.71875 8.91328,4.16516 17.40727,4.91175 19.125,1.6875 l 7.0625,-13.25 c -1.71773,3.22425 -10.21172,2.50891 -19.125,-1.65625 -9.02192,-4.21593 -15.07064,-10.35764 -13.5,-13.71875 z" + transform="matrix(0.91975397,0,0,0.91975397,23.590775,99.530366)" + id="path4835" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#e9ddaf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.17449450000000022;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3763" + sodipodi:cx="330.57242" + sodipodi:cy="326.79236" + sodipodi:rx="18.031223" + sodipodi:ry="6.7175145" + d="m 348.60364,326.79236 c 0,3.70998 -8.07285,6.71751 -18.03122,6.71751 -9.95837,0 -18.03123,-3.00753 -18.03123,-6.71751 0,-3.70998 8.07286,-6.71752 18.03123,-6.71752 9.95837,0 18.03122,3.00754 18.03122,6.71752 z" + transform="matrix(0.83326358,0.38938306,-0.38938306,0.83326358,178.77915,25.740395)" /> + <path + style="color:#000000;fill:#cdbd83;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 113.25 22.625 L 116.78125 25.96875 L 130 30.875 C 129.98824 30.177813 129.74247 29.40851 129.28125 28.59375 L 113.25 22.625 z M 103.6875 25.25 C 104.97035 26.350122 106.52355 27.460563 108.25 28.5 L 120.5 30 L 117.25 26.9375 L 103.6875 25.25 z " + transform="translate(212.23005,401.7896)" + id="path4531" /> + <path + style="fill:#f6f1de;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" + d="M 104.8125 16 C 102.21698 15.965977 100.35076 16.616266 99.71875 17.96875 C 98.861017 19.804264 100.50076 22.517173 103.6875 25.25 L 117.875 27 L 113.25 22.625 L 129.28125 28.59375 C 127.60613 25.634583 123.16214 22.079323 117.375 19.375 C 112.7074 17.193838 108.14959 16.043744 104.8125 16 z " + transform="translate(212.23005,401.7896)" + id="path4526" /> + <path + style="fill:#eae5d2;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 122.15625 33.75 L 115.8125 45.9375 C 117.16213 46.126689 118.40845 46.150605 119.46875 46.0625 L 125.84375 33.90625 C 124.77101 33.985804 123.51411 33.946798 122.15625 33.75 z " + transform="translate(212.23005,401.7896)" + id="path4562" /> + <path + style="fill:#b4aa88;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 100.53125 21.8125 L 94.03125 33.96875 C 95.891195 36.830268 100.16907 40.18585 105.65625 42.75 C 106.74463 43.258598 107.8139 43.697179 108.875 44.09375 L 114.65625 31.65625 C 113.82719 31.329725 112.99985 30.956714 112.15625 30.5625 C 106.66907 27.99835 102.39119 24.674018 100.53125 21.8125 z " + transform="translate(212.23005,401.7896)" + id="path4557" /> + <path + style="fill:#eae5d2;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" + d="M 101.8125 23.46875 L 95.3125 35.59375 C 97.079312 37.539404 99.776333 39.59705 103.0625 41.40625 L 109.4375 29.1875 C 106.21619 27.400212 103.55754 25.385175 101.8125 23.46875 z " + transform="translate(212.23005,401.7896)" + id="path4547" /> + <g + id="g4549" + style="color:#000000;fill:#d6cda8;fill-opacity:1;fill-rule:nonzero;stroke:#2a2626;stroke-width:2.1744945;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0.83326358,0.38938306,-0.38938306,0.83326358,178.77915,25.740395)" /> + <path + inkscape:connector-curvature="0" + id="path4590" + transform="matrix(0.91975397,0,0,0.91975397,23.590775,99.530366)" + d="m 313.53125,348.15625 -7.0625,13.21875 c -1.57064,3.36111 4.47808,9.50282 13.5,13.71875 8.91328,4.16516 17.40727,4.91175 19.125,1.6875 l 7.0625,-13.25 c -1.71773,3.22425 -10.21172,2.50891 -19.125,-1.65625 -9.02192,-4.21593 -15.07064,-10.35764 -13.5,-13.71875 z" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2a2626;stroke-width:2.17449450000000022;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + transform="matrix(0.83326358,0.38938306,-0.38938306,0.83326358,178.77915,25.740395)" + d="m 348.60364,326.79236 c 0,3.70998 -8.07285,6.71751 -18.03122,6.71751 -9.95837,0 -18.03123,-3.00753 -18.03123,-6.71751 0,-3.70998 8.07286,-6.71752 18.03123,-6.71752 9.95837,0 18.03122,3.00754 18.03122,6.71752 z" + sodipodi:ry="6.7175145" + sodipodi:rx="18.031223" + sodipodi:cy="326.79236" + sodipodi:cx="330.57242" + id="path4539" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#3f3939;stroke-width:2.17449450000000022;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Christmas/CMakeLists.txt Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,6 @@ +file(GLOB images *.png) + +install(FILES + theme.cfg + ${images} + DESTINATION ${SHAREPATH}Data/Themes/Christmas)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Christmas/CandyCane.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + version="1.1" + inkscape:version="0.48.0 r9654" + width="170" + height="110" + sodipodi:docname="CandyCane.svg" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Themes/Snow/CandyCane.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1280" + inkscape:window-height="948" + id="namedview4" + showgrid="false" + inkscape:zoom="1" + inkscape:cx="-11.109747" + inkscape:cy="170.919" + inkscape:window-x="-4" + inkscape:window-y="-3" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" /> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6" /> + <path + transform="matrix(0.99996682,-0.00814622,0.00814622,0.99996682,-3.3250037,2.002064)" + style="fill:#ffe1e1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1" + d="M 98.945902,20.95956 C 119.53592,6.7381361 133.54015,-2.6399103 159.17362,19.150707 184.80709,40.941324 161.17973,70.957752 133.32243,98.7382 123.66781,108.36618 110.58735,93.615078 118.05668,85.309841 144.29781,56.13203 154.61929,44.026158 144.31113,35.263349 134.00297,26.500539 127.886,25.729792 110.52359,37.721927 93.161179,49.714062 18.617925,101.20072 -0.60318179,114.47664 -10.678193,121.4354 -22.3913,104.76657 -12.180867,97.714276 7.3379658,84.232713 78.355886,35.180983 98.945902,20.95956 z" + id="path2983" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zzsszzssz" /> + <path + style="fill:#e3d5d5;fill-opacity:1;stroke:none" + d="M 127.15625 21.375 C 126.89507 21.371633 126.64149 21.392663 126.375 21.40625 C 122.11109 21.623643 116.52003 24.230901 108 30.21875 L -2.5 107.84375 C -5.4843107 109.94111 -8.8395619 110.36152 -11.75 109.53125 C -14.398774 108.77563 -16.660875 107.09061 -18.34375 104.96875 C -20.174482 112.63703 -11.009819 122.09802 -3 116.46875 L 107.5 38.8125 C 124.76414 26.679325 130.90205 27.415203 141.28125 36.09375 C 141.50532 36.281108 141.70133 36.465481 141.90625 36.65625 C 142.3059 35.343614 142.47152 34.195063 142.4375 33.1875 C 142.36279 30.975088 141.46413 29.247347 139.1875 27.34375 C 134.44886 23.381548 131.07393 21.425499 127.15625 21.375 z M 167.15625 40.96875 C 166.51749 43.247034 165.70191 45.548915 164.6875 47.84375 C 158.38922 62.091976 145.46614 76.751128 131.59375 90.8125 C 128.84251 93.601215 125.53429 94.798363 122.46875 94.625 C 119.40321 94.451637 116.65888 92.991481 114.5625 90.9375 C 114.19935 90.581695 113.85527 90.203771 113.53125 89.8125 C 111.3404 98.069719 122.46535 108.11711 130.8125 99.65625 C 150.27388 79.929757 167.61527 59.095736 167.15625 40.96875 z " + id="path3769" /> + <path + style="fill:#ec0000;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + d="M 126.4375 7.28125 C 125.77508 7.3061172 125.09316 7.3861625 124.40625 7.46875 C 124.23779 7.4924953 124.07426 7.5045298 123.90625 7.53125 C 121.66503 7.8877012 119.44577 8.4763869 117.25 9.3125 C 117.17593 9.3407065 117.10531 9.377552 117.03125 9.40625 C 116.67437 9.5511789 116.33284 9.7130739 115.96875 9.875 C 115.76066 9.9622204 115.55186 10.034087 115.34375 10.125 C 114.26835 10.626305 113.17338 11.216397 112.03125 11.875 C 115.37822 11.722262 121.68172 14.274721 125.4375 18.21875 C 129.19327 22.162779 129.41762 26.616298 131.78125 29.0625 L 135.65625 32.03125 C 137.44334 33.075966 139.2895 34.428355 141.28125 36.09375 C 141.76155 36.495349 142.16996 36.894508 142.5625 37.3125 L 144.28125 38.625 C 144.37775 35.224613 147.11426 31.736865 147.875 26.34375 C 148.6129 21.112553 147.28823 15.062813 145.34375 12.28125 C 144.99653 12.082207 144.6555 11.873915 144.3125 11.6875 C 138.63668 9.5404183 133.13081 7.0299849 126.4375 7.28125 z M 99.6875 19.78125 C 99.504725 19.783867 99.330423 19.799948 99.15625 19.8125 C 98.051563 20.580231 96.923489 21.353489 95.78125 22.15625 L 79.625 33.5 C 82.841408 33.534041 87.146995 35.010054 91.40625 36.6875 C 96.474123 38.68341 101.57156 40.775809 104.96875 40.59375 L 107.5 38.8125 C 113.62698 34.506479 118.33499 31.818161 122.34375 30.53125 L 123.78125 29.71875 C 120.44478 29.054732 116.81325 25.83336 111.9375 23.40625 C 107.67123 21.282528 102.99694 19.733858 99.6875 19.78125 z M 159.25 23.5 C 160.2092 26.710361 159.31671 34.348988 155.71875 38.4375 C 152.12081 42.526011 147.57205 43.019406 145.3125 45.5625 L 145.03125 46.0625 C 144.24967 50.035101 141.45105 54.846446 136.90625 60.90625 L 136.03125 62.53125 C 139.19664 61.285012 144.37059 61.912819 149.8125 61.6875 C 155.23098 61.463151 161.09876 59.530558 163.5 57.1875 C 163.50554 57.174855 163.52572 57.168894 163.53125 57.15625 C 167.07134 49.061197 168.26196 41.225399 166 33.96875 C 165.983 33.914211 165.95489 33.866976 165.9375 33.8125 C 164.49503 30.071697 162.16338 26.666787 159.25 23.5 z M 67.59375 41.96875 L 47.28125 56.25 C 50.534875 56.042868 55.06938 57.551766 59.65625 59.15625 C 64.797547 60.954672 69.987381 62.844562 73.375 62.53125 L 93.15625 48.59375 C 89.763264 48.842365 84.637305 46.833691 79.53125 44.9375 C 75.19919 43.328739 70.823343 41.92093 67.59375 41.96875 z M 35.75 64.78125 C 35.497007 64.792918 35.268515 64.811478 35.03125 64.84375 L 18.78125 76.28125 L 14.75 79.1875 C 14.954812 79.143772 15.1882 79.087814 15.40625 79.0625 L 15.5 79.0625 C 18.766753 78.723984 23.438947 80.346069 28.21875 82 C 33.030446 83.664966 37.87323 85.418378 41.25 85.375 C 41.259798 85.374874 41.271477 85.375156 41.28125 85.375 L 61.65625 71.03125 C 58.268217 71.330482 53.100833 69.432077 47.96875 67.65625 C 43.464803 66.097773 38.989544 64.631841 35.75 64.78125 z M 154.71875 72.1875 C 151.72111 73.663064 146.39271 73.801982 141.25 73.34375 C 135.82485 72.860352 130.46009 72.060652 127.21875 73.09375 L 123.375 77.3125 C 120.89955 80.151512 118.30255 83.105396 115.4375 86.34375 C 114.28103 87.650908 113.61795 89.128126 113.375 90.625 C 116.5715 90.410455 120.79203 91.011862 124.96875 91.5625 C 130.21774 92.254502 135.48061 92.79858 138.5625 91.53125 C 139.20961 90.836889 139.86384 90.133098 140.5 89.4375 L 152.75 74.875 C 153.42308 73.979915 154.08162 73.080343 154.71875 72.1875 z M 4.3125 87.4375 C 3.8494863 87.453321 3.409625 87.506294 3 87.59375 L -14.03125 99.34375 L -14.71875 99.8125 C -15.367219 100.26824 -15.931084 100.75712 -16.40625 101.28125 C -13.1208 100.91711 -8.3437597 102.60616 -3.53125 104.40625 C 1.0049669 106.10299 5.5660666 107.88941 8.90625 108.09375 L 29.09375 93.90625 C 25.735233 93.792011 21.072403 92.112257 16.5 90.46875 C 12.014967 88.856646 7.5535959 87.326753 4.3125 87.4375 z " + id="path4757" /> + <path + style="fill:#c00808;fill-opacity:1;stroke:none" + d="M 127.78125 21.40625 C 129.45749 24.37264 130.04456 27.265136 131.78125 29.0625 L 135.625 32 L 135.65625 32.03125 C 135.69779 32.055539 135.73966 32.069108 135.78125 32.09375 C 136.18946 32.335109 136.58442 32.601554 137 32.875 C 137.46083 33.180428 137.9341 33.497936 138.40625 33.84375 C 138.7306 34.081311 139.0439 34.306332 139.375 34.5625 C 140.00168 35.042727 140.62615 35.545992 141.28125 36.09375 C 141.4981 36.275064 141.71356 36.442723 141.90625 36.625 C 142.29937 35.32475 142.47126 34.187445 142.4375 33.1875 C 142.36279 30.975088 141.46413 29.247347 139.1875 27.34375 C 134.70614 23.596672 131.4358 21.649973 127.78125 21.40625 z M 115.5 25.40625 C 113.27406 26.679653 110.80289 28.248888 108 30.21875 L 96.1875 38.53125 C 99.538193 39.771221 102.65134 40.717943 104.96875 40.59375 L 107.5 38.8125 C 108.5915 38.045395 109.61949 37.353148 110.625 36.6875 C 111.05536 36.402716 111.42792 36.141554 111.84375 35.875 C 112.17269 35.663594 112.49239 35.481363 112.8125 35.28125 C 113.14193 35.075809 113.46076 34.849843 113.78125 34.65625 C 114.55908 34.184889 115.30307 33.777564 116.03125 33.375 C 116.14888 33.31016 116.25859 33.250573 116.375 33.1875 C 117.13957 32.772038 117.87849 32.402492 118.59375 32.0625 C 119.35336 31.701425 120.10171 31.371748 120.8125 31.09375 C 120.84425 31.081332 120.87459 31.074754 120.90625 31.0625 C 121.34117 30.894177 121.73771 30.731594 122.15625 30.59375 C 122.21726 30.573626 122.28307 30.550731 122.34375 30.53125 L 123.78125 29.71875 C 121.31489 29.2279 118.67222 27.338131 115.5 25.40625 z M 167.15625 40.96875 C 166.51749 43.247034 165.70191 45.548915 164.6875 47.84375 C 162.86979 51.95584 160.47236 56.093704 157.6875 60.25 C 160.15194 59.44919 162.24854 58.393617 163.46875 57.21875 C 163.47427 57.206164 163.49449 57.200085 163.5 57.1875 C 163.55421 57.063749 163.60313 56.936119 163.65625 56.8125 C 163.82307 56.424252 164.00034 56.043151 164.15625 55.65625 C 164.24289 55.440815 164.32308 55.21503 164.40625 55 C 164.52169 54.702276 164.64126 54.421871 164.75 54.125 C 164.86052 53.822854 164.95909 53.52003 165.0625 53.21875 C 165.26807 52.620976 165.44797 52.031501 165.625 51.4375 C 165.65621 51.332766 165.68844 51.229612 165.71875 51.125 C 166.03639 50.025998 166.31699 48.960176 166.53125 47.875 C 166.60874 47.487273 166.68621 47.104535 166.75 46.71875 C 166.76354 46.635725 166.76835 46.551684 166.78125 46.46875 C 166.84415 46.064281 166.89005 45.652258 166.9375 45.25 C 166.97353 44.944576 167.00429 44.647854 167.03125 44.34375 C 167.06725 43.945329 167.10487 43.552325 167.125 43.15625 C 167.1609 42.426154 167.17559 41.69046 167.15625 40.96875 z M 84.46875 46.75 L 64.46875 60.8125 C 67.887445 61.92869 71.053442 62.745965 73.375 62.53125 L 93.15625 48.59375 C 90.870721 48.761218 87.791172 47.906684 84.46875 46.75 z M 52.5 69.21875 L 32.28125 83.40625 C 35.65283 84.525556 38.832092 85.40606 41.25 85.375 L 61.65625 71.03125 C 59.278274 71.241273 56.003653 70.371718 52.5 69.21875 z M 154.6875 72.1875 C 152.9376 73.04096 150.38856 73.434453 147.5625 73.53125 C 142.64135 79.341922 137.19939 85.13049 131.59375 90.8125 C 131.10313 91.309804 130.58401 91.727668 130.0625 92.125 C 133.43046 92.403018 136.49498 92.381454 138.5625 91.53125 C 139.20961 90.836889 139.86384 90.133098 140.5 89.4375 L 152.59375 75.03125 C 152.63772 74.972938 152.70618 74.933304 152.75 74.875 C 153.11115 74.394734 153.46079 73.918617 153.8125 73.4375 C 153.94238 73.259946 154.05905 73.083713 154.1875 72.90625 C 154.36044 72.667319 154.5172 72.426253 154.6875 72.1875 z M 113.5625 89.84375 C 113.49685 90.092782 113.41666 90.342848 113.375 90.59375 C 113.37336 90.603654 113.37661 90.615094 113.375 90.625 C 113.65477 90.606222 113.95526 90.600608 114.25 90.59375 C 114.0157 90.348111 113.77929 90.104078 113.5625 89.84375 z M 20.3125 91.8125 L 0.34375 105.84375 C 3.5083706 106.98909 6.5292597 107.94833 8.90625 108.09375 L 29.09375 93.90625 C 26.670262 93.823816 23.570246 92.923422 20.3125 91.8125 z " + id="path3775" /> + <path + sodipodi:nodetypes="zzsszzssz" + inkscape:connector-curvature="0" + id="path4760" + d="M 98.945902,20.95956 C 119.53592,6.7381361 133.54015,-2.6399103 159.17362,19.150707 184.80709,40.941324 161.17973,70.957752 133.32243,98.7382 123.66781,108.36618 110.58735,93.615078 118.05668,85.309841 144.29781,56.13203 154.61929,44.026158 144.31113,35.263349 134.00297,26.500539 127.886,25.729792 110.52359,37.721927 93.161179,49.714062 18.617925,101.20072 -0.60318179,114.47664 -10.678193,121.4354 -22.3913,104.76657 -12.180867,97.714276 7.3379658,84.232713 78.355886,35.180983 98.945902,20.95956 z" + style="fill:none;stroke:#282828;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(0.99996682,-0.00814622,0.00814622,0.99996682,-3.3250037,2.002064)" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-1.6879333" + inkscape:original="M 129.90625 31.625 C 124.71475 31.54936 118.67158 34.366751 109.5 40.8125 L -1 118.46875 C -6.1179987 122.06566 -11.697927 119.50977 -14.59375 115.1875 C -14.464848 122.30188 -6.2525489 129.56581 1 124.46875 L 111.5 46.8125 C 128.76414 34.679325 134.90205 35.415203 145.28125 44.09375 C 146.05938 44.744384 146.70142 45.397879 147.25 46.09375 C 147.3334 43.002232 146.06139 40.41836 143.28125 38.09375 C 138.416 34.025681 134.48699 31.691737 129.90625 31.625 z M 168.6875 38.625 C 172.42046 57.72355 153.85284 80.329288 132.8125 101.65625 C 127.30526 107.23851 120.57767 104.76212 117.28125 100.0625 C 117.34975 107.71802 127.21785 115.35436 134.8125 107.65625 C 158.10113 84.050373 178.34756 58.874813 168.6875 38.625 z " + style="fill:#c8b7b7;stroke:none;fill-opacity:1" + id="path4769" + d="m 129.875,33.3125 c -4.56193,-0.06647 -10.33074,2.496767 -19.40625,8.875 l -110.5,77.65625 c -2.948982,2.07253 -6.2553688,2.4266 -9.09375,1.5625 -0.6845797,-0.20841 -1.246396,-0.64032 -1.875,-0.96875 0.702251,1.00118 1.5293709,1.91916 2.5,2.59375 2.5265643,1.75596 5.4588091,2.2218 8.53125,0.0625 l 110.5,-77.65625 c 8.7222,-6.129928 14.77896,-9.192335 20.34375,-9.46875 4.23039,-0.210133 7.93215,1.291258 11.78125,3.96875 -0.19773,-0.184195 -0.24668,-0.376815 -0.46875,-0.5625 -4.76591,-3.985006 -8.29087,-6.003909 -12.3125,-6.0625 z m 39.21875,21.09375 c -1.6176,5.212654 -4.25059,10.504627 -7.625,15.8125 -6.92259,10.889077 -16.91352,21.925978 -27.46875,32.625 -3.08259,3.12458 -6.79717,4.13405 -10.09375,3.53125 -1.0162,-0.18582 -1.96036,-0.56141 -2.875,-1 0.84044,1.10698 1.82126,2.12604 3,2.78125 2.88914,1.60595 6.24909,1.70272 9.59375,-1.6875 11.60537,-11.763465 22.40485,-23.903213 29.03125,-35.4375 3.3132,-5.767143 5.57087,-11.327652 6.4375,-16.625 z" + transform="translate(-3.6,-8.4)" /> + <path + style="fill:#800000;stroke:none" + d="M 129.65625 25.46875 C 130.02244 26.3205 130.40956 27.107951 130.84375 27.8125 C 133.66335 28.338331 136.33539 29.634229 139.0625 31.53125 C 138.86477 31.347055 138.81582 31.154435 138.59375 30.96875 C 135.19768 28.12913 132.42081 26.31383 129.65625 25.46875 z M 118.09375 27 C 114.97782 28.432203 111.34362 30.640718 106.875 33.78125 L 98.8125 39.46875 C 100.01443 39.855138 101.15731 40.142495 102.21875 40.34375 L 106.9375 37.03125 C 112.69653 32.983824 117.28313 30.297579 121.34375 28.84375 C 120.3175 28.352511 119.23129 27.706582 118.09375 27 z M 165.5 46 C 164.09681 50.521727 161.90872 55.119048 159.15625 59.71875 C 159.82398 59.454223 160.48856 59.175495 161.0625 58.875 C 163.27848 54.441035 164.82278 50.139544 165.5 46 z M 87.1875 47.625 L 67.25 61.625 C 68.520186 61.976796 69.706554 62.253557 70.8125 62.40625 L 90.6875 48.4375 C 89.601412 48.270328 88.432599 47.994943 87.1875 47.625 z M 55.25 70.0625 L 35.03125 84.28125 C 36.257916 84.639339 37.438034 84.896362 38.53125 85.09375 L 58.78125 70.875 C 57.68552 70.701052 56.495265 70.416951 55.25 70.0625 z M 152.0625 73.0625 C 151.25196 73.235192 150.36653 73.352995 149.4375 73.4375 C 144.35717 79.760359 138.5543 86.068715 132.5 92.28125 C 133.66586 92.315912 134.74714 92.264396 135.75 92.15625 C 141.77286 85.801577 147.40517 79.388122 152.125 73.0625 C 152.10471 73.066903 152.08288 73.058157 152.0625 73.0625 z M 23.0625 92.6875 L 3 106.78125 C 4.1749713 107.1624 5.3153737 107.45257 6.375 107.6875 L 26.46875 93.59375 C 25.39473 93.381549 24.254552 93.045495 23.0625 92.6875 z " + id="path4771" /> + <path + transform="translate(0,0.70710678)" + style="fill:#ffffff;stroke:none" + d="m 127.4375,8.40625 c -10.17898,0.3210867 -19.4565,6.659236 -30.96875,14.75 l -110.5,77.65625 c -1.984905,1.39498 -2.892619,3.11207 -3.1875,4.9375 0.416466,-0.40494 0.802477,-0.82906 1.3125,-1.1875 l 110.5,-77.65625 c 10.23987,-7.196544 18.93629,-13.304708 28.59375,-14.84375 9.65746,-1.539042 20.03846,1.677599 33.09375,12.59375 4.34574,3.633679 7.28852,7.581177 9.15625,11.71875 C 164.25746,30.841687 161.04839,25.655689 155.21875,20.78125 144.05869,11.449788 135.35594,8.1564696 127.4375,8.40625 z" + id="path2988" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccccsscss" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="0.3365728" + inkscape:original="M 143 55.875 C 138.06107 63.553841 129.67596 73.16956 117.9375 86.4375 C 116.98855 87.510098 116.454 88.674088 116.21875 89.875 C 126.21581 78.570107 133.88232 69.794646 138.75 62.9375 C 140.63507 60.28198 141.95698 57.987468 143 55.875 z " + style="fill:#ffffff;stroke:none" + id="path3765" + d="m 142.9375,55.53125 a 0.33660645,0.33660645 0 0 0 -0.21875,0.15625 c -4.91433,7.640588 -13.29356,17.264178 -25.03125,30.53125 -0.98746,1.116124 -1.56665,2.33871 -1.8125,3.59375 a 0.33660645,0.33660645 0 0 0 0.125,0.3125 0.33660645,0.33660645 0 0 0 0.40625,0.03125 0.33660645,0.33660645 0 0 0 0.0625,-0.0625 c 9.99775,-11.305675 17.67672,-20.086107 22.5625,-26.96875 1.89505,-2.66958 3.23108,-4.966809 4.28125,-7.09375 a 0.33660645,0.33660645 0 0 0 -0.0313,-0.34375 0.33660645,0.33660645 0 0 0 -0.34375,-0.15625 z" + transform="translate(0,0.707107)" /> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Christmas/Girder.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,347 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + version="1.1" + inkscape:version="0.48.0 r9654" + width="116" + height="18" + sodipodi:docname="Girder.svg" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Themes/Christmas/Girder.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + enable-background="new"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <linearGradient + id="linearGradient3957"> + <stop + style="stop-color:#ff53f4;stop-opacity:1;" + offset="0" + id="stop3959" /> + <stop + style="stop-color:#ff53f4;stop-opacity:0;" + offset="1" + id="stop3961" /> + </linearGradient> + <filter + inkscape:collect="always" + id="filter3950"> + <feBlend + inkscape:collect="always" + mode="lighten" + in2="BackgroundImage" + id="feBlend3952" /> + </filter> + <filter + inkscape:collect="always" + id="filter3987"> + <feBlend + inkscape:collect="always" + mode="darken" + in2="BackgroundImage" + id="feBlend3989" /> + </filter> + <filter + inkscape:collect="always" + id="filter4004"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="0.15522888" + id="feGaussianBlur4006" /> + </filter> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1183" + inkscape:window-height="723" + id="namedview4" + showgrid="false" + inkscape:zoom="5.6568542" + inkscape:cx="53.483092" + inkscape:cy="23.722394" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.60285324" + inkscape:original="M 11.6875 1.28125 C 9.8292093 1.3283952 7.9075827 1.5006408 6.15625 1.71875 C 2.6535845 2.1549684 -0.15625 2.75 -0.15625 2.75 A 1.5016267 1.5016267 0 1 0 0.46875 5.6875 C 0.46875 5.6875 3.1651154 5.106715 6.53125 4.6875 C 9.8973846 4.268285 13.978797 4.06676 16.21875 4.59375 C 17.211114 4.8272219 18.219801 5.5425736 19.375 6.4375 C 20.530199 7.3324264 21.809306 8.3996966 23.5625 8.90625 C 26.760949 9.8303834 30.101058 9.6729653 33.15625 9.28125 C 36.011172 8.9152119 38.508054 7.6321791 40.84375 6.59375 C 43.179446 5.5553209 45.298132 4.7562047 47.375 4.9375 C 47.824354 4.976725 48.400525 5.2899756 49.15625 5.8125 C 49.911975 6.3350244 50.809635 7.0506058 52.09375 7.375 C 55.351539 8.1979851 59.301604 9.0750475 62.9375 7.625 C 69.967805 4.8212139 74.688017 4.8982248 81.8125 5.875 C 86.959909 6.5807159 92.594301 8.8955375 98.53125 7.875 C 99.593497 7.6924039 100.30909 7.1224668 100.84375 6.75 C 101.37841 6.3775332 101.72551 6.2150259 101.90625 6.1875 C 102.55157 6.089219 103.41814 6.3253362 104.53125 6.6875 C 105.64436 7.0496638 107.01406 7.5223582 108.59375 7.25 C 109.54 7.0868551 110.4981 7.205444 111.90625 6.84375 C 113.37413 6.4667134 116.65625 5.65625 116.65625 5.65625 A 1.50015 1.50015 0 1 0 115.96875 2.75 C 115.96875 2.75 112.68631 3.5444944 111.15625 3.9375 C 110.28342 4.1616909 109.46828 4.0442633 108.09375 4.28125 C 107.45865 4.3907501 106.57388 4.1720669 105.46875 3.8125 C 104.36362 3.4529331 103.04528 2.9786485 101.46875 3.21875 C 100.39506 3.3822699 99.666492 3.9352728 99.125 4.3125 C 98.583508 4.6897272 98.219551 4.8738819 98.03125 4.90625 C 93.209861 5.7350273 87.886297 3.6832775 82.21875 2.90625 C 74.916551 1.9051098 69.309659 1.8537757 61.8125 4.84375 C 59.311962 5.8410003 55.991183 5.2638571 52.84375 4.46875 C 52.338424 4.3410943 51.688457 3.9061916 50.875 3.34375 C 50.061543 2.7813084 49.04556 2.0900266 47.65625 1.96875 C 44.692486 1.7100351 42.048327 2.7663609 39.625 3.84375 C 37.201673 4.9211391 34.945046 6.0350732 32.78125 6.3125 C 29.897332 6.6822557 26.960229 6.7691756 24.40625 6.03125 C 23.405382 5.7420673 22.391716 4.9711909 21.21875 4.0625 C 20.045784 3.1538091 18.704412 2.1105504 16.90625 1.6875 C 15.35895 1.3234692 13.545791 1.2341048 11.6875 1.28125 z " + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#002b11;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" + id="path3937" + d="m 11.6875,1.875 c -1.8316079,0.046468 -3.7324579,0.2212639 -5.46875,0.4375 -3.4751844,0.4327959 -6.25,1.03125 -6.25,1.03125 -0.03368056,0.00717 0.0020384,-0.00881 -0.03125,0 -0.03328837,0.00881 -0.02968402,0.020817 -0.0625,0.03125 -0.032816,0.010433 0.001015,-0.01203 -0.03125,0 -0.0322645,0.01203 3.8537e-4,0.017651 -0.03125,0.03125 -0.0316354,0.013599 -0.03157,-0.015135 -0.0625,0 -0.03093,0.015135 -0.0011,0.014616 -0.03125,0.03125 -0.0301501,0.016634 -0.001952,0.013156 -0.03125,0.03125 -0.0292976,0.018094 -0.002876,-0.01951 -0.03125,0 -0.0283744,0.01951 -0.003867,0.010372 -0.03125,0.03125 -0.027383,0.020878 -0.0361745,0.00905 -0.0625,0.03125 -0.0263255,0.022197 -0.006045,0.00779 -0.03125,0.03125 -0.0252047,0.023462 -0.007227,0.00658 -0.03125,0.03125 -0.0240231,0.02467 -0.008466,0.00543 -0.03125,0.03125 -0.0227837,0.025819 0.0214893,0.00434 0,0.03125 -0.0214893,0.026906 -0.0111068,0.00332 -0.03125,0.03125 -0.0201432,0.027928 -0.0125014,0.00237 -0.03125,0.03125 -0.0187486,0.028883 -0.0139412,0.032732 -0.03125,0.0625 -0.0173088,0.029768 -0.0154227,6.685e-4 -0.03125,0.03125 -0.0158273,0.030581 0.0143076,-7.13e-5 0,0.03125 -0.0143076,0.031321 -0.0184965,-7.356e-4 -0.03125,0.03125 -0.0127535,0.031986 0.0111687,0.029927 0,0.0625 -0.0111687,0.032573 -0.021693,-0.00183 -0.03125,0.03125 -0.009557,0.033082 0.007922,-0.00226 0,0.03125 -0.007922,0.033511 0.006268,0.028641 0,0.0625 -0.006268,0.033859 -0.0266505,-0.00288 -0.03125,0.03125 -0.004599,0.034126 0.002919,0.028189 0,0.0625 -0.002919,0.034311 0.001232,-0.00316 0,0.03125 -0.001232,0.034412 -4.5763e-4,-0.00318 0,0.03125 4.5763e-4,0.034431 -0.002147,0.028132 0,0.0625 0.002147,0.034368 -0.00383,-0.00297 0,0.03125 0.00383,0.034221 0.0257452,0.028508 0.03125,0.0625 0.005505,0.033992 -0.007166,-0.00243 0,0.03125 0.007166,0.033681 -0.00881,-0.00204 0,0.03125 0.00881,0.033288 0.0208172,0.029684 0.03125,0.0625 0.0104328,0.032816 -0.0120305,-0.00101 0,0.03125 0.0120305,0.032265 0.0176509,-3.854e-4 0.03125,0.03125 0.0135991,0.031635 -0.015135,0.03157 0,0.0625 0.015135,0.03093 0.0146155,0.0011 0.03125,0.03125 0.0166345,0.03015 0.0131562,0.00195 0.03125,0.03125 0.0180938,0.029298 -0.0195096,0.00288 0,0.03125 0.0195096,0.028374 0.0103716,0.00387 0.03125,0.03125 0.0208784,0.027383 0.009053,0.036175 0.03125,0.0625 0.0221968,0.026325 0.007788,0.00605 0.03125,0.03125 0.0234618,0.025205 0.00658,0.00723 0.03125,0.03125 0.0246703,0.024023 0.005431,0.00847 0.03125,0.03125 0.0258193,0.022784 0.004344,-0.021489 0.03125,0 0.0269062,0.021489 0.003322,0.011107 0.03125,0.03125 0.0279282,0.020143 0.002367,0.012501 0.03125,0.03125 0.0288829,0.018749 0.0327319,0.013941 0.0625,0.03125 0.0297681,0.017309 6.6846e-4,0.015423 0.03125,0.03125 0.0305815,0.015827 -7.131e-5,-0.014308 0.03125,0 0.0313213,0.014308 -7.3562e-4,0.018497 0.03125,0.03125 0.0319856,0.012753 0.0299271,-0.011169 0.0625,0 0.03257288,0.011169 -0.001832,0.021693 0.03125,0.03125 0.03308167,0.00956 -0.0022608,-0.00792 0.03125,0 0.03351076,0.00792 0.02864088,-0.00627 0.0625,0 0.03385912,0.00627 -0.00287591,0.02665 0.03125,0.03125 0.03412591,0.0046 0.02818951,-0.00292 0.0625,0 0.03431049,0.00292 -0.0031624,-0.00123 0.03125,0 0.0344124,0.00123 -0.003181,4.576e-4 0.03125,0 0.0344314,-4.576e-4 0.0281325,0.00215 0.0625,0 0.0343675,-0.00215 -0.002971,0.00383 0.03125,0 0.0342208,-0.00383 0.0285084,-0.025745 0.0625,-0.03125 0.0339916,-0.0055 -0.002431,0.00717 0.03125,0 0,0 2.7302831,-0.5772254 6.125,-1 C 9.8706757,3.6700776 13.911532,3.4277762 16.34375,4 c 1.170938,0.2754847 2.239695,1.0650258 3.40625,1.96875 1.168322,0.9050931 2.357372,1.8781716 3.96875,2.34375 3.073386,0.8879988 6.354574,0.7622579 9.375,0.375 2.722645,-0.3490784 5.1416,-1.6077269 7.5,-2.65625 2.354447,-1.0467657 4.578609,-1.8852302 6.84375,-1.6875 0.681879,0.059522 1.281582,0.4288066 2.0625,0.96875 0.783817,0.5419475 1.605316,1.179579 2.75,1.46875 3.244206,0.8195538 7.050097,1.6446578 10.46875,0.28125 7.120076,-2.8395881 12.031741,-2.7623132 19.1875,-1.78125 5.264515,0.7217713 10.807068,2.9839637 16.53125,2 C 99.337878,7.1264786 99.93568,6.6431289 100.5,6.25 c 0.56759,-0.3954063 0.89619,-0.5928478 1.3125,-0.65625 0.86682,-0.1320145 1.77891,0.1644564 2.90625,0.53125 1.12151,0.3648959 2.37415,0.7738513 3.78125,0.53125 1.0616,-0.1830322 1.93642,-0.068848 3.25,-0.40625 1.47598,-0.3791182 4.75,-1.1875 4.75,-1.1875 a 0.60291352,0.60291352 0 0 1 0.0625,0 c 0.0362,-0.00496 0.0266,0.00683 0.0625,0 0.0359,-0.00683 -0.004,-0.022557 0.0313,-0.03125 0.0355,-0.00869 0.0275,0.010528 0.0625,0 0.035,-0.010528 -0.003,-0.018916 0.0313,-0.03125 0.0344,-0.012334 0.0288,0.014107 0.0625,0 0.0337,-0.014107 -0.002,-0.015409 0.0313,-0.03125 0.0329,-0.015841 -7.8e-4,0.017533 0.0313,0 0.032,-0.017533 0.0314,-0.012073 0.0625,-0.03125 0.0311,-0.019177 0.001,-0.010481 0.0313,-0.03125 0.03,-0.020769 0.002,-0.00895 0.0313,-0.03125 0.0289,-0.022304 0.004,-0.00747 0.0313,-0.03125 0.0277,-0.023779 0.005,-0.00606 0.0313,-0.03125 0.0264,-0.02519 0.006,-0.00472 0.0313,-0.03125 0.0251,-0.026532 0.008,-0.00345 0.0313,-0.03125 0.0237,-0.027802 0.009,-0.00225 0.0313,-0.03125 0.0222,-0.028997 0.0106,-0.00114 0.0313,-0.03125 0.0207,-0.030113 0.0122,-0.031352 0.0313,-0.0625 0.0191,-0.031148 0.0138,8.48e-4 0.0313,-0.03125 0.0174,-0.032098 -0.0157,0.00171 0,-0.03125 0.0157,-0.032961 0.0173,-0.028766 0.0313,-0.0625 0.014,-0.033734 0.019,0.00317 0.0313,-0.03125 0.0122,-0.034416 -0.0104,0.00375 0,-0.03125 0.0104,-0.035005 -0.009,-0.027001 0,-0.0625 0.009,-0.035499 0.0246,0.00465 0.0313,-0.03125 0.007,-0.035896 -0.005,-0.026304 0,-0.0625 0.005,-0.036196 -0.003,0.00515 0,-0.03125 0.003,-0.036398 -0.001,-0.025999 0,-0.0625 0.001,-0.036501 8.7e-4,0.00525 0,-0.03125 -8.7e-4,-0.036505 0.003,-0.02609 0,-0.0625 -0.003,-0.03641 0.005,0.00497 0,-0.03125 -0.005,-0.036216 0.007,-0.026576 0,-0.0625 -0.007,-0.035924 -0.0228,0.00428 -0.0313,-0.03125 -0.008,-0.035534 0.0102,-0.027451 0,-0.0625 -0.0102,-0.035049 0.0121,0.00322 0,-0.03125 -0.0121,-0.034468 -0.0174,0.00254 -0.0313,-0.03125 -0.0138,-0.033793 -0.0157,-0.029473 -0.0313,-0.0625 -0.0156,-0.033027 0.0173,9.214e-4 0,-0.03125 -0.0173,-0.032171 -0.0123,-2.16e-5 -0.0313,-0.03125 -0.0189,-0.031228 -0.0107,-0.032299 -0.0313,-0.0625 -0.0205,-0.030201 -0.009,-0.00216 -0.0313,-0.03125 -0.0221,-0.029091 -0.008,-0.00335 -0.0313,-0.03125 -0.0236,-0.027903 -0.006,-0.00461 -0.0313,-0.03125 -0.025,-0.026638 -0.005,-0.00595 -0.0313,-0.03125 -0.0263,-0.025302 -0.004,-0.00735 -0.0313,-0.03125 -0.0276,-0.023897 -0.002,-0.00882 -0.0313,-0.03125 -0.0288,-0.022427 -0.001,-0.010354 -0.0313,-0.03125 -0.0299,-0.020896 -2.6e-4,-0.011942 -0.0313,-0.03125 -0.031,-0.019308 -0.0305,-0.013582 -0.0625,-0.03125 -0.032,-0.017668 0.002,0.015981 -0.0313,0 -0.0328,-0.015981 0.002,-0.017 -0.0313,-0.03125 -0.0336,-0.01425 -0.0282,-0.01877 -0.0625,-0.03125 -0.0343,-0.01248 0.004,0.010676 -0.0313,0 -0.0349,-0.010676 -0.0271,0.00884 -0.0625,0 -0.0354,-0.00884 0.005,-0.024263 -0.0313,-0.03125 -0.0358,-0.00699 0.005,0.00511 -0.0313,0 -0.0362,-0.00511 -0.0261,0.00322 -0.0625,0 -0.0364,-0.00322 0.005,0.00132 -0.0313,0 -0.0365,-0.00132 -0.026,-5.782e-4 -0.0625,0 -0.0365,5.782e-4 0.005,-0.00248 -0.0313,0 -0.0364,0.00248 -0.0263,-0.00437 -0.0625,0 -0.0362,0.00437 0.005,-0.00625 -0.0313,0 -0.036,0.00625 -0.0269,-0.00812 -0.0625,0 -0.0356,0.00812 0.004,0.021289 -0.0313,0.03125 -0.0351,0.00996 -0.0279,-0.011776 -0.0625,0 a 0.60291352,0.60291352 0 0 1 -0.0313,0.03125 c 0,0 -3.29404,0.797475 -4.8125,1.1875 -1.00956,0.2593098 -1.82266,0.119209 -3.125,0.34375 -0.85992,0.1482625 -1.77948,-0.1333935 -2.90625,-0.5 -1.11931,-0.3641809 -2.30849,-0.7772783 -3.71875,-0.5625 -0.91382,0.139172 -1.53362,0.6097906 -2.09375,1 C 98.898805,5.2095485 98.561731,5.424928 98.125,5.5 93.06687,6.3694721 87.701391,4.2645299 82.125,3.5 74.861197,2.5041239 69.430139,2.455467 62.03125,5.40625 59.285787,6.5011797 55.865395,5.8653024 52.6875,5.0625 51.985951,4.8852745 51.348693,4.4089478 50.53125,3.84375 49.72087,3.2834358 48.810714,2.6687321 47.59375,2.5625 44.802553,2.3188489 42.283239,3.335569 39.875,4.40625 37.465675,5.4774139 35.157007,6.6096603 32.84375,6.90625 29.920441,7.2810561 26.934516,7.4006419 24.25,6.625 23.078941,6.2866438 22.019155,5.44183 20.84375,4.53125 19.670089,3.6220208 18.429397,2.6690067 16.78125,2.28125 15.31474,1.9362265 13.516543,1.8285968 11.6875,1.875 z" + transform="translate(0,-1.09434)" /> + <g + id="g3794" + transform="matrix(0.93083461,0.14457877,-0.14457877,0.93083461,-9.5560514,-4.4782799)"> + <g + id="g3852" + transform="matrix(0.88020957,0,0,0.88020957,2.0106003,0.78001647)"> + <path + style="fill:#ff5353;fill-opacity:1;stroke:#d20000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3792" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3804" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#ffbfbf;fill-opacity:1;stroke:none" /> + <path + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.652016,-0.627109 3.128706,-0.409628 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + id="path3765" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + </g> + <g + id="g3857" + transform="matrix(0.79366442,-0.41407639,0.41407639,0.79366442,68.400139,-0.2190763)"> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3859" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#ff5353;fill-opacity:1;stroke:#d20000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" /> + <path + style="fill:#ffbfbf;fill-opacity:1;stroke:none" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3861" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" /> + <path + inkscape:connector-curvature="0" + id="path3863" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.158491,-0.472045 2.629493,-0.538087 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="ccccccccc" /> + </g> + <g + id="g3865" + transform="matrix(0.87622168,0.1643472,-0.13496643,0.72420958,84.889605,-12.483415)"> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3867" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#53fff8;fill-opacity:1;stroke:#0073d2;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" /> + <path + style="fill:#bffffd;fill-opacity:1;stroke:none" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3869" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" /> + <path + inkscape:connector-curvature="0" + id="path3871" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.089127,-0.497822 1.897861,-1.346695 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="ccccccccc" /> + </g> + <g + transform="matrix(0.86700865,-0.49829018,0.41258483,0.71596181,39.555562,5.276502)" + id="g3873"> + <path + style="fill:#53fff8;fill-opacity:1;stroke:#0073d2;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3875" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3877" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#bffffd;fill-opacity:1;stroke:none" /> + <path + sodipodi:nodetypes="ccccccccc" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.089127,-0.497822 1.897861,-1.346695 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + id="path3879" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(0.99995926,0.00809455,-0.00160462,0.594738,27.22871,2.810441)" + id="g3881"> + <path + sodipodi:nodetypes="ccccccccc" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c -0.26541,2.834126 4.11079,3.492492 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + id="path3887" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffd553;fill-opacity:1;stroke:#d28e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 -0.516651,-0.993142 -3.319139,-1.4720252 -4.029253,-0.04734 z" + id="path3883" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3885" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 -0.574274,-0.621426 -2.367696,-1.5972338 -4.029253,-0.04734 z" + style="fill:#ffefbf;fill-opacity:1;stroke:none" /> + </g> + <g + id="g3889" + transform="matrix(0.79654416,-0.07300138,0.07300138,0.79654416,105.49043,-11.634656)"> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3891" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#ffc353;fill-opacity:1;stroke:#d27300;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" /> + <path + style="fill:#ffe4bf;fill-opacity:1;stroke:none" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3893" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" /> + <path + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path3895" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.652016,-0.627109 3.128706,-0.409628 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="g3897" + transform="matrix(0.87538072,-0.48341766,0.29031565,0.51906906,110.1631,-3.5222437)"> + <path + inkscape:connector-curvature="0" + id="path3899" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c -0.26541,2.834126 4.11079,3.492492 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="ccccccccc" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3901" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 -0.516651,-0.993142 -3.319139,-1.4720252 -4.029253,-0.04734 z" + style="fill:#77ff53;fill-opacity:1;stroke:#21d200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" /> + <path + style="fill:#d4ffce;fill-opacity:1;stroke:none" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 -0.574274,-0.621426 -2.367696,-1.5972338 -4.029253,-0.04734 z" + id="path3903" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" /> + </g> + <g + transform="matrix(0.85467231,-0.08542993,0.07141237,0.70616335,58.188074,-1.5267724)" + id="g3905"> + <path + style="fill:#69ff53;fill-opacity:1;stroke:#05d200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3907" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3909" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#d0ffbf;fill-opacity:1;stroke:none" /> + <path + sodipodi:nodetypes="ccccccccc" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.089127,-0.497822 1.897861,-1.346695 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + id="path3911" + inkscape:connector-curvature="0" /> + </g> + <g + id="g3921" + transform="matrix(0.86963065,0.36390025,-0.30144031,0.71076987,19.197462,-3.9433455)"> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3923" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#fd53ff;fill-opacity:1;stroke:#d200cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" /> + <path + style="fill:#ffbffd;fill-opacity:1;stroke:none" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3925" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" /> + <path + inkscape:connector-curvature="0" + id="path3927" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.089127,-0.497822 1.897861,-1.346695 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="ccccccccc" /> + </g> + <g + id="g3929" + transform="matrix(0.85844005,-0.02904662,0.0248245,0.70933077,93.759226,-8.5973955)"> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path3931" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + style="fill:#ff53f4;fill-opacity:1;stroke:#ca00d2;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98039216" /> + <path + style="fill:#ffbffb;fill-opacity:1;stroke:none" + d="m 15.946514,11.151204 c -0.615601,4.354136 0.426443,7.402933 1.731156,9.588835 1.8803,-2.400512 2.470287,-5.322994 2.298097,-9.5415 z" + id="path3933" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + transform="matrix(0.60616889,0,0,0.60616889,6.9895477,4.8126328)" /> + <path + inkscape:connector-curvature="0" + id="path3935" + d="m 17.178692,4.9999085 -0.07738,2.0893004 -1.00596,1.083341 -0.386907,3.5595491 c 1.089127,-0.497822 1.897861,-1.346695 4.565508,0 l -0.464289,-3.8690751 -1.160722,-0.773815 0,-2.0119189 z" + style="fill:#005522;fill-opacity:1;stroke:#002b11;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:nodetypes="ccccccccc" /> + </g> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Highlights" + style="filter:url(#filter3987);opacity:0.44000000000000000" /> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#005522;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;filter:url(#filter4004)" + d="M 11.6875,0.78125 C 9.8558921,0.8277183 7.9550421,1.0025139 6.21875,1.21875 2.7435656,1.6515459 -0.03125,2.25 -0.03125,2.25 c -0.03368056,0.00717 0.0020384,-0.00881 -0.03125,0 -0.03328837,0.00881 -0.02968402,0.020817 -0.0625,0.03125 -0.032816,0.010433 0.001015,-0.01203 -0.03125,0 -0.0322645,0.01203 3.8537e-4,0.017651 -0.03125,0.03125 -0.0316354,0.013599 -0.03157,-0.015135 -0.0625,0 C -0.28093,2.327635 -0.2511,2.327116 -0.28125,2.34375 -0.3114001,2.360384 -0.283202,2.356906 -0.3125,2.375 -0.3417976,2.393094 -0.315376,2.35549 -0.34375,2.375 -0.3721244,2.39451 -0.347617,2.385372 -0.375,2.40625 -0.402383,2.427128 -0.4111745,2.4153 -0.4375,2.4375 -0.4638255,2.459697 -0.443545,2.44529 -0.46875,2.46875 -0.4939547,2.492212 -0.475977,2.47533 -0.5,2.5 c -0.0240231,0.02467 -0.008466,0.00543 -0.03125,0.03125 -0.0227837,0.025819 0.0214893,0.00434 0,0.03125 C -0.5527393,2.589406 -0.5423568,2.56582 -0.5625,2.59375 -0.5826432,2.621678 -0.5750014,2.59612 -0.59375,2.625 -0.6124986,2.653883 -0.6076912,2.657732 -0.625,2.6875 c -0.0173088,0.029768 -0.0154227,6.685e-4 -0.03125,0.03125 -0.0158273,0.030581 0.0143076,-7.13e-5 0,0.03125 -0.0143076,0.031321 -0.0184965,-7.356e-4 -0.03125,0.03125 -0.0127535,0.031986 0.0111687,0.029927 0,0.0625 -0.0111687,0.032573 -0.021693,-0.00183 -0.03125,0.03125 -0.009557,0.033082 0.007922,-0.00226 0,0.03125 -0.007922,0.033511 0.006268,0.028641 0,0.0625 C -0.7250184,3.0026091 -0.74540054,2.9658741 -0.75,3 c -0.004599,0.034126 0.002919,0.028189 0,0.0625 -0.002919,0.034311 0.001232,-0.00316 0,0.03125 -0.001232,0.034412 -4.5763e-4,-0.00318 0,0.03125 4.5763e-4,0.034431 -0.002147,0.028132 0,0.0625 0.002147,0.034368 -0.00383,-0.00297 0,0.03125 0.00383,0.034221 0.0257452,0.028508 0.03125,0.0625 0.005505,0.033992 -0.007166,-0.00243 0,0.03125 0.007166,0.033681 -0.00881,-0.00204 0,0.03125 0.00881,0.033288 0.0208172,0.029684 0.03125,0.0625 0.0104328,0.032816 -0.0120305,-0.00101 0,0.03125 0.0120305,0.032265 0.0176509,-3.854e-4 0.03125,0.03125 C -0.6404227,3.438169 -0.6423088,3.46727 -0.625,3.4375 -0.6076912,3.407732 -0.6124986,3.403883 -0.59375,3.375 -0.5750014,3.346117 -0.5826432,3.37168 -0.5625,3.34375 -0.5423568,3.315822 -0.552739,3.33941 -0.53125,3.3125 c 0.0214893,-0.026906 -0.0227837,-0.00543 0,-0.03125 C -0.5084663,3.255431 -0.524023,3.27467 -0.5,3.25 -0.4759769,3.22533 -0.493955,3.24221 -0.46875,3.21875 -0.4435453,3.195288 -0.463826,3.2097 -0.4375,3.1875 -0.4111745,3.165303 -0.402383,3.177128 -0.375,3.15625 -0.347617,3.135372 -0.372124,3.14451 -0.34375,3.125 c 0.0283744,-0.01951 0.001952,0.018094 0.03125,0 0.0292976,-0.018094 0.0011,-0.014616 0.03125,-0.03125 0.0301501,-0.016634 3.2002e-4,-0.016115 0.03125,-0.03125 0.03093,-0.015135 0.0308646,0.013599 0.0625,0 0.0316354,-0.013599 -0.001015,-0.01922 0.03125,-0.03125 0.0322645,-0.01203 -0.001566,0.010433 0.03125,0 C -0.09218402,3.020817 -0.09578837,3.00881 -0.0625,3 c 0.03328837,-0.00881 -0.0024306,0.00717 0.03125,0 0,0 2.7748156,-0.5984541 6.25,-1.03125 1.7362921,-0.2162361 3.6371421,-0.3910317 5.46875,-0.4375 1.829043,-0.046403 3.62724,0.061227 5.09375,0.40625 1.648147,0.3877567 2.888839,1.3407708 4.0625,2.25 1.175405,0.91058 2.235191,1.7553938 3.40625,2.09375 2.684516,0.7756419 5.670441,0.6560561 8.59375,0.28125 2.313257,-0.2965897 4.621925,-1.4288361 7.03125,-2.5 2.408239,-1.070681 4.927553,-2.0874011 7.71875,-1.84375 1.216964,0.1062321 2.12712,0.7209358 2.9375,1.28125 0.817443,0.5651978 1.454701,1.0415245 2.15625,1.21875 3.177895,0.8028024 6.598287,1.4386797 9.34375,0.34375 7.398889,-2.950783 12.829947,-2.9021261 20.09375,-1.90625 5.576391,0.7645299 10.94187,2.8694721 16,2 0.436731,-0.075072 0.773805,-0.2904515 1.34375,-0.6875 0.56013,-0.3902094 1.17993,-0.860828 2.09375,-1 1.41026,-0.2147783 2.59944,0.1983191 3.71875,0.5625 1.12677,0.3666065 2.04633,0.6482625 2.90625,0.5 1.30234,-0.224541 2.11544,-0.08444 3.125,-0.34375 C 112.83096,3.797475 116.125,3 116.125,3 a 0.60291352,0.60291352 0 0 0 0.0313,-0.03125 c 0.0346,-0.011776 0.0274,0.00996 0.0625,0 0.0351,-0.00996 -0.004,-0.023132 0.0313,-0.03125 0.0356,-0.00812 0.0265,0.00625 0.0625,0 0.036,-0.00625 -0.005,0.00437 0.0313,0 0.0362,-0.00437 0.0261,0.00248 0.0625,0 0.0364,-0.00248 -0.005,5.782e-4 0.0313,0 0.0365,-5.782e-4 0.026,-0.00132 0.0625,0 0.0365,0.00132 -0.005,-0.00322 0.0313,0 0.0364,0.00322 0.0263,-0.00511 0.0625,0 0.0362,0.00511 -0.005,-0.00699 0.0313,0 0.0358,0.00699 -0.004,0.022407 0.0313,0.03125 0.0354,0.00884 0.0276,-0.010676 0.0625,0 0.0349,0.010676 -0.003,-0.01248 0.0313,0 0.0343,0.01248 0.0289,0.017 0.0625,0.03125 0.0336,0.01425 -0.002,0.015269 0.0313,0.03125 0.0328,0.015981 -7.1e-4,-0.017668 0.0313,0 0.032,0.017668 0.0315,0.011942 0.0625,0.03125 0.031,0.019308 10e-4,0.010354 0.0313,0.03125 0.0299,0.020896 0.002,0.00882 0.0313,0.03125 0.0288,0.022427 0.004,0.00735 0.0313,0.03125 0.0276,0.023897 0.005,0.00595 0.0313,0.03125 0.0263,0.025302 0.006,0.00461 0.0313,0.03125 0.025,0.026638 0.008,0.00335 0.0313,0.03125 0.0236,0.027903 0.009,0.00216 0.0313,0.03125 0.0221,0.029091 0.0107,0.00105 0.0313,0.03125 0.0205,0.030201 0.0123,0.031272 0.0313,0.0625 0.0189,0.031228 0.014,-9.214e-4 0.0313,0.03125 0.0173,0.032171 -0.0156,-0.00178 0,0.03125 0.005,-0.00915 0.0229,-0.011009 0.0313,-0.03125 0.014,-0.033734 0.019,0.00317 0.0313,-0.03125 0.0122,-0.034416 -0.0104,0.00375 0,-0.03125 0.0104,-0.035005 -0.009,-0.027001 0,-0.0625 0.009,-0.035499 0.0246,0.00465 0.0313,-0.03125 0.007,-0.035896 -0.005,-0.026304 0,-0.0625 0.005,-0.036196 -0.003,0.00515 0,-0.03125 0.003,-0.036398 -10e-4,-0.025999 0,-0.0625 0.001,-0.036501 8.7e-4,0.00525 0,-0.03125 -8.7e-4,-0.036505 0.003,-0.02609 0,-0.0625 -0.003,-0.03641 0.005,0.00497 0,-0.03125 -0.005,-0.036216 0.007,-0.026576 0,-0.0625 -0.007,-0.035924 -0.0228,0.00428 -0.0313,-0.03125 -0.008,-0.035534 0.0102,-0.027451 0,-0.0625 -0.0102,-0.035049 0.0121,0.00322 0,-0.03125 -0.0121,-0.034468 -0.0174,0.00254 -0.0313,-0.03125 -0.0138,-0.033793 -0.0157,-0.029473 -0.0313,-0.0625 -0.0156,-0.033027 0.0173,9.214e-4 0,-0.03125 C 117.2337,2.624079 117.2387,2.6562284 117.2197,2.625 117.2008,2.593772 117.209,2.592701 117.1884,2.5625 117.1679,2.532299 117.1794,2.56034 117.1571,2.53125 117.135,2.502159 117.1491,2.5279 117.1258,2.5 c -0.0236,-0.027903 -0.006,-0.00461 -0.0313,-0.03125 -0.025,-0.026638 -0.005,-0.00595 -0.0313,-0.03125 -0.0263,-0.025302 -0.004,-0.00735 -0.0313,-0.03125 -0.0276,-0.023897 -0.002,-0.00882 -0.0313,-0.03125 -0.0288,-0.022427 -0.001,-0.010354 -0.0313,-0.03125 -0.0299,-0.020896 -2.6e-4,-0.011942 -0.0313,-0.03125 -0.031,-0.019308 -0.0305,-0.013582 -0.0625,-0.03125 -0.032,-0.017668 0.002,0.015981 -0.0313,0 -0.0328,-0.015981 0.002,-0.017 -0.0313,-0.03125 -0.0336,-0.01425 -0.0282,-0.01877 -0.0625,-0.03125 -0.0343,-0.01248 0.004,0.010676 -0.0313,0 -0.0349,-0.010676 -0.0271,0.00884 -0.0625,0 -0.0354,-0.00884 0.005,-0.024263 -0.0313,-0.03125 -0.0358,-0.00699 0.005,0.00511 -0.0313,0 -0.0362,-0.00511 -0.0261,0.00322 -0.0625,0 -0.0364,-0.00322 0.005,0.00132 -0.0313,0 -0.0365,-0.00132 -0.026,-5.782e-4 -0.0625,0 -0.0365,5.782e-4 0.005,-0.00248 -0.0313,0 -0.0364,0.00248 -0.0263,-0.00437 -0.0625,0 -0.0362,0.00437 0.005,-0.00625 -0.0313,0 -0.036,0.00625 -0.0269,-0.00812 -0.0625,0 -0.0356,0.00812 0.004,0.021289 -0.0313,0.03125 -0.0351,0.00996 -0.0279,-0.011776 -0.0625,0 A 0.60291352,0.60291352 0 0 1 116.125,2.25 c 0,0 -3.29404,0.797475 -4.8125,1.1875 -1.00956,0.2593098 -1.82266,0.119209 -3.125,0.34375 -0.85992,0.1482625 -1.77948,-0.1333935 -2.90625,-0.5 -1.11931,-0.3641809 -2.30849,-0.7772783 -3.71875,-0.5625 -0.91382,0.139172 -1.53362,0.6097906 -2.09375,1 -0.569945,0.3970485 -0.907019,0.612428 -1.34375,0.6875 -5.05813,0.8694721 -10.423609,-1.2354701 -16,-2 C 74.861197,1.4103739 69.430139,1.361717 62.03125,4.3125 59.285787,5.4074297 55.865395,4.7715524 52.6875,3.96875 51.985951,3.7915245 51.348693,3.3151978 50.53125,2.75 49.72087,2.1896858 48.810714,1.5749821 47.59375,1.46875 44.802553,1.2250989 42.283239,2.241819 39.875,3.3125 37.465675,4.3836639 35.157007,5.5159103 32.84375,5.8125 29.920441,6.1873061 26.934516,6.3068919 24.25,5.53125 23.078941,5.1928938 22.019155,4.34808 20.84375,3.4375 19.670089,2.5282708 18.429397,1.5752567 16.78125,1.1875 15.31474,0.8424765 13.516543,0.7348468 11.6875,0.78125 z" + id="path3995" + inkscape:connector-curvature="0" + transform="translate(0,0.125)" /> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Christmas/Snowman.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,731 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Themes/Christmas/Snowman.png" + inkscape:version="0.48.0 r9654" + version="1.1" + id="svg2" + height="310.98691" + width="206.98897" + sodipodi:docname="Snowman.svg"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="93.888364" + inkscape:cy="261.46368" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1280" + inkscape:window-height="948" + inkscape:window-x="-4" + inkscape:window-y="-3" + inkscape:window-maximized="1" + fit-margin-top="15" + fit-margin-left="15" + fit-margin-right="15" + fit-margin-bottom="15" /> + <defs + id="defs4"> + <linearGradient + id="linearGradient5294" + osb:paint="solid"> + <stop + style="stop-color:#d6cda8;stop-opacity:1;" + offset="0" + id="stop5296" /> + </linearGradient> + </defs> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + transform="translate(-182.50939,-276.81877)" + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Capa 1"> + <path + style="fill:#803300;stroke:none" + d="m 105.71246,56.752729 c 7.46213,-5.760648 23.33493,-13.178662 26.87006,-19.79899 2.45086,-4.589786 0.73247,-12.830541 1.06066,-21.566757 0.15093,-4.017553 5.08192,-1.265077 4.99264,1.623161 -0.15297,4.948786 -1.03168,10.850098 -0.39644,14.286742 0.41149,2.226135 3.10061,3.719978 5.3033,4.242641 3.66792,0.87034 10.05917,-4.796236 15.20279,-7.424622 3.27995,-1.676053 4.41702,5.485288 0.70711,7.424622 -4.74078,2.478219 -10.60559,5.171136 -16.26346,6.717514 -3.2154,0.878815 -6.7894,0.214876 -9.89949,1.414214 -4.91011,1.893475 -7.59035,5.387249 -11.4021,9.015611 -0.85361,0.812546 -2.94457,1.841759 -3.8007,2.65165 -3.08683,2.920104 -5.0381,4.237932 -10.6066,7.071068 -1.76076,0.895835 -3.33155,-4.449639 -1.76777,-5.656854 z" + id="path4040" + inkscape:connector-curvature="0" + transform="translate(214.73005,386.2896)" + sodipodi:nodetypes="ssssssssssssss" /> + <path + style="fill:#6c2b00;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 166.21875 123.5 C 166.01352 123.82047 165.89768 124.24015 165.875 124.84375 C 165.72783 128.76137 165.97834 132.53495 166.09375 135.96875 C 166.21053 132.25846 165.99944 127.97005 166.21875 123.5 z M 170.5 132.25 C 170.3747 133.60364 170.28956 134.86486 170.28125 136.03125 C 170.32755 134.83045 170.40445 133.54527 170.5 132.25 z M 193.96875 141.1875 C 193.57354 142.16405 192.88133 143.01671 191.875 143.5 C 186.96419 145.85846 180.90577 148.40292 175.09375 149.78125 C 171.79075 150.56456 168.17565 149.76182 164.96875 150.875 C 159.9058 152.63245 157.03626 156.09507 153.03125 159.65625 C 152.13436 160.45375 149.99311 161.45529 149.09375 162.25 C 145.85105 165.11538 143.79678 166.37142 138.03125 169.0625 C 137.81339 169.16418 137.60792 169.1551 137.40625 169.09375 C 137.7111 170.77349 138.65168 172.402 139.6875 171.875 C 145.256 169.04186 147.22567 167.7326 150.3125 164.8125 C 151.16863 164.00261 153.24014 162.9688 154.09375 162.15625 C 157.9055 158.52789 160.58989 155.04972 165.5 153.15625 C 168.61009 151.95691 172.19085 152.59756 175.40625 151.71875 C 181.06412 150.17237 186.94672 147.47822 191.6875 145 C 193.13962 144.24091 193.83965 142.70357 193.96875 141.1875 z " + transform="translate(182.50939,276.81877)" + id="path4573" /> + <path + style="fill:#9e4100;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 167.53125 122.84375 C 166.64707 122.79612 165.9316 123.33717 165.875 124.84375 C 165.87263 124.90673 165.87716 124.96832 165.875 125.03125 C 166.36652 125.26083 166.86087 125.4923 167.25 125.75 C 167.68528 126.03826 168.36925 126.04485 168.625 126.5 C 169.91235 128.79107 168.29098 131.74735 168.25 134.375 C 168.2104 136.9167 167.58617 139.58348 168.375 142 C 168.64405 142.82422 169.2058 143.57373 169.875 144.125 C 171.60238 145.54797 173.76354 146.95825 176 146.875 C 177.13649 146.8327 178.53594 146.28829 179 145.25 C 179.10003 145.0262 179.13922 144.77654 179.125 144.53125 C 177.86882 145.02335 176.70631 145.22692 175.75 145 C 173.54731 144.47734 170.88024 143.00738 170.46875 140.78125 C 169.83351 137.34461 170.69078 131.41754 170.84375 126.46875 C 170.89955 124.6636 169.00488 122.92314 167.53125 122.84375 z M 192.09375 137.34375 C 191.756 137.30455 191.37874 137.38424 190.96875 137.59375 C 188.07931 139.07025 184.81668 141.49088 181.84375 143.1875 C 181.89455 143.20617 181.95035 143.23728 182 143.25 C 184.01815 143.76704 186.00656 142.10538 188 141.5 C 188.79438 141.25876 189.57401 140.53172 190.375 140.75 C 190.91585 140.89739 191.0432 141.67509 191.5 142 C 192.08649 142.41715 192.77619 143.0289 193.46875 143.0625 C 194.55481 140.73672 193.85131 137.54775 192.09375 137.34375 z M 165.1875 145.5625 C 165.06927 145.86295 164.95931 146.16257 164.8125 146.4375 C 161.27737 153.05783 145.39963 160.4581 137.9375 166.21875 C 137.31134 166.70214 137.18506 167.85598 137.375 169 C 138.31377 168.83634 139.25853 168.56702 140 168.375 C 142.10367 167.83022 143.74132 166.15143 145.5 164.875 C 146.98526 163.79701 148.3072 162.50919 149.75 161.375 C 153.68084 158.28493 157.66163 155.25341 161.75 152.375 C 163.79106 150.938 164.66442 150.17895 165.625 147.875 C 165.92784 147.14863 165.48706 146.3161 165.1875 145.5625 z " + transform="translate(182.50939,276.81877)" + id="path4525" /> + <path + sodipodi:nodetypes="ssssssssssssss" + transform="translate(214.73005,386.2896)" + inkscape:connector-curvature="0" + id="path4533" + d="m 105.71246,56.752729 c 7.46213,-5.760648 23.33493,-13.178662 26.87006,-19.79899 2.45086,-4.589786 0.73247,-12.830541 1.06066,-21.566757 0.15093,-4.017553 5.08192,-1.265077 4.99264,1.623161 -0.15297,4.948786 -1.03168,10.850098 -0.39644,14.286742 0.41149,2.226135 3.10061,3.719978 5.3033,4.242641 3.66792,0.87034 10.05917,-4.796236 15.20279,-7.424622 3.27995,-1.676053 4.41702,5.485288 0.70711,7.424622 -4.74078,2.478219 -10.60559,5.171136 -16.26346,6.717514 -3.2154,0.878815 -6.7894,0.214876 -9.89949,1.414214 -4.91011,1.893475 -7.59035,5.387249 -11.4021,9.015611 -0.85361,0.812546 -2.94457,1.841759 -3.8007,2.65165 -3.08683,2.920104 -5.0381,4.237932 -10.6066,7.071068 -1.76076,0.895835 -3.33155,-4.449639 -1.76777,-5.656854 z" + style="fill:none;stroke:#552200;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> + <path + style="fill:#c98c49;stroke:#502d16;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1" + d="m 116.82322,156.98081 c 5.47921,-34.10468 11.02733,-101.506931 11.70622,-154.9445492 0.0545,-4.292547 -8.61436,-3.6884688 -8.52513,0.8535534 0.77332,39.3643978 -3.28415,113.5674358 -9.76687,154.3033058 -1.09084,6.85458 5.56316,6.15288 6.58578,-0.21231 z" + id="path3958" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="sssss" /> + <path + style="color:#000000;fill:#bb7444;fill-opacity:1;fill-rule:nonzero;stroke:#502d16;stroke-width:0.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 119.5,3.4860082 c 2.77397,2.02233 7.2219,2.6172072 10.25,1 3.42025,-1.8266431 3.37639,-7.0057742 5.5,-10.2499999 3.54262,-5.4120353 10.28529,-11.1224403 11.02773,-17.5480973 0.15833,-1.370295 -0.57057,-3.034651 -1.75,-3.75 -9.77087,-5.926241 -26.52139,-4.554208 -34.95711,-0.267763 -1.20939,0.614527 -1.60008,1.770384 -1.85095,3.103553 -1.01315,5.383998 5.48408,13.488267 7.78033,18.4623113 1.408,3.0499587 1.28552,7.2710364 4,9.2499959 z" + id="path4017" + inkscape:connector-curvature="0" + transform="translate(211.52295,401.7896)" + sodipodi:nodetypes="sssssssss" /> + <path + style="fill:#bb7444;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1" + d="M 153.65625 127.9375 C 152.96682 127.99595 152.28678 128.25904 151.9375 128.53125 C 151.58822 128.80346 151.52343 128.91452 151.53125 129.3125 C 152.30881 168.89251 148.27787 243.01165 141.75 284.03125 C 141.54281 285.33316 141.78097 285.94494 141.875 286.125 C 142.11722 286.04849 143.38052 285.36227 143.75 283.0625 C 149.19233 249.18739 154.76034 181.77043 155.4375 128.46875 C 155.44121 128.17648 155.50074 128.33489 155.25 128.1875 C 154.99926 128.04011 154.34201 127.87936 153.65625 127.9375 z " + transform="translate(182.50939,276.81877)" + id="path4094" /> + <path + id="path3882" + transform="translate(182.50939,276.81877)" + style="fill:none;stroke:#916032;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;opacity:0.65" + d="m 143,104.23691 c 4.05914,2.46906 7.30046,4.92423 12.125,4.875 m 9.875,-2.625 c 0,0 -0.41133,5.75618 -1.5,8.375 -0.5857,1.40893 -2.625,3.75 -2.625,3.75 m -12.125,-7.125 c 0,0 0.38667,5.19841 1.25,7.625 0.86963,2.44431 3.875,6.75 3.875,6.75 m -4.5,92.5 c 0,0 1.57832,-0.73239 2.125,-1.375 1.68043,-1.97531 3.125,-7.125 3.125,-7.125 m -3.125,-60.75 c 0,0 0.92625,7.7939 1.75,11.625 0.58231,2.70823 2.25,8 2.25,8 m -5.875,26.75 c 0,0 2.10205,-0.5468 3,-1.125 1.13949,-0.73373 2.875,-2.875 2.875,-2.875" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccsssssssssssssss" /> + <path + style="color:#000000;fill:#c98c49;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 155.5625,93.9375 c -6.46345,0.138034 -12.75089,1.575527 -16.96875,3.71875 -1.20939,0.614527 -1.62413,1.760581 -1.875,3.09375 -1.01315,5.384 5.485,13.49471 7.78125,18.46875 1.408,3.04996 1.28552,7.27104 4,9.25 0.19168,0.13975 2.36289,0.77948 2.56954,0.90533 -2.74751,-2.23783 -3.19699,-7.08349 -4.34099,-9.56158 -2.29625,-4.97404 -8.7944,-13.08475 -7.78125,-18.46875 0.25087,-1.33317 0.28081,-2.510473 1.4902,-3.125 8.43572,-4.286445 18.63538,-4.644991 28.40625,1.28125 1.17943,0.71535 1.90833,2.37971 1.75,3.75 -0.74244,6.42566 -7.48863,12.15046 -11.03125,17.5625 -1.88361,2.87758 -2.06575,7.26757 -4.46875,9.5 1.01864,-0.12034 2.79589,-0.38426 3.65625,-0.84375 3.42025,-1.82664 3.37639,-7.00577 5.5,-10.25 3.54262,-5.41204 10.28881,-11.13684 11.03125,-17.5625 0.15833,-1.37029 -0.57057,-3.034651 -1.75,-3.75 -4.88544,-2.963121 -11.5053,-4.106784 -17.96875,-3.96875 z" + transform="translate(182.50939,276.81877)" + id="path4087" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssccsssssscsssss" /> + <path + sodipodi:nodetypes="sssssssss" + transform="translate(211.52295,401.7896)" + inkscape:connector-curvature="0" + id="path4092" + d="m 119.5,3.4860082 c 2.77397,2.02233 7.2219,2.6172072 10.25,1 3.42025,-1.8266431 3.37639,-7.0057742 5.5,-10.2499999 3.54262,-5.4120353 10.28529,-11.1224403 11.02773,-17.5480973 0.15833,-1.370295 -0.57057,-3.034651 -1.75,-3.75 -9.77087,-5.926241 -26.52139,-4.554208 -34.95711,-0.267763 -1.20939,0.614527 -1.60008,1.770384 -1.85095,3.103553 -1.01315,5.383998 5.48408,13.488267 7.78033,18.4623113 1.408,3.0499587 1.28552,7.2710364 4,9.2499959 z" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#502d16;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:#d4aa00;stroke:#554400;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + d="m 108.89444,-25.448434 c 1.23909,2.929251 22.95487,3.279206 32.88047,1.414213 0,0 1.48998,-0.188386 1.94454,-0.707106 2.7043,-3.086028 1.36595,-8.124179 2.65165,-12.020816 3.62002,-10.971379 14.14774,-30.710413 14.14214,-31.643028 0.0163,-0.690433 -1.49871,-1.736061 -1.94454,-1.414214 -0.50893,0.367398 -1.98849,3.154754 -2.82843,4.242641 0.47698,-1.782082 1.48728,-4.6648 1.41421,-5.480077 -0.11085,-1.236804 -11.49406,-2.278914 -17.32411,-2.651651 -7.29402,-0.466334 -20.63286,-0.968333 -21.52256,0.618718 -0.35566,0.634416 0.55979,10.076272 0.83968,15.114408 -1.1783,-4.83395 -2.49772,-13.781102 -3.53553,-14.495689 -0.79374,-0.610818 -10.99588,1.140811 -10.92799,2.132044 -0.0437,0.485627 1.91237,6.530014 3.14981,9.888771 -1.53206,-3.064129 -4.06138,-8.770308 -5.08233,-8.79464 -0.7591,-0.0625 -2.4122,1.532778 -3.952884,2.617259 -1.271348,0.894898 -3.390527,1.282308 -3.750303,2.336089 -0.21796,1.075481 3.887763,8.849966 5.714457,13.564011 l -7.954955,-8.485282 -1.944544,3.005204 c 0,0 6.368177,5.157381 8.662058,8.485281 3.429551,4.975496 4.978171,11.016478 7.247841,16.61701 0.75638,1.8664 2.12132,5.656854 2.12132,5.656854 z" + id="path4036" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="sssscscssscccccsccccsss" /> + <path + style="color:#000000;fill:#aa8700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 153.34375,55.125 c -2.63387,0.03613 -4.53646,0.277616 -4.84375,0.84375 -0.32757,0.603491 0.49221,8.332447 0.75,13.125 -0.25217,-1.068449 -0.48868,-2.375137 -0.75,-3.71875 -0.0211,-0.09715 -0.0414,-0.18241 -0.0625,-0.28125 -0.006,-0.032 -0.0251,-0.0617 -0.0313,-0.09375 -0.37047,-1.740136 -0.71887,-3.320124 -1.09375,-5.1875 -0.0483,-0.226301 -0.10837,-0.473308 -0.15625,-0.6875 -0.41086,-1.838141 -0.7978,-3.213842 -1.15625,-3.46875 -0.73106,-0.581044 -10.12503,1.088335 -10.0625,2.03125 -0.0402,0.461955 2.07903,7.586215 3.21875,10.78125 -1.41108,-2.914768 -4.55967,-10.008104 -5.5,-10.03125 -0.69916,-0.05945 -2.20598,1.312132 -3.625,2.34375 -1.17095,0.851276 -3.13738,1.216335 -3.46875,2.21875 -0.20075,1.023057 4.06755,8.359491 5.75,12.84375 l -2.15625,-2.375 c 0.10491,0.256853 0.21871,0.539212 0.3125,0.78125 l -5.6875,-6.09375 -1.5625,2.46875 c 0,0 5.85601,4.928068 7.96875,8.09375 3.15873,4.732966 4.72206,10.984965 6.8125,16.3125 0.69665,1.775423 1.9375,5.375 1.9375,5.375 0.0136,0.0333 0.0436,0.0612 0.0625,0.0937 5.15396,1.99455 21.95385,2.06679 30.625,0.4375 0,0 0.28096,-0.0589 0.46875,-0.0937 2.38887,-2.955234 1.07784,-8.299647 2.25,-11.96875 3.33416,-10.43658 13.19082,-27.831595 13.18566,-28.71875 0.015,-0.656778 -0.12193,-0.90305 -0.53255,-0.596891 -0.46874,0.349489 -3.067,4.187033 -3.84061,5.221891 0.43931,-1.695215 2.03605,-5.661964 1.96875,-6.4375 -0.1021,-1.176516 -10.44283,-2.551682 -15.8125,-2.90625 C 164.11368,55.160248 148.9535,55.125 153.3437,55.125 z" + transform="translate(182.50939,276.31877)" + id="path4595" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csccccccccccsccccccssccccscscsssc" /> + <path + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 65.499998,-9.5139876 c -8.954294,0.1483005 -19.248892,-7.3923174 -26.749999,-2.4999994 -5.076694,3.3110851 -4.642742,11.29096509 -5.75,17.2499991 -2.666936,14.3528919 1.541694,29.5875679 -2,43.7499989 -1.880955,7.52151 -8.690055,13.358327 -10,20.999999 -0.537986,3.138385 1.205024,6.322445 1,9.5 -1.621617,25.13261 -27.4347299,50.35742 -17.4999991,73.5 2.356767,5.49 9.7275671,7.45939 15.4999991,9 36.232152,9.67 76.167573,13.51674 109.671571,-3.32843 3.72263,-1.87167 6.85226,-5.88399 7.5,-10 3.42497,-21.7637 -15.53292,-37.86474 -18.67157,-59.67157 -0.5229,-3.633015 0.85173,-7.346439 0.5,-11 C 117.98121,67.403485 114.81009,57.089033 111.5,46.986011 107.73188,35.484991 99.989549,25.329759 97.499997,13.486012 95.64834,4.6769747 99.566229,-4.0905867 92.757356,-9.9784532 84.75125,-16.901605 76.082864,-9.6892604 65.499998,-9.5139876 z" + id="path3052" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="ssssssssssssssss" /> + <path + style="fill:#d4dce4;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 147.0625,192.5 c -0.73871,-3.45489 -0.44801,0.45923 -0.5625,0.75 -0.85979,2.18351 -0.69371,4.65399 -0.75,7 -0.0681,2.83741 0.85701,5.68431 0.5,8.5 -0.30829,2.43144 -1.93102,4.56994 -2.25,7 -0.43437,3.30911 0.95216,6.69327 0.5,10 -0.28561,2.08875 -3.38129,4.40736 -2,6 0.61045,0.70385 2.03342,0.0954 2.75,-0.5 1.44032,-1.19684 1.38252,-3.48204 2,-5.25 0.63436,-1.81631 0.88874,-3.77965 1.75,-5.5 0.12034,-0.24038 0.46875,-0.65625 0.46875,-0.65625 1.15929,-1.623 -0.96051,-3.86367 -1.25,-5.875 -0.5229,-3.63302 0.85173,-7.34644 0.5,-11 -0.33823,-3.51328 -0.91725,-7.01249 -1.65625,-10.46875 z" + transform="translate(182.50939,276.81877)" + id="path4493" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssssssssssss" /> + <path + style="color:#000000;fill:#d4dce4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 73.21875,111.375 -6.03125,12 -1.8125,9 c -0.05069,0.0311 -0.123971,0.0429 -0.15625,0.0937 -3.217071,5.06524 -0.05161,16.19117 -0.125,24.03125 -0.06555,7.00168 -0.778248,11.54518 -1.25,18.53125 -0.284296,4.21008 -2.571865,7.76236 -2.90625,11.96875 -0.224526,2.82442 1.461451,6.07267 0,8.5 -1.653622,2.74651 -5.629723,1.38193 -6.375,4.5 -0.806233,3.37309 2.651005,5.25506 3.875,8.5 1.656427,4.39136 -1.635981,9.05524 -2.5625,13.65625 -1.089735,5.41154 -6.7124,9.1321 -8,14.5 -1.166917,4.86478 3.172961,10.77116 0.5,15 -2.233343,3.53333 -7.23705,4.10521 -9.71875,7.46875 -3.584189,4.85778 -4.010612,14.2576 -1.1875,19.59375 2.998417,5.6675 9.610859,6.15012 15.75,8 12.988819,3.9139 30.909319,6.1819 44.46875,6.59375 8.83555,0.26837 17.77189,0.39966 26.5,-1 11.30233,-1.81247 28.33838,-2.14268 33.53125,-12.34375 0.88498,-1.73849 -0.41033,-4.36929 -2,-5.5 -9.37221,-6.66629 -23.02025,0.20218 -34.5,-0.5 -6.19103,-0.37869 -15.10802,3.19295 -18.5,-2 -1.81603,-2.78025 1.78638,-6.4089 3,-9.5 1.28056,-3.26159 3.09866,-6.28845 4.5,-9.5 1.07684,-2.46787 4.11884,-5.05088 3,-7.5 -1.90545,-4.17098 -15.88288,0.26948 -19,-3.09375 -2.225867,-2.40161 -2.45002,-6.2259 -2.5,-9.5 -0.06787,-4.4467 3.211056,-8.55779 3,-13 -0.275138,-5.79098 -4.148285,-10.86227 -5.5,-16.5 -1.571752,-6.55546 -3.251345,-13.26344 -3,-20 0.140197,-3.75756 0.05789,-8.1408 2.5,-11 1.165829,-1.36494 3.880454,-0.59685 5,-2 3.080313,-3.86063 8.35791,-10.43849 9.375,-15.90625 0.17918,-0.10793 0.36621,-0.18814 0.53125,-0.28125 0.64357,-0.36308 0.86019,-0.90717 1.59911,-0.90717 0.73892,0 1.00766,1.14797 1.6875,1.4375 0.96315,0.4102 2.08251,0.4081 3.125,0.3125 0.66969,-0.0614 1.83335,0.10189 1.9375,-0.5625 0.32304,-2.06077 -5.0993,-1.41593 -5.1875,-3.5 -0.0407,-0.96222 1.61516,-1.08828 2.25,-1.8125 0.73954,-0.84366 0.9189,-1.2375 1.75,-1.99112 2.8439,-2.57878 6.69652,-2.18423 9.84467,-4.38128 1.52232,-1.06241 2.939,-2.35169 4,-3.875 0.88498,-1.27058 2.49372,-6.28293 2.49372,-6.28293 l 0.125,-1.5625 0.5,-3.6875 c 0,0 -1.6367,0.47858 -3.96875,1.28125 1.21308,-2.99791 1.40107,-6.69849 -0.125,-9.375 -1.04422,-1.83141 -3.78012,-3.80531 -5.65625,-2.84375 -0.57763,0.29605 -0.76986,1.1252 -0.6875,1.875 L 105.5,113.625 c -3.24171,0.86482 -6.636536,1.78339 -10.28125,1.84375 -6.031125,0.0999 -12.672166,-3.27202 -18.65625,-4 z m 44.53125,8.0625 c 0.53888,0.46039 1.66092,0.29448 2.09375,0.90625 0.68597,0.96955 0.80866,2.40305 0.4375,3.53125 -1.28301,3.89986 -5.20831,6.41134 -8.46875,8.90625 -1.8308,1.40094 -4.01857,3.52714 -5.4375,2.25 -0.0112,-0.0101 -0.0202,-0.0208 -0.0313,-0.0313 -0.11355,-0.1749 -0.18744,-0.39723 -0.25,-0.65625 -0.282,-1.16765 1.06806,-2.38194 0.71875,-3.53125 -0.3877,-1.2756 -3.15148,-1.51529 -2.84375,-2.8125 0.88732,-3.74045 6.88312,-3.83211 10.25,-5.6875 1.23941,-0.683 2.74347,-2.1156 3.53125,-2.875 z" + transform="translate(182.50939,276.81877)" + id="path3990" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccsssssssssssssssssssssssssssscsscsscssssccccssccscccssscccsssc" /> + <path + sodipodi:nodetypes="ssssssssssssssss" + transform="translate(212.23005,401.7896)" + inkscape:connector-curvature="0" + id="path4515" + d="m 65.499998,-9.5139876 c -8.954294,0.1483005 -19.248892,-7.3923174 -26.749999,-2.4999994 -5.076694,3.3110851 -4.642742,11.29096509 -5.75,17.2499991 -2.666936,14.3528919 1.541694,29.5875679 -2,43.7499989 -1.880955,7.52151 -8.690055,13.358327 -10,20.999999 -0.537986,3.138385 1.205024,6.322445 1,9.5 -1.621617,25.13261 -27.4347299,50.35742 -17.4999991,73.5 2.356767,5.49 9.7275671,7.45939 15.4999991,9 36.232152,9.67 76.167573,13.51674 109.671571,-3.32843 3.72263,-1.87167 6.85226,-5.88399 7.5,-10 3.42497,-21.7637 -15.53292,-37.86474 -18.67157,-59.67157 -0.5229,-3.633015 0.85173,-7.346439 0.5,-11 C 117.98121,67.403485 114.81009,57.089033 111.5,46.986011 107.73188,35.484991 99.989549,25.329759 97.499997,13.486012 95.64834,4.6769747 99.566229,-4.0905867 92.757356,-9.9784532 84.75125,-16.901605 76.082864,-9.6892604 65.499998,-9.5139876 z" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#272759;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:#d4dce4;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 103.625,175.73691 c 0,0 -2.29065,0.98649 -3.3125,1.6875 -0.90024,0.61758 -1.942833,1.21429 -2.4375,2.1875 -0.65469,1.28804 -0.429955,2.86764 -0.4375,4.3125 -0.006,1.15054 0.174494,2.29525 0.3125,3.4375 0.133941,1.10861 -0.256876,2.49146 0.5,3.3125 0.493216,0.53503 1.465797,0.19184 2.125,0.5 0.94365,0.44114 1.50312,1.57284 2.5,1.875 1.81706,0.55076 3.92384,0.39074 5.6875,-0.3125 1.34546,-0.53649 2.54345,-1.58504 3.3125,-2.8125 0.35413,-0.56522 0.21107,-1.33634 0.5,-1.9375 0.45124,-0.93886 1.72011,-1.46991 1.875,-2.5 0.21068,-1.40107 -0.56107,-2.88678 -1.4375,-4 -1.75858,-2.2337 -4.73195,-3.15278 -7.125,-4.6875 -0.49632,-0.31831 -1.5,-0.9375 -1.5,-0.9375" + id="path4453" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="sssssssssssssss" /> + <path + style="fill:#d4dce4;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 109.75,212.23691 c -2.41487,-0.37958 -4.77871,1.77364 -6.375,3.625 -0.90446,1.04898 -0.93967,2.60834 -1.5,3.875 -0.30154,0.68164 -0.99482,1.25466 -1,2 -0.009,1.34174 0.90491,2.5828 1.75,3.625 0.72963,0.89981 1.75946,1.52429 2.75,2.125 1.0202,0.6187 2.07523,1.29138 3.25,1.5 1.5229,0.27044 3.17672,0.168 4.625,-0.375 1.11585,-0.41836 2.05303,-1.26216 2.875,-2.125 0.62173,-0.65265 1.18569,-1.40519 1.5,-2.25 0.35141,-0.94453 0.68128,-2.03989 0.375,-3 -1.23683,-3.87721 -4.22966,-8.36807 -8.25,-9 z" + id="path4455" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="ssssssssssss" /> + <path + style="color:#000000;fill:#d4dce4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 116.25,82.236008 c -1.74043,-1.513524 -6.40687,5.996226 -10.25,8 -3.01514,1.572071 -7.427194,0.874871 -9.75,3 -3.443086,3.150069 9.48005,1.160979 14,0 1.84232,-0.473211 3.93497,-1.174005 5,-2.75 1.55105,-2.295182 3.09029,-6.432228 1,-8.25 z" + id="path3999" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="ssssss" /> + <path + style="fill:#c7d2dd;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 63,286.48691 c -4.503164,-0.73076 -9.705824,0.28313 -13.5,-2.25 -3.269182,-2.18262 -8.104791,-6.53429 -6.25,-10 1.337509,-2.49916 6.788612,2.00962 8.5,-0.25 1.244679,-1.6434 -2.570574,-4.23822 -1.5,-6 0.934187,-1.53734 3.463352,-1.04024 5.25,-1.25 1.407003,-0.16519 3.53364,1.2222 4.25,0 1.207409,-2.05999 -2.253486,-4.21344 -3.5,-6.25 -0.470564,-0.76881 -1.710059,-1.37343 -1.5,-2.25 0.713006,-2.97535 5.94994,-2.2288 8,-4.5 1.400383,-1.55145 3.943355,-4.23845 2.5,-5.75 -1.293283,-1.35439 -3.662768,2.9938 -5.25,2 -2.410781,-1.50944 -1.578877,-5.77911 -0.75,-8.5 0.811622,-2.66425 5.428409,-3.72059 5.25,-6.5 -0.1699,-2.64686 -6.113341,-2.8727 -5.75,-5.5 0.413659,-2.99114 6.717836,-1.51612 8,-4.25 0.867458,-1.84963 -1.153264,-3.95935 -1.25,-6 -0.03573,-0.75377 0.02677,-1.52916 0.25,-2.25 0.419069,-1.35326 1.781222,-2.35033 2,-3.75 0.143883,-0.92052 0.145899,-2.07853 -0.5,-2.75 -1.065243,-1.10741 -3.153016,-0.26058 -4.5,-1 -0.723163,-0.39698 -1.949639,-0.94956 -1.75,-1.75 0.759134,-3.04368 5.874021,-3.01179 9,-2.75 0.928445,0.0778 1.612317,1.53298 2.5,1.25 1.349745,-0.43027 2.307318,-2.36707 2,-3.75 -0.632714,-2.84721 -5.241301,-2.92322 -7,-5.25 -0.699881,-0.92595 -1.542154,-2.12667 -1.25,-3.25 0.655294,-2.5196 5.145845,-2.54069 6,-5 1.061726,-3.05695 -1.201022,-6.3641 -2,-9.5 -0.429613,-1.68618 -2.614301,-3.66355 -1.5,-5 1.449731,-1.73876 4.722325,-0.25674 6.75,0.75 2.059029,1.02231 5.363272,2.78446 4.75,5 -0.415311,1.50038 -4.14367,-0.26547 -4.5,1.25 -0.513226,2.18275 4.653941,2.28459 5,4.5 0.178673,1.14383 -1.059087,2.07107 -1.75,3 -1.020435,1.37198 -2.959508,2.12782 -3.5,3.75 -0.980332,2.94228 0.186927,6.25718 1,9.25 0.479156,1.76371 1.053892,3.61812 2.25,5 0.711087,0.82153 1.920624,1.04808 2.75,1.75 0.855788,0.72427 2.46827,1.40032 2.25,2.5 -0.413629,2.08394 -4.890243,0.80714 -5.75,2.75 -1.056217,2.38682 0.446593,5.61315 2.25,7.5 1.220064,1.27652 4.768137,-5.1e-4 5,1.75 0.25191,1.90187 -3.172472,2.15823 -4.75,3.25 -0.836435,0.57888 -2.242158,0.76601 -2.5,1.75 -0.585766,2.23543 1.006637,5.08091 3,6.25 1.152364,0.67585 2.898349,-1.0057 4,-0.25 1.369219,0.93925 2.405952,3.35853 1.5,4.75 -0.823468,1.26478 -3.452084,-0.58612 -4.5,0.5 -2.32096,2.40557 -0.694485,6.65777 -0.75,10 -0.03324,2.00146 -1.324113,4.76343 0.25,6 2.339013,1.83745 7.388957,-4.39477 8.75,-1.75 1.672591,3.25016 -7.28314,3.9157 -8,7.5 -0.35843,1.79215 2.005957,3.18872 2.25,5 0.360397,2.67485 -1.041039,5.30908 -1.25,8 -0.07742,0.997 -0.633989,2.22666 0,3 1.616361,1.97164 5.942251,-0.51827 7.5,1.5 0.867079,1.12342 -1.262465,3.25561 -0.25,4.25 4.65111,4.56806 13.91113,-4.85627 19.5,-1.5 1.24767,0.74926 0.92956,2.79794 1.75,4 0.66437,0.9734 1.3521,2.23314 2.5,2.5 3.77326,0.87721 7.20997,-4.55161 11,-3.75 1.44241,0.30508 1.91176,2.38135 3.25,3 2.51445,1.16239 7.77722,-1.72948 8.25,1 0.54065,3.12129 -5.45039,3.39292 -8.5,4.25 -5.71629,1.60653 -11.81612,1.71459 -17.75,1.5 -16.019015,-0.5793 -31.677495,-4.93236 -47.5,-7.5 z" + id="path3864" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss" /> + <path + style="fill:#c7d2dd;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 65.584154,134.03344 c -1.109323,0.43933 -1.654938,2.24103 -1.237437,3.35875 0.470636,1.25997 2.623971,0.95557 3.535534,1.94455 1.269193,1.37699 2.305909,3.25385 2.298097,5.12652 -0.0065,1.55567 -2.547113,2.8084 -1.944544,4.24264 0.606447,1.44347 3.539894,0.29568 4.419418,1.59099 1.026675,1.51203 0.961222,4.04996 -0.176777,5.48008 -1.290443,1.6217 -5.008509,-0.22321 -6.010407,1.59099 -0.477521,0.86468 0.426789,1.95278 0.883883,2.82843 1.37993,2.64351 5.253347,4.09769 5.480078,7.07106 0.09226,1.20984 -0.7745,2.4851 -1.767767,3.18199 -1.514678,1.06271 -4.787425,-0.83188 -5.480078,0.88388 -0.441172,1.09282 1.539417,1.8036 2.12132,2.82843 1.226489,2.16006 3.154783,4.43185 2.828428,6.89429 -0.331367,2.50026 -4.126623,3.53238 -4.596195,6.0104 -0.319475,1.68594 0.544014,3.47083 1.414214,4.94975 0.549388,0.93369 1.897083,1.29172 2.298097,2.2981 0.80735,2.02611 1.340789,4.97423 -0.176777,6.54074 -1.39642,1.44145 -4.829358,-1.26907 -6.010407,0.35355 -0.967228,1.32886 0.379876,3.37084 1.237437,4.77297 1.110659,1.81595 4.051553,2.23994 4.77297,4.24264 1.838664,5.10425 -0.632218,10.98387 -2.474873,16.08668 -0.933582,2.58534 -4.743304,4.36831 -4.242641,7.07107 0.313466,1.6922 2.406407,3.63806 4.065864,3.18198 5.180797,-1.42387 4.485129,-9.8251 5.833631,-15.02602 1.298848,-5.00941 1.916979,-10.20855 2.12132,-15.37957 0.200436,-5.0722 -2.00346,-10.25165 -0.883883,-15.2028 0.593296,-2.62376 3.30892,-4.44438 3.889087,-7.07107 0.560484,-2.53758 -0.44189,-5.18093 -0.53033,-7.77817 -0.0742,-2.17898 -1.474368,-4.93459 0,-6.54074 1.399786,-1.5249 5.612328,1.4582 6.187184,-0.53033 0.677496,-2.34359 -5.066337,-2.10368 -5.833631,-4.41942 -0.59826,-1.80558 -0.05429,-4.52556 1.590991,-5.48007 1.520554,-0.88215 3.532432,1.97848 5.126524,1.23743 1.07534,-0.49989 2.002418,-2.06979 1.59099,-3.18198 -0.842929,-2.27865 -7.198433,-0.44693 -6.717514,-2.82842 0.5832,-2.88798 6.533139,1.83421 8.838834,0 0.615237,-0.48943 0.904914,-1.60691 0.53033,-2.2981 -1.225746,-2.26177 -7.121844,-0.0822 -7.247844,-2.65165 -0.08649,-1.76368 3.226444,-1.44586 4.772971,-2.2981 0.973743,-0.5366 1.718405,-1.70482 2.828427,-1.76777 2.868277,-0.16266 5.995917,1.45908 7.778174,3.71231 1.383819,1.7495 -0.550272,5.4841 1.414214,6.54074 1.002259,0.53909 2.518744,-0.31263 3.181984,-1.23743 1.54689,-2.15692 1.51539,-5.56848 0.35355,-7.95496 -1.33129,-2.73453 -4.815946,-3.73971 -7.424621,-5.3033 -5.696024,-3.41409 -11.266334,-8.00369 -17.854447,-8.83883 -3.405133,-0.43165 -6.672001,2.55972 -10.076271,2.12132 -0.261364,-0.0337 -0.462098,-0.45058 -0.707107,-0.35355 z" + id="path3845" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="sssssssssssssssssssssssssssssssssssssssssssssssss" /> + <path + style="fill:#d4dce4;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 106.25,254.48691 c -1.66743,0.87355 -2.26835,3.1517 -2.625,5 -0.3095,1.60394 -0.12945,3.36762 0.5,4.875 0.70717,1.69351 1.83131,3.4861 3.5,4.25 1.62952,0.74597 3.58642,-0.0119 5.375,-0.125 1.21236,-0.0767 2.60484,0.28452 3.625,-0.375 1.25432,-0.81091 1.70239,-2.48539 2.25,-3.875 0.54846,-1.39177 1.54133,-2.98044 1,-4.375 -0.9536,-2.45664 -4.03731,-3.56214 -6.5,-4.5 -2.23617,-0.8516 -5.00542,-1.98543 -7.125,-0.875 z" + id="path4457" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="ssssssssss" /> + <path + style="color:#000000;fill:#aa0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 90.55386,-8.3452848 c -0.200706,1.3088886 1.942905,2.7865548 1.900349,4.1100581 -0.09576,2.9781373 -1.957593,5.723525 -3.71231,8.1317278 C 84.983766,9.0542263 77.494984,11.114074 74.599764,16.8012 c -0.726238,1.426561 -1.789654,3.784736 -0.530331,4.77297 2.023813,1.588155 4.923914,-1.548292 7.247845,-2.65165 3.96202,-1.881091 8.020071,-3.821299 11.313708,-6.717514 2.584791,-2.2729007 4.701036,-4.3216337 5.745243,-7.6013981 0.751663,-2.360909 0.1664,-5.09050312 -0.353554,-7.5130094 -0.438595,-2.0434504 -0.438529,-4.5938037 -1.679379,-6.2755725 -0.672035,-0.910834 -1.527059,-2.249948 -2.65165,-2.12132 -1.417197,0.162096 -2.921583,1.5510525 -3.137786,2.9610092 z" + id="path3093" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="ssssssssssss" /> + <path + style="fill:#c30b0b;fill-opacity:1;stroke:none" + d="M 123.03125 113.75 C 121.73526 114.08712 120.47831 115.33986 120.28125 116.625 C 120.08054 117.93389 122.23006 119.4265 122.1875 120.75 C 122.0917 123.72814 120.22347 126.4668 118.46875 128.875 C 115.16673 133.40675 108.97829 135.53342 105.5625 139.84375 L 106.375 142.875 C 106.375 142.875 109.39003 139.19897 111.25 137.75 C 113.32522 136.13334 116.13099 135.59083 118.125 133.875 C 120.33625 131.97223 122.44435 129.78537 123.96875 127.28125 C 125.85418 126.29162 126.37197 128.70813 126.46875 132.53125 L 126.6875 132.53125 C 127.2648 131.64527 127.73957 130.67495 128.09375 129.5625 C 128.84541 127.20159 128.26995 124.48501 127.75 122.0625 C 127.3114 120.01905 127.30335 117.46302 126.0625 115.78125 C 125.87894 115.53246 125.68138 115.27406 125.46875 115 L 125.1875 115.9375 C 124.6266 115.04409 124 114.25 124 114.25 L 123.03125 113.75 z " + transform="translate(182.50939,276.81877)" + id="path4190" /> + <path + style="fill:#900000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 128.03125,123.5 c 0,0 -0.36007,4.25358 -1.28125,6.125 -1.18757,2.41259 -3.20677,4.37683 -5.25,6.125 -1.26521,1.0825 -2.786,1.83173 -4.25,2.625 -1.37659,0.74591 -2.88656,1.23031 -4.25,2 -0.39247,0.22156 -0.76753,0.47552 -1.125,0.75 -1.10055,0.84506 -1.89192,2.11372 -3.125,2.75 -1.29332,0.66737 -3.70346,-0.34883 -4.25,1 -0.29732,0.73379 1.28125,2 1.28125,2 1.70056,-0.43386 3.61373,-2.19188 5.25,-2.96875 3.96202,-1.88109 8.01886,-3.82253 11.3125,-6.71875 2.58479,-2.2729 4.70579,-4.34524 5.75,-7.625 0.60771,-1.90878 0.33653,-4.02886 -0.0625,-6.0625 z" + transform="translate(182.50939,276.81877)" + id="path4316" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssssssscsssc" /> + <path + sodipodi:nodetypes="ssssssssssss" + transform="translate(212.23005,401.7896)" + inkscape:connector-curvature="0" + id="path4192" + d="m 90.55386,-8.3452848 c -0.200706,1.3088886 1.942905,2.7865548 1.900349,4.1100581 -0.09576,2.9781373 -1.957593,5.723525 -3.71231,8.1317278 C 84.983766,9.0542263 77.494984,11.114074 74.599764,16.8012 c -0.726238,1.426561 -1.789654,3.784736 -0.530331,4.77297 2.023813,1.588155 4.923914,-1.548292 7.247845,-2.65165 3.96202,-1.881091 8.020071,-3.821299 11.313708,-6.717514 2.584791,-2.2729007 4.701036,-4.3216337 5.745243,-7.6013981 0.751663,-2.360909 0.1664,-5.09050312 -0.353554,-7.5130094 -0.438595,-2.0434504 -0.438529,-4.5938037 -1.679379,-6.2755725 -0.672035,-0.910834 -1.527059,-2.249948 -2.65165,-2.12132 -1.417197,0.162096 -2.921583,1.5510525 -3.137786,2.9610092 z" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:#aa0000;stroke:none" + d="m 40.811368,-14.884722 c -2.237145,-0.286337 -5.01082,1.193655 -6.290739,3.0507 -2.020273,2.9312296 -3.952178,9.3489536 -3.218592,12.83255244 0.842739,4.00193526 2.659294,5.66234076 5.997845,8.02449466 7.334995,5.1897929 17.622142,4.0761519 25.809397,7.7781749 2.845666,1.286722 4.836402,5.117448 7.954951,4.949747 1.718507,-0.09241 3.961505,-1.464158 4.065864,-3.181981 0.181916,-2.994479 -4.014848,-4.498038 -6.363961,-6.36396 C 65.450079,9.5710337 61.610105,7.6729794 57.982755,5.4874913 52.667549,2.2850656 45.881664,1.4592377 42.072853,-3.4397316 c -1.053226,-1.3546805 -2.000066,-3.3230957 -1.944544,-5.0381356 0.02834,-0.8755328 1.408213,-1.9692428 1.237437,-2.8284268 -0.325325,-1.63673 1.100868,-3.366569 -0.554378,-3.578428 z" + id="path3091" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="sssssssssssss" /> + <path + style="fill:#a00000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;fill-opacity:1;fill-rule:nonzero" + d="M 67.1875 117.125 C 66.99006 117.1271 66.805342 117.16268 66.625 117.25 C 65.2481 117.91665 64.830845 119.7897 64.375 121.25 C 63.838819 122.96766 63.806329 124.82691 63.875 126.625 C 63.94114 128.35679 63.751044 130.33382 64.75 131.75 C 66.902998 134.80222 70.917316 136.01839 74.46875 137.3125 C 74.510758 137.32395 74.551677 137.33244 74.59375 137.34375 C 76.810568 137.93989 79.125761 138.36876 81.4375 138.78125 C 84.643763 139.12751 87.889912 139.37154 90.75 140.75 C 90.925031 140.83436 91.090595 140.96431 91.25 141.125 C 91.259158 141.1284 91.272096 141.12159 91.28125 141.125 C 91.808125 141.32147 92.332047 141.54987 92.84375 141.78125 C 93.212187 141.94785 93.562173 142.16856 93.90625 142.40625 C 93.426054 141.27791 91.148235 139.65704 92 138.75 C 92.658498 138.04877 94.339242 140.49484 94.75 139.625 C 95.470517 138.0992 91.754806 138.00313 90.5 136.875 C 89.662825 136.12234 88.817278 135.28525 88.375 134.25 C 87.921269 133.18794 88.104168 131.91695 88.125 130.71875 C 87.987202 130.63684 87.855979 130.55143 87.71875 130.46875 C 82.403544 127.26632 75.590061 126.43022 71.78125 121.53125 C 71.029419 120.56423 70.348754 119.27709 70.03125 118 C 69.689499 117.88043 69.336725 117.74413 69 117.625 C 68.433312 117.42452 67.779821 117.1187 67.1875 117.125 z " + transform="translate(182.50939,276.81877)" + id="path4713" /> + <path + style="fill:#900000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 61.21875,121.03125 c -0.04771,0.24509 -0.08642,0.47698 -0.125,0.71875 l 0.03125,0.375 -0.0625,-0.0625 c -0.208692,1.45422 -0.258891,2.82525 -0.03125,3.90625 0.842739,4.00194 2.661449,5.6691 6,8.03125 7.334995,5.18979 17.625245,4.07923 25.8125,7.78125 2.845666,1.28672 4.818951,5.1052 7.9375,4.9375 0.68551,-0.0369 1.47286,-0.27149 2.15625,-0.65625 0,0 -3.216527,-1.1963 -4.6875,-2.0625 -2.254824,-1.32778 -3.910047,-3.57874 -6.25,-4.75 -6.510103,-3.25861 -14.35824,-3.01889 -21,-6 -2.341129,-1.0508 -4.844502,-2.16429 -6.5,-4.125 -1.807201,-2.14038 -3.25,-7.75 -3.25,-7.75 z" + transform="translate(182.50939,276.81877)" + id="path4205" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccsssscsssscc" /> + <path + style="fill:#c30b0b;fill-opacity:1;stroke:none" + d="m 69.875,110.71875 c -0.532429,-0.0187 -1.038617,0.0459 -1.5,0.15625 -1.461694,0.34947 -1.689595,2.02874 -2.241117,3.42678 -1.07045,2.71345 -1.212064,6.15752 0.125,8.75 1.776306,3.44414 6.132078,4.43336 9.551777,6.25628 4.652383,2.48001 10.18477,2.96733 14.875,5.375 3.732284,1.91592 5.616263,4.77672 9.57951,6.15273 1.18347,0.41089 3.04137,2.83587 3.48483,1.66421 0.65197,-1.72258 -2.88988,-2.28561 -4.375,-3.375 -4.054245,-2.97394 -8.139367,-5.91563 -12.375,-8.625 -1.968593,-1.25923 -4.330193,-2.29832 -6.625,-3.375 -0.107489,-0.0439 -0.205351,-0.11201 -0.3125,-0.15625 -3.158278,-1.30391 -6.18502,-2.74129 -8.28125,-5.4375 -1.053226,-1.35468 -1.993022,-3.31621 -1.9375,-5.03125 0.02834,-0.87553 1.420776,-1.98457 1.25,-2.84375 -0.19793,-0.9958 0.239667,-2.01685 0.25,-2.71875 -0.473776,-0.13033 -0.979324,-0.20159 -1.46875,-0.21875 z" + transform="translate(182.50939,276.81877)" + id="path4183" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csssssssssccssscc" /> + <g + id="g4549" + style="color:#000000;fill:#d6cda8;fill-opacity:1;fill-rule:nonzero;stroke:#2a2626;stroke-width:2.1744945;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + transform="matrix(0.83326358,0.38938306,-0.38938306,0.83326358,178.77915,25.740395)" /> + <path + sodipodi:nodetypes="sssssssssssss" + transform="translate(212.23005,401.7896)" + inkscape:connector-curvature="0" + id="path4188" + d="m 40.811368,-14.884722 c -2.237145,-0.286337 -5.01082,1.193655 -6.290739,3.0507 -2.020273,2.9312296 -3.952178,9.3489536 -3.218592,12.83255244 0.842739,4.00193526 2.659294,5.66234076 5.997845,8.02449466 7.334995,5.1897929 17.622142,4.0761519 25.809397,7.7781749 2.845666,1.286722 4.836402,5.117448 7.954951,4.949747 1.718507,-0.09241 3.961505,-1.464158 4.065864,-3.181981 0.181916,-2.994479 -4.014848,-4.498038 -6.363961,-6.36396 C 65.450079,9.5710337 61.610105,7.6729794 57.982755,5.4874913 52.667549,2.2850656 45.881664,1.4592377 42.072853,-3.4397316 c -1.053226,-1.3546805 -2.000066,-3.3230957 -1.944544,-5.0381356 0.02834,-0.8755328 1.408213,-1.9692428 1.237437,-2.8284268 -0.325325,-1.63673 1.100868,-3.366569 -0.554378,-3.578428 z" + style="fill:none;stroke:#2b0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 68.589356,-68.758719 c -8.373119,0.487955 -17.410337,2.28914 -24.04163,7.424621 -7.990433,6.188042 -15.570432,15.708722 -15.909902,25.809397 -0.246133,7.323514 6.394128,13.216216 10.253048,19.445436 1.911912,3.086284 3.188484,7.0790337 6.363961,8.8388347 11.053175,6.1255007 25.758798,6.2132439 37.830212,2.4748736 6.013092,-1.8621817 11.902958,-6.1044913 14.849242,-11.6672613 3.981083,-7.51653 3.484103,-17.125093 1.767767,-25.455844 -1.765547,-8.56962 -4.998127,-18.115576 -12.020815,-23.334523 -5.194748,-3.860503 -12.630683,-3.91207 -19.091883,-3.535534 z" + id="path3071" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="ssssssssss" /> + <path + style="color:#000000;fill:#d4dce4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 76.78125,-68.75 c -16.894915,0.71382 -34.234605,10.223464 -45.375,22.9375 -1.605576,3.281005 -2.662194,6.738827 -2.78125,10.28125 -0.134492,4.001701 1.81831,7.56437 4.21875,11 1.580404,0.377723 3.115906,0.846797 4.28125,1.75 2.778899,2.153794 4.909543,5.110389 6.71875,8.125 1.11494,1.857782 1.126749,4.298977 2.46875,6 1.380538,1.749869 3.192525,3.3237813 5.28125,4.15625 1.668342,0.6649237 3.448608,1.1119311 5.25,1.375 3.497206,0.5107195 7.175616,0.1113316 10.6875,-0.21875 4.263506,-0.4007263 9.084763,-0.2878708 13.5625,-0.875 0.01994,-0.00261 0.04309,0.00524 0.0625,0 0.646312,-0.1746097 1.309771,-0.3197848 1.9375,-0.53125 8.771388,-2.9548481 -2.26253,-6.567214 -3.6875,-6.53125 -8.818656,0.222571 -14.366543,-0.219014 -16.75,-4.09375 -1.528778,-2.485302 -5.785117,-11.407794 -5.125,-14.25 2.018643,-8.69149 33.963651,-24.353605 31.5625,-34.1875 -0.03873,-0.125957 -0.07594,-0.253938 -0.125,-0.375 -0.0061,-0.0053 -0.02518,0.0053 -0.03125,0 -0.404224,-0.35293 -0.817579,-0.709894 -1.25,-1.03125 -3.062328,-2.275784 -6.913798,-3.210191 -10.875,-3.53125 -0.01029,-8.34e-4 -0.02096,8.26e-4 -0.03125,0 z" + transform="translate(212.23005,401.7896)" + id="path3968" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccscsssssssssssscccscc" /> + <path + style="fill:#d4dce4;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 127.625 77.75 C 127.625 77.75 128.5978 86.324546 128.5 90.625 C 128.38272 95.781758 128.69545 101.22285 126.75 106 C 125.23799 109.71282 121.56202 112.14022 119.375 115.5 C 119.03938 116.01559 118.5 117.125 118.5 117.125 L 118.96875 117.40625 C 122.59087 115.1979 125.74358 112.14249 127.65625 108.53125 C 131.63733 101.01472 131.15384 91.424501 129.4375 83.09375 C 129.08211 81.368776 128.61821 79.604588 128.125 77.84375 L 127.625 77.75 z " + transform="translate(182.50939,276.81877)" + id="path4755" /> + <path + transform="matrix(0.51188471,0,0,0.51828281,272.30589,398.62447)" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + sodipodi:ry="6.5407376" + sodipodi:rx="6.5407376" + sodipodi:cy="-40.474449" + sodipodi:cx="57.275646" + id="path3963" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:2.91220379;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="color:#000000;fill:#d4dce4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 66.114484,-30.751735 c -1.749391,0.956727 -2.385688,3.209394 -3.358757,4.949748 -2.239527,4.00544 -7.328042,8.277252 -5.656855,12.551145 0.932665,2.385197 4.629272,3.7776426 7.071068,3.005204 2.447606,-0.774277 2.260225,-4.715924 4.065864,-6.540738 3.24234,-3.276771 9.553237,-3.328171 11.667262,-7.424621 1.055284,-2.044875 1.335433,-5.331452 -0.353553,-6.894291 -3.288176,-3.042588 -9.504527,-1.796005 -13.435029,0.353553 z" + id="path4007" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="ssssssss" /> + <path + style="color:#000000;fill:#b0becc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 110.25,120.23691 c -4.20564,-2.66678 -9.60298,-0.29652 -12.75,-0.25 -6.199561,-0.78748 -13.197505,-3.6045 -18.25,-1.25 -1.70264,1.05589 -3.748343,-1.83519 -5.75,-1.75 -0.448358,0.0191 -1.159769,0.0604 -1.25,0.5 -0.28435,1.38533 1.858421,2.16526 3,3 2.196284,1.60596 4.618225,3.05968 7.25,3.75 4.516843,1.18477 9.376237,1.15297 14,0.5 4.77516,-0.67435 11.7624,-0.1061 13.75,-4.5 z" + id="path4306" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="cccsssssc" /> + <path + sodipodi:nodetypes="ssssssssss" + transform="translate(212.23005,401.7896)" + inkscape:connector-curvature="0" + id="path4085" + d="m 68.589356,-68.758719 c -8.373119,0.487955 -17.410337,2.28914 -24.04163,7.424621 -7.990433,6.188042 -15.570432,15.708722 -15.909902,25.809397 -0.246133,7.323514 6.394128,13.216216 10.253048,19.445436 1.911912,3.086284 3.188484,7.0790337 6.363961,8.8388347 11.053175,6.1255007 25.758798,6.2132439 37.830212,2.4748736 6.013092,-1.8621817 11.902958,-6.1044913 14.849242,-11.6672613 3.981083,-7.51653 3.484103,-17.125093 1.767767,-25.455844 -1.765547,-8.56962 -4.998127,-18.115576 -12.020815,-23.334523 -5.194748,-3.860503 -12.630683,-3.91207 -19.091883,-3.535534 z" + style="color:#000000;fill:none;stroke:#272759;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="color:#000000;fill:#b0becc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 96.625,97.861908 c -1.325373,1.028409 -1.595576,3.233412 -1.25,4.875002 0.305641,1.45189 1.268283,3.42316 2.75,3.5 2.58606,0.13411 5.4291,-1.83757 6.8125,-3.75 1.14883,-1.58815 1.41872,-3.209841 0.0625,-4.625002 -1.93159,-2.015532 -6.169429,-1.71139 -8.375,0 z" + id="path4287" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="ssssss" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:2.91220379;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3961" + sodipodi:cx="57.275646" + sodipodi:cy="-40.474449" + sodipodi:rx="6.5407376" + sodipodi:ry="6.5407376" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + transform="matrix(0.51188471,0,0,0.51828281,265.05589,405.37447)" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + transform="matrix(0.48437471,0,0,0.48437471,243.03747,295.60731)" + id="path4247" /> + <path + style="fill:#ff6600;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 73.249998,-36.263987 c -2.459777,0.259905 -5.361056,1.69179 -6.25,4 -1.024423,2.659992 0.393259,6.087244 2.25,8.25 3.207713,3.736386 8.896137,4.252303 13.5,6 5.149633,1.95488 10.745192,2.699525 15.749999,5 3.740173,1.719181 6.479273,5.6178472 10.500003,6.4999994 1.54369,0.3386878 2.59952,-0.7217847 1.5,-2.25 -1.45901,-2.0278614 -5.45959,-4.7224184 -8.23483,-6.7222714 -5.111493,-3.68336 -10.560559,-6.337135 -15.265172,-10.527728 -2.772413,-2.469503 -4.644441,-5.965246 -7.75,-8 -1.786661,-1.170616 -3.875824,-2.474444 -6,-2.25 z" + id="path3079" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="sssssssssss" /> + <path + style="color:#000000;fill:#b0becc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 115.75,61.986908 c 0,0 -2.56878,3.905776 -4.25,5.5 -4.99851,4.739856 -12.138098,6.125884 -16,11.75 -1.008421,1.46857 0.864907,3.692583 0,5.25 -1.908431,3.436463 -7.086684,3.879398 -11,4.25 -1.85509,0.175682 -3.354377,1.923001 -4.875,3 -4.673472,3.310041 -10.318328,1.728497 -14.875,1.875 -3.009997,0.09677 -7.5,-3.875 -7.5,-3.875 0,0 19.244218,-18.427598 31.25,-23.5 8.468347,-3.577848 27.25,-4.25 27.25,-4.25 z" + id="path4251" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="csssssscsc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:1.37881243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3081" + sodipodi:cx="57.275646" + sodipodi:cy="-40.474449" + sodipodi:rx="6.5407376" + sodipodi:ry="6.5407376" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + transform="matrix(1.0811569,0,0,1.0946704,208.20046,406.32844)" /> + <path + transform="matrix(1.0811569,0,0,1.0946704,235.60085,405.091)" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + sodipodi:ry="6.5407376" + sodipodi:rx="6.5407376" + sodipodi:cy="-40.474449" + sodipodi:cx="57.275646" + id="path3085" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:1.37881243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="color:#000000;fill:#aa0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 71.241006,22.988384 c -0.178454,2.74844 -0.276161,4.507598 -0.707106,6.717514 -0.774602,3.972212 -3.104327,8.518098 -3.358758,11.667262 -0.127772,1.581466 4.11713,2.889366 4.419418,1.767766 1.065144,-3.95208 1.178118,-8.111306 1.414213,-12.197591 0.146153,-2.529581 0.413158,-5.199963 0,-7.601398 -0.10189,-0.592224 -1.728831,-0.953216 -1.767767,-0.353553 z" + id="path3099" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="sssssss" /> + <path + style="color:#000000;fill:#c30b0b;fill-opacity:1;fill-rule:nonzero;stroke:#2b0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 75.660424,23.518714 c 1.097529,0.360746 2.126408,1.051898 3.270368,1.325825 1.351549,0.323635 2.72974,0.261935 4.154253,0.353553 1.003553,0.06454 0.731777,2.873324 -0.265165,3.005204 -1.933661,0.255793 -3.338466,-0.287068 -4.772971,-1.06066 -1.228711,-0.662612 -2.307714,-1.787611 -3.005204,-2.916816 -0.164588,-0.26646 0.321186,-0.804902 0.618719,-0.707106 z" + id="path3101" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="sssssss" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + transform="translate(163.65844,179.08395)" + id="path4239" /> + <path + style="fill:#4d4d4d;stroke:#1a1a1a;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 85.835045,-76.269126 c -7.190636,-7.312709 -33.950146,1.642875 -48.004833,9.985281 -11.082713,6.578339 -27.63676,21.71499 -25.04163,29.458891 3.479808,10.38379 34.092686,-5.665621 48.547726,-14.377416 10.006629,-6.030817 32.170784,-17.264462 24.498737,-25.066756 z" + id="path3898" + inkscape:connector-curvature="0" + transform="translate(217.48005,402.0396)" + sodipodi:nodetypes="sasas" /> + <path + style="fill:#666666;stroke:none" + d="M 112.25,46.25 C 101.03152,46.074759 83.868977,53.461981 73.327962,59.718786 62.245249,66.297125 45.15487,80.662349 47.75,88.40625 c 3.479808,10.38379 34.10746,-5.663205 48.5625,-14.375 10.00663,-6.030817 32.17205,-17.291456 24.5,-25.09375 -1.79766,-1.828177 -4.82301,-2.629086 -8.5625,-2.6875 z m -2.90625,0.96875 c 4.28443,-0.137706 7.7496,0.62242 9.71875,2.625 C 126.53267,57.440737 104.96207,68.377876 95.21875,74.25 81.144075,82.732556 51.325741,98.360554 47.9375,88.25 45.410657,80.70987 62.036876,66.749025 72.827962,60.343786 82.663952,54.505461 98.39464,47.570667 109.34375,47.21875 z" + transform="matrix(0.97000354,0,0,0.95995614,185.05584,279.20747)" + id="path4160" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssssssssss" /> + <path + transform="matrix(0.51188471,0,0,0.51828281,237.18089,403.24947)" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + sodipodi:ry="6.5407376" + sodipodi:rx="6.5407376" + sodipodi:cy="-40.474449" + sodipodi:cx="57.275646" + id="path3955" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:2.91220379;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:2.91220379;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3957" + sodipodi:cx="57.275646" + sodipodi:cy="-40.474449" + sodipodi:rx="6.5407376" + sodipodi:ry="6.5407376" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + transform="matrix(0.51188471,0,0,0.51828281,246.18089,407.62447)" /> + <path + transform="matrix(0.51188471,0,0,0.51828281,256.30589,407.24947)" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + sodipodi:ry="6.5407376" + sodipodi:rx="6.5407376" + sodipodi:cy="-40.474449" + sodipodi:cx="57.275646" + id="path3959" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:2.91220379;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:#333333;stroke:none" + d="M 100.3125,60.59375 64.875,72.6875 l -16.125,10 c -0.07303,0.842798 -0.214264,2.811002 0.02903,3.536993 2.388804,7.128219 17.220684,1.709234 31.177697,-5.150889 0.1875,-0.103734 0.407911,-0.345476 0.75,-0.6875 l 4.855774,-4.854854 z" + transform="translate(182.50939,276.81877)" + id="path4129" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccscscc" /> + <path + style="fill:#333333;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 45.5625,-107.46875 c -7.822112,-0.12219 -19.443142,5.63023 -26.792893,9.992799 -7.727451,4.586765 -19.9540684,14.013995 -18.144607,19.413451 0.32376567,0.966121 0.9804687,1.571789 1.90625,1.9375 1.8466362,1.434148 11.63376,9.122138 16.46875,14.875 2.730832,3.249252 6.363885,9.562693 7.84375,12.125 0.01925,0.233638 0.272079,0.661132 0.34375,0.875 1.8752,5.595619 18.366714,-3.055386 26.15625,-7.75 5.392375,-3.249888 17.145562,-9.160422 13.1875,-13.53125 -0.124349,-0.137317 -0.336917,-0.552535 -0.4375,-0.71875 -6.289007,-9.408763 -11.429095,-19.62295 -13.5625,-32 0.29184,-1.17145 0.02153,-2.27363 -1,-3.3125 -1.253423,-1.2747 -3.361379,-1.86552 -5.96875,-1.90625 z" + transform="translate(218.10505,401.5396)" + id="path3971" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssscscsssccss" /> + <path + style="fill:#282828;fill-opacity:1;stroke:none" + d="m 43,45.861908 c 9.960043,10.036245 17.401498,20.387313 24.75,30.75 l 11.5,-4.125 c -7.515752,-12.75315 -14.150791,-25.330158 -20,-37.75 z" + id="path4165" + inkscape:connector-curvature="0" + transform="translate(181.75939,276.69377)" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#4d4d4d;fill-opacity:1;stroke:none" + d="m 86.34375,20 -7.5,7.1875 5.125,11.5625 4.5,9.46875 7,10.5 3,4.0625 c 0.0067,-0.005 0.02457,0.005 0.03125,0 3.41609,-2.546027 5.71295,-5.288055 3.625,-7.59375 -0.12435,-0.137317 -0.33692,-0.552535 -0.4375,-0.71875 -6.289007,-9.408763 -11.429095,-19.62295 -13.5625,-32 0.0105,-0.04214 0.02222,-0.08303 0.03125,-0.125 L 86.34375,20 z" + transform="translate(181.09515,277.17233)" + id="path4148" + inkscape:connector-curvature="0" /> + <path + style="fill:#4d4d4d;stroke:#000000;stroke-width:0.71710014;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 85.835045,-76.269126 c -7.190636,-7.312709 -32.628828,2.799522 -46.356867,10.745881 -11.306131,6.544456 -29.284726,20.95439 -26.689596,28.698291 3.479808,10.38379 31.158996,-8.249912 44.998261,-16.152148 10.553548,-6.026088 35.720249,-15.48973 28.048202,-23.292024 z" + id="path3967" + inkscape:connector-curvature="0" + transform="matrix(0.69725269,0,0,0.69725269,209.79975,349.14251)" + sodipodi:nodetypes="sasas" /> + <path + transform="matrix(1.0811569,0,0,1.0946704,226.70046,504.07844)" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + sodipodi:ry="6.5407376" + sodipodi:rx="6.5407376" + sodipodi:cy="-40.474449" + sodipodi:cx="57.275646" + id="path3936" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:1.37881243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:1.37881243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3938" + sodipodi:cx="57.275646" + sodipodi:cy="-40.474449" + sodipodi:rx="6.5407376" + sodipodi:ry="6.5407376" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + transform="matrix(1.0811569,0,0,1.0946704,231.20046,540.57844)" /> + <path + transform="matrix(1.0811569,0,0,1.0946704,233.20046,580.57844)" + d="m 63.816384,-40.474449 c 0,3.612349 -2.928388,6.540737 -6.540738,6.540737 -3.612349,0 -6.540737,-2.928388 -6.540737,-6.540737 0,-3.61235 2.928388,-6.540738 6.540737,-6.540738 3.61235,0 6.540738,2.928388 6.540738,6.540738 z" + sodipodi:ry="6.5407376" + sodipodi:rx="6.5407376" + sodipodi:cy="-40.474449" + sodipodi:cx="57.275646" + id="path3940" + style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#1a1a1a;stroke-width:1.37881243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="color:#000000;fill:#b0becc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 73.59375 161.90625 C 72.852921 161.90625 72.049157 162.13336 71.46875 162.59375 C 70.718558 163.18881 70.336355 164.16598 70 165.0625 C 69.831525 165.51155 69.612423 166.00929 69.75 166.46875 C 69.769243 166.53301 69.815467 166.5952 69.84375 166.65625 C 68.831559 168.2596 68.185941 169.74332 67.34375 171.5 C 67.062381 172.08689 67.937081 172.7017 68.5 172.375 C 70.729441 171.0811 73.377196 169.36896 74.34375 167.09375 C 74.88915 166.40447 75.754523 165.90648 76 165.0625 C 76.232189 164.2642 76.251877 163.23169 75.71875 162.59375 C 75.243689 162.02529 74.334579 161.90625 73.59375 161.90625 z " + transform="translate(182.50939,276.81877)" + id="path4431" /> + <path + style="color:#000000;fill:#803300;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 46,54.486008 c -6.094477,-3.491768 -15.701496,-3.266205 -22.5,-7.25 -1.37362,-0.804916 -2.149224,-2.407311 -3.5,-3.25 -0.984777,-0.614359 -2.439817,-0.418841 -3.25,-1.25 -2.778081,-2.850007 -3.703329,-7.281088 -4,-11.25 -0.487294,-6.519099 2.374672,-10.304078 3.75,-19.25 C 17.118877,8.2104777 11.771968,6.445776 11.5,9.7360082 10.712096,19.267964 11.169885,23.112997 9,24.236008 c -1.4235915,0.736771 -3.2326064,1.266683 -4.75,0.75 -4.14116972,-1.410097 -8.2523258,-7.950291 -14.5,-14.75 -1.512887,-1.6465637 -5.910109,3.153137 -3,6 4.6285975,4.528003 10.720147,9.19514 15,14.75 1.230154,1.596628 1.4794867,3.926921 3,5.25 1.015623,0.883748 2.7864923,0.559706 3.75,1.5 1.3626057,1.329777 1.4934265,3.502832 2.25,5.25 0.578317,1.335517 0.747608,2.944886 1.75,4 1.155088,1.215842 2.941315,1.631129 4.5,2.25 9.139626,3.62886 18.846442,8.086521 28.25,8.5 1.540173,0.06772 2.385245,-2.313104 0.75,-3.25 z" + id="path4042" + inkscape:connector-curvature="0" + transform="translate(210.23005,385.2896)" + sodipodi:nodetypes="sssssssssssssssssss" /> + <path + style="color:#000000;fill:#6c2b00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 39.40625 117.5 C 39.317299 117.70767 39.241756 117.94043 39.21875 118.21875 C 38.870822 122.42794 38.758142 125.47215 38.5625 127.71875 C 38.975022 125.68154 39.055584 122.39589 39.40625 117.5 z M 44.125 121.25 C 42.959338 126.67515 41.396059 130.15178 40.9375 134.15625 C 41.712586 130.52861 43.191098 126.93363 44.125 121.25 z M 13.59375 121.65625 C 13.364301 122.69038 13.539183 123.80939 14.46875 124.71875 C 19.097347 129.24675 25.188897 133.91389 29.46875 139.46875 C 30.698904 141.06538 30.948237 143.39567 32.46875 144.71875 C 33.484373 145.6025 35.255242 145.27846 36.21875 146.21875 C 37.581356 147.54853 37.712176 149.72158 38.46875 151.46875 C 39.047067 152.80427 39.216358 154.41364 40.21875 155.46875 C 41.373838 156.68459 43.160065 157.09988 44.71875 157.71875 C 53.858376 161.34761 63.565192 165.80527 72.96875 166.21875 C 73.714219 166.25153 74.282644 165.70435 74.5 165.03125 C 74.470979 165.03167 74.435778 165.03255 74.40625 165.03125 C 64.69494 164.60424 54.68874 159.99762 45.25 156.25 C 43.640304 155.61088 41.786641 155.16188 40.59375 153.90625 C 39.558553 152.81661 39.378494 151.16047 38.78125 149.78125 C 37.999916 147.9769 37.87595 145.7483 36.46875 144.375 C 35.473709 143.40393 33.642611 143.72517 32.59375 142.8125 C 31.023475 141.44612 30.770413 139.05513 29.5 137.40625 C 25.080079 131.66959 18.780079 126.83244 14 122.15625 C 13.834747 121.99459 13.715119 121.82866 13.59375 121.65625 z " + transform="translate(182.50939,276.81877)" + id="path4488" /> + <path + style="fill:#9e4100;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 16.78125 118.375 C 14.965865 118.22955 11.922405 122.22774 14.46875 124.71875 C 14.582254 124.82979 14.697285 124.95128 14.8125 125.0625 C 14.7343 124.78944 14.697322 124.51 14.6875 124.21875 C 14.64706 123.01975 15.526333 123.21546 16.5 122 C 16.989437 121.38902 17.743473 121.9662 18.34375 122.46875 C 20.064281 123.90906 20.646585 126.43848 22.34375 127.90625 C 24.928535 130.14166 26.491902 131.26611 29.6875 134.65625 C 30.582195 135.60541 32.11707 136.07351 33.40625 135.875 C 34.844947 135.65347 36.329334 134.63502 36.9375 133.3125 C 37.075625 133.01213 37.155127 132.70089 37.1875 132.375 C 37.043813 132.50377 36.895053 132.62751 36.71875 132.71875 C 35.295158 133.45552 33.486144 133.98543 31.96875 133.46875 C 27.82758 132.05865 23.716424 125.51846 17.46875 118.71875 C 17.279639 118.51293 17.040591 118.39578 16.78125 118.375 z " + transform="translate(182.50939,276.81877)" + id="path4409" /> + <path + style="color:#000000;fill:#9e4100;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 41.09375,116.5 c -0.920162,-0.0394 -1.705692,0.4654 -1.84375,1.625 0.129595,0.36885 0.289195,0.73701 0.53125,1.0625 0.697749,0.93825 1.792733,0.7064 2.15625,2 0.705931,2.51211 -0.398508,7.31467 -1.25,9.78125 -0.880523,2.55067 -3.242104,3.38321 -3.5625,6.0625 -0.27215,2.27583 1.971814,4.27558 2.125,6.5625 0.04403,0.65733 -0.39621,1.28079 -0.34375,1.9375 0.169192,2.11784 0.522288,4.57017 2.09375,6 1.617331,1.47156 4.097726,0.22849 5.5,1.90625 0.568093,0.6797 0.518278,1.64479 1.0625,2.34375 1.522601,1.95552 4.401721,2.11382 6.75,2.90625 3.549197,1.19769 3.925607,2.09577 8.210405,2.60761 0.315083,0.0376 0.3729,-0.55768 0.375,-0.875 0.0017,-0.25738 -0.02856,-0.52675 -0.09375,-0.78125 -4.839587,-1.11142 -7.399811,-1.46743 -11.585405,-3.92011 -1.37362,-0.80492 -2.149224,-2.40731 -3.5,-3.25 -0.984777,-0.61436 -2.439817,-0.41884 -3.25,-1.25 -2.778081,-2.85001 -3.703329,-7.28109 -4,-11.25 -0.487294,-6.5191 2.374672,-10.30408 3.75,-19.25 0.386798,-2.51596 -1.546518,-4.15122 -3.125,-4.21875 z" + transform="translate(182.50939,276.81877)" + id="path4404" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scsssssssssssccssssss" /> + <path + style="fill:#2d1650;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 96.3125,46.34375 c -1.543178,3.951225 -10.181498,8.446981 -14.625,11.125 -6.439526,3.880988 -18.490639,10.318898 -24.40625,10.125 1.61154,2.549211 3.090915,5.088291 3.90625,6.5 0.01925,0.233638 0.272079,0.661132 0.34375,0.875 1.8752,5.595619 18.366714,-3.055386 26.15625,-7.75 5.392375,-3.249888 17.14556,-9.160422 13.1875,-13.53125 -0.12435,-0.137317 -0.33692,-0.552535 -0.4375,-0.71875 -1.445193,-2.162103 -2.823691,-4.361361 -4.125,-6.625 z" + transform="translate(183.75939,278.31877)" + id="path4080" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csccssscc" /> + <path + style="fill:#d45500;stroke:none" + d="m 97,92.1875 c -0.09422,0.171374 -0.210975,0.348777 -0.28125,0.53125 -1.024423,2.659992 0.393259,6.087244 2.25,8.25 3.20771,3.73639 8.89614,4.2523 13.5,6 5.14963,1.95488 10.68269,2.82452 15.6875,5.125 3.74017,1.71918 6.54177,5.49285 10.5625,6.375 0.84321,0.185 1.53218,-0.0644 1.8125,-0.5625 -0.14474,-0.0142 -0.28279,-0.0213 -0.4375,-0.0625 -4.1607,-1.10895 -6.85893,-4.93564 -10.6875,-6.90625 -5.12309,-2.63691 -10.30323,-4.3425 -15.59375,-6.625 C 109.08268,102.27191 103.17828,101.4601 100,97.40625 98.8192,95.900155 97.225803,94.179461 97,92.1875 z" + transform="translate(182.50939,276.81877)" + id="path4114" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csssssccsssc" /> + <path + id="path4249" + transform="matrix(0.48437471,0,0,0.48437471,250.24196,289.07697)" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + style="fill:#ff7f2a;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 103.75 88.6875 C 103.48609 88.671042 103.23427 88.690695 102.96875 88.71875 C 101.48796 88.875213 99.859193 89.464829 98.59375 90.40625 C 98.902964 90.323289 99.228824 90.267691 99.53125 90.21875 C 101.75482 89.858916 104.01945 91.090051 105.96875 92.21875 C 109.35701 94.180644 111.53099 97.748473 114.59375 100.1875 C 119.79106 104.32638 125.68501 106.82511 131.28125 110.40625 C 134.31968 112.3506 138.6896 114.94963 140.34375 117 C 140.47296 117.16016 140.54324 117.31768 140.625 117.46875 C 140.65183 117.11075 140.5627 116.6968 140.21875 116.21875 C 138.75974 114.19089 134.77524 111.49985 132 109.5 C 126.88851 105.81664 121.42336 103.15934 116.71875 98.96875 C 113.94634 96.499247 112.07431 93.003504 108.96875 90.96875 C 107.40542 89.944461 105.59734 88.802705 103.75 88.6875 z " + transform="translate(182.50939,276.81877)" + id="path4119" /> + <path + style="fill:none;stroke:#aa4400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 110.125,91.611908 c -4.70034,-3.092931 -8.26946,-0.791066 -9.875,3.5 -0.780742,4.435832 0.0987,8.545142 5.8125,9.000002" + id="path4104" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#aa4400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 115.25,97.736908 c -2.88222,-1.897829 -5.07399,1.085387 -5.4375,4.187502 -0.17707,2.81459 1.21858,5.78464 4.3125,5.5625" + id="path4106" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#aa4400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 119.25,101.11191 c -2.41833,-1.802759 -4.88885,0.0372 -4.5,3.0625 0.40858,2.33994 0.81056,3.99583 3.75,4.3125" + id="path4108" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#aa4400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 130.375,108.61191 c -0.52819,-1.09782 -2.98022,-1.1735 -3.28125,0.0937 -0.33783,1.42217 -0.39338,3.23625 1.15625,3.15625" + id="path4110" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="csc" /> + <path + sodipodi:nodetypes="sssssssssss" + transform="translate(212.23005,401.7896)" + inkscape:connector-curvature="0" + id="path4112" + d="m 73.249998,-36.263987 c -2.459777,0.259905 -5.361056,1.69179 -6.25,4 -1.024423,2.659992 0.393259,6.087244 2.25,8.25 3.207713,3.736386 8.896137,4.252303 13.5,6 5.149633,1.95488 10.745192,2.699525 15.749999,5 3.740173,1.719181 6.479273,5.6178472 10.500003,6.4999994 1.54369,0.3386878 2.59952,-0.7217847 1.5,-2.25 -1.45901,-2.0278614 -5.45959,-4.7224184 -8.23483,-6.7222714 -5.111493,-3.68336 -10.560559,-6.337135 -15.265172,-10.527728 -2.772413,-2.469503 -4.644441,-5.965246 -7.75,-8 -1.786661,-1.170616 -3.875824,-2.474444 -6,-2.25 z" + style="fill:none;stroke:#552200;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + style="fill:#4d2689;fill-opacity:1;stroke:none" + d="m 96.75,49.25 c -1.243013,1.648522 -3.448083,3.328599 -5.84375,4.90625 l 6,9.78125 c 2.701938,-1.835925 5.02881,-3.80607 5.65625,-5.6875 L 96.875,49.4375 z" + transform="translate(182.50939,276.81877)" + id="path4143" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + <path + style="fill:#3e3e3e;fill-opacity:1;stroke:none" + d="m 70.512455,25.652317 c -3.526467,1.33718 -7.136781,2.560077 -10.408379,4.436422 -3.087413,1.77071 -5.567675,4.458302 -8.573669,6.363961 -2.047291,1.297887 -5.470253,2.501975 -6.411296,3.43198 -1.642181,1.62292 4.609365,-0.660083 6.764849,-1.487437 3.954191,-1.517764 7.417949,-4.094284 11.048544,-6.275572 4.430223,-2.661711 11.456358,-3.917669 13.091436,-8.307743 0.643835,-1.728653 -3.70063,1.151741 -5.511485,1.838389 z" + id="path4153" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="aaasaasa" /> + <path + style="fill:#6e2ec4;fill-opacity:1;stroke:none" + d="m 95.9375,50.1875 c -0.512936,0.537769 -1.122532,1.059259 -1.78125,1.59375 l 6.125,9.96875 c 0.7106,-0.657835 1.29662,-1.312778 1.71875,-1.96875 z" + transform="translate(182.50939,276.81877)" + id="path4155" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#23113f;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" + d="M 78.875 61.3125 C 72.998446 64.583926 65.347784 68.284633 60.3125 68.96875 L 64.75 76.75 L 64.96875 78.1875 C 69.083494 78.974602 77.723965 74.97161 84.34375 71.34375 L 78.875 61.3125 z " + transform="translate(182.50939,276.81877)" + id="path4167" /> + <path + style="fill:#c30b0b;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 102 149.0625 L 101.65625 151.34375 C 101.65625 151.34375 101.13182 156.87003 100.75 159.5 C 100.35248 162.23808 99.099647 165.50731 99.25 168.34375 C 100.22869 168.62954 101.176 168.63146 101.3125 168.125 C 102.37764 164.17292 102.48265 159.99254 102.71875 155.90625 C 102.84483 153.72417 103.05199 151.44111 102.84375 149.3125 C 102.37917 149.16073 102 149.0625 102 149.0625 z " + transform="translate(182.50939,276.81877)" + id="path4378" /> + <path + sodipodi:nodetypes="sssssss" + transform="translate(212.23005,401.7896)" + inkscape:connector-curvature="0" + id="path4380" + d="m 71.241006,22.988384 c -0.178454,2.74844 -0.276161,4.507598 -0.707106,6.717514 -0.774602,3.972212 -3.104327,8.518098 -3.358758,11.667262 -0.127772,1.581466 4.11713,2.889366 4.419418,1.767766 1.065144,-3.95208 1.178118,-8.111306 1.414213,-12.197591 0.146153,-2.529581 0.413158,-5.199963 0,-7.601398 -0.10189,-0.592224 -1.728831,-0.953216 -1.767767,-0.353553 z" + style="color:#000000;fill:none;stroke:#2b0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="color:#000000;fill:#aa0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 73.37305,13.960209 c -2.554722,0.569292 -3.97482,4.101716 -4.065864,6.717515 -0.06699,1.924818 0.875309,4.369667 2.640927,5.139087 1.79568,0.782521 4.41542,-0.07585 5.656854,-1.59099 1.500848,-1.831747 1.57808,-4.954683 0.541054,-7.083631 -0.837355,-1.719037 -2.906616,-3.597878 -4.772971,-3.181981 z" + id="path3095" + inkscape:connector-curvature="0" + transform="translate(212.23005,401.7896)" + sodipodi:nodetypes="ssssss" /> + <path + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881242999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 106.125 175.78125 C 103.83008 175.78125 101.79193 176.90979 100.5 178.625 C 101.82789 177.46058 103.54294 176.75 105.4375 176.75 C 109.61916 176.75 113 180.17232 113 184.40625 C 113 184.45909 113.00105 184.50992 113 184.5625 C 113.11602 184.04797 113.1875 183.51888 113.1875 182.96875 C 113.1875 179.01442 110.03052 175.78125 106.125 175.78125 z " + transform="translate(182.50939,276.81877)" + id="path4227" /> + <path + id="path4233" + transform="translate(186.95134,313.26072)" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + transform="translate(188.95134,353.4375)" + id="path4235" /> + <path + id="path4237" + transform="translate(191.30489,177.79105)" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + id="path4241" + transform="matrix(0.48437471,0,0,0.48437471,215.03747,293.81706)" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + transform="matrix(0.48437471,0,0,0.48437471,224.15357,297.99384)" + id="path4243" /> + <path + id="path4245" + transform="matrix(0.48437471,0,0,0.48437471,234.15357,297.81706)" + d="m 106.125,175.78125 c -2.29492,0 -4.33307,1.12854 -5.625,2.84375 1.32789,-1.16442 3.04294,-1.875 4.9375,-1.875 4.18166,0 7.5625,3.42232 7.5625,7.65625 0,0.0528 0.001,0.10367 0,0.15625 0.11602,-0.51453 0.1875,-1.04362 0.1875,-1.59375 0,-3.95433 -3.15698,-7.1875 -7.0625,-7.1875 z" + style="color:#000000;fill:#ececec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.37881243;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:connector-curvature="0" /> + <path + style="fill:#c30b0b;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 104.0625 138.90625 L 104.125 139.5 C 104.125 139.5 102.01351 140.57628 102.09375 141.53125 C 102.20874 142.89985 104.69461 142.78234 105.4375 143.9375 C 105.85944 144.5936 105.25772 145.74181 105.875 146.21875 C 106.5246 146.72066 107.53468 146.88925 108.4375 146.71875 C 108.7354 145.16951 108.52314 143.45559 107.875 142.125 C 107.18 140.6982 105.63442 139.14975 104.0625 138.90625 z " + transform="translate(182.50939,276.81877)" + id="path4351" /> + <path + style="fill:#900000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 102 139.40625 C 100.14036 140.58345 99.108227 143.44461 99.03125 145.65625 C 98.96426 147.58107 99.890632 150.01183 101.65625 150.78125 C 103.45193 151.56377 106.07107 150.70264 107.3125 149.1875 C 108.28822 147.99666 108.67389 146.27937 108.53125 144.625 C 108.23402 144.54792 107.91322 144.5158 107.65625 144.625 C 106.64966 145.05274 107.00205 146.86911 106.15625 147.5625 C 105.32687 148.24243 103.78973 149.22574 103.0625 148.4375 C 102.72111 148.06747 103.79436 147.49302 103.59375 147.03125 C 103.2253 146.18315 101.54511 146.7375 101.03125 145.96875 C 100.60555 145.3319 100.86607 144.40426 101.03125 143.65625 C 101.22737 142.76811 102.1875 141.1875 102.1875 141.1875 L 103.0625 139.78125 C 103.0625 139.78125 102.58397 139.60043 102 139.40625 z " + transform="translate(182.50939,276.81877)" + id="path4338" /> + <path + sodipodi:nodetypes="ssssss" + transform="translate(212.23005,401.7896)" + inkscape:connector-curvature="0" + id="path4340" + d="m 73.37305,13.960209 c -2.554722,0.569292 -3.97482,4.101716 -4.065864,6.717515 -0.06699,1.924818 0.875309,4.369667 2.640927,5.139087 1.79568,0.782521 4.41542,-0.07585 5.656854,-1.59099 1.500848,-1.831747 1.57808,-4.954683 0.541054,-7.083631 -0.837355,-1.719037 -2.906616,-3.597878 -4.772971,-3.181981 z" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="sssssssssssssssssss" + transform="translate(210.23005,385.2896)" + inkscape:connector-curvature="0" + id="path4402" + d="m 46,54.486008 c -6.094477,-3.491768 -15.701496,-3.266205 -22.5,-7.25 -1.37362,-0.804916 -2.149224,-2.407311 -3.5,-3.25 -0.984777,-0.614359 -2.439817,-0.418841 -3.25,-1.25 -2.778081,-2.850007 -3.703329,-7.281088 -4,-11.25 -0.487294,-6.519099 2.374672,-10.304078 3.75,-19.25 C 17.118877,8.2104777 11.771968,6.445776 11.5,9.7360082 10.712096,19.267964 11.169885,23.112997 9,24.236008 c -1.4235915,0.736771 -3.2326064,1.266683 -4.75,0.75 -4.14116972,-1.410097 -8.2523258,-7.950291 -14.5,-14.75 -1.512887,-1.6465637 -5.910109,3.153137 -3,6 4.6285975,4.528003 10.720147,9.19514 15,14.75 1.230154,1.596628 1.4794867,3.926921 3,5.25 1.015623,0.883748 2.7864923,0.559706 3.75,1.5 1.3626057,1.329777 1.4934265,3.502832 2.25,5.25 0.578317,1.335517 0.747608,2.944886 1.75,4 1.155088,1.215842 2.941315,1.631129 4.5,2.25 9.139626,3.62886 18.846442,8.086521 28.25,8.5 1.540173,0.06772 2.385245,-2.313104 0.75,-3.25 z" + style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#552200;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="color:#000000;fill:#c7d2dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50000000000000000;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 123.74369,290.12726 c -6.89291,5.78182 -38.019296,3.5973 -54.624002,0.7071 -8.224661,-1.43157 -16.422126,-1.8353 -19.622213,-9.54594 -1.959775,-4.72209 3.74953,-9.62565 6.717514,-13.78858 2.128577,-2.98556 6.605505,-4.30408 7.778175,-7.77817 1.407245,-4.16903 -2.17952,-8.70066 -1.767767,-13.08148 0.48824,-5.1946 3.885594,-9.74142 4.949747,-14.84924 1.351414,-6.48664 -0.09594,-13.44058 1.767767,-19.79899 2.781096,-9.48827 0.985918,-16.16198 1.767767,-24.21841 0.189204,-1.94962 -1.225205,-5.51273 0.707107,-5.83363 3.743825,-0.62174 4.103481,6.55351 4.949747,10.25305 1.576771,6.89302 -1.864627,14.39241 0,21.2132 0.794141,2.90496 4.739323,4.77003 4.596195,7.77818 -0.152365,3.20227 -5.122047,4.6172 -5.656855,7.77817 -0.883168,5.21994 1.283785,11.07294 4.596194,15.2028 2.707249,3.37536 10.384397,2.13802 11.313709,6.36396 1.124009,5.11131 -7.299013,7.84898 -9.192388,12.72792 -1.115908,2.87552 -2.363677,6.39667 -1.06066,9.19239 3.162078,6.78447 11.84512,9.45693 18.738329,12.37437 7.557524,3.1986 30.329114,0.0293 24.041634,5.3033 z" + id="path4517" + inkscape:connector-curvature="0" + transform="translate(182.50939,276.81877)" + sodipodi:nodetypes="ssssssssaaasssssssss" /> + <path + style="color:#000000;fill:#8c6f00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 157.34375,53.96875 c 0,0 0.97839,1.943666 1.21875,3 1.61066,7.078642 1.27601,14.459224 1.25,21.71875 -0.0165,4.605598 -0.6741,9.211256 -0.875,13.8125 -0.11055,2.532072 -0.1875,7.59375 -0.1875,7.59375 0,0 1.23799,-8.360339 1.59375,-12.5625 0.69657,-8.227719 2.6556,-16.647989 1.0625,-24.75 -0.6257,-3.182115 -4.0625,-8.8125 -4.0625,-8.8125 z M 138.5,57.375 c 0,0 2.76131,8.837287 3.625,13.375 1.81664,9.544299 3.21104,27.109694 3.5,30.875 0.051,0.006 0.10487,-0.005 0.15625,0 0.0447,-1.800674 0.12782,-5.752062 -0.0313,-8.375 -0.58441,-9.636382 -0.62111,-19.535153 -3.5,-28.75 -0.80034,-2.561754 -3.75,-7.125 -3.75,-7.125 z m -6.96875,4.53125 -0.90625,0.71875 c 0,0 3.85757,7.914073 5.5,12 1.39707,3.475549 3.71875,10.625 3.71875,10.625 0,0 -1.83949,-11.908987 -4.25,-17.34375 -0.9807,-2.211092 -4.0625,-6 -4.0625,-6 z m 48.59375,3 c 0,0 -3.40075,4.661433 -4.9375,7.09375 -2.67806,4.238739 -5.8695,8.300117 -7.4375,13.0625 C 166.20943,89.741601 166,99.75 166,99.75 c 0,0 1.29087,-8.510284 2.65625,-12.5625 1.54022,-4.571112 3.94921,-8.820881 6.1875,-13.09375 1.64149,-3.13359 5.28125,-9.1875 5.28125,-9.1875 z M 165.375,70.75 c 0,0 -1.32253,5.735186 -1.875,8.625 -0.91197,4.770233 -1.76705,9.556576 -2.375,14.375 -0.34825,2.760093 -0.50815,5.310336 -0.75,8.25 0.7467,-0.0275 1.48929,-0.0533 2.21875,-0.0937 -0.37589,-2.630718 -0.90721,-5.358292 -0.84375,-8.03125 0.18521,-7.800267 3.625,-23.125 3.625,-23.125 z M 152.25,77 c 0,0 1.07501,10.570298 1.125,15.875 0.0292,3.096483 -0.29148,4.880416 -0.46875,9.1875 0.58227,0.0132 1.15779,0.0264 1.75,0.0313 C 154.71965,99.085914 154.58117,96.751865 154.375,94 153.94804,88.305217 152.25,77 152.25,77 z M 171,89.90625 c -0.0717,-0.06237 -0.49826,0.588765 -0.625,0.84375 -1.31365,2.642802 -1.66449,5.69285 -2,8.625 -0.0746,0.652 -0.31517,1.39774 -0.21875,2.03125 0.76748,-0.0909 1.49891,-0.17194 2.1875,-0.28125 -0.1527,-0.87189 -0.63058,-1.910112 -0.59375,-2.75 0.12363,-2.819881 0.95298,-6.314345 1.25,-8.375 0.006,-0.04026 0.0102,-0.08484 0,-0.09375 z M 138.125,92 c 0,0 1.2181,5.76234 2.0625,8.5625 0.47763,0.17235 1.06466,0.32628 1.71875,0.46875 C 141.16431,98.966258 140.19941,96.559686 139.25,94.375 138.90086,93.571593 138.125,92 138.125,92 z" + transform="translate(182.50939,276.19377)" + id="path4617" + inkscape:connector-curvature="0" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Christmas/Tree.svg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg2" + version="1.1" + inkscape:version="0.48.0 r9654" + width="504.5993" + height="610.18024" + sodipodi:docname="Tree.svg" + inkscape:export-filename="/mnt/y/src/hedgewars/share/hedgewars/Data/Themes/Snow/Tree.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + style="display:inline"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1280" + inkscape:window-height="948" + id="namedview4" + showgrid="false" + inkscape:zoom="1" + inkscape:cx="233.91995" + inkscape:cy="372.34274" + inkscape:window-x="-4" + inkscape:window-y="-3" + inkscape:window-maximized="1" + inkscape:current-layer="layer2" + fit-margin-left="10" + fit-margin-top="10" + fit-margin-right="10" + fit-margin-bottom="10" /> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="Tree" + style="display:inline" + transform="translate(-135.98141,-164.8895)"> + <path + transform="matrix(0.65,0,0,0.65,135.7151,164.67243)" + style="fill:#5f2e0f;fill-opacity:1;stroke:none;stroke-width:3.07692308;stroke-miterlimit:4;stroke-dasharray:none" + d="m 296.93853,21.238122 c -0.10072,-5.311671 9.03207,-5.372259 9.26777,-0.06486 13.49414,303.856778 73.5633,646.642128 115.99806,885.664408 3.60199,20.28892 -53.00611,20.54225 -56.73285,0.27588 -43.63546,-237.294 -62.05999,-544.51833 -68.53298,-885.875424 z" + id="path2987" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssss" /> + <path + style="fill:#492513;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + d="m 328.75,178.15625 c -0.009,0.10036 -0.0333,0.20534 -0.0313,0.3125 1.20884,63.74911 3.0856,125.65312 5.78125,185.1875 0.98057,21.65618 2.06705,43.0011 3.28125,64 0.24268,4.19702 0.49751,8.36176 0.75,12.53125 0.25254,4.17177 0.4875,8.32494 0.75,12.46875 0.26294,4.14941 0.5394,8.28533 0.8125,12.40625 0.27272,4.11525 0.56074,8.22609 0.84375,12.3125 0.13259,1.91451 0.27138,3.81064 0.40625,5.71875 0.19709,2.78938 0.39174,5.56815 0.59375,8.34375 0.007,0.10096 -0.007,0.21156 0,0.3125 0.24231,3.32585 0.50054,6.63166 0.75,9.9375 0.25445,3.37047 0.51927,6.74434 0.78125,10.09375 0.1406,1.7983 0.29471,3.61408 0.4375,5.40625 0.4899,6.14617 0.98397,12.23939 1.5,18.3125 0.11742,1.38261 0.22496,2.77747 0.34375,4.15625 0.27869,3.23309 0.55744,6.44442 0.84375,9.65625 0.3479,3.90473 0.70321,7.78332 1.0625,11.65625 0.26951,2.90402 0.53651,5.80158 0.8125,8.6875 0.16004,1.67412 0.33777,3.33202 0.5,5 0.30465,3.13089 0.62504,6.2659 0.9375,9.375 0.38254,3.80804 0.76185,7.60005 1.15625,11.375 0.29169,2.79079 0.57675,5.54 0.875,8.3125 0.23441,2.17993 0.48025,4.36272 0.71875,6.53125 0.22012,2.0007 0.43262,4.00907 0.65625,6 0.1892,1.68496 0.40203,3.35333 0.59375,5.03125 0.71459,6.25157 1.43734,12.44123 2.1875,18.59375 0.42577,3.49203 0.84383,6.9779 1.28125,10.4375 0.51788,4.09733 1.02806,8.16749 1.5625,12.21875 0.0502,0.38005 0.10595,0.7766 0.15625,1.15625 0.53879,4.06788 1.10047,8.10437 1.65625,12.125 0.31864,2.30464 0.64446,4.58604 0.96875,6.875 0.99124,6.9967 1.98647,13.90207 3.03125,20.75 0.52035,3.41062 1.05989,6.84567 1.59375,10.21875 0.50845,3.21248 1.0104,6.38445 1.53125,9.5625 0.0779,0.47557 0.17179,0.96271 0.25,1.4375 0.42143,2.55813 0.85167,5.12074 1.28125,7.65625 0.0789,0.46588 0.13954,0.94114 0.21875,1.40625 1.18299,6.94626 2.41079,13.78957 3.65625,20.5625 2.02114,10.99114 27.97488,12.70897 35.15625,5.3125 -9.60235,0.60717 -20.49606,-2.42536 -21.90625,-9.34375 -1.88506,-9.24804 -3.69434,-18.6444 -5.46875,-28.21875 6.85589,-8.27778 11.83388,-17.22116 11.8125,-24.125 2.62077,1.28045 5.29595,2.49699 8,3.65625 -18.01522,-102.8584 -38.59588,-226.9297 -52.34375,-351.46875 -3.49881,-1.2671 -5.66634,-4.15364 -7.125,-3.96875 -0.53649,0.068 -0.96176,0.55193 -1.34375,1.6875 -0.16723,0.49713 -0.33181,0.97292 -0.5,1.46875 -3.43461,-54.89564 -6.2115,-111.76406 -8.46875,-170.21875 -0.89159,-0.0601 -1.68607,-0.38401 -2.34375,-0.90625 z" + id="path3832" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="sssss" + inkscape:connector-curvature="0" + id="path3876" + d="m 296.93853,21.238122 c -0.10072,-5.311671 9.03207,-5.372259 9.26777,-0.06486 13.49414,303.856778 73.5633,646.642128 115.99806,885.664408 3.60199,20.28892 -53.00611,20.54225 -56.73285,0.27588 -43.63546,-237.294 -62.05999,-544.51833 -68.53298,-885.875424 z" + style="fill:none;stroke:#180a06;stroke-width:3.07692308;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + transform="matrix(0.65,0,0,0.65,135.7151,164.67243)" /> + <path + transform="matrix(1.3149827,-0.00668523,0.00668523,1.3149827,-55.087493,193.79475)" + style="fill:#146e00;fill-opacity:1;stroke:#081806;stroke-width:1.5209129;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 319.46875,101 c -1.65606,0.0782 -2.19937,6.76313 -8.28125,7.03125 -5.63851,0.24857 -7.90201,-6.15962 -9.25,-2.21875 -21.2033,61.98832 -52.55447,110.49869 -67.83162,167.89034 -13.03871,48.98251 -61.11487,91.48838 -81.81314,120.02059 -8.56483,11.80647 69.26117,1.88581 102.16668,-22.42281 -12.33302,11.98558 -15.62895,12.2216 -25.55729,23.07898 -13.29736,14.54164 52.95239,-5.54434 76.79879,-22.24443 4.00857,10.22945 -9.50303,33.10275 -1.15621,35.89953 9.15213,3.06662 36.17641,-21.81066 36.2042,-35.79459 34.7051,17.17534 80.22718,20.24539 98.313,13.08265 9.54549,-3.78042 -24.57076,-13.08154 -34.8517,-28.02412 23.67301,9.37386 128.5212,-16.05974 113.26807,-25.3765 -11.84715,-7.23636 -89.44681,-16.99465 -118.1778,-70.08415 C 371.35051,210.19165 351.47407,146.63825 320.875,102.15625 320.29202,101.30877 319.85092,100.98195 319.46875,101 z" + id="path3758" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssscscscscssss" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:#0f5a00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.07692308;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-miterlimit:4;stroke-dasharray:none" + d="m 320.1875,253.4375 c -0.41562,0.0527 -0.77598,0.29497 -1.125,0.71875 -28.10113,83.5007 -65.32991,155.00303 -96.03125,227.71875 -2.67656,9.91512 -5.41819,19.9752 -8.34375,30.34375 -4.59474,16.28434 -11.82625,31.95787 -20.78125,46.9375 -3.73544,11.59184 -7.20496,23.30124 -10.3125,35.21875 -4.49778,17.24911 -11.12856,34.1062 -19.25,50.5 -11.14372,22.89304 -25.23189,44.8535 -40.4375,65.71875 26.16037,-2.48898 63.80515,-15.60156 76.34375,-23.3125 -3.79291,23.88421 -12.95337,43.67331 -28.03125,63.40625 -29.71284,38.88619 98.85074,-25.07949 147,-62.5 13.45368,20.46403 82.58,81.07804 103.28125,68.15625 11.99874,-7.48966 -6.37185,-36.68384 -14.46875,-53.5625 75.87898,21.94557 144.23115,33.77556 175.3125,23.1875 16.40438,-5.58827 -62.42224,-42.39576 -75.625,-76.21875 16.42909,8.59099 68.93776,15.60128 108.84375,11.03125 C 577.45,640.85996 539.58133,612.482 516.6875,570.6875 481.58149,506.59866 452.58337,433.37473 420.96875,365.625 394.30566,328.19903 367.07149,291.67656 344.4375,257.75 c -1.92265,1.4674 -4.36081,2.5285 -7.59375,2.6875 -8.90971,0.43817 -13.7085,-7.37363 -16.65625,-7 z" + id="path3823" + transform="matrix(0.65,0,0,0.65,135.89853,164.493)" /> + <path + sodipodi:nodetypes="ssssscscscscssss" + inkscape:connector-curvature="0" + id="path2988" + d="m 298.368,105.37663 c -1.65606,0.0782 -2.19937,6.76313 -8.28125,7.03125 -5.63851,0.24857 -7.90201,-6.15962 -9.25,-2.21875 -21.2033,61.98832 -27.53959,106.2541 -40.86199,164.13075 -11.27715,48.99146 -61.99117,90.60312 -86.79079,117.35287 -9.91654,10.69633 57.8099,2.0478 78.0088,-6.17736 -1.55465,14.24238 -1.09821,19.04964 -9.45032,31.16149 -16.45888,23.8679 57.95776,-9.53109 85.36823,-33.0641 8.5518,11.72055 51.0067,37.42259 62.88298,29.17867 6.88366,-4.7783 -2.61002,-15.69542 -7.88855,-25.44911 45.53312,10.79456 84.09614,9.98902 102.18196,2.82628 9.54549,-3.78042 -33.95083,-16.06524 -42.73992,-35.69785 16.35706,4.63905 109.39285,-7.34896 90.33644,-19.32746 -11.75326,-7.38789 -74.11876,-28.95437 -102.27599,-79.39854 -28.62207,-51.27692 -79.23428,-104.70989 -109.83335,-149.19189 -0.58298,-0.84748 -1.02408,-1.1743 -1.40625,-1.15625 z" + style="fill:#146e00;fill-opacity:1;stroke:#081806;stroke-width:1.82285532;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + transform="matrix(1.0958756,0.05348031,-0.05348031,1.0958756,29.077562,169.68329)" /> + <path + style="color:#000000;fill:#0f5a00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.07692308;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-miterlimit:4;stroke-dasharray:none" + d="m 330.03125,210.1875 c -2.79849,-0.004 -4.25537,11.23586 -14.53125,11.1875 -4.98231,-0.0234 -8.26162,-3.03017 -10.625,-4.96875 -6.82881,14.5648 -14.15994,29.73844 -21.65625,45.28125 -28.62494,80.85438 -42.42597,146.64324 -65.53125,228.53125 -6.32921,22.43153 -17.65139,43.67897 -31.625,63.59375 19.91615,-1.46051 42.29084,-11.11106 49.19178,-14.40501 -10.5634,31.58846 -50.67448,86.89086 -33.47303,85.87376 49.41912,-2.92209 100.44658,-44.72398 153.49816,-84.79778 15.31145,16.91759 162.33422,77.4232 137.03309,35.92278 -10.22199,-16.76674 -21.05705,-36.97004 -27.89521,-57.30758 10.93648,6.82193 54.82317,12.26228 78.39521,6.90133 -14.54387,-15.44511 -27.67175,-33.08423 -37.625,-53.15625 -3.98608,-8.03845 -8.27364,-16.13878 -12.8125,-24.25 C 476.96716,431.50048 462.1134,413.53112 448.5625,396.125 407.10558,342.87364 375.27491,288.40686 340.96875,225.90625 c -2.98421,-4.59796 -5.87994,-9.1663 -8.65625,-13.65625 -0.91315,-1.47679 -1.63544,-2.06149 -2.28125,-2.0625 z" + id="path3803" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csccsccscsccscscsc" + transform="matrix(0.65,0,0,0.65,135.89853,164.493)" /> + <path + sodipodi:nodetypes="ssssscscscsas" + inkscape:connector-curvature="0" + id="path3827" + d="m 294,37.589998 c 1.23808,-3.396201 3.08301,2.217832 7.98,2.1 6.50099,-0.156428 5.8855,-8.910976 8.505,-4.935 25.77956,39.12925 59.33575,84.733602 83.28188,129.724662 23.55723,44.26039 69.93625,81.54297 80.00663,88.15762 16.32783,10.7248 -58.84551,17.44858 -72.95843,13.13926 10.85003,21.27004 41.25256,48.70031 29.65093,52.94224 -18.63072,6.81199 -74.33112,-15.11318 -116.2053,-37.87763 -9.0546,13.6227 -108.49078,66.25587 -94.97001,34.14262 5.46257,-12.97419 7.42341,-21.52116 10.10711,-36.66674 -11.7685,8.19367 -76.35606,9.95928 -65.0931,-1.3465 23.9316,-24.02258 47.90041,-60.84121 66.81104,-94.45012 C 256.93955,136.62507 274.52548,91.010838 294,37.589998 z" + style="fill:#146e00;fill-opacity:1;stroke:#081806;stroke-width:2.20576477;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + transform="matrix(-0.89667058,0.13458791,0.13458791,0.89667058,611.4391,214.21042)" /> + <path + style="color:#000000;fill:#0f5a00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.07692313;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 311.9375,187.03125 c -0.45977,0.0563 -0.91431,0.5574 -1.4375,1.6875 -27.46069,59.31641 -64.3135,129.16439 -88.03125,196.1875 -2.19825,6.21197 -4.68756,12.4126 -7.40625,18.5 9.23441,-2.30912 19.5091,-7.19983 23.49816,-12.08455 -1.55465,14.24238 -0.86672,21.44123 -8.40441,35.8033 -13.47341,25.67175 46.38444,-10.86252 74.4375,-31.4375 2.2683,12.90795 -7.86004,46.45072 -3.28125,48.25 8.78235,3.4511 36.05234,-29.29285 39.9375,-46.1875 36.98649,19.43247 80.84963,45.61244 92.65625,40.53125 6.46895,-2.78403 -14.08591,-32.24239 -22.875,-51.875 6.40826,1.81746 28.2105,4.89062 47.875,0.25 -2.81705,-3.52702 -5.62443,-7.03829 -8.34375,-10.53125 -45.12677,-57.96528 -78.8238,-117.24493 -116.75,-186.90625 -2.41113,-4.42868 -3.78274,3.71109 -10.5625,4.5625 -7.31287,0.91836 -9.32018,-6.99387 -11.3125,-6.75 z" + id="path3774" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssccscscsccssss" + transform="matrix(0.65,0,0,0.65,135.89853,164.493)" /> + <path + style="fill:#146e00;fill-opacity:1;stroke:#081806;stroke-width:3.07692313;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 319.46875,101 c -1.65606,0.0782 -2.19937,6.76313 -8.28125,7.03125 -5.63851,0.24857 -7.90201,-6.15962 -9.25,-2.21875 -21.2033,61.98832 -47.80813,109.18658 -67.40625,165.25 -14.83543,42.43898 -53.45622,95.95168 -76.03125,122.34375 -9.48106,11.08416 60.3011,-3.05609 80.5,-11.28125 -1.55465,14.24238 0.19394,16.13793 -7.34375,30.5 -13.47341,25.67175 45.13444,-3.86252 73.1875,-24.4375 2.2683,12.90795 -6.61004,39.45072 -2.03125,41.25 8.78235,3.4511 34.30234,-24.54285 38.1875,-41.4375 36.98649,19.43247 84.76437,42.44107 94.40625,35.78125 5.79467,-4.00249 -11.33591,-26.49239 -20.125,-46.125 16.35706,4.63905 115.11891,-19.959 96.0625,-31.9375 -11.75326,-7.38789 -79.96777,-37.74333 -108.125,-88.1875 -28.62207,-51.27692 -51.74468,-110.893 -82.34375,-155.375 -0.58298,-0.84748 -1.02408,-1.1743 -1.40625,-1.15625 z" + id="path3778" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssscscscscssss" + transform="matrix(0.65,0,0,0.65,135.89853,164.493)" /> + <path + style="fill:#0f5a00;fill-opacity:1;stroke:none;stroke-width:3.07692308;stroke-miterlimit:4;stroke-dasharray:none" + d="m 319.46875,101 c -1.65606,0.0782 -2.19937,6.76313 -8.28125,7.03125 -5.63851,0.24857 -7.90201,-6.15962 -9.25,-2.21875 -21.2033,61.98832 -47.80813,109.18658 -67.40625,165.25 -3.41406,9.76644 -8.08331,20.11989 -13.53125,30.59375 -1.89182,9.79149 -3.53943,15.38615 -7.96875,25.90625 -13.52077,32.11325 82.97665,-29.03355 92.03125,-42.65625 41.87418,22.76445 85.1814,46.68995 122.5,40.375 8.92075,-1.50954 -23.93122,-31.04246 -34.78125,-52.3125 3.84719,1.17472 14.70944,4.99423 24.78125,5.03125 -5.41287,-6.40955 -10.29834,-13.22133 -14.34375,-20.46875 -28.62207,-51.27692 -51.74468,-110.893 -82.34375,-155.375 -0.58298,-0.84748 -1.02408,-1.1743 -1.40625,-1.15625 z" + id="path3765" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssscscsccsss" + transform="matrix(0.65,0,0,0.65,135.89853,165.87186)" /> + <path + transform="matrix(0.65,0,0,0.65,135.7151,164.67243)" + style="fill:#146e00;fill-opacity:1;stroke:#081806;stroke-width:3.07692313;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 294,37.589998 c 1.95506,-5.362959 3.08301,2.217832 7.98,2.1 6.50099,-0.156428 4.86541,-10.459312 8.505,-4.935 25.77959,39.129232 53.64887,87.413942 77.595,132.405002 23.55723,44.26039 74.34962,81.85249 84.42,88.46714 16.32783,10.7248 -61.06708,14.12218 -75.18,9.81286 10.46541,18.96235 43.88485,44.66864 32.51397,49.06794 -23.32642,9.0248 -82.35265,-12.61746 -124.22683,-35.38191 -9.0546,13.6227 -103.82696,69.78768 -90.30619,37.67443 5.46257,-12.97419 6.67932,-18.36488 9.36302,-33.51046 -11.7685,8.19367 -71.01105,13.11498 -59.74809,1.8092 23.9316,-24.02258 51.80898,-63.55221 71.24714,-99.3784 C 261.44192,139.12962 274.52551,91.010848 294,37.589998 z" + id="path3757" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssssscscscsas" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Themes/Christmas/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,16 @@ +sky = 9, 14, 45 +border = 141, 151, 213 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = snow.ogg +clouds = 9 +object = reindeer, 1, 90, 232, 94, 12, 2, 55, 60, 90, 73, 80, 134, 105, 64 +object = tree, 1, 238, 706, 36, 9, 2, 122, 355, 208, 293, 164, 168, 82, 154 +object = plant2, 3, 0, 85, 25, 25, 2, 0, 0, 170, 70, 50, 70, 120, 40 +object = plant3, 3, 26, 0, 48, 1, 1, 25, 15, 50, 60 +object = plant4, 3, 45, 4, 1, 45, 1, 20, 45, 20, 60 +object = Snowman, 1, 38, 283, 119, 14, 1, 38, 21, 124, 216 +spray = holly, 4 +spray = holly2, 4 +flakes = 100, 3, 99999999, 100, 300
--- a/share/hedgewars/Data/Themes/City/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/City/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,19 +1,12 @@ -21 20 38 -128 0 0 -$54 $5C $9D -$34 $3C $7D -$80 -City.ogg -45 -4 -plant1 -3 200 344 54 2 1 0 0 160 215 -plant2 -3 32 165 65 2 1 0 0 163 140 -plant3 -3 45 0 14 1 1 23 9 54 57 -plant4 -3 99 8 1 38 1 42 7 42 103 -0 -1500 -0 0 0 2000 +sky = 21, 20, 38 +border = 128, 0, 0 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = City.ogg +clouds = 45 +object = plant1, 3, 200, 344, 54, 2, 1, 0, 0, 160, 215 +object = plant2, 3, 32, 165, 65, 2, 1, 0, 0, 163, 140 +object = plant3, 3, 45, 0, 14, 1, 1, 23, 9, 54, 57 +object = plant4, 3, 99, 8, 1, 38, 1, 42, 7, 42, 103 +flakes = 1500, 0, 0, 0, 2000
--- a/share/hedgewars/Data/Themes/Compost/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Compost/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,34 +1,20 @@ -92 151 253 -52 38 23 -$41 $23 $12 -$33 $21 $9 $FF -Compost.ogg -16 -8 -Eggshell1 -3 48 92 78 37 1 0 0 125 47 -Eggshell2 -3 40 65 80 50 1 0 0 120 50 -Onion1 -3 0 65 90 30 1 0 0 75 50 -Onion2 -3 35 80 75 40 2 0 0 30 50 0 36 30 50 -Cucumber1 -3 0 100 75 40 1 80 0 89 95 -Cucumber2 -3 0 70 125 45 1 0 0 70 55 -Carrot1 -3 65 0 40 30 1 0 100 100 100 -Carrot2 -3 0 30 40 35 1 80 65 100 100 -4 -Cucumber3 -1 -Cucumber4 -1 -Carrot3 -1 -Carrot4 -1 -100 -1 130 0 5 +sky = 92, 151, 253 +border = 52, 38, 23 +water-top = $41, $23, $12 +water-bottom = $33, $21, $9 +water-opacity = $FF +music = Compost.ogg +clouds = 16 +object = Eggshell1, 3, 48, 92, 78, 37, 1, 0, 0, 125, 47 +object = Eggshell2, 3, 40, 65, 80, 50, 1, 0, 0, 120, 50 +object = Onion1, 3, 0, 65, 90, 30, 1, 0, 0, 75, 50 +object = Onion2, 3, 35, 80, 75, 40, 2, 0, 0, 30, 50, 0, 36, 30, 50 +object = Cucumber1, 3, 0, 100, 75, 40, 1, 80, 0, 89, 95 +object = Cucumber2, 3, 0, 70, 125, 45, 1, 0, 0, 70, 55 +object = Carrot1, 3, 65, 0, 40, 30, 1, 0, 100, 100, 100 +object = Carrot2, 3, 0, 30, 40, 35, 1, 80, 65, 100, 100 +spray = Cucumber3, 1 +spray = Cucumber4, 1 +spray = Carrot3, 1 +spray = Carrot4, 1 +flakes = 100, 1, 130, 0, 5
--- a/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,9 +1,7 @@ -20 23 24 -20 23 24 -21 57 76 -21 57 76 $80 -snow.ogg -4 -0 -0 -0 \ No newline at end of file +sky = 20, 23, 24 +border = 20, 23, 24 +water-top = 21, 57, 76 +water-bottom = 21, 57, 76 +water-opacity = $80 +music = snow.ogg +clouds = 4
--- a/share/hedgewars/Data/Themes/Deepspace/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Deepspace/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,9 +1,9 @@ -0 0 0 -175 177 75 -$2B $2B $2B -$2A $2A $2A $CC -hell.ogg -9 -0 -0 -50 +sky = 0, 0, 0 +border = 175, 177, 75 +water-top = $2B, $2B, $2B +water-bottom = $2A, $2A, $2A +water-opacity = $CC +music = hell.ogg +clouds = 9 +flakes = 50, 1, 1000, 50, 50 +;1, 1000, 50, 50 are copied from bamboo theme, as these numbers are required
--- a/share/hedgewars/Data/Themes/Desert/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Desert/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,26 +1,15 @@ -116 239 255 -242 230 124 -$3E $7B $94 -$35 $69 $85 $80 -Desert.ogg -9 -7 -sand -4 9 3 4 4 2 1 1 7 27 9 31 5 6 -sandR -4 4 3 4 4 2 9 1 7 27 3 31 5 6 -buzzard -1 17 318 4 21 1 51 91 289 241 -cobra -1 65 230 57 4 1 28 0 206 202 -cactus -3 27 440 73 10 1 0 0 258 384 -rock1 -2 75 108 73 12 1 0 0 173 99 -rock2 -5 7 18 10 1 1 0 0 24 12 -1 -cowskull -2 -0 -1 9999 50 10 +sky = 116, 239, 255 +border = 242, 230, 124 +water-top = $3E, $7B, $94 +water-bottom = $35, $69, $85 +water-opacity = $80 +music = Desert.ogg +clouds = 9 +object = sand, 4, 9, 3, 4, 4, 2, 1, 1, 7, 27, 9, 31, 5, 6 +object = sandR, 4, 4, 3, 4, 4, 2, 9, 1, 7, 27, 3, 31, 5, 6 +object = buzzard, 1, 17, 318, 4, 21, 1, 51, 91, 289, 241 +object = cobra, 1, 65, 230, 57, 4, 1, 28, 0, 206, 202 +object = cactus, 3, 27, 440, 73, 10, 1, 0, 0, 258, 384 +object = rock1, 2, 75, 108, 73, 12, 1, 0, 0, 173, 99 +object = rock2, 5, 7, 18, 10, 1, 1, 0, 0, 24, 12 +spray = cowskull, 2
--- a/share/hedgewars/Data/Themes/EarthRise/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/EarthRise/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,14 +1,10 @@ -0 0 0 -106 106 106 -$54 $5C $9D -$34 $3C $7D $80 -EarthRise.ogg -0 -2 -Rock -3 65 258 175 2 1 0 0 240 215 -RockShort -3 0 165 163 2 1 0 0 163 140 -0 -20 -1 0 20 0 +sky = 0, 0, 0 +border = 106, 106, 106 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = EarthRise.ogg +clouds = 0 +object = Rock, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215 +object = RockShort, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140 +flakes = 20, 1, 0, 20, 0
--- a/share/hedgewars/Data/Themes/Eyes/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Eyes/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,9 +1,9 @@ -0 0 0 -175 177 75 -$2B $2B $2B -$2A $2A $2A $CC -hell.ogg -9 -0 -0 -50 +sky = 0, 0, 0 +border = 175, 177, 75 +water-top = $2B, $2B, $2B +water-bottom = $2A, $2A, $2A +water-opacity = $CC +music = hell.ogg +clouds = 9 +flakes = 50, 1, 1000, 50, 50 +;1, 1000, 50, 50 are copied from bamboo theme, as these numbers are required
--- a/share/hedgewars/Data/Themes/Freeway/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Freeway/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,22 +1,14 @@ -99 51 43 -70 58 55 -$54 $5C $9D -$34 $3C $7D $80 -Freeway.ogg -9 -2 -Tire -3 83 215 92 35 1 0 0 250 190 -AppleSmall -3 40 0 25 1 1 0 35 100 65 -4 -TireDirt -2 -AppleDirt -5 -FishDirt -4 -BottleDirt -4 -200 -1 0 0 0 +sky = 99, 51, 43 +border = 70, 58, 55 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = Freeway.ogg +clouds = 9 +object = Tire, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190 +object = AppleSmall, 3, 40, 0, 25, 1, 1, 0, 35, 100, 65 +spray = TireDirt, 2 +spray = AppleDirt, 5 +spray = FishDirt, 4 +spray = BottleDirt, 4 +flakes = 200, 1, 0, 0, 0
--- a/share/hedgewars/Data/Themes/Halloween/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Halloween/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,14 +1,10 @@ -16 3 8 -116 0 100 -37 91 31 -44 84 40 $80 -Halloween.ogg -9 -2 -Rock -3 65 258 175 2 1 0 0 240 215 -RockShort -3 0 165 163 2 1 0 0 163 140 -0 -20 -7 130 0 5 +sky = 16, 3, 8 +border = 116, 0, 100 +water-top = 37, 91, 31 +water-bottom = 44, 84, 40 +water-opacity = $80 +music = Halloween.ogg +clouds = 9 +object = Rock, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215 +object = RockShort, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140 +flakes = 20, 7, 130, 0, 5
--- a/share/hedgewars/Data/Themes/Hell/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Hell/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,12 @@ -10 10 10 -245 118 0 -$A7 $0B $0C -$A1 $0A $0A $80 -hell.ogg -9 -4 -plant1 -3 83 215 92 35 1 0 0 250 190 -plant2 -3 118 115 41 20 1 0 0 159 110 -plant3 -3 0 115 70 40 1 8 0 60 100 -plant4 -3 20 200 25 5 1 0 0 70 150 -0 -20 -30 0 0 250 +sky = 10, 10, 10 +border = 245, 118, 0 +water-top = $A7, $0B, $0C +water-bottom = $A1, $0A, $0A +water-opacity = $80 +music = hell.ogg +clouds = 9 +object = plant1, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190 +object = plant2, 3, 118, 115, 41, 20, 1, 0, 0, 159, 110 +object = plant3, 3, 0, 115, 70, 40, 1, 8, 0, 60, 100 +object = plant4, 3, 20, 200, 25, 5, 1, 0, 0, 70, 150 +flakes = 20, 30, 0, 0, 250
--- a/share/hedgewars/Data/Themes/Island/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Island/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,20 +1,13 @@ -21 20 38 -242 230 124 -$54 $5C $9D -$34 $3C $7D $80 -pirate.ogg -9 -5 -anchor -3 65 258 80 2 1 0 0 240 215 -plant1 -3 10 192 60 2 1 33 0 149 152 -plant2 -3 55 218 30 2 1 0 0 240 175 -plant3 -3 20 0 60 1 1 0 15 100 44 -plant4 -3 78 5 2 60 1 0 0 65 110 -0 -100 -2 500 100 300 +sky = 21, 20, 38 +border = 242, 230, 124 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = pirate.ogg +clouds = 9 +object = anchor, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = plant1, 3, 10, 192, 60, 2, 1, 33, 0, 149, 152 +object = plant2, 3, 55, 218, 30, 2, 1, 0, 0, 240, 175 +object = plant3, 3, 20, 0, 60, 1, 1, 0, 15, 100, 44 +object = plant4, 3, 78, 5, 2, 60, 1, 0, 0, 65, 110 +flakes = 100, 2, 500, 100, 300
--- a/share/hedgewars/Data/Themes/Jungle/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Jungle/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,30 +1,18 @@ -141 149 164 -75 103 25 -$A7 $6A $32 -$B3 $78 $1B $80 -oriental.ogg -20 -7 -PalmTree -1 141 225 25 5 1 0 0 230 190 -Flowers -1 5 65 180 5 1 0 0 150 50 -Liana -2 0 0 25 10 1 0 40 25 160 -Monkey -1 20 145 60 5 1 0 0 130 130 -Snake -1 30 95 40 5 1 0 0 110 75 -FernRight -2 0 0 20 70 1 40 0 165 70 -FernLeft -2 185 0 20 70 1 0 0 165 70 -3 -FlowerRed -2 -FlowerBlue -2 -Spider -2 -100 -1 1000 50 50 +sky = 141, 149, 164 +border = 75, 103, 25 +water-top = $A7, $6A, $32 +water-bottom = $B3, $78, $1B +water-opacity = $80 +music = oriental.ogg +clouds = 20 +object = PalmTree, 1, 141, 225, 25, 5, 1, 0, 0, 230, 190 +object = Flowers, 1, 5, 65, 180, 5, 1, 0, 0, 150, 50 +object = Liana, 2, 0, 0, 25, 10, 1, 0, 40, 25, 160 +object = Monkey, 1, 20, 145, 60, 5, 1, 0, 0, 130, 130 +object = Snake, 1, 30, 95, 40, 5, 1, 0, 0, 110, 75 +object = FernRight, 2, 0, 0, 20, 70, 1, 40, 0, 165, 70 +object = FernLeft, 2, 185, 0, 20, 70, 1, 0, 0, 165, 70 +spray = FlowerRed, 2 +spray = FlowerBlue, 2 +spray = Spider, 2 +flakes = 100, 1, 1000, 50, 50
--- a/share/hedgewars/Data/Themes/Nature/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Nature/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,33 +1,19 @@ -19 18 82 -176 51 0 -$54 $5C $9D -$34 $3C $7D -$80 -Nature.ogg -9 -11 -plant1 -3 65 258 80 2 1 0 0 240 215 -plant2 -3 21 163 33 15 1 60 62 87 95 -plant3 -3 40 0 25 1 1 0 35 100 65 -plant4 -3 98 10 2 25 1 0 0 70 110 -mole -1 0 129 161 71 1 13 0 142 99 -mole2 -1 0 129 161 71 1 13 0 142 99 -mole3 -1 0 129 161 71 1 13 0 142 99 -butterfly -1 43 176 56 6 1 21 14 91 46 -snail -3 51 94 52 3 1 0 0 135 87 -mushroom -3 14 77 24 2 1 0 0 76 73 -mushroom2 -3 24 78 48 7 2 0 0 80 36 15 38 57 30 -0 -55 -40 99999999 30 200 +sky = 19, 18, 82 +border = 176, 51, 0 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = Nature.ogg +clouds = 9 +object = plant1, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = plant2, 3, 21, 163, 33, 15, 1, 60, 62, 87, 95 +object = plant3, 3, 40, 0, 25, 1, 1, 0, 35, 100, 65 +object = plant4, 3, 98, 10, 2, 25, 1, 0, 0, 70, 110 +object = mole, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99 +object = mole2, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99 +object = mole3, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99 +object = butterfly, 1, 43, 176, 56, 6, 1, 21, 14, 91, 46 +object = snail, 3, 51, 94, 52, 3, 1, 0, 0, 135, 87 +object = mushroom, 3, 14, 77, 24, 2, 1, 0, 0, 76, 73 +object = mushroom2, 3, 24, 78, 48, 7, 2, 0, 0, 80, 36, 15, 38, 57, 30 +flakes = 55, 40, 99999999, 30, 200
--- a/share/hedgewars/Data/Themes/Olympics/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Olympics/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,19 +1,12 @@ -177 190 216 -204 200 168 -$54 $5C $9D -$34 $3C $7D -$80 -Olympics.ogg -9 -4 -Statue -3 42 258 115 2 1 0 0 165 240 -Column01 -3 21 258 80 2 1 0 0 110 240 -Column02 -3 12 258 76 2 1 0 0 110 240 -Column03 -3 3 173 84 2 1 0 0 90 155 -0 -50 -1 1000 0 10 +sky = 177, 190, 216 +border = 204, 200, 168 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = Olympics.ogg +clouds = 9 +object = Statue, 3, 42, 258, 115, 2, 1, 0, 0, 165, 240 +object = Column01, 3, 21, 258, 80, 2, 1, 0, 0, 110, 240 +object = Column02, 3, 12, 258, 76, 2, 1, 0, 0, 110, 240 +object = Column03, 3, 3, 173, 84, 2, 1, 0, 0, 90, 155 +flakes = 50, 1, 1000, 0, 10
--- a/share/hedgewars/Data/Themes/Planes/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Planes/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,9 +1,7 @@ -21 20 38 -177 175 49 -$54 $5C $9D -$34 $3C $7D $80 -City.ogg -9 -0 -0 -0 +sky = 21, 20, 38 +border = 177, 175, 49 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = City.ogg +clouds = 9
--- a/share/hedgewars/Data/Themes/Sheep/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Sheep/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,40 +1,23 @@ -66 71 141 -0 88 0 -$54 $5C $9D -$34 $3C $7D $80 -Sheep.ogg -4 -7 -fleur -3 45 127 50 3 1 0 0 120 105 -mouton1 -3 88 222 122 4 1 0 0 275 200 -mouton2 -3 84 245 125 20 1 0 0 275 200 -mouton3 -3 152 255 176 15 1 0 0 440 230 -mouton4 -3 148 245 162 20 1 0 0 440 205 -barriere -3 34 190 300 10 1 0 0 381 140 -rocher -3 16 90 69 3 1 0 0 110 65 -8 -grass -7 -grass2 -7 -grassp -7 -grassp2 -7 -fleurland -7 -fleurland2 -7 -fleurland3 -7 -fleurland4 -7 -20 -1000 1000 25 1 +sky = 66, 71, 141 +border = 0, 88, 0 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = Sheep.ogg +clouds = 4 +object = fleur, 3, 45, 127, 50, 3, 1, 0, 0, 120, 105 +object = mouton1, 3, 88, 222, 122, 4, 1, 0, 0, 275, 200 +object = mouton2, 3, 84, 245, 125, 20, 1, 0, 0, 275, 200 +object = mouton3, 3, 152, 255, 176, 15, 1, 0, 0, 440, 230 +object = mouton4, 3, 148, 245, 162, 20, 1, 0, 0, 440, 205 +object = barriere, 3, 34, 190, 300, 10, 1, 0, 0, 381, 140 +object = rocher, 3, 16, 90, 69, 3, 1, 0, 0, 110, 65 +spray = grass, 7 +spray = grass2, 7 +spray = grassp, 7 +spray = grassp2, 7 +spray = fleurland, 7 +spray = fleurland2, 7 +spray = fleurland3, 7 +spray = fleurland4, 7 +flakes = 20, 1000, 1000, 25, 1
--- a/share/hedgewars/Data/Themes/Snow/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Snow/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,18 +1,12 @@ -21 20 38 -141 151 213 -$54 $5C $9D -$34 $3C $7D $80 -snow.ogg -9 -4 -plant1 -3 65 258 80 2 1 0 0 240 215 -plant2 -3 0 85 25 25 2 0 0 170 70 50 70 120 40 -plant3 -3 26 0 48 1 1 25 15 50 60 -plant4 -3 45 4 1 45 1 20 45 20 60 -0 -100 -3 99999999 100 300 +sky = 21, 20, 38 +border = 141, 151, 213 +water-top = $54, $5C, $9D +water-bottom = $34, $3C, $7D +water-opacity = $80 +music = snow.ogg +clouds = 9 +object = plant1, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = plant2, 3, 0, 85, 25, 25, 2, 0, 0, 170, 70, 50, 70, 120, 40 +object = plant3, 3, 26, 0, 48, 1, 1, 25, 15, 50, 60 +object = plant4, 3, 45, 4, 1, 45, 1, 20, 45, 20, 60 +flakes = 100, 3, 99999999, 100, 300
--- a/share/hedgewars/Data/Themes/Stage/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Stage/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,30 +1,18 @@ -0 0 0 -106 106 106 -72 105 127 -37 76 91 128 -Rock.ogg -0 -6 -MicR -1 0 28 7 24 1 25 0 125 52 -MicL -1 145 27 5 25 1 0 0 110 52 -Bass -1 243 373 20 5 1 0 0 330 310 -Light -1 10 0 65 10 1 0 42 140 122 -Box -1 0 170 150 8 1 0 0 150 145 -drum -1 0 202 239 4 1 39 0 200 150 -4 -poster1 -2 -poster2 -2 -poster3 -2 -poster4 -2 -100 -3 99999999 10 20 +sky = 0, 0, 0 +border = 106, 106, 106 +water-top = 72, 105, 127 +water-bottom = 37, 76, 91 +water-opacity = 128 +music = Rock.ogg +clouds = 0 +object = MicR, 1, 0, 28, 7, 24, 1, 25, 0, 125, 52 +object = MicL, 1, 145, 27, 5, 25, 1, 0, 0, 110, 52 +object = Bass, 1, 243, 373, 20, 5, 1, 0, 0, 330, 310 +object = Light, 1, 10, 0, 65, 10, 1, 0, 42, 140, 122 +object = Box, 1, 0, 170, 150, 8, 1, 0, 0, 150, 145 +object = drum, 1, 0, 202, 239, 4, 1, 39, 0, 200, 150 +spray = poster1, 2 +spray = poster2, 2 +spray = poster3, 2 +spray = poster4, 2 +flakes = 100, 3, 99999999, 10, 20
--- a/share/hedgewars/Data/Themes/Underwater/theme.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/Underwater/theme.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -1,20 +1,13 @@ -255 255 255 -123 148 220 -0 0 0 -0 0 0 $FF -underwater.ogg -9 -5 -anchor -3 65 258 80 2 1 0 0 240 215 -clam -3 60 131 16 2 1 0 0 150 117 -crab -3 78 256 96 2 1 3 60 237 155 -coral -3 10 193 38 32 2 128 66 66 94 39 0 88 167 -coral2 -3 119 146 23 22 1 5 0 123 130 -0 -20 -20 150 0 5 +sky = 255, 255, 255 +border = 123, 148, 220 +water-top = 0, 0, 0 +water-bottom = 0, 0, 0 +water-opacity = $FF +music = underwater.ogg +clouds = 9 +object = anchor, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215 +object = clam, 3, 60, 131, 16, 2, 1, 0, 0, 150, 117 +object = crab, 3, 78, 256, 96, 2, 1, 3, 60, 237, 155 +object = coral, 3, 10, 193, 38, 32, 2, 128, 66, 66, 94, 39, 0, 88, 167 +object = coral2, 3, 119, 146, 23, 22, 1, 5, 0, 123, 130 +flakes = 20, 20, 150, 0, 5
--- a/share/hedgewars/Data/Themes/themes.cfg Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/Themes/themes.cfg Tue Jan 04 12:53:46 2011 +0100 @@ -4,6 +4,7 @@ Brick Castle Cheese +Christmas City Compost Desert
--- a/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Tue Jan 04 12:53:46 2011 +0100 @@ -8,13 +8,14 @@ --> <comment>Hedgewars Demo</comment> <comment xml:lang="de">Hedgewars Demo</comment> - <comment xml:lang="fr">Hedgewars Démonstration</comment> + <comment xml:lang="es">Demo de Hedgewars</comment> + <comment xml:lang="fr">Démonstration d'Hedgewars</comment> + <comment xml:lang="it">Demo di Hedgewars</comment> + <comment xml:lang="ko">헤즈와스 데모</comment> <comment xml:lang="pl">Demo gry Hedgewars</comment> + <comment xml:lang="pt">Hedgewars Demo</comment> <comment xml:lang="sk">Demo hry Hedgewars</comment> <comment xml:lang="sv">Demo för Hedgewars</comment> - <comment xml:lang="es">Demo de Hedgewars</comment> - <comment xml:lang="it">Demo di Hedgewars</comment> - <comment xml:lang="pt">Hedgewars Demo</comment> <magic priority="50"> <match required="yes" type="byte" offset="0" value="2"/> <match required="yes" type="big16" offset="1" value="21572"/> @@ -26,12 +27,14 @@ <!--<generic-icon name="applications-games"/>--> <comment>Hedgewars Save</comment> <comment xml:lang="de">Hedgewars gespeichertes Spiel</comment> + <comment xml:lang="es">Partida guardada de Hedgewars</comment> + <comment xml:lang="fr">Parties enregistrées d'Hedgewars</comment> + <comment xml:lang="ko">헤즈와스 저장된 게임</comment> + <comment xml:lang="it">Partita salvata di Hedgewars</comment> <comment xml:lang="pl">Zapis gry Hedgewars</comment> + <comment xml:lang="pt">Partida guardada de Hedgewars</comment> <comment xml:lang="sk">Uložená hra Hedgewars</comment> <comment xml:lang="sv">Sparfil för Hedgewars</comment> - <comment xml:lang="es">Partida guardada de Hedgewars</comment> - <comment xml:lang="it">Partita salvata di Hedgewars</comment> - <comment xml:lang="pt">Partida guardada de Hedgewars</comment> <magic priority="50"> <match required="yes" type="byte" offset="0" value="2"/> <match required="yes" type="big16" offset="1" value="21587"/>
--- a/share/hedgewars/Data/misc/hwengine.desktop.in Mon Dec 27 23:57:44 2010 +0100 +++ b/share/hedgewars/Data/misc/hwengine.desktop.in Tue Jan 04 12:53:46 2011 +0100 @@ -5,13 +5,14 @@ Name=Hedgewars Engine GenericName=Hedgewars engine, for playback of saves and demos GenericName[de]=Hedgewars engine, für die Wiedergabe von gespeicherten Spielen und Demos +GenericName[es]=Motor del juego Hedgewars, reproduce demos y partidas guardadas +GenericName[fr]=Moteur graphique d'Hedgewars, pour revoir les parties enregistrées et de démonstration. +GenericName[it]=Motore grafico di Hedgewars, riproduce le demo e riprende le partite salvate GenericName[pl]=Silnik gry Hedgewars do odtwarzania dem i zapisów gier +GenericName[pt]=Motor de jogo Hedgewars, para reprodução de jogos guardados e demos +GenericName[ru]=Движок Hedgewars для проигрывания сохранённых игр и демок GenericName[sk]=Engine hry Hedgewars, pre prehrávanie uložených hier a demo súborov GenericName[sv]=Hedgewarsmotorn, för att öppna demo- och sparfiler -GenericName[es]=Motor del juego Hedgewars, reproduce demos y partidas guardadas -GenericName[it]=Motore grafico di Hedgewars, riproduce le demo e riprende le partite salvate -GenericName[pt]=Motor de jogo Hedgewars, para reprodução de jogos guardados e demos -GenericName[ru]=Движок Hedgewars для проигрывания сохранённых игр и демок Icon=hedgewars.png Exec=${CMAKE_INSTALL_PREFIX}/bin/hwengine ${HEDGEWARS_DATADIR}/hedgewars/Data %f Path=/tmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/PascalParser.hs Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,98 @@ +module PascalParser where + +import Text.ParserCombinators.Parsec +import Control.Monad + +data PascalUnit = + Program Identificator Implementation FunctionBody + | Unit Identificator Interface Implementation (Maybe Initialize) (Maybe Finalize) + deriving Show + +data Interface = Interface Uses TypesAndVars + deriving Show +data Implementation = Implementation Uses TypesAndVars Functions + deriving Show +data Functions = Functions [Function] + deriving Show +data Function = Function String + deriving Show +data Identificator = Identificator String + deriving Show +data FunctionBody = FunctionBody String + deriving Show +data TypesAndVars = TypesAndVars String + deriving Show +data Initialize = Initialize Functions + deriving Show +data Finalize = Finalize Functions + deriving Show +data Uses = Uses [Identificator] + deriving Show + +parsePascalUnit :: String -> Either ParseError PascalUnit +parsePascalUnit = parse pascalUnit "unit" + where + comments = skipMany (comment >> spaces) + identificator = do + spaces + l <- letter <|> oneOf "_" + ls <- many (alphaNum <|> oneOf "_") + spaces + return $ Identificator (l:ls) + + pascalUnit = do + spaces + comments + u <- choice [program, unit] + comments + spaces + return u + + comment = choice [ + char '{' >> manyTill anyChar (try $ char '}') + , string "(*" >> manyTill anyChar (try $ string "*)") + , string "//" >> manyTill anyChar (try newline) + ] + + unit = do + name <- unitName + spaces + comments + int <- string "interface" >> interface + manyTill anyChar (try $ string "implementation") + spaces + comments + impl <- implementation + return $ Unit name int impl Nothing Nothing + where + unitName = between (string "unit") (char ';') identificator + + interface = do + spaces + comments + u <- uses + return $ Interface u (TypesAndVars "") + + program = do + name <- programName + spaces + comments + impl <- implementation + return $ Program name impl (FunctionBody "") + where + programName = between (string "program") (char ';') identificator + + implementation = do + u <- uses + manyTill anyChar (try $ string "end.") + return $ Implementation u (TypesAndVars "") (Functions []) + + uses = liftM Uses (option [] u) + where + u = do + string "uses" + spaces + u <- (identificator >>= \i -> spaces >> return i) `sepBy1` (char ',' >> spaces) + char ';' + spaces + return u
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/drawMapTest.pro Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,15 @@ +# ------------------------------------------------- +# Project created by QtCreator 2010-11-27T22:18:20 +# ------------------------------------------------- +TARGET = drawMapTest +TEMPLATE = app +SOURCES += main.cpp \ + mainwindow.cpp \ + drawmapscene.cpp \ + qaspectratiolayout.cpp \ + drawmapwidget.cpp +HEADERS += mainwindow.h \ + drawmapscene.h \ + qaspectratiolayout.h \ + drawmapwidget.h +FORMS += mainwindow.ui
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/drawmapscene.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,187 @@ +#include <QDebug> +#include <QGraphicsSceneMouseEvent> +#include <QGraphicsPathItem> +#include <QtEndian> + +#include "drawmapscene.h" + +template <class T> T sqr(const T & x) +{ + return x*x; +} + +DrawMapScene::DrawMapScene(QObject *parent) : + QGraphicsScene(parent), + m_pen(Qt::yellow), + m_brush(Qt::yellow) +{ + setSceneRect(0, 0, 4096, 2048); + + QLinearGradient gradient(0, 0, 0, 2048); + gradient.setColorAt(0, QColor(60, 60, 155)); + gradient.setColorAt(1, QColor(155, 155, 60)); + setBackgroundBrush(QBrush(gradient)); + + m_pen.setWidth(67); + m_pen.setJoinStyle(Qt::RoundJoin); + m_pen.setCapStyle(Qt::RoundCap); + m_currPath = 0; +} + +void DrawMapScene::mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent) +{ + + qDebug() << "move" << mouseEvent->scenePos(); + + if(m_currPath && (mouseEvent->buttons() & Qt::LeftButton)) + { + QPainterPath path = m_currPath->path(); + path.lineTo(mouseEvent->scenePos()); + paths.first().append(mouseEvent->scenePos().toPoint()); + m_currPath->setPath(path); + + emit pathChanged(); + } +} + +void DrawMapScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent) +{ + qDebug() << "press" << mouseEvent->scenePos(); + + m_currPath = addPath(QPainterPath(), m_pen); + + QPainterPath path = m_currPath->path(); + QPointF p = mouseEvent->scenePos(); + p += QPointF(0.01, 0.01); + path.moveTo(p); + path.lineTo(mouseEvent->scenePos()); + paths.prepend(QList<QPoint>() << mouseEvent->scenePos().toPoint()); + m_currPath->setPath(path); + + emit pathChanged(); +} + +void DrawMapScene::mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent) +{ + qDebug() << "release" << mouseEvent->scenePos(); + + simplifyLast(); + + m_currPath = 0; +} + +void DrawMapScene::undo() +{ + if(items().size()) + { + removeItem(items().first()); + paths.removeFirst(); + + emit pathChanged(); + } +} + +QByteArray DrawMapScene::encode() +{ + QByteArray b; + + foreach(QList<QPoint> points, paths) + { + int cnt = 0; + foreach(QPoint point, points) + { + qint16 px = qToBigEndian((qint16)point.x()); + qint16 py = qToBigEndian((qint16)point.y()); + quint8 flags = 2; + if(!cnt) flags |= 0x80; + b.append((const char *)&px, 2); + b.append((const char *)&py, 2); + b.append((const char *)&flags, 1); + + ++cnt; + } + + } + + return b; +} + +void DrawMapScene::decode(QByteArray data) +{ + clear(); + paths.clear(); + + QList<QPoint> points; + + while(data.size() >= 5) + { + qint16 px = qFromBigEndian(*(qint16 *)data.data()); + data.remove(0, 2); + qint16 py = qFromBigEndian(*(qint16 *)data.data()); + data.remove(0, 2); + quint8 flags = *(quint8 *)data.data(); + data.remove(0, 1); + + //last chunk or first point + if((data.size() < 5) || (flags & 0x80)) + { + if(points.size()) + { + qDebug() << points; + addPath(pointsToPath(points), m_pen); + paths.prepend(points); + + points.clear(); + } + } + + points.append(QPoint(px, py)); + } +} + +void DrawMapScene::simplifyLast() +{ + QList<QPoint> points = paths[0]; + + QPoint prevPoint = points.first(); + int i = 1; + while(i < points.size()) + { + if( (i != points.size() - 1) + && (sqr(prevPoint.x() - points[i].x()) + sqr(prevPoint.y() - points[i].y()) < 1000) + ) + points.removeAt(i); + else + { + prevPoint = points[i]; + ++i; + } + } + + paths[0] = points; + + + // redraw path + { + QGraphicsPathItem * pathItem = static_cast<QGraphicsPathItem *>(items()[0]); + pathItem->setPath(pointsToPath(paths[0])); + } + + emit pathChanged(); +} + +QPainterPath DrawMapScene::pointsToPath(const QList<QPoint> points) +{ + QPainterPath path; + + if(points.size()) + { + QPointF p = points[0] + QPointF(0.01, 0.01); + path.moveTo(p); + + foreach(QPoint p, points) + path.lineTo(p); + } + + return path; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/drawmapscene.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,40 @@ +#ifndef DRAWMAPSCENE_H +#define DRAWMAPSCENE_H + +#include <QGraphicsScene> +#include <QPainterPath> + +class QGraphicsPathItem; + +typedef QList<QList<QPoint> > Paths; + +class DrawMapScene : public QGraphicsScene +{ +Q_OBJECT +public: + explicit DrawMapScene(QObject *parent = 0); + + QByteArray encode(); + void decode(QByteArray data); + +signals: + void pathChanged(); + +public slots: + void undo(); + void simplifyLast(); + +private: + QPen m_pen; + QBrush m_brush; + QGraphicsPathItem * m_currPath; + Paths paths; + + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent); + virtual void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent); + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent); + + QPainterPath pointsToPath(const QList<QPoint> points); +}; + +#endif // DRAWMAPSCENE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/drawmapwidget.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,38 @@ +#include "drawmapwidget.h" + +DrawMapWidget::DrawMapWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::DrawMapWidget) +{ + ui->setupUi(this); +} + +DrawMapWidget::~DrawMapWidget() +{ + delete ui; +} + +void DrawMapWidget::changeEvent(QEvent *e) +{ + QWidget::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + +void DrawMapWidget::setScene(DrawMapScene * scene) +{ + ui->graphicsView->setScene(scene); +} + +void DrawMapWidget::resizeEvent(QResizeEvent * event) +{ + Q_UNUSED(event); + + if(ui->graphicsView && ui->graphicsView->scene()) + ui->graphicsView->fitInView(ui->graphicsView->scene()->sceneRect(), Qt::KeepAspectRatio); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/drawmapwidget.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,61 @@ +#ifndef DRAWMAPWIDGET_H +#define DRAWMAPWIDGET_H + +#include <QWidget> +#include <QHBoxLayout> +#include <QPushButton> +#include <QGraphicsView> +#include <QApplication> + +#include "qaspectratiolayout.h" +#include "drawmapscene.h" + +namespace Ui { + class Ui_DrawMapWidget + { + public: + QGraphicsView *graphicsView; + QPushButton *pbUndo; + + void setupUi(QWidget *drawMapWidget) + { + QAspectRatioLayout * arLayout = new QAspectRatioLayout(drawMapWidget); + arLayout->setMargin(0); + + graphicsView = new QGraphicsView(drawMapWidget); + arLayout->addWidget(graphicsView); + + retranslateUi(drawMapWidget); + + QMetaObject::connectSlotsByName(drawMapWidget); + } // setupUi + + void retranslateUi(QWidget *drawMapWidget) + { + Q_UNUSED(drawMapWidget); + } // retranslateUi + + }; + + class DrawMapWidget: public Ui_DrawMapWidget {}; +} + +class DrawMapWidget : public QWidget +{ + Q_OBJECT + +public: + explicit DrawMapWidget(QWidget *parent = 0); + ~DrawMapWidget(); + + void setScene(DrawMapScene * scene); + +protected: + void changeEvent(QEvent *e); + virtual void resizeEvent(QResizeEvent * event); + +private: + Ui::DrawMapWidget *ui; +}; + +#endif // DRAWMAPWIDGET_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/main.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,10 @@ +#include <QtGui/QApplication> +#include "mainwindow.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/mainwindow.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,70 @@ +#include <QFileDialog> + +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "drawmapscene.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + scene = new DrawMapScene(this); + //ui->graphicsView->setScene(scene); + ui->drawMapWidget->setScene(scene); + + connect(ui->pbUndo, SIGNAL(clicked()), scene, SLOT(undo())); + connect(scene, SIGNAL(pathChanged()), this, SLOT(scene_pathChanged())); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::changeEvent(QEvent *e) +{ + QMainWindow::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } +} + +void MainWindow::scene_pathChanged() +{ + QString str = scene->encode().toBase64(); + ui->plainTextEdit->setPlainText(str); + ui->sbBytes->setValue(str.size()); +} + +void MainWindow::on_pbSave_clicked() +{ + QString fileName = QFileDialog::getSaveFileName(this, tr("Save map"), "."); + + if(!fileName.isEmpty()) + { + QFile f(fileName); + + f.open(QIODevice::WriteOnly); + f.write(scene->encode()); + } +} + +void MainWindow::on_pbLoad_clicked() +{ + QString fileName = QFileDialog::getOpenFileName(this, tr("Open map file"), "."); + + if(!fileName.isEmpty()) + { + QFile f(fileName); + + f.open(QIODevice::ReadOnly); + QByteArray data = f.readAll(); + scene->decode(data); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/mainwindow.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,31 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include <QMainWindow> + +namespace Ui { + class MainWindow; +} + +class DrawMapScene; + +class MainWindow : public QMainWindow { + Q_OBJECT +public: + MainWindow(QWidget *parent = 0); + ~MainWindow(); + +protected: + void changeEvent(QEvent *e); + +private: + Ui::MainWindow *ui; + DrawMapScene * scene; + +private slots: + void on_pbLoad_clicked(); + void on_pbSave_clicked(); + void scene_pathChanged(); +}; + +#endif // MAINWINDOW_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/mainwindow.ui Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>600</width> + <height>400</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralWidget"> + <layout class="QGridLayout" name="gridLayout" rowstretch="3,1"> + <item row="1" column="2"> + <widget class="QPlainTextEdit" name="plainTextEdit"/> + </item> + <item row="0" column="0" rowspan="2"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPushButton" name="pbUndo"> + <property name="text"> + <string>Undo</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="pbSave"> + <property name="text"> + <string>Save</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pbLoad"> + <property name="text"> + <string>Load</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="sbBytes"> + <property name="readOnly"> + <bool>true</bool> + </property> + <property name="buttonSymbols"> + <enum>QAbstractSpinBox::NoButtons</enum> + </property> + <property name="suffix"> + <string> bytes</string> + </property> + <property name="maximum"> + <number>999999</number> + </property> + </widget> + </item> + </layout> + </item> + <item row="0" column="2"> + <widget class="DrawMapWidget" name="drawMapWidget" native="true"/> + </item> + </layout> + </widget> + </widget> + <layoutdefault spacing="6" margin="11"/> + <customwidgets> + <customwidget> + <class>DrawMapWidget</class> + <extends>QWidget</extends> + <header>drawmapwidget.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/qaspectratiolayout.cpp Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,206 @@ +/* + * Copyright (c) 2009 Nokia Corporation. + */ + +#include "qaspectratiolayout.h" + +QAspectRatioLayout::QAspectRatioLayout(QWidget* parent, int spacing) : QLayout(parent) { + init(spacing); +} + +QAspectRatioLayout::QAspectRatioLayout(int spacing) { + init(spacing); +} + +QAspectRatioLayout::~QAspectRatioLayout() { + delete item; + delete lastReceivedRect; + delete _geometry; +} + +void QAspectRatioLayout::init(int spacing) { + item = 0; + lastReceivedRect = new QRect(0, 0, 0, 0); + _geometry = new QRect(0, 0, 0, 0); + setSpacing(spacing); +} + + +/* Adds item if place isn't already taken. */ +void QAspectRatioLayout::add(QLayoutItem* item) { + if(!hasItem()) { + replaceItem(item); + } +} + +/* Adds item if place isn't already taken. */ +void QAspectRatioLayout::addItem(QLayoutItem* item) { + if(!hasItem()) { + replaceItem(item); + } +} + +/* Adds widget if place isn't already taken. */ +void QAspectRatioLayout::addWidget(QWidget* widget) { + if(!hasItem()) { + replaceItem(new QWidgetItem(widget)); + } +} + +/* Returns the item pointer and dereferences it here. */ +QLayoutItem* QAspectRatioLayout::take() { + QLayoutItem* item = 0; + if(this->hasItem()) { + item = this->item; + this->item = 0; + } + return item; +} + +/* Returns the item pointer and dereferences it here. */ +QLayoutItem* QAspectRatioLayout::takeAt(int index) { + if(index != 0) { + return 0; + } + return this->take(); +} + +/* Returns the item pointer. */ +QLayoutItem* QAspectRatioLayout::itemAt(int index) const { + if(index != 0) { + return 0; + } + if(hasItem()) { + return this->item; + } + return 0; +} + +/* Checks if we have an item. */ +bool QAspectRatioLayout::hasItem() const { + return this->item != 0; +} + +/* Returns the count of items which can be either 0 or 1. */ +int QAspectRatioLayout::count() const { + int returnValue = 0; + if(hasItem()) { + returnValue = 1; + } + return returnValue; +} + +/* Replaces the item with the new and returns the old. */ +QLayoutItem* QAspectRatioLayout::replaceItem(QLayoutItem* item) { + QLayoutItem* old = 0; + if(this->hasItem()) { + old = this->item; + } + this->item = item; + setGeometry(*this->_geometry); + return old; +} + +/* Tells which way layout expands. */ +Qt::Orientations QAspectRatioLayout::expandingDirections() const { + return Qt::Horizontal | Qt::Vertical; +} + +/* Tells which size is preferred. */ +QSize QAspectRatioLayout::sizeHint() const { + return this->item->minimumSize(); +} + +/* Tells minimum size. */ +QSize QAspectRatioLayout::minimumSize() const { + return this->item->minimumSize(); +} + +/* + * Tells if heightForWidth calculations is handled. + * It isn't since width isn't enough to calculate + * proper size. + */ +bool QAspectRatioLayout::hasHeightForWidth() const { + return false; +} + +/* Replaces lastReceivedRect. */ +void QAspectRatioLayout::setLastReceivedRect(const QRect& rect) { + QRect* oldRect = this->lastReceivedRect; + this->lastReceivedRect = new QRect(rect.topLeft(), rect.size()); + delete oldRect; +} + +/* Returns geometry */ +QRect QAspectRatioLayout::geometry() { + return QRect(*this->_geometry); +} + +/* Sets geometry to given size. */ +void QAspectRatioLayout::setGeometry(const QRect& rect) { + /* + * We check if the item is set and + * if size is the same previously received. + * If either is false nothing is done. + */ + if(!this->hasItem() || + areRectsEqual(*this->lastReceivedRect, rect)) { + return; + } + /* Replace the last received rectangle. */ + setLastReceivedRect(rect); + /* Calculate proper size for the item relative to the received size. */ + QSize properSize = calculateProperSize(rect.size()); + /* Calculate center location in the rect and with item size. */ + QPoint properLocation = calculateCenterLocation(rect.size(), properSize); + /* Set items geometry */ + this->item->setGeometry(QRect(properLocation, properSize)); + QRect* oldRect = this->_geometry; + /* Cache the calculated geometry. */ + this->_geometry = new QRect(properLocation, properSize); + delete oldRect; + /* Super classes setGeometry */ + QLayout::setGeometry(*this->_geometry); +} + +/* Takes the shortest side and creates QSize + * with the shortest side as width and height. */ +QSize QAspectRatioLayout::calculateProperSize(QSize from) const { + QSize properSize; + if(from.height() * 2 < from.width()) { + properSize.setHeight(from.height() - this->margin()); + properSize.setWidth(from.height() * 2 - this->margin()); + } + else { + properSize.setWidth(from.width() - this->margin()); + properSize.setHeight(from.width() / 2 - this->margin()); + } + return properSize; +} + +/* Calculates center location from the given height and width for item size. */ +QPoint QAspectRatioLayout::calculateCenterLocation(QSize from, + QSize itemSize) const { + QPoint centerLocation; + if((from.width() - itemSize.width()) > 0) { + centerLocation.setX((from.width() - itemSize.width())/2); + } + if((from.height() - itemSize.height()) > 0) { + centerLocation.setY((from.height() - itemSize.height())/2); + } + return centerLocation; +} + +/* Compares if two QRects are equal. */ +bool QAspectRatioLayout::areRectsEqual(const QRect& a, + const QRect& b) const { + bool result = false; + if(a.x() == b.x() && + a.y() == b.y() && + a.height() == b.height() && + a.width() == b.width()) { + result = true; + } + return result; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/drawMapTest/qaspectratiolayout.h Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2009 Nokia Corporation. + */ + +#ifndef QASPECTRATIOLAYOUT_H_ +#define QASPECTRATIOLAYOUT_H_ + +#include <QLayout> +#include <QPointer> +#include <QRect> +#include <QWidgetItem> +#include <QLayoutItem> + + +class QAspectRatioLayout : public QLayout +{ + Q_OBJECT + +public: + QAspectRatioLayout(QWidget* parent, int spacing =-1); + QAspectRatioLayout(int spacing = -1); + ~QAspectRatioLayout(); + + /* Convenience method */ + virtual void add(QLayoutItem* item); + +/* http://doc.trolltech.com/qlayout.html#addItem */ + virtual void addItem(QLayoutItem* item); + /* http://doc.trolltech.com/qlayout.html#addWidget */ + virtual void addWidget(QWidget* widget); + /* http://doc.trolltech.com/qlayout.html#takeAt */ + virtual QLayoutItem* takeAt(int index); + /* http://doc.trolltech.com/qlayout.html#itemAt */ + virtual QLayoutItem* itemAt(int index) const; + /* http://doc.trolltech.com/qlayout.html#count */ + virtual int count() const; + + /* + * These are ours since we do have only one item. + */ + virtual QLayoutItem* replaceItem(QLayoutItem* item); + virtual QLayoutItem* take(); + virtual bool hasItem() const; + +/* http://doc.trolltech.com/qlayout.html#expandingDirections */ + virtual Qt::Orientations expandingDirections() const; + + /* + * This method contains most of the juice of this article. + * http://doc.trolltech.com/qlayoutitem.html#setGeometry + */ + virtual void setGeometry(const QRect& rect); + /* http://doc.trolltech.com/qlayoutitem.html#geometry */ + virtual QRect geometry(); + + /* http://doc.trolltech.com/qlayoutitem.html#sizeHint */ + virtual QSize sizeHint() const; + /* http://doc.trolltech.com/qlayout.html#minimumSize */ + virtual QSize minimumSize() const; + /* http://doc.trolltech.com/qlayoutitem.html#hasHeightForWidth */ + virtual bool hasHeightForWidth() const; + +private: + /* Saves the last received rect. */ + void setLastReceivedRect(const QRect& rect); + /* Used to initialize the object. */ + void init(int spacing); + /* Calculates the maximum size for the item from the assigned size. */ + QSize calculateProperSize(QSize from) const; + /* Calculates the center location from the assigned size and + * the items size. */ + QPoint calculateCenterLocation(QSize from, QSize itemSize) const; + /* Check if two QRects are equal */ + bool areRectsEqual(const QRect& a, const QRect& b) const; + /* Contains item reference */ + QLayoutItem* item; + /* + * Used for caching so we won't do calculations every time + * setGeometry is called. + */ + QRect* lastReceivedRect; + /* Contains geometry */ + QRect* _geometry; + +}; + +#endif /* QASPECTRATIOLAYOUT_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/unitCycles.hs Tue Jan 04 12:53:46 2011 +0100 @@ -0,0 +1,46 @@ +module Main where + +import PascalParser +import System +import Control.Monad +import Data.Either +import Data.List +import Data.Graph +import Data.Maybe + +unident :: Identificator -> String +unident (Identificator s) = s + +extractUnits :: PascalUnit -> (String, [String]) +extractUnits (Program (Identificator name) (Implementation (Uses idents) _ _) _) = ("program " ++ name, map unident idents) +extractUnits (Unit (Identificator name) (Interface (Uses idents1) _) (Implementation (Uses idents2) _ _) _ _) = (name, map unident $ idents1 ++ idents2) + +f :: [(String, [String])] -> String +f = unlines . map showSCC . stronglyConnComp . map (\(a, b) -> (a, a, b)) + where + showSCC (AcyclicSCC v) = v + showSCC (CyclicSCC vs) = intercalate ", " vs + +myf :: [(String, [String])] -> String +myf d = unlines . map (findCycle . fst) $ d + where + findCycle :: String -> String + findCycle searched = searched ++ ": " ++ (intercalate ", " $ fc searched []) + where + fc :: String -> [String] -> [String] + fc curSearch visited = let uses = curSearch `lookup` d; res = dropWhile null . map t $ fromJust uses in if isNothing uses || null res then [] else head res + where + t u = + if u == searched then + [u] + else + if u `elem` visited then + [] + else + let chain = fc u (u:visited) in if null chain then [] else u:chain + + +main = do + fileNames <- getArgs + files <- mapM readFile fileNames + putStrLn . myf . map extractUnits . rights . map parsePascalUnit $ files