]> git.sesse.net Git - nageru/blobdiff - nageru/scene.cpp
Add an enable_if() to Block, for convenience.
[nageru] / nageru / scene.cpp
index 6c3a0393b8e83d47c7ca6fd202c668f69bf4bf38..ccb3b1bf241c74c7c72ca1a1bcaac4c0f0c927ce 100644 (file)
@@ -531,6 +531,20 @@ int Block_enable(lua_State *L)
        return 0;
 }
 
+int Block_enable_if(lua_State *L)
+{
+       assert(lua_gettop(L) == 2);
+       Block *block = *(Block **)luaL_checkudata(L, 1, "Block");
+
+       if (block->alternatives.size() != 2 ||
+           block->alternatives[1]->effect_type != IDENTITY_EFFECT) {
+               luaL_error(L, "enable_if() called on something that wasn't added with add_optional_effect()");
+       }
+       bool enabled = checkbool(L, 2);
+       block->currently_chosen_alternative = enabled ? 0 : 1;
+       return 0;
+}
+
 int Block_disable(lua_State *L)
 {
        assert(lua_gettop(L) == 1);