Ejemplo n.º 1
0
void string::erase(size_t beg, size_t end) {
    char *mbeg = m_first + beg;
    char *mend = m_first + end;
    const size_t len = m_last - mend;
    moveMemory(mbeg, mend, len);
    m_last = &mbeg[len];
    m_last[0] = '\0';
}
Ejemplo n.º 2
0
void Problem::onKeyPress(EventKeyboard::KeyCode keyCode, Event *event)
{
	if (myInput)
	{
		if (!myInput->isEnd())return;
		else
		{
			if (!myInput->label->getString().empty())
			{
				memMap[memY][memX]->str.assign(myInput->label->getString());
				memMap[memY][memX]->setOwnString();
			}
			else
			{
				memMap[memY][memX]->str.assign(".");
				memMap[memY][memX]->setString(memMap[memY][memX]->str);
			}
			this->getScene()->removeChild(myInput);
			myInput = NULL;
			return;
		}
	}
	int px = 0, py = 0;
	switch (keyCode)
	{
	case EventKeyboard::KeyCode::KEY_UP_ARROW:
		if(!pushShift)py = -1;
		break;
	case EventKeyboard::KeyCode::KEY_DOWN_ARROW:
		if (!pushShift)py = 1;
		break;
	case EventKeyboard::KeyCode::KEY_LEFT_ARROW:
		px = -1;
		break;
	case EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
		px = 1;
		break;
	case EventKeyboard::KeyCode::KEY_TAB:
		smSwitch = !smSwitch;
		pushEnter = false;
		if (smSwitch == false)
		{
			sourceMap[sourceY]->setColor(Color3B::WHITE);
		}
		else
		{
			memMap[memY][memX]->setOwnString();
			memMap[memY][memX]->setOwnColor();
			setMemoryBlue();
		}
		break;
	case EventKeyboard::KeyCode::KEY_SHIFT:
		if (smSwitch == false)
		{
			pushShift = true;
			setMemoryFree();
		}
		break;
	case EventKeyboard::KeyCode::KEY_KP_ENTER:
		if (smSwitch == true)
		{
			sourceMap[sourceY]->setColor(Color3B::ORANGE);
			smSwitch = !smSwitch;
			pushEnter = true;
			setMemoryShow();
		}
		else
		{
			myInput = InputValue::create();
			myInput->setVisible(true);
			this->getScene()->addChild(myInput);
		}
		break;
	}

	if (smSwitch)
	{
		moveSource(px, py);
	}
	else
	{
		moveMemory(px, py);
	}
}