summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjussi2024-12-20 14:33:31 +0200
committerjussi2024-12-20 14:33:31 +0200
commit5d70906aaf6f4336adcf1d96100b2150db4df904 (patch)
tree987cb3c3fc83e28957311abe721a88dd28520308
parent5ff5a3713700aa5ad201be820597c93b61b61860 (diff)
downloadreilua-enhanced-5d70906aaf6f4336adcf1d96100b2150db4df904.tar.gz
reilua-enhanced-5d70906aaf6f4336adcf1d96100b2150db4df904.tar.bz2
reilua-enhanced-5d70906aaf6f4336adcf1d96100b2150db4df904.zip
Reference lib.
-rw-r--r--changelog1
-rw-r--r--examples/resources/lib/reference.lua96
2 files changed, 97 insertions, 0 deletions
diff --git a/changelog b/changelog
index 372703f..0517469 100644
--- a/changelog
+++ b/changelog
@@ -31,6 +31,7 @@ DETAILED CHANGES:
- ADDED: SetShaderValueWithBuffer and SetShaderValueVWithBuffer.
- ADDED: Gui Icons enumeration.
- ADDED: SwapBufferEndianness.
+ - ADDED: Reference lib.
------------------------------------------------------------------------
Release: ReiLua version 0.8.0 Using Raylib 5.0 and Forked Raygui 4.0
diff --git a/examples/resources/lib/reference.lua b/examples/resources/lib/reference.lua
new file mode 100644
index 0000000..ccab7f5
--- /dev/null
+++ b/examples/resources/lib/reference.lua
@@ -0,0 +1,96 @@
+local Reference = {}
+local metatable = {
+ __index = Reference,
+ __tostring = function( r )
+ return tostring( r.t[ r.k ] )
+ end,
+ __add = function( r, v )
+ return r.t[ r.k ] + v
+ end,
+ __sub = function( r, v )
+ return r.t[ r.k ] - v
+ end,
+ __mul = function( r, v )
+ return r.t[ r.k ] * v
+ end,
+ __div = function( r, v )
+ return r.t[ r.k ] / v
+ end,
+ __mod = function( r, v )
+ return math.fmod( r.t[ r.k ], v )
+ end,
+ __pow = function( r, v )
+ return r.t[ r.k ] ^ v
+ end,
+ __unm = function( r )
+ return -r.t[ r.k ]
+ end,
+ __eq = function( r, v )
+ return r.t[ r.k ] == v
+ end,
+ __len = function( r )
+ return #r.t[ r.k ]
+ end,
+ __lt = function( r, v )
+ return r.t[ r.k ] < v
+ end,
+ __le = function( r, v )
+ return r.t[ r.k ] <= v
+ end,
+ __concat = function( a, b )
+ return tostring( a )..tostring( b )
+ end,
+ __call = function( r, ... )
+ return r.t[ r.k ]( ... )
+ end,
+}
+
+-- Table and key. Note that k should be name of the variable so the type must be string.
+function Reference:new( t, k )
+ local object = setmetatable( {}, metatable )
+
+ object.t = t
+ object.k = k
+
+ return object
+end
+
+-- Set new reference. Table and key. Note that k should be name of the variable so the type must be string.
+function Reference:ref( t, k )
+ self.t = t
+ self.k = k
+end
+
+function Reference:set( v )
+ self.t[ self.k ] = v
+end
+
+function Reference:get()
+ return self.t[ self.k ]
+end
+
+function Reference:unpack()
+ return self.t, self.k
+end
+
+function Reference:clone()
+ return Reference:new( self.t, self.k )
+end
+
+function Reference:addEq( v )
+ self.t[ self.k ] = self.t[ self.k ] + v
+end
+
+function Reference:subEq( v )
+ self.t[ self.k ] = self.t[ self.k ] - v
+end
+
+function Reference:mulEq( v )
+ self.t[ self.k ] = self.t[ self.k ] * v
+end
+
+function Reference:divEq( v )
+ self.t[ self.k ] = self.t[ self.k ] / v
+end
+
+return Reference