Player::Player():
touching_ground(false),
in_water(false),
- inventory(PLAYER_INVENTORY_SIZE),
- peer_id(PEER_ID_NEW),
+ peer_id(PEER_ID_INEXISTENT),
m_speed(0,0,0),
m_position(0,0,0)
{
updateName("<not set>");
+ inventory.addList("main", PLAYER_INVENTORY_SIZE);
+ inventory.addList("craft", 9);
+ inventory.addList("craftresult", 1);
}
Player::~Player()
// Y direction is ignored
void Player::accelerate(v3f target_speed, f32 max_increase)
{
+ v3f d_wanted = target_speed - m_speed;
+ d_wanted.Y = 0;
+ f32 dl_wanted = d_wanted.getLength();
+ f32 dl = dl_wanted;
+ if(dl > max_increase)
+ dl = max_increase;
+
+ v3f d = d_wanted.normalize() * dl;
+
+ m_speed.X += d.X;
+ m_speed.Z += d.Z;
+ //m_speed += d;
+
+#if 0 // old code
if(m_speed.X < target_speed.X - max_increase)
m_speed.X += max_increase;
else if(m_speed.X > target_speed.X + max_increase)
m_speed.Z = target_speed.Z;
else if(m_speed.Z > target_speed.Z)
m_speed.Z = target_speed.Z;
+#endif
}
/*
// Set material
buf->getMaterial().setFlag(video::EMF_LIGHTING, false);
//buf->getMaterial().setFlag(video::EMF_BACK_FACE_CULLING, false);
- buf->getMaterial().setTexture(0, driver->getTexture("../data/player.png"));
+ buf->getMaterial().setTexture(0, driver->getTexture(porting::getDataPath("player.png").c_str()));
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false);
+ buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true);
//buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
// Add to mesh
// Set material
buf->getMaterial().setFlag(video::EMF_LIGHTING, false);
//buf->getMaterial().setFlag(video::EMF_BACK_FACE_CULLING, false);
- buf->getMaterial().setTexture(0, driver->getTexture("../data/player_back.png"));
+ buf->getMaterial().setTexture(0, driver->getTexture(porting::getDataPath("player_back.png").c_str()));
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false);
+ buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true);
buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF;
// Add to mesh
mesh->addMeshBuffer(buf);
position += m_speed * dtime;
+ bool haxmode = g_settings.getBool("haxmode");
+
// Skip collision detection if player is non-local
- if(isLocal() == false)
+ if(isLocal() == false || haxmode)
{
setPosition(position);
return;
v3f speed = v3f(0,0,0);
+ bool haxmode = g_settings.getBool("haxmode");
+
+ if(haxmode)
+ {
+ v3f speed = getSpeed();
+ speed.Y = 0;
+ setSpeed(speed);
+ }
+
// Superspeed mode
bool superspeed = false;
if(control.superspeed)
{
- speed += move_direction;
- superspeed = true;
+ if(haxmode)
+ {
+ v3f speed = getSpeed();
+ speed.Y = -20*BS;
+ setSpeed(speed);
+ }
+ else
+ {
+ // "Turbo button"
+ /*speed += move_direction;
+ superspeed = true;*/
+ }
}
+ if(haxmode)
+ superspeed = true;
+
if(control.up)
{
speed += move_direction;
}
if(control.jump)
{
- if(touching_ground)
+ if(haxmode)
+ {
+ v3f speed = getSpeed();
+ /*speed.Y += 20.*BS * dtime * 2;
+ if(speed.Y < 0)
+ speed.Y = 0;*/
+ speed.Y = 20*BS;
+ setSpeed(speed);
+ }
+ else if(touching_ground)
{
v3f speed = getSpeed();
speed.Y = 6.5*BS;
speed = speed.normalize() * walkspeed_max;
f32 inc = walk_acceleration * BS * dtime;
-
+
+ if(haxmode)
+ inc = walk_acceleration * BS * dtime * 10;
+
// Accelerate to target speed with maximum increment
accelerate(speed, inc);
}