Log In  

can someone tell me why my objs.add() function isn't working?

its supposed to let the user pass in a table or object struct and create and store a instance of it.
however it seems to overwrite the instances with the most recent call so they always get created with the last call's paramaters.

--class tab
local objs={}
local obj =
{
     --team
     team=0,

        --state
  state=1,
  level=0,
  timer=0,

  --stats
    shield=100,
        energy=100,
        weapon={},

     --tile
     t =0, --tile
     to=0, --tile offset
     ts=0, --tile skip
        tw=1, --tile width
     th=1, --tile height

        --movement
        x=0,
        y=0,
        r=0,
        v=0,
        vx=0,
        vy=0,
        vr=0,
        vv=0,
        fx=1,
        fy=1,
        fr=1,
        fv=1,
        maxvel=3,

     --shoot
        firetimer=0,
        firedelay=4,
}

--obj manager
function objs.add(o,...)
    o=setmetatable(o or {}, {__index = obj})
    o.base = obj
    if o.init != nil then o:init(...) end
    add(objs, o)
 return o
end

function objs.tick()
    for i=1, #objs do 
     o=objs[i]
     o.base:tick()
        if o.tick != nil then o:tick() end
    end
end

function objs.draw()
    for i=1, #objs do
     o=objs[i] 
     o.base:draw()
        if o.draw != nil then o:draw() end
    end
end

--base obj
function obj.tick(o)

    --fric
    --o.vx*=min(o.fx,1)
    --o.vy*=min(o.fy,1)
    --o.vr*=min(o.fr,1)
    --o.vv*=min(0,fv,1)

    --vx and vy
 o.vx=cos(o.r/360)*o.v
 o.vy=sin(o.r/360)*o.v
    o.vx=mid(o.vx,-o.maxvel,o.maxvel)
    o.vy=mid(o.vy,-o.maxvel,o.maxvel)

    --vel
    o.x+=o.vx
    o.y+=o.vy
    o.r+=o.vr
    o.v+=o.vv

    --wrap
    o.x=wrap(o.x, 0, 127)
    o.y=wrap(o.y, 0, 127)
end

function obj.draw(o)
 local t=o.t+(o.to*(o.ts+1))
    sprr(t,o.x,o.y,o.tw,o.th,o.r)
    --rint(o.x..", "..o.y,63,63,7)
end
P#55168 2018-08-14 21:09 ( Edited 2018-08-15 03:03)

nvm i fixed it by using a deep copy function

P#55173 2018-08-14 23:03 ( Edited 2018-08-15 03:03)

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-04-19 01:15:53 | 0.005s | Q:8