mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 13:06:59 -04:00
436c437189
add compiler directives
90 lines
4.3 KiB
C++
90 lines
4.3 KiB
C++
//+----------------------------------------------------------------------------+
|
|
//| Description: Magic Set Editor - Program to make card games |
|
|
//| Copyright: (C) Twan van Laarhoven and the other MSE developers |
|
|
//| License: GNU General Public License 2 or later (see file COPYING) |
|
|
//+----------------------------------------------------------------------------+
|
|
|
|
#pragma once
|
|
|
|
// ----------------------------------------------------------------------------- : Includes
|
|
|
|
#include <util/prec.hpp>
|
|
#include <util/io/package.hpp>
|
|
#include <script/scriptable.hpp>
|
|
#include <script/dependency.hpp>
|
|
#include <util/dynamic_arg.hpp>
|
|
|
|
DECLARE_POINTER_TYPE(Field);
|
|
DECLARE_POINTER_TYPE(Style);
|
|
DECLARE_POINTER_TYPE(Game);
|
|
DECLARE_POINTER_TYPE(StatsDimension);
|
|
DECLARE_POINTER_TYPE(StatsCategory);
|
|
DECLARE_POINTER_TYPE(CardLink);
|
|
DECLARE_POINTER_TYPE(PackType);
|
|
DECLARE_POINTER_TYPE(KeywordParam);
|
|
DECLARE_POINTER_TYPE(KeywordMode);
|
|
DECLARE_POINTER_TYPE(Keyword);
|
|
DECLARE_POINTER_TYPE(WordList);
|
|
DECLARE_POINTER_TYPE(AddCardsScript);
|
|
DECLARE_POINTER_TYPE(AutoReplace);
|
|
|
|
// ----------------------------------------------------------------------------- : Game
|
|
|
|
/// Game that is used for cards constructed with the default constructor, as well as for reading stylesheets
|
|
DECLARE_DYNAMIC_ARG(Game*, game_for_reading);
|
|
|
|
/// A description of a card game
|
|
class Game : public Packaged {
|
|
public:
|
|
Game();
|
|
|
|
OptionalScript init_script; ///< Script of variables available to other scripts in this game
|
|
vector<FieldP> set_fields; ///< Fields for set information
|
|
IndexMap<FieldP,StyleP> default_set_style; ///< Default style for the set fields, because it is often the same
|
|
vector<FieldP> card_fields; ///< Fields on each card
|
|
vector<CardLinkP> card_links; ///< Possible links between cards
|
|
OptionalScript card_list_color_script; ///< Script that determines the color of items in the card list
|
|
OptionalScript import_script; ///< Script applied as the last step of the new_card function
|
|
vector<String> json_paths; ///< Paths inside JSON files to find the card array
|
|
vector<StatsDimensionP> statistics_dimensions; ///< (Additional) statistics dimensions
|
|
vector<StatsCategoryP> statistics_categories; ///< (Additional) statistics categories
|
|
vector<PackTypeP> pack_types; ///< Types of random card packs to generate
|
|
vector<WordListP> word_lists; ///< Word lists for editing with a drop down list
|
|
vector<AddCardsScriptP> add_cards_scripts; ///< Scripts for adding multiple cards to the set
|
|
vector<AutoReplaceP> auto_replaces; ///< Things to autoreplace in textboxes
|
|
map<String,String> card_fields_alt_names; ///< Other names that fields might go by, for example in CSV files
|
|
map<String,String> card_links_alt_names; ///< Localized names that card links go by
|
|
bool has_keywords; ///< Does this game use keywords?
|
|
OptionalScript keyword_match_script; ///< For the keyword editor
|
|
vector<KeywordParamP> keyword_parameter_types;///< Types of keyword parameters
|
|
vector<KeywordModeP> keyword_modes; ///< Modes of keywords
|
|
vector<KeywordP> keywords; ///< Keywords for use in text
|
|
|
|
Dependencies dependent_scripts_cards; ///< scripts that depend on the card list
|
|
Dependencies dependent_scripts_keywords; ///< scripts that depend on the keywords
|
|
Dependencies dependent_scripts_stylesheet; ///< scripts that depend on the card's stylesheet
|
|
bool dependencies_initialized; ///< are the script dependencies comming from this game all initialized?
|
|
|
|
/// Loads the game with a particular name, for example "magic"
|
|
static GameP byName(const String& name);
|
|
|
|
/// Initialize card_list_color_script
|
|
void initCardListColorScript();
|
|
|
|
static String typeNameStatic();
|
|
String typeName() const override;
|
|
Version fileVersion() const override;
|
|
|
|
bool isMagic() const;
|
|
|
|
protected:
|
|
void validate(Version) override;
|
|
|
|
DECLARE_REFLECTION_OVERRIDE();
|
|
};
|
|
|
|
inline String type_name(const Game&) {
|
|
return _TYPE_("game");
|
|
}
|
|
|