mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-23 21:29:13 +02:00
commit
1647b3670c
29
README.linux
29
README.linux
@ -31,43 +31,50 @@ On Debian-based systems (e.g. Ubuntu) run:
|
||||
sudo apt-get install cmake g++ libsdl1.2debian libsdl-image1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev zlib1g-dev libavformat-dev libswscale-dev libboost-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libboost-program-options-dev libboost-locale-dev qtbase5-dev
|
||||
|
||||
On RPM-based distributions (e.g. Fedora) run:
|
||||
sudo yum install cmake gcc-c++ SDL-devel SDL_image-devel SDL_ttf-devel SDL_mixer-devel boost boost-devel boost-filesystem boost-system boost-thread boost-program-options boost-locale zlib-devel ffmpeg-devel ffmpeg-libs
|
||||
sudo yum install cmake gcc-c++ SDL2-devel SDL2_image-devel SDL2_ttf-devel SDL2_mixer-devel boost boost-devel boost-filesystem boost-system boost-thread boost-program-options boost-locale zlib-devel ffmpeg-devel ffmpeg-libs
|
||||
|
||||
II. Getting the sources
|
||||
|
||||
VCMI is still in development. We recommend the following initial directory structure:
|
||||
trunk
|
||||
trunk/src -> contains sources and is under SVN control
|
||||
trunk/vcmi -> contains sources and is under git control
|
||||
trunk/build -> contains build output, makefiles, object files,...
|
||||
|
||||
You can get latest sources with subversion:
|
||||
cd trunk
|
||||
svn co http://svn.code.sf.net/p/vcmi/code/trunk/
|
||||
git clone https://github.com/vcmi/vcmi.git
|
||||
|
||||
III. Compilation
|
||||
|
||||
Run configure:
|
||||
mkdir build && cd build
|
||||
cmake ../src <any other options, see below>
|
||||
cmake ../vcmi <any other options, see below>
|
||||
|
||||
Additional options that you may want to use:
|
||||
To enable debugging: -DCMAKE_BUILD_TYPE=Debug
|
||||
To enable launcher: -DENABLE_LAUNCHER=Yes
|
||||
To change installation directory: -DCMAKE_INSTALL_PREFIX=$absolute_path_to_directory
|
||||
|
||||
Notice:
|
||||
The ../src/ is not a typo, it will place makefile scripts into the build dir
|
||||
The ../vcmi/ is not a typo, it will place makefile scripts into the build dir
|
||||
as the build dir is your working dir when calling CMake.
|
||||
|
||||
Then build vcmi:
|
||||
make -j2 (j2 = compile with 2 cpu cores, you can specifiy any value)
|
||||
make -j2 (j2 = compile with 2 threads, you can specify any value)
|
||||
|
||||
That will generate vcmiclient, vcmiserver as well as 3 .so libraries.
|
||||
That will generate vcmiclient, vcmiserver, vcmilauncher as well as 3 .so libraries.
|
||||
|
||||
III. Installing binaries
|
||||
|
||||
To install VCMI you can use "make install" command however generation of distribution-specific packages is usually a better idea. In most cases this can be achieved using tool called "checkinstall"
|
||||
|
||||
If you're compiling vcmi for development puposes, it's better to use links instead.
|
||||
If you're compiling vcmi for development puposes, the easiest is to use cmake prefix and then make install:
|
||||
|
||||
# mkdir .../trunk/install
|
||||
# cmake -DCMAKE_INSTALL_PREFIX=.../trunk/install ../vcmi
|
||||
# make && make install
|
||||
# .../trunk/install/bin/vcmiclient
|
||||
|
||||
|
||||
it's better to use links instead.
|
||||
Go to /BIN_PATH/, and type:
|
||||
|
||||
ln -s .../trunk/build/client/vcmiclient
|
||||
@ -86,5 +93,3 @@ Go to /LIB_PATH/vcmi/AI, and type:
|
||||
Go to /DATA_PATH/vcmi, and type:
|
||||
ln -s .../trunk/source/config
|
||||
ln -s .../trunk/source/Mods
|
||||
|
||||
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "../lib/Connection.h"
|
||||
#include "../lib/CSpellHandler.h"
|
||||
#include "../lib/CTownHandler.h"
|
||||
#include "../lib/mapObjects/CObjectClassesHandler.h" // For displaying correct UI when interacting with objects
|
||||
#include "../lib/BattleState.h"
|
||||
#include "../lib/JsonNode.h"
|
||||
#include "CMusicHandler.h"
|
||||
@ -1515,6 +1516,16 @@ void CPlayerInterface::centerView (int3 pos, int focusTime)
|
||||
void CPlayerInterface::objectRemoved( const CGObjectInstance *obj )
|
||||
{
|
||||
EVENT_HANDLER_CALLED_BY_CLIENT;
|
||||
if (LOCPLINT->cb->getCurrentPlayer() == playerID) {
|
||||
std::string handlerName = VLC->objtypeh->getObjectHandlerName(obj->ID);
|
||||
if ((handlerName == "pickable") || (handlerName == "scholar") || (handlerName== "artifact") || (handlerName == "pandora")) {
|
||||
waitWhileDialog();
|
||||
CCS->soundh->playSoundFromSet(CCS->soundh->pickupSounds);
|
||||
} else if ((handlerName == "monster") || (handlerName == "hero")) {
|
||||
waitWhileDialog();
|
||||
CCS->soundh->playSound(soundBase::KillFade);
|
||||
}
|
||||
}
|
||||
if(obj->ID == Obj::HERO && obj->tempOwner == playerID)
|
||||
{
|
||||
const CGHeroInstance *h = static_cast<const CGHeroInstance*>(obj);
|
||||
|
@ -3,6 +3,9 @@
|
||||
// Use some magic to keep the list of files and their code name in sync.
|
||||
|
||||
#define VCMI_SOUND_LIST \
|
||||
/* Sounds for map actions */ \
|
||||
VCMI_SOUND_NAME(KillFade) VCMI_SOUND_FILE(KILLFADE.wav) /* hero or monster disappears */ \
|
||||
/* Other sounds (TODO: separate out the sounds for units, spells and the rest */ \
|
||||
VCMI_SOUND_NAME(AAGLAttack) VCMI_SOUND_FILE(AAGLATTK.wav) \
|
||||
VCMI_SOUND_NAME(AAGLDefend) VCMI_SOUND_FILE(AAGLDFND.wav) \
|
||||
VCMI_SOUND_NAME(AAGLKill) VCMI_SOUND_FILE(AAGLKILL.wav) \
|
||||
@ -515,7 +518,6 @@ VCMI_SOUND_NAME(ITRGKill) VCMI_SOUND_FILE(ITRGKILL.wav) \
|
||||
VCMI_SOUND_NAME(ITRGMove) VCMI_SOUND_FILE(ITRGMOVE.wav) \
|
||||
VCMI_SOUND_NAME(ITRGWNCE) VCMI_SOUND_FILE(ITRGWNCE.wav) \
|
||||
VCMI_SOUND_NAME(KEEPShot) VCMI_SOUND_FILE(KEEPSHOT.wav) \
|
||||
VCMI_SOUND_NAME(KillFADE) VCMI_SOUND_FILE(KILLFADE.wav) \
|
||||
VCMI_SOUND_NAME(LANDKill) VCMI_SOUND_FILE(LANDKILL.wav) \
|
||||
VCMI_SOUND_NAME(LANDMINE) VCMI_SOUND_FILE(LANDMINE.wav) \
|
||||
VCMI_SOUND_NAME(LCRSAttack) VCMI_SOUND_FILE(LCRSATTK.wav) \
|
||||
@ -1033,4 +1035,4 @@ public:
|
||||
};
|
||||
#undef VCMI_SOUND_NAME
|
||||
#undef VCMI_SOUND_FILE
|
||||
};
|
||||
};
|
||||
|
@ -110,6 +110,7 @@ EResType::Type EResTypeHelper::getTypeFromExtension(std::string extension)
|
||||
(".AVI", EResType::VIDEO)
|
||||
(".MP3", EResType::MUSIC)
|
||||
(".OGG", EResType::MUSIC)
|
||||
(".FLAC", EResType::MUSIC)
|
||||
(".ZIP", EResType::ARCHIVE_ZIP)
|
||||
(".LOD", EResType::ARCHIVE_LOD)
|
||||
(".PAC", EResType::ARCHIVE_LOD)
|
||||
|
@ -318,6 +318,11 @@ std::string CObjectClassesHandler::getObjectName(si32 type, si32 subtype) const
|
||||
return getObjectName(type);
|
||||
}
|
||||
|
||||
std::string CObjectClassesHandler::getObjectHandlerName(si32 type) const
|
||||
{
|
||||
return objects.at(type)->handlerName;
|
||||
}
|
||||
|
||||
void AObjectTypeHandler::setType(si32 type, si32 subtype)
|
||||
{
|
||||
this->type = type;
|
||||
|
@ -221,6 +221,9 @@ public:
|
||||
|
||||
std::string getObjectName(si32 type) const;
|
||||
std::string getObjectName(si32 type, si32 subtype) const;
|
||||
|
||||
/// Returns handler string describing the handler (for use in client)
|
||||
std::string getObjectHandlerName(si32 type) const;
|
||||
|
||||
template <typename Handler> void serialize(Handler &h, const int version)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user