diff --git a/sources/FastSerializer.cpp b/sources/FastSerializer.cpp index 28610680..5cdfd0da 100644 --- a/sources/FastSerializer.cpp +++ b/sources/FastSerializer.cpp @@ -19,10 +19,10 @@ static_assert( sizeof(bool) == 1, "Unsupported platform, sizeof(bool) should be 1!"); -FastSerializer::FastSerializer() +FastSerializer::FastSerializer(int size) : index_(0) { - data_.resize(DEFAULT_SIZE); + data_.resize(size); } FastSerializer::~FastSerializer() diff --git a/sources/FastSerializer.h b/sources/FastSerializer.h index 8ce8e899..be7ec8b2 100644 --- a/sources/FastSerializer.h +++ b/sources/FastSerializer.h @@ -15,7 +15,7 @@ class FastSerializer const T& value); public: static const int DEFAULT_SIZE = 32 * 1024 * 1024; - FastSerializer(); + FastSerializer(int size = DEFAULT_SIZE); ~FastSerializer(); void ResetIndex() diff --git a/sources/MapEditor.cpp b/sources/MapEditor.cpp index 4471d70f..b3163a62 100644 --- a/sources/MapEditor.cpp +++ b/sources/MapEditor.cpp @@ -288,13 +288,21 @@ void MapEditor::LoadMapgen(const QString& name) void MapEditor::fix_borders(int *posx, int *posy) { if (*posx < 0) + { *posx = 0; + } if (*posx >= static_cast(editor_map_.size())) + { *posx = static_cast(editor_map_.size()) - 1; + } if (*posy < 0) + { *posy = 0; + } if (*posy >= static_cast(editor_map_[0].size())) + { *posy = static_cast(editor_map_[0].size()) - 1; + } } void MapEditor::SetPointer(int posx, int posy) diff --git a/sources/MapEditor.h b/sources/MapEditor.h index 096e3070..2744cdc5 100644 --- a/sources/MapEditor.h +++ b/sources/MapEditor.h @@ -13,6 +13,8 @@ #include #include +typedef std::map MapgenVariablesType; + class MapEditor: public QObject { Q_OBJECT @@ -23,7 +25,7 @@ class MapEditor: public QObject QString item_type; - std::map variables; + MapgenVariablesType variables; QGraphicsPixmapItem* pixmap_item; }; diff --git a/sources/core/ObjectFactory.cpp b/sources/core/ObjectFactory.cpp index 921391ad..7dd4719d 100644 --- a/sources/core/ObjectFactory.cpp +++ b/sources/core/ObjectFactory.cpp @@ -11,6 +11,8 @@ #include "net/NetworkMessagesTypes.h" #include "AutogenMetadata.h" +#include "MapEditor.h" + ObjectFactory::ObjectFactory(IGame* game) { objects_table_.resize(100); @@ -94,7 +96,7 @@ void ObjectFactory::SaveMapHeader(FastSerializer& savefile) savefile << game_->GetMap().GetDepth(); // Save player table - savefile << players_table_.size(); + savefile << static_cast(players_table_.size()); for (auto it = players_table_.begin(); it != players_table_.end(); ++it) { savefile << it->first; @@ -264,7 +266,7 @@ void ObjectFactory::LoadFromMapGen(const QString& name) } //qDebug() << "Success!"; - std::map variables; + MapgenVariablesType variables; WrapReadMessage(ss, variables); for (auto it = variables.begin(); it != variables.end(); ++it) diff --git a/sources/core/StreamWrapper.h b/sources/core/StreamWrapper.h index a91d868c..0d75b968 100644 --- a/sources/core/StreamWrapper.h +++ b/sources/core/StreamWrapper.h @@ -21,7 +21,7 @@ inline FastSerializer& WrapWriteMessage( FastSerializer& file, std::map& to_write) { - file << to_write.size(); + file << static_cast(to_write.size()); for (auto it = to_write.begin(); it != to_write.end(); ++it) { WrapWriteMessage(file, it->first); diff --git a/sources/core/objects/Projectiles.cpp b/sources/core/objects/Projectiles.cpp index dc7a3170..ef3cbd6d 100644 --- a/sources/core/objects/Projectiles.cpp +++ b/sources/core/objects/Projectiles.cpp @@ -3,7 +3,7 @@ FastSerializer& operator<<(FastSerializer& file, const std::vector& s) { - file << s.size(); + file << static_cast(s.size()); for (auto it : s) { file << it; diff --git a/sources/core/objects/Tile.h b/sources/core/objects/Tile.h index 8245d30d..82ad8d2c 100644 --- a/sources/core/objects/Tile.h +++ b/sources/core/objects/Tile.h @@ -10,7 +10,7 @@ template FastSerializer& operator<<(FastSerializer& file, const std::vector>& content) { - file << content.size(); + file << static_cast(content.size()); for (auto it = content.begin(); it != content.end(); ++it) { file << it->Id(); diff --git a/sources/representation/ViewInfo.cpp b/sources/representation/ViewInfo.cpp index aced477a..410aa8e4 100644 --- a/sources/representation/ViewInfo.cpp +++ b/sources/representation/ViewInfo.cpp @@ -6,13 +6,13 @@ FastSerializer& operator<<(FastSerializer& file, ViewInfo& view_info) { WrapWriteMessage(file, view_info.base_frameset_); - file << view_info.underlays_.size(); + file << static_cast(view_info.underlays_.size()); for (auto it = view_info.underlays_.begin(); it != view_info.underlays_.end(); ++it) { WrapWriteMessage(file, *it); } - file << view_info.overlays_.size(); + file << static_cast(view_info.overlays_.size()); for (auto it = view_info.overlays_.begin(); it != view_info.overlays_.end(); ++it) { WrapWriteMessage(file, *it); diff --git a/sources/representation/qt/mapeditorform.cpp b/sources/representation/qt/mapeditorform.cpp index 2ea6f6b7..a782ee38 100644 --- a/sources/representation/qt/mapeditorform.cpp +++ b/sources/representation/qt/mapeditorform.cpp @@ -347,20 +347,21 @@ void MapEditorForm::on_listWidgetVariables_itemSelectionChanged() return; } - QString& variable_value = ee->variables[ui->listWidgetVariables->currentItem()->text()]; + QByteArray& variable_value = ee->variables[ui->listWidgetVariables->currentItem()->text()]; - ui->lineEditRaw->setText(variable_value); + ui->lineEditRaw->setText(variable_value.toHex()); - std::stringstream ss; - ss << variable_value.toStdString(); + // TODO: As string + + // FastDeserializer deserializer(variable_value.data(), variable_value.size()); - QString parsed_value; - if (WrapReadMessage(ss, parsed_value).fail()) + /*QString parsed_value; + if (WrapReadMessage(deserializer, parsed_value)) { parsed_value = "PARSING_ERROR"; } - ui->lineEditAsString->setText(parsed_value); + ui->lineEditAsString->setText(parsed_value);*/ } void MapEditorForm::on_lineEditRaw_returnPressed() @@ -378,9 +379,9 @@ void MapEditorForm::on_lineEditRaw_returnPressed() - QString& variable_value = ee->variables[ui->listWidgetVariables->currentItem()->text()]; + QByteArray& variable_value = ee->variables[ui->listWidgetVariables->currentItem()->text()]; - variable_value = ui->lineEditRaw->text(); + variable_value = QByteArray::fromHex(ui->lineEditRaw->text().toUtf8()); on_listWidgetVariables_itemSelectionChanged(); UpdateVariablesColor(*ee); @@ -401,7 +402,8 @@ void MapEditorForm::on_lineEditAsString_returnPressed() return; } - QString& variable_value = ee->variables[ui->listWidgetVariables->currentItem()->text()]; + // TODO: reimplement this + /*QString& variable_value = ee->variables[ui->listWidgetVariables->currentItem()->text()]; std::stringstream ss; QString loc = ui->lineEditAsString->text(); @@ -410,7 +412,7 @@ void MapEditorForm::on_lineEditAsString_returnPressed() variable_value = QString::fromStdString(ss.str()); on_listWidgetVariables_itemSelectionChanged(); - UpdateVariablesColor(*ee); + UpdateVariablesColor(*ee);*/ } void MapEditorForm::on_listWidgetTurf_clicked(const QModelIndex&index) diff --git a/sources/representation/qt/mapeditorform.h b/sources/representation/qt/mapeditorform.h index 1efa1aa5..0fb28c12 100644 --- a/sources/representation/qt/mapeditorform.h +++ b/sources/representation/qt/mapeditorform.h @@ -8,6 +8,7 @@ #include #include "MapEditor.h" +#include "FastSerializer.h" namespace Ui { class MapEditorForm; @@ -82,6 +83,8 @@ private slots: std::vector types_; std::vector turf_types_; + FastSerializer serializer_; + Ui::MapEditorForm *ui; };