mirror of
https://github.com/love2d/love.git
synced 2026-08-20 20:49:54 +02:00
Simplified an internal Variant constructor to be more intuitive to use.
--HG-- branch : minor
This commit is contained in:
@@ -85,10 +85,10 @@ Variant::Variant(love::Type *udatatype, void *userdata)
|
|||||||
{
|
{
|
||||||
if (udatatype != nullptr)
|
if (udatatype != nullptr)
|
||||||
{
|
{
|
||||||
Proxy *p = (Proxy *) userdata;
|
love::Object *o = (love::Object *) userdata;
|
||||||
data.userdata = p->object;
|
data.userdata = o;
|
||||||
if (p->object)
|
if (o != nullptr)
|
||||||
p->object->retain();
|
o->retain();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
data.userdata = userdata;
|
data.userdata = userdata;
|
||||||
|
|||||||
@@ -383,12 +383,10 @@ Message *Event::convert(const SDL_Event &e)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Proxy proxy;
|
auto *file = new love::filesystem::DroppedFile(e.drop.file);
|
||||||
proxy.object = new love::filesystem::DroppedFile(e.drop.file);
|
vargs.emplace_back(&love::filesystem::DroppedFile::type, file);
|
||||||
proxy.type = &love::filesystem::DroppedFile::type;
|
|
||||||
vargs.emplace_back(proxy.type, &proxy);
|
|
||||||
msg = new Message("filedropped", vargs);
|
msg = new Message("filedropped", vargs);
|
||||||
proxy.object->release();
|
file->release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SDL_free(e.drop.file);
|
SDL_free(e.drop.file);
|
||||||
@@ -418,7 +416,8 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
|
|||||||
std::vector<Variant> vargs;
|
std::vector<Variant> vargs;
|
||||||
vargs.reserve(4);
|
vargs.reserve(4);
|
||||||
|
|
||||||
Proxy proxy;
|
love::Type *joysticktype = &love::joystick::Joystick::type;
|
||||||
|
love::joystick::Joystick *stick = nullptr;
|
||||||
love::joystick::Joystick::Hat hat;
|
love::joystick::Joystick::Hat hat;
|
||||||
love::joystick::Joystick::GamepadButton padbutton;
|
love::joystick::Joystick::GamepadButton padbutton;
|
||||||
love::joystick::Joystick::GamepadAxis padaxis;
|
love::joystick::Joystick::GamepadAxis padaxis;
|
||||||
@@ -428,12 +427,11 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
|
|||||||
{
|
{
|
||||||
case SDL_JOYBUTTONDOWN:
|
case SDL_JOYBUTTONDOWN:
|
||||||
case SDL_JOYBUTTONUP:
|
case SDL_JOYBUTTONUP:
|
||||||
proxy.type = &love::joystick::Joystick::type;
|
stick = joymodule->getJoystickFromID(e.jbutton.which);
|
||||||
proxy.object = joymodule->getJoystickFromID(e.jbutton.which);
|
if (!stick)
|
||||||
if (!proxy.object)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
vargs.emplace_back(proxy.type, (void *) &proxy);
|
vargs.emplace_back(joysticktype, stick);
|
||||||
vargs.emplace_back((double)(e.jbutton.button+1));
|
vargs.emplace_back((double)(e.jbutton.button+1));
|
||||||
msg = new Message((e.type == SDL_JOYBUTTONDOWN) ?
|
msg = new Message((e.type == SDL_JOYBUTTONDOWN) ?
|
||||||
"joystickpressed" : "joystickreleased",
|
"joystickpressed" : "joystickreleased",
|
||||||
@@ -441,12 +439,11 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
|
|||||||
break;
|
break;
|
||||||
case SDL_JOYAXISMOTION:
|
case SDL_JOYAXISMOTION:
|
||||||
{
|
{
|
||||||
proxy.type = &love::joystick::Joystick::type;
|
stick = joymodule->getJoystickFromID(e.jaxis.which);
|
||||||
proxy.object = joymodule->getJoystickFromID(e.jaxis.which);
|
if (!stick)
|
||||||
if (!proxy.object)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
vargs.emplace_back(proxy.type, (void *) &proxy);
|
vargs.emplace_back(joysticktype, stick);
|
||||||
vargs.emplace_back((double)(e.jaxis.axis+1));
|
vargs.emplace_back((double)(e.jaxis.axis+1));
|
||||||
float value = joystick::Joystick::clampval(e.jaxis.value / 32768.0f);
|
float value = joystick::Joystick::clampval(e.jaxis.value / 32768.0f);
|
||||||
vargs.emplace_back((double) value);
|
vargs.emplace_back((double) value);
|
||||||
@@ -457,12 +454,11 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
|
|||||||
if (!joystick::sdl::Joystick::getConstant(e.jhat.value, hat) || !joystick::Joystick::getConstant(hat, txt))
|
if (!joystick::sdl::Joystick::getConstant(e.jhat.value, hat) || !joystick::Joystick::getConstant(hat, txt))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
proxy.type = &love::joystick::Joystick::type;
|
stick = joymodule->getJoystickFromID(e.jhat.which);
|
||||||
proxy.object = joymodule->getJoystickFromID(e.jhat.which);
|
if (!stick)
|
||||||
if (!proxy.object)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
vargs.emplace_back(proxy.type, (void *) &proxy);
|
vargs.emplace_back(joysticktype, stick);
|
||||||
vargs.emplace_back((double)(e.jhat.hat+1));
|
vargs.emplace_back((double)(e.jhat.hat+1));
|
||||||
vargs.emplace_back(txt, strlen(txt));
|
vargs.emplace_back(txt, strlen(txt));
|
||||||
msg = new Message("joystickhat", vargs);
|
msg = new Message("joystickhat", vargs);
|
||||||
@@ -475,12 +471,11 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
|
|||||||
if (!joystick::Joystick::getConstant(padbutton, txt))
|
if (!joystick::Joystick::getConstant(padbutton, txt))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
proxy.type = &love::joystick::Joystick::type;
|
stick = joymodule->getJoystickFromID(e.cbutton.which);
|
||||||
proxy.object = joymodule->getJoystickFromID(e.cbutton.which);
|
if (!stick)
|
||||||
if (!proxy.object)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
vargs.emplace_back(proxy.type, (void *) &proxy);
|
vargs.emplace_back(joysticktype, stick);
|
||||||
vargs.emplace_back(txt, strlen(txt));
|
vargs.emplace_back(txt, strlen(txt));
|
||||||
msg = new Message(e.type == SDL_CONTROLLERBUTTONDOWN ?
|
msg = new Message(e.type == SDL_CONTROLLERBUTTONDOWN ?
|
||||||
"gamepadpressed" : "gamepadreleased", vargs);
|
"gamepadpressed" : "gamepadreleased", vargs);
|
||||||
@@ -491,13 +486,11 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
|
|||||||
if (!joystick::Joystick::getConstant(padaxis, txt))
|
if (!joystick::Joystick::getConstant(padaxis, txt))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
proxy.type = &love::joystick::Joystick::type;
|
stick = joymodule->getJoystickFromID(e.caxis.which);
|
||||||
proxy.object = joymodule->getJoystickFromID(e.caxis.which);
|
if (!stick)
|
||||||
if (!proxy.object)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
vargs.emplace_back(proxy.type, (void *) &proxy);
|
vargs.emplace_back(joysticktype, stick);
|
||||||
|
|
||||||
vargs.emplace_back(txt, strlen(txt));
|
vargs.emplace_back(txt, strlen(txt));
|
||||||
float value = joystick::Joystick::clampval(e.caxis.value / 32768.0f);
|
float value = joystick::Joystick::clampval(e.caxis.value / 32768.0f);
|
||||||
vargs.emplace_back((double) value);
|
vargs.emplace_back((double) value);
|
||||||
@@ -506,22 +499,20 @@ Message *Event::convertJoystickEvent(const SDL_Event &e) const
|
|||||||
break;
|
break;
|
||||||
case SDL_JOYDEVICEADDED:
|
case SDL_JOYDEVICEADDED:
|
||||||
// jdevice.which is the joystick device index.
|
// jdevice.which is the joystick device index.
|
||||||
proxy.object = joymodule->addJoystick(e.jdevice.which);
|
stick = joymodule->addJoystick(e.jdevice.which);
|
||||||
proxy.type = &love::joystick::Joystick::type;
|
if (stick)
|
||||||
if (proxy.object)
|
|
||||||
{
|
{
|
||||||
vargs.emplace_back(proxy.type, (void *) &proxy);
|
vargs.emplace_back(joysticktype, stick);
|
||||||
msg = new Message("joystickadded", vargs);
|
msg = new Message("joystickadded", vargs);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SDL_JOYDEVICEREMOVED:
|
case SDL_JOYDEVICEREMOVED:
|
||||||
// jdevice.which is the joystick instance ID now.
|
// jdevice.which is the joystick instance ID now.
|
||||||
proxy.object = joymodule->getJoystickFromID(e.jdevice.which);
|
stick = joymodule->getJoystickFromID(e.jdevice.which);
|
||||||
proxy.type = &love::joystick::Joystick::type;
|
if (stick)
|
||||||
if (proxy.object)
|
|
||||||
{
|
{
|
||||||
joymodule->removeJoystick((joystick::Joystick *) proxy.object);
|
joymodule->removeJoystick(stick);
|
||||||
vargs.emplace_back(proxy.type, (void *) &proxy);
|
vargs.emplace_back(joysticktype, stick);
|
||||||
msg = new Message("joystickremoved", vargs);
|
msg = new Message("joystickremoved", vargs);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -487,11 +487,8 @@ static void screenshotChannelCallback(const Graphics::ScreenshotInfo *info, love
|
|||||||
|
|
||||||
if (channel != nullptr)
|
if (channel != nullptr)
|
||||||
{
|
{
|
||||||
Proxy p;
|
|
||||||
p.type = &love::image::ImageData::type;
|
|
||||||
p.object = i;
|
|
||||||
if (i != nullptr)
|
if (i != nullptr)
|
||||||
channel->push(Variant(p.type, &p));
|
channel->push(Variant(&love::image::ImageData::type, i));
|
||||||
|
|
||||||
channel->release();
|
channel->release();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,12 +110,8 @@ void LuaThread::onError()
|
|||||||
if (!eventmodule)
|
if (!eventmodule)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Proxy p;
|
|
||||||
p.type = &LuaThread::type;
|
|
||||||
p.object = this;
|
|
||||||
|
|
||||||
std::vector<Variant> vargs = {
|
std::vector<Variant> vargs = {
|
||||||
Variant(p.type, &p),
|
Variant(&LuaThread::type, this),
|
||||||
Variant(error.c_str(), error.length())
|
Variant(error.c_str(), error.length())
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user