Skip to content

Instantly share code, notes, and snippets.

@devilstower
Created June 27, 2012 03:45
Show Gist options
  • Save devilstower/3001253 to your computer and use it in GitHub Desktop.
Save devilstower/3001253 to your computer and use it in GitHub Desktop.
Battle chips 26 Jun 12 / part 3
TokenTray = class()
function TokenTray:init(x, y)
    -- you can accept and set parameters here
    self.x = x
    self.y = y
    self.frame = Frame(x, y, x + 200, y + 850)
    self.selected = 0
    self.tokens = {}
    self.tokens[1] = Token(codes[1], 30, 0, 1) 
    self.tokens[2] = Token(codes[2], 30, 0, 1)
    self.tokens[3] = Token(codes[3], 30, 0, 1)
    self.tokens[4] = Token(codes[4], 30, 0, 1)
    self.tokens[5] = Token(codes[5], 30, 0, 3)
    self.tokens[6] = Token(codes[6], 30, 0, 2)
    self.tokens[7] = Token(codes[7], 30, 0, 2)
    self.tokens[8] = Token(codes[8], 30, 0, 2)
    self.tokens[9] = Token(codes[9], 30, 0, 2)
    self.tokens[10] = Token(codes[10], 30, 0, 2)
    self.tokens[11] = Token(codes[11], 30, 0, 4)
    self.tokens[12] = Token(codes[12], 30, 0, 4)
    self.tokens[13] = Token(codes[13], 30, 0, 4)
    self.tokens[14] = Token(codes[14], 30, 0, 3)
    self.tokens[15] = Token(codes[15], 30, 0, 3)
    self.tokens[16] = Token(codes[16], 30, 0, 3)
    self.tokens[17] = Token(codes[17], 30, 0, 4)
    self.tokens[18] = Token(codes[18], 30, 0, 4)
    self.tokens[19] = Token(codes[19], 30, 0, 3)
    self.tokens[20] = Token(codes[20], 30, 0, 3)
    self.tokens[21] = Token(codes[21], 30, 0, 3)
    for i = 1, #self.tokens do
        self.tokens[i].y = 2000
    end
    self.dividers = {}
    self.dividers[1] = Divider("Movement", 1, 800, 199, 830)
    self.dividers[2] = Divider("Sensors", 1, 800, 199, 830)
    self.dividers[3] = Divider("Equipment", 1, 800, 199, 830)
    self.dividers[4] = Divider("Control", 1, 800, 199, 830)
    self:selectDivider(1)
end
function TokenTray:selectDivider(i)
    local y
    self.selectedDivider= i
    for i = 1, self.selectedDivider do
        y = self.frame:height() - 1 - i * 30
        self.dividers[i].frame.bottom = y
        self.dividers[i].frame.top = y + 30
    end
    for i = self.selectedDivider + 1, #self.dividers do
        y = (#self.dividers - i) * 30
        self.dividers[i].frame.bottom = y
        self.dividers[i].frame.top = y + 30
    end
    count = 0
    for i = 1, #self.tokens do
        if self.tokens[i].divide == self.selectedDivider then
            count = count + 1
            self.tokens[i].y = 
            self.dividers[self.selectedDivider].frame.bottom
             - count * 70 
        else
            self.tokens[i].y = 2000
        end
    end
end
function TokenTray:draw()
    pushStyle()
    pushMatrix()
    fontSize(18)
    tint(25, 27, 46, 255)
    sprite(boardImg, self.frame.left, self.frame.bottom, 
        self.frame.right, self.frame.top)
    stroke(249, 249, 249, 255)
    noFill()
    strokeWidth(2)
    self.frame:draw()
    fill(87, 87, 87, 221)
    
    noStroke()
    translate(self.x, self.y)
    for i = 1, #self.dividers do
       self.dividers[i]:draw()
    end
    for i = 1, #self.tokens do
        if self.tokens[i].divide == self.selectedDivider then
            self.tokens[i]:draw()
        end
    end
    popMatrix()
    popStyle()
end
function TokenTray:touched(touch)
    t = Ttouch(touch)
    self.selected = 0
    t:translate(self.x, self.y)
    for i = 1, #self.tokens do
        if self.tokens[i]:touched(t) then
            self.selected = i
            return true
            --sound(SOUND_SHOOT, 773)
        end
    end
    for i = 1, #self.dividers do
        if self.dividers[i]:touched(t) then
            self:selectDivider(i)
            sound(SOUND_BLIT, 4824)
            return false
            --sound(SOUND_SHOOT, 773)
        end
    end
    return false
end
Ttouch = class()
-- Translatable Touch 
-- ver. 1.0
-- maps fields of a touch but is easily modified.
-- ====================.
function Ttouch:init(touch)
    self.x = touch.x
    self.y = touch.y
    self.state = touch.state
    self.prevX = touch.prevX
    self.prevY = touch.prevY
    self.deltaX = touch.deltaX
    self.deltaY = touch.deltaY
    self.id = touch.id
    self.tapCount = touch.tapCount
    self.timer = 0
end
function Ttouch:translate(x, y)
    self.x = self.x - x
    self.y = self.y - y
end
VColorSlider = class()
function VColorSlider:init(x, y)
    self.frame = Frame(x - 30, y - 328, x + 60, y + 56)
    self.previousY = 0
    self.pots = {}
    for i = 0, 15 do
        self.pots[i + 1] = Frame(self.frame.left, 
        self.frame.top - i * 24 - 24,
        self.frame.right, self.frame.top - i * 24)
    end
    self.selected = 0
end
function VColorSlider:draw()
    pushStyle()
    fill(143, 158, 166, 255)
    stroke(25, 25, 25, 255)
    strokeWidth(1)
    self.frame:draw()
    for i = 1, 16 do
        fill(colors[i])
        self.pots[i]:draw()
    end
    popStyle()
end
function VColorSlider:touched(touch)
    if self.frame:touched(touch) then
        for i = 1, 16 do
            self.selected = 0
            if self.pots[i]:touched(touch) then
                strokeWidth(3)
                stroke(106, 130, 155, 255)
                self.selected = i
                fill(colors[i])
                self.pots[i]:draw()
                return true
            end
        end
    end
    return false
end
VRobotSlider = class()
function VRobotSlider:init(x, y)
    self.frame = Frame(x - 25, y - 640, x + 35, y + 210)
    self.previousY = 0
    self.pots = {}
    for i = 1, 21 do
        self.pots[i] = Frame(self.frame.left + 2, 
        self.frame.top - (i) * 40,
        self.frame.right - 2, self.frame.top - (i) * 40 + 40)
    end
    self.selected = 0
end
function VRobotSlider:draw(robots)
    pushStyle()
    textMode(CENTER)
    fontSize(32)
        fill(0, 0, 0, 255)
        stroke(255, 255, 255, 155)
        strokeWidth(1)
        self.frame:draw()
        fontSize(32)
        for i = 1, 21 do
            if i == 1 then
                fill(92, 92, 92, 183)
                text("?", self.pots[1]:midX(), self.pots[1]:midY())
            end
            if i > 1 then
                noStroke()
                --self.pots[i]:draw()
                pushMatrix()
                translate(self.pots[i]:midX(), 
                self.pots[i]:midY())
                scale(0.5)
                if i > 1 then
                    robots[i - 1]:drawBase()
                end
                popMatrix()
            end
        end
   popStyle()
end
function VRobotSlider:touched(touch)
    if self.frame:touched(touch) then
        for i = 1, 21 do
            self.selected = 0
            if self.pots[i]:touched(touch) then
                strokeWidth(3)
                noFill()
                stroke(106, 130, 155, 255)
                self.pots[i]:draw()
                self.selected = i - 1
                print(i, self.selected, self.pots[1].left)
                return true
            end
        end
    end
    return false
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment