void ArrowControl::rotateAnti() { ArrowType temp = _east; // store the east value. setArrow(zf::East, _south); setArrow(zf::South, _west); setArrow(zf::West, _north); setArrow(zf::North, temp); }
void WorldScene::keyCommand(EventKeyboard::KeyCode keyCode, cocos2d::Event* event, Player* player) { CCLOG("key %d pressed", keyCode); Vec2 loc = player->getPosition(); switch (keyCode) { case EventKeyboard::KeyCode::KEY_F: { if (player->getArrow() > 0) { CCLOG("F"); auto pro = Projectile::create(); auto pro2 = Projectile::create(); auto pro3 = Projectile::create(); pro->setPosition(loc); pro2->setPosition(Vec2(loc.x - 50, loc.y)); pro3->setPosition(Vec2(loc.x + 50, loc.y)); pro->setMode('a'); pro2->setMode('a'); pro3->setMode('a'); this->addChild(pro); this->addChild(pro2); this->addChild(pro3); auto shoot = MoveBy::create(2.0f, Vec2(0, 500)); auto remove = RemoveSelf::create(); pro->runAction(Sequence::create(shoot, remove, nullptr)); pro2->runAction(Sequence::create(shoot->clone(), remove->clone(), nullptr)); pro3->runAction(Sequence::create(shoot->clone(), remove->clone(), nullptr)); player->setArrow(player->getArrow() - 5); setArrow(player->getArrow()); } break; } case EventKeyboard::KeyCode::KEY_ESCAPE: auto scene = PauseScene::createScene(); Director::getInstance()->pushScene(scene); } }
void WidgetSessions::showRelated(const qmf::Data& object, const QString &widget_type, ArrowDirection a) { if (!updateAll) if (this->hasData() && (arrow() != arrowNone)) { //qDebug("showRelated: %s needs an update", this->objectName().toStdString().c_str()); emit needUpdate(); return; } setArrow(a); if (widget_type == "widgetConnections") { qpid::types::Variant value = object.getProperty("address"); std::string name = value.asString(); related->setRelatedData("connectionRef", name); related->clearFilter(); emit needData(); return; } // the object is a subscription qpid::types::Variant value = object.getProperty("sessionRef"); QString name(value.asMap()["_object_name"].asString().c_str()); QString session = name.section(':', -1); related->setRelatedData("name", session.toStdString()); related->clearFilter(); //qDebug("showRelated: %s needs new data", this->objectName().toStdString().c_str()); emit needData(); }
void WorldScene::mouseClick(cocos2d::Event* event, Player* player) { CCLOG("mouse"); CCLOG("Category %x", player->getPhysicsBody()->getCategoryBitmask()); CCLOG("Collision %x", player->getPhysicsBody()->getCollisionBitmask()); if (player->getArrow() > 0) { Vec2 loc = player->getPosition(); CCLOG("%d", player->getArrow()); EventMouse* mouseEvent = dynamic_cast<EventMouse*>(event); mouseEvent->getMouseButton(); //auto pro = Sprite::create("CloseNormal.png"); auto pro = Projectile::create(); pro->setPosition(loc); this->addChild(pro, 1); //pro->setPosition(mouseEvent->getLocation().x, this->getContentSize().height-mouseEvent->getLocation().y); if (player->getMode() == 'a') { pro->setMode('a'); Vec2 offset = mouseEvent->getLocation(); offset.y = this->getContentSize().height - offset.y; offset -= player->getPosition(); offset.normalize(); auto deg = atan(offset.x / offset.y) * 180 /3.14; if (offset.y<0) { deg += 180; } CCLOG("%f", deg); auto target = offset*1000 + player->getPosition(); auto rotate = RotateBy::create(0, deg); auto shoot = MoveTo::create(2.0f, target); auto remove = RemoveSelf::create(); pro->runAction(Sequence::create(rotate, shoot, remove, nullptr)); player->setArrow(player->getArrow() - 1); } else { pro->setMode('b'); auto shoot = MoveBy::create(2.0f, Vec2(0, 500)); auto remove = RemoveSelf::create(); pro->runAction(Sequence::create(shoot, remove, nullptr)); player->setArrow(player->getArrow() - 4); } setArrow(player->getArrow()); } }
bool WorldScene::onContactBegin(cocos2d::PhysicsContact &contact) { CCLOG("shape a cate : %d", contact.getShapeA()->getCategoryBitmask()); CCLOG("shape b cate : %d", contact.getShapeB()->getCategoryBitmask()); int bitA = contact.getShapeA()->getCategoryBitmask(); int bitB = contact.getShapeB()->getCategoryBitmask(); if (bitA == 3) { if (bitB == 1) { //Projectile hit enemy auto nodeB = contact.getShapeB()->getBody()->getNode(); Projectile* pro = dynamic_cast<Projectile*>(contact.getShapeA()->getBody()->getNode()); if (pro != NULL) { char mode = pro->getMode(); int tag = nodeB->getTag(); if (tag == 1) { Animal* node = dynamic_cast<Animal*>(nodeB); if (pro != NULL) { if (mode == 'b') { node->setHp(node->getHp() - 3); } else { node->setHp(node->getHp() - 1); } } CCLOG("%d", node->getHp()); if (node->getHp() <= 0) { node->removeFromParent(); setScore(getScore() + 100); } } else if (tag == 2) { Monster* node = dynamic_cast<Monster*>(nodeB); if (pro != NULL) { if (mode == 'b') { node->setHp(node->getHp() - 3); } else { node->setHp(node->getHp() - 1); } } CCLOG("%d", node->getHp()); if (node->getHp() <= 0) { node->removeFromParent(); setScore(getScore() + 500); } } if ((mode == 'a') || (tag == 3)) { if (pro != NULL) pro->removeFromParent(); } } } } else if (bitA == 1) { if (bitB == 3) { //Enemy hit projectile auto nodeA = contact.getShapeA()->getBody()->getNode(); Projectile* pro = dynamic_cast<Projectile*>(contact.getShapeB()->getBody()->getNode()); if (pro != NULL) { char mode = pro->getMode(); int tag = nodeA->getTag(); if (tag == 1) { Animal* node = dynamic_cast<Animal*>(nodeA); if (pro != NULL) { if (mode == 'b') { node->setHp(node->getHp() - 3); } else { node->setHp(node->getHp() - 1); } } CCLOG("%d", node->getHp()); if (node->getHp() <= 0) { node->removeFromParent(); setScore(getScore() + 100); } } else if (tag == 2) { Monster* node = dynamic_cast<Monster*>(nodeA); if (pro != NULL) { if (mode == 'b') { node->setHp(node->getHp() - 3); } else { node->setHp(node->getHp() - 1); } } CCLOG("%d", node->getHp()); if (node->getHp() <= 0) { node->removeFromParent(); setScore(getScore() + 500); } } if ((mode == 'a') || (tag == 3)) { if (pro != NULL) pro->removeFromParent(); } } } else if (bitB == 2) { //Enemy hit player Player* node = dynamic_cast<Player*>(contact.getShapeB()->getBody()->getNode()); auto nodeA = contact.getShapeA()->getBody()->getNode(); if ((Player::getJump() == 0) || (nodeA->getTag() == 2)) { if (node->getShell() == 0) { node->removeFromParentAndCleanup(true); death(); } else { node->setShell(node->getShell() - 1); setShell(node->getShell()); } } setScore(getScore() + 100); CCLOG("%d", Player::getJump()); } } else if (bitA == 2) { if (bitB == 1) { //Player hit enemy Player* node = dynamic_cast<Player*>(contact.getShapeA()->getBody()->getNode()); auto nodeB = contact.getShapeB()->getBody()->getNode(); if ((Player::getJump() == 0) || (nodeB->getTag() == 2)) { if (node->getShell() == 0) { node->removeFromParentAndCleanup(true); death(); } else { node->setShell(node->getShell() - 1); setShell(node->getShell()); } } setScore(getScore() + 100); CCLOG("%d", Player::getJump()); } else if (bitB == 4) { //Player hit quiver Player* node = dynamic_cast<Player*>(contact.getShapeA()->getBody()->getNode()); auto nodeB = contact.getShapeB()->getBody()->getNode(); if (nodeB->getTag() == 1) { node->setArrow(node->getArrow() + 20); contact.getShapeB()->getBody()->getNode()->removeFromParent(); setArrow(node->getArrow()); CCLOG("Arrow %d", node->getArrow()); } else { node->setShell(node->getShell() + 1); contact.getShapeB()->getBody()->getNode()->removeFromParent(); setShell(node->getShell()); } } } else if (bitA == 4) { if (bitB == 2) { //Quiver hit Player Player* node = dynamic_cast<Player*>(contact.getShapeB()->getBody()->getNode()); auto nodeA = contact.getShapeA()->getBody()->getNode(); if (nodeA->getTag() == 1) { node->setArrow(node->getArrow() + 20); contact.getShapeA()->getBody()->getNode()->removeFromParent(); setArrow(node->getArrow()); CCLOG("Arrow %d", node->getArrow()); } else { node->setShell(node->getShell() + 1); contact.getShapeA()->getBody()->getNode()->removeFromParent(); setShell(node->getShell()); } } } return true; }
bool WorldScene::init() { if (!Layer::init()) { return false; } auto origin = Director::getInstance()->getVisibleOrigin(); auto winSize = Director::getInstance()->getVisibleSize(); auto background = DrawNode::create(); //background->drawSolidRect(origin, winSize, Color4F(0.2f, 0.9f, 0.2f, 1.0f)); //this->addChild(background, -1); auto backgroundpic = Sprite::create("Background.jpg"); //backgroundpic->setColor(Color3B(250, 250, 250)); backgroundpic->setOpacity(100); backgroundpic->setPosition(300, 400); this->addChild(backgroundpic); speed = 1.0f; auto scorelabel = Label::createWithSystemFont("Score", "Arial", 18); scorelabel->setPosition(Vec2(500, 700)); this->addChild(scorelabel); scoreboard = Label::createWithSystemFont("0", "Arial", 18); scoreboard->setPosition(Vec2(550, 700)); score = 0; this->addChild(scoreboard); auto arrowlabel = Label::createWithSystemFont("Arrow : ", "Arial", 18); arrowlabel->setPosition(Vec2(510, 100)); this->addChild(arrowlabel); arrow = Label::createWithSystemFont("0", "Arial", 18); arrow->setPosition(Vec2(550, 100)); this->addChild(arrow); auto modelabel = Label::createWithSystemFont("Mode : ", "Arial", 18); modelabel->setPosition(Vec2(510, 200)); this->addChild(modelabel); mode = Label::createWithSystemFont("Normal", "Arial", 18); mode->setPosition(Vec2(560, 200)); this->addChild(mode); auto shelllabel = Label::createWithSystemFont("Shell : ", "Arial", 18); shelllabel->setPosition(Vec2(50, 100)); this->addChild(shelllabel); shell = Label::createWithSystemFont("0", "Arial", 18); shell->setPosition(Vec2(80, 100)); this->addChild(shell); /*auto sprite = Sprite::create("Archer_Sprite.png"); sprite->setPosition(240, 100); sprite->setScale(0.2);*/ //this->addChild(sprite, 0); Player* player = Player::create(); this->addChild(player, 1); setArrow(player->getArrow()); setShell(player->getShell()); //Animal* a1 = Animal::create(); //this->addChild(a1, 1); this->schedule(schedule_selector(WorldScene::addMonster), 3.5); this->schedule(schedule_selector(WorldScene::addAnimal), 1.5); this->schedule(schedule_selector(WorldScene::addRock), 3.5); this->schedule(schedule_selector(WorldScene::addQuiver), 10.5); this->schedule(schedule_selector(WorldScene::addShell), 20.5); this->schedule(schedule_selector(WorldScene::addLineRock), 12.5); //WorldScene::addMonster(1.5); auto mouselistener = EventListenerMouse::create(); /*listener->onMouseDown = [](Event* event) { CCLOG("mouse"); auto pro = Sprite::create("CloseNormal.png"); pro->setPosition(10, 10); this->addChild(pro, 1); };*/ mouselistener->onMouseDown = CC_CALLBACK_1(WorldScene::mouseClick, this, player); mouselistener->onMouseScroll = CC_CALLBACK_1(WorldScene::mouseScroll, this, player); auto keylistener = EventListenerKeyboard::create(); keylistener->onKeyPressed = CC_CALLBACK_2(WorldScene::keyCommand, this, player); auto contactlistener = EventListenerPhysicsContact::create(); contactlistener->onContactBegin = CC_CALLBACK_1(WorldScene::onContactBegin, this); _eventDispatcher->addEventListenerWithFixedPriority(mouselistener, 1); _eventDispatcher->addEventListenerWithFixedPriority(keylistener, 1); _eventDispatcher->addEventListenerWithFixedPriority(contactlistener, 1); return true; }
void ArrowMask::setArrow(const CCPoint& p, ArrowDirection dir) { setArrow(p, ArrowSize::Medium, dir); }