1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-20 20:23:03 +02:00

Added some minor feature

This commit is contained in:
nordsoft 2022-09-10 04:38:33 +04:00
parent 0a81c82971
commit 9d24be5499
4 changed files with 66 additions and 22 deletions

View File

@ -23,6 +23,8 @@ Initializer::Initializer(CMap * m, CGObjectInstance * o) : map(m)
INIT_OBJ_TYPE(CGTownInstance);
INIT_OBJ_TYPE(CGCreature);
INIT_OBJ_TYPE(CGHeroInstance);
INIT_OBJ_TYPE(CGSignBottle);
INIT_OBJ_TYPE(CGLighthouse);
}
bool stringToBool(const QString & s)
@ -38,6 +40,11 @@ void Initializer::initialize(CArmedInstance * o)
if(!o) return;
}
void Initializer::initialize(CGSignBottle * o)
{
if(!o) return;
}
void Initializer::initialize(CGCreature * o)
{
if(!o) return;
@ -66,6 +73,7 @@ void Initializer::initialize(CGGarrison * o)
if(!o) return;
o->tempOwner = PlayerColor::NEUTRAL;
o->removableUnits = true;
}
void Initializer::initialize(CGShipyard * o)
@ -75,6 +83,13 @@ void Initializer::initialize(CGShipyard * o)
o->tempOwner = PlayerColor::NEUTRAL;
}
void Initializer::initialize(CGLighthouse * o)
{
if(!o) return;
o->tempOwner = PlayerColor::NEUTRAL;
}
void Initializer::initialize(CGHeroInstance * o)
{
if(!o) return;
@ -142,20 +157,8 @@ void Inspector::updateProperties(CArmedInstance * o)
{
if(!o) return;
{
auto * delegate = new InspectorDelegate();
delegate->options << "NEUTRAL";
for(int p = 0; p < map->players.size(); ++p)
if(map->players[p].canAnyonePlay())
delegate->options << QString("PLAYER %1").arg(p);
addProperty("Owner", o->tempOwner, delegate, true);
}
{
auto * delegate = new ArmyDelegate(*o);
addProperty("Army", PropertyEditorPlaceholder(), delegate, false);
}
auto * delegate = new ArmyDelegate(*o);
addProperty("Army", PropertyEditorPlaceholder(), delegate, false);
}
void Inspector::updateProperties(CGDwelling * o)
@ -165,11 +168,19 @@ void Inspector::updateProperties(CGDwelling * o)
addProperty("Owner", o->tempOwner, false);
}
void Inspector::updateProperties(CGLighthouse * o)
{
if(!o) return;
addProperty("Owner", o->tempOwner, false);
}
void Inspector::updateProperties(CGGarrison * o)
{
if(!o) return;
addProperty("Owner", o->tempOwner, false);
addProperty("Removable units", o->removableUnits, InspectorDelegate::boolDelegate(), false);
}
void Inspector::updateProperties(CGShipyard * o)
@ -236,6 +247,13 @@ void Inspector::updateProperties(CGResource * o)
addProperty("Message", o->message, false);
}
void Inspector::updateProperties(CGSignBottle * o)
{
if(!o) return;
addProperty("Message", o->message, false);
}
void Inspector::updateProperties(CGCreature * o)
{
if(!o) return;
@ -270,6 +288,13 @@ void Inspector::updateProperties()
auto factory = VLC->objtypeh->getHandlerFor(obj->ID, obj->subID);
addProperty("IsStatic", factory->isStaticObject());
auto * delegate = new InspectorDelegate();
delegate->options << "NEUTRAL";
for(int p = 0; p < map->players.size(); ++p)
if(map->players[p].canAnyonePlay())
delegate->options << QString("PLAYER %1").arg(p);
addProperty("Owner", obj->tempOwner, delegate, true);
UPDATE_OBJ_PROPERTIES(CArmedInstance);
UPDATE_OBJ_PROPERTIES(CGResource);
UPDATE_OBJ_PROPERTIES(CGArtifact);
@ -280,6 +305,8 @@ void Inspector::updateProperties()
UPDATE_OBJ_PROPERTIES(CGTownInstance);
UPDATE_OBJ_PROPERTIES(CGCreature);
UPDATE_OBJ_PROPERTIES(CGHeroInstance);
UPDATE_OBJ_PROPERTIES(CGSignBottle);
UPDATE_OBJ_PROPERTIES(CGLighthouse);
table->show();
}
@ -310,6 +337,8 @@ void Inspector::setProperty(const QString & key, const QVariant & value)
SET_PROPERTIES(CGCreature);
SET_PROPERTIES(CGHeroInstance);
SET_PROPERTIES(CGShipyard);
SET_PROPERTIES(CGSignBottle);
SET_PROPERTIES(CGLighthouse);
}
void Inspector::setProperty(CArmedInstance * object, const QString & key, const QVariant & value)
@ -317,6 +346,11 @@ void Inspector::setProperty(CArmedInstance * object, const QString & key, const
if(!object) return;
}
void Inspector::setProperty(CGLighthouse * object, const QString & key, const QVariant & value)
{
if(!object) return;
}
void Inspector::setProperty(CGTownInstance * object, const QString & key, const QVariant & value)
{
if(!object) return;
@ -325,6 +359,14 @@ void Inspector::setProperty(CGTownInstance * object, const QString & key, const
object->name = value.toString().toStdString();
}
void Inspector::setProperty(CGSignBottle * object, const QString & key, const QVariant & value)
{
if(!object) return;
if(key == "Message")
object->message = value.toString().toStdString();
}
void Inspector::setProperty(CGMine * object, const QString & key, const QVariant & value)
{
if(!object) return;
@ -361,6 +403,9 @@ void Inspector::setProperty(CGDwelling * object, const QString & key, const QVar
void Inspector::setProperty(CGGarrison * object, const QString & key, const QVariant & value)
{
if(!object) return;
if(key == "Removable units")
object->removableUnits = stringToBool(value.toString());
}
void Inspector::setProperty(CGHeroInstance * object, const QString & key, const QVariant & value)

View File

@ -33,6 +33,8 @@ public:
DECLARE_OBJ_TYPE(CGGarrison);
DECLARE_OBJ_TYPE(CGHeroInstance);
DECLARE_OBJ_TYPE(CGCreature);
DECLARE_OBJ_TYPE(CGSignBottle);
DECLARE_OBJ_TYPE(CGLighthouse);
Initializer(CMap *, CGObjectInstance *);
@ -57,6 +59,8 @@ protected:
DECLARE_OBJ_PROPERTY_METHODS(CGGarrison);
DECLARE_OBJ_PROPERTY_METHODS(CGHeroInstance);
DECLARE_OBJ_PROPERTY_METHODS(CGCreature);
DECLARE_OBJ_PROPERTY_METHODS(CGSignBottle);
DECLARE_OBJ_PROPERTY_METHODS(CGLighthouse);
//===============DECLARE PROPERTY VALUE TYPE==============================
QTableWidgetItem * addProperty(unsigned int value);

View File

@ -464,7 +464,7 @@ void MainWindow::loadObjectsTree()
addGroupIntoCatalog("MISC", true, false, Obj::HILL_FORT);
addGroupIntoCatalog("MISC", true, false, Obj::IDOL_OF_FORTUNE);
addGroupIntoCatalog("MISC", true, false, Obj::LIBRARY_OF_ENLIGHTENMENT);
//addGroupIntoCatalog("MISC", true, false, Obj::LIGHTHOUSE); //TODO: allow to edit owner
addGroupIntoCatalog("MISC", true, false, Obj::LIGHTHOUSE);
addGroupIntoCatalog("MISC", true, false, Obj::SCHOOL_OF_MAGIC);
addGroupIntoCatalog("MISC", true, false, Obj::MAGIC_SPRING);
addGroupIntoCatalog("MISC", true, false, Obj::MAGIC_WELL);

View File

@ -372,13 +372,8 @@ QRgb MapHandler::getTileColor(int x, int y, int z)
// if object at tile is owned - it will be colored as its owner
for(auto & object : getObjects(x, y, z))
{
//heroes will be blitted later
switch (object.obj->ID)
{
case Obj::HERO:
case Obj::PRISON:
continue;
}
if(!object.obj->getBlockedPos().count(int3(x, y, z)))
continue;
PlayerColor player = object.obj->getOwner();
if(player == PlayerColor::NEUTRAL)