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));
  }
}
Пример #3
0
void Bone::updateZOrder()
{
    if (_dataVersion >= VERSION_COMBINED)
    {
        int zorder = _tweenData->zOrder + _boneData->zOrder;
        setLocalZOrder(zorder);
    }
    else
    {
        setLocalZOrder(_tweenData->zOrder);
    }
}
Пример #4
0
/**
	@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;			// タッチしていない時間初期化
}
Пример #5
0
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;
}
Пример #6
0
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);
	}
}
Пример #7
0
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();
}
Пример #8
0
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;\
  }";
Пример #9
0
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);
}
Пример #10
0
/**
	@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());
}
Пример #12
0
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;
}
Пример #13
0
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);
}
Пример #14
0
bool MessageServer::init()
{
	if (!Layer::init()) return false;
	_messageItems.reserve(10);
	setLocalZOrder(ZORDER_MESSAGE);

	_instance = this;

	return true;
}
Пример #15
0
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); 

}
Пример #16
0
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);
  }
}
Пример #18
0
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();
  }
}
Пример #20
0
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);
		}
	}
}
Пример #21
0
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); }
}
Пример #22
0
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());
    }
}
Пример #23
0
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();
}
Пример #24
0
 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;
   }
 }
Пример #25
0
// 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;
}
Пример #26
0
///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;
}
Пример #27
0
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;
}
Пример #28
0
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();
}
Пример #29
0
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);
}
Пример #30
0
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);

}