BeaRLibItems - удобный менеджмент предметов в рогалике
Добавлено: 06 окт 2011, 12:46
Скрытый текст: ПОКАЗАТЬ
Форум Клуба любителей roguelike-игр
http://rlgclub.ru/forum/
ООП никак не будет "виден" из DLL ибо функции соединяющие DLL с игрой должны быть обычными без классов, максимум допустимы структуры.warchief писал(а): Но думаю это будет написано на c++ с очень высоким уровнем ООП
Шаблоны, map, наследование - все это можно использовать внутри библиотеки, но ни на C#, ни на паскаль, ни даже на С++(скажем библиотека откомпилирована в VS, а основной проект на gcc) не перенести. Внешний интерфейс должен состоять только из С-шных функций.warchief писал(а):хех, я тут сначала подумал про шаблоны (но думаю и их не получится перенести на другой язык), потом про класс родитель который пользователь наследует, дописывает своими возможносятми... Но не знаю как переносится полиморфизм на тот же паскальСейчас подумал хранить предмет в виде std::map (ключ, значение). Будут ли проблемы с std::map в других языках? Потому что пока я вижу единственный вариант не ограничивать пользователя - сделать скриптовый инвентарь
Ясно, учту.kipar писал(а):Шаблоны, map, наследование - все это можно использовать внутри библиотеки, но ни на C#, ни на паскаль, ни даже на С++(скажем библиотека откомпилирована в VS, а основной проект на gcc) не перенести. Внешний интерфейс должен состоять только из С-шных функций.
Комментируем#pragma once
#include <map>
#include <string>
#include <vector>
#ifdef __UNICODESTRING
const wchar_t* divider = L"; ";
typedef std::wstring String;
#else
const char* divider = "; ";
typedef std::string String;
#endif
class BL_Item
{
public:
BL_Item(void);
~BL_Item(void);
void Clear();
void AddParam(std::string &name, String ¶m); // добавить параметр
void DelParam(std::string &name); // удалить
// установка значения параметра, старое стирается
void SetParam(std::string &name, String &newparam);
void SetParam(std::string &name, int newparam);
void SetParam(std::string &name, float newparam);
// получения значения параметра
String GetParam(std::string &name);
// вставка в значение параметра
void PasteInParam(std::string &name, String &pastetext);
// поиск вхождения строки в значении параметра
bool FindInParam(std::string &name, String &findparam);
// удаление слова из параметра.
void DelInParam(std::string &name, String &findparam);
private:
typedef std::map<std::string,String> ItemMap;
typedef std::map<std::string,String>::iterator ItemMapIterator;
ItemMap _param;
};
Я и не собираюсь включать.alexbard писал(а):включать их все в одну библиотеку
Код: Выделить всё
Item it;
it.AddParam("name","меч дураков");
it.AddParam("text","это величайший меч дураков. Он отравляет, поджигает и просто рубит");
it.AddParam("damage","100");
it.AddParam("fire", "10");
it.AddParam("key", "колючий; режущий; великолепный; уникальный");
...