<?php

/**
 * BatimentBuildingPage.php
 *
 * @version 1.1
 * @copyright 2008 by Chlorel for XNova
 */

function BatimentBuildingPage (&$CurrentPlanet, $CurrentUser) {
    global $lang, $resource, $reslist, $phpEx, $dpath, $game_config, $_GET, $user;

    CheckPlanetUsedFields ( $CurrentPlanet );

    // Tables des batiments possibles par type de planete
    $Allowed['1'] = array( 51, 52, 53, 54, 55, 56, 1,  2,  3, 4, 5, 6, 7, 8, 12, 14, 15, 21, 22, 23, 24, 25, 26, 27, 31, 33, 34, 35, 44,  45,  46,  47,  48, 49);
    $Allowed['3'] = array( 12, 14, 21, 22, 23, 24, 25, 26, 27, 34, 41, 42, 43);

    // Boucle d'interpretation des eventuelles commandes
    if (isset($_GET['cmd'])) {
        // On passe une commande
        $bDoItNow   = false;
        $TheCommand = $_GET['cmd'];
        $Element    = $_GET['building'];
        $ListID     = $_GET['listid'];
        if       ( isset ( $Element )) {
            if ( !strchr ( $Element, " ") ) {
                if (in_array( trim($Element), $Allowed[$CurrentPlanet['planet_type']])) {
                    $bDoItNow = true;
                }
            }
        } elseif ( isset ( $ListID )) {
            $bDoItNow = true;
        }
        if ($bDoItNow == true) {
            switch($TheCommand){
                case 'cancel':
                    // Interrompre le premier batiment de la queue
                    CancelBuildingFromQueue ( $CurrentPlanet, $CurrentUser );
                    break;
                case 'remove':
                    // Supprimer un element de la queue (mais pas le premier)
                    // $RemID -> element de la liste a supprimer
                    RemoveBuildingFromQueue ( $CurrentPlanet, $CurrentUser, $ListID );
                    break;
                case 'insert':
                    // Insere un element dans la queue
                    AddBuildingToQueue ( $CurrentPlanet, $CurrentUser, $Element, true );
                    break;
                case 'destroy':
                    // Detruit un batiment deja construit sur la planete !
                    AddBuildingToQueue ( $CurrentPlanet, $CurrentUser, $Element, false );
                    break;
                default:
                    break;
            } // switch
        }
    }
// Petit fix pour empêcher d'avoir des ressources gratuites
    // lorsque le champ `b_building_id` est vide by Win'
    if ( empty($CurrentPlanet['b_building_id']) )
    {
        $CurrentPlanetID = intval($CurrentPlanet['id']);
        
        $Qry = <<<SQL
                        UPDATE             {{table}}
                        SET             `b_building_id` = '0',
                                        `b_building` = '0'
                        WHERE            `id` = '{$CurrentPlanetID}';
SQL;
    
        doquery($Qry, 'planets');
        
        $CurrentPlanet['b_building_id'] = "0";
        $CurrentPlanet['b_building'] = 0;
    }
    SetNextQueueElementOnTop ( $CurrentPlanet, $CurrentUser );

    $Queue = ShowBuildingQueue ( $CurrentPlanet, $CurrentUser );

    // On enregistre ce que l'on a modifié dans planet !
    BuildingSavePlanetRecord ( $CurrentPlanet );
    // On enregistre ce que l'on a eventuellement modifié dans users
    BuildingSaveUserRecord ( $CurrentUser );

   $MaxQueueBatiment  = doquery("SELECT * FROM {{table}} WHERE id={$user['id']}",'users',true);
    $iMaxQueueBatiment = $MaxQueueBatiment['queuebatiment_tech'] + MAX_BUILDING_QUEUE_SIZE;

if ($Queue['lenght'] < iMaxQueueBatiment) {
        $CanBuildElement = true;
    } else {
        $CanBuildElement = false;
    }
    $SubTemplate         = gettemplate('buildings_builds_row');
    $BuildingPage        = "";
    foreach($lang['tech'] as $Element => $ElementName) {
        if (in_array($Element, $Allowed[$CurrentPlanet['planet_type']])) {
            $CurrentMaxFields      = CalculateMaxPlanetFields($CurrentPlanet);
            if ($CurrentPlanet["field_current"] < ($CurrentMaxFields - $Queue['lenght'])) {
                $RoomIsOk = true;
            } else {
                $RoomIsOk = false;
            }

            if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) {
                $HaveRessources        = IsElementBuyable ($CurrentUser, $CurrentPlanet, $Element, true, false);
                
                $parse['dpath']        = $dpath;
                $parse['i']            = $Element;
                $parse['element_name'] = $ElementName;
                $BuildingLevel         = $CurrentPlanet[$resource[$Element]];
                $parse['nivel']        = ($BuildingLevel == 0) ? "" : " ". $lang['level'] ." ". $BuildingLevel ."";
                $parse['n']            = $ElementName;
                $parse['descriptions'] = $lang['res']['descriptions'][$Element];
                $ElementBuildTime      = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element);
                $parse['time']         = ShowBuildTime($ElementBuildTime);
                $parse['price']        = GetElementPrice($CurrentUser, $CurrentPlanet, $Element);
                $parse['rest_price']   = GetRestPrice($CurrentUser, $CurrentPlanet, $Element);
                $parse['click']        = '';
                $NextBuildLevel        = $CurrentPlanet[$resource[$Element]] + 1;

                if ($Element == 31) {
                    // Spécial Laboratoire
                    if ($CurrentUser["b_tech_planet"] != 0 &&     // Si pas 0 y a une recherche en cours
                        $game_config['BuildLabWhileRun'] != 1) {  // Variable qui contient le parametre
                        // On verifie si on a le droit d'evoluer pendant les recherches (Setting dans config)
                        $parse['click'] = "<font color=#FF0000>". $lang['in_working'] ."</font>";
                    }
                }
                if       ($parse['click'] != '') {
                    // Bin on ne fait rien, vu que l'on l'a deja fait au dessus !!
                } elseif ($RoomIsOk && $CanBuildElement) {
                    if ($Queue['lenght'] == 0) {
                        if ($NextBuildLevel == 1) {
                            if ( $HaveRessources == true ) {
                                $parse['click'] = "<a href=\"?cmd=insert&building=". $Element ."\"><font color=#00FF00>". $lang['BuildFirstLevel'] ."</font></a>";
                            } else {
                                $parse['click'] = "<font color=#FF0000>". $lang['BuildFirstLevel'] ."</font>";
                            }
                        } else {
                            if ( $HaveRessources == true ) {
                                $parse['click'] = "<a href=\"?cmd=insert&building=". $Element ."\"><font color=#00FF00>". $lang['BuildNextLevel'] ." ". $NextBuildLevel ."</font></a>";
                            } else {
                                $parse['click'] = "<font color=#FF0000>". $lang['BuildNextLevel'] ." ". $NextBuildLevel ."</font>";
                            }
                        }
                    } else {
                        $parse['click'] = "<a href=\"?cmd=insert&building=". $Element ."\"><font color=#00FF00>". $lang['InBuildQueue'] ."</font></a>";
                    }
                } elseif ($RoomIsOk && !$CanBuildElement) {
                    if ($NextBuildLevel == 1) {
                        $parse['click'] = "<font color=#FF0000>". $lang['BuildFirstLevel'] ."</font>";
                    } else {
                        $parse['click'] = "<font color=#FF0000>". $lang['BuildNextLevel'] ." ". $NextBuildLevel ."</font>";
                    }
                } else {
                    $parse['click'] = "<font color=#FF0000>". $lang['NoMoreSpace'] ."</font>";
                }

                $BuildingPage .= parsetemplate($SubTemplate, $parse);
            }
        }
    }

    $parse                         = $lang;

    // Faut il afficher la liste de construction ??
    if ($Queue['lenght'] > 0) {
        $parse['BuildListScript']  = InsertBuildListScript ( "buildings" );
        $parse['BuildList']        = $Queue['buildlist'];
    } else {
        $parse['BuildListScript']  = "";
        $parse['BuildList']        = "";
    }

    $parse['planet_field_current'] = $CurrentPlanet["field_current"];
    $parse['planet_field_max']     = $CurrentPlanet['field_max'] + ($CurrentPlanet[$resource[33]] * 5);
    $parse['field_libre']          = $parse['planet_field_max']  - $CurrentPlanet['field_current'];

    $parse['BuildingsList']        = $BuildingPage;

    $page                         .= parsetemplate(gettemplate('buildings_builds'), $parse);

    display($page, $lang['Builds']);
}

// -----------------------------------------------------------------------------------------------------------
// History version
// 1.0 Mise en module initiale (creation)
// 1.1 FIX interception cheat +1
// 1.2 FIX interception cheat destruction a -1

?>