Example #1
0
	SwordEffect::SwordEffect(EyeCandy* _base, bool* _dead, Vec3* _start,
		Vec3* _end, const SwordType _type, const Uint16 _LOD)
	{
		if (EC_DEBUG)
			std::cout << "SwordEffect (" << this << ") created (" << _type
				<< ")." << std::endl;
		base = _base;
		dead = _dead;
		pos = _start;
		start = _start;
		end = _end;
		type = _type;
		bounds = NULL;
		mover = new ParticleMover(this);

		switch (type)
		{
			case SERPENT:
			{
				color[0] = 0.6;
				color[1] = 0.8;
				color[2] = 0.3;
				texture = EC_VOID;
				break;
			}
			case CUTLASS:
			{
				color[0] = 1.0;
				color[1] = 1.0;
				color[2] = 1.0;
				texture = EC_INVERSE;
				break;
			}
			case EMERALD_CLAYMORE:
			{
				color[0] = 0.3;
				color[1] = 1.0;
				color[2] = 0.3;
				texture = EC_CRYSTAL;
				break;
			}
			case SUNBREAKER:
			{
				color[0] = 1.0;
				color[1] = 0.8;
				color[2] = 0.3;
				texture = EC_VOID;
				break;
			}
			case ORC_SLAYER:
			{
				color[0] = 1.0;
				color[1] = 0.1;
				color[2] = 0.1;
				texture = EC_WATER;
				break;
			}
			case EAGLE_WING:
			{
				color[0] = 0.7;
				color[1] = 1.0;
				color[2] = 1.0;
				texture = EC_INVERSE;
				break;
			}
			case JAGGED_SABER:
			{
				color[0] = 1.0;
				color[1] = 0.3;
				color[2] = 1.0;
				texture = EC_TWINFLARE;
				break;
			}
			case SWORD_OF_FIRE:
			{
				color[0] = 1.0;
				color[1] = 0.6;
				color[2] = 0.3;
				texture = EC_FLARE;
				break;
			}
			case SWORD_OF_ICE:
			{
				color[0] = 0.4;
				color[1] = 0.5;
				color[2] = 1.0;
				texture = EC_CRYSTAL;
				break;
			}
			case SWORD_OF_MAGIC:
			{
				color[0] = 0.7;
				color[1] = 0.6;
				color[2] = 0.4;
				texture = EC_SHIMMER;
				break;
			}
		}

		old_end = *end;
		LOD = 100;
		desired_LOD = _LOD;
		request_LOD((float)base->last_forced_LOD);
	}
Example #2
0
	MissileEffect::MissileEffect(EyeCandy* _base, bool* _dead, Vec3* _pos,
		const MissileType _type, const Uint16 _LOD, int _hitOrMiss)
	{
		if (EC_DEBUG)
			std::cout << "MissileEffect (" << this << ") created (" << _type
				<< ")." << std::endl;
		base = _base;
		dead = _dead;
		pos = _pos;
		type = _type;
		hitOrMiss = _hitOrMiss;
		bounds = NULL;
		mover = new ParticleMover(this);

		switch (type)
		{
			case MAGIC:
			{
				color[0] = 1.0;
				color[1] = 1.0;
				color[2] = 0.125;
#ifdef	NEW_TEXTURES
				texture = EC_SHIMMER;
#else	/* NEW_TEXTURES */
				texture = &(base->TexShimmer);
#endif	/* NEW_TEXTURES */
				break;
			}
			case FIRE:
			{
				color[0] = 1.0;
				color[1] = 0.125;
				color[2] = 0.125;
#ifdef	NEW_TEXTURES
				texture = EC_FLARE;
#else	/* NEW_TEXTURES */
				texture = &(base->TexFlare);
#endif	/* NEW_TEXTURES */
				break;
			}
			case ICE:
			{
				color[0] = 0.125;
				color[1] = 0.125;
				color[2] = 1.0;
#ifdef	NEW_TEXTURES
				texture = EC_CRYSTAL;
#else	/* NEW_TEXTURES */
				texture = &(base->TexCrystal);
#endif	/* NEW_TEXTURES */
				break;
			}
			case EXPLOSIVE:
			{
				color[0] = 0.75;
				color[1] = 0.75;
				color[2] = 0.75;
#ifdef	NEW_TEXTURES
				texture = EC_INVERSE;
#else	/* NEW_TEXTURES */
				texture = &(base->TexInverse);
#endif	/* NEW_TEXTURES */
				break;
			}
		}

		old_pos = *pos;
		LOD = 100;
		desired_LOD = _LOD;
		request_LOD((float)base->last_forced_LOD);

		// add first particle
		Vec3 velocity;
		velocity.randomize(0.25);
		Particle
			* p =
				new MissileParticle(this, mover, old_pos, velocity, size, alpha, color[0], color[1], color[2], texture, LOD, type);
		base->push_back_particle(p);
	}