Пример #1
0
void PlayerEditName::onTextAreaKeyDown(Event::Keyboard* event)
{
    auto sender = dynamic_cast<UI::TextArea*>(event->emitter());

    std::string text = sender->text();

    if (event->keyCode() == SDLK_BACKSPACE) //backspace
    {
        if (text.length() > 0)
        {
            text = text.substr(0, text.length() - 1);
            sender->setText(text.c_str());
            return;
        }
        return;
    }

    if (event->keyCode() == SDLK_RETURN) //enter
    {
        doDone();
        return;
    }

    if (event->keyCode() == SDLK_ESCAPE)
    {
        doBack();
        return;
    }

    if (event->keyCode() == SDLK_LSHIFT || event->keyCode() == SDLK_RSHIFT) return;
    if (event->keyCode() == SDLK_LCTRL || event->keyCode() == SDLK_RCTRL) return;
    if (event->keyCode() == SDLK_LALT || event->keyCode() == SDLK_RALT) return;

    if (text.length() == 11) return;

    if (_keyCodes.find(event->keyCode()) != _keyCodes.end())
    {
        char chr = _keyCodes.at(event->keyCode());

        if (event->shiftPressed())
        {
            text += toupper(chr);
        }
        else
        {
            text += chr;
        }
        sender->setText(text.c_str());
    }
}
Пример #2
0
void PlayerEditAge::onKeyDown(Event::Keyboard* event)
{
    switch (event->keyCode())
    {
    case SDLK_RIGHT:
        doInc();
        break;
    case SDLK_LEFT:
        doDec();
        break;
    case SDLK_ESCAPE:
        doBack();
        break;
    case SDLK_RETURN:
        doDone();
        break;
    }
}
Пример #3
0
    void Thread::run() {
        while (!done_) {

            MessageWithInPort messageWithInPort = eventQueue->wait_and_pop();

            //SymbolicEvent ev = eventHandling->popEvent();

            //if (Symbol::create("done") == NULL) { //message.getName()) {
            if (Sym::done == messageWithInPort.getMessage().getMessageName()) {
                doDone();
                break;
            }

            InPort inPort = messageWithInPort.getInPort();
            const Symbol* stateMachineName = inPort.stateMachine;

            std::vector<MessageWithOutPort> result;
            stateMachineMap[stateMachineName]->processMessage(messageWithInPort.getMessage(), result); // sendMessage
            LOGFUNC;
            if (result.size() == 1) {
                LOGVALUE("result = ", result[0].getMessage().getMessageName()->getName());
            }
            for (MessageWithOutPort messageWithOutPort : result) {
                Message message = messageWithOutPort.getMessage();
                OutPort outPort = messageWithOutPort.getOutPort();

                InPort inPort = this->process->portMap.getConnectedPort(outPort); // accessing process without concurrency control
                LOGFUNC;
                LOGVALUE("outSM", outPort.stateMachine->getName());
                LOGVALUE("inSM", inPort.stateMachine->getName());
                LOGVALUE("messageName", message.getMessageName()->getName());

                Thread* peerThread = this->process->getThread(inPort.thread);
                MessageWithInPort messageWithInPort(message, inPort);

                // sequence chart log comes from here
                Log::sequence->message(outPort.stateMachine, inPort.stateMachine, message.getMessageName());

                peerThread->push(messageWithInPort);
                //usleep(1000); // for clean sequence diagram
            }

        }
    }
Пример #4
0
void PlayerEditName::onDoneButtonClick(Event::Mouse* event)
{
    doDone();
}