Exemple #1
0
 public static function renderPage($address)
 {
     global $MAIN_DIR;
     $item = tools::getPage($address);
     $template = file_get_contents('templates/athlas.htm');
     //        Если это не неведомое, не песочница и не меморизы - обрезаем сцену под коэффициент
     if (!tools::startswith($address, 'unknown') && !tools::startswith($address, 'common/memories') && $_SESSION['doctor_skills']['text_size']) {
         $item['scen'] = tools::splice_text($item['scen'], $_SESSION['doctor_skills']['text_size']);
     }
     if (!$_SESSION['labels']['memories_passed']) {
         $_SESSION['labels']['memories_passed'] = array();
     }
     //        Если это меморизы, и на этой странице уже были - разрешаем второй раз не читать
     if (strpos($_SESSION['current_page'], 'memories') && in_array($_SESSION['current_page'], $_SESSION['labels']['memories_passed'])) {
         $arr = tools::split_text($item['scen']);
         //            print_r($arr);
         if (count($arr) > 9) {
             $item['scen'] = join('', array_slice($arr, 0, 5)) . "{3mm}...{3mm}" . join("", array_slice($arr, -4));
         }
     }
     $out = $template;
     if (!$item['image']) {
         $item['image'] = $item['page'] . '.jpg';
     }
     $item['athlas_page'] = '';
     $sack = new cStoneSet($_SESSION['sack']);
     $item['sack_stones'] = $sack->getStonesText();
     $heap = new cStoneSet($_SESSION['heap']);
     $item['heap_stones'] = $heap->getStonesText();
     $patient = $_SESSION['patient'];
     if ($item['todos']) {
         $item['todos'] = "<img src='../images/question.png' class=img_question>" . $item['todos'];
     }
     foreach ($item as $key => $value) {
         $out = str_replace("{" . $key . "}", $value, $out);
     }
     $out = tools::replace_hiddens($out);
     $out = tools::replace_template_conditions($out);
     $out = tools::replace_page_fog($out);
     $out = tools::replace_template_conditions($out);
     // Заменяем hypno_next
     if (count($_SESSION['labels']['hypno_page_sequence'])) {
         $out = str_replace('{hypno_next}', 'Иди {page:' . $_SESSION['labels']['hypno_page_sequence'][0] . '}', $out);
     } else {
         $out = str_replace('{hypno_next}', '{hypno_end}', $out);
     }
     $out = preg_replace('~\\{awake:(.*?)\\}~', 'Перейди {page:unknown/sandbox/random_\\1}', $out);
     $out = preg_replace('~\\{page:(.*?)\\}~', '<div class=button><a onclick="transfer(\'\\1\');">НА СЛЕДУЮЩУЮ СТРАНИЦУ</a></div>', $out);
     $repl = file_get_contents($MAIN_DIR . "replacements.py");
     $repl = substr($repl, strpos($repl, '{'));
     $repl = json_decode($repl, 1);
     foreach ($repl as $key => $value) {
         $out = str_replace("{" . $key . "}", $value, $out);
     }
     //        die("<pre>".$out."</pre>");
     return $out;
 }
     }
     $_SESSION['current_page'] = implode('/', $address);
     $_SESSION['current_page'] = tools::decipher_address($_SESSION['current_page']);
     $page = tools::getPage($_SESSION['current_page']);
 }
 //        Берем новую страницу и смотрим, есть ли на ней коды
 if ($page['code'] && $_SESSION['page_last_code_executed'] != $_SESSION['current_page']) {
     eval($page['code'] . ';');
 }
 $_SESSION['page_last_code_executed'] = $_SESSION['current_page'];
 //        Если это - очередная страница гипносеквенса, отрезаем от гипносеквенса первый элемент
 if ($_SESSION['current_page'] == $_SESSION['labels']['hypno_page_sequence'][0]) {
     $_SESSION['labels']['hypno_page_sequence'] = array_slice($_SESSION['labels']['hypno_page_sequence'], 1);
 }
 // Костыль для эксперимента: получение бонуса
 if (tools::startswith($_SESSION['current_page'], 'common/experiment/death_after')) {
     # Определяем бонус
     //        $bonus = $bonuses[$_SESSION['patient']['color']][$_SESSION['exp']['drug']];
     $penalty_prx = 'Что-то в тебе неуловимо изменилось... <br>';
     $penalty_sfx = '<br/>Этот эффект будет длиться следующие 9 часов и НЕ может быть снят НИКАКИМ способом. НО следующая порция препарата "Непобедимый" ЗАМЕНИТ его на свои, НОВЫЕ эффекты.';
     $penalty2_sfx = '<br/>Эти эффекты будут длиться следующие 9 часов и НЕ могут быть сняты НИКАКИМ способом. НО следующая порция препарата "Непобедимый" ЗАМЕНИТ их на свои, НОВЫЕ эффекты.';
     if ($year == '1945') {
         $bonus = $new_bonuses[$_SESSION['exp']['drug']][$_SESSION['labels']['selected_psychotype']];
     } else {
         $bonus = $bonuses[$_SESSION['patient']['color']][$_SESSION['exp']['drug']];
     }
     $penalty = $_SESSION['exp']['penalty'];
     $_SESSION['messages'][] = $_SESSION['labels']['exp_good_scenes'];
     $_SESSION['messages'][] = $penalty_prx . $bonus . "<br>" . ($penalty ? $penalty . $penalty2_sfx : $penalty_sfx);
 }
 $_SESSION['sack'] = $sack->getStones();