void GuideManager::nextStep(int step) { CCLOG("step = %d",step); const StepInfo& stepInfo = m_vecStep.at(step); if (getWait()) { return; } if (isLimit(stepInfo)) { return; } m_guideLayer->removeFromParent(); getParent()->addChild(m_guideLayer, GUIDE_LAYER_ZORDER); if (stepInfo.getNextStepId() == END) { endGuide(); return; } else if (stepInfo.getNextStepId() == WAIT) { setWait(true); } else if (stepInfo.getNextStepId() == SLEEP) { getGuideLayer()->sleep(); } else if (stepInfo.getNextStepId() == WAKE) { getGuideLayer()->wake(); } // by order checkDialog(stepInfo); checkRect(stepInfo); checkTalk(stepInfo); checkHand(stepInfo); checkEvent(stepInfo); setNextStepId(step + 1); }
void deleteElement(int start) { /* Shifts every element to the left starting from the index start.*/ int i; if (isLimit(mElements[start])) { matrix.dirty = 1; } for (i = start+1; i < matrix.length; i++) { mElements[i-1] = mElements[i]; } matrix.length--; }
Trade* MarketLimitRule::processRule(OrderBook*& orderBook, Order*& order) { Order* matchedOrder = NULL; Trade* trade = NULL; std::list<Order> orders; if (order->isBuy()) orders = orderBook->getSellOrders(); else orders = orderBook->getBuyOrders(); matchedOrder = &orders.front(); auto it = orders.begin(); while (matchedOrder->getParticipant() == order->getParticipant()) { if (it->getParticipant() != order->getParticipant() && it->isLimit() && order->isMarket()) { matchedOrder = &*it; break; } it++; if (it == orders.end()) return NULL; } int size = matchedOrder->getSize(); double price = matchedOrder->getPrice(); if (matchedOrder->getSize() > order->getSize()) size = order->getSize(); trade = new Trade(*matchedOrder, *order, price, size, orderBook->getTime()); orderBook->updateOrderSize(order, (order->getSize() - size)); orderBook->updateOrderSize(matchedOrder, (matchedOrder->getSize() - size)); orderBook->setLastPrice(price); matchedOrder = NULL; delete matchedOrder; return trade; }