----- [[ WARZONE 2 - HEXAGONAL GRID RESOURCE BASED TOWER DEFENSE GAME]] -------- --[[ author@churchianity.ca ]] require "hex" require "util" ------ [[ GLOBALS ]] ----------------------------------------------------------- local win = am.window{ -- BASE RESOLUTION = 3/4 * WXGA Standard 16:10 width = 1280 * 3 / 4, -- 960px height = 800 * 3 / 4, -- 600px title = "Warzone 2: Electric Boogaloo", clear_color = vec4(22/255, 22/255, 29/255, 1) } local title local world local layout = hex_layout() local map = hex_hexagonal_map(24) ----- [[ SPRITES ]] ------------------------------------------------------------ local titlebutton = [[ KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK KwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK ]] function world_init() world = am.group{} world:action(coroutine.create(function() for hex,_ in pairs(map) do world:append(am.circle(hex_to_pixel(hex, layout), 12, rrgb(1), 6)) am.wait(am.delay(0.01)) end end)) win.scene = world end function init() local titlemenu = am.group{ am.translate(0, 150) ^ {am.scale(6.5) ^ am.text("WARZONE 2", vec4(0, 0, 0, 1)), am.scale(6.3, 6.7) ^ am.text("WARZONE 2")}, am.translate(0, 80) ^ am.text("a tower defense game"), am.translate(0, 0) ^ {am.scale(3) ^ am.sprite(titlebutton), am.text("NEW GAME")}, am.translate(0, -40) ^ {am.scale(3) ^ am.sprite(titlebutton), am.text("LOAD GAME")}, am.translate(0, -80) ^ {am.scale(3) ^ am.sprite(titlebutton), am.text("SETTINGS")}, am.translate(0, -120) ^ {am.scale(3) ^ am.sprite(titlebutton), am.text("QUIT")}, am.translate(0, -250) ^ am.text("by nick hayashi") } local backdrop = am.group() for hex,_ in pairs(map) do local center = hex_to_pixel(hex, layout) backdrop:append(am.circle(center, 12, rhue(1), 6)) end title = am.group{ am.translate(win.right, win.bottom) ^ am.scale(3.5, 1.5) ^ am.rotate(0) ^ backdrop, titlemenu }:action(function() title"rotate".angle = am.frame_time / 36 end) win.scene = title end ----- [[ MAIN ]] --------------------------------------------------------------- init()