void DungeonLayer::_handleRoomsPlacements(EventCustom* event) { auto placementsData = (RoomsPlacementsData*) event->getUserData(); auto placements = placementsData->getPlacements(); int zOrder = placements.size(); if (placements.size() > 0) { float delayTime = 0; auto lastPlacement = placements.at(placements.size() - 1); for (auto placement : placements) { auto room = placement->getRoom(); auto coordinate = placement->getCoordinate(); auto roomSprite = DungeonRoomSprite::createWithRoom(room); roomSprite->setCoordinate(coordinate); auto size = Director::getInstance()->getVisibleSize(); auto origin = Director::getInstance()->getVisibleOrigin() - this->getParent()->getPosition(); auto initialSize = TILE_DIMENSION * TILE_PLACEMENT_SCALE; auto deckPosition = Vec2(origin.x + size.width - initialSize / 2 - 10, origin.y + size.height - initialSize / 2 - 10); roomSprite->setScale(TILE_PLACEMENT_SCALE, TILE_PLACEMENT_SCALE); roomSprite->setPosition(deckPosition); this->addChild(roomSprite, zOrder + 1); auto position = PositionUtil::positionForCoordinate(coordinate); auto delay = DelayTime::create(delayTime); auto animationStarted = CallFunc::create([=]() { roomSprite->setLocalZOrder(DUNGEON_ROOM_Z_ORDER + 10); }); auto moveAndScale = Spawn::create(MoveTo::create(PLACE_ROOM_DURATION, position), ScaleTo::create(PLACE_ROOM_DURATION, 1), NULL); auto easeMove = EaseBackIn::create(moveAndScale); auto animationEnded = CallFunc::create([=]() { roomSprite->setLocalZOrder(DUNGEON_ROOM_Z_ORDER); if (placement == lastPlacement) { auto dispatcher = Director::getInstance()->getEventDispatcher(); dispatcher->dispatchCustomEvent(EVT_LAST_TILE_HAS_BEEN_PLACED, placement); if (Game::getInstance()->isInitialTurn()) { Game::getInstance()->finishCurrentTurn(); } } }); roomSprite->runAction(Sequence::create(delay, animationStarted, easeMove, animationEnded, NULL)); delayTime += PLACE_ROOM_DURATION; zOrder--; } } }
void DungeonLayer::characterMovedToLocation(CharacterDiceSprite* sprite, Vec2 location) { this->_resetCharacterMoveState(); auto newCoordinate = PositionUtil::coordinateForPosition(location); Game::getInstance()->characterMovedTo(newCoordinate); auto oldRoomSprite = (DungeonRoomSprite*) sprite->getParent(); auto newRoomSprite = (DungeonRoomSprite*) this->getRoomSpriteForCharacterCoordinate(); if (oldRoomSprite && newRoomSprite) { auto oldPosition = oldRoomSprite->convertToWorldSpace(sprite->getPosition()); auto newPosition = newRoomSprite->convertToNodeSpace(oldPosition); sprite->retain(); sprite->removeFromParent(); newRoomSprite->addChild(sprite); sprite->release(); newRoomSprite->setLocalZOrder(DUNGEON_ROOM_WITH_CHAR_Z_ORDER + OVERLAY_Z_ORDER); oldRoomSprite->setLocalZOrder(DUNGEON_ROOM_Z_ORDER + OVERLAY_Z_ORDER); sprite->setPosition(newPosition); oldRoomSprite->adjustChildren(); newRoomSprite->adjustChildren(); auto delay = DelayTime::create(MOVE_DICE_DURATION); auto restoreZOrder = CallFunc::create([=]{ newRoomSprite->setLocalZOrder(DUNGEON_ROOM_WITH_CHAR_Z_ORDER); oldRoomSprite->setLocalZOrder(DUNGEON_ROOM_Z_ORDER); }); this->runAction(Sequence::create(delay, restoreZOrder, NULL)); } }
void Bone::updateZOrder() { if (_dataVersion >= VERSION_COMBINED) { int zorder = _tweenData->zOrder + _boneData->zOrder; setLocalZOrder(zorder); } else { setLocalZOrder(_tweenData->zOrder); } }
/** @brief お絵かき開始 @param[in] なし @return なし */ void RelayGameLayer::_StartDrawing() { m_isAnimation = true; auto canvas = this->getChildByName("Canvas"); auto endFunc = CallFunc::create([&, this, canvas]() { // フェーズ移行 m_flowPhase = FlowPhase::PLAY; m_isAnimation = false; // ボード非表示 this->getChildByName("BigBoard")->setVisible(false); // ボタン表示 this->getChildByName("MenuButtons")->setVisible(true); // 上ラベル this->_UpdateTimeLabel(); canvas->setLocalZOrder(ZOrder::CANVAS); // 戻る進む //auto menu = this->getChildByName("MenuLastButtons"); //menu->setVisible(true); }); canvas->setLocalZOrder(this->getChildByName("SmallBoard")->getLocalZOrder() + 1); canvas->runAction( Sequence::create( Show::create(), ReverseTime::create(PageTurn3D::create(1.f, Size(24, 32))), endFunc, nullptr ) ); m_touchPoints.push_back(page_t()); // 戻るボタン表示 //this->getChildByName("MenuButtons")->getChildByName("BackButton")->setVisible(true); //------------------------------------- // 変数初期化 m_phase = Phase::ANNOUNCE; // アニメーションフェーズ m_nowDrawer = 0; // 描く人 m_isCounting = false; m_oneDrawTime = 0.f; // タッチ時間初期化 m_nonTouchTime = 0.f; // タッチしていない時間初期化 }
bool IntroScene::init() { //super init if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); ///////////////////////////////////////////////////// AudioEngine::getInstance()->createLoop("bgm/intro.ogg"); auto sceneNode = cocostudio::SceneReader::getInstance()->createNodeWithSceneFile("introScene.json"); addChild(sceneNode); auto UINode = sceneNode->getChildByTag(10003); auto UIComponent = (cocostudio::ComRender*) UINode->getComponent("GUIComponent"); auto UIlayer = UIComponent->getNode(); auto background = dynamic_cast<ImageView*>(UIlayer->getChildByTag(INTROSCENE_BG)); auto buttonStart = dynamic_cast<Button*>(UIlayer->getChildByTag(INTROSCENE_START)); auto title = dynamic_cast<ImageView*>(UIlayer->getChildByTag(INTROSCENE_ECHO)); title->runAction(RepeatForever::create(Sequence::create(FadeIn::create(3), FadeOut::create(3), NULL))); buttonStart->runAction(RepeatForever::create(Sequence::create(FadeIn::create(1), DelayTime::create(1), FadeOut::create(1), NULL))); buttonStart->addTouchEventListener(this, toucheventselector(IntroScene::touchEvent)); auto logo = Sprite::create("introSceneUI/logo.png"); logo->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y)); logo->setLocalZOrder(1); sceneNode->addChild(logo); logo->runAction(Sequence::create(DelayTime::create(1), CallFunc::create(CC_CALLBACK_0(IntroScene::playIntro, this)), FadeOut::create(2), NULL));//logoÇл»ÌØЧ return true; }
void Rolelayer::playAnimationByname(Node *bs,std::string jsonfile,std::string filename,std::string animationName,bool isloop,bool isscal,Vec2 p){ auto armature =Armature::create(filename.c_str()); if(isloop==true){ armature->getAnimation()->play(animationName.c_str(),-1,1); } armature->removeFromParentAndCleanup(true); armature->setPosition(p); armature->setTag(100); armature->setLocalZOrder(100); bs->addChild(armature); //xx_sly if(getUnitTypeByArmatureName(filename) == unittype_Actor){ auto yinying_img=Sprite::create(hero_yingyin_img); //(hero_yingyin_img); yinying_img->setAnchorPoint(Vec2(0.5,0)); yinying_img->setScaleX(1.5f); yinying_img->setPosition(Vec2(p.x,-armature->getContentSize().height/2+40)); bs->addChild(yinying_img); // xkongz.xx_action=armature; // xkongz.time=0; // xkongz.xxtime[0]=20; // xkongz.xxtime[1]=1; // xkongz.change=false; } else if(getUnitTypeByArmatureName(filename) == unittype_Pet){ auto yinying_img=Sprite::create(hero_yingyin_img); //(hero_yingyin_img); yinying_img->setAnchorPoint(Vec2(0.5,0)); yinying_img->setPosition(Vec2(p.x,-armature->getContentSize().height/2+30)); bs->addChild(yinying_img); } else if(getUnitTypeByArmatureName(filename) == unittype_Magic){ armature->setScale(0.5f); } }
void Widget::copyProperties(Widget *widget) { setEnabled(widget->isEnabled()); setVisible(widget->isVisible()); setBright(widget->isBright()); setTouchEnabled(widget->isTouchEnabled()); _touchPassedEnabled = false; setLocalZOrder(widget->getLocalZOrder()); setTag(widget->getTag()); setName(widget->getName()); setActionTag(widget->getActionTag()); _ignoreSize = widget->_ignoreSize; _size = widget->_size; _customSize = widget->_customSize; copySpecialProperties(widget); _sizeType = widget->getSizeType(); _sizePercent = widget->_sizePercent; _positionType = widget->_positionType; _positionPercent = widget->_positionPercent; setPosition(widget->getPosition()); setAnchorPoint(widget->getAnchorPoint()); setScaleX(widget->getScaleX()); setScaleY(widget->getScaleY()); setRotation(widget->getRotation()); setRotationX(widget->getRotationX()); setRotationY(widget->getRotationY()); setFlipX(widget->isFlipX()); setFlipY(widget->isFlipY()); setColor(widget->getColor()); setOpacity(widget->getOpacity()); setCascadeOpacityEnabled(widget->isCascadeOpacityEnabled()); setCascadeColorEnabled(widget->isCascadeColorEnabled()); onSizeChanged(); }
void MoveController::initSprite(Vec2 center) { auto sprite = cocos2d::Sprite::create(); sprite->setPosition(center); //todo calc Z correctly sprite->setLocalZOrder(2); map->addChild(sprite); //todo read animation from config cocos2d::Vector<cocos2d::SpriteFrame *> animFrames(10); for (int i = 0; i < 10; ++i) { auto frame = cocos2d::SpriteFrame::create( "data/characters/knight/IDLE/0.png", cocos2d::Rect(i * 67, 0, 67, 137), false, Vec2::ZERO, cocos2d::Size(Vec2(67, 137))); animFrames.pushBack(frame); } auto animation = cocos2d::Animation::createWithSpriteFrames(animFrames, 0.1f); auto animate = cocos2d::Animate::create(animation); auto repeatAnimate = cocos2d::RepeatForever::create(animate); std::string vs = "attribute vec4 a_position;\ attribute vec4 a_color;\ \ varying vec4 v_fragmentColor;\ \ uniform vec4 u_color;\ \ void main()\ {\ gl_Position = CC_MVPMatrix * a_position;\ v_fragmentColor = a_color * u_color;\ }";
void Level::_buildFloor(const cocos2d::Vec2& coordinate) { auto floorSprite = cocos2d::Sprite::createWithSpriteFrameName("floor.png"); floorSprite->setAnchorPoint(cocos2d::Vec2::ZERO); floorSprite->setPosition(_projector->coordinateToPoint(coordinate) - cocos2d::Vec2(0, 12)); floorSprite->setLocalZOrder(_projector->coordinateToZOrder(coordinate)); _stage->addChild(floorSprite); }
/** @brief キャンバス初期化 @param[in] なし @return なし */ void RelayGameLayer::_NextCanvas() { auto oldCanvas = this->getChildByName("Canvas"); //----------------------------------------------------- // 新規キャンバスを既存キャンバスの下に auto layerCanvas = LayerCanvas::create(); if (layerCanvas && layerCanvas->createSprite("canvas.png")) { this->addChild(layerCanvas, oldCanvas->getLocalZOrder()-1, "NewCanvas"); layerCanvas->setPosition(oldCanvas->getPosition()); //layerCanvas->setVisible(false); } //----------------------------------------------------- // DrawNode auto drawNode = DrawNode::create(); { drawNode->setAnchorPoint(Vec2::ZERO); auto canvas = layerCanvas->getSprite(); //layerCanvas->addChild(m_pDrawNode, 1); drawNode->setPosition( -(layerCanvas->getPositionX() - layerCanvas->getAnchorPoint().x*layerCanvas->getContentSize().width), -(layerCanvas->getPositionY() - layerCanvas->getAnchorPoint().y*layerCanvas->getContentSize().height) ); canvas->addChild(drawNode, 1, "DrawNode"); } oldCanvas->runAction( Sequence::create( PageTurn3D::create(0.5f, Size(24.f, 32.f)), CallFunc::create([this, oldCanvas, layerCanvas, drawNode](){ // キャンバスの入れ替え //this->removeChild(oldCanvas); oldCanvas->setName(oldCanvas->getName() + std::to_string(m_nowPage)); oldCanvas->setVisible(false); layerCanvas->setLocalZOrder(ZOrder::CANVAS); layerCanvas->setName("Canvas"); //-------------------------- // DrawNode入れ替え //m_pDrawNode->release(); m_pDrawNode = drawNode; //-------------------------- // ページ追加 m_nowPage++; m_touchPoints.push_back(page_t()); m_nowLine = 0; //-------------------------- // 解答ボックス初期化 m_pEditBox->setText(""); }), nullptr ) ); }
void DungeonLayer::characterWillMove(CharacterDiceSprite* sprite) { auto characterRoom = this->getRoomSpriteForCharacterCoordinate(); characterRoom->setLocalZOrder(DUNGEON_ROOM_WITH_CHAR_Z_ORDER); Vector<Node*> visibleNodes; visibleNodes.pushBack(characterRoom); visibleNodes.pushBack(this->_getRoomSpritesForAdjacentCharacterCoordinate()); OverlayUtil::addOverlay(visibleNodes, this, -this->getParent()->getPosition()); }
bool LittleSnake::init() { if (!Layer::init()) { return false; } srand(time(NULL)); directorSize = Director::getInstance()->getVisibleSize(); directorOrigin = Director::getInstance()->getVisibleOrigin(); log("Director visible size: width->%d height->%d", (int)directorSize.width,(int) directorSize.height); log("Director origin: x->%d y->%d", (int)directorOrigin.x, (int)directorOrigin.y); auto background = Sprite::create("background.png"); background->setPosition(directorOrigin.x + background->getBoundingBox().size.width/2 + 40, directorOrigin.y + directorSize.height/2); // boundary width background->setLocalZOrder(-999); this->addChild(background); auto backgroundBoundary = Sprite::create("BackgroundBoundary.png"); backgroundBoundary->setPosition(directorOrigin.x + backgroundBoundary->getBoundingBox().size.width/2, directorOrigin.y + directorSize.height/2); backgroundBoundary->setZOrder(-999); this->addChild(backgroundBoundary); loadSnakeFaces(); addSnakeFacesAsChild(); auto touchListener = EventListenerTouchOneByOne::create(); touchListener->setSwallowTouches(true); touchListener->onTouchBegan = CC_CALLBACK_2(LittleSnake::onTouchBegan, this); touchListener->onTouchMoved = CC_CALLBACK_2(LittleSnake::onTouchMoved, this); touchListener->onTouchEnded = CC_CALLBACK_2(LittleSnake::onTouchEnded, this); touchListener->onTouchCancelled = CC_CALLBACK_2(LittleSnake::onTouchCancelled, this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, this); auto menuItem1 = MenuItemFont::create("Go Back", CC_CALLBACK_1(LittleSnake::exitScene, this)); auto menuItem2 = MenuItemFont::create("Play Again", CC_CALLBACK_1(LittleSnake::playAgain, this)); menuItem1->setPosition(directorSize.width / 3 * 1, directorSize.height / 3 * 1); menuItem2->setPosition(directorSize.width / 3 * 2, directorSize.height / 3 * 1); menuItem1->setFontNameObj("fonts/Showcard Gothic.ttf"); // not refactoring right now menuItem2->setFontNameObj("fonts/Showcard Gothic.ttf"); menuItem1->setFontSizeObj(100); menuItem2->setFontSizeObj(100); menuItem1->setColor(Color3B(133, 96, 168)); // same as the menu font. not refactoring now. menuItem2->setColor(Color3B(133, 96, 168)); menu = Menu::create(menuItem1, menuItem2, NULL); menu->setPosition(0, 0); menu->setVisible(false); menu->setLocalZOrder(999); this->addChild(menu); return true; }
void Level::_buildGravel(const cocos2d::Vec2& coordinate) { _physicsWorld->setBody(coordinate, TileBody::OUTER_BOX, 4); auto gravelSprite = cocos2d::Sprite::createWithSpriteFrameName("gravel.png"); gravelSprite->setAnchorPoint(cocos2d::Vec2::ZERO); gravelSprite->setPosition(_projector->coordinateToPoint(coordinate) - cocos2d::Vec2(0, 12)); gravelSprite->setLocalZOrder(_projector->coordinateToZOrder(coordinate)); _stage->addChild(gravelSprite); }
bool MessageServer::init() { if (!Layer::init()) return false; _messageItems.reserve(10); setLocalZOrder(ZORDER_MESSAGE); _instance = this; return true; }
void Magicup::drawMaojitishi(){ auto pmj=Sprite::create("UI_jiaose_anniu_shengji_manji.png"); pmj->setPosition(Vec2(back_hero->getPositionX(),pmj->getContentSize().height/2)); addChild(pmj); auto mj_m1=Label::createWithSystemFont(FX::StringsMap::getValue("magicyimaoji"),"minijiankatong.ttf",24,Size(180,0),TextHAlignment::CENTER); mj_m1->setAnchorPoint(Vec2(0.5,0.5)); mj_m1->setColor(Color3B(184,69,13)); mj_m1->setPosition(Vec2(pmj->getContentSize().width/2,pmj->getContentSize().height*0.45)); mj_m1->setLocalZOrder(100); pmj->addChild(mj_m1); auto mj2=Label::createWithSystemFont(FX::StringsMap::getValue("magicyimaoji"),"minijiankatong.ttf",24,Size(180,0),TextHAlignment::CENTER); mj2->setAnchorPoint(Vec2(0.5,0.5)); mj2->setPosition(Vec2(pmj->getContentSize().width/2,pmj->getContentSize().height*0.45-2)); mj2->setLocalZOrder(90); pmj->addChild(mj2); }
void LittleSnake::addSnakeBodySpriteBody(int row, int col) { auto snakeBody = Sprite::create("SnakeBody.png"); snakeBody->setLocalZOrder(1); this->addChild(snakeBody); auto *snakeBodyBody = new SpriteBody(); snakeBodyBody->sprite = snakeBody; snakeBodies.push_back(snakeBodyBody); snakeBodyBody->row = row; snakeBodyBody->col = col; }
void DungeonLayer::_handleMonstersFinishedMoving(EventCustom* event) { if (!_modifiedRooms.empty()) { auto delay = 0.f; auto lastModifiedRoom = _modifiedRooms.at(_modifiedRooms.size() - 1); for (auto room : _modifiedRooms) { auto coordinate = room->getCoordinate(); auto roomSprite = this->_getRoomSpriteForCoordinate(coordinate); auto delayTime = DelayTime::create(delay); auto callFunc = CallFunc::create([=]{ auto center = PositionUtil::visibleCenter(); auto cameraPosition = center - roomSprite->getPosition(); auto cameraMove = MoveTo::create(ADJUST_CAMERA_DURATION, cameraPosition); auto adjustCamera = EaseOut::create(cameraMove, 2.f); auto delayToMove = DelayTime::create(ADJUST_CAMERA_DURATION - 0.2); auto showMonsterAnimation = CallFunc::create([=]{ roomSprite->adjustChildren(); if (room == lastModifiedRoom) { auto delayAfterAdjust = DelayTime::create(MOVE_DICE_DURATION); auto notififyLastRoomAdjusted = CallFunc::create([=]{ this->_consumeMonsterRoomDatas(); Game::getInstance()->finishCurrentTurn(); _modifiedRooms.clear(); }); this->runAction(Sequence::create(delayAfterAdjust, notififyLastRoomAdjusted, NULL)); } }); auto waitAndMoveMonster = Sequence::create(delayToMove, showMonsterAnimation, NULL); this->getParent()->runAction(Spawn::create(adjustCamera, waitAndMoveMonster, NULL)); }); this->runAction(Sequence::create(delayTime, callFunc, NULL)); delay += MOVE_DICE_DURATION + ADJUST_CAMERA_DURATION; } for (auto child : this->getChildren()) { child->setLocalZOrder(DUNGEON_ROOM_Z_ORDER); } auto characterRoomSprite = this->getRoomSpriteForCharacterCoordinate(); characterRoomSprite->setLocalZOrder(DUNGEON_ROOM_WITH_CHAR_Z_ORDER); } }
void Level::_buildWall(const cocos2d::Vec2& coordinate) { _physicsWorld->setBody(coordinate, TileBody::OUTER_BOX, 7); int shape = getWallShape(coordinate); char spriteFrameName[14]; sprintf(spriteFrameName, "wall-%04d.png", shape + 1); auto wallSprite = cocos2d::Sprite::createWithSpriteFrameName(spriteFrameName); wallSprite->setAnchorPoint(cocos2d::Vec2::ZERO); wallSprite->setPosition(_projector->coordinateToPoint(coordinate) - cocos2d::Vec2(0, 12)); wallSprite->setLocalZOrder(_projector->coordinateToZOrder(coordinate) + WALL_Z_ORDER); _stage->addChild(wallSprite); }
void GameplayLayer::_handleActionDiceDragEnded(EventCustom* event) { auto data = (ActionDiceDragData*) event->getUserData(); auto sprite = data->getSprite(); auto dice = sprite->getDice(); sprite->setLocalZOrder(sprite->getLocalZOrder() - DRAG_Z_ORDER_DELTA); OverlayUtil::removeOverlay(this); auto handler = DiceDragHandlerFactory::getHandler(dice); bool docked = handler->dragEnded(data, this, this->_getDockableContainer()); if (!docked) { sprite->restoreOriginalPosition(); } }
void SoldierLyzc::doMove() { if (getTarget()->getStatus() == E_STATUS_DEAD) { setStatus(e_battle_status_idle); m_direction = 0; return; } if (checkDistance()) { //setStatus(e_battle_tatus_attack); double begin = getBeginDegree(); double end = getEndDegree(); _currentIndex = getIndexFormDegree(begin); _degreeIndex = getIndexFormDegree(end); rotate(); } else { Coord next = getNextCoord(); if (next.x == -1 && next.y == -1) { //setStatus(e_battle_tatus_attack); double begin = getBeginDegree(); double end = getEndDegree(); _currentIndex = getIndexFormDegree(begin); _degreeIndex = getIndexFormDegree(end); rotate(); } else { //checkBeAttack(); if (setMoveDirection(next)) { runWalkAction(); } auto sc = SoldierConfig::getSoldierConfig(getType()); auto move = MoveTo::create(1/sc->move_speed, MapHelper::convertCoordToPoint(next)); runAction(Sequence::create(move, CallFunc::create(CC_CALLBACK_0(Soldier::doMove,this)), NULL)); setLocalZOrder(next.y); setCoord(next); } } }
void EffectSystem::showEffectAttack(std::shared_ptr<connection_object> data) { int castleID = data->getInt("castle_id"); auto castle = &world->getTagManager()->getEntity(cocos2d::StringUtils::format("castle_%d", castleID)); auto effect = &world->getTagManager()->getEntity("attack_effect_entity"); auto pos = getComponent<PositionComponent>(*castle)->getPosition(); getComponent<PositionComponent>(*effect)->setPosition(pos); auto node = getComponent<RenderComponent>(*effect); { auto skeleton = spine::SkeletonAnimation::createWithFile("spine/sword2.json", "spine/sword2.atlas"); skeleton->addAnimation(0, "sword_fight", false); skeleton->setLocalZOrder(100); skeleton->setPosition(cocos2d::Vec2(0, 20)); skeleton->setScale(1.4f); skeleton->runAction(cocos2d::Sequence::create(cocos2d::DelayTime::create(.2f), cocos2d::FadeOut::create(.8f), cocos2d::RemoveSelf::create(), nullptr)); node->getView()->addChild(skeleton); } }
void Widget::copyProperties(Widget *widget) { setEnabled(widget->isEnabled()); setVisible(widget->isVisible()); setBright(widget->isBright()); setTouchEnabled(widget->isTouchEnabled()); setLocalZOrder(widget->getLocalZOrder()); setTag(widget->getTag()); setName(widget->getName()); setActionTag(widget->getActionTag()); _ignoreSize = widget->_ignoreSize; this->setContentSize(widget->_contentSize); _customSize = widget->_customSize; _sizeType = widget->getSizeType(); _sizePercent = widget->_sizePercent; _positionType = widget->_positionType; _positionPercent = widget->_positionPercent; setPosition(widget->getPosition()); setAnchorPoint(widget->getAnchorPoint()); setScaleX(widget->getScaleX()); setScaleY(widget->getScaleY()); setRotation(widget->getRotation()); setRotationSkewX(widget->getRotationSkewX()); setRotationSkewY(widget->getRotationSkewY()); setFlippedX(widget->isFlippedX()); setFlippedY(widget->isFlippedY()); setColor(widget->getColor()); setOpacity(widget->getOpacity()); _touchEventCallback = widget->_touchEventCallback; _touchEventListener = widget->_touchEventListener; _touchEventSelector = widget->_touchEventSelector; _clickEventListener = widget->_clickEventListener; _focused = widget->_focused; _focusEnabled = widget->_focusEnabled; _propagateTouchEvents = widget->_propagateTouchEvents; copySpecialProperties(widget); Map<int, LayoutParameter*>& layoutParameterDic = widget->_layoutParameterDictionary; for (auto iter = layoutParameterDic.begin(); iter != layoutParameterDic.end(); ++iter) { setLayoutParameter(iter->second->clone()); } }
void Widget::copyProperties(Widget *widget) { setEnabled(widget->isEnabled()); setVisible(widget->isVisible()); setBright(widget->isBright()); setTouchEnabled(widget->isTouchEnabled()); setLocalZOrder(widget->getLocalZOrder()); setTag(widget->getTag()); setName(widget->getName()); setActionTag(widget->getActionTag()); _ignoreSize = widget->_ignoreSize; _size = widget->_size; _customSize = widget->_customSize; _sizeType = widget->getSizeType(); _sizePercent = widget->_sizePercent; _positionType = widget->_positionType; _positionPercent = widget->_positionPercent; setPosition(widget->getPosition()); setAnchorPoint(widget->getAnchorPoint()); setScaleX(widget->getScaleX()); setScaleY(widget->getScaleY()); setRotation(widget->getRotation()); setRotationSkewX(widget->getRotationSkewX()); setRotationSkewY(widget->getRotationSkewY()); setFlippedX(widget->isFlippedX()); setFlippedY(widget->isFlippedY()); setColor(widget->getColor()); setOpacity(widget->getOpacity()); _touchEventCallback = widget->_touchEventCallback; _touchEventListener = widget->_touchEventListener; _touchEventSelector = widget->_touchEventSelector; _focused = widget->_focused; _focusEnabled = widget->_focusEnabled; copySpecialProperties(widget); //FIXME:copy focus properties, also make sure all the subclass the copy behavior is correct Map<int, LayoutParameter*>& layoutParameterDic = widget->_layoutParameterDictionary; for (auto iter = layoutParameterDic.begin(); iter != layoutParameterDic.end(); ++iter) { setLayoutParameter(iter->second->clone()); } onSizeChanged(); }
Sprite* PixelMapPartial::CreateSprite() { if( ! m_spritesPull.empty() ) { auto s = m_spritesPull.front(); s->setVisible(true); s->setLocalZOrder(0); m_spritesPull.pop_front(); return s; } else { auto s = Sprite::createWithTexture(getTexture()); s->setAnchorPoint({0, 0}); addChild(s); return s; } }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !LayerColor::initWithColor(Color4B(255,255,255,255)) ) { return false; } // 스프라이트 생성 및 초기화 auto man = Sprite::create("Images/grossini.png"); // 스프라이트 위치 지정 man->setPosition(Vec2(320, 160)); //Layer에 스프라이트 추가+ordering this->addChild(man,2); // 위치지정 : 2층 // 스프라이트 생성 및 초기화 auto woman = Sprite::create("Images/grossinis_sister1.png"); // 스프라이트 위치 지정 woman->setPosition(Vec2(300, 160)); //Layer에 스프라이트 추가+ordering //this->addChild(woman,1);// 위치지정 : 1층 // addChild()후에 스프라이트 위치 지정 (동적 지정) this->addChild(woman); woman->setLocalZOrder(1); /* addChild()시에 순서를 ordeing 하지 않으면 insert한 순으로 밑에 깔리게 된다. 이 순서를 바꾸고싶으면 insert순서를 바꾸거나 ordering을 해야한다. */ return true; }
///selectively copies parts of the given Sprite Sprite* StaticHelpers::duplicateSprite(Sprite *sprite) { Sprite* pRet = Sprite::createWithTexture(sprite->getTexture()); if (sprite->getChildrenCount() > 0) { auto children = sprite->getChildren(); for (auto child : children) { auto spriteChild = dynamic_cast<Sprite*>(child); if (! spriteChild) continue; auto clone = duplicateSprite(spriteChild); // can't set boundingBox //might need to set textureRect, scale, rotation //clone->boundingBox() = spriteChild->boundingBox(); clone->setContentSize(spriteChild->getContentSize()); clone->setPosition(spriteChild->getPosition()); clone->setAnchorPoint(spriteChild->getAnchorPoint()); clone->setLocalZOrder(spriteChild->getLocalZOrder()); clone->setTag(spriteChild->getTag()); pRet->addChild(clone); } } return pRet; }
bool TransformComponent::vInit(const tinyxml2::XMLElement * xmlElement) { if (const auto localZOrderElement = xmlElement->FirstChildElement("LocalZOrder")) { pimpl->m_CachedOperations.emplace_back([localZOrder = localZOrderElement->IntAttribute("Value"), this]() { setLocalZOrder(localZOrder); }); } if (const auto positionElement = xmlElement->FirstChildElement("Position")) { pimpl->m_CachedOperations.emplace_back([position = utilities::XMLToVec2(positionElement), this](){ setPosition(position); }); } if (const auto scaleElement = xmlElement->FirstChildElement("Scale")) { pimpl->m_CachedOperations.emplace_back([scale = scaleElement->FloatAttribute("Value"), this](){ setScale(scale); }); } return true; }
void Widget::copyProperties(Widget *widget) { setEnabled(widget->isEnabled()); setVisible(widget->isVisible()); setBright(widget->isBright()); setTouchEnabled(widget->isTouchEnabled()); _touchPassedEnabled = false; setLocalZOrder(widget->getLocalZOrder()); setTag(widget->getTag()); setName(widget->getName()); setActionTag(widget->getActionTag()); _ignoreSize = widget->_ignoreSize; _size = widget->_size; _customSize = widget->_customSize; copySpecialProperties(widget); _sizeType = widget->getSizeType(); _sizePercent = widget->_sizePercent; _positionType = widget->_positionType; _positionPercent = widget->_positionPercent; setPosition(widget->getPosition()); setAnchorPoint(widget->getAnchorPoint()); setScaleX(widget->getScaleX()); setScaleY(widget->getScaleY()); setRotation(widget->getRotation()); setRotationSkewX(widget->getRotationSkewX()); setRotationSkewY(widget->getRotationSkewY()); setFlippedX(widget->isFlippedX()); setFlippedY(widget->isFlippedY()); setColor(widget->getColor()); setOpacity(widget->getOpacity()); Map<int, LayoutParameter*>& layoutParameterDic = widget->_layoutParameterDictionary; for (auto iter = layoutParameterDic.begin(); iter != layoutParameterDic.end(); ++iter) { setLayoutParameter(iter->second->clone()); } onSizeChanged(); }
void Rolelayer::drawshoplayer(){ layertag=Rolelayertag::right; if(this->getChildByTag(shop_layertag)==nullptr){ shop_layer=Layer::create(); shop_layer->setContentSize(Size(Actual_x,Actual_y)); shop_layer->setTag(shop_layertag); shop_layer->setPosition(Vec2(getContentSize().width,0)); addChild(shop_layer); auto center=Sprite::create(backshop_img); auto top=Sprite::create(shop_img); top->setPosition(Vec2(shop_layer->getContentSize().width-center->getContentSize().width/2, shop_layer->getContentSize().height-top->getContentSize().height/2)); top->setLocalZOrder(100); shop_layer->addChild(top); center->setPosition(Vec2(shop_layer->getContentSize().width-center->getContentSize().width/2, shop_layer->getContentSize().height-top->getContentSize().height-center->getContentSize().height/2+40)); center->setLocalZOrder(90); shop_layer->addChild(center,99); auto sha_img=Sprite::create(shang_img); sha_img->setPosition(Vec2(center->getContentSize().width*0.5,center->getContentSize().height*0.9f)); center->addChild(sha_img); auto list=BaselisttableLayer::create(); list->setMtabletype(Daoju_list,Size(499,105),3,cocos2d::extension::ScrollView::Direction::VERTICAL,TableView::VerticalFillOrder::TOP_DOWN,0); list->ignoreAnchorPointForPosition(false); list->setAnchorPoint(Vec2(0.5f,0.5f)); list->setPosition(Vec2(center->getContentSize().width/2,center->getContentSize().height*0.52)); center->addChild(list); auto xia_img=Sprite::create(shang_img); xia_img->setRotation(180); xia_img->setPosition(Vec2(center->getContentSize().width*0.5,center->getContentSize().height*0.13f)); center->addChild(xia_img); auto dom=MenuItemImage::create(startgame_img,startgame_img,CC_CALLBACK_1(Rolelayer::allCallbackm,this)); dom->setTag(startgame_tag); dom->setPosition(Vec2(center->getPositionX(),dom->getContentSize().height/2)); fillOuty(dom,startgame_img); auto zheye_b=MenuItemImage::create(faihui_img,faihui_img,CC_CALLBACK_1(Rolelayer::allCallbackm,this)); zheye_b->setPosition(Vec2(zheye_b->getContentSize().width/2,zheye_b->getContentSize().height/2)); zheye_b->setTag(zhuye_ftag); fillOuty(zheye_b,faihui_img); auto menu=Menu::create(dom,zheye_b,nullptr); menu->setPosition(Vec2::ZERO); menu->setLocalZOrder(100); shop_layer->addChild(menu); rand_ig=Sprite::create(rand_img); rand_ig->setPosition(Vec2(center->getContentSize().width/2,center->getContentSize().height*0.15)); center->addChild(rand_ig); auto text_rd=Label::createWithSystemFont("1234", "minijiankatong.ttf",24); text_rd->setTag(rand_daojutag); text_rd->setPosition(Vec2(rand_ig->getContentSize().width/2,rand_ig->getContentSize().height/2)); rand_ig->addChild(text_rd); } auto move = MoveTo::create(0.5f, Vec2(Actual_x-shop_layer->getContentSize().width,0)); auto move_ease_inout0 = EaseExponentialOut::create(move); shop_layer->runAction(move_ease_inout0); rand_ig->setVisible(false); }
void Rolelayer::drawCenter(){ float x_width= getDelwithint(200,0); //魔法物 人物 宠物 string hero_str=ImageHelper::getUnitSpriteUIScene(hero.unit.ID)->getName(); auto hero_default=MenuItemImage::create(hero_str,hero_str,CC_CALLBACK_1(Rolelayer::allCallbackm,this)); menus.push_back(hero_default); hero_default->setTag(hero_ab); hero_default->setNormalImage(ImageHelper::getUnitSpriteUIScene(hero.unit.ID)); hero_default->setSelectedImage(ImageHelper::getUnitSpriteUIScene(hero.unit.ID)); //hero_default->setScale(0.85f); hero_default->setAnchorPoint(Vec2(0.5,0.0)); string namekl=hero_default->getName(); hero_default->setPosition(Vec2(getContentSize().width*0.3+x_width,getContentSize().height*0.5)); hero_default->setOpacity(0.0f); Layer* h_l=Layer::create(); h_l->setTag(hero_layer); h_l->setPosition(hero_default->getPosition()); addChild(h_l,1000); jianls.push_back(h_l); string arExportName, armatureName, animationData; getActorInfor(hero.unit.ID, arExportName, armatureName, animationData); playAnimationByname(h_l,"xiaoxiao_NG.ExportJson","xiaoxiao_NG",animationData,true,false,Vec2(hero_default->getContentSize().width/2,50)); //阴影 MenuItemImage* hero_default1=nullptr; Layer* pet_l=nullptr; if(pet.unit.ID!=unitID_None){ pet_l=Layer::create(); pet_l->setTag(pet_layer); string hero_str=pet.unit.imageFile; CCLOG("---->%s",hero_str.c_str()); hero_default1=MenuItemImage::create(hero_str,hero_str,CC_CALLBACK_1(Rolelayer::allCallbackm,this)); hero_default1->setTag(pet_ab); hero_default1->setNormalImage(Sprite::create(hero_str)); hero_default1->setSelectedImage(Sprite::create(hero_str)); hero_default1->setAnchorPoint(Vec2(0.0f,0.0f)); hero_default1->setOpacity(0.0f); string namekl=hero_default1->getName(); float pet_y=hero_default1->getPositionX()+hero_default1->getContentSize().width/2+hero_default1->getContentSize().width/2; float pet_yh=getContentSize().height*0.25; float pet_xh=getContentSize().width*0.1+x_width; // if(pet.unit.ID==unitID_PiPiZhu){ // //animationData="limao"; // pet_y=hero_default1->getPositionX()+hero_default1->getContentSize().width/1.5; // // }else if(pet.unit.ID==unitID_XiXiaoYang ){ // //animationData="xiaoxiong"; // pet_y=hero_default1->getPositionX()+hero_default1->getContentSize().width/2; // // }else if(pet.unit.ID==unitID_BuGuNiao ){ // //animationData="maotouying"; // pet_y=hero_default1->getPositionX()+hero_default1->getContentSize().width/2; // } hero_default1->setPosition(Vec2(pet_xh,pet_yh)); pet_l->setPosition(hero_default1->getPosition()); addChild(pet_l,1000); jianls.push_back(pet_l); menus.push_back(hero_default1); string arExportFilename, armatureName, animationName; getPetInfor(pet.unit.ID,arExportFilename, armatureName, animationName); playAnimationByname(pet_l,arExportFilename,armatureName,animationName,true,false,Vec2(hero_default1->getContentSize().width/2,50)); // // vector<Achieve> allacives=*AchievementHelper::getHelper()->getAllAchievement(); for(auto m:allacives){ bool isfinish=AchievementHelper::getHelper()->getAchieveByID(m.ID)->isOver; bool islq=AchievementHelper::getHelper()->getIsGotAchievement(m.ID); const AchieveSpecialAward* pa= AchievementHelper::getHelper()->getAchieveSpecialAwardInfo(m.ID); if(pa!=nullptr){ if(isfinish==true&&islq==false&&(pa->award_unitID>=unitID_PiPiZhu&&pa->award_unitID<unitID_PetEnd)){ bingbi=1; pet_l->setVisible(false); auto click=Sprite::create("UI_jiesuan_longdan.png"); click->setPosition(Vec2(getContentSize().width*0.3+x_width,getContentSize().height*0.65)); click->setTag(click_tag2); addChild(click); click->setLocalZOrder(1025); achiveId=m.ID; click->runAction(Sequence::create(Shake::create(0.5f,10), MoveTo::create(0.5f,Vec2(94,getContentSize().height*0.60)), ScaleTo::create(0.5f,0), CallFuncN::create(CC_CALLBACK_1(Rolelayer::Movedone,this)), nullptr)); break; } } } } MenuItemImage* hero_default2=nullptr; Layer* magic_l=nullptr; if(magic.unit.ID!=unitID_None){ magic_l=Layer::create(); magic_l->setTag(magic_layer); string magic_name="UI_modian_1.png"; magic_name=__String::createWithFormat("UI_modian_%d.png",magic.level)->getCString(); hero_default2=MenuItemImage::create(magic_name,magic_name,CC_CALLBACK_1(Rolelayer::allCallbackm,this)); hero_default2->setTag(magic_ab); hero_default2->setOpacity(0); if(hero.unit.ID==unitID_Actor2){ hero_default2->setPosition(Vec2((getContentSize().width)*0.15+x_width,getContentSize().height*0.875)); }else{ hero_default2->setPosition(Vec2((getContentSize().width)*0.12+x_width,getContentSize().height*0.875)); } string animationData= CCString::createWithFormat("b_huxi%d", magic.level)->getCString(); magic_l->setPosition(hero_default2->getPosition()); addChild(magic_l,1000); jianls.push_back(magic_l); menus.push_back(hero_default2); playAnimationByname(magic_l,"book_ui.ExportJson","book_ui",animationData,true,false,Vec2(hero_default2->getContentSize().width/2,0)); } auto menu0=Menu::create(hero_default2,hero_default,hero_default1,nullptr); menu0->setPosition(Vec2::ZERO); menu0->setTag(menu_zb0); addChild(menu0,1000); }