Exemplo n.º 1
0
bool MapEditer::init()
{
	if (!Layer::init())
		return false;

	m_layer = Layer::create();
	this->addChild(m_layer, 1);

	Sprite* background = Sprite::create(FileStuff::BACKGROUND_BOTTOM);
	float scale = (Director::getInstance()->getVisibleSize().width) / (background->getContentSize().width);
	background->setAnchorPoint(Point::ZERO);
	background->setScale(scale);
	this->addChild(background);

	Sling* sling = Sling::create();
	this->addChild(sling);

	EventListenerMouse* mouseListener = EventListenerMouse::create();
	mouseListener->onMouseDown = CC_CALLBACK_1(MapEditer::onMouseDown, this);
	mouseListener->onMouseScroll = CC_CALLBACK_1(MapEditer::OnMouseScroll, this);
	m_clicked_sprite = nullptr;

	_eventDispatcher->addEventListenerWithSceneGraphPriority(mouseListener, this);

	EventListenerKeyboard* keyboardListener = EventListenerKeyboard::create();
	keyboardListener->onKeyPressed = CC_CALLBACK_1(MapEditer::OnKeyPressed, this);
	_eventDispatcher->addEventListenerWithSceneGraphPriority(keyboardListener, this);
	m_pressedKey = static_cast<EventKeyboard::KeyCode>(-1);

	MenuItemLabel* saveButton = MenuItemLabel::create(Label::create("Save", FileStuff::FONT_ARIAL, 20));
	saveButton->setPosition(170, 10);
	saveButton->setName("saveButton");
	this->addChild(saveButton);

	MenuItemLabel* playButton = MenuItemLabel::create(Label::create("Play", FileStuff::FONT_ARIAL, 20));
	playButton->setPosition(220, 10);
	playButton->setName("playButton");
	this->addChild(playButton);

	MenuItemLabel* backButton = MenuItemLabel::create(Label::create("Back", FileStuff::FONT_ARIAL, 20));
	backButton->setPosition(270, 10);
	backButton->setName("backButton");
	this->addChild(backButton);

	MenuItemLabel* warning = MenuItemLabel::create(Label::create("If complete making level\nCHANGE FILE NAME", FileStuff::FONT_ARIAL, 15));
	warning->setPosition(200, 40);
	warning->setName("warning");
	this->addChild(warning);

	vector<TargetInfo> infoList;
	string fileName = FileStuff::EDITING_FILENAME;
	
	//load from file
	if (!cppson::loadFile(infoList, fileName))
	{
		CCLOG("Target Load Fail.");
		return true;
	}
	else
	{
		for (TargetInfo targetInfo : infoList)
		{
			Sprite* sprite = nullptr;
			Point point;
			switch (targetInfo.m_name.get())
			{
			case TargetInfo::BUBBLE:
				sprite = Sprite::create(FileStuff::BUBBLE);
				break;

			case TargetInfo::ENEMY:
				sprite = Sprite::create(FileStuff::ENEMY);
				break;

			case TargetInfo::MIRROR:
				sprite = Sprite::create(FileStuff::MIRROR);
				break;

			case TargetInfo::VIRTICAL_MIRROR:
				sprite = Sprite::create(FileStuff::VIRTICAL_MIRROR);
				break;

			case TargetInfo::STAR:
				sprite = Sprite::create(FileStuff::BRICK);
				break;
			default:
				sprite = Sprite::create(FileStuff::ENEMY); //default sprite
			}

			sprite->setTag(targetInfo.m_name.get());
			point = Point(targetInfo.m_position.get().x.get(), targetInfo.m_position.get().y.get());
			sprite->setPosition(point);
			sprite->setRotation(targetInfo.m_rotation.get());
			sprite->setScaleX(targetInfo.m_scale.get().x.get());
			sprite->setScaleY(targetInfo.m_scale.get().y.get());
			
			if (sprite)
			{
				m_layer->addChild(sprite);
			}
		}
	}

	return true;
}