Listes des pages par défaut

Liste de controllers :

  • article.php
  • user.php
  • quete.php
  • map.php
  • home.php
  • item.php
  • action.php
  • bot.php
  • template.php
  • fight.php
  • logger.php

Dedans, il y a le dossier actions avec ses propres controllers. Ici on gère toutes les actions d'un joueur sur la map (la bulle verte).

  • article.php
  • quete.php
  • sleep.php
  • object.php
  • html.php
  • sort.php
  • shop.php
  • php.php
  • move.php
  • fight.php

Si vous créez une de ces classes ci-dessus, vous écraserez les fichiers par défaut. En cas d'erreur ou mauvaise manipulation, il vous suffira de supprimer votre fichier pour que celui par défaut revienne.

Exemple avec le fichier template

<?php
 
defined( 'SYSPATH' ) OR die( 'No direct access allowed.' );
 
/**
 * Controller public du template. cette class est l'extends de tous
 * les controllers qui souhaitent afficher le template du jeu.
 *
 * @package Template
 * @author Pasquelin Alban
 * @copyright	 (c) 2011
 * @license http://www.openrpg.fr/license.html
 * @version 2.0.0
 */
abstract class Template_Controller extends Authentic_Controller {
 
  /**
   * Permet de faire passer l'object template qui sera la vue finale.
   * 
   * @var object protected
   */
  protected $template = FALSE;
  /**
   * Permet d'afficher ou non le template.
   * 
   * @var bool protected
   */
  protected $auto_render = TRUE;
  /**
   * Afficher ou non le menu de l'utilisateur.
   * 
   * @var bool protected
   */
  protected $menu = TRUE;
  /**
   * Afficher les informations de l'utilisateur.
   * 
   * @var bool protected
   */
  protected $information_menu = TRUE;
  /**
   * Afficher l'inventaire de l'utilisateur.
   * 
   * @var bool protected
   */
  protected $inventaire_menu = TRUE;
  /**
   * Afficher l'équipement de l'utilisateur.
   * 
   * @var bool protected
   */
  protected $stuff_menu = TRUE;
  /**
   * listing des fichiers JS à charger dans le template propre au systeme.
   * 
   * @var array protected
   */
  protected $script = FALSE;
  /**
   * listing des fichiers JS à charger dans le template propre à l'utilisateur.
   * 
   * @var array protected
   */
  protected $my_script = FALSE;
  /**
   * listing des fichiers CSS à charger dans le template mais qui ne seront pas compressés.
   * 
   * @var array protected
   */
  protected $script_no_compress = FALSE;
  /**
   * listing des fichiers CSS à charger dans le template.
   * 
   * @var array protected
   */
  protected $css = FALSE;
 
  public function __construct()
  {
	parent::__construct();
 
	$this->template = new View( 'template/global' );
 
	$this->template->msg = $this->input->get( 'msg' );
 
	Event::add( 'system.post_controller', array( $this, '_render' ) );
  }
 
  /**
   * Traitement du template après le chargement de toutes les méthodes (page).
   * 
   * @return  void
   */
  public function _render()
  {
	if( $this->auto_render === TRUE )
	{
	  self::meta_link();
 
	  $this->template->login = $this->user ? TRUE : FALSE;
 
	  $this->template->admin = isset( $this->role->name ) && (in_array( 'admin', $this->role->name ) || in_array( 'modo', $this->role->name )) ? TRUE : FALSE;
 
	  if( $this->user && $this->menu )
		self::info_user_right();
 
	  $this->template->render( TRUE );
	}
  }
 
  /**
   * Gestion des informations utilisateur sur le template.
   * 
   * @return  void
   */
  private function info_user_right()
  {
	$this->template->menu = new View( 'user/menu' );
 
	if( $this->information_menu )
	{
	  $this->template->menu->information = new View( 'user/information' );
	  $this->template->menu->information->user = $this->user;
	}
 
	if( $this->inventaire_menu )
	{
	  $arrayItem = FALSE;
	  if( ($items = Item_Model::instance()->user_quick( $this->user->id ) ) !== FALSE )
		foreach( $items as $item )
		  $arrayItem[$item->item_position] = $item;
 
	  $this->template->menu->inventaire = new View( 'user/inventaire' );
	  $this->template->menu->inventaire->items = $arrayItem;
	}
 
	if( $this->stuff_menu )
	{
	  $attaque = $defense = 0;
	  $arrayStuff = FALSE;
 
	  if( ($stuffs = Item_Model::instance()->stuff_user( $this->user->id ) ) !== FALSE )
		foreach( $stuffs as $stuff )
		{
		  $arrayStuff[$stuff->item_position] = $stuff;
		  if( $stuff->attaque )
			$attaque += $stuff->attaque;
		  if( $stuff->defense )
			$defense += $stuff->defense;
		}
 
	  $this->template->menu->stuff = new View( 'user/stuff' );
	  $this->template->menu->stuff->items = $arrayStuff;
	  $this->template->menu->stuff->attaque = number_format( $attaque );
	  $this->template->menu->stuff->defense = number_format( $defense );
	}
  }
 
  /**
   * Methode : compresse les donnée en JSON
   */
  protected function json( array $txtArray )
  {
	foreach( $txtArray as $txt )
	  $display[] = json_encode( $txt );
 
	return implode( ',', $display );
  }
 
  /**
   * Gestion des JS/CSS du jeu.
   * 
   * @return  void
   */
  private function meta_link()
  {
	$script = array( 'jquery', 'jquery.tipsy', 'loading', 'inventaire' );
 
	$css = array( 'core' );
 
	$script[] = Router_Core::$controller;
	$css[] = Router_Core::$controller;
 
	if( $this->script && is_array( $this->script ) )
	  $script = array_merge( $script, $this->script );
 
	if( $this->css && is_array( $this->css ) )
	  $css = array_merge( $css, $this->css );
 
	$script = array_unique( $script );
	$css = array_unique( $css );
 
	$this->template->script = false;
 
	if( $this->script_no_compress )
	  $this->template->script = html::script( $this->script_no_compress );
 
	$this->template->script .= html::script( array( 'js/phpjs', Kohana::config( 'url.js' ) . 'js/compress--' . implode( '--', $script ) ) );
 
	if( $this->my_script )
	  $this->template->script .= html::script( $this->my_script );
 
	$this->template->css = html::stylesheet( 'css/compress--' . implode( '--', $css ) );
  }
 
}
 
?>
modif-page-cmj.txt · Dernière modification: 15/03/2011 11:50 par alban
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0