--- nono/lib/object.cpp 2026/04/29 17:05:08 1.1.1.8 +++ nono/lib/object.cpp 2026/04/29 17:05:26 1.1.1.10 @@ -7,31 +7,39 @@ // // 基本オブジェクト // - // オブジェクトはログ出力機能 (とそのための自身のオブジェクト名) を持つ。 +#include "nono.h" #include "object.h" #include "logger.h" #include "mainapp.h" // コンストラクタ -Object::Object(const std::string& objname_) +Object::Object(uint objid_) { - // オブジェクト名(ログ表示名)を設定。 - objname = objname_; + objid = objid_; + assertmsg(objid < idname.size(), + "objid=%u, size=%zu", objid, idname.size()); + + // オブジェクト名(ログ表示名)は ID から引く。 + objname = idname[objid]; // コンストラクタで指定した場合はエイリアスにも登録しておく。 - AddAlias(objname_); + // ただし OBJ_NONE ならログを出すことも想定していないはずなので + // エイリアスも追加しない。 + if (objid != OBJ_NONE) { + AddAlias(objname); + } // 自分自身をリストに繋ぐ - gMainApp.AddObject(this); + gMainApp.RegistObject(this); } // デストラクタ Object::~Object() { // 自分自身をリストから削除する - gMainApp.DeleteObject(this); + gMainApp.UnregistObject(this); } // ログレベルを設定する。 @@ -73,3 +81,27 @@ Object::WriteLog(const char *buf) const { logger->Write(buf); } + +// このオブジェクトの ID を文字列にして返す +const char * +Object::GetIdStr() const +{ + return GetIdStr(GetId()); +} + +// 指定のオブジェクト ID を文字列にして返す +/*static*/ const char * +Object::GetIdStr(uint target_id) +{ + if (target_id < idname.size()) { + return idname[target_id]; + } + return "unknownID?"; +} + +// 指定のオブジェクト ID を持つオブジェクトを返す。 +/*static*/ Object * +Object::GetObject(uint target_id) +{ + return gMainApp.GetObject(target_id); +}