local require = require
local con = require("con")
local bit = require("bit")
local math = require("math")

local printf = printf
local tostring = tostring
local rs = con.rotatesprite

local gameevent = gameevent

local gv = gv
local player = player


module(...) --====================

test_gamevar = 123
local a_local_gamevar = "yes, this one too"

test_gamevar2 = 'qwe'

a_table = { ELT1='ELT1!', ELT2=4444, ATAB={ q=333, [4]="!four!", w=444, ["true"]=false } }
local ref_to_a_table = a_table
ref_to_tabtab = ref_to_a_table.ATAB
local l_ref_to_tabtab = ref_to_tabtab

ref_to_a_table.selfref = a_table
a_table[false] = { 1,2,3,con.actorvar(512) }

require "end_gamevars" --==========

not_a_gamevar = "no"

printf("a_table.ATAB[4]=%s", tostring(a_table.ATAB[4]))
a_table.ATAB[4] = "!FOUR!"


local DOT1x5 = 3135
local BAR1x5 = 3163

local function draw_hline_dotted(x1, x2, y, pal,stat)
    for x=x1,x2,2 do
        local pl = player[0]
        local tile = (x==x1 or x==x2) and BAR1x5 or DOT1x5

        if (pl.curr_weapon==2) then
            x = x + 16*math.sin(2*math.pi*gv.totalclock/120)
        elseif (pl.curr_weapon==1) then
            x = x + (pl.ang - 1024)/100
        end

        rs(x,y, 65536, 0, tile, 0,pal,stat,0, 0,0,gv.xdim-1,gv.ydim-1)
    end
end

local function draw_two_hlines(y, stat)
    if (player[0].curr_weapon ~= 3) then
        stat = bit.bor(stat, 8)
    end
    draw_hline_dotted(0,160, y, 0, stat)
    -- XXX: rotatesprite(*, 320, ...) with stat 1024 and classic draws out of
    -- bounds (wraps to lower left corner).  (Or is it the left one? In any case,
    -- weird stuff happens.)
    draw_hline_dotted(162,318, y, 2, stat)
end


local function rotatesprite_test()
    local stats = { [0]=0, 256, 512, 1024 }
    for i=0,3 do
        local stat = stats[i]
        draw_two_hlines(50+25*i, stats[i])
    end

    -- NUKEBUTTON
    rs(30,170, 32768, 2047*((gv.totalclock/240)%1), 142, 0,0,8+1024,0, 0,0,gv.xdim-1,gv.ydim-1)
end

gameevent{gv.EVENT_DISPLAYREST, rotatesprite_test}