Exemple #1
0
inline void grenade_StoC::handle()
{
    #if DC_CLIENT
    if (owner == ClientState::player_agent.agent_id) return;
    Grenade* g = Particle::grenade_list->create();
    if (g == NULL) return;
    g->set_state(p, m);
    g->owner = AgentID(this->owner);
    g->ttl_max = int(ttl_max);
    g->type = int(type);
    #endif
}
void GrenadeWeapon::fireMissile(float_t angle, float_t power, Vector2 playerLocation)
{
	Grenade *grenade = new Grenade();
	grenade->setDamage(20);
	grenade->setExplosionRadius(50);
	grenade->setGravity(.15);
	grenade->setNumberOfBounces(GRENADE_BOUNCES);
	grenade->setWidth(2);
	grenade->setHeight(2);
	grenade->setPosition(playerLocation.getX() + (grenade->getMissileRadius() + 50) * cos(angle / 180 * M_PI), playerLocation.getY() + (grenade->getMissileRadius() + 50) * sin(angle / 180 * M_PI));
	grenade->setVelocity(mMaxShotPower * power * cos(angle / 180 * M_PI), mMaxShotPower * power * sin(angle / 180 * M_PI));
	MissileManager::GetInstance()->AddMissile(grenade);
}
void
Player::update_stand()
{ 
  if(controller.button_was_pressed(USE_BUTTON))
    {
      Entity* obj = find_useable_entity();
      if (obj)
        obj->use();
      return;
    }
    
  if(controller.button_was_pressed(JUMP_BUTTON)
     && controller.get_axis_state(Y_AXIS) > 1.0f) 
    {
      set_jump_up_begin();
    } 
  else if (controller.button_was_pressed(AIM_BUTTON))
    {
      // TODO remove me later, just here for testing
      Grenade* grenade = new Grenade();
      grenade->set_pos(get_pos() + Vector(50, -300));
      grenade->set_velocity(Vector(20, -10));
      Sector::current()->add(grenade);
      
      sprite.set_action("PullGun");
      state = PULL_GUN;
    }
  else if (controller.get_axis_state(X_AXIS) < 0) 
    {
      if(get_direction() == WEST)
        set_walk(WEST);
      else
        set_turnaround();
    }
  else if (controller.get_axis_state(X_AXIS) > 0) 
    {
      if(get_direction() == EAST)
        set_walk(EAST);
      else
        set_turnaround();
    }
}
Exemple #4
0
		void World::Advance(float dt) {
			SPADES_MARK_FUNCTION();
			
			for(size_t i = 0; i < players.size(); i++)
				if(players[i])
					players[i]->Update(dt);
			
			std::vector<std::list<Grenade *>::iterator> removedGrenades;
			for(std::list<Grenade *>::iterator it = grenades.begin();
				it != grenades.end(); it++){
				Grenade *g = *it;
				if(g->Update(dt)){
					removedGrenades.push_back(it);
				}
			}
			for(size_t i = 0; i < removedGrenades.size(); i++)
				grenades.erase(removedGrenades[i]);
			
			time += dt;
		}
//グレネード生成
int CharacterScriptInterface::GrenadeGenerate( lua_State * l_)
{
	Character* character = static_cast< Character* >( lua_touserdata( l_, 1 ) );

	//printf("aaaa\n");
	float spx = lua_tonumber(l_, 2);
	float spy = lua_tonumber(l_, 3);

	float svx= lua_tonumber(l_, 4);
	float svy= lua_tonumber(l_, 5);
	float fs = lua_tonumber(l_, 6);

	int da = lua_tonumber(l_, 7);
	u32 ra = lua_tonumber(l_, 8);
	u32 cr = lua_tonumber(l_, 9);
	float bvx = lua_tonumber(l_, 10);
	float bvy = lua_tonumber(l_, 11);
 	u32 sf = lua_tonumber(l_, 12);
	int rbx = lua_tonumber(l_, 13);
	int rby = lua_tonumber(l_, 14);
	u32 rs = lua_tonumber(l_, 15);


	Grenade *gre;
	gre = new Grenade();
	gre->Initialize();
	gre->setGeneObjType(character->getObjType());

	gre->setPosition(LVector3(spx,spy,0));
	gre->setVelocity(LVector3(svx,svy,0));
	gre->setFallSpeed(fs);
	gre->setDirection(character->getDirection());
	gre->setAttackParam(da,ra,cr,LVector3(bvx,bvy,0),sf);
	gre->setRandBrow(rbx,rby);
	gre->setRandStun(rs);

	return 0;
}