// ==== fonctions pour charger la physique avant chaque début de level (tour + ennemis + bonus vies)
void loadPhysicsNormal(){
	initPhysics();
	// choisir aleatoirement quels etage ont une plateforme mobile et les initialiser (etage 0 a une plateforme obligatoirement)
	g_Plateforme[0] = NULL;
	initPlateform(0,((rand()/(double)RAND_MAX)*0.8f+4.2f),0);
	for(int i=1; i<nb_Etages; i++){
		g_Plateforme[i] = NULL;
		etageAvecPlateforme[i] = (int)(rand() % 2);//une chance sur 2 d'avoir une plateforme
		if(etageAvecPlateforme[i] ==0){
			float anglePlat =  ( rand()/(double)RAND_MAX ) * 0.8f + 4.2f;
			initPlateform(i,anglePlat,i);
		}
	}
	//remise à zero des ennemis
	for(int i=0; i<12; i++){
		for(int j=0; j<21; j++){
			g_Enemy[i][j] = NULL;
		}
	}
	createPhysicsOnMesh(nb_Etages);
	//creation des bonus vie
	for(int i=0; i<nb_BonusVie; i++){
		initObjets(tilesVies[i],etagesVies[i],i);
	}
	for(int i=nb_BonusVie; i<4; i++){
		g_ItemsState[i]=false;
	}
	//creation des ennemis
	for (int et=0; et<nb_Etages; et++){
		if(et==0 || et==3 || et==6 || et==9){
			for(int i=0; i<8; i++){
				if(tilesEnnemis[0][i]>0){
					// test pour ne pas mettre d'ennemi sur la plateforme mouvante
					if(!(etageAvecPlateforme[et] ==0 && (tilesEnnemis[0][i] == 10 |  tilesEnnemis[0][i] == 9))){
						initEnemy(tilesEnnemis[0][i],et);
						getInitialEnemiesPositions(g_Enemy[et][tilesEnnemis[0][i]],et,tilesEnnemis[0][i]);
						behaviors[et][tilesEnnemis[0][i]] = behaviorsEnnemis[0][i];
					}
				}
			}
		}else{
			int alea = (int)((rand() % (NUMBER_REPARTITIONS)));
			std::cerr<<"num alea = "<<alea<<std::endl;
			for(int i=0; i<8; i++){
				if(tilesEnnemis[0][i]>0){
					// test pour ne pas mettre d'ennemi sur la plateforme mouvante
					if(!(etageAvecPlateforme[et] ==0 && (tilesEnnemis[0][i] == 10 |  tilesEnnemis[0][i] == 9))){
						initEnemy(tilesEnnemis[alea][i],et);
						getInitialEnemiesPositions(g_Enemy[et][tilesEnnemis[alea][i]],et,tilesEnnemis[0][i]);
						behaviors[et][tilesEnnemis[0][i]] = behaviorsEnnemis[alea][i];
					}
				}
			}
		}
	}
	g_Enemy[0][1] = NULL;
	initPlayer(125*cos(4*M_PI/40),125*sin(4*M_PI/40),16);
	initAnimatedMesh();
	if(!menuDroite){beginTime = milliseconds();}
}
Example #2
0
bool GameEnemy::init()
{
	if (!CCLayer::init())
		return false;
	initEnemy();
	return true;
}
Example #3
0
void
Game2D::
start (){
    init ();

    initShip ();

    initEnemy ();
}
/**
 * Constructor
 */
E_AdjacentShooter::E_AdjacentShooter(int id, int gridX, int gridY, int groupID) {

	//Call parent init method
	initEnemy(id, gridX, gridY, groupID);

	//Start in wander state
	setState(new ES_Wander(this));

	facing = DOWN;
}
Example #5
0
//TliedMap额外的初始化方法
void GameMap::extraInit()
{
	//开启各个图层的纹理抗锯齿
	enableAnitiAliasForEachLayer();
	//初始化各层对象
	floorLayer = this->layerNamed("floor");
	wallLayer = this->layerNamed("wall");
	itemLayer = this->layerNamed("item");
	doorLayer = this->layerNamed("door");

	initEnemy();
	initObject();
}
E_ChainClown::E_ChainClown(int id, int x, int y, int groupID) 
{	
	//Call parent's init function
	initEnemy(id, x, y, groupID);

	//Always wandering
	setState(new ES_Wander(this));

	xClown=x*64+32;
	yClown=y*64+32;
	xClownVel=0.0;
	yClownVel=0.0;
}
Example #7
0
E_Ranged::E_Ranged(int id, int x, int y, int groupID) {

	//Call parent function to initialize enemy info
	initEnemy(id, x, y, groupID);

	//Start in the wander state
	setState(new ES_Wander(this));
	
	 timeStartedRangedAttack = 0.0;
	usingRangedAttack = false;
	hasRangedAttack = true;

}
Example #8
0
bool GChapterOneLayer::init()
{
	if (!CCLayer::init())
	{
		return false;
	}
	IsKillBoss=false;
	_mapMaxNum=3;
	_mapCurrentNum=1;
	_tileMapSizex=(float)1/2;
	strcpy(mapdata,"Map1_");
	initPlayer();
	initTileMap();
	initEnemy();
	return true;
}
Example #9
0
/** 
 * Constructor
 */
E_Floater::E_Floater(int id, int gridX, int gridY, int groupID) 
{
	//Call parent init function
	initEnemy(id, gridX, gridY, groupID);

	//Start in the wander state
	setState(new ES_Wander(this));

	dealsCollisionDamage = false;
	facing = LEFT;
	shadowOffset = 25.0;
	lastDirChange = 0.0;
	dirChangeDelay = 0.0;
	angle = 0;
	firstFrame = true;
}
E_BombGenerator::E_BombGenerator(int id, int x, int y, int groupID) {
	
	//Call parent's init function
	initEnemy(id, x, y, groupID);

	//Doesn't use framework states
	currentState = NULL;

	bombSpawnAnimation = new hgeAnimation(*smh->resources->GetAnimation("bombSpawn"));
	bombSpawnAnimation->SetFrame(0);

	bombEyesGlowAnimation = new hgeAnimation(*smh->resources->GetAnimation("bombEyesGlow"));
	bombEyesGlowAnimation->SetFrame(0);

	bombState = BOMB_GENERATOR_WAITING;
	bombSize = 0.1;

	dealsCollisionDamage = false;
	smh->environment->collision[gridX][gridY] = UNWALKABLE;

}
//初期化
bool GameLayer::init(int level)
{
    if (!Layer::init())
        return false;
    
    // シングルタップイベントの取得
    auto touchListener = EventListenerTouchOneByOne::create();
    touchListener->setSwallowTouches(_swallowsTouches);
    touchListener->onTouchBegan = CC_CALLBACK_2(GameLayer::onTouchBegan, this);
    touchListener->onTouchMoved = CC_CALLBACK_2(GameLayer::onTouchMoved, this);
    touchListener->onTouchEnded = CC_CALLBACK_2(GameLayer::onTouchEnded, this);
    touchListener->onTouchCancelled = CC_CALLBACK_2(GameLayer::onTouchCancelled, this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);

    _level = level; //レベルの保持
    
    initBackground(); //背景の初期化
    initBalls(); //ボールの初期表示
    initEnemy(); //敵の表示
    initMembers(); //メンバーの表示
    initLevelLayer(); //レベル表示レイヤーの表示
    
    return true;
}