mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-24 08:32:34 +02:00
Version set to 0.8. (not release yet, waiting for a few more fixes)
* fixed possible crash on visiting Obelisk * fixed #394, #391, #395, #373
This commit is contained in:
parent
d7ba3571bd
commit
9e6d3a4453
@ -418,7 +418,8 @@ void CPlayerInterface::heroManaPointsChanged(const CGHeroInstance * hero)
|
||||
void CPlayerInterface::heroMovePointsChanged(const CGHeroInstance * hero)
|
||||
{
|
||||
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
||||
//adventureInt->heroList.draw();
|
||||
if(makingTurn && hero->tempOwner == playerID)
|
||||
adventureInt->heroList.redraw();
|
||||
}
|
||||
void CPlayerInterface::receivedResource(int type, int val)
|
||||
{
|
||||
@ -1797,6 +1798,7 @@ void CPlayerInterface::playerBonusChanged( const HeroBonus &bonus, bool gain )
|
||||
void CPlayerInterface::showPuzzleMap()
|
||||
{
|
||||
waitWhileDialog();
|
||||
boost::unique_lock<boost::recursive_mutex> un(*pim);
|
||||
|
||||
//TODO: interface should not know the real position of Grail...
|
||||
float ratio = 0;
|
||||
|
@ -109,8 +109,17 @@ void CMapInfo::mapInit(const std::string &fname, const unsigned char *map )
|
||||
mapHeader = new CMapHeader();
|
||||
mapHeader->version = CMapHeader::invalid;
|
||||
|
||||
mapHeader->initFromMemory(map, i);
|
||||
countPlayers();
|
||||
try
|
||||
{
|
||||
mapHeader->initFromMemory(map, i);
|
||||
countPlayers();
|
||||
}
|
||||
catch (const std::string &e)
|
||||
{
|
||||
tlog1 << "\t\tWarning: evil map file: " << fname << ": " << e << std::endl;
|
||||
delete mapHeader;
|
||||
mapHeader = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
CMapInfo::~CMapInfo()
|
||||
@ -567,9 +576,20 @@ void SelectionTab::getFiles(std::vector<FileInfo> &out, const std::string &dirna
|
||||
if(fs::is_regular_file(file->status())
|
||||
&& boost::ends_with(file->path().filename(), ext))
|
||||
{
|
||||
out.resize(out.size()+1);
|
||||
out.back().date = fs::last_write_time(file->path());
|
||||
out.back().name = file->path().string();
|
||||
std::time_t date = 0;
|
||||
try
|
||||
{
|
||||
date = fs::last_write_time(file->path());
|
||||
|
||||
out.resize(out.size()+1);
|
||||
out.back().date = date;
|
||||
out.back().name = file->path().string();
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
tlog2 << "\t\tWarning: very corrupted map file: " << file->path().string() << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,6 +87,12 @@ void SetMana::applyCl( CClient *cl )
|
||||
void SetMovePoints::applyCl( CClient *cl )
|
||||
{
|
||||
CGHeroInstance *h = GS(cl)->getHero(hid);
|
||||
|
||||
if (cl->IGameCallback::getSelectedHero(LOCPLINT->playerID) == h)//if we have selected that hero
|
||||
{
|
||||
GS(cl)->calculatePaths(h, *cl->pathInfo);
|
||||
}
|
||||
|
||||
if(vstd::contains(cl->playerint,h->tempOwner))
|
||||
cl->playerint[h->tempOwner]->heroMovePointsChanged(h);
|
||||
}
|
||||
|
7
global.h
7
global.h
@ -2,6 +2,7 @@
|
||||
#define __GLOBAL_H__
|
||||
#include <iostream>
|
||||
#include <algorithm> //std::find
|
||||
#include <string> //std::find
|
||||
#include <boost/logic/tribool.hpp>
|
||||
using boost::logic::tribool;
|
||||
#include <boost/cstdint.hpp>
|
||||
@ -20,7 +21,7 @@ typedef boost::int8_t si8; //signed int 8 bits (1 byte)
|
||||
#define THC
|
||||
#endif
|
||||
|
||||
#define NAME_VER ("VCMI 0.75e")
|
||||
#define NAME_VER ("VCMI 0.8")
|
||||
extern std::string NAME; //full name
|
||||
extern std::string NAME_AFFIX; //client / server
|
||||
#define CONSOLE_LOGGING_LEVEL 5
|
||||
@ -353,10 +354,10 @@ extern DLL_EXPORT CLogger<5> tlog5; //gray - minor log info
|
||||
tlog1 << e.what() << std::endl; \
|
||||
throw; \
|
||||
} \
|
||||
catch (const std::exception * e) \
|
||||
catch (const std::string &e) \
|
||||
{ \
|
||||
COMMAND; \
|
||||
tlog1 << e->what()<< std::endl; \
|
||||
tlog1 << e << std::endl; \
|
||||
throw; \
|
||||
}
|
||||
|
||||
|
@ -182,6 +182,10 @@ void MetaString::getLocalString(const std::pair<ui8,ui32> &txt, std::string &dst
|
||||
{
|
||||
dst = VLC->creh->creatures[ser].nameSing;
|
||||
}
|
||||
else if(type == ART_DESCR)
|
||||
{
|
||||
dst = VLC->arth->artifacts[ser].Description();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<std::string> *vec;
|
||||
|
@ -73,7 +73,7 @@ private:
|
||||
enum EMessage {TEXACT_STRING, TLOCAL_STRING, TNUMBER, TREPLACE_ESTRING, TREPLACE_LSTRING, TREPLACE_NUMBER};
|
||||
public:
|
||||
enum {GENERAL_TXT=1, XTRAINFO_TXT, OBJ_NAMES, RES_NAMES, ART_NAMES, ARRAY_TXT, CRE_PL_NAMES, CREGENS, MINE_NAMES,
|
||||
MINE_EVNTS, ADVOB_TXT, ART_EVNTS, SPELL_NAME, SEC_SKILL_NAME, CRE_SING_NAMES, CREGENS4, COLOR};
|
||||
MINE_EVNTS, ADVOB_TXT, ART_EVNTS, SPELL_NAME, SEC_SKILL_NAME, CRE_SING_NAMES, CREGENS4, COLOR, ART_DESCR};
|
||||
|
||||
std::vector<ui8> message; //vector of EMessage
|
||||
|
||||
|
@ -195,6 +195,10 @@ CMapHeader::CMapHeader()
|
||||
void CMapHeader::initFromMemory( const unsigned char *bufor, int &i )
|
||||
{
|
||||
version = (Eformat)(readNormalNr(bufor,i)); i+=4; //map version
|
||||
if(version != RoE && version != AB && version != SoD && version != WoG)
|
||||
{
|
||||
throw std::string("Invalid map format!");
|
||||
}
|
||||
areAnyPLayers = readChar(bufor,i); //invalid on some maps
|
||||
height = width = (readNormalNr(bufor,i)); i+=4; // dimensions of map
|
||||
twoLevel = readChar(bufor,i); //if there is underground
|
||||
|
@ -4059,15 +4059,21 @@ bool CGameHandler::dig( const CGHeroInstance *h )
|
||||
if(gs->map->grailPos == h->getPosition())
|
||||
{
|
||||
iw.text.addTxt(MetaString::GENERAL_TXT, 58); //"Congratulations! After spending many hours digging here, your hero has uncovered the "
|
||||
iw.text.addTxt(MetaString::ART_NAMES, 2);
|
||||
iw.soundID = soundBase::ULTIMATEARTIFACT;
|
||||
giveHeroArtifact(2, h->id, -1); //give grail
|
||||
sendAndApply(&iw);
|
||||
|
||||
iw.text.clear();
|
||||
iw.text.addTxt(MetaString::ART_DESCR, 2);
|
||||
sendAndApply(&iw);
|
||||
}
|
||||
else
|
||||
{
|
||||
iw.text.addTxt(MetaString::GENERAL_TXT, 59); //"Nothing here. \n Where could it be?"
|
||||
iw.soundID = soundBase::Dig;
|
||||
sendAndApply(&iw);
|
||||
}
|
||||
sendAndApply(&iw);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user