var/cache/dev/twig/ac/ac6427b8f2b1c8d7be637e55166546c3.php line 45

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. use Twig\TemplateWrapper;
  15. /* public/game_list.html.twig */
  16. class __TwigTemplate_5e4328a7e7c390081bddb920dbfb079d extends Template
  17. {
  18.     private Source $source;
  19.     /**
  20.      * @var array<string, Template>
  21.      */
  22.     private array $macros = [];
  23.     public function __construct(Environment $env)
  24.     {
  25.         parent::__construct($env);
  26.         $this->source $this->getSourceContext();
  27.         $this->blocks = [
  28.             'title' => [$this'block_title'],
  29.             'public_stylesheets' => [$this'block_public_stylesheets'],
  30.             'body' => [$this'block_body'],
  31.         ];
  32.     }
  33.     protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  34.     {
  35.         // line 1
  36.         return "public/base.html.twig";
  37.     }
  38.     protected function doDisplay(array $context, array $blocks = []): iterable
  39.     {
  40.         $macros $this->macros;
  41.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  42.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""public/game_list.html.twig"));
  43.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  44.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""public/game_list.html.twig"));
  45.         $this->parent $this->loadTemplate("public/base.html.twig""public/game_list.html.twig"1);
  46.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  47.         
  48.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  49.         
  50.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  51.     }
  52.     // line 3
  53.     /**
  54.      * @return iterable<null|scalar|\Stringable>
  55.      */
  56.     public function block_title(array $context, array $blocks = []): iterable
  57.     {
  58.         $macros $this->macros;
  59.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  60.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  61.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  62.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  63.         yield "openrpg.ru";
  64.         
  65.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  66.         
  67.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  68.         yield from [];
  69.     }
  70.     // line 5
  71.     /**
  72.      * @return iterable<null|scalar|\Stringable>
  73.      */
  74.     public function block_public_stylesheets(array $context, array $blocks = []): iterable
  75.     {
  76.         $macros $this->macros;
  77.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  78.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""public_stylesheets"));
  79.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  80.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""public_stylesheets"));
  81.         // line 6
  82.         yield "    <link rel=\"stylesheet\" href=\"";
  83.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("data/game-list.css"), "html"nulltrue);
  84.         yield "\">
  85. ";
  86.         
  87.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  88.         
  89.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  90.         yield from [];
  91.     }
  92.     // line 9
  93.     /**
  94.      * @return iterable<null|scalar|\Stringable>
  95.      */
  96.     public function block_body(array $context, array $blocks = []): iterable
  97.     {
  98.         $macros $this->macros;
  99.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  100.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  101.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  102.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  103.         // line 10
  104.         yield "<div id=\"tooltip\" class=\"tooltip\"></div>
  105. <!-- ⭐ Топ игр -->
  106. <section class=\"section\">
  107.   <h2><i class=\"fa-solid fa-crown\"></i> Топ приключений</h2>
  108.   <div class=\"cards\">
  109.     <!-- Большая -->
  110.     ";
  111.         // line 18
  112.         if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'18$this->source); })())) > 0)) {
  113.             // line 19
  114.             yield "    ";
  115.             $context["world"] = CoreExtension::getAttribute($this->env$this->source, (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'19$this->source); })()), 0, [], "array"falsefalsefalse19);
  116.             // line 20
  117.             yield "    <div class=\"card-big\" style=\"background-image:url('";
  118.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world"]) || array_key_exists("world"$context) ? $context["world"] : (function () { throw new RuntimeError('Variable "world" does not exist.'20$this->source); })()), "background", [], "any"falsefalsefalse20), "html"nulltrue);
  119.             yield "');\" onclick=\"window.location.href='";
  120.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("public_world_view", ["id" => CoreExtension::getAttribute($this->env$this->source, (isset($context["world"]) || array_key_exists("world"$context) ? $context["world"] : (function () { throw new RuntimeError('Variable "world" does not exist.'20$this->source); })()), "id", [], "any"falsefalsefalse20)]), "html"nulltrue);
  121.             yield "'\">
  122.       <div class=\"card-gradient\"></div>
  123.       <div class=\"card-info\">
  124.         <h3>";
  125.             // line 23
  126.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world"]) || array_key_exists("world"$context) ? $context["world"] : (function () { throw new RuntimeError('Variable "world" does not exist.'23$this->source); })()), "name", [], "any"falsefalsefalse23), "html"nulltrue);
  127.             yield "</h3>
  128.         <p>";
  129.             // line 24
  130.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world"]) || array_key_exists("world"$context) ? $context["world"] : (function () { throw new RuntimeError('Variable "world" does not exist.'24$this->source); })()), "description", [], "any"falsefalsefalse24), "html"nulltrue);
  131.             yield "</p>
  132.         <div class=\"badges\">
  133.           ";
  134.             // line 26
  135.             $context['_parent'] = $context;
  136.             $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env$this->source, (isset($context["world"]) || array_key_exists("world"$context) ? $context["world"] : (function () { throw new RuntimeError('Variable "world" does not exist.'26$this->source); })()), "publicBadges", [], "any"falsefalsefalse26));
  137.             foreach ($context['_seq'] as $context["_key"] => $context["badge"]) {
  138.                 // line 27
  139.                 yield "            <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> ";
  140.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["badge"], "html"nulltrue);
  141.                 yield "</div>
  142.           ";
  143.             }
  144.             $_parent $context['_parent'];
  145.             unset($context['_seq'], $context['_key'], $context['badge'], $context['_parent']);
  146.             $context array_intersect_key($context$_parent) + $_parent;
  147.             // line 29
  148.             yield "        </div>
  149.       </div>
  150.     </div>
  151.     ";
  152.         }
  153.         // line 33
  154.         yield "
  155.     <!-- Маленькие -->
  156.     ";
  157.         // line 35
  158.         if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'35$this->source); })())) > 1)) {
  159.             // line 36
  160.             yield "    ";
  161.             $context["world2"] = CoreExtension::getAttribute($this->env$this->source, (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'36$this->source); })()), 1, [], "array"falsefalsefalse36);
  162.             // line 37
  163.             yield "    <div class=\"card-half\" style=\"background-image:url('";
  164.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world2"]) || array_key_exists("world2"$context) ? $context["world2"] : (function () { throw new RuntimeError('Variable "world2" does not exist.'37$this->source); })()), "background", [], "any"falsefalsefalse37), "html"nulltrue);
  165.             yield "');\" onclick=\"window.location.href='";
  166.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("public_world_view", ["id" => CoreExtension::getAttribute($this->env$this->source, (isset($context["world2"]) || array_key_exists("world2"$context) ? $context["world2"] : (function () { throw new RuntimeError('Variable "world2" does not exist.'37$this->source); })()), "id", [], "any"falsefalsefalse37)]), "html"nulltrue);
  167.             yield "'\">
  168.       <div class=\"card-gradient\"></div>
  169.       <div class=\"card-info\">
  170.         <h3>";
  171.             // line 40
  172.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world2"]) || array_key_exists("world2"$context) ? $context["world2"] : (function () { throw new RuntimeError('Variable "world2" does not exist.'40$this->source); })()), "name", [], "any"falsefalsefalse40), "html"nulltrue);
  173.             yield "</h3>
  174.         <p>";
  175.             // line 41
  176.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world2"]) || array_key_exists("world2"$context) ? $context["world2"] : (function () { throw new RuntimeError('Variable "world2" does not exist.'41$this->source); })()), "description", [], "any"falsefalsefalse41), "html"nulltrue);
  177.             yield "</p>
  178.         <div class=\"badges\">
  179.           ";
  180.             // line 43
  181.             $context['_parent'] = $context;
  182.             $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env$this->source, (isset($context["world2"]) || array_key_exists("world2"$context) ? $context["world2"] : (function () { throw new RuntimeError('Variable "world2" does not exist.'43$this->source); })()), "publicBadges", [], "any"falsefalsefalse43));
  183.             foreach ($context['_seq'] as $context["_key"] => $context["badge"]) {
  184.                 // line 44
  185.                 yield "            <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> ";
  186.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["badge"], "html"nulltrue);
  187.                 yield "</div>
  188.           ";
  189.             }
  190.             $_parent $context['_parent'];
  191.             unset($context['_seq'], $context['_key'], $context['badge'], $context['_parent']);
  192.             $context array_intersect_key($context$_parent) + $_parent;
  193.             // line 46
  194.             yield "        </div>
  195.       </div>
  196.     </div>
  197.     ";
  198.         }
  199.         // line 50
  200.         yield "    
  201.     ";
  202.         // line 51
  203.         if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'51$this->source); })())) > 2)) {
  204.             // line 52
  205.             yield "    ";
  206.             $context["world3"] = CoreExtension::getAttribute($this->env$this->source, (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'52$this->source); })()), 2, [], "array"falsefalsefalse52);
  207.             // line 53
  208.             yield "    <div class=\"card-half\" style=\"background-image:url('";
  209.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world3"]) || array_key_exists("world3"$context) ? $context["world3"] : (function () { throw new RuntimeError('Variable "world3" does not exist.'53$this->source); })()), "background", [], "any"falsefalsefalse53), "html"nulltrue);
  210.             yield "');\" onclick=\"window.location.href='";
  211.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("public_world_view", ["id" => CoreExtension::getAttribute($this->env$this->source, (isset($context["world3"]) || array_key_exists("world3"$context) ? $context["world3"] : (function () { throw new RuntimeError('Variable "world3" does not exist.'53$this->source); })()), "id", [], "any"falsefalsefalse53)]), "html"nulltrue);
  212.             yield "'\">
  213.       <div class=\"card-gradient\"></div>
  214.       <div class=\"card-info\">
  215.         <h3>";
  216.             // line 56
  217.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world3"]) || array_key_exists("world3"$context) ? $context["world3"] : (function () { throw new RuntimeError('Variable "world3" does not exist.'56$this->source); })()), "name", [], "any"falsefalsefalse56), "html"nulltrue);
  218.             yield "</h3>
  219.         <p>";
  220.             // line 57
  221.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["world3"]) || array_key_exists("world3"$context) ? $context["world3"] : (function () { throw new RuntimeError('Variable "world3" does not exist.'57$this->source); })()), "description", [], "any"falsefalsefalse57), "html"nulltrue);
  222.             yield "</p>
  223.         <div class=\"badges\">
  224.           ";
  225.             // line 59
  226.             $context['_parent'] = $context;
  227.             $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env$this->source, (isset($context["world3"]) || array_key_exists("world3"$context) ? $context["world3"] : (function () { throw new RuntimeError('Variable "world3" does not exist.'59$this->source); })()), "publicBadges", [], "any"falsefalsefalse59));
  228.             foreach ($context['_seq'] as $context["_key"] => $context["badge"]) {
  229.                 // line 60
  230.                 yield "            <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> ";
  231.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["badge"], "html"nulltrue);
  232.                 yield "</div>
  233.           ";
  234.             }
  235.             $_parent $context['_parent'];
  236.             unset($context['_seq'], $context['_key'], $context['badge'], $context['_parent']);
  237.             $context array_intersect_key($context$_parent) + $_parent;
  238.             // line 62
  239.             yield "        </div>
  240.       </div>
  241.     </div>
  242.     ";
  243.         }
  244.         // line 66
  245.         yield "  </div>
  246. </section>
  247. <!-- 👥 Сообщество -->
  248. <section class=\"section\">
  249.   <h2><i class=\"fa-solid fa-users\"></i> Игры сообщества</h2>
  250.   <div class=\"community-wrapper\">
  251.     <div class=\"arrow arrow-left\" onclick=\"scrollCommunity(-1)\"><i class=\"fa-solid fa-chevron-left\"></i></div>
  252.     <div class=\"community-list\" id=\"communityList\">
  253.       <script>
  254.       const commGames = [
  255.         [\"Город шепотов\", \"Загадки улиц и опасные слухи.\"],
  256.         [\"Пески отчаяния\", \"Путешествие через проклятую пустыню.\"],
  257.         [\"Танец масок\", \"Бал, где каждый скрывает тайны.\"],
  258.         [\"Дом у бездны\", \"Шёпоты в глубине старого дома.\"],
  259.         [\"Охотники на звёзды\", \"Фэнтези с космическим оттенком.\"],
  260.         [\"Кукольный театр\", \"Жуткие представления и живые куклы.\"],
  261.         [\"Вкус грозы\", \"Город, где гроза меняет судьбы.\"],
  262.         [\"Серп луны\", \"Культ, приносящий лунные жертвы.\"]
  263.       ];
  264.       document.write(commGames.map(g =>
  265.         `<div class=\"community-card\">
  266.            <h4>\${g[0]}</h4>
  267.            <p>\${g[1]}</p>
  268.            <div class=\"badges\">
  269.              <div class=\"badge\"><i class=\"fa-solid fa-user-group\"></i> Сообщество</div>
  270.              <div class=\"badge\"><i class=\"fa-solid fa-star\"></i> Популярное</div>
  271.            </div>
  272.          </div>`
  273.       ).join(\"\"));
  274.       </script>
  275.     </div>
  276.     <div class=\"arrow arrow-right\" onclick=\"scrollCommunity(1)\"><i class=\"fa-solid fa-chevron-right\"></i></div>
  277.   </div>
  278. </section>
  279. <!-- Остальные миры -->
  280. ";
  281.         // line 106
  282.         if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'106$this->source); })())) > 3)) {
  283.             // line 107
  284.             yield "<section class=\"section\">
  285.   <h2><i class=\"fa-solid fa-dice\"></i> Ещё подборки</h2>
  286.   <div class=\"cards\">
  287.     ";
  288.             // line 110
  289.             $context['_parent'] = $context;
  290.             $context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::slice($this->env->getCharset(), (isset($context["worlds"]) || array_key_exists("worlds"$context) ? $context["worlds"] : (function () { throw new RuntimeError('Variable "worlds" does not exist.'110$this->source); })()), 3));
  291.             foreach ($context['_seq'] as $context["_key"] => $context["world"]) {
  292.                 // line 111
  293.                 yield "    <div class=\"card-half\" style=\"background-image:url('";
  294.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["world"], "background", [], "any"falsefalsefalse111), "html"nulltrue);
  295.                 yield "');\" onclick=\"window.location.href='";
  296.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("public_world_view", ["id" => CoreExtension::getAttribute($this->env$this->source$context["world"], "id", [], "any"falsefalsefalse111)]), "html"nulltrue);
  297.                 yield "'\">
  298.       <div class=\"card-gradient\"></div>
  299.       <div class=\"card-info\">
  300.         <h3>";
  301.                 // line 114
  302.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["world"], "name", [], "any"falsefalsefalse114), "html"nulltrue);
  303.                 yield "</h3>
  304.         <p>";
  305.                 // line 115
  306.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["world"], "description", [], "any"falsefalsefalse115), "html"nulltrue);
  307.                 yield "</p>
  308.         <div class=\"badges\">
  309.           ";
  310.                 // line 117
  311.                 $context['_parent'] = $context;
  312.                 $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env$this->source$context["world"], "publicBadges", [], "any"falsefalsefalse117));
  313.                 foreach ($context['_seq'] as $context["_key"] => $context["badge"]) {
  314.                     // line 118
  315.                     yield "            <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> ";
  316.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["badge"], "html"nulltrue);
  317.                     yield "</div>
  318.           ";
  319.                 }
  320.                 $_parent $context['_parent'];
  321.                 unset($context['_seq'], $context['_key'], $context['badge'], $context['_parent']);
  322.                 $context array_intersect_key($context$_parent) + $_parent;
  323.                 // line 120
  324.                 yield "        </div>
  325.       </div>
  326.     </div>
  327.     ";
  328.             }
  329.             $_parent $context['_parent'];
  330.             unset($context['_seq'], $context['_key'], $context['world'], $context['_parent']);
  331.             $context array_intersect_key($context$_parent) + $_parent;
  332.             // line 124
  333.             yield "  </div>
  334. </section>
  335. ";
  336.         }
  337.         // line 127
  338.         yield "
  339. <script>
  340. function scrollCommunity(dir) {
  341.   const list = document.getElementById(\"communityList\");
  342.   list.scrollBy({ left: dir * (list.clientWidth * 0.7), behavior: 'smooth' });
  343. }
  344. </script>
  345. <script>
  346.   document.addEventListener('DOMContentLoaded', function() {
  347.     const logoElement = document.getElementById('logo');
  348.     const tooltipElement = document.getElementById('tooltip');
  349.     const tooltipMessage = \"OpenRPG - это сервис для совместного прохождения ролевых игр, где истории написаны авторами, а ИИ служит их рассказчиком\";
  350.     let tooltipTimeoutId;
  351.     
  352.     if (logoElement && tooltipElement) {
  353.       logoElement.addEventListener('mouseenter', () => {
  354.         tooltipTimeoutId = setTimeout(() => {
  355.           tooltipElement.textContent = tooltipMessage;
  356.           tooltipElement.style.display = 'block';
  357.           tooltipElement.style.opacity = '1';
  358.           
  359.           // Позиционирование подсказки строго под заголовком
  360.           const logoRect = logoElement.getBoundingClientRect();
  361.           tooltipElement.style.left = logoRect.left + 'px';
  362.           tooltipElement.style.top = (logoRect.bottom + 5) + 'px';
  363.         }, 500); // Задержка 500 мс
  364.       });
  365.       
  366.       logoElement.addEventListener('mouseleave', () => {
  367.         clearTimeout(tooltipTimeoutId);
  368.         tooltipElement.style.opacity = '0';
  369.         setTimeout(() => {
  370.           tooltipElement.style.display = 'none';
  371.         }, 300); // Длительность fade-out
  372.       });
  373.     }
  374.   });
  375. </script>
  376. ";
  377.         
  378.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  379.         
  380.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  381.         yield from [];
  382.     }
  383.     /**
  384.      * @codeCoverageIgnore
  385.      */
  386.     public function getTemplateName(): string
  387.     {
  388.         return "public/game_list.html.twig";
  389.     }
  390.     /**
  391.      * @codeCoverageIgnore
  392.      */
  393.     public function isTraitable(): bool
  394.     {
  395.         return false;
  396.     }
  397.     /**
  398.      * @codeCoverageIgnore
  399.      */
  400.     public function getDebugInfo(): array
  401.     {
  402.         return array (  369 => 127,  364 => 124,  355 => 120,  346 => 118,  342 => 117,  337 => 115,  333 => 114,  324 => 111,  320 => 110,  315 => 107,  313 => 106,  271 => 66,  265 => 62,  256 => 60,  252 => 59,  247 => 57,  243 => 56,  234 => 53,  231 => 52,  229 => 51,  226 => 50,  220 => 46,  211 => 44,  207 => 43,  202 => 41,  198 => 40,  189 => 37,  186 => 36,  184 => 35,  180 => 33,  174 => 29,  165 => 27,  161 => 26,  156 => 24,  152 => 23,  143 => 20,  140 => 19,  138 => 18,  128 => 10,  115 => 9,  101 => 6,  88 => 5,  65 => 3,  42 => 1,);
  403.     }
  404.     public function getSourceContext(): Source
  405.     {
  406.         return new Source("{% extends 'public/base.html.twig' %}
  407. {% block title %}openrpg.ru{% endblock %}
  408. {% block public_stylesheets %}
  409.     <link rel=\"stylesheet\" href=\"{{ asset('data/game-list.css') }}\">
  410. {% endblock %}
  411. {% block body %}
  412. <div id=\"tooltip\" class=\"tooltip\"></div>
  413. <!-- ⭐ Топ игр -->
  414. <section class=\"section\">
  415.   <h2><i class=\"fa-solid fa-crown\"></i> Топ приключений</h2>
  416.   <div class=\"cards\">
  417.     <!-- Большая -->
  418.     {% if worlds|length > 0 %}
  419.     {% set world = worlds[0] %}
  420.     <div class=\"card-big\" style=\"background-image:url('{{ world.background }}');\" onclick=\"window.location.href='{{ path('public_world_view', {'id': world.id}) }}'\">
  421.       <div class=\"card-gradient\"></div>
  422.       <div class=\"card-info\">
  423.         <h3>{{ world.name }}</h3>
  424.         <p>{{ world.description }}</p>
  425.         <div class=\"badges\">
  426.           {% for badge in world.publicBadges %}
  427.             <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> {{ badge }}</div>
  428.           {% endfor %}
  429.         </div>
  430.       </div>
  431.     </div>
  432.     {% endif %}
  433.     <!-- Маленькие -->
  434.     {% if worlds|length > 1 %}
  435.     {% set world2 = worlds[1] %}
  436.     <div class=\"card-half\" style=\"background-image:url('{{ world2.background }}');\" onclick=\"window.location.href='{{ path('public_world_view', {'id': world2.id}) }}'\">
  437.       <div class=\"card-gradient\"></div>
  438.       <div class=\"card-info\">
  439.         <h3>{{ world2.name }}</h3>
  440.         <p>{{ world2.description }}</p>
  441.         <div class=\"badges\">
  442.           {% for badge in world2.publicBadges %}
  443.             <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> {{ badge }}</div>
  444.           {% endfor %}
  445.         </div>
  446.       </div>
  447.     </div>
  448.     {% endif %}
  449.     
  450.     {% if worlds|length > 2 %}
  451.     {% set world3 = worlds[2] %}
  452.     <div class=\"card-half\" style=\"background-image:url('{{ world3.background }}');\" onclick=\"window.location.href='{{ path('public_world_view', {'id': world3.id}) }}'\">
  453.       <div class=\"card-gradient\"></div>
  454.       <div class=\"card-info\">
  455.         <h3>{{ world3.name }}</h3>
  456.         <p>{{ world3.description }}</p>
  457.         <div class=\"badges\">
  458.           {% for badge in world3.publicBadges %}
  459.             <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> {{ badge }}</div>
  460.           {% endfor %}
  461.         </div>
  462.       </div>
  463.     </div>
  464.     {% endif %}
  465.   </div>
  466. </section>
  467. <!-- 👥 Сообщество -->
  468. <section class=\"section\">
  469.   <h2><i class=\"fa-solid fa-users\"></i> Игры сообщества</h2>
  470.   <div class=\"community-wrapper\">
  471.     <div class=\"arrow arrow-left\" onclick=\"scrollCommunity(-1)\"><i class=\"fa-solid fa-chevron-left\"></i></div>
  472.     <div class=\"community-list\" id=\"communityList\">
  473.       <script>
  474.       const commGames = [
  475.         [\"Город шепотов\", \"Загадки улиц и опасные слухи.\"],
  476.         [\"Пески отчаяния\", \"Путешествие через проклятую пустыню.\"],
  477.         [\"Танец масок\", \"Бал, где каждый скрывает тайны.\"],
  478.         [\"Дом у бездны\", \"Шёпоты в глубине старого дома.\"],
  479.         [\"Охотники на звёзды\", \"Фэнтези с космическим оттенком.\"],
  480.         [\"Кукольный театр\", \"Жуткие представления и живые куклы.\"],
  481.         [\"Вкус грозы\", \"Город, где гроза меняет судьбы.\"],
  482.         [\"Серп луны\", \"Культ, приносящий лунные жертвы.\"]
  483.       ];
  484.       document.write(commGames.map(g =>
  485.         `<div class=\"community-card\">
  486.            <h4>\${g[0]}</h4>
  487.            <p>\${g[1]}</p>
  488.            <div class=\"badges\">
  489.              <div class=\"badge\"><i class=\"fa-solid fa-user-group\"></i> Сообщество</div>
  490.              <div class=\"badge\"><i class=\"fa-solid fa-star\"></i> Популярное</div>
  491.            </div>
  492.          </div>`
  493.       ).join(\"\"));
  494.       </script>
  495.     </div>
  496.     <div class=\"arrow arrow-right\" onclick=\"scrollCommunity(1)\"><i class=\"fa-solid fa-chevron-right\"></i></div>
  497.   </div>
  498. </section>
  499. <!-- Остальные миры -->
  500. {% if worlds|length > 3 %}
  501. <section class=\"section\">
  502.   <h2><i class=\"fa-solid fa-dice\"></i> Ещё подборки</h2>
  503.   <div class=\"cards\">
  504.     {% for world in worlds|slice(3) %}
  505.     <div class=\"card-half\" style=\"background-image:url('{{ world.background }}');\" onclick=\"window.location.href='{{ path('public_world_view', {'id': world.id}) }}'\">
  506.       <div class=\"card-gradient\"></div>
  507.       <div class=\"card-info\">
  508.         <h3>{{ world.name }}</h3>
  509.         <p>{{ world.description }}</p>
  510.         <div class=\"badges\">
  511.           {% for badge in world.publicBadges %}
  512.             <div class=\"badge\"><i class=\"fa-solid fa-tag\"></i> {{ badge }}</div>
  513.           {% endfor %}
  514.         </div>
  515.       </div>
  516.     </div>
  517.     {% endfor %}
  518.   </div>
  519. </section>
  520. {% endif %}
  521. <script>
  522. function scrollCommunity(dir) {
  523.   const list = document.getElementById(\"communityList\");
  524.   list.scrollBy({ left: dir * (list.clientWidth * 0.7), behavior: 'smooth' });
  525. }
  526. </script>
  527. <script>
  528.   document.addEventListener('DOMContentLoaded', function() {
  529.     const logoElement = document.getElementById('logo');
  530.     const tooltipElement = document.getElementById('tooltip');
  531.     const tooltipMessage = \"OpenRPG - это сервис для совместного прохождения ролевых игр, где истории написаны авторами, а ИИ служит их рассказчиком\";
  532.     let tooltipTimeoutId;
  533.     
  534.     if (logoElement && tooltipElement) {
  535.       logoElement.addEventListener('mouseenter', () => {
  536.         tooltipTimeoutId = setTimeout(() => {
  537.           tooltipElement.textContent = tooltipMessage;
  538.           tooltipElement.style.display = 'block';
  539.           tooltipElement.style.opacity = '1';
  540.           
  541.           // Позиционирование подсказки строго под заголовком
  542.           const logoRect = logoElement.getBoundingClientRect();
  543.           tooltipElement.style.left = logoRect.left + 'px';
  544.           tooltipElement.style.top = (logoRect.bottom + 5) + 'px';
  545.         }, 500); // Задержка 500 мс
  546.       });
  547.       
  548.       logoElement.addEventListener('mouseleave', () => {
  549.         clearTimeout(tooltipTimeoutId);
  550.         tooltipElement.style.opacity = '0';
  551.         setTimeout(() => {
  552.           tooltipElement.style.display = 'none';
  553.         }, 300); // Длительность fade-out
  554.       });
  555.     }
  556.   });
  557. </script>
  558. {% endblock %}
  559. ""public/game_list.html.twig""/var/www/openrpg/admin/templates/public/game_list.html.twig");
  560.     }
  561. }