Вход Регистрация
Файл: includes/pages/class.ShowResearchPage.php
Строк: 399
<?php

##############################################################################
# *                                                                             #
# * XG PROYECT                                                                 #
# *                                                                           #
# * @copyright Copyright (C) 2008 - 2009 By lucky from xgproyect.net           #
# *                                                                             #
# *                                                                             #
# *  This program is free software: you can redistribute it and/or modify    #
# *  it under the terms of the GNU General Public License as published by    #
# *  the Free Software Foundation, either version 3 of the License, or       #
# *  (at your option) any later version.                                     #
# *                                                                             #
# *  This program is distributed in the hope that it will be useful,         #
# *  but WITHOUT ANY WARRANTY; without even the implied warranty of             #
# *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             #
# *  GNU General Public License for more details.                             #
# *                                                                             #
##############################################################################

if(!defined('INSIDE')){ die(header("location:../../"));}

class 
ShowResearchPage
{
    private function 
CheckLabSettingsInQueue ($CurrentPlanet)
    {
        if (
$CurrentPlanet['b_building_id'] != 0)
        {
            
$CurrentQueue = $CurrentPlanet['b_building_id'];
            if (
strpos ($CurrentQueue, ";"))
            {
                
// FIX BY LUCKY - IF THE LAB IS IN QUEUE THE USER CANT RESEARCH ANYTHING...
                
$QueueArray        = explode (";", $CurrentQueue);

                for(
$i = 0; $i < MAX_BUILDING_QUEUE_SIZE; $i++)
                {
                    
$ListIDArray    = explode (",", $QueueArray[$i]);
                    
$Element        = $ListIDArray[0];

                    if(
$Element == 31)
                        break;
                }
                
// END - FIX
            
}
            else
            {
                
$CurrentBuilding = $CurrentQueue;
            }

            if (
$CurrentBuilding == 31 or $Element == 31) // ADDED (or $Element == 31) BY LUCKY
            
{
                
$return = false;
            }
            else
            {
                
$return = true;
            }
        }
        else
        {
            
$return = true;
        }

        return 
$return;
    }

    private function 
GetRestPrice ($user, $planet, $Element, $userfactor = true)
    {
        global 
$pricelist, $resource, $lang;

        if (
$userfactor)
        {
            
$level = ($planet[$resource[$Element]]) ? $planet[$resource[$Element]] : $user[$resource[$Element]];
        }

        
$array = array(
        
'metal'      => $lang['Metal'],
        
'crystal'    => $lang['Crystal'],
        
'deuterium'  => $lang['Deuterium'],
        
'energy_max' => $lang['Energy']
        );

        
$text  = "<br><font color="#7f7f7f">" . $lang['bd_remaining'] . ": ";
        
foreach ($array as $ResType => $ResTitle)
        {
            if (
$pricelist[$Element][$ResType] != 0)
            {
                
$text .= $ResTitle . ": ";
                if (
$userfactor)
                {
                    
$cost = floor($pricelist[$Element][$ResType] * pow($pricelist[$Element]['factor'], $level));
                }
                else
                {
                    
$cost = floor($pricelist[$Element][$ResType]);
                }
                if (
$cost > $planet[$ResType])
                {
                    
$text .= "<b style="color: rgb(127, 95, 96);">". pretty_number($planet[$ResType] - $cost) ."</b> ";
                }
                else
                {
                    
$text .= "<b style="color: rgb(95, 127, 108);">". pretty_number($planet[$ResType] - $cost) ."</b> ";
                }
            }
        }
        
$text .= "</font>";

        return 
$text;
    }

    public function 
__construct (&$CurrentPlanet, $CurrentUser, $InResearch, $ThePlanet)
    {
        global 
$lang, $resource, $reslist, $phpEx, $dpath, $game_config, $_GET;

        include_once(
$xgp_root . 'includes/functions/IsTechnologieAccessible.' . $phpEx);
        include_once(
$xgp_root . 'includes/functions/GetElementPrice.' . $phpEx);

        
$PageParse            = $lang;
        
$NoResearchMessage     = "";
        
$bContinue             = true;

        if (
$CurrentPlanet[$resource[31]] == 0)
            
message($lang['bd_lab_required'], '', '', true);

        if (!
$this->CheckLabSettingsInQueue ($CurrentPlanet))
        {
            
$NoResearchMessage = $lang['bd_building_lab'];
            
$bContinue         = false;
        }

        if (isset(
$_GET['cmd']))
        {
            
$TheCommand     = $_GET['cmd'];
            
$Techno         = intval($_GET['tech']);

            if ( isset (
$Techno) )
            {
                if (!
strstr ( $Techno, ",") && !strchr ( $Techno, " ") &&
                    !
strchr ( $Techno, "+") && !strchr ( $Techno, "*") &&
                    !
strchr ( $Techno, "~") && !strchr ( $Techno, "=") &&
                    !
strchr ( $Techno, ";") && !strchr ( $Techno, "'") &&
                    !
strchr ( $Techno, "#") && !strchr ( $Techno, "-") &&
                    !
strchr ( $Techno, "_") && !strchr ( $Techno, "[") &&
                    !
strchr ( $Techno, "]") && !strchr ( $Techno, ".") &&
                    !
strchr ( $Techno, ":"))
                {
                    if ( 
in_array($Techno, $reslist['tech']) )
                    {
                        if ( 
is_array ($ThePlanet) )
                        {
                            
$WorkingPlanet = $ThePlanet;
                        }
                        else
                        {
                            
$WorkingPlanet = $CurrentPlanet;
                        }

                        switch(
$TheCommand)
                        {
                            case 
'cancel':
                                if (
$ThePlanet['b_tech_id'] == $Techno)
                                {
                                    
$costs                        = GetBuildingPrice($CurrentUser, $WorkingPlanet, $Techno);
                                    
$WorkingPlanet['metal']      += $costs['metal'];
                                    
$WorkingPlanet['crystal']    += $costs['crystal'];
                                    
$WorkingPlanet['deuterium']  += $costs['deuterium'];
                                    
$WorkingPlanet['b_tech_id']   = 0;
                                    
$WorkingPlanet["b_tech"]      = 0;
                                    
$CurrentUser['b_tech_planet'] = 0;
                                    
$UpdateData                   = true;
                                    
$InResearch                   = false;
                                }
                                break;
                            case 
'search':
                                if (
IsTechnologieAccessible($CurrentUser, $WorkingPlanet, $Techno) && IsElementBuyable($CurrentUser, $WorkingPlanet, $Techno))
                                {
                                    
$costs                        = GetBuildingPrice($CurrentUser, $WorkingPlanet, $Techno);
                                    
$WorkingPlanet['metal']      -= $costs['metal'];
                                    
$WorkingPlanet['crystal']    -= $costs['crystal'];
                                    
$WorkingPlanet['deuterium']  -= $costs['deuterium'];
                                    
$WorkingPlanet["b_tech_id"]   = $Techno;
                                    
$WorkingPlanet["b_tech"]      = time() + GetBuildingTime($CurrentUser, $WorkingPlanet, $Techno);
                                    
$CurrentUser["b_tech_planet"] = $WorkingPlanet["id"];
                                    
$UpdateData                   = true;
                                    
$InResearch                   = true;
                                }
                                break;
                        }
                        if (
$UpdateData == true)
                        {
                            
$QryUpdatePlanet  = "UPDATE {{table}} SET ";
                            
$QryUpdatePlanet .= "`b_tech_id` = '".   $WorkingPlanet['b_tech_id']   ."', ";
                            
$QryUpdatePlanet .= "`b_tech` = '".      $WorkingPlanet['b_tech']      ."', ";
                            
$QryUpdatePlanet .= "`metal` = '".       $WorkingPlanet['metal']       ."', ";
                            
$QryUpdatePlanet .= "`crystal` = '".     $WorkingPlanet['crystal']     ."', ";
                            
$QryUpdatePlanet .= "`deuterium` = '".   $WorkingPlanet['deuterium']   ."' ";
                            
$QryUpdatePlanet .= "WHERE ";
                            
$QryUpdatePlanet .= "`id` = '".          $WorkingPlanet['id']          ."';";
                            
doquery( $QryUpdatePlanet, 'planets');

                            
$QryUpdateUser  = "UPDATE {{table}} SET ";
                            
$QryUpdateUser .= "`b_tech_planet` = '". $CurrentUser['b_tech_planet'] ."' ";
                            
$QryUpdateUser .= "WHERE ";
                            
$QryUpdateUser .= "`id` = '".            $CurrentUser['id']            ."';";
                            
doquery( $QryUpdateUser, 'users');
                        }

                        
$CurrentPlanet = $WorkingPlanet;
                        if (
is_array ($ThePlanet))
                        {
                            
$ThePlanet     = $WorkingPlanet;
                        }
                        else
                        {
                            
$CurrentPlanet = $WorkingPlanet;
                            if (
$TheCommand == 'search')
                            {
                                
$ThePlanet = $CurrentPlanet;
                            }
                        }
                    }
                }
                else
                    die(
header("location:game.php?page=buildings&mode=research"));
            }
            else
            {
                
$bContinue = false;
            }

            
header ("Location: game.php?page=buildings&mode=research");

        }

        
$TechRowTPL = gettemplate('buildings/buildings_research_row');
        
$TechScrTPL = gettemplate('buildings/buildings_research_script');

        foreach(
$lang['tech'] as $Tech => $TechName)
        {
            if (
$Tech > 105 && $Tech <= 199)
            {
                if ( 
IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Tech))
                {
                    
$RowParse['dpath']       = $dpath;
                    
$RowParse['tech_id']     = $Tech;
                    
$building_level          = $CurrentUser[$resource[$Tech]];

                    if(
$Tech == 106)
                    {
                        
$RowParse['tech_level']  = ($building_level == 0 ) ? "" : "(". $lang['bd_lvl'] . " ".$building_level .")" ;
                        
$RowParse['tech_level']  .= ($CurrentUser['rpg_espion'] == 0) ? "" : "<strong><font color="lime"> +" . ($CurrentUser['rpg_espion'] * ESPION) . $lang['bd_spy']    . "</font></strong>";
                    }
                    elseif(
$Tech == 108)
                    {
                        
$RowParse['tech_level']  = ($building_level == 0) ? "" : "(". $lang['bd_lvl'] . " ".$building_level .")";
                        
$RowParse['tech_level']  .= ($CurrentUser['rpg_commandant'] == 0) ? "" : "<strong><font color="lime"> +" . ($CurrentUser['rpg_commandant'] * COMMANDANT) . $lang['bd_commander'] . "</font></strong>";
                    }
                    else
                        
$RowParse['tech_level']  = ($building_level == 0) ? "" : "(". $lang['bd_lvl'] . " ".$building_level." )";

                    
$RowParse['tech_name']   = $TechName;
                    
$RowParse['tech_descr']  = $lang['res']['descriptions'][$Tech];
                    
$RowParse['tech_price']  = GetElementPrice($CurrentUser, $CurrentPlanet, $Tech);
                    
$SearchTime              = GetBuildingTime($CurrentUser, $CurrentPlanet, $Tech);
                    
$RowParse['search_time'] = ShowBuildTime($SearchTime);
                    
$RowParse['tech_restp']  = "". $this->GetRestPrice ($CurrentUser, $CurrentPlanet, $Tech, true);
                    
$CanBeDone               = IsElementBuyable($CurrentUser, $CurrentPlanet, $Tech);

                    if (!
$InResearch)
                    {
                        
$LevelToDo = 1 + $CurrentUser[$resource[$Tech]];
                        if (
$CanBeDone)
                        {
                            if (!
$this->CheckLabSettingsInQueue ( $CurrentPlanet ))
                            {
                                if (
$LevelToDo == 1)
                                    
$TechnoLink  = "<font color=#FF0000>".$lang['bd_research']."</font>";
                                else
                                    
$TechnoLink  = "<font color=#FF0000>".$lang['bd_research']."<br>".$lang['bd_lvl']." ".$LevelToDo."</font>";

                            }
                            else
                            {
                                
$TechnoLink  = "<a href="game.php?page=buildings&mode=research&cmd=search&tech=".$Tech."">";
                                if (
$LevelToDo == 1)
                                    
$TechnoLink .= "<font color=#00FF00>".$lang['bd_research']."</font>";
                                else
                                    
$TechnoLink .= "<font color=#00FF00>".$lang['bd_research']."<br>".$lang['bd_lvl']." ".$LevelToDo."</font>";

                                
$TechnoLink  .= "</a>";
                            }
                        }
                        else
                        {
                            if (
$LevelToDo == 1)
                                
$TechnoLink  = "<font color=#FF0000>".$lang['bd_research']."</font>";
                            else
                                
$TechnoLink  = "<font color=#FF0000>".$lang['bd_research']."<br>".$lang['bd_lvl']." ".$LevelToDo."</font>";
                        }
                    }
                    else
                    {
                        if (
$ThePlanet["b_tech_id"] == $Tech)
                        {
                            
$bloc       = $lang;
                            if (
$ThePlanet['id'] != $CurrentPlanet['id'])
                            {
                                
$bloc['tech_time']  = $ThePlanet["b_tech"] - time();
                                
$bloc['tech_name']  = "на<br>". $ThePlanet["name"];
                                
$bloc['tech_home']  = $ThePlanet["id"];
                                
$bloc['tech_id']    = $ThePlanet["b_tech_id"];
                            }
                            else
                            {
                                
$bloc['tech_time']  = $CurrentPlanet["b_tech"] - time();
                                
$bloc['tech_name']  = "";
                                
$bloc['tech_home']  = $CurrentPlanet["id"];
                                
$bloc['tech_id']    = $CurrentPlanet["b_tech_id"];
                            }
                            
$TechnoLink  = parsetemplate($TechScrTPL, $bloc);
                        }
                        else
                        {
                            
$TechnoLink  = "<center>-</center>";
                        }
                    }
                    
$RowParse['tech_link']  = $TechnoLink;
                    
$TechnoList            .= parsetemplate($TechRowTPL, $RowParse);
                }
            }
        }

        
$PageParse['noresearch']  = $NoResearchMessage;
        
$PageParse['technolist']  = $TechnoList;
        
$PageParse['research_lvl']= "<b>".($lang['tech'][31])."</b> (".$lang['in_level'].": <font color='#00FF00'>".$CurrentPlanet[$resource[31]]."</font>)"; // вот эту строчку
        
$Page                    .= parsetemplate(gettemplate('buildings/buildings_research'), $PageParse);

        
display($Page);
    }
}
Онлайн: 0
Реклама