\81¡\82»\82Ì\91¼
\83T\83E\83\93\83h\95Ò\8fW\83c\81[\83\8b\82Ì\8dì\90¬
\83e\83L\83X\83g\82Ì\8dX\90V(\83\81\83j\83\85\81[\81j
- multi_index(Object_Data)
thread\82Ì\89ñ\8eû
CWaveFile\81Ahirukoya\82ð\8aO\95\94\82É\8fo\82·
- \83I\83u\83W\83F\83N\83g\82Ì\95`\89æpriority\90Ý\92è
+ \83I\83u\83W\83F\83N\83g\82Ì\95`\89æpriority\90Ý\92è(TODO vertex_buffer, particle)
\81¡\83}\83b\83v\88Ú\93®
\83}\83b\83v\88Ú\93®\95\9c\8a\88
#pragma once
#include <boost/scoped_ptr.hpp>
#include "mof/VertexTypes.hpp"
+#include "mof/Drawable.hpp"
#include <boost/utility.hpp>
namespace mof{
template <class T>
-class VertexBuffer : boost::noncopyable{
+class VertexBuffer : public Drawable, boost::noncopyable{
struct Impl;
boost::scoped_ptr<Impl> m_pImpl;
int getLength() const;
mof::PRIMITIVE_TYPE getPrimitiveType() const;
- void draw() const;
+ virtual void draw() const;
+ virtual void setVisible(bool visible){/*TODO*/;}
};
* @brief \83\81\83b\83Z\81[\83W\83E\83B\83\93\83h\83E\82ð\90¶\90¬\82·\82é\82½\82ß\82Ì\83R\81[\83\8b\83o\83b\83N
* @return \90¶\90¬\82µ\82½\83\81\83b\83Z\81[\83W\83E\83B\83\93\83h\83E
*/
- virtual int message_create(const mof::tstring& title, const GameData::entry_t& style) = 0;
+ virtual int message_create(const mof::tstring& title, const GameData::entry_t& style, int priority) = 0;
- virtual int menu_create(const mof::tstring& title, const std::vector<mof::tstring>& items, const GameData::entry_t& style) = 0;
+ virtual int menu_create(const mof::tstring& title, const std::vector<mof::tstring>& items, const GameData::entry_t& style, int priority) = 0;
virtual int vertex_buffer_create
(
const mof::VertexXYZRHWCUV& front,
const mof::VertexXYZRHWCUV& back,
- const mof::Texture::ptr& texture
+ const mof::Texture::ptr& texture,
+ int priority
) = 0;
virtual int sound_create(const mof::tstring& filepath) = 0;
virtual void sound_play(int id) = 0;
- virtual int picture_create(const mof::tstring& filepath) = 0;
+ virtual int picture_create(const mof::tstring& filepath, int priority) = 0;
virtual int camera_create() = 0;
virtual int particlegen_create() = 0;
- virtual int solid_create(const mof::tstring& class_path) = 0;
+ virtual int solid_create(const mof::tstring& class_path, int priority) = 0;
virtual int light_create(const mof::tstring& class_path) = 0;
virtual void set_light(int id, int light_id) = 0;
- virtual int board_create(const mof::tstring& filepath) = 0;
+ virtual int board_create(const mof::tstring& filepath, int priority) = 0;
/**
* @brief \83\81\83b\83Z\81[\83W\83E\83B\83\93\83h\83E\82É\83y\81[\83W\82ð\92Ç\89Á\82·\82é\82½\82ß\82Ì\83R\81[\83\8b\83o\83b\83N
virtual mof::frame_t put_element(ElementType type, int x, int y) = 0;
virtual void world_sleep() = 0;
- virtual int land_region_create(int x, int y) = 0;
+ virtual int land_region_create(int x, int y, int priority) = 0;
virtual ~CommandSet(){}
#include <mof/AmbientLight.hpp>
#include <mof/DirectionalLight.hpp>
#include <mof/script/ObjectData.hpp>
+#include <mof/script/rendering_packet.hpp>
#include <mof/utilities.hpp>
#include <boost/bind.hpp>
#include <boost/format.hpp>
#include <mof/sound/SoundDevice.hpp>
#include <mof/sound/StaticSoundBuffer.hpp>
#include <mof/sound/StreamSoundBuffer.hpp>
+#include <mof/script/rendering_packet.hpp>
#include <vector>
+#include <set>
#include <memory>
-
+
+namespace
+{
+ using namespace boost::intrusive;
+ using namespace mof::script;
+ typedef member_hook<rendering_packet, rendering_packet::queue_hook_t, &rendering_packet::queue_hook_> rendering_queue_set_hook;
+ typedef member_hook<rendering_packet, rendering_packet::dead_hook_t, &rendering_packet::dead_hook_> rendering_dead_list_hook;
+}
+
namespace mof
{
namespace script
scheduler_.update();
}
- bool waiting_;///< Interpreterにコマンド実行の停止を伝えるための状態変数
- mof::EventScheduler scheduler_; ///< キー入力待機など
+ bool waiting_;///< Interpreter\82É\83R\83}\83\93\83h\8eÀ\8ds\82Ì\92â\8e~\82ð\93`\82¦\82é\82½\82ß\82Ì\8fó\91Ô\95Ï\90\94
+ mof::EventScheduler scheduler_; ///< \83L\81[\93ü\97Í\91Ò\8b@\82È\82Ç
};
+
//{{{ Impl
struct Environment::Impl
{
std::shared_ptr<mof::InputReceiver> input_;
std::vector<std::shared_ptr<mof::script::MessageData>> message_data_list_;
std::vector<std::shared_ptr<mof::script::MenuData>> menu_data_list_;
- std::vector<std::shared_ptr<mof::script::StaticSoundData>> static_sound_data_list_;
- std::vector<std::shared_ptr<mof::script::SoundSourceData>> sound_source_data_list_;
std::vector<mof::script::PictureData::ptr> picture_data_list_;
std::vector<mof::script::BoardData::ptr> board_data_list_;
std::vector<mof::script::ParticlegenData::ptr> particlegen_data_list_;
std::vector<mof::script::SolidData::ptr> solid_data_list_;
- std::vector<mof::script::CameraData::ptr> camera_data_list_;// 現在、要素数は1つだけ
std::vector<mof::script::vertex_buffer_obj::ptr> vertex_buffer_obj_list_;
+
+ // rendering TODO \83N\83\89\83X\89»
+ boost::intrusive::multiset<mof::script::rendering_packet, rendering_queue_set_hook, constant_time_size<false>> rendering_queue_set_;
+ boost::intrusive::list<mof::script::rendering_packet, rendering_dead_list_hook, constant_time_size<false>> rendering_dead_list_;
+ std::vector<mof::script::rendering_packet> rendering_memory_pool_;
+
+ std::vector<std::shared_ptr<mof::script::StaticSoundData>> static_sound_data_list_;
+ std::vector<std::shared_ptr<mof::script::SoundSourceData>> sound_source_data_list_;
+ std::vector<mof::script::CameraData::ptr> camera_data_list_;// \8c»\8dÝ\81A\97v\91f\90\94\82Í1\82Â\82¾\82¯
std::vector<mof::script::light_obj::ptr> light_obj_list_;
std::map<std::string, int> property_map_;
)
: input_(input), texture_manager_(texture_manager), mesh_builder_manager_(mesh_builder_manager)
{
+ rendering_memory_pool_.reserve(1000);
+ }
+
+ template <typename T, typename K>
+ size_t add_obj
+ (
+ std::vector<T>& objs,
+ T& obj,
+ std::shared_ptr<K> T::element_type::*drawable,
+ int priority
+ )
+ {
+ if (!rendering_dead_list_.empty()) {
+ // \8eg\82Á\82Ä\82È\82¢\97v\91f\82ª\82 \82é\82È\82ç\81A\82»\82±\82©\82ç\89ñ\8eû
+ int index = std::distance(&(rendering_memory_pool_.front()), &(rendering_dead_list_.front()));
+ obj->r_packet_ = &rendering_memory_pool_[index];
+ rendering_dead_list_.pop_front();
+ rendering_memory_pool_[index] = rendering_packet((obj.get()->*drawable).get(), priority);
+ rendering_queue_set_.insert(rendering_memory_pool_[index]);
+ }
+ else {
+ // \90V\82½\82Épool\82É\8am\95Û
+ rendering_memory_pool_.push_back(rendering_packet((obj.get()->*drawable).get(), priority));
+ obj->r_packet_ = &(rendering_memory_pool_.back());
+ rendering_queue_set_.insert(rendering_memory_pool_.back());
+ }
+
+ // \8dÄ\97\98\97p\82Å\82«\82é\97v\91f\82ª\82 \82ê\82Î\81A\82»\82ê\82ð\8eg\82¤
+ // TODO \90ü\8c`\92T\8dõ\82µ\82Ä\82µ\82Ü\82¤\82Ì\82ª\8bC\82É\82È\82é\81E\81E\81E
+ std::vector<T>::iterator itr = std::find_if(objs.begin(), objs.end(),
+ [drawable] (const T& obj)->bool {return !obj;});
+ if (itr == objs.end()) {
+ // \90V\8bK\92Ç\89Á
+ objs.push_back(obj);
+ return objs.size() - 1;
+ }
+ else {
+ // \8eg\97p\82µ\82Ä\82¢\82È\82¢\97v\91f\82ª\8c©\82Â\82©\82Á\82½\82Ì\82Å\81A\82»\82ê\82ð\8eg\82¤
+ *itr = obj;
+ return std::distance(objs.begin(), itr);
+ }
+ }
+
+ void dispose_render_node(rendering_packet* r_packet)
+ {
+ r_packet->queue_hook_.unlink();
+ rendering_dead_list_.push_back(*r_packet);
}
};
{
impl_->property_map_["system.menu.move_cursor_sound"] = sound_create(_T("sound/move_cursor.wav"));
- // カメラの初期化
+ // \83J\83\81\83\89\82Ì\8f\89\8aú\89»
auto data = std::make_shared<CameraData>();
data->camera_ =
std::make_shared<Camera>
}
//}}}
//{{{ message_create
- int Environment::message_create(const mof::tstring& title, const GameData::entry_t& style)
+ int Environment::message_create(const mof::tstring& title, const GameData::entry_t& style, int priority)
{
using namespace mof::script;
using namespace boost;
DEBUG_PRINT("message_create(" << title << ")");
+ // ***Data\82Í\8eÀ\91Ì\82Ì\94z\97ñ\82Å\8aÇ\97\9d\82µ\82½\82Ù\82¤\82ª\82æ\82¢
std::shared_ptr<MessageData> data = std::shared_ptr<MessageData>(create_message_data(title, style).release());
- impl_->message_data_list_.push_back(data);// TODO 再利用
- return impl_->message_data_list_.size() -1;
+ data->view_ = data->frame_->getView();
+ return impl_->add_obj(impl_->message_data_list_, data, &MessageData::view_, priority);
}
//}}}
//{{{ massage_next
(
const mof::tstring& title,
const std::vector<mof::tstring>& items,
- const GameData::entry_t& style
+ const GameData::entry_t& style,
+ int priority
)
{
using namespace mof::script;
DEBUG_PRINT("menu_create(" << title << ")");
std::shared_ptr<MenuData> data = std::shared_ptr<MenuData>(create_menu_data(title, items, style).release());
- impl_->menu_data_list_.push_back(data);
- return impl_->menu_data_list_.size() -1;
+ data->view_ = data->frame_->getView();
+ return impl_->add_obj(impl_->menu_data_list_, data, &MenuData::view_, priority);
}
//}}}
//{{{ menu_move_cursor
void Environment::wait_for_key(size_t id, mof::InputReceiver::Key key)
{
DEBUG_PRINT("wait_for_key(" << id << ", " << key << ")");
- if (impl_->threads.end() == impl_->threads.find(id)) impl_->threads.insert(std::make_pair(id, thread_t()));// スレッドがなければつくる
+ if (impl_->threads.end() == impl_->threads.find(id)) impl_->threads.insert(std::make_pair(id, thread_t()));// \83X\83\8c\83b\83h\82ª\82È\82¯\82ê\82Î\82Â\82\82é
bool& waiting = impl_->threads[id].waiting_;
impl_->threads[id].scheduler_.addEvent
(
{
DEBUG_PRINT("wait_frame(" << id << ", " << frame << ")");
if (frame == 0)return;
- if (impl_->threads.end() == impl_->threads.find(id)) impl_->threads.insert(std::make_pair(id, thread_t()));// スレッドがなければつくる
+ if (impl_->threads.end() == impl_->threads.find(id)) impl_->threads.insert(std::make_pair(id, thread_t()));// \83X\83\8c\83b\83h\82ª\82È\82¯\82ê\82Î\82Â\82\82é
bool& waiting = impl_->threads[id].waiting_;
impl_->threads[id].scheduler_.addEvent(frame, [&waiting](){waiting = false;});// set waiting_ false after 'frame'
impl_->threads[id].waiting_ = true;
//{{{ get_last_key
mof::InputReceiver::Key Environment::get_last_key()
{
- //TODO 複数同時をtimestampで識別
+ //TODO \95¡\90\94\93¯\8e\9e\82ðtimestamp\82Å\8e¯\95Ê
DEBUG_PRINT("get_last_key()");
for (int key = mof::InputReceiver::BEGIN + 1; key < mof::InputReceiver::ANY; ++key) {
if (impl_->input_->testKeyState(static_cast<mof::InputReceiver::Key>(key))) {
- return static_cast<mof::InputReceiver::Key>(key);// 最初に見つかったものを選ぶ
+ return static_cast<mof::InputReceiver::Key>(key);// \8dÅ\8f\89\82É\8c©\82Â\82©\82Á\82½\82à\82Ì\82ð\91I\82Ô
}
}
- return mof::InputReceiver::END;// 何も入力されていないとき
+ return mof::InputReceiver::END;// \89½\82à\93ü\97Í\82³\82ê\82Ä\82¢\82È\82¢\82Æ\82«
}
//}}}
//{{{ sound_create
}
//}}}
//{{{ picture_create
- int Environment::picture_create(const mof::tstring& class_path)
+ int Environment::picture_create(const mof::tstring& class_path, int priority)
{
using namespace mof::script;
using namespace boost;
split(splited_list, class_path, is_any_of("."));
auto data = std::make_shared<PictureData>();
if (splited_list.front() == "file") {
- // ファイルから読み込む
+ // \83t\83@\83C\83\8b\82©\82ç\93Ç\82Ý\8d\9e\82Þ
splited_list.pop_front();
mof::tstring filepath = join(splited_list, ".");
data->sprite_ =
}
data->sprite_->getRectangleCoordinatesStream() <<
data->texcoord_ref_.makeRef(Rectangle<float>(0, 0, 1, 1));
-
-
- impl_->picture_data_list_.push_back(data);// TODO 再利用
- return impl_->picture_data_list_.size() -1;
+ return impl_->add_obj(impl_->picture_data_list_, data, &PictureData::sprite_, priority);
}
//}}}
auto data = std::make_shared<ParticlegenData>();
data->particlegen_ = std::make_shared<mof::particlegen>();
data->particlegen_->world_transform() << data->position_ref_.makeRef(Matrix3D::createIdentity());
- impl_->particlegen_data_list_.push_back(data);// TODO 再利用
+ impl_->particlegen_data_list_.push_back(data);// TODO \8dÄ\97\98\97p
return impl_->particlegen_data_list_.size() -1;
}
//}}}
//{{{ solid_create
- int Environment::solid_create(const mof::tstring& class_path)
+ int Environment::solid_create(const mof::tstring& class_path, int priority)
{
using namespace mof::script;
using namespace boost;
auto data = std::make_shared<SolidData>();
if (splited_list.front() == "file") {
- // ファイルから読み込む
+ // \83t\83@\83C\83\8b\82©\82ç\93Ç\82Ý\8d\9e\82Þ
splited_list.pop_front();
mof::tstring filepath = join(splited_list, ".");
auto builder = impl_->mesh_builder_manager_->getResource(filepath);
data->solid_->world_transform()
<< data->size_ref_.makeRef(Matrix3D::createIdentity())
<< data->position_ref_.makeRef(Matrix3D::createIdentity());
- impl_->solid_data_list_.push_back(data);
- return impl_->solid_data_list_.size() -1;
+ return impl_->add_obj(impl_->solid_data_list_, data, &SolidData::solid_, priority);
}
//}}}
//{{{ board_create
- int Environment::board_create(const mof::tstring& class_path)
+ int Environment::board_create(const mof::tstring& class_path, int priority)
{
using namespace mof::script;
using namespace boost;
split(splited_list, class_path, is_any_of("."));
auto data = std::make_shared<BoardData>();
if (splited_list.front() == "file") {
- // ファイルから読み込む
+ // \83t\83@\83C\83\8b\82©\82ç\93Ç\82Ý\8d\9e\82Þ
splited_list.pop_front();
mof::tstring filepath = join(splited_list, ".");
data->board_ = std::make_shared<Board>();
data->board_->setTexture(impl_->texture_manager_->getResource(filepath));
}
- impl_->board_data_list_.push_back(data);// TODO 再利用
- return impl_->board_data_list_.size() -1;
-
+ return impl_->add_obj(impl_->board_data_list_, data, &BoardData::board_, priority);
}
//}}}
//{{{ camera_create
(
const mof::VertexXYZRHWCUV& front,
const mof::VertexXYZRHWCUV& back,
- const mof::Texture::ptr& texture
+ const mof::Texture::ptr& texture,
+ int priority
)
{
using namespace mof::script;
std::shared_ptr<vertex_buffer_obj> obj = std::make_shared<vertex_buffer_obj>();
obj->buffer_ = std::make_shared<mof::VertexBuffer<mof::VertexXYZRHWCUV>>(front, back, mof::PRIMITIVE_TYPE_TRIANGLELIST);
obj->texture_ = texture;
- impl_->vertex_buffer_obj_list_.push_back(obj);
- return impl_->vertex_buffer_obj_list_.size() -1;
+ return impl_->add_obj(impl_->vertex_buffer_obj_list_, obj, &vertex_buffer_obj::buffer_, priority);
}
//}}}
// methods for common objects
using namespace mof::script;
using namespace boost;
+ DEBUG_PRINT("----- obj\8eg\97p\8fó\8bµ ------");
+ DEBUG_PRINT("message = " << impl_->message_data_list_.size() );
+ DEBUG_PRINT("menu = " << impl_->menu_data_list_.size() );
+ DEBUG_PRINT("picture = " << impl_->picture_data_list_.size() );
+ DEBUG_PRINT("solid = " << impl_->solid_data_list_.size() );
+ DEBUG_PRINT("board = " << impl_->board_data_list_.size() );
+ DEBUG_PRINT("------------------------");
+ DEBUG_PRINT("rendring = " << impl_->rendering_memory_pool_.size() );
+
if (class_path == "menu") {
DEBUG_PRINT("menu_dispose(" << id << ")");
+ impl_->dispose_render_node(impl_->menu_data_list_.at(id)->r_packet_);
impl_->menu_data_list_.at(id).reset();
} else if (class_path == "message") {
DEBUG_PRINT("message_dispose(" << id << ")");
+ impl_->dispose_render_node(impl_->message_data_list_.at(id)->r_packet_);
impl_->message_data_list_.at(id).reset();
} else if (class_path == "picture") {
DEBUG_PRINT("picture_dispose(" << id << ")");
+ impl_->dispose_render_node(impl_->picture_data_list_.at(id)->r_packet_);
impl_->picture_data_list_.at(id).reset();
+ } else if (class_path == "picture") {
} else if (class_path == "particlegen") {
DEBUG_PRINT("particlegen_dispose(" << id << ")");
impl_->particlegen_data_list_.at(id).reset();
} else if (class_path == "solid") {
DEBUG_PRINT("solid_dispose(" << id << ")");
+ impl_->dispose_render_node(impl_->solid_data_list_.at(id)->r_packet_);
impl_->solid_data_list_.at(id).reset();
} else if (class_path == "board") {
DEBUG_PRINT("board_dispose(" << id << ")");
+ impl_->dispose_render_node(impl_->board_data_list_.at(id)->r_packet_);
impl_->board_data_list_.at(id).reset();
} else if (class_path == "sound") {
DEBUG_PRINT("sound_dispose(" << id << ")");
impl_->sound_source_data_list_.at(id).reset();
} else if (class_path == "vertex_buffer") {
DEBUG_PRINT("vertex_buffer_dispose(" << id << ")");
+ impl_->dispose_render_node(impl_->vertex_buffer_obj_list_.at(id)->r_packet_);
impl_->vertex_buffer_obj_list_.at(id).reset();
} else if (class_path == "light") {
DEBUG_PRINT("light_dispose(" << id << ")");
mof::tstring target = splited_list[1];
if (type == "directional") {
auto light = reinterpret_cast<mof::DirectionalLight*>(p->light_.get());
- // TODO tweenを設定できるように
+ // TODO tween\82ð\90Ý\92è\82Å\82«\82é\82æ\82¤\82É
if (target == "ambient") light->setAmbientColor(seq->value(0).toColorCode());
else if (target == "diffuse") light->setDiffuseColor(seq->value(0).toColorCode());
else throw std::logic_error("unknown target:" + target);
DEBUG_PRINT(p->type_.size());
if (type == "directional") {
auto light = reinterpret_cast<mof::DirectionalLight*>(p->light_.get());
- // TODO tweenを設定できるように
+ // TODO tween\82ð\90Ý\92è\82Å\82«\82é\82æ\82¤\82É
light->setDirection(seq);
return;
}
DEBUG_PRINT("set_light(" << id << "," << light_id << ")");
auto p = impl_->solid_data_list_.at(id);
- p->light_ = impl_->light_obj_list_.at(light_id)->light_;
+ p->r_packet_->queue_hook_.unlink();// \88ê\92[\8aO\82µ\82Ä
+ p->r_packet_->light() = impl_->light_obj_list_.at(light_id)->light_;// \8f\91\82«\8a·\82¦\82Ä
+ impl_->rendering_queue_set_.insert(*p->r_packet_);// \82Ü\82½\92Ç\89Á
}
//}}}
foreach (auto& data, impl_->static_sound_data_list_) {
if (data) {
if (!data->sound_->is_playing()) {
- data.reset();// 停止したサウンドは回収する
+ data.reset();// \92â\8e~\82µ\82½\83T\83E\83\93\83h\82Í\89ñ\8eû\82·\82é
continue;
}
data->sound_->update();
impl_->camera_data_list_.front()->camera_->getViewMatrix()
);
+ /*
foreach (auto data, impl_->solid_data_list_) {
if (data) {
- // ライトが設定されていれば、それを使う
+ // \83\89\83C\83g\82ª\90Ý\92è\82³\82ê\82Ä\82¢\82ê\82Î\81A\82»\82ê\82ð\8eg\82¤
if (data->light_) {
mof::GraphicsDevice::lightEnable(true);
data->light_->setEnable(true);
}
}
+ */
+ foreach (auto r_packet, impl_->rendering_queue_set_) {
+ r_packet.draw();
+ }
+ /*
mof::GraphicsDevice::setWorldTransform(mof::Matrix3D());
foreach (auto& obj, impl_->vertex_buffer_obj_list_) {
if (obj) {
}
}
+ */
+ /*
foreach (auto data, impl_->board_data_list_) {
if (data.get()) data->board_->draw();
}
+ */
mof::GraphicsDevice::setAlphaBlendingMode(mof::GraphicsDevice::BLENDING_MODE_ADD);
mof::GraphicsDevice::setZBuffer(false);
+ /*
foreach (auto& data, impl_->particlegen_data_list_) {
if (data) {
auto& list = data->particlegen_->drawables();
}
}
+ */
mof::GraphicsDevice::setZBuffer(true);
mof::GraphicsDevice::setAlphaBlendingMode(mof::GraphicsDevice::BLENDING_MODE_ALPHA);
+ /*
foreach (auto data, impl_->picture_data_list_) {
if (data.get()) data->sprite_->draw();
}
+ */
+ /*
foreach (auto data, impl_->message_data_list_) {
if (data.get()) data->frame_->getView()->draw();
}
foreach (auto data, impl_->menu_data_list_) {
if (data.get()) data->frame_->getView()->draw();
- }//TODO ソート
+ }//TODO \83\\81[\83g
+ */
}
virtual ~Environment();
- virtual int message_create(const mof::tstring& title, const GameData::entry_t& style);
+ virtual int message_create(const mof::tstring& title, const GameData::entry_t& style, int priority);
virtual int message_next(int id, const tstring& text);
virtual void wait_frame(size_t id, size_t frame);
- virtual int menu_create(const mof::tstring& title, const std::vector<mof::tstring>& items, const GameData::entry_t& style);
+ virtual int menu_create(const mof::tstring& title, const std::vector<mof::tstring>& items, const GameData::entry_t& style, int priority);
virtual int vertex_buffer_create
(
const mof::VertexXYZRHWCUV& front,
const mof::VertexXYZRHWCUV& back,
- const mof::Texture::ptr& texture
+ const mof::Texture::ptr& texture,
+ int priority
);
virtual int menu_move_cursor(int id, MoveDirection direction);
virtual void print_debug(const mof::tstring& message);
- virtual int picture_create(const mof::tstring& filepath);
+ virtual int picture_create(const mof::tstring& filepath, int priority);
virtual int camera_create();
virtual int particlegen_create();
- virtual int solid_create(const mof::tstring& class_path);
+ virtual int solid_create(const mof::tstring& class_path, int priority);
virtual int light_create(const mof::tstring& class_path);
virtual void set_light(int id, int light_id);
- virtual int board_create(const mof::tstring& class_path);
+ virtual int board_create(const mof::tstring& class_path, int priority);
// 共通のメソッド
virtual int show(int id, const mof::tstring& class_path);
class Pager;
class Menu;
class Frame;
+ class WidgetView;
}
class SoundBuffer;
namespace script
{
+ class rendering_packet;
+
//{{{ MessageData
struct MessageData
{
+ std::shared_ptr<mof::widget::WidgetView> view_;// Drawer
std::shared_ptr<mof::widget::Pager> message_;
- std::shared_ptr<mof::widget::Frame> frame_;// Drawer
+ std::shared_ptr<mof::widget::Frame> frame_;
+ rendering_packet* r_packet_;
};
//}}}
//{{{ MenuData
struct MenuData
{
+ std::shared_ptr<mof::widget::WidgetView> view_;// Drawer
std::shared_ptr<mof::widget::Menu> menu_;
- std::shared_ptr<mof::widget::Frame> frame_;// Drawer
-
+ std::shared_ptr<mof::widget::Frame> frame_;
+ rendering_packet* r_packet_;
};
//}}}
//{{{ PictureData
std::shared_ptr<mof::Sprite> sprite_;
ReferenceWrapper<Rectangle<float>> texcoord_ref_;
typedef std::shared_ptr<PictureData> ptr;
+ rendering_packet* r_packet_;
};
//}}}
//{{{ vertex_buffer_obj
std::shared_ptr<mof::VertexBuffer<VertexXYZRHWCUV>> buffer_;
mof::Texture::ptr texture_;
typedef std::shared_ptr<vertex_buffer_obj> ptr;
+ rendering_packet* r_packet_;
};
//}}}
//{{{ BoardData
struct BoardData
{
std::shared_ptr<mof::Board> board_;
+ rendering_packet* r_packet_;
typedef std::shared_ptr<BoardData> ptr;
};
//}}}
//{{{ SolidData
struct SolidData
{
- mof::Graphics3D::ptr solid_;
+ std::shared_ptr<mof::Graphics3D> solid_;
+ rendering_packet* r_packet_;
ReferenceWrapper<Matrix3D> position_ref_;
ReferenceWrapper<Matrix3D> size_ref_;
- std::shared_ptr<mof::Light> light_;
typedef std::shared_ptr<SolidData> ptr;
};
//}}}
}
//}}}
//{{{ binders *
- int message_create(const tstring& title, const tstring& style)
+ int message_create(const tstring& title, const tstring& style, int priority)
{
- return lua_state::instance().command_set()->message_create(title, unpack_style(style));
+ return lua_state::instance().command_set()->message_create(title, unpack_style(style), priority);
}
int message_next(int id, const tstring& text){ return lua_state::instance().command_set()->message_next(id, text); }
void wait_for_key(mof::InputReceiver::Key key)
if(!lua_isstring(l , 1))throw std::runtime_error("invalid call");
if(!lua_istable(l , 2))throw std::runtime_error("invalid call");
if(!lua_isstring(l , 3))throw std::runtime_error("invalid call");
+ if(!lua_isnumber(l , 4))throw std::runtime_error("invalid call");
mof::tstring title = lua_tostring(l , 1);
mof::tstring style = lua_tostring(l , 3);
+ int priority = lua_tonumber(l , 4);
std::vector<mof::tstring> items;
for (int i = 1 ; ; i++) {
lua_pop(l , n);
if (items.empty()) items.push_back("aaa");
- int id = lua_state::instance().command_set()->menu_create(title, items, unpack_style(style));
+ int id = lua_state::instance().command_set()->menu_create(title, items, unpack_style(style), priority);
lua_pushnumber(l, id);
return 1;
}
}
//}}}
- int picture_create(const mof::tstring& filepath){ return lua_state::instance().command_set()->picture_create(filepath); }
+ int picture_create(const mof::tstring& filepath, int priority){ return lua_state::instance().command_set()->picture_create(filepath, priority); }
int camera_create(){ return lua_state::instance().command_set()->camera_create(); }
void glue_print_debug(const mof::tstring& text){ return lua_state::instance().command_set()->print_debug(text); }
int particlegen_create(){ return lua_state::instance().command_set()->particlegen_create(); }
- int solid_create(const mof::tstring& path){ return lua_state::instance().command_set()->solid_create(path); }
+ int solid_create(const mof::tstring& path, int priority){ return lua_state::instance().command_set()->solid_create(path, priority); }
//{{{ object_set_behavior
int object_set_behavior(lua_State* l)
{
void get_property(int id, const tstring& class_path){ lua_state::instance().command_set()->dispose(id, class_path); }
int glue_put_element(mof::script::CommandSet::ElementType type, int x, int y) {return lua_state::instance().command_set()->put_element(type, x, y);}
void glue_world_sleep() {lua_state::instance().command_set()->world_sleep();}
- int glue_board_create(const mof::tstring& filepath){ return lua_state::instance().command_set()->board_create(filepath); }
- int glue_land_region_create(int x, int y){ return lua_state::instance().command_set()->land_region_create(x, y); }
+ int glue_board_create(const mof::tstring& filepath, int priority){ return lua_state::instance().command_set()->board_create(filepath, priority); }
+ int glue_land_region_create(int x, int y, int priority){ return lua_state::instance().command_set()->land_region_create(x, y, priority); }
int glue_light_create(const tstring& class_path){ return lua_state::instance().command_set()->light_create(class_path); }
void glue_set_light(int id, int light_id){ lua_state::instance().command_set()->set_light(id, light_id); }
//{{{ get_properties
--- /dev/null
+#pragma once
+#include <mof/script/ObjectData.hpp>
+#include <boost/intrusive/set.hpp>
+#include <boost/intrusive/list.hpp>
+
+namespace mof
+{
+ class Drawable;
+
+namespace script
+{
+//{{{
+ // renderable
+ class rendering_packet
+ {
+ const mof::Drawable* drawable_;
+ std::shared_ptr<mof::Light> light_;
+ int priority_; // \8f¬\82³\82¢\92ö\90æ\82É\95`\89æ\82³\82ê\82é
+ float z_order_; // \8f¬\82³\82¢\92ö\90æ\82É\95`\89æ\82³\82ê\82é
+
+ public:
+ typedef boost::intrusive::set_member_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>> queue_hook_t;
+ typedef boost::intrusive::list_member_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>> dead_hook_t;
+ queue_hook_t queue_hook_;
+ dead_hook_t dead_hook_;
+
+ rendering_packet
+ (
+ const mof::Drawable* drawable,
+ int priority,
+ float z_order = 0
+ )
+ : drawable_(drawable),
+ priority_(priority), z_order_(z_order)
+ {
+ // \89½\82à\82µ\82È\82¢
+ }
+
+ inline bool operator <(const rendering_packet& packet) const
+ {
+ return priority_ == packet.priority_
+ ? z_order_ < packet.z_order_
+ : priority_ < packet.priority_;
+ }
+
+ inline bool operator >(const rendering_packet& packet) const
+ {
+ return priority_ == packet.priority_
+ ? z_order_ > packet.z_order_
+ : priority_ > packet.priority_;
+ }
+
+ inline void draw() const
+ {
+ if (light_) {
+ // \83\89\83C\83g\82ª\90Ý\92è\82³\82ê\82Ä\82¢\82ê\82Î\81A\82»\82ê\82ð\8eg\82¤
+ mof::GraphicsDevice::lightEnable(true);
+ light_->setEnable(true);
+ }
+ else mof::GraphicsDevice::lightEnable(false);
+
+ drawable_->draw();
+ }
+
+ inline std::shared_ptr<mof::Light>& light()
+ {
+ return light_;
+ }
+
+ // TODO z_oerder_
+
+ };
+//}}}
+}
+}
+++ /dev/null
-"Name","Guard","Fire","Ice","Thunder","Grabity","Durability","Price"
-"\83{\83\8d\82«\82ê",1,0,0,0,0,0,1
-"\83\8c\83U\81[\83\8d\81[\83u",5,5,5,5,5,5,120
-"\83K\83\89\83N\83^\82æ\82ë\82¢",1,0,0,0,0,0,1
-"\83\8c\83U\81[\83A\81[\83}\81[",,,,,,,
-"\83X\83P\83C\83\8b\83\81\83C\83\8b",,,,,,,
-"\83`\83F\83C\83\93\83\81\83C\83\8b",,,,,,,
-"\83v\83\8c\81[\83g\83\81\83C\83\8b",,,,,,,
-"\8e¾\95\97\82Ì\83\8d\81[\83u",,,,,,,
-"\83A\83\8b\83e\83~\83X\83\8d\81[\83u",,,,,,,
-"\83h\83\89\83S\83\93\83\81\83C\83\8b",,,,,,,
-"\8fd\90í\8em\82Ì\82æ\82ë\82¢",,,,,,,
-"\96\82\96@\8bâ\82Ì\8aZ",,,,,,,
-"\89Î\97³\82Ì\8aZ",,,,,,,
-"\8cQ\89_\82Ì\8aZ",,,,,,,
-"\95X\89Í\82Ì\8aZ",,,,,,,
-"\83o\83\93\83f\83B\83b\83g\83A\81[\83}\81[",,,,,,,
+++ /dev/null
-"Name","Type","Effect","Durability","Target"
-"\83K\83\8b\83i\83N\83\8a\83t",0,20,5,20
-"\83{\83{",,,,
-"\83N\83@\83e\83B\81[\83X",,,,
-"\83V\83\93",,,,
-"\83f\83B\83A\83\93\83\80\81[",,,,
-"\83A\83X\83g\83\8d\83e\83C\83\93",,,,
-"\83\94\83@\83h\83D",,,,
-"\83v\83\8d\83g\83\8d\83\93",,,,
+++ /dev/null
-"Object","Motion","Class","Texture","Delay","Loop"
-"fireball","data/motion/explosion.csv","Billboard","image/explosion.dds",20,
+++ /dev/null
-"Object","Motion","Class","Texture","Delay","Loop"
-"icicle","data/motion/icicle.csv","model/ice.x","image/ice.bmp",20,
+++ /dev/null
-"Object","Motion","Class","Texture","Delay","Loop"
-"a","data/motion/shock.csv","Billboard","image/shock.dds",20,
+++ /dev/null
-"Object","Motion","Class","Texture","Delay","Loop"
-"rock","data/motion/throw.csv","model/stone.x",,20,
-"explosion","data/motion/explosion.csv","Billboard","image/explosion.dds",60,
+++ /dev/null
-"Name","Type","Cost","Base","Coefficient","Attribute","Effect","Message"
-"\8eã\8dU\8c\82","\8dU\8c\82",2,0,100,,"data/effect/shock.csv","novalue"
-"\92\86\8dU\8c\82","\8dU\8c\82",3,0,150,,"data/effect/shock.csv","novalue"
-"\8b\8dU\8c\82","\8dU\8c\82",4,0,200,,"data/effect/shock.csv","novalue"
-"\89Î\8eR\92e","\8dU\8c\82",5,20,0,"Fire","data/effect/vol.csv","\89Î\8eR\92e"
-"\96h\8cä",,,,,,,
+++ /dev/null
-"Name","Type","Color","Hp","Offense","Defense","Speed","Fire","Ice","Thunder","Gravity","AI","DirectAttack1","DirectAttack2","SpecialAttack1","SpecialAttack2"
-"\83\8a\81[\83\8b","\83\8a\81[\83\8b\8cn","FFFFFF",20,15,3,3,0,100,100,100,"\83U\83R\83^\83C\83v","\8eã\8dU\8c\82",,,
-"\83E\83b\83f\83B\81[","\83E\83b\83f\83B\81[\8cn","FFFFFF",10,5,3,3,100,100,100,100,"\83U\83R\83^\83C\83v","\8eã\8dU\8c\82",,,
-"\83R\83\93\83t\83\85\81[\83W\83\87\83\93\83X\83\89\83C\83\80","\83R\83\93\83t\83\85\81[\83W\83\87\83\93\83X\83\89\83C\83\80\8cn",,,,,,,,,,,,,,
-"\83}\83E\83X\83B\81[","\83}\83E\83X\83B\81[\8cn",,,,,,,,,,,,,,
-"\83k\83\89\81[\83k","\83k\83\89\81[\83k\8cn",,,,,,,,,,,,,,
-"\83\8d\83b\83L\81[","\83\8d\83b\83L\81[\8cn","FFFFFF",20,18,8,3,30,170,70,100,"\83U\83R\83^\83C\83v",,,"\89Î\8eR\92e",
-"\83N\83\89\83\80\83X\83l\83C\83\8b","\83N\83\89\83\80\83X\83l\83C\83\8b\8cn",,,,,,,,,,,,,,
-"\83v\83\89\83\93\83e\83B\81[","\83E\83b\83f\83B\81[\8cn",,,,,,,,,,,,,,
-"\83k\83\89\83k\83X","\83k\83\89\81[\83k\8cn",,,,,,,,,,,,,,
-"\83G\83\8c\83L\83k\83\89\81[\83k","\83k\83\89\81[\83k\8cn",,,,,,,,,,,,,,
-"\83o\83\8b\81[\83\93","\83R\83\93\83t\83\85\81[\83W\83\87\83\93\83X\83\89\83C\83\80\8cn",,,,,,,,,,,,,,
-"\83A\83L\83\8c\83X","\83\8a\81[\83\8b\8cn",,,,,,,,,,,,,,
-"\82Ù\82Ì\82¨\82Ì\83i\83}\83Y","\83k\83\89\81[\83k\8cn",,,,,,,,,,,,,,
-"\83}\83O\83}\83b\83L\83B\81[","\83\8d\83b\83L\81[\8cn",,,,,,,,,,,,,,
-"\83n\83\93\83O\83\89\81[","\83}\83E\83X\83B\81[\8cn",,,,,,,,,,,,,,
-"\83e\83\8b\83e\83\8b","\83R\83\93\83t\83\85\81[\83W\83\87\83\93\83X\83\89\83C\83\80\8cn",,,,,,,,,,,,,,
-"\83g\83\8c\83\93\83e\83B\81[","\83E\83b\83f\83B\81[\8cn",,,,,,,,,,,,,,
-"\83^\83C\83j\81[\83S\81[\83\8c\83\80","\83\8d\83b\83L\81[\8cn",,,,,,,,,,,,,,
-"\83O\83\89\83g\83\93","\83}\83E\83X\83B\81[\8cn",,,,,,,,,,,,,,
-"\83\8c\83b\83h\83h\83\8c\83C\83N","\83m\83_\83S\83\93\8cn",,,,,,,,,,,,,,
-"\83n\83\89\83y\83R\81[\83\8b","\83}\83E\83X\83B\81[\8cn",,,,,,,,,,,,,,
-"\83n\83\93\83O\83\8a\81[\83h\83b\83O","\83n\83\93\83O\83\8a\81[\83h\83b\83O\8cn","FFFFFF",120,30,10,6,100,100,100,100,"\83A\83^\83b\83J\81[","\8eã\8dU\8c\82",,,
-"\83X\83\8f\83\93\83p\83X","\83X\83\8f\83\93\83p\83X\8cn",,,,,,,,,,,,,,
-"\83\89\83~\83A\83\93\83n\81[\83s\81[","\83\89\83~\83A\83\93\83n\81[\83s\81[\8cn","FFFFFF",33,12,6,10,200,150,120,90,"\83U\83R\83^\83C\83v","\8eã\8dU\8c\82",,,
-"\83_\81[\83N\83h\83\89\83O\81[\83\93","\83_\81[\83N\83h\83\89\83O\81[\83\93\8cn",,,,,,,,,,,,,,
-"\83}\83\93\83h\83\89\83S\83\89","\83}\83\93\83h\83\89\83S\83\89\8cn","FFFFFF",60,30,20,10,180,150,50,100,"\83U\83R\83^\83C\83v","\92\86\8dU\8c\82",,,
-"\83m\83_\83S\83\93","\83m\83_\83S\83\93\8cn",,,,,,,,,,,,,,
-"\83g\83\8a\83P\83\89\83\8c\83b\83N\83X","\83m\83_\83S\83\93\8cn",,,,,,,,,,,,,,
-"\83o\81[\83j\83\93\83O\83c\83\8a\81[","\83o\81[\83j\83\93\83O\83c\83\8a\81[\8cn",,,,,,,,,,,,,,
-"\83O\83\8a\81[\83\93\83s\81[\83|\83b\83h","\83O\83\8a\81[\83\93\83s\81[\83|\83b\83h\8cn",,,,,,,,,,,,,,
-"\83W\83F\83m\83T\83C\83h\83n\81[\83v\81[\83\93","\83O\83\8a\81[\83\93\83s\81[\83|\83b\83h\8cn",,,,,,,,,,,,,,
-"\83K\83\8b\83\80","\83n\83\93\83O\83\8a\81[\83h\83b\83O\8cn",,,,,,,,,,,,,,
+++ /dev/null
-"Name","Image","AidlingMotion","DirectAttack1Motion","DirectAttack2Motion","SpecialAttack1Motion","SpecialAttack2Motion"
-"\83\8a\81[\83\8b\8cn","riel.png","data/motion/common/aidling.csv","data/motion/common/attack.csv",,,
-"\83E\83b\83f\83B\81[\8cn",,,,,,
-"\83R\83\93\83t\83\85\81[\83W\83\87\83\93\83X\83\89\83C\83\80\8cn",,,,,,
-"\83}\83E\83X\83B\81[\8cn",,,,,,
-"\83k\83\89\81[\83k\8cn",,,,,,
-"\83\8d\83b\83L\81[\8cn","rock.png","data/motion/common/aidling.csv","data/motion/common/attack.csv",,"data/motion/common/special.csv",
-"\83N\83\89\83\80\83X\83l\83C\83\8b\8cn",,,,,,
-"\83E\83b\83f\83B\81[\8cn",,,,,,
-"\83m\83_\83S\83\93\8cn",,,,,,
-"\83n\83\93\83O\83\8a\81[\83h\83b\83O\8cn","hd.png","data/motion/common/aidling.csv","data/motion/common/attack.csv",,,
-"\83X\83\8f\83\93\83p\83X\8cn",,,,,,
-"\83\89\83~\83A\83\93\83n\81[\83s\81[\8cn","rh.png","data/motion/rh/aidling.csv","data/motion/rh/attack.csv",,,
-"\83_\81[\83N\83h\83\89\83O\81[\83\93\8cn",,,,,,
-"\83}\83\93\83h\83\89\83S\83\89\8cn","mdg.png","data/motion/common/aidling.csv","data/motion/common/attack.csv",,,
-"\83o\81[\83j\83\93\83O\83c\83\8a\81[\8cn",,,,,,
-"\83O\83\8a\81[\83\93\83s\81[\83|\83b\83h\8cn",,,,,,
+++ /dev/null
-"Name","Monster1","Monster2","Monster3"
-"Test","\83\8a\81[\83\8b","\83\8a\81[\83\8b","\83\8a\81[\83\8b"
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ"
-1,0,0,,"FFE797",,,,,,,,,,
-3,0,-3,,,,,,,,,,,,
-6,0,-5,,,,,,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,,,,,0,0,64,64,,,,,,,
-15,,,,,0,64,64,128,,,,,,,
-29,,,,,0,0,64,64,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,,,,,64,0,128,64,,,,,,,10
-10,,,,,64,64,128,128,,,,,,,
-20,,,,,64,128,128,192,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,,,,,128,0,192,64,,,,,,,10
-10,,,,,128,64,192,128,,,,,,,
-20,,,,,128,128,192,192,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ"
-1,0,0,,"FFFFFF",,,,,,,,,,
-3,0,-3,,,,,,,,,,,,
-6,0,-5,,,,,,,,,,,,
-9,0,-3,,,,,,,,,,,,
-11,0,0,,,,,,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,1,0,1,,0,0,64,64,0.3,0.3,0.3,,,,0
-3,,,,,64,0,128,64,,,,,,,
-6,,,,,128,0,192,64,,,,,,,
-9,,,,,192,0,256,64,,,,,,,
-12,,,,,0,64,64,128,,,,,,,
-15,,,,,64,64,128,128,,,,,,,
-18,,,,,128,64,192,128,,,,,,,
-21,,,,,192,64,256,128,,,,,,,
-24,,,,,0,128,64,192,,,,,,,
-27,,,,,64,128,128,192,,,,,,,
-30,,,,,128,128,192,192,,,,,,,
-33,,,,,192,128,256,192,,,,,,,
-36,,,,,0,192,64,256,,,,,,,
-39,,,,,64,192,128,256,,,,,,,
-42,,,,,128,192,192,256,,,,,,,
-45,,,,,192,192,256,256,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ"
-1,0,0,,"90FF90",,,,,,,,,,
-3,0,-3,,,,,,,,,,,,
-6,0,-5,,,,,,,,,,,,
-9,0,-3,,,,,,,,,,,,
-11,0,0,,,,,,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ"
-0,,,,,0,0,64,64,,,,,,
-15,,,,,0,64,64,128,,,,,,
-29,,,,,0,0,64,64,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,0,-0.2,0,,,,,,0.3,0.3,0.3,,,,10
-10,0,0,0,,,,,,,,,,,,
-30,0,0,0,,,,,,,,,,,,
-40,0,-0.2,0,,,,,,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ"
-0,,,,,0,0,64,64,,,,,,
-10,,,,,0,64,64,128,,,,,,
-20,,,,,0,128,64,192,,,,,,
-29,,,,,0,0,64,64,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,,,,,64,0,128,64,,,,,,,10
-10,,,,,64,64,128,128,,,,,,,
-20,,,,,64,128,128,192,,,,,,,
-30,,,,,0,0,64,64,,,,,,,
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,1,0,0,,0,0,64,64,0.4,0.4,0.4,,,,0
-6,,,,,64,0,128,64,,,,,,,
-10,,,,,128,0,192,64,,,,,,,
-13,,,,,192,0,256,64,,,,,,,
-15,,,,,0,64,64,128,,,,,,,
-17,,,,,64,64,128,128,,,,,,,
-19,,,,,128,64,192,128,,,,,,,
-21,,,,,192,64,256,128,,,,,,,
+++ /dev/null
-"Name","Type","Color"
-"\83\8a\81[\83\8b","\83\8a\81[\83\8b\8cn","FFFFFF"
-"\83E\83b\83f\83B\81[","\83E\83b\83f\83B\81[\8cn","FFFFFF"
-"\83R\83\93\83t\83\85\81[\83W\83\87\83\93\83X\83\89\83C\83\80","\83R\83\93\83t\83\85\81[\83W\83\87\83\93\83X\83\89\83C\83\80\8cn",
-"\83}\83E\83X\83B\81[","\83}\83E\83X\83B\81[\8cn",
-"\83k\83\89\81[\83k","\83k\83\89\81[\83k\8cn",
+++ /dev/null
-"KeyFrame","PositionX","PositionY","PositionZ","Color","Tux","Tuy","Tvx","Tvy","Width","Height","Depth","RotX","RotY","RotZ","Signal"
-0,0.1,0.1,0,,,,,,0.3,0.3,0.3,,,,
-6,0.25,0.3,0,,,,,,,,,,,,
-12,0.4,0.45,0,,,,,,,,,,,,
-18,0.55,0.5,0,,,,,,,,,,,,
-24,0.7,0.45,0,,,,,,,,,,,,
-30,0.85,0.3,0,,,,,,,,,,,,
-36,1,0.1,0,,,,,,0.3,0.3,0.3,,,,
-37,,,,,,,,,0,0,0,,,,
+++ /dev/null
-"Name","Type","Effect","Durability","Price"
-"\83R\83i\83\93\82Ì\8eÀ",0,20,5,20
-"\82\82³\82ê\83|\81[\83V\83\87\83\93",0,1,0,1
-"\82¢\82Ì\82¿\82Ì\89Ê\8eÀ",0,70,1,40
-"\97ì\91ù",0,120,5,150
-"\90X\82Ì\8aï\90Õ",0,500,5,1000
-"\83O\83\8a\81[\83\93\83|\81[\83V\83\87\83\93",1,30,3,100
-"\83u\83\8b\81[\83|\81[\83V\83\87\83\93",1,60,3,250
-"\83z\83\8f\83C\83g\83|\81[\83V\83\87\83\93",1,90,3,1000
-"AP\83|\81[\83V\83\87\83\93",2,10,3,500
-"\83}\83i\83|\81[\83V\83\87\83\93",3,0,3,800
-"\83\8b\81[\83\93\83|\81[\83V\83\87\83\93",4,0,3,3000
-"\83~\83\89\83N\83\8b\83|\81[\83V\83\87\83\93",5,0,3,5000
+++ /dev/null
-"Name","Type","Attack","Guard","Durability","Price","Attribute","\93X\83\8c\83x\83\8b","\91®\90«",
-"\83u\83\8d\81[\83h\83i\83C\83t",0,5,0,5,120,0,"\95\90\8aí\89®Lv1",,
-"\89º\8b\89\95º\8em\82Ì\8c\95",1,10,0,5,120,0,"\95\90\8aí\89®Lv1",,
-"\83c\83\94\83@\83C\83n\83\93\83_\81[",2,20,0,5,120,0,"\95\90\8aí\89®Lv1",,
-"\83V\83\87\81[\83g\83\\81[\83h",0,20,0,5,300,0,"\95\90\8aí\89®Lv1",,
-"\8bÈ\93\81",1,30,0,5,300,0,"\95\90\8aí\89®Lv1",,
-"\8eR\96Â\82è\82Ì\8c\95",2,50,0,5,300,0,"\95\90\8aí\89®Lv1",,
-"\83}\83\93\83S\81[\83V\83\85",0,20,5,5,450,0,"\95\90\8aí\89®Lv2",,
-"\8fã\8b\89\95º\8em\82Ì\8c\95",1,50,0,5,700,0,"\95\90\8aí\89®Lv2",,
-"\83\94\83@\83\8a\83A\83\93\83g\83\\81[\83h",1,60,0,7,1000,0,"\95\90\8aí\89®Lv2",,
-"\83A\83C\83V\83N\83\8b\83G\83b\83W",0,55,0,5,1500,2,,"\97â\8bC","\96\82\96@\8bâ\82Ì\92Z\93\81\81{\97â\8bC"
-"\96\82\96@\8bâ\82Ì\83_\83K\81[",0,65,0,5,1500,0,"\95\90\8aí\89®Lv2",,
-"\83\94\83@\83C\83X\83_\83K\81[",0,75,0,5,2300,0,"\95\90\8aí\89®Lv2",,
-"\83\8d\83C\83\84\83\8b\83K\81[\83h",1,90,0,5,1500,0,"\95\90\8aí\89®Lv3",,
-"\90¹\96ä\82Ì\96\82\8c\95",2,140,0,5,3000,0,"\95\90\8aí\89®Lv3",,
-"\8d\84\8c\95\83A\83\8c\83N\83T\83\93\83h\83\8d\83X",2,,,,,,,"\8fd\97Í",
-"\89ö\90l\93\81",2,,,,,,"\95\90\8aí\89®Lv2",,
-"\90_\96\82\82Ì\95ó\8c\95",1,,,,,,"\95\90\8aí\89®Lv3",,
-"\83T\83\93\83_\81[\83Z\83C\83o\81[",1,,,,,,,"\97\8b",
-"\83\8c\83\94\83@\83\93\83e\83C\83\93",2,,,,,,,"\89\8a",
-"\97³\96ä\82Ì\96\82\8c\95",2,,,,,,,"\89\8a",
-"\8f»\96ä\82Ì\96\82\8c\95",2,,,,,,,"\97â\8bC",
-"\93S\96ä\82Ì\96\82\8c\95",2,,,,,,,"\8fd\97Í",
-"\8e\87\96ä\82Ì\96\82\8c\95",2,,,,,,,"\97\8b",
-"\8eç\8cì\82Ì\92Z\8c\95",0,,,,,,"\95\90\8aí\89®Lv3",,
-"\96»\95{\82Ì\89\8a\8c\95",1,,,,,,,"\89\8a",
-"\94\9a\8dÓ\82Ì\8fd\8c\95",2,,,,,,,"\8fd\97Í",
-"\83K\83X\83g\83u\83\8a\83\93\83K\81[",1,,,,,,,"\97\8b",
-"\90_\98b\82Ì\8cä\8c\95",0,,,,,,,,
-"\83J\83^\83i\83u\83\8c\81[\83h",2,,,,,,,,
-"\83A\81[\83N\83X\83\8c\83C\83\84\81[",,,,,,,,,
-"\83\\81[\83h\83u\83\8c\83C\83J\81[",0,,,,,,,,
-"\83W\83F\83l\83V\83X\83\\81[\83h",1,,,,,,,,
-"\83h\83\89\83S\83\93\83g\83D\81[\83X",0,,,,,,,,
-"\90Ô\94M\82Ì\83i\83C\83t",,,,,,,,,
+++ /dev/null
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
require('script/common')
--{{{ forest_element
-function forest_element(x, y, z)
+function forest_element(x, y, z, priority)
sound('sound/element.wav')
- local b = Board:new('file.image/element.png')
+ local b = Board:new('file.image/element.png', priority)
b:set_tween('position3', {[0] = {x, y + 0.5, z}, [90] = {x, y, z}})
b:set_tween('texcoord', {[0] = {0, 1/8, 1/8, 2/8}})
b:set_tween('color', {[0] = {1, 1, 1, 1}, [90] = {0, 1, 1, 1}})
end
--}}}
--{{{ earth_element
-function earth_element(x, y, z)
+function earth_element(x, y, z, priority)
sound('sound/element.wav')
- local b = Board:new('file.image/element.png')
+ local b = Board:new('file.image/element.png', priority)
b:set_tween('position3', {[0] = {x, y + 0.5, z}, [90] = {x, y, z}})
b:set_tween('texcoord', {[0] = {0, 2/8, 1/8, 3/8}})
b:set_tween('color', {[0] = {1, 1, 1, 1}, [90] = {0, 1, 1, 1}})
end
--}}}
--{{{ water_element
-function water_element(x, y, z)
+function water_element(x, y, z, priority)
sound('sound/element.wav')
- local b = Board:new('file.image/element.png')
+ local b = Board:new('file.image/element.png', priority)
b:set_tween('position3', {[0] = {x, y + 0.5, z}, [90] = {x, y, z}})
b:set_tween('texcoord', {[0] = {0, 3/8, 1/8, 4/8}})
b:set_tween('color', {[0] = {1, 1, 1, 1}, [90] = {0, 1, 1, 1}})
camera:set_tween('eye', {[0] = {0, 0.8*1.5, -1.4*1.5}})
camera:set_tween('lookat', {[0] = {0, 0, 0}})
- local s = Solid:new('file.model/floor.x')
- local human = Solid:new('file.model/human.x')
+ local s = Solid:new('file.model/floor.x', 1)
+ local human = Solid:new('file.model/human.x', 2)
local world_light = Light:new('directional')
world_light:set_tween('position3',
--}}}
--{{{ make_service_explanation
function make_service_explanation(service)
- print_debug(service)
local syuzoku =
{{'ehves', tonumber(service.ehves)}, {'bolony', tonumber(service.bolony)}, {'stra', tonumber(service.stra)}}
function land_menu(x, y)
local answer = 0
- local jem_text = text('', '<layout w="200" h="32" xalign="right" yalign="center">400JEM</layout>', '', FeedTween:new(0.05, 0.9, 0.3, 0.07))
+ local jem_text = text('', '<layout w="200" h="32" xalign="right" yalign="center">400JEM</layout>', 100, '', FeedTween:new(0.05, 0.9, 0.3, 0.07))
local services = load_game_data('gamedata.area_service.' .. x .. '.' .. y)
local area = load_game_data('gamedata.area_profile.' .. x .. '.' .. y)
end
table.insert(items, '\83}\81[\83P\83b\83g')
- local explanation_text = text('', make_service_explanation(services[1]), '', FeedTween:new(0.3, 0.7, 0.65, 0.1))
+ local explanation_text = text('', make_service_explanation(services[1]), 100, '', FeedTween:new(0.3, 0.7, 0.65, 0.1))
while true do
- answer = question(make_caption_text('Land Menu'), items, nil, FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
+ answer = question(make_caption_text('Land Menu'), items, 100, nil, FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
function (index)
-- \83T\81[\83r\83X\82Ì\90à\96¾\82ð\8dX\90V
if index == #services then
end
end
explanation_text:next(make_shop_item_explanation(attached_items[1]))
- return question('\8f\8a\8e\9d\83A\83C\83e\83\80(\8ec\82è0\83X\83\8d\83b\83g)', list, 'view=scroll', item_tween, false,
+ return question('\8f\8a\8e\9d\83A\83C\83e\83\80(\8ec\82è0\83X\83\8d\83b\83g)', list, 100, 'view=scroll', item_tween, false,
function (index)
explanation_text:next(make_shop_item_explanation(attached_items[index + 1]))
end
end
end
explanation_text:next(make_shop_item_explanation(stored_items[1]))
- return question('\91q\8cÉ\83A\83C\83e\83\80', list, 'view=scroll', item_tween, false,
+ return question('\91q\8cÉ\83A\83C\83e\83\80', list, 100, 'view=scroll', item_tween, false,
function (index)
explanation_text:next(make_shop_item_explanation(stored_items[index + 1]))
end
end
explanation_text:next(make_relic_explanation(relics[1]))
- return question('\83\8c\83\8a\83b\83N', list, 'view=scroll', item_tween, false,
+ return question('\83\8c\83\8a\83b\83N', list, 100, 'view=scroll', item_tween, false,
function (index)
explanation_text:next(make_relic_explanation(relics[index + 1]))
end
end
explanation_text:next(make_shop_item_explanation(weapon_items[1]))
local style = 'view=scroll;disable=' .. join(disables, ',')
- return question('\91\95\94õ\82·\82é\95\90\8aí\82ð\91I\91ð', list, style, item_tween, false,
+ return question('\91\95\94õ\82·\82é\95\90\8aí\82ð\91I\91ð', list, 100, style, item_tween, false,
function (index)
explanation_text:next(make_shop_item_explanation(weapon_items[index + 1]))
end)
end
explanation_text:next(make_shop_item_explanation(armer_items[1]))
local style = 'view=scroll;disable=' .. join(disables, ',')
- return question('\91\95\94õ\82·\82é\96h\8bï\82ð\91I\91ð', list, style, item_tween, false,
+ return question('\91\95\94õ\82·\82é\96h\8bï\82ð\91I\91ð', list, 100, style, item_tween, false,
function (index)
explanation_text:next(make_shop_item_explanation(armer_items[index + 1]))
end)
end
local style = 'view=scroll;disable=' .. join(disables, ',')
explanation_text:next(make_shop_item_explanation(items[1]))
- return question('\8f\8a\8e\9d\82·\82é\83A\83C\83e\83\80\82ð\91I\91ð(\8ec\82è0\83X\83\8d\83b\83g)', list, style, item_tween, false,
+ return question('\8f\8a\8e\9d\82·\82é\83A\83C\83e\83\80\82ð\91I\91ð(\8ec\82è0\83X\83\8d\83b\83g)', list, 100, style, item_tween, false,
function (index)
explanation_text:next(make_shop_item_explanation(items[index + 1]))
end)
table.insert(list, make_ideal_text(items[i]))
end
explanation_text:next(items[1].explanation)
- return question('\8fo\8c\82\90_\97ì\82ð\91I\91ð(\8ec\82è0\83X\83\8d\83b\83g)', list, 'scroll', item_tween, false,
+ return question('\8fo\8c\82\90_\97ì\82ð\91I\91ð(\8ec\82è0\83X\83\8d\83b\83g)', list, 100, 'scroll', item_tween, false,
function (index)
explanation_text:next(items[index + 1].explanation)
end
}
explanation_text:next(explanations[1])
- local tab_menu = Question:new(make_caption_text('Item Management Menu'), items, 'direction=horizontal')
+ local tab_menu = Question:new(make_caption_text('Item Management Menu'), items, 100, 'direction=horizontal')
local tw_init = DownSlideTween:new(0.1, 0.1, 0.8, 0.15, 20)
tw_init(tab_menu)
}
explanation_text:next(explanations[1])
- local tab_menu = Question:new(make_caption_text('Setup Menu'), items, 'direction=horizontal')
+ local tab_menu = Question:new(make_caption_text('Setup Menu'), items, 100, 'direction=horizontal')
local tw_init = DownSlideTween:new(0.1, 0.1, 0.8, 0.15, 20)
tw_init(tab_menu)
--{{{ main_menu
function main_menu()
- local explanation_text = text('', ' ', nil, UpSlideTween:new(0.1, 0.8, 0.8, 0.12, 20))
- local character_pic = Picture:new('file.image/battler/hero0.png')
+ local explanation_text = text('', ' ', 100, nil, UpSlideTween:new(0.1, 0.8, 0.8, 0.12, 20))
+ local character_pic = Picture:new('file.image/battler/hero0.png', 90)
local x, y, w, h = to_client_coord(0.4, 0.4, 0.2, 0.2)
character_pic:set_tween('position2', {[0] = {x, y}})
character_pic:set_tween('size2', {[0] = {w, h}})
character_pic:set_tween('texcoord', {['loop'] = {0, 60}, [0] = {0, 0, 1/4, 1/4}, [30] = {0, 1/4, 1/4, 2/4}})
local status = {}
- table.insert(status, text('', '<col code="ffffff">\82g\82o:300/300</col>', 'view=no-content-bg', RightSlideTween:new(0.1, 0.3, 0.2, 0.12, 30)))
- table.insert(status, text('', '<col code="ffffff">\83Q\83C\83\93:80%</col>', 'view=no-content-bg', RightSlideTween:new(0.12, 0.35, 0.2, 0.12, 32)))
- table.insert(status, text('', '<col code="ffffff">\8dU\8c\82\97Í:200</col>', 'view=no-content-bg', RightSlideTween:new(0.14, 0.4, 0.2, 0.12, 34)))
- table.insert(status, text('', '<col code="ffffff">\8aÑ\92Ê\97Í:20</col>', 'view=no-content-bg', RightSlideTween:new(0.16, 0.45, 0.2, 0.12, 36)))
- table.insert(status, text('', '<col code="ffffff">\95¨\97\9d\96h\8cä\97Í:100</col>', 'view=no-content-bg', RightSlideTween:new(0.18, 0.5, 0.2, 0.12, 38)))
- table.insert(status, text('', '<col code="ffffff">\89\8a\91Ï\90«:50</col>', 'view=no-content-bg', RightSlideTween:new(0.2, 0.55, 0.5, 0.12, 40)))
- table.insert(status, text('', '<col code="ffffff">\97â\8bC\91Ï\90«:50</col>', 'view=no-content-bg', RightSlideTween:new(0.22, 0.6, 0.2, 0.12, 42)))
- table.insert(status, text('', '<col code="ffffff">\97\8b\91Ï\90«:50</col>', 'view=no-content-bg', RightSlideTween:new(0.24, 0.65, 0.2, 0.12, 44)))
- table.insert(status, text('', '<col code="ffffff">\8fd\97Í\91Ï\90«:50</col>', 'view=no-content-bg', RightSlideTween:new(0.26, 0.7, 0.2, 0.12, 46)))
+ table.insert(status, text('', '<col code="ffffff">\82g\82o:300/300</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.1, 0.3, 0.2, 0.12, 30)))
+ table.insert(status, text('', '<col code="ffffff">\83Q\83C\83\93:80%</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.12, 0.35, 0.2, 0.12, 32)))
+ table.insert(status, text('', '<col code="ffffff">\8dU\8c\82\97Í:200</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.14, 0.4, 0.2, 0.12, 34)))
+ table.insert(status, text('', '<col code="ffffff">\8aÑ\92Ê\97Í:20</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.16, 0.45, 0.2, 0.12, 36)))
+ table.insert(status, text('', '<col code="ffffff">\95¨\97\9d\96h\8cä\97Í:100</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.18, 0.5, 0.2, 0.12, 38)))
+ table.insert(status, text('', '<col code="ffffff">\89\8a\91Ï\90«:50</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.2, 0.55, 0.5, 0.12, 40)))
+ table.insert(status, text('', '<col code="ffffff">\97â\8bC\91Ï\90«:50</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.22, 0.6, 0.2, 0.12, 42)))
+ table.insert(status, text('', '<col code="ffffff">\97\8b\91Ï\90«:50</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.24, 0.65, 0.2, 0.12, 44)))
+ table.insert(status, text('', '<col code="ffffff">\8fd\97Í\91Ï\90«:50</col>', 10, 'view=no-content-bg', RightSlideTween:new(0.26, 0.7, 0.2, 0.12, 46)))
-- \8cã\8en\96\96\97p\8aÖ\90\94
local finalizer = function ()
local answer
while true do
- answer = question(make_caption_text('Main Menu'), items, 'disable=3;direction=horizontal', DownSlideTween:new(0.1, 0.1, 0.8, 0.15, 20), false,
+ answer = question(make_caption_text('Main Menu'), items, 100, 'disable=3;direction=horizontal', DownSlideTween:new(0.1, 0.1, 0.8, 0.15, 20), false,
function (index)
explanation_text:next(explanations[index + 1])
end)
explanation_text:next(make_marcket_relic_explanation(relic_list[1], ehves_power, bolony_power, stra_power))
while true do
- answer = question('\83}\81[\83P\83b\83g', items, nil, FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
+ answer = question('\83}\81[\83P\83b\83g', items, 100, nil, FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
function (index)
explanation_text:next(make_marcket_relic_explanation(relic_list[index + 1], ehves_power, bolony_power, stra_power))
end)
end
--}}}
--{{{ message
-function message(title, texts, style, initializer)
- local obj = Message:new(title, style)
+function message(title, texts, priority, style, initializer)
+ local obj = Message:new(title, style, priority)
if initializer ~= nil then initializer(obj) end
local frame = obj:show()
--wait_frame(frame)
end
--{{{ new
Message = {}
-function Message:new(title, style)
+function Message:new(title, style, priority)
if style == nil then style = '' end
- local id = messageNewImpl(title, style)
+ local id = messageNewImpl(title, style, priority)
local obj = {}
obj.id_ = id
setmetatable(obj, {__index = Message})
--}}}
--}}}
--{{{ text
-function text(title, text, style, initializer)
- local obj = Message:new(title, style)
+function text(title, text, priority, style, initializer)
+ local obj = Message:new(title, style, priority)
if initializer ~= nil then initializer(obj) end
obj:show()
local frame = obj:next(text)
end
--}}} text
--{{{ question
-function question(title, items, style, initializer, ignore_cancel, callback_move_cursor, callback_select)
+function question(title, items, priority, style, initializer, ignore_cancel, callback_move_cursor, callback_select)
if ignore_cancel == nil then ignore_cancel = false end
local disables = {}
if not is_empty(style) then
end
end
end
- local obj = Question:new(title, items, style)
+ local obj = Question:new(title, items, priority, style)
if initializer ~= nil then initializer(obj) end
local frame = obj:show()
wait_frame(frame)
end
--{{{ new
Question = {}
-function Question:new(title, items, style)
+function Question:new(title, items, priority, style)
+ print_debug(title)
if style == nil then style = '' end
- local id = menuNewImpl(title, items, style)
+ local id = menuNewImpl(title, items, style, priority)
local obj = {}
obj.id_ = id
setmetatable(obj, {__index = Question})
--{{{ picture
--{{{ new
Picture = {}
-function Picture:new(path)
- local id = pictureCreateImpl(path)
+function Picture:new(path, priority)
+ local id = pictureCreateImpl(path, priority)
local obj = {}
obj.id_ = id
setmetatable(obj, {__index = Picture})
--{{{ board
--{{{ new
Board = {}
-function Board:new(path)
- local id = mof_board_create(path)
+function Board:new(path, priority)
+ local id = mof_board_create(path, priority)
local obj = {}
obj.id_ = id
setmetatable(obj, {__index = Board})
--{{{ solid
--{{{ new
Solid = {}
-function Solid:new(class_path)
- local id = solidCreateImpl(class_path)
+function Solid:new(class_path, priority)
+ local id = solidCreateImpl(class_path, priority)
local obj = {}
obj.id_ = id
setmetatable(obj, {__index = Solid})
--{{{ land_region_create
LandRegion = {}
function land_region_create(x, y)
- local id = mof_land_region_create(x, y)
+ local id = mof_land_region_create(x, y, 50)
local obj = {}
obj.id_ = id
setmetatable(obj, {__index = LandRegion})
local answer = 0
- local chara_pic = Picture:new('file.image/shop/bukiya.png')
+ local chara_pic = Picture:new('file.image/shop/bukiya.png', 50)
local x, y = to_client_coord(0.01, 0.1)
chara_pic:set_tween('position2', {[0] = {x, y}}, 0)
chara_pic:set_tween('size2', {[0] = {256 * 0.9, 512 * 0.9}}, 0) -- TODO
explanation_text:next(make_shop_item_explanation(shop_list[1]))
while true do
- answer = question(service_name, items, 'view=scroll', FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
+ answer = question(service_name, items, 100, 'view=scroll', FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
function (index)
explanation_text:next(make_shop_item_explanation(shop_list[index + 1]))
end)
local answer = 0
- local chara_pic = Picture:new('file.image/shop/bukiya.png')
+ local chara_pic = Picture:new('file.image/shop/bukiya.png', 50)
local x, y = to_client_coord(0.01, 0.1)
chara_pic:set_tween('position2', {[0] = {x, y}}, 0)
chara_pic:set_tween('size2', {[0] = {256 * 0.9, 512 * 0.9}}, 0) -- TODO
if #disables ~= 0 then
style = style .. ';disable=' .. join(disables, ',')
end
- answer = question(service_name, menu_items, style, FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
+ answer = question(service_name, menu_items, 100, style, FeedTween:new(0.3, 0.25, 0.65, 0.4), false,
function (index)
explanation_text:next(make_ideal_church_explanation(items[index + 1].id))
end)
require('script/marcket_menu')
function shop_menu_test()
- local jem_text = text('', '<layout w="200" h="32" xalign="right" yalign="center">400JEM</layout>', '', FeedTween:new(0.05, 0.9, 0.3, 0.07))
- local explanation_text = text('', ' ', 'view=no-title-bg', FeedTween:new(0.3, 0.7, 0.65, 0.1))
+ local jem_text = text('', '<layout w="200" h="32" xalign="right" yalign="center">400JEM</layout>', 100, '', FeedTween:new(0.05, 0.9, 0.3, 0.07))
+ local explanation_text = text('', ' ', 100, 'view=no-title-bg', FeedTween:new(0.3, 0.7, 0.65, 0.1))
local service_id = 5
service_menu(jem_text, explanation_text, service_id, 1)-- grade 1
service_menu(jem_text, explanation_text, service_id, 2)
function stage_menu()
local answer = 0
- local stage_pic = Picture:new('file.image/picture_0.JPG')
+ local stage_pic = Picture:new('file.image/picture_0.JPG', 50)
stage_pic:set_tween('position2', {[0] = {100, 150}}, 0)
while true do
local items = {
get_icon_image_tag('empty') .. '<col name="gray">\83X\83e\81[\83W5</col>',
get_icon_image_tag('empty') .. '<col name="gray">\83X\83e\81[\83W6</col>',
}
- answer = question('\83X\83e\81[\83W\82ð\91I\91ð\82µ\82Ä\82\82¾\82³\82¢', items, 'disable=2,3,4,5,6', FeedTween:new(0.7, 0.3, 0.5, 0.5))
+ answer = question('\83X\83e\81[\83W\82ð\91I\91ð\82µ\82Ä\82\82¾\82³\82¢', items, 100, 'disable=2,3,4,5,6', FeedTween:new(0.7, 0.3, 0.5, 0.5))
end
end
--{{{ enter_land
function enter_land(area, x, y)
local answer = question('<font size="20">' .. area.name .. '\82ð\96K\96â\82µ\82Ü\82·<nl/>\82æ\82ë\82µ\82¢\82Å\82·\82©\81H</font>',
- {'<layout w="150" h="24" xalign="center">\82Í\82¢</layout>', '<layout w="150" h="24" xalign="center">\82¢\82¢\82¦</layout>'},
+ {'<layout w="150" h="24" xalign="center">\82Í\82¢</layout>', '<layout w="150" h="24" xalign="center">\82¢\82¢\82¦</layout>'}, 100,
'direction=horizontal;view=no-title-bg', FeedTween:new(0.3, 0.4, 0.4, 0.2), false)
if answer == 1 then
land_menu(x, y)
end
local answer = question('<font size="20">' .. area.name .. '\82É\83G\83\8c\83\81\83\93\83g\82ð\94z\92u\82µ\82Ü\82·</font>',
- items, style, FeedTween:new(0.3, 0.4, 0.4, 0.2), false)
+ items, 100, style, FeedTween:new(0.3, 0.4, 0.4, 0.2), false)
if answer == 1 then
cursor:set_tween('size3', {[0] = {0.0, 0.0, 0.0}})
put_element(ELEMENT_TYPE_FOREST, x, y)
profile[1].forest_element = tonumber(profile[1].forest_element) - 1;
save_game_data('gamedata.main_profile', profile)
- invoke(forest_element, 0.2 * x + 0.1, 0, -0.2 * y - 0.1)
+ invoke(forest_element, 0.2 * x + 0.1, 0, -0.2 * y - 0.1, 100)
wait_frame(150)
cursor:set_tween('size3', {[0] = {0.2, 0.1, 0.2}, [20] = {0.2, 0.2, 0.2}})
elseif answer == 2 then
put_element(ELEMENT_TYPE_EARTH, x, y)
profile[1].earth_element = tonumber(profile[1].earth_element) - 1;
save_game_data('gamedata.main_profile', profile)
- invoke(earth_element, 0.2 * x + 0.1, 0, -0.2 * y - 0.1)
+ invoke(earth_element, 0.2 * x + 0.1, 0, -0.2 * y - 0.1, 100)
wait_frame(150)
cursor:set_tween('size3', {[0] = {0.2, 0.1, 0.2}, [20] = {0.2, 0.2, 0.2}})
elseif answer == 3 then
put_element(ELEMENT_TYPE_WATER, x, y)
profile[1].water_element = tonumber(profile[1].water_element) - 1;
save_game_data('gamedata.main_profile', profile)
- invoke(water_element, 0.2 * x + 0.1, 0, -0.2 * y - 0.1)
+ invoke(water_element, 0.2 * x + 0.1, 0, -0.2 * y - 0.1, 100)
wait_frame(150)
cursor:set_tween('size3', {[0] = {0.2, 0.1, 0.2}, [20] = {0.2, 0.2, 0.2}})
end
--}}}
--{{{ forest_already_located
function forest_already_located()
- message('', {get_icon_image_tag('forest') .. '\90X\82Ì\83G\83\8c\83\81\83\93\83g\82ª\8aù\82É\94z\92u\82³\82ê\82Ä\82¢\82Ü\82·'}, nil, FeedTween:new(0.2, 0.4, 0.6, 0.1))
+ message('', {get_icon_image_tag('forest') .. '\90X\82Ì\83G\83\8c\83\81\83\93\83g\82ª\8aù\82É\94z\92u\82³\82ê\82Ä\82¢\82Ü\82·'}, 100, nil, FeedTween:new(0.2, 0.4, 0.6, 0.1))
end
--}}}
--{{{ earth_already_located
function earth_already_located()
- message('', {get_icon_image_tag('earth') .. '\91å\92n\82Ì\83G\83\8c\83\81\83\93\83g\82ª\8aù\82É\94z\92u\82³\82ê\82Ä\82¢\82Ü\82·'}, nil, FeedTween:new(0.2, 0.4, 0.6, 0.1))
+ message('', {get_icon_image_tag('earth') .. '\91å\92n\82Ì\83G\83\8c\83\81\83\93\83g\82ª\8aù\82É\94z\92u\82³\82ê\82Ä\82¢\82Ü\82·'}, 100, nil, FeedTween:new(0.2, 0.4, 0.6, 0.1))
end
--}}}
--{{{ water_already_located
function water_already_located()
- message('', {get_icon_image_tag('water') .. '\90\85\82Ì\83G\83\8c\83\81\83\93\83g\82ª\8aù\82É\94z\92u\82³\82ê\82Ä\82¢\82Ü\82·'}, nil, FeedTween:new(0.2, 0.4, 0.6, 0.1))
+ message('', {get_icon_image_tag('water') .. '\90\85\82Ì\83G\83\8c\83\81\83\93\83g\82ª\8aù\82É\94z\92u\82³\82ê\82Ä\82¢\82Ü\82·'}, 100, nil, FeedTween:new(0.2, 0.4, 0.6, 0.1))
end
--}}}
--{{{ update_area
area_info:next(table.concat(buf))
if area_pic ~= nil then area_pic:dispose() end
- area_pic = Picture:new('file.' .. area_profile.picture)
+ area_pic = Picture:new('file.' .. area_profile.picture, 40)
local x, y = to_client_coord(0.05, 0.25)
area_pic:set_tween('position2', {[0] = {x, y}}, 0)
area_pic:set_tween('size2', {[0] = {256 * 0.7, 512 * 0.7}}, 0)-- \83G\83\8a\83A\8fî\95ñ\82Ì\8d\82\82³\82É\82 \82í\82¹\82é
local cursor_y = 0
- local s = Solid:new('file.model/area_cursor.x')
+ local s = Solid:new('file.model/area_cursor.x', 11)
- local area_info = text('', ' ', 'view=no-title-bg', FeedTween:new(0.05, 0.05, 0.70, 0.15))
+ local area_info = text('', ' ', 100, 'view=no-title-bg', FeedTween:new(0.05, 0.05, 0.70, 0.15))
--local prop = area_info:get_properties()
--local w, h = split(prop['size2'], ',')
camera:set_tween('lookat', {[0] = {0.6, 0, -0.6}})
wait_frame(1)
- local s = Solid:new('world')
+ local s = Solid:new('world', 10)
local world_light = Light:new('directional')
world_light:set_tween('position3',
{
if area[1].capital_flag == '1' then
local name = area[1].name
name = '<col code="000011"><font name="Vinque" size="22"><layout w="50" xalign="center">' .. name .. '</layout></font></col>'
- table.insert(land_names, text('', name, 'view=no-content-bg', LandNameTween:new(0.2 * i, 0.2 * j + 0.05)))
+ table.insert(land_names, text('', name, 100, 'view=no-content-bg', LandNameTween:new(0.2 * i, 0.2 * j + 0.05)))
end
end
end
local world_profile = load_game_data('gamedata.world_profile')
local saisei_text = '<font id="1" size="30">Term ' .. world_profile[1].term .. '/\8dÄ\90¶\93x ' .. world_profile[1].regen .. '</font>'
- local saisei = text('', saisei_text, 'view=no-title-bg', FeedTween:new(0.55, 0.85, 0.4, 0.1))
+ local saisei = text('', saisei_text, 100, 'view=no-title-bg', FeedTween:new(0.55, 0.85, 0.4, 0.1))
-- \8cã\8en\96\96\97p\8aÖ\90\94
local finalizer = function ()
'<layout w="130" h="28" xalign="center" yalign="center">\83\81\83C\83\93\83\81\83j\83\85\81[</layout>',
}
local sleep_select = false
- answer = question(make_caption_text('World Menu'), items, 'direction=horizontal;disable=0', FeedTween:new(0.1, 0.05), true, nil,
+ answer = question(make_caption_text('World Menu'), items, 100, 'direction=horizontal;disable=0', FeedTween:new(0.1, 0.05), true, nil,
function (index)
if index == 2 then
local answer = question('<font size="20">1term\8fÁ\94ï\82µ\82Ä\81A\93÷\91Ì\82ð\8dÄ\8d\\92z\82µ\82Ü\82·\81B<nl/>\82æ\82ë\82µ\82¢\82Å\82·\82©\81H</font>',
{'<layout w="150" h="24" xalign="center">\82Í\82¢</layout>', '<layout w="150" h="24" xalign="center">\82¢\82¢\82¦</layout>'},
+ 100,
'direction=horizontal;view=no-title-bg', FeedTween:new(0.3, 0.4, 0.4, 0.2), false)
if answer == 1 then
-- \83X\83\8a\81[\83v
"./"
"./widget/"
"./script/"
+ "./world/"
LIBRARIES
"moflib"
"ogg_static"
}
//}}}
//{{{ land_region_create
- int MyEnvironment::land_region_create(int x, int y)
+ int MyEnvironment::land_region_create(int x, int y, int priority)
{
auto vertices = impl_->world_->make_land_region_vertices(x, y);
auto texture = ::getTextureResourceManager(::SYSTEM)->getResource("image/element.png");
- return vertex_buffer_create(vertices->front(), vertices->back(), texture);
+ return vertex_buffer_create(vertices->front(), vertices->back(), texture, priority);
}
//}}}
//{{{ save_profile
int y
);
- virtual int land_region_create(int x, int y);
+ virtual int land_region_create(int x, int y, int priority);
virtual void world_sleep();