mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-17 01:32:21 +02:00
Full rework of pre-game interface and networking
New features for players: * Loading for multiplayer. Any save could be used for multiplayer. * Restart for multiplayer. All clients will restart together. * Loading from single save. * Hotseat mixed with network game. Multiple players per client. * Now connection to server could be cancelled. * Return to menu on disconnections instead of crashes. * Restoring of last selected map, save or campaign on next run. TLDR on important changes in engine code: * UI: work with server separated from UI * UI: all explitic blitting replaced with IntObject's * UI: all new code use smart pointers instead of DISPOSE * Gameplay always start through lobby controlled by server. * Threads receiving netpacks now shared for lobby and gameplay. * Campaigns: heroes for crossover now serialized as JsonNode.
This commit is contained in:
@ -60,6 +60,9 @@ namespace boost
|
||||
class shared_mutex;
|
||||
}
|
||||
|
||||
template<typename T> class CApplier;
|
||||
class CBaseForGSApply;
|
||||
|
||||
struct DLL_LINKAGE SThievesGuildInfo
|
||||
{
|
||||
std::vector<PlayerColor> playerColors; //colors of players that are in-game
|
||||
@ -153,6 +156,7 @@ public:
|
||||
virtual ~CGameState();
|
||||
|
||||
void init(const IMapService * mapService, StartInfo * si, bool allowSavingRandomMap = false);
|
||||
void updateOnLoad(StartInfo * si);
|
||||
|
||||
ConstTransitivePtr<StartInfo> scenarioOps, initialOpts; //second one is a copy of settings received from pregame (not randomized)
|
||||
PlayerColor currentPlayer; //ID of player currently having turn
|
||||
@ -246,7 +250,7 @@ private:
|
||||
// ----- initialization -----
|
||||
|
||||
void initNewGame(const IMapService * mapService, bool allowSavingRandomMap);
|
||||
void initCampaign(const IMapService * mapService);
|
||||
void initCampaign();
|
||||
void checkMapChecksum();
|
||||
void initGrailPosition();
|
||||
void initRandomFactionsForPlayers();
|
||||
@ -291,6 +295,7 @@ private:
|
||||
int pickNextHeroType(PlayerColor owner); // picks next free hero type of the H3 hero init sequence -> chosen starting hero, then unused hero type randomly
|
||||
|
||||
// ---- data -----
|
||||
std::shared_ptr<CApplier<CBaseForGSApply>> applier;
|
||||
CRandomGenerator rand;
|
||||
|
||||
friend class CCallback;
|
||||
|
Reference in New Issue
Block a user