TODO: Move content_features to mapnode_content_features.{h,cpp} or so
+TODO: Fix item use() stuff; dropping a stack of cooked rats and eating
+ it gives 3 hearts and consumes all the rats.
+
Making it more portable:
------------------------
// Remember whether each key is down or up
if(event.EventType == irr::EET_KEY_INPUT_EVENT)
{
- keyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;
-
- if(event.KeyInput.PressedDown)
- keyWasDown[event.KeyInput.Key] = true;
+ if(event.KeyInput.PressedDown) {
+ keyIsDown.set(event.KeyInput);
+ keyWasDown.set(event.KeyInput);
+ } else {
+ keyIsDown.unset(event.KeyInput);
+ }
}
if(event.EventType == irr::EET_MOUSE_INPUT_EVENT)
return false;
}
- bool IsKeyDown(EKEY_CODE keyCode) const
+ bool IsKeyDown(const KeyPress &keyCode) const
{
return keyIsDown[keyCode];
}
// Checks whether a key was down and resets the state
- bool WasKeyDown(EKEY_CODE keyCode)
+ bool WasKeyDown(const KeyPress &keyCode)
{
bool b = keyWasDown[keyCode];
- keyWasDown[keyCode] = false;
+ if (b)
+ keyWasDown.unset(keyCode);
return b;
}
void clearInput()
{
- for(u32 i=0; i<KEY_KEY_CODES_COUNT; i++)
- {
- keyIsDown[i] = false;
- keyWasDown[i] = false;
- }
-
+ keyIsDown.clear();
+ keyWasDown.clear();
+
leftclicked = false;
rightclicked = false;
leftreleased = false;
IrrlichtDevice *m_device;
// The current state of keys
- bool keyIsDown[KEY_KEY_CODES_COUNT];
+ KeyList keyIsDown;
// Whether a key has been pressed or not
- bool keyWasDown[KEY_KEY_CODES_COUNT];
+ KeyList keyWasDown;
};
/*
m_receiver(receiver)
{
}
- virtual bool isKeyDown(EKEY_CODE keyCode)
+ virtual bool isKeyDown(const KeyPress &keyCode)
{
return m_receiver->IsKeyDown(keyCode);
}
- virtual bool wasKeyDown(EKEY_CODE keyCode)
+ virtual bool wasKeyDown(const KeyPress &keyCode)
{
return m_receiver->WasKeyDown(keyCode);
}
rightclicked = false;
leftreleased = false;
rightreleased = false;
- for(u32 i=0; i<KEY_KEY_CODES_COUNT; ++i)
- keydown[i] = false;
+ keydown.clear();
}
- virtual bool isKeyDown(EKEY_CODE keyCode)
+ virtual bool isKeyDown(const KeyPress &keyCode)
{
return keydown[keyCode];
}
- virtual bool wasKeyDown(EKEY_CODE keyCode)
+ virtual bool wasKeyDown(const KeyPress &keyCode)
{
return false;
}
if(counter1 < 0.0)
{
counter1 = 0.1*Rand(1, 40);
- keydown[getKeySetting("keymap_jump")] =
- !keydown[getKeySetting("keymap_jump")];
+ keydown.toggle(getKeySetting("keymap_jump"));
}
}
{
if(counter1 < 0.0)
{
counter1 = 0.1*Rand(1, 40);
- keydown[getKeySetting("keymap_special1")] =
- !keydown[getKeySetting("keymap_special1")];
+ keydown.toggle(getKeySetting("keymap_special1"));
}
}
{
if(counter1 < 0.0)
{
counter1 = 0.1*Rand(1, 40);
- keydown[getKeySetting("keymap_forward")] =
- !keydown[getKeySetting("keymap_forward")];
+ keydown.toggle(getKeySetting("keymap_forward"));
}
}
{
if(counter1 < 0.0)
{
counter1 = 0.1*Rand(1, 40);
- keydown[getKeySetting("keymap_left")] =
- !keydown[getKeySetting("keymap_left")];
+ keydown.toggle(getKeySetting("keymap_left"));
}
}
{
return (myrand()%(max-min+1))+min;
}
private:
- bool keydown[KEY_KEY_CODES_COUNT];
+ KeyList keydown;
v2s32 mousepos;
v2s32 mousespeed;
bool leftdown;
g_timegetter = new SimpleTimeGetter();
// Create server
- Server server(map_dir.c_str());
+ Server server(map_dir.c_str(), configpath);
server.start(port);
// Run server
if (device == 0)
return 1; // could not create selected driver.
- // Set device in game parameters
- device = device;
-
// Set the window caption
device->setWindowCaption(L"Minetest [Main Menu]");
password = translatePassword(playername, menudata.password);
+ //dstream<<"Main: password hash: '"<<password<<"'"<<std::endl;
+
address = wide_to_narrow(menudata.address);
int newport = stoi(wide_to_narrow(menudata.port));
if(newport != 0)
password,
address,
port,
- error_message
+ error_message,
+ configpath
);
} //try