EVR.Level.Prompt = function(level)
{
   this.level = level;
   this.initialize();
   this.append();
}
EVR.Level.Prompt.prototype = new EVR.Prompt;
EVR.Level.Prompt.prototype.initialize = function()
{
   var container = this.level.container;
   var text = LEVEL_START_PROMPT_TEXT;
   var color = LEVEL_PROMPT_COLOR;
   var size = LEVEL_PROMPT_SIZE;
   var background = LEVEL_PROMPT_BACKGROUND;
   var depth = LEVEL_PROMPT_DEPTH;
   var offset = [null, ROAD_OFFSET];
   EVR.Prompt.call(
      this, container, text, color, size, background, depth, null, offset);
}
EVR.Level.Prompt.prototype.set_finish_text = function()
{
   var level = this.level;
   var text = LEVEL_FINISHED_PROMPT_TEXT;
   if (level.id == LEVEL_LIMIT && level.is_clear())
   {
      text += ", " + LEVEL_VIEW_ENDING_PROMPT_TEXT;
   }
   else if (level.next_level_is_available())
   {
      text = LEVEL_CLEAR_PROMPT_TEXT;
   }
   this.set_text(text);
}
EVR.Level.Prompt.prototype.toggle = function()
{
   var attached = this.attached;
   attached && this.remove();
   !attached && this.append();
}
EVR.Level.Prompt.prototype.toString = function()
{
   return "[object EVR.Level.Prompt]";
}
EVR.include("level/cheers/marquee/Marquee.js");
EVR.Level.Cheers = function(level)
{
   EVR.Graphic.call(this, level.container, null, null, ALIGN_TOP);
   EVR.Animation.call(this, CHEERS_ANIMATION_RATE);
   this.level = level;
   this.cheer_texts = CHEERS_TEXTS;
   this.boost_bounds = [CHEERS_MIN_BOOST_LENGTH, CHEERS_MAX_BOOST_LENGTH];
   this.drag_threshold = CHEERS_DRAG_THRESHOLD;
   this.step = CHEERS_SCROLL_STEP;
   this.delay = CHEERS_SCROLL_DELAY;
   this.last_time = null;
   this.boost_length = null;
   this.drag_length = null;
   this.scrolling = false;
   this.setAttributes();
   this.append();
   this.background = new EVR.Level.Cheers.Marquee(
      this, CHEERS_SHADOW_COLOR_OFFSET, CHEERS_SHADOW_OFFSET,
      CHEERS_SHADOW_OPACITY);
   this.foreground = new EVR.Level.Cheers.Marquee(
      this, null, null, CHEERS_FOREGROUND_Z_INDEX, CHEERS_FOREGROUND_OPACITY);
}
EVR.Level.Cheers.prototype = new EVR.Graphic;
EVR.inherit(EVR.Level.Cheers, EVR.Animation);
EVR.Level.Cheers.prototype.setAttributes = function()
{
   this.set_proportions(CHEERS_MARQUEE_WIDTH, CHEERS_MARQUEE_HEIGHT);
   this.place(0, CHEERS_MARQUEE_OFFSET);
   this.css.overflow = "hidden";
}
EVR.Level.Cheers.prototype.scroll = function()
{
   var marquee_length = this.calculateScrollLength();
   var width = this.get_dimensions()[0];
   var cutoff = -marquee_length + width * (1 - CHEERS_SCROLL_PADDING);
   this.scrolling = true;
   this.play(null, this.delay, cutoff);
}
EVR.Level.Cheers.prototype.calculateScrollLength = function()
{
   var length = 0;
   var glyphs = this.foreground.glyphs;
   for (var ii = 0; ii < glyphs.length; ii++)
   {
      length += glyphs[ii].offsetWidth;
   }
   return length;
}
EVR.Level.Cheers.prototype.sequence = function(cutoff)
{
   var step = this.step;
   var foreground = this.foreground;
   var background = this.background;
   var foreground_x = foreground.get_coordinates()[0] - step;
   var background_x = background.get_coordinates()[0] - step;
   if (background_x < cutoff)
   {
      foreground_x = 0;
      background_x = 0;
      this.stop();
      this.play(null, this.delay, cutoff);
   }
   foreground.set_coordinates([foreground_x]);
   background.set_coordinates([background_x]);
}
EVR.Level.Cheers.prototype.update = function(sprinting, speed)
{
   if (this.level.practice)
   {
      return;
   }
   var time = this.level.clock.time.get();
   var interval = time - this.last_time;
   this.last_time = time;
   this.updateBoostTimer(sprinting, speed, interval);
   this.updateDragTimer(sprinting, speed, interval);
}
EVR.Level.Cheers.prototype.updateBoostTimer =
   function(sprinting, speed, interval)
{
   if (sprinting && speed == PATH_SPRINT_SPEED)
   {
      this.boost_length += interval;
      if (this.boost_length >= this.boost_bounds[1])
      {
	 this.addCheer();
	 this.boost_length = 0;
      }
   }
   else if (this.boost_length != 0)
   {
      this.addCheer();
      this.boost_length = 0;
   }
}
EVR.Level.Cheers.prototype.addCheer = function()
{
   var length = this.boost_length;
   var bounds = this.boost_bounds;
   if (length >= bounds[0])
   {
      this.drag_length = 0;
      if (length > bounds[1])
      {
	 this.boost_length = bounds[1];
      }
      var cheer = this.determineCheerText();
      this.foreground.addCheer(cheer);
      this.background.addCheer(cheer);
   }
}
EVR.Level.Cheers.prototype.determineCheerText = function()
{
   var bounds = this.boost_bounds;
   var range = bounds[1] - bounds[0];
   var offset = this.boost_length - bounds[0];
   var texts = this.cheer_texts;
   var index = Math.round((texts.length - 1) * (offset / range));
   return texts[index];
}
EVR.Level.Cheers.prototype.updateDragTimer = 
   function(sprinting, speed, interval)
{
   if (speed < PATH_INITIAL_SPEED || (speed < PATH_SPRINT_SPEED && sprinting))
   {
      this.drag_length += interval;
      if (this.drag_length >= this.drag_threshold)
      {
	 this.addJeer();
	 this.drag_length = 0;
      }
   }
}
EVR.Level.Cheers.prototype.addJeer = function()
{
   this.foreground.addJeer();
   this.background.addJeer();
}
EVR.Level.Cheers.prototype.draw = function()
{
   EVR.Graphic.prototype.draw.call(this);
   if (!!this.foreground)
   {
      this.foreground.draw();
      this.background.draw();
   }
   if (this.scrolling)
   {
      this.stop();
      this.scroll();
   }
}
EVR.Level.Cheers.prototype.remove = function()
{
   EVR.Graphic.prototype.remove.call(this);
   if (!!this.foreground)
   {
      this.foreground.remove();
      this.background.remove();
   }
   if (this.scrolling)
   {
      this.stop();
      this.scrolling = false;
   }
}
EVR.Level.Cheers.prototype.toString = function()
{
   return "[object EVR.Level.Cheers]";
}
216.73.216.144
216.73.216.144
216.73.216.144
 
November 10, 2013


Food Spring - Watermelon Stage

Getting the fruit as far as possible is the object of each level, collecting bigger, more valuable guns. The final result is determined by the size of the fruits' collection when the monkey arrives in North America and either survives or perishes in the fruits' attack.

Watermelon Peach
Pineapple Grapes