// Copyright 2013-2021 the openage authors. See copying.md for legal info.

// Warning: this file is a dummy file and was auto-generated by the v0.4.1 converter;
// its purpose is to keep the deprecated gamestate compilable and intact;
// these files keep only the minimum functionality and should not be changed;
// For details, see buildsystem/codegen.cmake and openage/codegen.

#pragma once

#include <cstddef>
#include <cstdint>
#include <string>
#include <vector>
#include "unit_dummy.h"
#include "util_dummy.h"
#include "util/csv.h"



namespace openage {
namespace gamedata {

struct unit_types {
	struct openage::util::csv_subdata<openage::gamedata::action_unit> action;
	struct openage::util::csv_subdata<openage::gamedata::animated_unit> animated;
	struct openage::util::csv_subdata<openage::gamedata::building_unit> building;
	struct openage::util::csv_subdata<openage::gamedata::doppelganger_unit> doppelganger;
	struct openage::util::csv_subdata<openage::gamedata::living_unit> living;
	struct openage::util::csv_subdata<openage::gamedata::missile_unit> missile;
	struct openage::util::csv_subdata<openage::gamedata::moving_unit> moving;
	struct openage::util::csv_subdata<openage::gamedata::unit_object> object;
	struct openage::util::csv_subdata<openage::gamedata::tree_unit> tree;
	struct openage::util::csv_subdata<multisubtype_ref> subdata_meta;

	int fill(const std::string &line);
	bool recurse(const openage::util::CSVCollection &storage, const std::string &basedir);

};

/**
 * describes a civilisation.
 */
struct civilisation {
	int8_t player_type;
	std::string name;
	int16_t tech_tree_id;
	int16_t team_bonus_id;
	int8_t icon_set;
	unit_types units;
	static constexpr size_t member_count = 7;
	int fill(const std::string &line);
	bool recurse(const openage::util::CSVCollection &storage, const std::string &basedir);

};

} // gamedata
} // openage
