You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.5 KiB
CoffeeScript
107 lines
2.5 KiB
CoffeeScript
$(->
|
|
manager = new ResourceManager("gemswap/assets")
|
|
engine = new Engine(manager)
|
|
window.debug_engine = engine
|
|
###
|
|
# Configure pre-loading assets
|
|
manager.addImages([
|
|
"images/loading_screen.png"
|
|
], true)
|
|
###
|
|
|
|
# Configure game assets
|
|
manager.addImages([
|
|
"images/diamond.png"
|
|
"images/diamond_inverted.png"
|
|
"images/diamond_shimmer.png"
|
|
"images/yellow.png"
|
|
"images/yellow_inverted.png"
|
|
"images/yellow_shimmer.png"
|
|
])
|
|
|
|
###
|
|
manager.addSounds([
|
|
"sfx/match.wav"
|
|
"sfx/swap.wav"
|
|
])
|
|
###
|
|
|
|
manager.prepare()
|
|
manager.preload(null, ->
|
|
engine.addCanvas($("#gamecanvas"));
|
|
|
|
scene = engine.createScene("main")
|
|
|
|
engine.createSprite("diamond", "images/diamond.png")
|
|
engine.createSprite("diamond_inverted", "images/diamond_inverted.png")
|
|
engine.createSprite("diamond_shimmer", "images/diamond_shimmer.png")
|
|
|
|
engine.createSprite("yellow", "images/yellow.png")
|
|
engine.createSprite("yellow_inverted", "images/yellow_inverted.png")
|
|
engine.createSprite("yellow_shimmer", "images/yellow_shimmer.png")
|
|
|
|
diamond = engine.createObject("diamond")
|
|
diamond.sprite = engine.getSprite("diamond")
|
|
diamond.draw_sprite = false
|
|
|
|
diamond.onCreate = ->
|
|
@fade_step = 0.045
|
|
@fade_current_step = @fade_step
|
|
@fade_value = 0
|
|
@fade_decay_current = 9999 # Disable by default
|
|
@fade_decay_max = 8
|
|
|
|
@shimmer_step = 0.006 * Math.random()
|
|
@shimmer_current_step = @shimmer_step
|
|
@shimmer_value = 0
|
|
|
|
@gem_type = if Math.random() > 0.5 then "diamond" else "yellow"
|
|
|
|
diamond.onStep = ->
|
|
if @fade_decay_current < Math.pow(2, @fade_decay_max)
|
|
@fade_value += @fade_current_step
|
|
|
|
max = 1.5 / @fade_decay_current
|
|
|
|
if @fade_value > Math.min(max, 1)
|
|
@fade_value = Math.min(max, 1)
|
|
@fade_current_step = -@fade_step
|
|
|
|
if @fade_value <= 0
|
|
@fade_value = 0
|
|
@fade_decay_current *= 1.5
|
|
@fade_current_step = @fade_step
|
|
|
|
@shimmer_value += @shimmer_current_step
|
|
|
|
if @shimmer_value > 0.7
|
|
@shimmer_value = 0.7
|
|
@shimmer_current_step = -@shimmer_step
|
|
|
|
if @shimmer_value < 0
|
|
@shimmer_value = 0
|
|
@shimmer_current_step = @shimmer_step
|
|
|
|
return true
|
|
|
|
diamond.onDraw = ->
|
|
@engine.getSprite(@gem_type).draw(@x, @y)
|
|
|
|
@engine.getSprite("#{@gem_type}_inverted").draw(@x, @y, {
|
|
alpha: @fade_value
|
|
})
|
|
|
|
@engine.getSprite("#{@gem_type}_shimmer").draw(@x - 14, @y - 14, {
|
|
alpha: @shimmer_value
|
|
})
|
|
|
|
diamond.onMouseOver = ->
|
|
@fade_decay_current = 1
|
|
|
|
for x in [0 .. 728] by 72
|
|
for y in [0 .. 550] by 72
|
|
scene.createInstance(diamond, x, y)
|
|
|
|
engine.start()
|
|
)
|
|
) |