<?php
require_once "../../../../account/get_user_path.php";
$GLOBALS["GHOSTS_DIRECTORY"] = "ghosts/";
load_ghost();
function load_ghost()
{
   if (file_exists($path = build_path()))
   {
      ob_start();
      readgzfile($path);
      ob_end_flush();
   }
}
function build_path()
{
   $file = $_GET["level"] . ".gz";
   return account\get_user_path() . $GLOBALS["GHOSTS_DIRECTORY"] . $file;
}
<?php
require_once "../../../../account/get_user_path.php";
$GLOBALS["GHOSTS_DIRECTORY"] = "ghosts/";
save_ghost();
function save_ghost()
{
   create_files();
   $trail = str_replace("|", "\n", $_POST["trail"]);
   gzwrite(gzopen(build_path(), "w"), $trail);
}
function create_files()
{
   create_directory();
   create_file();
}
function create_directory()
{
   $path = build_directory_path();
   if (!file_exists($path))
   {
      mkdir($path, 02770);
   }
}
function create_file()
{
   $path = build_path();
   if (!file_exists($path))
   {
      touch($path);
      chmod($path, 0660);
   }
}
function build_directory_path()
{
   return account\get_user_path() . $GLOBALS["GHOSTS_DIRECTORY"];
}
function build_path()
{
   return build_directory_path() . $_POST["level"] . ".gz";
}
EVR.include("level/road/path/trail/Marker.js");
EVR.Level.Road.Path.Trail = function(level)
{
   this.level = level;
   this.trail = [];
}
EVR.Level.Road.Path.Trail.prototype.add = function(speed, lane)
{
   var level = this.level;
   var time = 0;
   if (!!level.clock)
   {
      time = level.clock.time.get();
   }
   var trail = this.trail;
   var marker = new EVR.Level.Road.Path.Trail.Marker(time, speed, lane);
   trail.push(marker);
}
EVR.Level.Road.Path.Trail.prototype.load = function()
{
   var trail = this.trail;
   var parameters, marker, raw = this.get_raw();
   for (var ii = 0; ii < raw.length; ii++)
   {
      parameters = raw[ii].split(" ");
      marker = new EVR.Level.Road.Path.Trail.Marker();
      EVR.Level.Road.Path.Trail.Marker.apply(marker, parameters);
      trail.push(marker);
   }
}
EVR.Level.Road.Path.Trail.prototype.get_raw = function()
{
   var script = this.get_script_root() + "load_ghost.php";
   var query = this.build_query();
   var raw = new EVR.Requester(script, query, true).execute().split("\n");
   if (raw.length <= 1)
   {
      raw = [];
   }
   return raw;
}
EVR.Level.Road.Path.Trail.prototype.build_query = function()
{
   return "level=" + this.level.id;
}
EVR.Level.Road.Path.Trail.prototype.get_script_root = function()
{
   return SOURCE_PATH + "level/road/path/trail/";
}
EVR.Level.Road.Path.Trail.prototype.save = function()
{
   this.fix();
   var script = this.get_script_root() + "save_ghost.php";
   var query = this.build_query() + "&trail=" + this.serialize();
   new EVR.Requester(script, query, true, true).execute();
}
EVR.Level.Road.Path.Trail.prototype.fix = function()
{
   var trail = this.trail;
   var time;
   for (var ii = 0; ii < trail.length - 1; ii++)
   {
      time = trail[ii].time;
      if (time > 0 && time == trail[ii + 1].time)
      {
	 ii = this.fix_duplicates(ii);
      }
   }
}
EVR.Level.Road.Path.Trail.prototype.fix_duplicates = function(ii)
{
   var trail = this.trail;
   var count = this.count_duplicates(ii);
   var previous = trail[ii - 1].time;
   var difference = trail[ii].time - previous;
   var step = parseInt(difference / count);
   var limit = ii + count;
   while (ii < limit)
   {
      trail[ii].time -= step * (limit - ii++ - 1);
   }
   return ii - 1;
}
EVR.Level.Road.Path.Trail.prototype.count_duplicates = function(ii)
{
   var trail = this.trail;
   var time = trail[ii].time;
   var count = 1;
   while (ii < trail.length - 1 && trail[++ii].time == time)
   {
      count++;
   }
   return count;
}
EVR.Level.Road.Path.Trail.prototype.serialize = function()
{
   return this.trail.join("|");
}
EVR.Level.Road.Path.Trail.prototype.toString = function()
{
   return "[EVR.Level.Road.Path.Trail]";
}
EVR.Level.Road.Path.Trail.Marker = function(time, speed, lane)
{
   this.time = parseInt(time);
   this.speed = parseFloat(speed);
   this.lane = parseInt(lane);
}
EVR.Level.Road.Path.Trail.Marker.prototype.toString = function()
{
   return this.time + " " + this.speed + " " + this.lane;
}
EVR.include("/level/map/Indicator.js");
EVR.Level.Map.Display = function(container, level)
{
   EVR.Component.call(this, container, "table");
   this.level = level;
   this.clusters = level.clusters;
   this.colors = level.beams;
   this.current = 0;
   this.row = this.element.insertRow(-1);
   this.style();
   this.populate();
   this.append();
   this.align();
   this.add_indicators();
}
EVR.Level.Map.Display.prototype = new EVR.Component;
EVR.Level.Map.Display.prototype.style = function()
{
   this.element.cellSpacing = "0";
   this.css.width = MAP_WIDTH;
   this.css.position = "absolute";
   this.css.border = MAP_BORDER;
}
EVR.Level.Map.Display.prototype.populate = function()
{
   var passage, cell;
   for (var ii = 0; ii < this.clusters.length; ii++)
   {
      passage = this.clusters[ii].passage;
      cell = this.row.insertCell(-1);
      cell.style.backgroundColor = this.colors[passage];
   }
}
EVR.Level.Map.Display.prototype.align = function()
{
   var relative = this.level.register.previews[0];
   var coordinates = relative.get_coordinates();
   this.css.height = relative.get_dimensions()[1];
   this.css.left = coordinates[0];
   this.css.top = coordinates[1];
}
EVR.Level.Map.Display.prototype.add_indicators = function()
{
   this.player_indicator = new EVR.Level.Map.Indicator(this, INDICATOR_OPACITY);
   this.ghost_indicator = new EVR.Level.Map.Indicator(
      this, GHOST_INDICATOR_OPACITY);
}
EVR.Level.Map.Display.prototype.draw = function()
{
   this.align();
   this.player_indicator.draw(+this.css.height.slice(0, -2));
   this.ghost_indicator.draw(+this.css.height.slice(0, -2));
}
EVR.Level.Map.Display.prototype.advance_player = function(ii)
{
   var ghost = this.ghost_indicator;
   if (ghost.attached && ghost.get_position() == ii)
   {
      ghost.remove();
   }
   this.player_indicator.advance(ii);
}
EVR.Level.Map.Display.prototype.advance_ghost = function(ii)
{
   var ghost = this.ghost_indicator;
   var player = this.player_indicator;
   if (!player.attached || player.get_position() != ii)
   {
      ghost.advance(ii);
   }
   else
   {
      ghost.remove();
   }
}
EVR.Level.Map.Display.prototype.get_player_position = function()
{
   return this.player_indicator.get_position();
}
EVR.Level.Map.Display.prototype.toString = function()
{
   return "[object EVR.Level.Map.Display]";
}
54.224.166.141
54.224.166.141
54.224.166.141
 
November 9, 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

↠ RSS Feed ↞