Exemple #1
0
int check_intersect(struct CaveRoom* cr1, struct CaveRoom* cr2)
{
	Pos2 dst;
	pos_sub(cr2->origin, cr1->origin, &dst);
	float angle = pos_angle_rel(dst);
	float addAngle = 0.0f;
	while(addAngle < M_PI/2.0f)
	{
		cr1->rotation + addAngle;
		addAngle += 0.1f;
	}
}
_Bool GetNodeValue(char *sMessage, char *sNodeName, char *sNodeValue){
	
	sprintf(strHead,"<%s>",sNodeName);
	sprintf(strTail,"</%s>",sNodeName);
	
	nHead=pos_sub(sMessage,strHead);
	nTail=pos_sub(sMessage,strTail);

	if((-1==nHead)||(-1==nTail))
	{
		return FALSE;
	}

	nStart = nHead+strlen(strHead);
	if(nStart>nTail)
	{
		return FALSE;
	}
	substring(sNodeValue,sMessage,nStart,nTail);
	return TRUE;
}
Exemple #3
0
// generate a cave room from a random generator
void gen_cave_room(struct CaveRoom* cr, struct CaveRoomGenerator caveGen)
{
	cr->exits = NULL;
	
	cr->origin.x = 0;
	cr->origin.y = 0;
	
	cr->radius = ((float)rand()/(float)RAND_MAX)*(caveGen.max_radius-caveGen.min_radius)+caveGen.min_radius;
	cr->rotation = ((float)rand()/(float)RAND_MAX)*(caveGen.minRot-caveGen.maxRot)+caveGen.minRot;
	
	pos_cpy(caveGen.max_trig_effect, &(cr->trig_effect));
	pos_sub(cr->trig_effect, caveGen.min_trig_effect, &(cr->trig_effect));
	pos_mul(cr->trig_effect, (float)rand()/(float)RAND_MAX, &(cr->trig_effect));
	pos_add(cr->trig_effect, caveGen.min_trig_effect, &(cr->trig_effect));
	pos_print(cr->trig_effect);
	
	pos_cpy(caveGen.max_trig_period, &(cr->trig_period));
	pos_sub(cr->trig_period, caveGen.min_trig_period, &(cr->trig_period));
	pos_mul(cr->trig_period, (float)rand()/(float)RAND_MAX, &(cr->trig_effect));
	pos_add(cr->trig_period, caveGen.min_trig_period, &(cr->trig_period));
	pos_flr(cr->trig_period, &(cr->trig_period));
}